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.

248 lines 12.4 kB
var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = (this && this.__spread) || function () { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; }; var __values = (this && this.__values) || function(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); }; import { GroupItemHandler, ImageItemHandler, PlaceholderItemHandler } from "../ItemHandlers"; import _ from "underscore"; var ViolationContainersHandler = /** @class */ (function () { function ViolationContainersHandler(canvasElementHandler, canvas, viewer) { var _this = this; this._scheduledOptions = null; this._updateButtonGroupsThrottled = _.throttle(function () { return _this._updateButtonGroups(); }, 200); this._canvasElementHandler = canvasElementHandler; this._canvas = canvas; this._viewer = viewer; this._violationWarningButtonsEnabled = false; this._qualityChangeContainersEnabled = true; } Object.defineProperty(ViolationContainersHandler.prototype, "violationWarningButtonsEnabled", { get: function () { return this._violationWarningButtonsEnabled; }, set: function (v) { if (this._violationWarningButtonsEnabled === v) return; this._violationWarningButtonsEnabled = v; this._onViolationButtonsConfigChanged(); }, enumerable: true, configurable: true }); Object.defineProperty(ViolationContainersHandler.prototype, "qualityChangeContainersEnabled", { get: function () { return this._qualityChangeContainersEnabled; }, set: function (v) { if (this._qualityChangeContainersEnabled === v) return; this._qualityChangeContainersEnabled = v; this._onViolationButtonsConfigChanged(); }, enumerable: true, configurable: true }); ViolationContainersHandler.prototype.updateButtonGroups = function (options) { this._setUpdateButtonGroupsOptions(options); if (options.instant) { this._updateButtonGroups(); } else { this._updateButtonGroupsThrottled(); } }; ViolationContainersHandler.prototype.addViolationContainer = function (itemHandler) { this._addViolationContainer(itemHandler); }; ViolationContainersHandler.prototype.removeViolationContainer = function (handler) { this._removeViolationContainer(handler); }; ViolationContainersHandler.prototype.addPlaceholderButtonGroup = function (placeholder) { this._canvasElementHandler.addPlaceholderButtonGroup(placeholder, this._viewer); }; ViolationContainersHandler.prototype.removePlaceholderButtonGroup = function (placeholder) { this._canvasElementHandler.removePlaceholderButtonGroup(placeholder); }; ViolationContainersHandler.prototype.violationWarningButtonHitTestObject = function (pt) { if (this._viewer == null || !this.violationWarningButtonsEnabled || this._canvas.previewMode) return null; var itemHandlers = this._canvas.getAllItemHandlers({ onlyVisible: true }) .reduce(function (items, item) { return item instanceof GroupItemHandler ? __spread(items, item.itemHandlers) : __spread(items, [item]); }, []); for (var i = 0; i < itemHandlers.length; i++) { var violationWarningButton = itemHandlers[i].getViolationWarningButton(); if (getComputedStyle(violationWarningButton).pointerEvents === "none") continue; if (violationWarningButton != null) { var divContentRect = this._canvas.getButtonGroupRectInGripsDiv(violationWarningButton); if (divContentRect.contains(pt)) return itemHandlers[i]; } } return null; }; ViolationContainersHandler.prototype._onViolationButtonsConfigChanged = function () { this._removeViolationContainers(); var enabled = this.qualityChangeContainersEnabled || this.violationWarningButtonsEnabled; if (enabled) { this._addViolationContainers(); } }; ViolationContainersHandler.prototype._setUpdateButtonGroupsOptions = function (options) { if (this._scheduledOptions == null) this._scheduledOptions = { onlyVisible: true, placeholderButtons: false, placeholderButtonsPosition: false, placeholderHandler: {}, violationContainers: false, violationContainersPosition: false, violationContainerHandler: {} }; var cur = this._scheduledOptions; if (options.onlyVisible != null) cur.onlyVisible = options.onlyVisible && cur.onlyVisible; if (options.placeholderButtons != null) cur.placeholderButtons = options.placeholderButtons || cur.placeholderButtons; if (options.placeholderButtonsPosition != null) cur.placeholderButtonsPosition = options.placeholderButtonsPosition || cur.placeholderButtonsPosition; if (options.violationContainers != null) cur.violationContainers = options.violationContainers || cur.violationContainers; if (options.violationContainersPosition != null) cur.violationContainersPosition = options.violationContainersPosition || cur.violationContainersPosition; if (options.placeholderHandler) cur.placeholderHandler[options.placeholderHandler.uniqueId] = { handler: options.placeholderHandler, updatePosition: options.placeholderHandlerPosition }; if (options.violationContainerHandler) { cur.violationContainerHandler[options.violationContainerHandler.uniqueId] = { handler: options.violationContainerHandler, updatePosition: options.violationContainerHandlerPosition }; } }; ViolationContainersHandler.prototype._updateButtonGroups = function () { var options = this._scheduledOptions; if (options == null) return; this._scheduledOptions = null; var itemHandlers = this._canvas.getAllItemHandlers({ onlyVisible: options.onlyVisible, flatGroupItems: true, }); for (var i = 0; i < itemHandlers.length; i++) { var handler = itemHandlers[i]; var updateViolation = options.violationContainers; var updateViolationPosition = options.violationContainersPosition; if (options.violationContainerHandler[handler.uniqueId]) { updateViolation = true; updateViolationPosition = updateViolationPosition || options.violationContainerHandler[handler.uniqueId].updatePosition; } if (updateViolation && this._violationWarningButtonsEnabled || this._qualityChangeContainersEnabled) { this._updateViolationContainer(handler, updateViolationPosition); } if (handler instanceof PlaceholderItemHandler) { var updatePlaceholderButtons = options.placeholderButtons; var updatePlaceholderButtonsPosition = options.placeholderButtonsPosition; if (options.placeholderHandler[handler.uniqueId]) { updatePlaceholderButtons = true; updatePlaceholderButtonsPosition = updatePlaceholderButtonsPosition || options.placeholderHandler[handler.uniqueId].updatePosition; } if (updatePlaceholderButtons) { this._updatePlaceholderButtonGroup(handler); } else if (updatePlaceholderButtonsPosition) { this._updatePlaceholderButtonGroupPosition(handler); } } } }; ViolationContainersHandler.prototype._updateViolationContainer = function (itemHandler, updatePosition /*: boolean*/, source) { if (updatePosition === void 0) { updatePosition /*: boolean*/ = false; } if (source === void 0) { source = null; } this._canvasElementHandler.updateViolationContainer(itemHandler, updatePosition, this._viewer); }; ViolationContainersHandler.prototype._updateViolationContainerPosition = function (itemHandler) { this._canvasElementHandler.updateViolationContainerPosition(itemHandler, this._viewer); }; ViolationContainersHandler.prototype._updatePlaceholderButtonGroup = function (placeholder) { this._canvasElementHandler.updatePlaceholderButtonGroup(placeholder, this._viewer); }; ViolationContainersHandler.prototype._updatePlaceholderButtonGroupPosition = function (placeholder) { this._canvasElementHandler.updatePlaceholderButtonGroupPosition(placeholder, this._viewer); }; ViolationContainersHandler.prototype._removeViolationContainers = function () { var e_1, _a; if (this._viewer == null) return; var handlers = this._canvas.getAllItemHandlers(); try { for (var handlers_1 = __values(handlers), handlers_1_1 = handlers_1.next(); !handlers_1_1.done; handlers_1_1 = handlers_1.next()) { var handler = handlers_1_1.value; this._removeViolationContainer(handler); var violationWarningButton = handler.getViolationWarningButton(); if (violationWarningButton != null) violationWarningButton.remove(); if (!(handler instanceof ImageItemHandler) && !(handler instanceof PlaceholderItemHandler)) continue; var qualityChangeContainer = void 0; if (handler instanceof ImageItemHandler) qualityChangeContainer = handler.qualityChangeContainer; else qualityChangeContainer = handler.qualityChangeContainer; if (qualityChangeContainer != null) qualityChangeContainer.remove(); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (handlers_1_1 && !handlers_1_1.done && (_a = handlers_1.return)) _a.call(handlers_1); } finally { if (e_1) throw e_1.error; } } }; ViolationContainersHandler.prototype._addViolationContainers = function () { if (this._viewer == null) return; var itemHandlers = this._canvas.getAllItemHandlers(); for (var i = 0; i < itemHandlers.length; i++) { this._addViolationContainer(itemHandlers[i]); } }; ViolationContainersHandler.prototype._addViolationContainer = function (itemHandler) { this._canvasElementHandler.addViolationContainer(itemHandler, this._viewer); }; ViolationContainersHandler.prototype._removeViolationContainer = function (handler) { this._canvasElementHandler.removeViolationContainer(handler); }; return ViolationContainersHandler; }()); export { ViolationContainersHandler }; //# sourceMappingURL=ViolationContainersHandler.js.map