fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
3 lines (2 loc) • 2.4 kB
JavaScript
import{defineProperty as e}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{classRegistry as t}from"../ClassRegistry.min.mjs";import{Group as r}from"./Group.min.mjs";import{LAYOUT_TYPE_REMOVED as o,LAYOUT_TYPE_ADDED as n}from"../LayoutManager/constants.min.mjs";import{log as s}from"../util/internals/console.min.mjs";import{ActiveSelectionLayoutManager as i}from"../LayoutManager/ActiveSelectionLayoutManager.min.mjs";class a extends r{static getDefaults(){return{...super.getDefaults(),...a.ownDefaults}}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),Object.assign(this,a.ownDefaults),this.setOptions(t);const{left:r,top:o,layoutManager:n}=t;this.groupInit(e,{left:r,top:o,layoutManager:null!=n?n:new i})}_shouldSetNestedCoords(){return!0}__objectSelectionMonitor(){}multiSelectAdd(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];"selection-order"===this.multiSelectionStacking?this.add(...t):t.forEach(e=>{const t=this._objects.findIndex(t=>t.isInFrontOf(e)),r=-1===t?this.size():t;this.insertAt(r,e)})}canEnterGroup(e){return this.getObjects().some(t=>t.isDescendantOf(e)||e.isDescendantOf(t))?(s("error","ActiveSelection: circular object trees are not supported, this call has no effect"),!1):super.canEnterGroup(e)}enterGroup(e,t){e.parent&&e.parent===e.group?e.parent._exitGroup(e):e.group&&e.parent!==e.group&&e.group.remove(e),this._enterGroup(e,t)}exitGroup(e,t){this._exitGroup(e,t),e.parent&&e.parent._enterGroup(e,!0)}_onAfterObjectsChange(e,t){super._onAfterObjectsChange(e,t);const r=new Set;t.forEach(e=>{const{parent:t}=e;t&&r.add(t)}),e===o?r.forEach(e=>{e._onAfterObjectsChange(n,t)}):r.forEach(e=>{e._set("dirty",!0)})}onDeselect(){return this.removeAll(),!1}toString(){return`#<ActiveSelection: (${this.complexity()})>`}shouldCache(){return!1}isOnACache(){return!1}_renderControls(e,t,r){e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;const o={hasControls:!1,...r,forActiveSelection:!0};for(let t=0;t<this._objects.length;t++)this._objects[t]._renderControls(e,o);super._renderControls(e,t),e.restore()}}e(a,"type","ActiveSelection"),e(a,"ownDefaults",{multiSelectionStacking:"canvas-stacking"}),t.setClass(a),t.setClass(a,"activeSelection");export{a as ActiveSelection};
//# sourceMappingURL=ActiveSelection.min.mjs.map