/**
 * Skipped minification because the original files appears to be already minified.
 * Original file: /npm/@arch-inc/fabricjs-layer@0.1.0/dist/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("sortedindex")):"function"==typeof define&&define.amd?define(["exports","sortedindex"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).fabricLayer={},e.sortedindex)}(this,(function(e,t){"use strict";
/*!
   * Copyright (c) 2020 Arch Inc. (Jun Kato)
   *
   * fabricjs-layer, lightweight layer management for Fabric.js
   * @license MIT
   */var r=function(){function e(e){this.canvas=e,this.type="Layer",this.createdTime=Date.now(),this.startIndex=this.endIndex=e._objects.length,this._listeners=[]}return e.prototype.addListener=function(e){this._listeners.indexOf(e)>=0||this._listeners.push(e)},e.prototype.removeListener=function(e){var t=this._listeners.indexOf(e);return!(t<0)&&(this._listeners.splice(t,1),!0)},e.prototype.fire=function(e){this._listeners.forEach((function(t){switch(e.type){case"object:add":t.onObjectAdd&&t.onObjectAdd(e);break;case"object:remove":t.onObjectRemove&&t.onObjectRemove(e)}}))},e}();function n(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),s=0;for(t=0;t<r;t++)for(var a=arguments[t],i=0,o=a.length;i<o;i++,s++)n[s]=a[i];return n}function s(e,t){var r=t.length-1;return t[r]===e?r:t.indexOf(e)}var a=function(){function e(e){this.canvas=e,this._activeLayer=new r(e),this._activeLayerIndex=0,this._layers=[this._activeLayer],this._listeners=[],this.onObjectAdd=this.onObjectAdd.bind(this),this.onObjectRemove=this.onObjectRemove.bind(this),e.on("object:added",this.onObjectAdd),e.on("object:removed",this.onObjectRemove)}return Object.defineProperty(e.prototype,"activeLayer",{get:function(){return this._activeLayer},set:function(e){var t=s(e,this._layers);if(t<0)throw new Error("Layer not found or managed");this.activeLayerIndex=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"activeLayerIndex",{get:function(){return this._activeLayerIndex},set:function(e){if(e<0||e>=this._layers.length)throw new Error("Layer index out of bounds");this._activeLayerIndex!==e&&(this._activeLayerIndex=e,this._activeLayer=this._layers[e],this.fire({type:"layer:activate",layer:this._layers[e]}))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"layers",{get:function(){return this._layers.slice()},set:function(e){throw new Error("Layers property cannot be set directly.")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"layersLength",{get:function(){return this._layers.length},enumerable:!0,configurable:!0}),e.prototype.findLayer=function(e){var r=this.canvas._objects.indexOf(e);if(r<0)throw new Error("Object not found");var n=t.sortedIndex(this._layers,{endIndex:r},(function(e){return e.endIndex}));return this._layers[n]},e.prototype.getLayer=function(e){if(e<0||e>this._layers.length)throw new Error("Layer index out of bounds");return this._layers[e]},e.prototype.getLayerIndex=function(e){return this._layers.indexOf(e)},e.prototype.addLayer=function(e){if("number"==typeof e){if(e<0||e>this._layers.length)throw new Error("Layer index out of bounds")}else e=this._layers.length;var t=new r(this.canvas);return e>0&&(e>=this._layers.length?t.startIndex=this._layers[this._layers.length-1].endIndex:t.startIndex=this._layers[e].startIndex),t.endIndex=t.startIndex,this._layers.splice(e,0,t),this.fire({type:"layer:add",layer:t}),t},e.prototype.removeLayer=function(e){var t=this.getLayerIndex(e);return!(t<0)&&(this.removeLayerByIndex(t),!0)},e.prototype.removeLayerByIndex=function(e){var t=this.getLayer(e);this._layers.splice(e,1);var r=t.endIndex-t.startIndex;this.canvas._objects.splice(t.startIndex,r),this.canvas.renderOnAddRemove&&this.canvas.requestRenderAll();for(var n=e;n<this._layers.length;n++)this._layers[n].startIndex-=r,this._layers[n].endIndex-=r;e>0?this.activeLayerIndex=e-1:(this._layers.length<=0&&this.addLayer(0),this.activeLayerIndex=0),this.fire({type:"layer:remove",layer:t})},e.prototype.moveLayer=function(e,t){var r,s,a=this.getLayer(e);this._layers.splice(e,1);var i,o=a.endIndex-a.startIndex,d=this.canvas._objects.splice(a.startIndex,o);if(t<e){i=this.getLayer(t).startIndex,(r=this.canvas._objects).splice.apply(r,n([i,0],d));for(var c=t;c<e;c++)this._layers[c].startIndex+=o,this._layers[c].endIndex+=o}else{i=this.getLayer(t-1).endIndex-o,(s=this.canvas._objects).splice.apply(s,n([i,0],d));for(c=e;c<t;c++)this._layers[c].startIndex-=o,this._layers[c].endIndex-=o}a.startIndex=i,a.endIndex=i+o,this._layers.splice(t,0,a),this.canvas.renderOnAddRemove&&this.canvas.requestRenderAll(),this.fire({type:"layer:move",layer:a,options:{from:e,to:t}}),this.activeLayerIndex=t},e.prototype.onObjectAdd=function(e){var t=s(e.target,this.canvas._objects);t<this._activeLayer.startIndex||t>this._activeLayer.endIndex+1?(this.canvas._objects.splice(t,1),this.canvas._objects.splice(this._activeLayer.endIndex,0,e.target),this.canvas.renderOnAddRemove&&this.canvas.requestRenderAll()):this._activeLayer.endIndex++;for(var r=this.activeLayerIndex+1;r<this._layers.length;r++)this._layers[r].startIndex++,this._layers[r].endIndex++;var n={type:"object:add",event:e};this._activeLayer.fire(n),console.log("added",e.target,"to",this._activeLayer)},e.prototype.onObjectRemove=function(e){var t=e.target;console.log("removed",t)},e.prototype.addListener=function(e){this._listeners.indexOf(e)>=0||this._listeners.push(e)},e.prototype.removeListener=function(e){var t=this._listeners.indexOf(e);return!(t<0)&&(this._listeners.splice(t,1),!0)},e.prototype.fire=function(e){this._listeners.forEach((function(t){switch(e.type){case"layer:activate":t.onLayerActivated&&t.onLayerActivated(e);break;case"layer:deactivate":t.onLayerDeactivated&&t.onLayerDeactivated(e);break;case"layer:add":t.onLayerAdd&&t.onLayerAdd(e);break;case"layer:remove":t.onLayerRemove&&t.onLayerRemove(e);break;case"layer:move":t.onLayerMove&&t.onLayerMove(e)}}))},e.prototype.dispose=function(){this.canvas.off("object:added",this.onObjectAdd),this.canvas.off("object:removed",this.onObjectRemove),this.canvas=null},e}();e.LayerGroup=r,e.LayerManager=a,e.getIndexOf=s,Object.defineProperty(e,"__esModule",{value:!0})}));
