UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

2 lines 2.8 kB
import{_defineProperty as e}from"../_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.min.mjs";import{removeFromArray as t}from"./util/internals/removeFromArray.min.mjs";import{Point as n}from"./Point.min.mjs";const r=e=>!!e&&Array.isArray(e._objects);function i(r){class i extends r{constructor(...t){super(...t),e(this,`_objects`,[])}_onObjectAdded(e){}_onObjectRemoved(e){}_onStackOrderChanged(e){}add(...e){let t=this._objects.push(...e);return e.forEach(e=>this._onObjectAdded(e)),t}insertAt(e,...t){return this._objects.splice(e,0,...t),t.forEach(e=>this._onObjectAdded(e)),this._objects.length}remove(...e){let t=this._objects,n=[];return e.forEach(e=>{let r=t.indexOf(e);r!==-1&&(t.splice(r,1),n.push(e),this._onObjectRemoved(e))}),n}forEachObject(e){this.getObjects().forEach((t,n,r)=>e(t,n,r))}getObjects(...e){return e.length===0?[...this._objects]:this._objects.filter(t=>t.isType(...e))}item(e){return this._objects[e]}isEmpty(){return this._objects.length===0}size(){return this._objects.length}contains(e,t){return!!this._objects.includes(e)||!!t&&this._objects.some(t=>t instanceof i&&t.contains(e,!0))}complexity(){return this._objects.reduce((e,t)=>e+=t.complexity?t.complexity():0,0)}sendObjectToBack(e){return!(!e||e===this._objects[0])&&(t(this._objects,e),this._objects.unshift(e),this._onStackOrderChanged(e),!0)}bringObjectToFront(e){return!(!e||e===this._objects[this._objects.length-1])&&(t(this._objects,e),this._objects.push(e),this._onStackOrderChanged(e),!0)}sendObjectBackwards(e,n){if(!e)return!1;let r=this._objects.indexOf(e);if(r!==0){let i=this.findNewLowerIndex(e,r,n);return t(this._objects,e),this._objects.splice(i,0,e),this._onStackOrderChanged(e),!0}return!1}bringObjectForward(e,n){if(!e)return!1;let r=this._objects.indexOf(e);if(r!==this._objects.length-1){let i=this.findNewUpperIndex(e,r,n);return t(this._objects,e),this._objects.splice(i,0,e),this._onStackOrderChanged(e),!0}return!1}moveObjectTo(e,n){return e!==this._objects[n]&&(t(this._objects,e),this._objects.splice(n,0,e),this._onStackOrderChanged(e),!0)}findNewLowerIndex(e,t,n){let r;if(n){r=t;for(let n=t-1;n>=0;--n)if(e.isOverlapping(this._objects[n])){r=n;break}}else r=t-1;return r}findNewUpperIndex(e,t,n){let r;if(n){r=t;for(let n=t+1;n<this._objects.length;++n)if(e.isOverlapping(this._objects[n])){r=n;break}}else r=t+1;return r}collectObjects({left:e,top:t,width:r,height:i},{includeIntersecting:a=!0}={}){let o=[],s=new n(e,t),c=s.add(new n(r,i));for(let e=this._objects.length-1;e>=0;e--){let t=this._objects[e];t.selectable&&t.visible&&(a&&t.intersectsWithRect(s,c)||t.isContainedWithinRect(s,c)||a&&t.containsPoint(s)||a&&t.containsPoint(c))&&o.push(t)}return o}}return i}export{i as createCollectionMixin,r as isCollection}; //# sourceMappingURL=Collection.min.mjs.map