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.

94 lines 6.12 kB
import { LineItemHandler, PlaceholderItemHandler, NewBaseTextItemHandler } from "../ItemHandlers"; import { ResizeGripsPermissions } from "@aurigma/design-atoms-model/Product/Items"; import { ResizeHelper } from "./Selection/SelectionHandler"; import { CoordinateSystem } from "../Viewer/CoordinateSystem"; var SelectionHitTestManager = /** @class */ (function () { function SelectionHitTestManager(_selectionHandler, _hitTestManager) { this._selectionHandler = _selectionHandler; this._hitTestManager = _hitTestManager; } SelectionHitTestManager.prototype.hitTest = function (point) { var _a; if (!this._selectionHandler.enabled) return {}; var rectangle = this._selectionHandler.visibleRectangle; var itemHandlersByHitTest = this._hitTestManager.getItemHandlersByHitTest(point, CoordinateSystem.workspace); if (rectangle == null) { var selection = itemHandlersByHitTest.length === 0; return { selection: selection }; } var tolerance; var currentItemHandler; var itemHandlers = this._selectionHandler.selectedItemHandlers; if (itemHandlers.length > 1) { tolerance = itemHandlers.toArray().reduce(function (previousSelectionTolerance, currentItem) { return Math.min(previousSelectionTolerance, currentItem.getSelectionTolerance()); }, itemHandlers.getItem(0).getSelectionTolerance()); } else { currentItemHandler = itemHandlers.getItem(0); tolerance = (_a = currentItemHandler === null || currentItemHandler === void 0 ? void 0 : currentItemHandler.getSelectionTolerance()) !== null && _a !== void 0 ? _a : 0; } var onlyWidthResizeEnabled = itemHandlers.length === 1 && this._selectionHandler.currentItemHandler instanceof LineItemHandler; var result = this._hitTestManager.hitTestSelection(rectangle, point, onlyWidthResizeEnabled, tolerance); var isPlaceholderWithCoverModeEditing = false; if (currentItemHandler instanceof PlaceholderItemHandler) { var currentPlaceholder = currentItemHandler; if (currentItemHandler.editing && itemHandlersByHitTest[0] == currentItemHandler) result.selection = false; if (currentPlaceholder.isContentUpdating() && (result.body && !result.resize)) { result.drag = true; return result; } isPlaceholderWithCoverModeEditing = currentItemHandler.editing && currentItemHandler.isCoverMode(); } if (currentItemHandler instanceof NewBaseTextItemHandler && currentItemHandler.isInEdit) { result.resize = false; result.rotate = false; result.body = false; } var permissions = this._selectionHandler.manipulationPermissions; result.rotate = result.rotate && permissions.allowRotate && !isPlaceholderWithCoverModeEditing && this._selectionHandler.allowManipulation; if (result.resize) { var index = result.resizeIndex; var edgeArbitraryResize = ResizeHelper.isEdgeResizeGrip(index) && this._getEdgeResize(permissions, currentItemHandler); var cornerArbitraryResize = ResizeHelper.isCornerResizeGrip(index) && this._getCornerResize(permissions, currentItemHandler, false, ResizeGripsPermissions.arbitrary); var cornerArbitraryResizeInvertedShift = ResizeHelper.isCornerResizeGrip(index) && this._getCornerResize(permissions, currentItemHandler, true, ResizeGripsPermissions.arbitrary); var cornerProportionalResize = ResizeHelper.isCornerResizeGrip(index) && this._getCornerResize(permissions, currentItemHandler, false, ResizeGripsPermissions.proportional); var cornerProportionalResizeInvertedShift = ResizeHelper.isCornerResizeGrip(index) && this._getCornerResize(permissions, currentItemHandler, true, ResizeGripsPermissions.proportional); result.arbitraryResize = edgeArbitraryResize || cornerArbitraryResize; result.cornerArbitraryResize = cornerArbitraryResize || cornerArbitraryResizeInvertedShift; result.cornerProportionalResize = cornerProportionalResize || cornerProportionalResizeInvertedShift; result.proportionalResize = cornerProportionalResize && !onlyWidthResizeEnabled; result.resize = result.arbitraryResize || result.proportionalResize; } result.dragX = result.body && permissions.allowMoveHorizontal && this._selectionHandler.allowManipulation; result.dragY = result.body && permissions.allowMoveVertical && this._selectionHandler.allowManipulation; result.drag = result.dragX || result.dragY; return result; }; SelectionHitTestManager.prototype._getEdgeResize = function (permissions, currentItemHandler) { if (currentItemHandler != null && currentItemHandler.getTypeName() === "PlainTextItemHandler" || !this._selectionHandler.allowManipulation) return false; var resizeGrips = permissions.resizeGrips; return resizeGrips.edge; }; SelectionHitTestManager.prototype._getCornerResize = function (permissions, currentItemHandler, shift, resizeType) { if (resizeType === ResizeGripsPermissions.arbitrary && (currentItemHandler != null && currentItemHandler.getTypeName() === "PlainTextItemHandler") || !this._selectionHandler.allowManipulation) return false; var resizeGrips = permissions.resizeGrips; if (resizeGrips.corner == null || resizeGrips.corner.length === 0) return false; var result = shift && resizeGrips.corner.length > 1 ? resizeGrips.corner[1] : resizeGrips.corner[0]; return result === resizeType; }; return SelectionHitTestManager; }()); export { SelectionHitTestManager }; //# sourceMappingURL=SelectionHitTestManager.js.map