@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
JavaScript
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