fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
3 lines (2 loc) • 2.45 kB
JavaScript
import{defineProperty as e,objectSpread2 as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{classRegistry as r}from"../ClassRegistry.min.mjs";import{Group as o}from"./Group.min.mjs";import{LAYOUT_TYPE_REMOVED as n,LAYOUT_TYPE_ADDED as s}from"../LayoutManager/constants.min.mjs";import{log as i}from"../util/internals/console.min.mjs";import{ActiveSelectionLayoutManager as a}from"../LayoutManager/ActiveSelectionLayoutManager.min.mjs";class c extends o{static getDefaults(){return t(t({},super.getDefaults()),c.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,c.ownDefaults),this.setOptions(t);const{left:r,top:o,layoutManager:n}=t;this.groupInit(e,{left:r,top:o,layoutManager:null!=n?n:new a})}_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)))?(i("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===n?r.forEach((e=>{e._onAfterObjectsChange(s,t)})):r.forEach((e=>{e._set("dirty",!0)}))}onDeselect(){return this.removeAll(),!1}toString(){return"#<ActiveSelection: (".concat(this.complexity(),")>")}shouldCache(){return!1}isOnACache(){return!1}_renderControls(e,r,o){e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;const n=t(t({hasControls:!1},o),{},{forActiveSelection:!0});for(let t=0;t<this._objects.length;t++)this._objects[t]._renderControls(e,n);super._renderControls(e,r),e.restore()}}e(c,"type","ActiveSelection"),e(c,"ownDefaults",{multiSelectionStacking:"canvas-stacking"}),r.setClass(c),r.setClass(c,"activeSelection");export{c as ActiveSelection};
//# sourceMappingURL=ActiveSelection.min.mjs.map