---
title: "ProductHandler | Customer's Canvas On-Premises"
canonical: "https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ProductHandler/"
---

# ProductHandler

> [`ProductHandler`](#producthandler)

## Classes

### ProductHandler

#### Constructors

##### Constructor

```ts
new ProductHandler(viewer, eventManager): ProductHandler;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `viewer` | [`Viewer`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/Viewer-1.md#viewer) |
| `eventManager` | [`EventManager`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/EventManager.md#eventmanager) |

###### Returns

#### Accessors

##### contentAngle

###### Get Signature

```ts
get contentAngle(): number;
```

###### Returns

`number`

##### currentSurface

###### Get Signature

```ts
get currentSurface(): Surface;
```

###### Returns

`Surface`

###### Set Signature

```ts
set currentSurface(surface): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `surface` | `Surface` |

###### Returns

`void`

##### interactiveContainers

###### Get Signature

```ts
get interactiveContainers(): Container[];
```

Gets or sets interactive containers of the Product.

###### Remarks

Interactive containers allows to define product containers which items can be selected by user.
If this property is null or empty then items from any containers can be selected by user.

###### Returns

`Container`[]

###### Set Signature

```ts
set interactiveContainers(value): void;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `value` | `Container`[] |

###### Returns

`void`

##### product

###### Get Signature

```ts
get product(): any;
```

###### Returns

`any`

##### regionForCurrentContainer

###### Get Signature

```ts
get regionForCurrentContainer(): any;
```

###### Returns

`any`

##### selectedItems

###### Get Signature

```ts
get selectedItems(): Item[];
```

###### Returns

`Item`[]

##### suppressOutOfRegionManipulation

###### Get Signature

```ts
get suppressOutOfRegionManipulation(): boolean;
```

###### Returns

`boolean`

##### userEditContainer

###### Get Signature

```ts
get userEditContainer(): Container;
```

###### Returns

`Container`

##### userEditPrintArea

###### Get Signature

```ts
get userEditPrintArea(): any;
```

###### Returns

`any`

#### Methods

##### applyLayout()

```ts
applyLayout(product, surfaceFilterFunc?): Promise<void>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `product` | `Product` |
| `surfaceFilterFunc?` | (`index`, `surface`) => `boolean` |

###### Returns

[`Promise`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/finally.md#promise)\<`void`\>

##### beginMultiCall()

```ts
beginMultiCall(): void;
```

###### Returns

`void`

##### checkSelectionByHitTest()

```ts
checkSelectionByHitTest(x, y): boolean;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `x` | `number` |
| `y` | `number` |

###### Returns

`boolean`

##### endMultiCall()

```ts
endMultiCall(): void;
```

###### Returns

`void`

##### exitEditMode()

```ts
exitEditMode(): void;
```

###### Returns

`void`

##### getHandler()

```ts
getHandler<T>(item): T;
```

###### Type Parameters

| Type Parameter |
| ------ |
| `T` *extends* [`ItemHandler`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ItemHandler.md#itemhandler) |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `item` | `Item` |

###### Returns

`T`

##### getPrintAreaBounds()

```ts
getPrintAreaBounds(container?, printArea?): any;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `container?` | `Container` |
| `printArea?` | `PrintArea` |

###### Returns

`any`

##### getPrintAreaVisualSize()

```ts
getPrintAreaVisualSize(targetContainer?, printArea?): ISize;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `targetContainer?` | `Container` |
| `printArea?` | `PrintArea` |

###### Returns

[ISize](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms-model/ISize.md)

##### getProductColors()

```ts
getProductColors(initialProduct): Color[];
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `initialProduct` | `Product` |

###### Returns

`Color`[]

##### getVisualSize()

```ts
getVisualSize(size): any;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `size` | [ISize](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms-model/ISize.md) |

###### Returns

`any`

##### isInteractive()

```ts
isInteractive(object): boolean;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `object` | `any` |

###### Returns

`boolean`

##### isItemSelected()

```ts
isItemSelected(item): any;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `item` | `Item` |

###### Returns

`any`

##### isMasked()

```ts
isMasked(container): boolean;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `container` | `Container` |

###### Returns

`boolean`

##### queryItems()

```ts
queryItems(selectors, queryOptions?): Item[];
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `selectors` | `string` |
| `queryOptions?` | [IQueryOptions](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms-interfaces/IQueryOptions.md) |

###### Returns

`Item`[]

##### redraw()

```ts
redraw(): void;
```

###### Returns

`void`

##### updateMaskedContainers()

```ts
updateMaskedContainers(): void;
```

###### Returns

`void`

##### updateSelection()

```ts
updateSelection(): void;
```

###### Returns

`void`

##### waitUpdate()

```ts
waitUpdate(): Promise<void[]>;
```

###### Returns

[`Promise`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/finally.md#promise)\<`void`[]\>
