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

# BaseProductCommand

> - [`ModelUpdateCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ModelUpdateCommand.md#abstract-modelupdatecommand)\<`TArgs`, `TResult`\>

## Classes

### `abstract` BaseProductCommand

#### Extends

#### Extended by

- [`AddSurfacesCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/AddSurfacesCommand.md#addsurfacescommand)
- [`ApplyProductThemeCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ApplyProductThemeCommand.md#applyproductthemecommand)
- [`ChangeBackgroundCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ChangeBackgroundCommand.md#changebackgroundcommand)
- [`FillPlaceholdersCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/FillPlaceholdersCommand.md#fillplaceholderscommand)
- [`RemoveSurfaceCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/RemoveSurfaceCommand.md#removesurfacecommand)
- [`ReplaceInterpolationPlaceholdersCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ReplaceInterpolationPlaceholders.md#replaceinterpolationplaceholderscommand)
- [`ResizeCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ResizeCommand.md#resizecommand)
- [`RotateProductCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/RotateProductCommand.md#rotateproductcommand)
- [`UpdateSurfacesCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/UpdateSurfacesCommand.md#updatesurfacescommand)

#### Type Parameters

| Type Parameter |
| ------ |
| `TArgs` |
| `TResult` |

#### Constructors

##### Constructor

```ts
new BaseProductCommand<TArgs, TResult>(
   product, 
   historyArgs, 
args?): BaseProductCommand<TArgs, TResult>;
```

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `product` | `Product` |
| `historyArgs` | [`IHistoryArgs`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ModelUpdateCommand.md#ihistoryargs) |
| `args?` | `TArgs` |

###### Returns

[`BaseProductCommand`](#abstract-baseproductcommand)\<`TArgs`, `TResult`\>

###### Overrides

[`ModelUpdateCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ModelUpdateCommand.md#abstract-modelupdatecommand).[`constructor`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ModelUpdateCommand.md#constructor)

#### Methods

##### execute()

```ts
execute(): Promise<TResult>;
```

###### Returns

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

###### Inherited from

[`ModelUpdateCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ModelUpdateCommand.md#abstract-modelupdatecommand).[`execute`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ModelUpdateCommand.md#execute)

##### redo()

```ts
redo(): Promise<void>;
```

###### Returns

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

###### Inherited from

[`ModelUpdateCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ModelUpdateCommand.md#abstract-modelupdatecommand).[`redo`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ModelUpdateCommand.md#redo)

##### undo()

```ts
undo(): Promise<void>;
```

###### Returns

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

###### Inherited from

[`ModelUpdateCommand`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ModelUpdateCommand.md#abstract-modelupdatecommand).[`undo`](https://customerscanvas.com/docs/on-premises/design-atoms-js/reference/design-atoms/ModelUpdateCommand.md#undo)
