UNPKG

@aurigma/design-atoms

Version:

Design Atoms is a part of Customer's Canvas SDK which allows for manipulating individual design elements through your code.

54 lines 2.42 kB
import { BaseCommand } from "../BaseCommand"; import { BaseTextItemHandler, NewBaseTextItemHandler } from "../../ItemHandlers"; import { MultiSelectMode } from "@aurigma/design-atoms-interfaces"; export { MultiSelectMode } from "@aurigma/design-atoms-interfaces"; export class SelectItemsCommand extends BaseCommand { constructor(_productHandler, args, _canvas = null) { super(args); this._productHandler = _productHandler; this._canvas = _canvas; } async execute() { if (this._canvas == null) return; const itemHandlers = []; const items = this._getTargetItems(this._args.items, this._args.query, this._args.queryOptions); const multiselection = this._args.multiSelectMode != null ? this._args.multiSelectMode : MultiSelectMode.None; items.forEach(item => { const itemHandler = this._productHandler.getHandler(item); let canSelectInvisible = false; if ((itemHandler instanceof BaseTextItemHandler || itemHandler instanceof NewBaseTextItemHandler) && itemHandler.isEmpty()) { canSelectInvisible = true; } if (itemHandler == null || itemHandler.isLocked() || (!itemHandler.isVisible() && !canSelectInvisible)) return; if (this._canvas.isItemHandlerSelected(itemHandler) && multiselection === MultiSelectMode.Invert) { this._canvas.removeSelectedItemHandler(itemHandler); } else if (multiselection !== MultiSelectMode.None) { if (!this._canvas.getSelectedItemHandlers().contains(itemHandler)) this._canvas.addSelectedItemHandler(itemHandler); } else { itemHandlers.push(itemHandler); } this.lastSelectedItem = item; }); if (multiselection === MultiSelectMode.None) this._canvas.setSelectedItemHandlers(itemHandlers); this._canvas.redraw(); } _getTargetItems(items, query, queryOptions) { if (items != null) { return items; } else if (query != null) { return this._productHandler.queryItems(query, queryOptions); } else { return []; } } } //# sourceMappingURL=SelectItemsCommand.js.map