mudlet-map-browser-script 0.0.14 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.min.js","sources":["../node_modules/@andreasremdt/simple-translator/dist/esm/translator.min.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/bootstrap/dist/js/bootstrap.esm.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Global.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Util.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Context.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Canvas.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/DragAndDrop.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Validators.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Factory.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Node.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Container.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/PointerEvents.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Stage.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Shape.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Layer.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/FastLayer.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Group.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Animation.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Tween.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/_CoreInternals.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Arc.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Line.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/BezierFunctions.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Path.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Arrow.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Circle.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Ellipse.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Image.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Label.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Rect.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/RegularPolygon.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Ring.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Sprite.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Star.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Text.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/TextPath.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Transformer.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Wedge.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Blur.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Brighten.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Contrast.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Enhance.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Emboss.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/HSL.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/HSV.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Mask.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Kaleidoscope.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Noise.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Pixelate.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Posterize.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/RGB.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/RGBA.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Threshold.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/_FullInternals.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Brightness.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Grayscale.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Invert.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Sepia.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Solarize.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/dist/index.mjs","../src/preview.ts","../node_modules/@tarekraafat/autocomplete.js/dist/autoComplete.min.js","../src/npc.ts","../src/index.ts","../src/versions.ts"],"sourcesContent":["function t(e){return t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},t(e)}function e(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function r(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null==n)return;var r,a,o=[],i=!0,u=!1;try{for(n=n.call(t);!(i=(r=n.next()).done)&&(o.push(r.value),!e||o.length!==e);i=!0);}catch(t){u=!0,a=t}finally{try{i||null==n.return||n.return()}finally{if(u)throw a}}return o}(t,e)||function(t,e){if(!t)return;if(\"string\"==typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===n&&t.constructor&&(n=t.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(t);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(t,e)}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var o={INVALID_PARAM_LANGUAGE:function(e){return\"Invalid parameter for `language` provided. Expected a string, but got \".concat(t(e),\".\")},INVALID_PARAM_JSON:function(e){return\"Invalid parameter for `json` provided. Expected an object, but got \".concat(t(e),\".\")},EMPTY_PARAM_LANGUAGE:function(){return\"The parameter for `language` can't be an empty string.\"},EMPTY_PARAM_JSON:function(){return\"The parameter for `json` must have at least one key/value pair.\"},INVALID_PARAM_KEY:function(e){return\"Invalid parameter for `key` provided. Expected a string, but got \".concat(t(e),\".\")},NO_LANGUAGE_REGISTERED:function(t){return'No translation for language \"'.concat(t,'\" has been added, yet. Make sure to register that language using the `.add()` method first.')},TRANSLATION_NOT_FOUND:function(t,e){return'No translation found for key \"'.concat(t,'\" in language \"').concat(e,'\". Is there a key/value in your translation file?')},INVALID_PARAMETER_SOURCES:function(e){return\"Invalid parameter for `sources` provided. Expected either a string or an array, but got \".concat(t(e),\".\")},FETCH_ERROR:function(t){return'Could not fetch \"'.concat(t.url,'\": ').concat(t.status,\" (\").concat(t.statusText,\")\")},INVALID_ENVIRONMENT:function(){return\"You are trying to execute the method `translatePageTo()`, which is only available in the browser. Your environment is most likely Node.js\"},MODULE_NOT_FOUND:function(t){return t},MISMATCHING_ATTRIBUTES:function(t,e,n){return'The attributes \"data-i18n\" and \"data-i18n-attr\" must contain the same number of keys.\\n\\nValues in `data-i18n`: ('.concat(t.length,\") `\").concat(t.join(\" \"),\"`\\nValues in `data-i18n-attr`: (\").concat(e.length,\") `\").concat(e.join(\" \"),\"`\\n\\nThe HTML element is:\\n\").concat(n.outerHTML)},INVALID_OPTIONS:function(e){return\"Invalid config passed to the `Translator` constructor. Expected an object, but got \".concat(t(e),\". Using default config instead.\")}};function i(t){return function(e){if(t)try{for(var n=o[e],a=arguments.length,i=new Array(a>1?a-1:0),u=1;u<a;u++)i[u-1]=arguments[u];throw new TypeError(n?n.apply(void 0,i):\"Unhandled Error\")}catch(t){var s=t.stack.split(/\\n/g)[1],l=s.split(/@/),c=r(l,2),g=c[0],f=c[1];console.error(\"\".concat(t.message,\"\\n\\nThis error happened in the method `\").concat(g,\"` from: `\").concat(f,\"`.\\n\\nIf you don't want to see these error messages, turn off debugging by passing `{ debug: false }` to the constructor.\\n\\nError code: \").concat(e,\"\\n\\nCheck out the documentation for more details about the API:\\nhttps://github.com/andreasremdt/simple-translator#usage\\n \"))}}}var u=function(){function r(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,r),this.debug=i(!0),(\"object\"!=t(n)||Array.isArray(n))&&(this.debug(\"INVALID_OPTIONS\",n),n={}),this.languages=new Map,this.config=Object.assign(r.defaultConfig,n);var a=this.config,o=a.debug,u=a.registerGlobally,s=a.detectLanguage;this.debug=i(o),u&&(this._globalObject[u]=this.translateForKey.bind(this)),s&&\"browser\"==this._env&&this._detectLanguage()}var a,o,u;return a=r,o=[{key:\"_globalObject\",get:function(){return\"browser\"==this._env?window:global}},{key:\"_env\",get:function(){return\"undefined\"!=typeof window?\"browser\":\"undefined\"!=typeof module&&module.exports?\"node\":\"browser\"}},{key:\"_detectLanguage\",value:function(){var t=window.localStorage?localStorage.getItem(this.config.persistKey):void 0;if(t)this.config.defaultLanguage=t;else{var e=navigator.languages?navigator.languages[0]:navigator.language;this.config.defaultLanguage=e.substr(0,2)}}},{key:\"_getValueFromJSON\",value:function(t,e){var n=this.languages.get(e);return t.split(\".\").reduce((function(t,e){return t?t[e]:null}),n)}},{key:\"_replace\",value:function(t,e){var n,r,a=this,o=null===(n=t.getAttribute(\"data-i18n\"))||void 0===n?void 0:n.split(/\\s/g),i=null==t||null===(r=t.getAttribute(\"data-i18n-attr\"))||void 0===r?void 0:r.split(/\\s/g);i&&o.length!=i.length&&this.debug(\"MISMATCHING_ATTRIBUTES\",o,i,t),o.forEach((function(n,r){var o=a._getValueFromJSON(n,e),u=i?i[r]:\"innerHTML\";o?\"innerHTML\"==u?t[u]=o:t.setAttribute(u,o):a.debug(\"TRANSLATION_NOT_FOUND\",n,e)}))}},{key:\"translatePageTo\",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.config.defaultLanguage;if(\"node\"!=this._env)if(\"string\"==typeof e)if(0!=e.length)if(this.languages.has(e)){var n=\"string\"==typeof this.config.selector?Array.from(document.querySelectorAll(this.config.selector)):this.config.selector;n.length&&n.length>0?n.forEach((function(n){return t._replace(n,e)})):null==n.length&&this._replace(n,e),this._currentLanguage=e,document.documentElement.lang=e,this.config.persist&&window.localStorage&&localStorage.setItem(this.config.persistKey,e)}else this.debug(\"NO_LANGUAGE_REGISTERED\",e);else this.debug(\"EMPTY_PARAM_LANGUAGE\");else this.debug(\"INVALID_PARAM_LANGUAGE\",e);else this.debug(\"INVALID_ENVIRONMENT\")}},{key:\"translateForKey\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.config.defaultLanguage;if(\"string\"!=typeof t)return this.debug(\"INVALID_PARAM_KEY\",t),null;if(!this.languages.has(e))return this.debug(\"NO_LANGUAGE_REGISTERED\",e),null;var n=this._getValueFromJSON(t,e);return n||(this.debug(\"TRANSLATION_NOT_FOUND\",t,e),null)}},{key:\"add\",value:function(e,n){return\"string\"!=typeof e?(this.debug(\"INVALID_PARAM_LANGUAGE\",e),this):0==e.length?(this.debug(\"EMPTY_PARAM_LANGUAGE\"),this):Array.isArray(n)||\"object\"!=t(n)?(this.debug(\"INVALID_PARAM_JSON\",n),this):0==Object.keys(n).length?(this.debug(\"EMPTY_PARAM_JSON\"),this):(this.languages.set(e,n),this)}},{key:\"remove\",value:function(t){return\"string\"!=typeof t?(this.debug(\"INVALID_PARAM_LANGUAGE\",t),this):0==t.length?(this.debug(\"EMPTY_PARAM_LANGUAGE\"),this):(this.languages.delete(t),this)}},{key:\"fetch\",value:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){var e=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!Array.isArray(t)&&\"string\"!=typeof t)return this.debug(\"INVALID_PARAMETER_SOURCES\",t),null;Array.isArray(t)||(t=[t]);var r=t.map((function(t){var n=t.replace(/\\.json$/,\"\").replace(/^\\//,\"\"),r=e.config.filesLocation.replace(/\\/$/,\"\");return\"\".concat(r,\"/\").concat(n,\".json\")}));return\"browser\"==this._env?Promise.all(r.map((function(t){return fetch(t)}))).then((function(t){return Promise.all(t.map((function(t){if(t.ok)return t.json();e.debug(\"FETCH_ERROR\",t)})))})).then((function(r){return r=r.filter((function(t){return t})),n&&r.forEach((function(n,r){e.add(t[r],n)})),r.length>1?r:r[0]})):\"node\"==this._env?new Promise((function(a){var o=[];r.forEach((function(r,a){try{var i=JSON.parse(require(\"fs\").readFileSync(process.cwd()+r,\"utf-8\"));n&&e.add(t[a],i),o.push(i)}catch(t){e.debug(\"MODULE_NOT_FOUND\",t.message)}})),a(o.length>1?o:o[0])})):void 0}))},{key:\"setDefaultLanguage\",value:function(t){if(\"string\"==typeof t){if(0!=t.length)return this.languages.has(t)?void(this.config.defaultLanguage=t):(this.debug(\"NO_LANGUAGE_REGISTERED\",t),null);this.debug(\"EMPTY_PARAM_LANGUAGE\")}else this.debug(\"INVALID_PARAM_LANGUAGE\",t)}},{key:\"currentLanguage\",get:function(){return this._currentLanguage||this.config.defaultLanguage}},{key:\"defaultLanguage\",get:function(){return this.config.defaultLanguage}}],u=[{key:\"defaultConfig\",get:function(){return{defaultLanguage:\"en\",detectLanguage:!0,selector:\"[data-i18n]\",debug:!1,registerGlobally:\"__\",persist:!1,persistKey:\"preferred_language\",filesLocation:\"/i18n\"}}}],o&&n(a.prototype,o),u&&n(a,u),r}();export{u as default};\n//# sourceMappingURL=translator.min.js.map\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/*!\n * Bootstrap v5.2.3 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp)\n\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n/**\n * Public Util API\n */\n\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n\n return prefix;\n};\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n\n return selector;\n};\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element);\n\n if (selector) {\n return document.querySelector(selector) ? selector : null;\n }\n\n return null;\n};\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n};\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n\n return typeof object.nodeType !== 'undefined';\n};\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object);\n }\n\n return null;\n};\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed\n\n const closedDetails = element.closest('details:not([open])');\n\n if (!closedDetails) {\n return elementIsVisible;\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n\n if (summary === null) {\n return false;\n }\n }\n\n return elementIsVisible;\n};\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n\n if (element.classList.contains('disabled')) {\n return true;\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return findShadowRoot(element.parentNode);\n};\n\nconst noop = () => {};\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n\n\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n\n return null;\n};\n\nconst DOMContentLoadedCallbacks = [];\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\n\nconst isRTL = () => document.documentElement.dir === 'rtl';\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback();\n }\n};\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n\n\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement); // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n\n index += shouldGetNext ? 1 : -1;\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\n\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n\n hydrateObj(event, {\n delegateTarget: target\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n };\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check\n\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent];\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const handlerKey of Object.keys(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const keyHandlers of Object.keys(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n let evt = new Event(event, {\n bubbles,\n cancelable: true\n });\n evt = hydrateObj(evt, args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n }\n\n};\n\nfunction hydrateObj(obj, meta) {\n for (const [key, value] of Object.entries(meta || {})) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n\n get() {\n return value;\n }\n\n });\n }\n }\n\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n\n const instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n\n instanceMap.set(key, instance);\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n\n return null;\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n if (value === Number(value).toString()) {\n return Number(value);\n }\n\n if (value === '' || value === 'null') {\n return null;\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n\n return attributes;\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n\n static get DefaultType() {\n return {};\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n return config;\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return { ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const property of Object.keys(configTypes)) {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst VERSION = '5.2.3';\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n\n if (!element) {\n return;\n }\n\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n } // Public\n\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n } // Static\n\n\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n\n static get VERSION() {\n return VERSION;\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n } // Public\n\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (closeEvent.defaultPrevented) {\n return;\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n } // Private\n\n\n _destroyElement() {\n this._element.remove();\n\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nenableDismissTrigger(Alert, 'close');\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n } // Public\n\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n\n return parents;\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling;\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n\n previous = previous.previousElementSibling;\n }\n\n return [];\n },\n\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n\n next = next.nextElementSibling;\n }\n\n return [];\n },\n\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n\n if (!element || !Swipe.isSupported()) {\n return;\n }\n\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n\n this._initEvents();\n } // Getters\n\n\n static get Default() {\n return Default$c;\n }\n\n static get DefaultType() {\n return DefaultType$c;\n }\n\n static get NAME() {\n return NAME$d;\n } // Public\n\n\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n } // Private\n\n\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n\n this._handleSwipe();\n\n execute(this._config.endCallback);\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n\n if (!direction) {\n return;\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n } // Static\n\n\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n\n this._addEventListeners();\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$b;\n }\n\n static get DefaultType() {\n return DefaultType$b;\n }\n\n static get NAME() {\n return NAME$c;\n } // Public\n\n\n next() {\n this._slide(ORDER_NEXT);\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n\n prev() {\n this._slide(ORDER_PREV);\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n\n this._clearInterval();\n }\n\n cycle() {\n this._clearInterval();\n\n this._updateInterval();\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n\n this.cycle();\n }\n\n to(index) {\n const items = this._getItems();\n\n if (index > items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n\n const activeIndex = this._getItemIndex(this._getActive());\n\n if (activeIndex === index) {\n return;\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n this._slide(order, items[index]);\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n } // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n\n this.pause();\n\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n const direction = KEY_TO_DIRECTION[event.key];\n\n if (direction) {\n event.preventDefault();\n\n this._slide(this._directionToOrder(direction));\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n\n if (!element) {\n return;\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n\n const activeElement = this._getActive();\n\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n\n if (nextElement === activeElement) {\n return;\n }\n\n const nextElementIndex = this._getItemIndex(nextElement);\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n\n const slideEvent = triggerEvent(EVENT_SLIDE);\n\n if (slideEvent.defaultPrevented) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // todo: change tests that use empty divs to avoid this check\n return;\n }\n\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n\n this._setActiveIndicatorElement(nextElementIndex);\n\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n\n if (isCycling) {\n this.cycle();\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = getElementFromSelector(this);\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n\n if (slideIndex) {\n carousel.to(slideIndex);\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n carousel.prev();\n\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n\n for (const elem of toggleList) {\n const selector = getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n\n this._initializeChildren();\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$a;\n }\n\n static get DefaultType() {\n return DefaultType$a;\n }\n\n static get NAME() {\n return NAME$b;\n } // Public\n\n\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n\n let activeChildren = []; // find active children\n\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n\n const dimension = this._getDimension();\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.style[dimension] = 0;\n\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n\n this._queueCallback(complete, this._element, true);\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n const dimension = this._getDimension();\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n for (const trigger of this._triggerArray) {\n const element = getElementFromSelector(trigger);\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n\n this._element.style[dimension] = '';\n\n this._queueCallback(complete, this._element, true);\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n } // Private\n\n\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n config.parent = getElement(config.parent);\n return config;\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n\n for (const element of children) {\n const selected = getElementFromSelector(element);\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth\n\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n } // Static\n\n\n static jQueryInterface(config) {\n const _config = {};\n\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n const selector = getSelectorFromElement(this);\n const selectorElements = SelectorEngine.find(selector);\n\n for (const element of selectorElements) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n } // Getters\n\n\n static get Default() {\n return Default$9;\n }\n\n static get DefaultType() {\n return DefaultType$9;\n }\n\n static get NAME() {\n return NAME$a;\n } // Public\n\n\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._createPopper(); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n\n this._element.classList.add(CLASS_NAME_SHOW$6);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n\n this._completeHide(relatedTarget);\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n\n super.dispose();\n }\n\n update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper) {\n this._popper.update();\n }\n } // Private\n\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n\n if (hideEvent.defaultPrevented) {\n return;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.setAttribute('aria-expanded', 'false');\n\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n\n _getConfig(config) {\n config = super._getConfig(config);\n\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n\n return config;\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n let referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n\n const popperConfig = this._getPopperConfig();\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n\n _getPlacement() {\n const parentDropdown = this._parent;\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n } // We need to trim the value because custom properties can also include spaces\n\n\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }; // Disable Popper if we have a static display or Dropdown is in Navbar\n\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove\n\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n\n if (!items.length) {\n return;\n } // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n\n\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n\n if (!context || context._config.autoClose === false) {\n continue;\n }\n\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n };\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n context._completeHide(relatedTarget);\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n\n if (isInput && !isEscapeEvent) {\n return;\n }\n\n event.preventDefault(); // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n\n instance._selectMenuItem(event);\n\n return;\n }\n\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n } // Public\n\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n\n hide() {\n const width = this.getWidth();\n\n this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width\n\n\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n\n\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n\n isOverflowing() {\n return this.getWidth() > 0;\n } // Private\n\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n\n this._element.style.overflow = 'hidden';\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n\n this._saveInitialAttribute(element, styleProperty);\n\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero\n\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n\n};\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n } // Getters\n\n\n static get Default() {\n return Default$8;\n }\n\n static get DefaultType() {\n return DefaultType$8;\n }\n\n static get NAME() {\n return NAME$9;\n } // Public\n\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._append();\n\n const element = this._getElement();\n\n if (this._config.isAnimated) {\n reflow(element);\n }\n\n element.classList.add(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n\n dispose() {\n if (!this._isAppended) {\n return;\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n\n this._element.remove();\n\n this._isAppended = false;\n } // Private\n\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n\n this._element = backdrop;\n }\n\n return this._element;\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n\n _append() {\n if (this._isAppended) {\n return;\n }\n\n const element = this._getElement();\n\n this._config.rootElement.append(element);\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n\n};\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n } // Getters\n\n\n static get Default() {\n return Default$7;\n }\n\n static get DefaultType() {\n return DefaultType$7;\n }\n\n static get NAME() {\n return NAME$8;\n } // Public\n\n\n activate() {\n if (this._isActive) {\n return;\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n\n deactivate() {\n if (!this._isActive) {\n return;\n }\n\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n } // Private\n\n\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement);\n\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$6;\n }\n\n static get DefaultType() {\n return DefaultType$6;\n }\n\n static get NAME() {\n return NAME$7;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n this._isTransitioning = true;\n\n this._scrollBar.hide();\n\n document.body.classList.add(CLASS_NAME_OPEN);\n\n this._adjustDialog();\n\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = false;\n this._isTransitioning = true;\n\n this._focustrap.deactivate();\n\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n\n dispose() {\n for (const htmlElement of [window, this._dialog]) {\n EventHandler.off(htmlElement, EVENT_KEY$4);\n }\n\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n }\n\n handleUpdate() {\n this._adjustDialog();\n } // Private\n\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW$4);\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n\n if (this._config.keyboard) {\n event.preventDefault();\n this.hide();\n return;\n }\n\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n\n return;\n }\n\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n\n _hideModal() {\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n\n this._resetAdjustments();\n\n this._scrollBar.reset();\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed\n\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n\n this._element.focus();\n }\n /**\n * The following methods are used to handle overflowing modals\n */\n\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n const scrollbarWidth = this._scrollBar.getWidth();\n\n const isBodyOverflowing = scrollbarWidth > 0;\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n } // Static\n\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](relatedTarget);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n }); // avoid conflict when clicking modal toggler while another one is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$5;\n }\n\n static get DefaultType() {\n return DefaultType$5;\n }\n\n static get NAME() {\n return NAME$6;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n\n this._backdrop.show();\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n\n this._element.classList.add(CLASS_NAME_SHOW$3);\n\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n\n this._queueCallback(completeCallBack, this._element, true);\n }\n\n hide() {\n if (!this._isShown) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._focustrap.deactivate();\n\n this._element.blur();\n\n this._isShown = false;\n\n this._element.classList.add(CLASS_NAME_HIDING);\n\n this._backdrop.hide();\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n\n this._queueCallback(completeCallback, this._element, true);\n }\n\n dispose() {\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n } // Private\n\n\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n }; // 'static' option will be translated to true, and booleans will keep their value\n\n\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n\n if (!this._config.keyboard) {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n });\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n }); // avoid conflict when clicking a toggler of an offcanvas, while another is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));\n }\n\n return true;\n } // Check if a regular expression validates the attribute.\n\n\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\n\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n } // Getters\n\n\n static get Default() {\n return Default$4;\n }\n\n static get DefaultType() {\n return DefaultType$4;\n }\n\n static get NAME() {\n return NAME$5;\n } // Public\n\n\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n\n hasContent() {\n return this.getContent().length > 0;\n }\n\n changeContent(content) {\n this._checkContent(content);\n\n this._config.content = { ...this._config.content,\n ...content\n };\n return this;\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n\n const template = templateWrapper.children[0];\n\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n\n return template;\n } // Private\n\n\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n\n this._checkContent(config.content);\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n\n if (!templateElement) {\n return;\n }\n\n content = this._resolvePossibleFunction(content);\n\n if (!content) {\n templateElement.remove();\n return;\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n\n return;\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n\n templateElement.textContent = content;\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg(this) : arg;\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n\n templateElement.textContent = element.textContent;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 0],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n\n super(element, config); // Private\n\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null; // Protected\n\n this.tip = null;\n\n this._setListeners();\n\n if (!this._config.selector) {\n this._fixTitle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$3;\n }\n\n static get DefaultType() {\n return DefaultType$3;\n }\n\n static get NAME() {\n return NAME$4;\n } // Public\n\n\n enable() {\n this._isEnabled = true;\n }\n\n disable() {\n this._isEnabled = false;\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n\n this._activeTrigger.click = !this._activeTrigger.click;\n\n if (this._isShown()) {\n this._leave();\n\n return;\n }\n\n this._enter();\n }\n\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n\n this._disposePopper();\n\n super.dispose();\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n } // todo v6 remove this OR make it optional\n\n\n this._disposePopper();\n\n const tip = this._getTipElement();\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n\n const {\n container\n } = this._config;\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n\n if (this._isHovered === false) {\n this._leave();\n }\n\n this._isHovered = false;\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n hide() {\n if (!this._isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const tip = this._getTipElement();\n\n tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n if (!this._isHovered) {\n this._disposePopper();\n }\n\n this._element.removeAttribute('aria-describedby');\n\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n update() {\n if (this._popper) {\n this._popper.update();\n }\n } // Protected\n\n\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n\n return this.tip;\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6\n\n\n if (!tip) {\n return null;\n }\n\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only\n\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n\n return tip;\n }\n\n setContent(content) {\n this._newContent = content;\n\n if (this._isShown()) {\n this._disposePopper();\n\n this.show();\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({ ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n\n return this._templateFactory;\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n } // Private\n\n\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n\n _createPopper(tip) {\n const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg.call(this._element) : arg;\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n\n context._leave();\n });\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title');\n\n if (!title) {\n return;\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n\n\n this._element.removeAttribute('title');\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n\n this._isHovered = true;\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n this._isHovered = false;\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n\n config = { ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n return config;\n }\n\n _getDelegateConfig() {\n const config = {};\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key];\n }\n }\n\n config.selector = false;\n config.trigger = 'manual'; // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n\n return config;\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n\n this._popper = null;\n }\n\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = { ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n trigger: 'click'\n};\nconst DefaultType$2 = { ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n\n static get DefaultType() {\n return DefaultType$2;\n }\n\n static get NAME() {\n return NAME$3;\n } // Overrides\n\n\n _isWithContent() {\n return this._getTitle() || this._getContent();\n } // Private\n\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config); // this._element is the observablesContainer and config.target the menu links wrapper\n\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n } // Getters\n\n\n static get Default() {\n return Default$1;\n }\n\n static get DefaultType() {\n return DefaultType$1;\n }\n\n static get NAME() {\n return NAME$2;\n } // Public\n\n\n refresh() {\n this._initializeTargetsAndObservables();\n\n this._maybeEnableSmoothScroll();\n\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n\n dispose() {\n this._observer.disconnect();\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n\n return config;\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n } // unregister any previous listeners\n\n\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n } // Chrome 60 doesn't support `scrollTo`\n\n\n root.scrollTop = height;\n }\n });\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n } // The logic of selection\n\n\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n\n this._process(targetElement(entry));\n };\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n\n this._clearActiveClass(targetElement(entry));\n\n continue;\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop\n\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n\n if (!parentScrollTop) {\n return;\n }\n\n continue;\n } // if we are scrolling up, pick the smallest offsetTop\n\n\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n\n const observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible\n\n if (isVisible(observableSection)) {\n this._targetLinks.set(anchor.hash, anchor);\n\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n\n this._clearActiveClass(this._config.target);\n\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n\n this._activateParents(target);\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE$1);\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE$1);\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);\n\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE$1);\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst CLASS_DROPDOWN = 'dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)';\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nconst SELECTOR_OUTER = '.nav-item, .list-group-item';\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'; // todo:v6: could be only `tab`\n\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`;\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element);\n this._parent = this._element.closest(SELECTOR_TAB_PANEL);\n\n if (!this._parent) {\n return; // todo: should Throw exception on v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n } // Set up initial aria attributes\n\n\n this._setInitialAttributes(this._parent, this._getChildren());\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n } // Getters\n\n\n static get NAME() {\n return NAME$1;\n } // Public\n\n\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element;\n\n if (this._elemIsActive(innerElem)) {\n return;\n } // Search for active tab on same parent to deactivate it\n\n\n const active = this._getActiveElem();\n\n const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {\n relatedTarget: innerElem\n }) : null;\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {\n relatedTarget: active\n });\n\n if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {\n return;\n }\n\n this._deactivate(active, innerElem);\n\n this._activate(innerElem, active);\n } // Private\n\n\n _activate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.add(CLASS_NAME_ACTIVE);\n\n this._activate(getElementFromSelector(element)); // Search and activate/show the proper section\n\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW$1);\n return;\n }\n\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n\n this._toggleDropDown(element, true);\n\n EventHandler.trigger(element, EVENT_SHOWN$1, {\n relatedTarget: relatedElem\n });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n\n this._deactivate(getElementFromSelector(element)); // Search and deactivate the shown section too\n\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW$1);\n return;\n }\n\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n\n this._toggleDropDown(element, false);\n\n EventHandler.trigger(element, EVENT_HIDDEN$1, {\n relatedTarget: relatedElem\n });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n\n _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)) {\n return;\n }\n\n event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n\n event.preventDefault();\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true);\n\n if (nextActiveElement) {\n nextActiveElement.focus({\n preventScroll: true\n });\n Tab.getOrCreateInstance(nextActiveElement).show();\n }\n }\n\n _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null;\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist');\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child);\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child);\n\n const isActive = this._elemIsActive(child);\n\n const outerElem = this._getOuterElement(child);\n\n child.setAttribute('aria-selected', isActive);\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1');\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab'); // set attributes to the related panel too\n\n\n this._setInitialAttributesOnTargetPanel(child);\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = getElementFromSelector(child);\n\n if (!target) {\n return;\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`);\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element);\n\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return;\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem);\n\n if (element) {\n element.classList.toggle(className, open);\n }\n };\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);\n outerElem.setAttribute('aria-expanded', open);\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value);\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE);\n } // Try to get the inner element (usually the .nav-link)\n\n\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n } // Try to get the outer element (usually the .nav-item)\n\n\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n Tab.getOrCreateInstance(this).show();\n});\n/**\n * Initialize on focus\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\n\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n};\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n};\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._timeout = null;\n this._hasMouseInteraction = false;\n this._hasKeyboardInteraction = false;\n\n this._setListeners();\n } // Getters\n\n\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n } // Public\n\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING);\n\n EventHandler.trigger(this._element, EVENT_SHOWN);\n\n this._maybeScheduleHide();\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n hide() {\n if (!this.isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n\n\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n dispose() {\n this._clearTimeout();\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n\n super.dispose();\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW);\n } // Private\n\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return;\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay);\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n {\n this._hasMouseInteraction = isInteracting;\n break;\n }\n\n case 'focusin':\n case 'focusout':\n {\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n }\n\n if (isInteracting) {\n this._clearTimeout();\n\n return;\n }\n\n const nextElement = event.relatedTarget;\n\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n\n this._maybeScheduleHide();\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nenableDismissTrigger(Toast);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast);\n\nexport { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };\n//# sourceMappingURL=bootstrap.esm.js.map\n","const PI_OVER_180 = Math.PI / 180;\nfunction detectBrowser() {\n return (typeof window !== 'undefined' &&\n ({}.toString.call(window) === '[object Window]' ||\n {}.toString.call(window) === '[object global]'));\n}\nexport const glob = typeof global !== 'undefined'\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof WorkerGlobalScope !== 'undefined'\n ? self\n : {};\nexport const Konva = {\n _global: glob,\n version: '10.0.2',\n isBrowser: detectBrowser(),\n isUnminified: /param/.test(function (param) { }.toString()),\n dblClickWindow: 400,\n getAngle(angle) {\n return Konva.angleDeg ? angle * PI_OVER_180 : angle;\n },\n enableTrace: false,\n pointerEventsEnabled: true,\n autoDrawEnabled: true,\n hitOnDragEnabled: false,\n capturePointerEventsEnabled: false,\n _mouseListenClick: false,\n _touchListenClick: false,\n _pointerListenClick: false,\n _mouseInDblClickWindow: false,\n _touchInDblClickWindow: false,\n _pointerInDblClickWindow: false,\n _mouseDblClickPointerId: null,\n _touchDblClickPointerId: null,\n _pointerDblClickPointerId: null,\n _renderBackend: 'web',\n legacyTextRendering: false,\n pixelRatio: (typeof window !== 'undefined' && window.devicePixelRatio) || 1,\n dragDistance: 3,\n angleDeg: true,\n showWarnings: true,\n dragButtons: [0, 1],\n isDragging() {\n return Konva['DD'].isDragging;\n },\n isTransforming() {\n var _a, _b;\n return (_b = (_a = Konva['Transformer']) === null || _a === void 0 ? void 0 : _a.isTransforming()) !== null && _b !== void 0 ? _b : false;\n },\n isDragReady() {\n return !!Konva['DD'].node;\n },\n releaseCanvasOnDestroy: true,\n document: glob.document,\n _injectGlobal(Konva) {\n if (typeof glob.Konva !== 'undefined') {\n console.error('Severa Konva instances detected. It is not recommended to use multiple Konva instances in the same environment.');\n }\n glob.Konva = Konva;\n },\n};\nexport const _registerNode = (NodeClass) => {\n Konva[NodeClass.prototype.getClassName()] = NodeClass;\n};\nKonva._injectGlobal(Konva);\n","import { Konva } from \"./Global.js\";\nconst NODE_ERROR = `Konva.js unsupported environment.\n\nLooks like you are trying to use Konva.js in Node.js environment. because \"document\" object is undefined.\n\nTo use Konva.js in Node.js environment, you need to use the \"canvas-backend\" or \"skia-backend\" module.\n\nbash: npm install canvas\njs: import \"konva/canvas-backend\";\n\nor\n\nbash: npm install skia-canvas\njs: import \"konva/skia-backend\";\n`;\nconst ensureBrowser = () => {\n if (typeof document === 'undefined') {\n throw new Error(NODE_ERROR);\n }\n};\nexport class Transform {\n constructor(m = [1, 0, 0, 1, 0, 0]) {\n this.dirty = false;\n this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\n }\n reset() {\n this.m[0] = 1;\n this.m[1] = 0;\n this.m[2] = 0;\n this.m[3] = 1;\n this.m[4] = 0;\n this.m[5] = 0;\n }\n copy() {\n return new Transform(this.m);\n }\n copyInto(tr) {\n tr.m[0] = this.m[0];\n tr.m[1] = this.m[1];\n tr.m[2] = this.m[2];\n tr.m[3] = this.m[3];\n tr.m[4] = this.m[4];\n tr.m[5] = this.m[5];\n }\n point(point) {\n const m = this.m;\n return {\n x: m[0] * point.x + m[2] * point.y + m[4],\n y: m[1] * point.x + m[3] * point.y + m[5],\n };\n }\n translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n return this;\n }\n scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n return this;\n }\n rotate(rad) {\n const c = Math.cos(rad);\n const s = Math.sin(rad);\n const m11 = this.m[0] * c + this.m[2] * s;\n const m12 = this.m[1] * c + this.m[3] * s;\n const m21 = this.m[0] * -s + this.m[2] * c;\n const m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n getTranslation() {\n return {\n x: this.m[4],\n y: this.m[5],\n };\n }\n skew(sx, sy) {\n const m11 = this.m[0] + this.m[2] * sy;\n const m12 = this.m[1] + this.m[3] * sy;\n const m21 = this.m[2] + this.m[0] * sx;\n const m22 = this.m[3] + this.m[1] * sx;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n multiply(matrix) {\n const m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n const m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n const m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n const m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n const dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n const dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n return this;\n }\n invert() {\n const d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n const m0 = this.m[3] * d;\n const m1 = -this.m[1] * d;\n const m2 = -this.m[2] * d;\n const m3 = this.m[0] * d;\n const m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n const m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n return this;\n }\n getMatrix() {\n return this.m;\n }\n decompose() {\n const a = this.m[0];\n const b = this.m[1];\n const c = this.m[2];\n const d = this.m[3];\n const e = this.m[4];\n const f = this.m[5];\n const delta = a * d - b * c;\n const result = {\n x: e,\n y: f,\n rotation: 0,\n scaleX: 0,\n scaleY: 0,\n skewX: 0,\n skewY: 0,\n };\n if (a != 0 || b != 0) {\n const r = Math.sqrt(a * a + b * b);\n result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\n result.scaleX = r;\n result.scaleY = delta / r;\n result.skewX = (a * c + b * d) / delta;\n result.skewY = 0;\n }\n else if (c != 0 || d != 0) {\n const s = Math.sqrt(c * c + d * d);\n result.rotation =\n Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\n result.scaleX = delta / s;\n result.scaleY = s;\n result.skewX = 0;\n result.skewY = (a * c + b * d) / delta;\n }\n else {\n }\n result.rotation = Util._getRotation(result.rotation);\n return result;\n }\n}\nconst OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 132, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 255, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 203],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [119, 128, 144],\n slategrey: [119, 128, 144],\n snow: [255, 255, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n transparent: [255, 255, 255, 0],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 5],\n}, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/;\nlet animQueue = [];\nconst req = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame) ||\n function (f) {\n setTimeout(f, 60);\n };\nexport const Util = {\n _isElement(obj) {\n return !!(obj && obj.nodeType == 1);\n },\n _isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n },\n _isPlainObject(obj) {\n return !!obj && obj.constructor === Object;\n },\n _isArray(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n },\n _isNumber(obj) {\n return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n !isNaN(obj) &&\n isFinite(obj));\n },\n _isString(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_STRING;\n },\n _isBoolean(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n },\n isObject(val) {\n return val instanceof Object;\n },\n isValidSelector(selector) {\n if (typeof selector !== 'string') {\n return false;\n }\n const firstChar = selector[0];\n return (firstChar === '#' ||\n firstChar === '.' ||\n firstChar === firstChar.toUpperCase());\n },\n _sign(number) {\n if (number === 0) {\n return 1;\n }\n if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n },\n requestAnimFrame(callback) {\n animQueue.push(callback);\n if (animQueue.length === 1) {\n req(function () {\n const queue = animQueue;\n animQueue = [];\n queue.forEach(function (cb) {\n cb();\n });\n });\n }\n },\n createCanvasElement() {\n ensureBrowser();\n const canvas = document.createElement('canvas');\n try {\n canvas.style = canvas.style || {};\n }\n catch (e) { }\n return canvas;\n },\n createImageElement() {\n ensureBrowser();\n return document.createElement('img');\n },\n _isInDocument(el) {\n while ((el = el.parentNode)) {\n if (el == document) {\n return true;\n }\n }\n return false;\n },\n _urlToImage(url, callback) {\n const imageObj = Util.createImageElement();\n imageObj.onload = function () {\n callback(imageObj);\n };\n imageObj.src = url;\n },\n _rgbToHex(r, g, b) {\n return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n },\n _hexToRgb(hex) {\n hex = hex.replace(HASH, EMPTY_STRING);\n const bigint = parseInt(hex, 16);\n return {\n r: (bigint >> 16) & 255,\n g: (bigint >> 8) & 255,\n b: bigint & 255,\n };\n },\n getRandomColor() {\n let randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n while (randColor.length < 6) {\n randColor = ZERO + randColor;\n }\n return HASH + randColor;\n },\n getRGB(color) {\n let rgb;\n if (color in COLORS) {\n rgb = COLORS[color];\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n }\n else if (color[0] === HASH) {\n return this._hexToRgb(color.substring(1));\n }\n else if (color.substr(0, 4) === RGB_PAREN) {\n rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\n return {\n r: parseInt(rgb[1], 10),\n g: parseInt(rgb[2], 10),\n b: parseInt(rgb[3], 10),\n };\n }\n else {\n return {\n r: 0,\n g: 0,\n b: 0,\n };\n }\n },\n colorToRGBA(str) {\n str = str || 'black';\n return (Util._namedColorToRBA(str) ||\n Util._hex3ColorToRGBA(str) ||\n Util._hex4ColorToRGBA(str) ||\n Util._hex6ColorToRGBA(str) ||\n Util._hex8ColorToRGBA(str) ||\n Util._rgbColorToRGBA(str) ||\n Util._rgbaColorToRGBA(str) ||\n Util._hslColorToRGBA(str));\n },\n _namedColorToRBA(str) {\n const c = COLORS[str.toLowerCase()];\n if (!c) {\n return null;\n }\n return {\n r: c[0],\n g: c[1],\n b: c[2],\n a: 1,\n };\n },\n _rgbColorToRGBA(str) {\n if (str.indexOf('rgb(') === 0) {\n str = str.match(/rgb\\(([^)]+)\\)/)[1];\n const parts = str.split(/ *, */).map(Number);\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: 1,\n };\n }\n },\n _rgbaColorToRGBA(str) {\n if (str.indexOf('rgba(') === 0) {\n str = str.match(/rgba\\(([^)]+)\\)/)[1];\n const parts = str.split(/ *, */).map((n, index) => {\n if (n.slice(-1) === '%') {\n return index === 3 ? parseInt(n) / 100 : (parseInt(n) / 100) * 255;\n }\n return Number(n);\n });\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: parts[3],\n };\n }\n },\n _hex8ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 9) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: parseInt(str.slice(7, 9), 16) / 0xff,\n };\n }\n },\n _hex6ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 7) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: 1,\n };\n }\n },\n _hex4ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 5) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: parseInt(str[4] + str[4], 16) / 0xff,\n };\n }\n },\n _hex3ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 4) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: 1,\n };\n }\n },\n _hslColorToRGBA(str) {\n if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\n const [_, ...hsl] = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str);\n const h = Number(hsl[0]) / 360;\n const s = Number(hsl[1]) / 100;\n const l = Number(hsl[2]) / 100;\n let t2;\n let t3;\n let val;\n if (s === 0) {\n val = l * 255;\n return {\n r: Math.round(val),\n g: Math.round(val),\n b: Math.round(val),\n a: 1,\n };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n }\n else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n }\n else if (2 * t3 < 1) {\n val = t2;\n }\n else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n }\n else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: Math.round(rgb[0]),\n g: Math.round(rgb[1]),\n b: Math.round(rgb[2]),\n a: 1,\n };\n }\n },\n haveIntersection(r1, r2) {\n return !(r2.x > r1.x + r1.width ||\n r2.x + r2.width < r1.x ||\n r2.y > r1.y + r1.height ||\n r2.y + r2.height < r1.y);\n },\n cloneObject(obj) {\n const retObj = {};\n for (const key in obj) {\n if (this._isPlainObject(obj[key])) {\n retObj[key] = this.cloneObject(obj[key]);\n }\n else if (this._isArray(obj[key])) {\n retObj[key] = this.cloneArray(obj[key]);\n }\n else {\n retObj[key] = obj[key];\n }\n }\n return retObj;\n },\n cloneArray(arr) {\n return arr.slice(0);\n },\n degToRad(deg) {\n return deg * PI_OVER_DEG180;\n },\n radToDeg(rad) {\n return rad * DEG180_OVER_PI;\n },\n _degToRad(deg) {\n Util.warn('Util._degToRad is removed. Please use public Util.degToRad instead.');\n return Util.degToRad(deg);\n },\n _radToDeg(rad) {\n Util.warn('Util._radToDeg is removed. Please use public Util.radToDeg instead.');\n return Util.radToDeg(rad);\n },\n _getRotation(radians) {\n return Konva.angleDeg ? Util.radToDeg(radians) : radians;\n },\n _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n throw(str) {\n throw new Error(KONVA_ERROR + str);\n },\n error(str) {\n console.error(KONVA_ERROR + str);\n },\n warn(str) {\n if (!Konva.showWarnings) {\n return;\n }\n console.warn(KONVA_WARNING + str);\n },\n each(obj, func) {\n for (const key in obj) {\n func(key, obj[key]);\n }\n },\n _inRange(val, left, right) {\n return left <= val && val < right;\n },\n _getProjectionToSegment(x1, y1, x2, y2, x3, y3) {\n let x, y, dist;\n const pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n if (pd2 == 0) {\n x = x1;\n y = y1;\n dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\n }\n else {\n const u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\n if (u < 0) {\n x = x1;\n y = y1;\n dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\n }\n else if (u > 1.0) {\n x = x2;\n y = y2;\n dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\n }\n else {\n x = x1 + u * (x2 - x1);\n y = y1 + u * (y2 - y1);\n dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\n }\n }\n return [x, y, dist];\n },\n _getProjectionToLine(pt, line, isClosed) {\n const pc = Util.cloneObject(pt);\n let dist = Number.MAX_VALUE;\n line.forEach(function (p1, i) {\n if (!isClosed && i === line.length - 1) {\n return;\n }\n const p2 = line[(i + 1) % line.length];\n const proj = Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n const px = proj[0], py = proj[1], pdist = proj[2];\n if (pdist < dist) {\n pc.x = px;\n pc.y = py;\n dist = pdist;\n }\n });\n return pc;\n },\n _prepareArrayForTween(startArray, endArray, isClosed) {\n const start = [], end = [];\n if (startArray.length > endArray.length) {\n const temp = endArray;\n endArray = startArray;\n startArray = temp;\n }\n for (let n = 0; n < startArray.length; n += 2) {\n start.push({\n x: startArray[n],\n y: startArray[n + 1],\n });\n }\n for (let n = 0; n < endArray.length; n += 2) {\n end.push({\n x: endArray[n],\n y: endArray[n + 1],\n });\n }\n const newStart = [];\n end.forEach(function (point) {\n const pr = Util._getProjectionToLine(point, start, isClosed);\n newStart.push(pr.x);\n newStart.push(pr.y);\n });\n return newStart;\n },\n _prepareToStringify(obj) {\n let desc;\n obj.visitedByCircularReferenceRemoval = true;\n for (const key in obj) {\n if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\n continue;\n }\n desc = Object.getOwnPropertyDescriptor(obj, key);\n if (obj[key].visitedByCircularReferenceRemoval ||\n Util._isElement(obj[key])) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n else if (Util._prepareToStringify(obj[key]) === null) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n }\n delete obj.visitedByCircularReferenceRemoval;\n return obj;\n },\n _assign(target, source) {\n for (const key in source) {\n target[key] = source[key];\n }\n return target;\n },\n _getFirstPointerId(evt) {\n if (!evt.touches) {\n return evt.pointerId || 999;\n }\n else {\n return evt.changedTouches[0].identifier;\n }\n },\n releaseCanvas(...canvases) {\n if (!Konva.releaseCanvasOnDestroy)\n return;\n canvases.forEach((c) => {\n c.width = 0;\n c.height = 0;\n });\n },\n drawRoundedRectPath(context, width, height, cornerRadius) {\n let xOrigin = width < 0 ? width : 0;\n let yOrigin = height < 0 ? height : 0;\n width = Math.abs(width);\n height = Math.abs(height);\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.moveTo(xOrigin + topLeft, yOrigin);\n context.lineTo(xOrigin + width - topRight, yOrigin);\n context.arc(xOrigin + width - topRight, yOrigin + topRight, topRight, (Math.PI * 3) / 2, 0, false);\n context.lineTo(xOrigin + width, yOrigin + height - bottomRight);\n context.arc(xOrigin + width - bottomRight, yOrigin + height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n context.lineTo(xOrigin + bottomLeft, yOrigin + height);\n context.arc(xOrigin + bottomLeft, yOrigin + height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n context.lineTo(xOrigin, yOrigin + topLeft);\n context.arc(xOrigin + topLeft, yOrigin + topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n },\n drawRoundedPolygonPath(context, points, sides, radius, cornerRadius) {\n radius = Math.abs(radius);\n for (let i = 0; i < sides; i++) {\n const prev = points[(i - 1 + sides) % sides];\n const curr = points[i];\n const next = points[(i + 1) % sides];\n const vec1 = { x: curr.x - prev.x, y: curr.y - prev.y };\n const vec2 = { x: next.x - curr.x, y: next.y - curr.y };\n const len1 = Math.hypot(vec1.x, vec1.y);\n const len2 = Math.hypot(vec2.x, vec2.y);\n let currCornerRadius;\n if (typeof cornerRadius === 'number') {\n currCornerRadius = cornerRadius;\n }\n else {\n currCornerRadius = i < cornerRadius.length ? cornerRadius[i] : 0;\n }\n const maxCornerRadius = radius * Math.cos(Math.PI / sides);\n currCornerRadius =\n maxCornerRadius * Math.min(1, (currCornerRadius / radius) * 2);\n const normalVec1 = { x: vec1.x / len1, y: vec1.y / len1 };\n const normalVec2 = { x: vec2.x / len2, y: vec2.y / len2 };\n const p1 = {\n x: curr.x - normalVec1.x * currCornerRadius,\n y: curr.y - normalVec1.y * currCornerRadius,\n };\n const p2 = {\n x: curr.x + normalVec2.x * currCornerRadius,\n y: curr.y + normalVec2.y * currCornerRadius,\n };\n if (i === 0) {\n context.moveTo(p1.x, p1.y);\n }\n else {\n context.lineTo(p1.x, p1.y);\n }\n context.arcTo(curr.x, curr.y, p2.x, p2.y, currCornerRadius);\n }\n },\n};\n","import { Util } from \"./Util.js\";\nimport { Konva } from \"./Global.js\";\nfunction simplifyArray(arr) {\n const retArr = [], len = arr.length, util = Util;\n for (let n = 0; n < len; n++) {\n let val = arr[n];\n if (util._isNumber(val)) {\n val = Math.round(val * 1000) / 1000;\n }\n else if (!util._isString(val)) {\n val = val + '';\n }\n retArr.push(val);\n }\n return retArr;\n}\nconst COMMA = ',', OPEN_PAREN = '(', CLOSE_PAREN = ')', OPEN_PAREN_BRACKET = '([', CLOSE_BRACKET_PAREN = '])', SEMICOLON = ';', DOUBLE_PAREN = '()', EQUALS = '=', CONTEXT_METHODS = [\n 'arc',\n 'arcTo',\n 'beginPath',\n 'bezierCurveTo',\n 'clearRect',\n 'clip',\n 'closePath',\n 'createLinearGradient',\n 'createPattern',\n 'createRadialGradient',\n 'drawImage',\n 'ellipse',\n 'fill',\n 'fillText',\n 'getImageData',\n 'createImageData',\n 'lineTo',\n 'moveTo',\n 'putImageData',\n 'quadraticCurveTo',\n 'rect',\n 'roundRect',\n 'restore',\n 'rotate',\n 'save',\n 'scale',\n 'setLineDash',\n 'setTransform',\n 'stroke',\n 'strokeText',\n 'transform',\n 'translate',\n];\nconst CONTEXT_PROPERTIES = [\n 'fillStyle',\n 'strokeStyle',\n 'shadowColor',\n 'shadowBlur',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'letterSpacing',\n 'lineCap',\n 'lineDashOffset',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit',\n 'direction',\n 'font',\n 'textAlign',\n 'textBaseline',\n 'globalAlpha',\n 'globalCompositeOperation',\n 'imageSmoothingEnabled',\n 'filter',\n];\nconst traceArrMax = 100;\nlet _cssFiltersSupported = null;\nexport function isCSSFiltersSupported() {\n if (_cssFiltersSupported !== null) {\n return _cssFiltersSupported;\n }\n try {\n const canvas = Util.createCanvasElement();\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n _cssFiltersSupported = false;\n return false;\n }\n return !!ctx && 'filter' in ctx;\n }\n catch (e) {\n _cssFiltersSupported = false;\n return false;\n }\n}\nexport class Context {\n constructor(canvas) {\n this.canvas = canvas;\n if (Konva.enableTrace) {\n this.traceArr = [];\n this._enableTrace();\n }\n }\n fillShape(shape) {\n if (shape.fillEnabled()) {\n this._fill(shape);\n }\n }\n _fill(shape) {\n }\n strokeShape(shape) {\n if (shape.hasStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n }\n fillStrokeShape(shape) {\n if (shape.attrs.fillAfterStrokeEnabled) {\n this.strokeShape(shape);\n this.fillShape(shape);\n }\n else {\n this.fillShape(shape);\n this.strokeShape(shape);\n }\n }\n getTrace(relaxed, rounded) {\n let traceArr = this.traceArr, len = traceArr.length, str = '', n, trace, method, args;\n for (n = 0; n < len; n++) {\n trace = traceArr[n];\n method = trace.method;\n if (method) {\n args = trace.args;\n str += method;\n if (relaxed) {\n str += DOUBLE_PAREN;\n }\n else {\n if (Util._isArray(args[0])) {\n str += OPEN_PAREN_BRACKET + args.join(COMMA) + CLOSE_BRACKET_PAREN;\n }\n else {\n if (rounded) {\n args = args.map((a) => typeof a === 'number' ? Math.floor(a) : a);\n }\n str += OPEN_PAREN + args.join(COMMA) + CLOSE_PAREN;\n }\n }\n }\n else {\n str += trace.property;\n if (!relaxed) {\n str += EQUALS + trace.val;\n }\n }\n str += SEMICOLON;\n }\n return str;\n }\n clearTrace() {\n this.traceArr = [];\n }\n _trace(str) {\n let traceArr = this.traceArr, len;\n traceArr.push(str);\n len = traceArr.length;\n if (len >= traceArrMax) {\n traceArr.shift();\n }\n }\n reset() {\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(1 * pixelRatio, 0, 0, 1 * pixelRatio, 0, 0);\n }\n getCanvas() {\n return this.canvas;\n }\n clear(bounds) {\n const canvas = this.getCanvas();\n if (bounds) {\n this.clearRect(bounds.x || 0, bounds.y || 0, bounds.width || 0, bounds.height || 0);\n }\n else {\n this.clearRect(0, 0, canvas.getWidth() / canvas.pixelRatio, canvas.getHeight() / canvas.pixelRatio);\n }\n }\n _applyLineCap(shape) {\n const lineCap = shape.attrs.lineCap;\n if (lineCap) {\n this.setAttr('lineCap', lineCap);\n }\n }\n _applyOpacity(shape) {\n const absOpacity = shape.getAbsoluteOpacity();\n if (absOpacity !== 1) {\n this.setAttr('globalAlpha', absOpacity);\n }\n }\n _applyLineJoin(shape) {\n const lineJoin = shape.attrs.lineJoin;\n if (lineJoin) {\n this.setAttr('lineJoin', lineJoin);\n }\n }\n _applyMiterLimit(shape) {\n const miterLimit = shape.attrs.miterLimit;\n if (miterLimit != null) {\n this.setAttr('miterLimit', miterLimit);\n }\n }\n setAttr(attr, val) {\n this._context[attr] = val;\n }\n arc(x, y, radius, startAngle, endAngle, counterClockwise) {\n this._context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._context.arcTo(x1, y1, x2, y2, radius);\n }\n beginPath() {\n this._context.beginPath();\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this._context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n }\n clearRect(x, y, width, height) {\n this._context.clearRect(x, y, width, height);\n }\n clip(...args) {\n this._context.clip.apply(this._context, args);\n }\n closePath() {\n this._context.closePath();\n }\n createImageData(width, height) {\n const a = arguments;\n if (a.length === 2) {\n return this._context.createImageData(width, height);\n }\n else if (a.length === 1) {\n return this._context.createImageData(width);\n }\n }\n createLinearGradient(x0, y0, x1, y1) {\n return this._context.createLinearGradient(x0, y0, x1, y1);\n }\n createPattern(image, repetition) {\n return this._context.createPattern(image, repetition);\n }\n createRadialGradient(x0, y0, r0, x1, y1, r1) {\n return this._context.createRadialGradient(x0, y0, r0, x1, y1, r1);\n }\n drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) {\n const a = arguments, _context = this._context;\n if (a.length === 3) {\n _context.drawImage(image, sx, sy);\n }\n else if (a.length === 5) {\n _context.drawImage(image, sx, sy, sWidth, sHeight);\n }\n else if (a.length === 9) {\n _context.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\n }\n }\n ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise) {\n this._context.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise);\n }\n isPointInPath(x, y, path, fillRule) {\n if (path) {\n return this._context.isPointInPath(path, x, y, fillRule);\n }\n return this._context.isPointInPath(x, y, fillRule);\n }\n fill(...args) {\n this._context.fill.apply(this._context, args);\n }\n fillRect(x, y, width, height) {\n this._context.fillRect(x, y, width, height);\n }\n strokeRect(x, y, width, height) {\n this._context.strokeRect(x, y, width, height);\n }\n fillText(text, x, y, maxWidth) {\n if (maxWidth) {\n this._context.fillText(text, x, y, maxWidth);\n }\n else {\n this._context.fillText(text, x, y);\n }\n }\n measureText(text) {\n return this._context.measureText(text);\n }\n getImageData(sx, sy, sw, sh) {\n return this._context.getImageData(sx, sy, sw, sh);\n }\n lineTo(x, y) {\n this._context.lineTo(x, y);\n }\n moveTo(x, y) {\n this._context.moveTo(x, y);\n }\n rect(x, y, width, height) {\n this._context.rect(x, y, width, height);\n }\n roundRect(x, y, width, height, radii) {\n this._context.roundRect(x, y, width, height, radii);\n }\n putImageData(imageData, dx, dy) {\n this._context.putImageData(imageData, dx, dy);\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this._context.quadraticCurveTo(cpx, cpy, x, y);\n }\n restore() {\n this._context.restore();\n }\n rotate(angle) {\n this._context.rotate(angle);\n }\n save() {\n this._context.save();\n }\n scale(x, y) {\n this._context.scale(x, y);\n }\n setLineDash(segments) {\n if (this._context.setLineDash) {\n this._context.setLineDash(segments);\n }\n else if ('mozDash' in this._context) {\n this._context['mozDash'] = segments;\n }\n else if ('webkitLineDash' in this._context) {\n this._context['webkitLineDash'] = segments;\n }\n }\n getLineDash() {\n return this._context.getLineDash();\n }\n setTransform(a, b, c, d, e, f) {\n this._context.setTransform(a, b, c, d, e, f);\n }\n stroke(path2d) {\n if (path2d) {\n this._context.stroke(path2d);\n }\n else {\n this._context.stroke();\n }\n }\n strokeText(text, x, y, maxWidth) {\n this._context.strokeText(text, x, y, maxWidth);\n }\n transform(a, b, c, d, e, f) {\n this._context.transform(a, b, c, d, e, f);\n }\n translate(x, y) {\n this._context.translate(x, y);\n }\n _enableTrace() {\n let that = this, len = CONTEXT_METHODS.length, origSetter = this.setAttr, n, args;\n const func = function (methodName) {\n let origMethod = that[methodName], ret;\n that[methodName] = function () {\n args = simplifyArray(Array.prototype.slice.call(arguments, 0));\n ret = origMethod.apply(that, arguments);\n that._trace({\n method: methodName,\n args: args,\n });\n return ret;\n };\n };\n for (n = 0; n < len; n++) {\n func(CONTEXT_METHODS[n]);\n }\n that.setAttr = function () {\n origSetter.apply(that, arguments);\n const prop = arguments[0];\n let val = arguments[1];\n if (prop === 'shadowOffsetX' ||\n prop === 'shadowOffsetY' ||\n prop === 'shadowBlur') {\n val = val / this.canvas.getPixelRatio();\n }\n that._trace({\n property: prop,\n val: val,\n });\n };\n }\n _applyGlobalCompositeOperation(node) {\n const op = node.attrs.globalCompositeOperation;\n const def = !op || op === 'source-over';\n if (!def) {\n this.setAttr('globalCompositeOperation', op);\n }\n }\n}\nCONTEXT_PROPERTIES.forEach(function (prop) {\n Object.defineProperty(Context.prototype, prop, {\n get() {\n return this._context[prop];\n },\n set(val) {\n this._context[prop] = val;\n },\n });\n});\nexport class SceneContext extends Context {\n constructor(canvas, { willReadFrequently = false } = {}) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently,\n });\n }\n _fillColor(shape) {\n const fill = shape.fill();\n this.setAttr('fillStyle', fill);\n shape._fillFunc(this);\n }\n _fillPattern(shape) {\n this.setAttr('fillStyle', shape._getFillPattern());\n shape._fillFunc(this);\n }\n _fillLinearGradient(shape) {\n const grd = shape._getLinearGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fillRadialGradient(shape) {\n const grd = shape._getRadialGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fill(shape) {\n const hasColor = shape.fill(), fillPriority = shape.getFillPriority();\n if (hasColor && fillPriority === 'color') {\n this._fillColor(shape);\n return;\n }\n const hasPattern = shape.getFillPatternImage();\n if (hasPattern && fillPriority === 'pattern') {\n this._fillPattern(shape);\n return;\n }\n const hasLinearGradient = shape.getFillLinearGradientColorStops();\n if (hasLinearGradient && fillPriority === 'linear-gradient') {\n this._fillLinearGradient(shape);\n return;\n }\n const hasRadialGradient = shape.getFillRadialGradientColorStops();\n if (hasRadialGradient && fillPriority === 'radial-gradient') {\n this._fillRadialGradient(shape);\n return;\n }\n if (hasColor) {\n this._fillColor(shape);\n }\n else if (hasPattern) {\n this._fillPattern(shape);\n }\n else if (hasLinearGradient) {\n this._fillLinearGradient(shape);\n }\n else if (hasRadialGradient) {\n this._fillRadialGradient(shape);\n }\n }\n _strokeLinearGradient(shape) {\n const start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\n if (colorStops) {\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n this.setAttr('strokeStyle', grd);\n }\n }\n _stroke(shape) {\n const dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (shape.hasStroke()) {\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n if (dash && shape.dashEnabled()) {\n this.setLineDash(dash);\n this.setAttr('lineDashOffset', shape.dashOffset());\n }\n this.setAttr('lineWidth', shape.strokeWidth());\n if (!shape.getShadowForStrokeEnabled()) {\n this.setAttr('shadowColor', 'rgba(0,0,0,0)');\n }\n const hasLinearGradient = shape.getStrokeLinearGradientColorStops();\n if (hasLinearGradient) {\n this._strokeLinearGradient(shape);\n }\n else {\n this.setAttr('strokeStyle', shape.stroke());\n }\n shape._strokeFunc(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n _applyShadow(shape) {\n var _a, _b, _c;\n const color = (_a = shape.getShadowRGBA()) !== null && _a !== void 0 ? _a : 'black', blur = (_b = shape.getShadowBlur()) !== null && _b !== void 0 ? _b : 5, offset = (_c = shape.getShadowOffset()) !== null && _c !== void 0 ? _c : {\n x: 0,\n y: 0,\n }, scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\n this.setAttr('shadowColor', color);\n this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\n this.setAttr('shadowOffsetX', offset.x * scaleX);\n this.setAttr('shadowOffsetY', offset.y * scaleY);\n }\n}\nexport class HitContext extends Context {\n constructor(canvas) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently: true,\n });\n }\n _fill(shape) {\n this.save();\n this.setAttr('fillStyle', shape.colorKey);\n shape._fillFuncHit(this);\n this.restore();\n }\n strokeShape(shape) {\n if (shape.hasHitStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n if (shape.hasHitStroke()) {\n const strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n const hitStrokeWidth = shape.hitStrokeWidth();\n const strokeWidth = hitStrokeWidth === 'auto' ? shape.strokeWidth() : hitStrokeWidth;\n this.setAttr('lineWidth', strokeWidth);\n this.setAttr('strokeStyle', shape.colorKey);\n shape._strokeFuncHit(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n}\n","import { Util } from \"./Util.js\";\nimport { SceneContext, HitContext } from \"./Context.js\";\nimport { Konva } from \"./Global.js\";\nlet _pixelRatio;\nfunction getDevicePixelRatio() {\n if (_pixelRatio) {\n return _pixelRatio;\n }\n const canvas = Util.createCanvasElement();\n const context = canvas.getContext('2d');\n _pixelRatio = (function () {\n const devicePixelRatio = Konva._global.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio ||\n context.mozBackingStorePixelRatio ||\n context.msBackingStorePixelRatio ||\n context.oBackingStorePixelRatio ||\n context.backingStorePixelRatio ||\n 1;\n return devicePixelRatio / backingStoreRatio;\n })();\n Util.releaseCanvas(canvas);\n return _pixelRatio;\n}\nexport class Canvas {\n constructor(config) {\n this.pixelRatio = 1;\n this.width = 0;\n this.height = 0;\n this.isCache = false;\n const conf = config || {};\n const pixelRatio = conf.pixelRatio || Konva.pixelRatio || getDevicePixelRatio();\n this.pixelRatio = pixelRatio;\n this._canvas = Util.createCanvasElement();\n this._canvas.style.padding = '0';\n this._canvas.style.margin = '0';\n this._canvas.style.border = '0';\n this._canvas.style.background = 'transparent';\n this._canvas.style.position = 'absolute';\n this._canvas.style.top = '0';\n this._canvas.style.left = '0';\n }\n getContext() {\n return this.context;\n }\n getPixelRatio() {\n return this.pixelRatio;\n }\n setPixelRatio(pixelRatio) {\n const previousRatio = this.pixelRatio;\n this.pixelRatio = pixelRatio;\n this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\n }\n setWidth(width) {\n this.width = this._canvas.width = width * this.pixelRatio;\n this._canvas.style.width = width + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n setHeight(height) {\n this.height = this._canvas.height = height * this.pixelRatio;\n this._canvas.style.height = height + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n getWidth() {\n return this.width;\n }\n getHeight() {\n return this.height;\n }\n setSize(width, height) {\n this.setWidth(width || 0);\n this.setHeight(height || 0);\n }\n toDataURL(mimeType, quality) {\n try {\n return this._canvas.toDataURL(mimeType, quality);\n }\n catch (e) {\n try {\n return this._canvas.toDataURL();\n }\n catch (err) {\n Util.error('Unable to get data URL. ' +\n err.message +\n ' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n return '';\n }\n }\n }\n}\nexport class SceneCanvas extends Canvas {\n constructor(config = { width: 0, height: 0, willReadFrequently: false }) {\n super(config);\n this.context = new SceneContext(this, {\n willReadFrequently: config.willReadFrequently,\n });\n this.setSize(config.width, config.height);\n }\n}\nfunction isCanvasFarblingActive() {\n const c = Util.createCanvasElement();\n c.width = 1;\n c.height = 1;\n const ctx = c.getContext('2d', {\n willReadFrequently: true,\n });\n ctx.clearRect(0, 0, 1, 1);\n ctx.fillStyle = 'rgba(255,0,255,1)';\n ctx.fillRect(0, 0, 1, 1);\n const d = ctx.getImageData(0, 0, 1, 1).data;\n const exact = d[0] === 255 && d[1] === 0 && d[2] === 255 && d[3] === 255;\n return !exact;\n}\nfunction isBraveBrowser() {\n var _a, _b;\n if (typeof navigator === 'undefined') {\n return false;\n }\n return (_b = (_a = navigator.brave) === null || _a === void 0 ? void 0 : _a.isBrave()) !== null && _b !== void 0 ? _b : false;\n}\nlet warned = false;\nfunction checkHitCanvasSupport() {\n if (isBraveBrowser() && isCanvasFarblingActive() && !warned) {\n warned = true;\n Util.error('Looks like you have \"Brave shield\" enabled in your browser. It breaks KonvaJS internals. Please disable it. You may need to ask your users to do the same.');\n }\n return isBraveBrowser() && isCanvasFarblingActive();\n}\nexport class HitCanvas extends Canvas {\n constructor(config = { width: 0, height: 0 }) {\n super(config);\n this.hitCanvas = true;\n this.context = new HitContext(this);\n this.setSize(config.width, config.height);\n checkHitCanvasSupport();\n }\n}\n","import { Konva } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nexport const DD = {\n get isDragging() {\n let flag = false;\n DD._dragElements.forEach((elem) => {\n if (elem.dragStatus === 'dragging') {\n flag = true;\n }\n });\n return flag;\n },\n justDragged: false,\n get node() {\n let node;\n DD._dragElements.forEach((elem) => {\n node = elem.node;\n });\n return node;\n },\n _dragElements: new Map(),\n _drag(evt) {\n const nodesToFireEvents = [];\n DD._dragElements.forEach((elem, key) => {\n const { node } = elem;\n const stage = node.getStage();\n stage.setPointersPositions(evt);\n if (elem.pointerId === undefined) {\n elem.pointerId = Util._getFirstPointerId(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus !== 'dragging') {\n const dragDistance = node.dragDistance();\n const distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\n if (distance < dragDistance) {\n return;\n }\n node.startDrag({ evt });\n if (!node.isDragging()) {\n return;\n }\n }\n node._setDragPosition(evt, elem);\n nodesToFireEvents.push(node);\n });\n nodesToFireEvents.forEach((node) => {\n node.fire('dragmove', {\n type: 'dragmove',\n target: node,\n evt: evt,\n }, true);\n });\n },\n _endDragBefore(evt) {\n const drawNodes = [];\n DD._dragElements.forEach((elem) => {\n const { node } = elem;\n const stage = node.getStage();\n if (evt) {\n stage.setPointersPositions(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\n DD.justDragged = true;\n Konva._mouseListenClick = false;\n Konva._touchListenClick = false;\n Konva._pointerListenClick = false;\n elem.dragStatus = 'stopped';\n }\n const drawNode = elem.node.getLayer() ||\n (elem.node instanceof Konva['Stage'] && elem.node);\n if (drawNode && drawNodes.indexOf(drawNode) === -1) {\n drawNodes.push(drawNode);\n }\n });\n drawNodes.forEach((drawNode) => {\n drawNode.draw();\n });\n },\n _endDragAfter(evt) {\n DD._dragElements.forEach((elem, key) => {\n if (elem.dragStatus === 'stopped') {\n elem.node.fire('dragend', {\n type: 'dragend',\n target: elem.node,\n evt: evt,\n }, true);\n }\n if (elem.dragStatus !== 'dragging') {\n DD._dragElements.delete(key);\n }\n });\n },\n};\nif (Konva.isBrowser) {\n window.addEventListener('mouseup', DD._endDragBefore, true);\n window.addEventListener('touchend', DD._endDragBefore, true);\n window.addEventListener('touchcancel', DD._endDragBefore, true);\n window.addEventListener('mousemove', DD._drag);\n window.addEventListener('touchmove', DD._drag);\n window.addEventListener('mouseup', DD._endDragAfter, false);\n window.addEventListener('touchend', DD._endDragAfter, false);\n window.addEventListener('touchcancel', DD._endDragAfter, false);\n}\n","import { Konva } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nfunction _formatValue(val) {\n if (Util._isString(val)) {\n return '\"' + val + '\"';\n }\n if (Object.prototype.toString.call(val) === '[object Number]') {\n return val;\n }\n if (Util._isBoolean(val)) {\n return val;\n }\n return Object.prototype.toString.call(val);\n}\nexport function RGBComponent(val) {\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n return Math.round(val);\n}\nexport function alphaComponent(val) {\n if (val > 1) {\n return 1;\n }\n else if (val < 0.0001) {\n return 0.0001;\n }\n return val;\n}\nexport function getNumberValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isNumber(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number.');\n }\n return val;\n };\n }\n}\nexport function getNumberOrArrayOfNumbersValidator(noOfElements) {\n if (Konva.isUnminified) {\n return function (val, attr) {\n let isNumber = Util._isNumber(val);\n let isValidArray = Util._isArray(val) && val.length == noOfElements;\n if (!isNumber && !isValidArray) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or Array<number>(' +\n noOfElements +\n ')');\n }\n return val;\n };\n }\n}\nexport function getNumberOrAutoValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isNumber = Util._isNumber(val);\n const isAuto = val === 'auto';\n if (!(isNumber || isAuto)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or \"auto\".');\n }\n return val;\n };\n }\n}\nexport function getStringValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isString(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string.');\n }\n return val;\n };\n }\n}\nexport function getStringOrGradientValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isString = Util._isString(val);\n const isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]' ||\n (val && val['addColorStop']);\n if (!(isString || isGradient)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string or a native gradient.');\n }\n return val;\n };\n }\n}\nexport function getFunctionValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isFunction(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a function.');\n }\n return val;\n };\n }\n}\nexport function getNumberArrayValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const TypedArray = Int8Array ? Object.getPrototypeOf(Int8Array) : null;\n if (TypedArray && val instanceof TypedArray) {\n return val;\n }\n if (!Util._isArray(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a array of numbers.');\n }\n else {\n val.forEach(function (item) {\n if (!Util._isNumber(item)) {\n Util.warn('\"' +\n attr +\n '\" attribute has non numeric element ' +\n item +\n '. Make sure that all elements are numbers.');\n }\n });\n }\n return val;\n };\n }\n}\nexport function getBooleanValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isBool = val === true || val === false;\n if (!isBool) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a boolean.');\n }\n return val;\n };\n }\n}\nexport function getComponentValidator(components) {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (val === undefined || val === null) {\n return val;\n }\n if (!Util.isObject(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be an object with properties ' +\n components);\n }\n return val;\n };\n }\n}\n","import { Util } from \"./Util.js\";\nimport { getComponentValidator } from \"./Validators.js\";\nconst GET = 'get';\nconst SET = 'set';\nexport const Factory = {\n addGetterSetter(constructor, attr, def, validator, after) {\n Factory.addGetter(constructor, attr, def);\n Factory.addSetter(constructor, attr, validator, after);\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addGetter(constructor, attr, def) {\n const method = GET + Util._capitalize(attr);\n constructor.prototype[method] =\n constructor.prototype[method] ||\n function () {\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n },\n addSetter(constructor, attr, validator, after) {\n const method = SET + Util._capitalize(attr);\n if (!constructor.prototype[method]) {\n Factory.overWriteSetter(constructor, attr, validator, after);\n }\n },\n overWriteSetter(constructor, attr, validator, after) {\n const method = SET + Util._capitalize(attr);\n constructor.prototype[method] = function (val) {\n if (validator && val !== undefined && val !== null) {\n val = validator.call(this, val, attr);\n }\n this._setAttr(attr, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n },\n addComponentsGetterSetter(constructor, attr, components, validator, after) {\n const len = components.length, capitalize = Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr);\n constructor.prototype[getter] = function () {\n const ret = {};\n for (let n = 0; n < len; n++) {\n const component = components[n];\n ret[component] = this.getAttr(attr + capitalize(component));\n }\n return ret;\n };\n const basicValidator = getComponentValidator(components);\n constructor.prototype[setter] = function (val) {\n const oldVal = this.attrs[attr];\n if (validator) {\n val = validator.call(this, val, attr);\n }\n if (basicValidator) {\n basicValidator.call(this, val, attr);\n }\n for (const key in val) {\n if (!val.hasOwnProperty(key)) {\n continue;\n }\n this._setAttr(attr + capitalize(key), val[key]);\n }\n if (!val) {\n components.forEach((component) => {\n this._setAttr(attr + capitalize(component), undefined);\n });\n }\n this._fireChangeEvent(attr, oldVal, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addOverloadedGetterSetter(constructor, attr) {\n const capitalizedAttr = Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\n constructor.prototype[attr] = function () {\n if (arguments.length) {\n this[setter](arguments[0]);\n return this;\n }\n return this[getter]();\n };\n },\n addDeprecatedGetterSetter(constructor, attr, def, validator) {\n Util.error('Adding deprecated ' + attr);\n const method = GET + Util._capitalize(attr);\n const message = attr +\n ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\n constructor.prototype[method] = function () {\n Util.error(message);\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n Factory.addSetter(constructor, attr, validator, function () {\n Util.error(message);\n });\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n backCompat(constructor, methods) {\n Util.each(methods, function (oldMethodName, newMethodName) {\n const method = constructor.prototype[newMethodName];\n const oldGetter = GET + Util._capitalize(oldMethodName);\n const oldSetter = SET + Util._capitalize(oldMethodName);\n function deprecated() {\n method.apply(this, arguments);\n Util.error('\"' +\n oldMethodName +\n '\" method is deprecated and will be removed soon. Use \"\"' +\n newMethodName +\n '\" instead.');\n }\n constructor.prototype[oldMethodName] = deprecated;\n constructor.prototype[oldGetter] = deprecated;\n constructor.prototype[oldSetter] = deprecated;\n });\n },\n afterSetFilter() {\n this._filterUpToDate = false;\n },\n};\n","import { HitCanvas, SceneCanvas } from \"./Canvas.js\";\nimport { isCSSFiltersSupported } from \"./Context.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Konva } from \"./Global.js\";\nimport { Transform, Util } from \"./Util.js\";\nimport { getBooleanValidator, getNumberValidator, getStringValidator, } from \"./Validators.js\";\nfunction parseCSSFilters(cssFilter) {\n const filterRegex = /(\\w+)\\(([^)]+)\\)/g;\n let match;\n while ((match = filterRegex.exec(cssFilter)) !== null) {\n const [, filterName, filterValue] = match;\n switch (filterName) {\n case 'blur': {\n const blurRadius = parseFloat(filterValue.replace('px', ''));\n return function (imageData) {\n this.blurRadius(blurRadius * 0.5);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Blur) {\n KonvaFilters.Blur.call(this, imageData);\n }\n };\n }\n case 'brightness': {\n const brightness = filterValue.includes('%')\n ? parseFloat(filterValue) / 100\n : parseFloat(filterValue);\n return function (imageData) {\n this.brightness(brightness);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Brightness) {\n KonvaFilters.Brightness.call(this, imageData);\n }\n };\n }\n case 'contrast': {\n const contrast = parseFloat(filterValue);\n return function (imageData) {\n const konvaContrast = 100 * (Math.sqrt(contrast) - 1);\n this.contrast(konvaContrast);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Contrast) {\n KonvaFilters.Contrast.call(this, imageData);\n }\n };\n }\n case 'grayscale': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Grayscale) {\n KonvaFilters.Grayscale.call(this, imageData);\n }\n };\n }\n case 'sepia': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Sepia) {\n KonvaFilters.Sepia.call(this, imageData);\n }\n };\n }\n case 'invert': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Invert) {\n KonvaFilters.Invert.call(this, imageData);\n }\n };\n }\n default:\n Util.warn(`CSS filter \"${filterName}\" is not supported in fallback mode. Consider using function filters for better compatibility.`);\n break;\n }\n }\n return () => { };\n}\nconst ABSOLUTE_OPACITY = 'absoluteOpacity', ALL_LISTENERS = 'allEventListeners', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', POINTERENTER = 'pointerenter', POINTERLEAVE = 'pointerleave', TOUCHENTER = 'touchenter', TOUCHLEAVE = 'touchleave', NAME = 'name', SET = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\n 'xChange.konva',\n 'yChange.konva',\n 'scaleXChange.konva',\n 'scaleYChange.konva',\n 'skewXChange.konva',\n 'skewYChange.konva',\n 'rotationChange.konva',\n 'offsetXChange.konva',\n 'offsetYChange.konva',\n 'transformsEnabledChange.konva',\n].join(SPACE);\nlet idCounter = 1;\nexport class Node {\n constructor(config) {\n this._id = idCounter++;\n this.eventListeners = {};\n this.attrs = {};\n this.index = 0;\n this._allEventListeners = null;\n this.parent = null;\n this._cache = new Map();\n this._attachedDepsListeners = new Map();\n this._lastPos = null;\n this._batchingTransformChange = false;\n this._needClearTransformCache = false;\n this._filterUpToDate = false;\n this._isUnderCache = false;\n this._dragEventId = null;\n this._shouldFireChangeEvents = false;\n this.setAttrs(config);\n this._shouldFireChangeEvents = true;\n }\n hasChildren() {\n return false;\n }\n _clearCache(attr) {\n if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n this._cache.get(attr)) {\n this._cache.get(attr).dirty = true;\n }\n else if (attr) {\n this._cache.delete(attr);\n }\n else {\n this._cache.clear();\n }\n }\n _getCache(attr, privateGetter) {\n let cache = this._cache.get(attr);\n const isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n const invalid = cache === undefined || (isTransform && cache.dirty === true);\n if (invalid) {\n cache = privateGetter.call(this);\n this._cache.set(attr, cache);\n }\n return cache;\n }\n _calculate(name, deps, getter) {\n if (!this._attachedDepsListeners.get(name)) {\n const depsString = deps.map((dep) => dep + 'Change.konva').join(SPACE);\n this.on(depsString, () => {\n this._clearCache(name);\n });\n this._attachedDepsListeners.set(name, true);\n }\n return this._getCache(name, getter);\n }\n _getCanvasCache() {\n return this._cache.get(CANVAS);\n }\n _clearSelfAndDescendantCache(attr) {\n this._clearCache(attr);\n if (attr === ABSOLUTE_TRANSFORM) {\n this.fire('absoluteTransformChange');\n }\n }\n clearCache() {\n if (this._cache.has(CANVAS)) {\n const { scene, filter, hit, buffer } = this._cache.get(CANVAS);\n Util.releaseCanvas(scene, filter, hit, buffer);\n this._cache.delete(CANVAS);\n }\n this._clearSelfAndDescendantCache();\n this._requestDraw();\n return this;\n }\n cache(config) {\n const conf = config || {};\n let rect = {};\n if (conf.x === undefined ||\n conf.y === undefined ||\n conf.width === undefined ||\n conf.height === undefined) {\n rect = this.getClientRect({\n skipTransform: true,\n relativeTo: this.getParent() || undefined,\n });\n }\n let width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? Math.floor(rect.x) : conf.x, y = conf.y === undefined ? Math.floor(rect.y) : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false, hitCanvasPixelRatio = conf.hitCanvasPixelRatio || 1;\n if (!width || !height) {\n Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\n return;\n }\n const extraPaddingX = Math.abs(Math.round(rect.x) - x) > 0.5 ? 1 : 0;\n const extraPaddingY = Math.abs(Math.round(rect.y) - y) > 0.5 ? 1 : 0;\n width += offset * 2 + extraPaddingX;\n height += offset * 2 + extraPaddingY;\n x -= offset;\n y -= offset;\n const cachedSceneCanvas = new SceneCanvas({\n pixelRatio: pixelRatio,\n width: width,\n height: height,\n }), cachedFilterCanvas = new SceneCanvas({\n pixelRatio: pixelRatio,\n width: 0,\n height: 0,\n willReadFrequently: true,\n }), cachedHitCanvas = new HitCanvas({\n pixelRatio: hitCanvasPixelRatio,\n width: width,\n height: height,\n }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\n const bufferCanvas = new SceneCanvas({\n width: cachedSceneCanvas.width / cachedSceneCanvas.pixelRatio + Math.abs(x),\n height: cachedSceneCanvas.height / cachedSceneCanvas.pixelRatio + Math.abs(y),\n pixelRatio: cachedSceneCanvas.pixelRatio,\n }), bufferContext = bufferCanvas.getContext();\n cachedHitCanvas.isCache = true;\n cachedSceneCanvas.isCache = true;\n this._cache.delete(CANVAS);\n this._filterUpToDate = false;\n if (conf.imageSmoothingEnabled === false) {\n cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n }\n sceneContext.save();\n hitContext.save();\n bufferContext.save();\n sceneContext.translate(-x, -y);\n hitContext.translate(-x, -y);\n bufferContext.translate(-x, -y);\n bufferCanvas.x = x;\n bufferCanvas.y = y;\n this._isUnderCache = true;\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this.drawScene(cachedSceneCanvas, this, bufferCanvas);\n this.drawHit(cachedHitCanvas, this);\n this._isUnderCache = false;\n sceneContext.restore();\n hitContext.restore();\n if (drawBorder) {\n sceneContext.save();\n sceneContext.beginPath();\n sceneContext.rect(0, 0, width, height);\n sceneContext.closePath();\n sceneContext.setAttr('strokeStyle', 'red');\n sceneContext.setAttr('lineWidth', 5);\n sceneContext.stroke();\n sceneContext.restore();\n }\n this._cache.set(CANVAS, {\n scene: cachedSceneCanvas,\n filter: cachedFilterCanvas,\n hit: cachedHitCanvas,\n buffer: bufferCanvas,\n x: x,\n y: y,\n });\n this._requestDraw();\n return this;\n }\n isCached() {\n return this._cache.has(CANVAS);\n }\n getClientRect(config) {\n throw new Error('abstract \"getClientRect\" method call');\n }\n _transformedRect(rect, top) {\n const points = [\n { x: rect.x, y: rect.y },\n { x: rect.x + rect.width, y: rect.y },\n { x: rect.x + rect.width, y: rect.y + rect.height },\n { x: rect.x, y: rect.y + rect.height },\n ];\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n const trans = this.getAbsoluteTransform(top);\n points.forEach(function (point) {\n const transformed = trans.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n _drawCachedSceneCanvas(context) {\n context.save();\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n const canvasCache = this._getCanvasCache();\n context.translate(canvasCache.x, canvasCache.y);\n const cacheCanvas = this._getCachedSceneCanvas();\n const ratio = cacheCanvas.pixelRatio;\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n context.restore();\n }\n _drawCachedHitCanvas(context) {\n const canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\n context.save();\n context.translate(canvasCache.x, canvasCache.y);\n context.drawImage(hitCanvas._canvas, 0, 0, hitCanvas.width / hitCanvas.pixelRatio, hitCanvas.height / hitCanvas.pixelRatio);\n context.restore();\n }\n _getCachedSceneCanvas() {\n let filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n if (!filters || filters.length === 0) {\n return sceneCanvas;\n }\n if (this._filterUpToDate) {\n return filterCanvas;\n }\n let useNativeOnly = true;\n for (let i = 0; i < filters.length; i++) {\n const fallbackRequired = typeof filters[i] === 'string' && !isCSSFiltersSupported();\n if (fallbackRequired) {\n }\n if (typeof filters[i] !== 'string' || !isCSSFiltersSupported()) {\n useNativeOnly = false;\n break;\n }\n }\n const ratio = sceneCanvas.pixelRatio;\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\n if (useNativeOnly) {\n const finalFilter = filters.join(' ');\n filterContext.save();\n filterContext.setAttr('filter', finalFilter);\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n filterContext.restore();\n this._filterUpToDate = true;\n return filterCanvas;\n }\n try {\n len = filters.length;\n filterContext.clear();\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\n for (n = 0; n < len; n++) {\n filter = filters[n];\n if (typeof filter === 'string') {\n filter = parseCSSFilters(filter);\n }\n filter.call(this, imageData);\n filterContext.putImageData(imageData, 0, 0);\n }\n }\n catch (e) {\n Util.error('Unable to apply filter. ' +\n e.message +\n ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n }\n this._filterUpToDate = true;\n return filterCanvas;\n }\n on(evtStr, handler) {\n if (this._cache) {\n this._cache.delete(ALL_LISTENERS);\n }\n if (arguments.length === 3) {\n return this._delegate.apply(this, arguments);\n }\n const events = evtStr.split(SPACE);\n for (let n = 0; n < events.length; n++) {\n const event = events[n];\n const parts = event.split('.');\n const baseEvent = parts[0];\n const name = parts[1] || '';\n if (!this.eventListeners[baseEvent]) {\n this.eventListeners[baseEvent] = [];\n }\n this.eventListeners[baseEvent].push({ name, handler });\n }\n return this;\n }\n off(evtStr, callback) {\n let events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (!evtStr) {\n for (t in this.eventListeners) {\n this._off(t);\n }\n }\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1];\n if (baseEvent) {\n if (this.eventListeners[baseEvent]) {\n this._off(baseEvent, name, callback);\n }\n }\n else {\n for (t in this.eventListeners) {\n this._off(t, name, callback);\n }\n }\n }\n return this;\n }\n dispatchEvent(evt) {\n const e = {\n target: this,\n type: evt.type,\n evt: evt,\n };\n this.fire(evt.type, e);\n return this;\n }\n addEventListener(type, handler) {\n this.on(type, function (evt) {\n handler.call(this, evt.evt);\n });\n return this;\n }\n removeEventListener(type) {\n this.off(type);\n return this;\n }\n _delegate(event, selector, handler) {\n const stopNode = this;\n this.on(event, function (evt) {\n const targets = evt.target.findAncestors(selector, true, stopNode);\n for (let i = 0; i < targets.length; i++) {\n evt = Util.cloneObject(evt);\n evt.currentTarget = targets[i];\n handler.call(targets[i], evt);\n }\n });\n }\n remove() {\n if (this.isDragging()) {\n this.stopDrag();\n }\n DD._dragElements.delete(this._id);\n this._remove();\n return this;\n }\n _clearCaches() {\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this._clearSelfAndDescendantCache(STAGE);\n this._clearSelfAndDescendantCache(VISIBLE);\n this._clearSelfAndDescendantCache(LISTENING);\n }\n _remove() {\n this._clearCaches();\n const parent = this.getParent();\n if (parent && parent.children) {\n parent.children.splice(this.index, 1);\n parent._setChildrenIndices();\n this.parent = null;\n }\n }\n destroy() {\n this.remove();\n this.clearCache();\n return this;\n }\n getAttr(attr) {\n const method = 'get' + Util._capitalize(attr);\n if (Util._isFunction(this[method])) {\n return this[method]();\n }\n return this.attrs[attr];\n }\n getAncestors() {\n let parent = this.getParent(), ancestors = [];\n while (parent) {\n ancestors.push(parent);\n parent = parent.getParent();\n }\n return ancestors;\n }\n getAttrs() {\n return (this.attrs || {});\n }\n setAttrs(config) {\n this._batchTransformChanges(() => {\n let key, method;\n if (!config) {\n return this;\n }\n for (key in config) {\n if (key === CHILDREN) {\n continue;\n }\n method = SET + Util._capitalize(key);\n if (Util._isFunction(this[method])) {\n this[method](config[key]);\n }\n else {\n this._setAttr(key, config[key]);\n }\n }\n });\n return this;\n }\n isListening() {\n return this._getCache(LISTENING, this._isListening);\n }\n _isListening(relativeTo) {\n const listening = this.listening();\n if (!listening) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isListening(relativeTo);\n }\n else {\n return true;\n }\n }\n isVisible() {\n return this._getCache(VISIBLE, this._isVisible);\n }\n _isVisible(relativeTo) {\n const visible = this.visible();\n if (!visible) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isVisible(relativeTo);\n }\n else {\n return true;\n }\n }\n shouldDrawHit(top, skipDragCheck = false) {\n if (top) {\n return this._isVisible(top) && this._isListening(top);\n }\n const layer = this.getLayer();\n let layerUnderDrag = false;\n DD._dragElements.forEach((elem) => {\n if (elem.dragStatus !== 'dragging') {\n return;\n }\n else if (elem.node.nodeType === 'Stage') {\n layerUnderDrag = true;\n }\n else if (elem.node.getLayer() === layer) {\n layerUnderDrag = true;\n }\n });\n const dragSkip = !skipDragCheck &&\n !Konva.hitOnDragEnabled &&\n (layerUnderDrag || Konva.isTransforming());\n return this.isListening() && this.isVisible() && !dragSkip;\n }\n show() {\n this.visible(true);\n return this;\n }\n hide() {\n this.visible(false);\n return this;\n }\n getZIndex() {\n return this.index || 0;\n }\n getAbsoluteZIndex() {\n let depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\n function addChildren(children) {\n nodes = [];\n len = children.length;\n for (n = 0; n < len; n++) {\n child = children[n];\n index++;\n if (child.nodeType !== SHAPE) {\n nodes = nodes.concat(child.getChildren().slice());\n }\n if (child._id === that._id) {\n n = len;\n }\n }\n if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\n addChildren(nodes);\n }\n }\n const stage = this.getStage();\n if (that.nodeType !== UPPER_STAGE && stage) {\n addChildren(stage.getChildren());\n }\n return index;\n }\n getDepth() {\n let depth = 0, parent = this.parent;\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n return depth;\n }\n _batchTransformChanges(func) {\n this._batchingTransformChange = true;\n func();\n this._batchingTransformChange = false;\n if (this._needClearTransformCache) {\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n }\n this._needClearTransformCache = false;\n }\n setPosition(pos) {\n this._batchTransformChanges(() => {\n this.x(pos.x);\n this.y(pos.y);\n });\n return this;\n }\n getPosition() {\n return {\n x: this.x(),\n y: this.y(),\n };\n }\n getRelativePointerPosition() {\n const stage = this.getStage();\n if (!stage) {\n return null;\n }\n const pos = stage.getPointerPosition();\n if (!pos) {\n return null;\n }\n const transform = this.getAbsoluteTransform().copy();\n transform.invert();\n return transform.point(pos);\n }\n getAbsolutePosition(top) {\n let haveCachedParent = false;\n let parent = this.parent;\n while (parent) {\n if (parent.isCached()) {\n haveCachedParent = true;\n break;\n }\n parent = parent.parent;\n }\n if (haveCachedParent && !top) {\n top = true;\n }\n const absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Transform(), offset = this.offset();\n absoluteTransform.m = absoluteMatrix.slice();\n absoluteTransform.translate(offset.x, offset.y);\n return absoluteTransform.getTranslation();\n }\n setAbsolutePosition(pos) {\n const { x, y, ...origTrans } = this._clearTransform();\n this.attrs.x = x;\n this.attrs.y = y;\n this._clearCache(TRANSFORM);\n const it = this._getAbsoluteTransform().copy();\n it.invert();\n it.translate(pos.x, pos.y);\n pos = {\n x: this.attrs.x + it.getTranslation().x,\n y: this.attrs.y + it.getTranslation().y,\n };\n this._setTransform(origTrans);\n this.setPosition({ x: pos.x, y: pos.y });\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n return this;\n }\n _setTransform(trans) {\n let key;\n for (key in trans) {\n this.attrs[key] = trans[key];\n }\n }\n _clearTransform() {\n const trans = {\n x: this.x(),\n y: this.y(),\n rotation: this.rotation(),\n scaleX: this.scaleX(),\n scaleY: this.scaleY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n skewX: this.skewX(),\n skewY: this.skewY(),\n };\n this.attrs.x = 0;\n this.attrs.y = 0;\n this.attrs.rotation = 0;\n this.attrs.scaleX = 1;\n this.attrs.scaleY = 1;\n this.attrs.offsetX = 0;\n this.attrs.offsetY = 0;\n this.attrs.skewX = 0;\n this.attrs.skewY = 0;\n return trans;\n }\n move(change) {\n let changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\n if (changeX !== undefined) {\n x += changeX;\n }\n if (changeY !== undefined) {\n y += changeY;\n }\n this.setPosition({ x: x, y: y });\n return this;\n }\n _eachAncestorReverse(func, top) {\n let family = [], parent = this.getParent(), len, n;\n if (top && top._id === this._id) {\n return;\n }\n family.unshift(this);\n while (parent && (!top || parent._id !== top._id)) {\n family.unshift(parent);\n parent = parent.parent;\n }\n len = family.length;\n for (n = 0; n < len; n++) {\n func(family[n]);\n }\n }\n rotate(theta) {\n this.rotation(this.rotation() + theta);\n return this;\n }\n moveToTop() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveToTop function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.push(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveUp() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveUp function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index + 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveDown() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveDown function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index - 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveToBottom function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.unshift(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n setZIndex(zIndex) {\n if (!this.parent) {\n Util.warn('Node has no parent. zIndex parameter is ignored.');\n return this;\n }\n if (zIndex < 0 || zIndex >= this.parent.children.length) {\n Util.warn('Unexpected value ' +\n zIndex +\n ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\n (this.parent.children.length - 1) +\n '.');\n }\n const index = this.index;\n this.parent.children.splice(index, 1);\n this.parent.children.splice(zIndex, 0, this);\n this.parent._setChildrenIndices();\n return this;\n }\n getAbsoluteOpacity() {\n return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\n }\n _getAbsoluteOpacity() {\n let absOpacity = this.opacity();\n const parent = this.getParent();\n if (parent && !parent._isUnderCache) {\n absOpacity *= parent.getAbsoluteOpacity();\n }\n return absOpacity;\n }\n moveTo(newContainer) {\n if (this.getParent() !== newContainer) {\n this._remove();\n newContainer.add(this);\n }\n return this;\n }\n toObject() {\n let attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n const obj = {\n attrs: {},\n className: this.getClassName(),\n };\n for (key in attrs) {\n val = attrs[key];\n nonPlainObject =\n Util.isObject(val) && !Util._isPlainObject(val) && !Util._isArray(val);\n if (nonPlainObject) {\n continue;\n }\n getter = typeof this[key] === 'function' && this[key];\n delete attrs[key];\n defaultValue = getter ? getter.call(this) : null;\n attrs[key] = val;\n if (defaultValue !== val) {\n obj.attrs[key] = val;\n }\n }\n return Util._prepareToStringify(obj);\n }\n toJSON() {\n return JSON.stringify(this.toObject());\n }\n getParent() {\n return this.parent;\n }\n findAncestors(selector, includeSelf, stopNode) {\n const res = [];\n if (includeSelf && this._isMatch(selector)) {\n res.push(this);\n }\n let ancestor = this.parent;\n while (ancestor) {\n if (ancestor === stopNode) {\n return res;\n }\n if (ancestor._isMatch(selector)) {\n res.push(ancestor);\n }\n ancestor = ancestor.parent;\n }\n return res;\n }\n isAncestorOf(node) {\n return false;\n }\n findAncestor(selector, includeSelf, stopNode) {\n return this.findAncestors(selector, includeSelf, stopNode)[0];\n }\n _isMatch(selector) {\n if (!selector) {\n return false;\n }\n if (typeof selector === 'function') {\n return selector(this);\n }\n let selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\n for (n = 0; n < len; n++) {\n sel = selectorArr[n];\n if (!Util.isValidSelector(sel)) {\n Util.warn('Selector \"' +\n sel +\n '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n Util.warn('Konva is awesome, right?');\n }\n if (sel.charAt(0) === '#') {\n if (this.id() === sel.slice(1)) {\n return true;\n }\n }\n else if (sel.charAt(0) === '.') {\n if (this.hasName(sel.slice(1))) {\n return true;\n }\n }\n else if (this.className === sel || this.nodeType === sel) {\n return true;\n }\n }\n return false;\n }\n getLayer() {\n const parent = this.getParent();\n return parent ? parent.getLayer() : null;\n }\n getStage() {\n return this._getCache(STAGE, this._getStage);\n }\n _getStage() {\n const parent = this.getParent();\n if (parent) {\n return parent.getStage();\n }\n else {\n return null;\n }\n }\n fire(eventType, evt = {}, bubble) {\n evt.target = evt.target || this;\n if (bubble) {\n this._fireAndBubble(eventType, evt);\n }\n else {\n this._fire(eventType, evt);\n }\n return this;\n }\n getAbsoluteTransform(top) {\n if (top) {\n return this._getAbsoluteTransform(top);\n }\n else {\n return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\n }\n }\n _getAbsoluteTransform(top) {\n let at;\n if (top) {\n at = new Transform();\n this._eachAncestorReverse(function (node) {\n const transformsEnabled = node.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(node.getTransform());\n }\n else if (transformsEnabled === 'position') {\n at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\n }\n }, top);\n return at;\n }\n else {\n at = this._cache.get(ABSOLUTE_TRANSFORM) || new Transform();\n if (this.parent) {\n this.parent.getAbsoluteTransform().copyInto(at);\n }\n else {\n at.reset();\n }\n const transformsEnabled = this.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(this.getTransform());\n }\n else if (transformsEnabled === 'position') {\n const x = this.attrs.x || 0;\n const y = this.attrs.y || 0;\n const offsetX = this.attrs.offsetX || 0;\n const offsetY = this.attrs.offsetY || 0;\n at.translate(x - offsetX, y - offsetY);\n }\n at.dirty = false;\n return at;\n }\n }\n getAbsoluteScale(top) {\n let parent = this;\n while (parent) {\n if (parent._isUnderCache) {\n top = parent;\n }\n parent = parent.getParent();\n }\n const transform = this.getAbsoluteTransform(top);\n const attrs = transform.decompose();\n return {\n x: attrs.scaleX,\n y: attrs.scaleY,\n };\n }\n getAbsoluteRotation() {\n return this.getAbsoluteTransform().decompose().rotation;\n }\n getTransform() {\n return this._getCache(TRANSFORM, this._getTransform);\n }\n _getTransform() {\n var _a, _b;\n const m = this._cache.get(TRANSFORM) || new Transform();\n m.reset();\n const x = this.x(), y = this.y(), rotation = Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\n if (x !== 0 || y !== 0) {\n m.translate(x, y);\n }\n if (rotation !== 0) {\n m.rotate(rotation);\n }\n if (skewX !== 0 || skewY !== 0) {\n m.skew(skewX, skewY);\n }\n if (scaleX !== 1 || scaleY !== 1) {\n m.scale(scaleX, scaleY);\n }\n if (offsetX !== 0 || offsetY !== 0) {\n m.translate(-1 * offsetX, -1 * offsetY);\n }\n m.dirty = false;\n return m;\n }\n clone(obj) {\n let attrs = Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n for (key in obj) {\n attrs[key] = obj[key];\n }\n const node = new this.constructor(attrs);\n for (key in this.eventListeners) {\n allListeners = this.eventListeners[key];\n len = allListeners.length;\n for (n = 0; n < len; n++) {\n listener = allListeners[n];\n if (listener.name.indexOf(KONVA) < 0) {\n if (!node.eventListeners[key]) {\n node.eventListeners[key] = [];\n }\n node.eventListeners[key].push(listener);\n }\n }\n }\n return node;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n const box = this.getClientRect();\n const stage = this.getStage(), x = config.x !== undefined ? config.x : Math.floor(box.x), y = config.y !== undefined ? config.y : Math.floor(box.y), pixelRatio = config.pixelRatio || 1, canvas = new SceneCanvas({\n width: config.width || Math.ceil(box.width) || (stage ? stage.width() : 0),\n height: config.height ||\n Math.ceil(box.height) ||\n (stage ? stage.height() : 0),\n pixelRatio: pixelRatio,\n }), context = canvas.getContext();\n const bufferCanvas = new SceneCanvas({\n width: canvas.width / canvas.pixelRatio + Math.abs(x),\n height: canvas.height / canvas.pixelRatio + Math.abs(y),\n pixelRatio: canvas.pixelRatio,\n });\n if (config.imageSmoothingEnabled === false) {\n context._context.imageSmoothingEnabled = false;\n }\n context.save();\n if (x || y) {\n context.translate(-1 * x, -1 * y);\n }\n this.drawScene(canvas, undefined, bufferCanvas);\n context.restore();\n return canvas;\n }\n toCanvas(config) {\n return this._toKonvaCanvas(config)._canvas;\n }\n toDataURL(config) {\n config = config || {};\n const mimeType = config.mimeType || null, quality = config.quality || null;\n const url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\n if (config.callback) {\n config.callback(url);\n }\n return url;\n }\n toImage(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n Util._urlToImage(this.toDataURL(config), function (img) {\n resolve(img);\n callback === null || callback === void 0 ? void 0 : callback(img);\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n toBlob(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n this.toCanvas(config).toBlob((blob) => {\n resolve(blob);\n callback === null || callback === void 0 ? void 0 : callback(blob);\n }, config === null || config === void 0 ? void 0 : config.mimeType, config === null || config === void 0 ? void 0 : config.quality);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n setSize(size) {\n this.width(size.width);\n this.height(size.height);\n return this;\n }\n getSize() {\n return {\n width: this.width(),\n height: this.height(),\n };\n }\n getClassName() {\n return this.className || this.nodeType;\n }\n getType() {\n return this.nodeType;\n }\n getDragDistance() {\n if (this.attrs.dragDistance !== undefined) {\n return this.attrs.dragDistance;\n }\n else if (this.parent) {\n return this.parent.getDragDistance();\n }\n else {\n return Konva.dragDistance;\n }\n }\n _off(type, name, callback) {\n let evtListeners = this.eventListeners[type], i, evtName, handler;\n for (i = 0; i < evtListeners.length; i++) {\n evtName = evtListeners[i].name;\n handler = evtListeners[i].handler;\n if ((evtName !== 'konva' || name === 'konva') &&\n (!name || evtName === name) &&\n (!callback || callback === handler)) {\n evtListeners.splice(i, 1);\n if (evtListeners.length === 0) {\n delete this.eventListeners[type];\n break;\n }\n i--;\n }\n }\n }\n _fireChangeEvent(attr, oldVal, newVal) {\n this._fire(attr + CHANGE, {\n oldVal: oldVal,\n newVal: newVal,\n });\n }\n addName(name) {\n if (!this.hasName(name)) {\n const oldName = this.name();\n const newName = oldName ? oldName + ' ' + name : name;\n this.name(newName);\n }\n return this;\n }\n hasName(name) {\n if (!name) {\n return false;\n }\n const fullName = this.name();\n if (!fullName) {\n return false;\n }\n const names = (fullName || '').split(/\\s/g);\n return names.indexOf(name) !== -1;\n }\n removeName(name) {\n const names = (this.name() || '').split(/\\s/g);\n const index = names.indexOf(name);\n if (index !== -1) {\n names.splice(index, 1);\n this.name(names.join(' '));\n }\n return this;\n }\n setAttr(attr, val) {\n const func = this[SET + Util._capitalize(attr)];\n if (Util._isFunction(func)) {\n func.call(this, val);\n }\n else {\n this._setAttr(attr, val);\n }\n return this;\n }\n _requestDraw() {\n if (Konva.autoDrawEnabled) {\n const drawNode = this.getLayer() || this.getStage();\n drawNode === null || drawNode === void 0 ? void 0 : drawNode.batchDraw();\n }\n }\n _setAttr(key, val) {\n const oldVal = this.attrs[key];\n if (oldVal === val && !Util.isObject(val)) {\n return;\n }\n if (val === undefined || val === null) {\n delete this.attrs[key];\n }\n else {\n this.attrs[key] = val;\n }\n if (this._shouldFireChangeEvents) {\n this._fireChangeEvent(key, oldVal, val);\n }\n this._requestDraw();\n }\n _setComponentAttr(key, component, val) {\n let oldVal;\n if (val !== undefined) {\n oldVal = this.attrs[key];\n if (!oldVal) {\n this.attrs[key] = this.getAttr(key);\n }\n this.attrs[key][component] = val;\n this._fireChangeEvent(key, oldVal, val);\n }\n }\n _fireAndBubble(eventType, evt, compareShape) {\n if (evt && this.nodeType === SHAPE) {\n evt.target = this;\n }\n const nonBubbling = [\n MOUSEENTER,\n MOUSELEAVE,\n POINTERENTER,\n POINTERLEAVE,\n TOUCHENTER,\n TOUCHLEAVE,\n ];\n const shouldStop = nonBubbling.indexOf(eventType) !== -1 &&\n ((compareShape &&\n (this === compareShape ||\n (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\n (this.nodeType === 'Stage' && !compareShape));\n if (!shouldStop) {\n this._fire(eventType, evt);\n const stopBubble = nonBubbling.indexOf(eventType) !== -1 &&\n compareShape &&\n compareShape.isAncestorOf &&\n compareShape.isAncestorOf(this) &&\n !compareShape.isAncestorOf(this.parent);\n if (((evt && !evt.cancelBubble) || !evt) &&\n this.parent &&\n this.parent.isListening() &&\n !stopBubble) {\n if (compareShape && compareShape.parent) {\n this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n }\n else {\n this._fireAndBubble.call(this.parent, eventType, evt);\n }\n }\n }\n }\n _getProtoListeners(eventType) {\n var _a, _b, _c;\n const allListeners = (_a = this._cache.get(ALL_LISTENERS)) !== null && _a !== void 0 ? _a : {};\n let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n if (events === undefined) {\n events = [];\n let obj = Object.getPrototypeOf(this);\n while (obj) {\n const hierarchyEvents = (_c = (_b = obj.eventListeners) === null || _b === void 0 ? void 0 : _b[eventType]) !== null && _c !== void 0 ? _c : [];\n events.push(...hierarchyEvents);\n obj = Object.getPrototypeOf(obj);\n }\n allListeners[eventType] = events;\n this._cache.set(ALL_LISTENERS, allListeners);\n }\n return events;\n }\n _fire(eventType, evt) {\n evt = evt || {};\n evt.currentTarget = this;\n evt.type = eventType;\n const topListeners = this._getProtoListeners(eventType);\n if (topListeners) {\n for (let i = 0; i < topListeners.length; i++) {\n topListeners[i].handler.call(this, evt);\n }\n }\n const selfListeners = this.eventListeners[eventType];\n if (selfListeners) {\n for (let i = 0; i < selfListeners.length; i++) {\n selfListeners[i].handler.call(this, evt);\n }\n }\n }\n draw() {\n this.drawScene();\n this.drawHit();\n return this;\n }\n _createDragElement(evt) {\n const pointerId = evt ? evt.pointerId : undefined;\n const stage = this.getStage();\n const ap = this.getAbsolutePosition();\n if (!stage) {\n return;\n }\n const pos = stage._getPointerById(pointerId) ||\n stage._changedPointerPositions[0] ||\n ap;\n DD._dragElements.set(this._id, {\n node: this,\n startPointerPos: pos,\n offset: {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n },\n dragStatus: 'ready',\n pointerId,\n });\n }\n startDrag(evt, bubbleEvent = true) {\n if (!DD._dragElements.has(this._id)) {\n this._createDragElement(evt);\n }\n const elem = DD._dragElements.get(this._id);\n elem.dragStatus = 'dragging';\n this.fire('dragstart', {\n type: 'dragstart',\n target: this,\n evt: evt && evt.evt,\n }, bubbleEvent);\n }\n _setDragPosition(evt, elem) {\n const pos = this.getStage()._getPointerById(elem.pointerId);\n if (!pos) {\n return;\n }\n let newNodePos = {\n x: pos.x - elem.offset.x,\n y: pos.y - elem.offset.y,\n };\n const dbf = this.dragBoundFunc();\n if (dbf !== undefined) {\n const bounded = dbf.call(this, newNodePos, evt);\n if (!bounded) {\n Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\n }\n else {\n newNodePos = bounded;\n }\n }\n if (!this._lastPos ||\n this._lastPos.x !== newNodePos.x ||\n this._lastPos.y !== newNodePos.y) {\n this.setAbsolutePosition(newNodePos);\n this._requestDraw();\n }\n this._lastPos = newNodePos;\n }\n stopDrag(evt) {\n const elem = DD._dragElements.get(this._id);\n if (elem) {\n elem.dragStatus = 'stopped';\n }\n DD._endDragBefore(evt);\n DD._endDragAfter(evt);\n }\n setDraggable(draggable) {\n this._setAttr('draggable', draggable);\n this._dragChange();\n }\n isDragging() {\n const elem = DD._dragElements.get(this._id);\n return elem ? elem.dragStatus === 'dragging' : false;\n }\n _listenDrag() {\n this._dragCleanup();\n this.on('mousedown.konva touchstart.konva', function (evt) {\n const shouldCheckButton = evt.evt['button'] !== undefined;\n const canDrag = !shouldCheckButton || Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n if (!canDrag) {\n return;\n }\n if (this.isDragging()) {\n return;\n }\n let hasDraggingChild = false;\n DD._dragElements.forEach((elem) => {\n if (this.isAncestorOf(elem.node)) {\n hasDraggingChild = true;\n }\n });\n if (!hasDraggingChild) {\n this._createDragElement(evt);\n }\n });\n }\n _dragChange() {\n if (this.attrs.draggable) {\n this._listenDrag();\n }\n else {\n this._dragCleanup();\n const stage = this.getStage();\n if (!stage) {\n return;\n }\n const dragElement = DD._dragElements.get(this._id);\n const isDragging = dragElement && dragElement.dragStatus === 'dragging';\n const isReady = dragElement && dragElement.dragStatus === 'ready';\n if (isDragging) {\n this.stopDrag();\n }\n else if (isReady) {\n DD._dragElements.delete(this._id);\n }\n }\n }\n _dragCleanup() {\n this.off('mousedown.konva');\n this.off('touchstart.konva');\n }\n isClientRectOnScreen(margin = { x: 0, y: 0 }) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const screenRect = {\n x: -margin.x,\n y: -margin.y,\n width: stage.width() + 2 * margin.x,\n height: stage.height() + 2 * margin.y,\n };\n return Util.haveIntersection(screenRect, this.getClientRect());\n }\n static create(data, container) {\n if (Util._isString(data)) {\n data = JSON.parse(data);\n }\n return this._createNode(data, container);\n }\n static _createNode(obj, container) {\n let className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\n if (container) {\n obj.attrs.container = container;\n }\n if (!Konva[className]) {\n Util.warn('Can not find a node with class name \"' +\n className +\n '\". Fallback to \"Shape\".');\n className = 'Shape';\n }\n const Class = Konva[className];\n no = new Class(obj.attrs);\n if (children) {\n len = children.length;\n for (n = 0; n < len; n++) {\n no.add(Node._createNode(children[n]));\n }\n }\n return no;\n }\n}\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on.call(Node.prototype, TRANSFORM_CHANGE_STR, function () {\n if (this._batchingTransformChange) {\n this._needClearTransformCache = true;\n return;\n }\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on.call(Node.prototype, 'visibleChange.konva', function () {\n this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on.call(Node.prototype, 'listeningChange.konva', function () {\n this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on.call(Node.prototype, 'opacityChange.konva', function () {\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nconst addGetterSetter = Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, getNumberValidator());\naddGetterSetter(Node, 'y', 0, getNumberValidator());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', getStringValidator());\naddGetterSetter(Node, 'opacity', 1, getNumberValidator());\naddGetterSetter(Node, 'name', '', getStringValidator());\naddGetterSetter(Node, 'id', '', getStringValidator());\naddGetterSetter(Node, 'rotation', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, getNumberValidator());\naddGetterSetter(Node, 'scaleY', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, getNumberValidator());\naddGetterSetter(Node, 'skewY', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, getNumberValidator());\naddGetterSetter(Node, 'offsetY', 0, getNumberValidator());\naddGetterSetter(Node, 'dragDistance', undefined, getNumberValidator());\naddGetterSetter(Node, 'width', 0, getNumberValidator());\naddGetterSetter(Node, 'height', 0, getNumberValidator());\naddGetterSetter(Node, 'listening', true, getBooleanValidator());\naddGetterSetter(Node, 'preventDefault', true, getBooleanValidator());\naddGetterSetter(Node, 'filters', undefined, function (val) {\n this._filterUpToDate = false;\n return val;\n});\naddGetterSetter(Node, 'visible', true, getBooleanValidator());\naddGetterSetter(Node, 'transformsEnabled', 'all', getStringValidator());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, getBooleanValidator());\nFactory.backCompat(Node, {\n rotateDeg: 'rotate',\n setRotationDeg: 'setRotation',\n getRotationDeg: 'getRotation',\n});\n","import { Factory } from \"./Factory.js\";\nimport { Node } from \"./Node.js\";\nimport { getNumberValidator } from \"./Validators.js\";\nexport class Container extends Node {\n constructor() {\n super(...arguments);\n this.children = [];\n }\n getChildren(filterFunc) {\n const children = this.children || [];\n if (filterFunc) {\n return children.filter(filterFunc);\n }\n return children;\n }\n hasChildren() {\n return this.getChildren().length > 0;\n }\n removeChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.remove();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n destroyChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.destroy();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n add(...children) {\n if (children.length === 0) {\n return this;\n }\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.add(children[i]);\n }\n return this;\n }\n const child = children[0];\n if (child.getParent()) {\n child.moveTo(this);\n return this;\n }\n this._validateAdd(child);\n child.index = this.getChildren().length;\n child.parent = this;\n child._clearCaches();\n this.getChildren().push(child);\n this._fire('add', {\n child: child,\n });\n this._requestDraw();\n return this;\n }\n destroy() {\n if (this.hasChildren()) {\n this.destroyChildren();\n }\n super.destroy();\n return this;\n }\n find(selector) {\n return this._generalFind(selector, false);\n }\n findOne(selector) {\n const result = this._generalFind(selector, true);\n return result.length > 0 ? result[0] : undefined;\n }\n _generalFind(selector, findOne) {\n const retArr = [];\n this._descendants((node) => {\n const valid = node._isMatch(selector);\n if (valid) {\n retArr.push(node);\n }\n if (valid && findOne) {\n return true;\n }\n return false;\n });\n return retArr;\n }\n _descendants(fn) {\n let shouldStop = false;\n const children = this.getChildren();\n for (const child of children) {\n shouldStop = fn(child);\n if (shouldStop) {\n return true;\n }\n if (!child.hasChildren()) {\n continue;\n }\n shouldStop = child._descendants(fn);\n if (shouldStop) {\n return true;\n }\n }\n return false;\n }\n toObject() {\n const obj = Node.prototype.toObject.call(this);\n obj.children = [];\n this.getChildren().forEach((child) => {\n obj.children.push(child.toObject());\n });\n return obj;\n }\n isAncestorOf(node) {\n let parent = node.getParent();\n while (parent) {\n if (parent._id === this._id) {\n return true;\n }\n parent = parent.getParent();\n }\n return false;\n }\n clone(obj) {\n const node = Node.prototype.clone.call(this, obj);\n this.getChildren().forEach(function (no) {\n node.add(no.clone());\n });\n return node;\n }\n getAllIntersections(pos) {\n const arr = [];\n this.find('Shape').forEach((shape) => {\n if (shape.isVisible() && shape.intersects(pos)) {\n arr.push(shape);\n }\n });\n return arr;\n }\n _clearSelfAndDescendantCache(attr) {\n var _a;\n super._clearSelfAndDescendantCache(attr);\n if (this.isCached()) {\n return;\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n node._clearSelfAndDescendantCache(attr);\n });\n }\n _setChildrenIndices() {\n var _a;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n child.index = n;\n });\n this._requestDraw();\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n const caching = canvas && canvas.isCache;\n if (!this.isVisible() && !caching) {\n return this;\n }\n if (cachedSceneCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawScene', canvas, top, bufferCanvas);\n }\n return this;\n }\n drawHit(can, top) {\n if (!this.shouldDrawHit(top)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawHit', canvas, top);\n }\n return this;\n }\n _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n var _a;\n const context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (typeof clipWidth === 'number' && typeof clipHeight === 'number') ||\n clipFunc;\n const selfCache = top === this;\n if (hasClip) {\n context.save();\n const transform = this.getAbsoluteTransform(top);\n let m = transform.getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n context.beginPath();\n let clipArgs;\n if (clipFunc) {\n clipArgs = clipFunc.call(this, context, this);\n }\n else {\n const clipX = this.clipX();\n const clipY = this.clipY();\n context.rect(clipX || 0, clipY || 0, clipWidth, clipHeight);\n }\n context.clip.apply(context, clipArgs);\n m = transform.copy().invert().getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n const hasComposition = !selfCache &&\n this.globalCompositeOperation() !== 'source-over' &&\n drawMethod === 'drawScene';\n if (hasComposition) {\n context.save();\n context._applyGlobalCompositeOperation(this);\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child[drawMethod](canvas, top, bufferCanvas);\n });\n if (hasComposition) {\n context.restore();\n }\n if (hasClip) {\n context.restore();\n }\n }\n getClientRect(config = {}) {\n var _a;\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo;\n let minX, minY, maxX, maxY;\n let selfRect = {\n x: Infinity,\n y: Infinity,\n width: 0,\n height: 0,\n };\n const that = this;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n if (!child.visible()) {\n return;\n }\n const rect = child.getClientRect({\n relativeTo: that,\n skipShadow: config.skipShadow,\n skipStroke: config.skipStroke,\n });\n if (rect.width === 0 && rect.height === 0) {\n return;\n }\n if (minX === undefined) {\n minX = rect.x;\n minY = rect.y;\n maxX = rect.x + rect.width;\n maxY = rect.y + rect.height;\n }\n else {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n });\n const shapes = this.find('Shape');\n let hasVisible = false;\n for (let i = 0; i < shapes.length; i++) {\n const shape = shapes[i];\n if (shape._isVisible(this)) {\n hasVisible = true;\n break;\n }\n }\n if (hasVisible && minX !== undefined) {\n selfRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n else {\n selfRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n if (!skipTransform) {\n return this._transformedRect(selfRect, relativeTo);\n }\n return selfRect;\n }\n}\nFactory.addComponentsGetterSetter(Container, 'clip', [\n 'x',\n 'y',\n 'width',\n 'height',\n]);\nFactory.addGetterSetter(Container, 'clipX', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipY', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipWidth', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipHeight', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipFunc');\n","import { Konva } from \"./Global.js\";\nconst Captures = new Map();\nconst SUPPORT_POINTER_EVENTS = Konva._global['PointerEvent'] !== undefined;\nexport function getCapturedShape(pointerId) {\n return Captures.get(pointerId);\n}\nexport function createEvent(evt) {\n return {\n evt,\n pointerId: evt.pointerId,\n };\n}\nexport function hasPointerCapture(pointerId, shape) {\n return Captures.get(pointerId) === shape;\n}\nexport function setPointerCapture(pointerId, shape) {\n releaseCapture(pointerId);\n const stage = shape.getStage();\n if (!stage)\n return;\n Captures.set(pointerId, shape);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n }\n}\nexport function releaseCapture(pointerId, target) {\n const shape = Captures.get(pointerId);\n if (!shape)\n return;\n const stage = shape.getStage();\n if (stage && stage.content) {\n }\n Captures.delete(pointerId);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n }\n}\n","import { Util } from \"./Util.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Container } from \"./Container.js\";\nimport { Konva } from \"./Global.js\";\nimport { SceneCanvas, HitCanvas } from \"./Canvas.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { _registerNode } from \"./Global.js\";\nimport * as PointerEvents from \"./PointerEvents.js\";\nconst STAGE = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', POINTEROUT = 'pointerout', POINTERLEAVE = 'pointerleave', POINTEROVER = 'pointerover', POINTERENTER = 'pointerenter', CONTEXTMENU = 'contextmenu', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TOUCHMOVE = 'touchmove', TOUCHCANCEL = 'touchcancel', WHEEL = 'wheel', MAX_LAYERS_NUMBER = 5, EVENTS = [\n [MOUSEENTER, '_pointerenter'],\n [MOUSEDOWN, '_pointerdown'],\n [MOUSEMOVE, '_pointermove'],\n [MOUSEUP, '_pointerup'],\n [MOUSELEAVE, '_pointerleave'],\n [TOUCHSTART, '_pointerdown'],\n [TOUCHMOVE, '_pointermove'],\n [TOUCHEND, '_pointerup'],\n [TOUCHCANCEL, '_pointercancel'],\n [MOUSEOVER, '_pointerover'],\n [WHEEL, '_wheel'],\n [CONTEXTMENU, '_contextmenu'],\n [POINTERDOWN, '_pointerdown'],\n [POINTERMOVE, '_pointermove'],\n [POINTERUP, '_pointerup'],\n [POINTERCANCEL, '_pointercancel'],\n [POINTERLEAVE, '_pointerleave'],\n [LOSTPOINTERCAPTURE, '_lostpointercapture'],\n];\nconst EVENTS_MAP = {\n mouse: {\n [POINTEROUT]: MOUSEOUT,\n [POINTERLEAVE]: MOUSELEAVE,\n [POINTEROVER]: MOUSEOVER,\n [POINTERENTER]: MOUSEENTER,\n [POINTERMOVE]: MOUSEMOVE,\n [POINTERDOWN]: MOUSEDOWN,\n [POINTERUP]: MOUSEUP,\n [POINTERCANCEL]: 'mousecancel',\n pointerclick: 'click',\n pointerdblclick: 'dblclick',\n },\n touch: {\n [POINTEROUT]: 'touchout',\n [POINTERLEAVE]: 'touchleave',\n [POINTEROVER]: 'touchover',\n [POINTERENTER]: 'touchenter',\n [POINTERMOVE]: TOUCHMOVE,\n [POINTERDOWN]: TOUCHSTART,\n [POINTERUP]: TOUCHEND,\n [POINTERCANCEL]: TOUCHCANCEL,\n pointerclick: 'tap',\n pointerdblclick: 'dbltap',\n },\n pointer: {\n [POINTEROUT]: POINTEROUT,\n [POINTERLEAVE]: POINTERLEAVE,\n [POINTEROVER]: POINTEROVER,\n [POINTERENTER]: POINTERENTER,\n [POINTERMOVE]: POINTERMOVE,\n [POINTERDOWN]: POINTERDOWN,\n [POINTERUP]: POINTERUP,\n [POINTERCANCEL]: POINTERCANCEL,\n pointerclick: 'pointerclick',\n pointerdblclick: 'pointerdblclick',\n },\n};\nconst getEventType = (type) => {\n if (type.indexOf('pointer') >= 0) {\n return 'pointer';\n }\n if (type.indexOf('touch') >= 0) {\n return 'touch';\n }\n return 'mouse';\n};\nconst getEventsMap = (eventType) => {\n const type = getEventType(eventType);\n if (type === 'pointer') {\n return Konva.pointerEventsEnabled && EVENTS_MAP.pointer;\n }\n if (type === 'touch') {\n return EVENTS_MAP.touch;\n }\n if (type === 'mouse') {\n return EVENTS_MAP.mouse;\n }\n};\nfunction checkNoClip(attrs = {}) {\n if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\n Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\n }\n return attrs;\n}\nconst NO_POINTERS_MESSAGE = `Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);`;\nexport const stages = [];\nexport class Stage extends Container {\n constructor(config) {\n super(checkNoClip(config));\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n this._buildDOM();\n this._bindContentEvents();\n stages.push(this);\n this.on('widthChange.konva heightChange.konva', this._resizeDOM);\n this.on('visibleChange.konva', this._checkVisibility);\n this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', () => {\n checkNoClip(this.attrs);\n });\n this._checkVisibility();\n }\n _validateAdd(child) {\n const isLayer = child.getType() === 'Layer';\n const isFastLayer = child.getType() === 'FastLayer';\n const valid = isLayer || isFastLayer;\n if (!valid) {\n Util.throw('You may only add layers to the stage.');\n }\n }\n _checkVisibility() {\n if (!this.content) {\n return;\n }\n const style = this.visible() ? '' : 'none';\n this.content.style.display = style;\n }\n setContainer(container) {\n if (typeof container === STRING) {\n let id;\n if (container.charAt(0) === '.') {\n const className = container.slice(1);\n container = document.getElementsByClassName(className)[0];\n }\n else {\n if (container.charAt(0) !== '#') {\n id = container;\n }\n else {\n id = container.slice(1);\n }\n container = document.getElementById(id);\n }\n if (!container) {\n throw 'Can not find container in document with id ' + id;\n }\n }\n this._setAttr('container', container);\n if (this.content) {\n if (this.content.parentElement) {\n this.content.parentElement.removeChild(this.content);\n }\n container.appendChild(this.content);\n }\n return this;\n }\n shouldDrawHit() {\n return true;\n }\n clear() {\n const layers = this.children, len = layers.length;\n for (let n = 0; n < len; n++) {\n layers[n].clear();\n }\n return this;\n }\n clone(obj) {\n if (!obj) {\n obj = {};\n }\n obj.container =\n typeof document !== 'undefined' && document.createElement('div');\n return Container.prototype.clone.call(this, obj);\n }\n destroy() {\n super.destroy();\n const content = this.content;\n if (content && Util._isInDocument(content)) {\n this.container().removeChild(content);\n }\n const index = stages.indexOf(this);\n if (index > -1) {\n stages.splice(index, 1);\n }\n Util.releaseCanvas(this.bufferCanvas._canvas, this.bufferHitCanvas._canvas);\n return this;\n }\n getPointerPosition() {\n const pos = this._pointerPositions[0] || this._changedPointerPositions[0];\n if (!pos) {\n Util.warn(NO_POINTERS_MESSAGE);\n return null;\n }\n return {\n x: pos.x,\n y: pos.y,\n };\n }\n _getPointerById(id) {\n return this._pointerPositions.find((p) => p.id === id);\n }\n getPointersPositions() {\n return this._pointerPositions;\n }\n getStage() {\n return this;\n }\n getContent() {\n return this.content;\n }\n _toKonvaCanvas(config) {\n config = { ...config };\n config.x = config.x || 0;\n config.y = config.y || 0;\n config.width = config.width || this.width();\n config.height = config.height || this.height();\n const canvas = new SceneCanvas({\n width: config.width,\n height: config.height,\n pixelRatio: config.pixelRatio || 1,\n });\n const _context = canvas.getContext()._context;\n const layers = this.children;\n if (config.x || config.y) {\n _context.translate(-1 * config.x, -1 * config.y);\n }\n layers.forEach(function (layer) {\n if (!layer.isVisible()) {\n return;\n }\n const layerCanvas = layer._toKonvaCanvas(config);\n _context.drawImage(layerCanvas._canvas, config.x, config.y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\n });\n return canvas;\n }\n getIntersection(pos) {\n if (!pos) {\n return null;\n }\n const layers = this.children, len = layers.length, end = len - 1;\n for (let n = end; n >= 0; n--) {\n const shape = layers[n].getIntersection(pos);\n if (shape) {\n return shape;\n }\n }\n return null;\n }\n _resizeDOM() {\n const width = this.width();\n const height = this.height();\n if (this.content) {\n this.content.style.width = width + PX;\n this.content.style.height = height + PX;\n }\n this.bufferCanvas.setSize(width, height);\n this.bufferHitCanvas.setSize(width, height);\n this.children.forEach((layer) => {\n layer.setSize({ width, height });\n layer.draw();\n });\n }\n add(layer, ...rest) {\n if (arguments.length > 1) {\n for (let i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n super.add(layer);\n const length = this.children.length;\n if (length > MAX_LAYERS_NUMBER) {\n Util.warn('The stage has ' +\n length +\n ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\n }\n layer.setSize({ width: this.width(), height: this.height() });\n layer.draw();\n if (Konva.isBrowser) {\n this.content.appendChild(layer.canvas._canvas);\n }\n return this;\n }\n getParent() {\n return null;\n }\n getLayer() {\n return null;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n getLayers() {\n return this.children;\n }\n _bindContentEvents() {\n if (!Konva.isBrowser) {\n return;\n }\n EVENTS.forEach(([event, methodName]) => {\n this.content.addEventListener(event, (evt) => {\n this[methodName](evt);\n }, { passive: false });\n });\n }\n _pointerenter(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerenter, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointerover(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _getTargetShape(evenType) {\n let shape = this[evenType + 'targetShape'];\n if (shape && !shape.getStage()) {\n shape = null;\n }\n return shape;\n }\n _pointerleave(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const targetShape = this._getTargetShape(eventType);\n const eventsEnabled = !(Konva.isDragging() || Konva.isTransforming()) || Konva.hitOnDragEnabled;\n if (targetShape && eventsEnabled) {\n targetShape._fireAndBubble(events.pointerout, { evt: evt });\n targetShape._fireAndBubble(events.pointerleave, { evt: evt });\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this[eventType + 'targetShape'] = null;\n }\n else if (eventsEnabled) {\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this._fire(events.pointerout, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this.pointerPos = null;\n this._pointerPositions = [];\n }\n _pointerdown(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n let triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = this.getIntersection(pos);\n DD.justDragged = false;\n Konva['_' + eventType + 'ListenClick'] = true;\n if (!shape || !shape.isListening()) {\n this[eventType + 'ClickStartShape'] = undefined;\n return;\n }\n if (Konva.capturePointerEventsEnabled) {\n shape.setPointerCapture(pos.id);\n }\n this[eventType + 'ClickStartShape'] = shape;\n shape._fireAndBubble(events.pointerdown, {\n evt: evt,\n pointerId: pos.id,\n });\n triggeredOnShape = true;\n const isTouch = evt.type.indexOf('touch') >= 0;\n if (shape.preventDefault() && evt.cancelable && isTouch) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerdown, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._pointerPositions[0].id,\n });\n }\n }\n _pointermove(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n const isTouchPointer = evt.type.indexOf('touch') >= 0 ||\n evt.pointerType === 'touch';\n if (Konva.isDragging() &&\n DD.node.preventDefault() &&\n evt.cancelable &&\n isTouchPointer) {\n evt.preventDefault();\n }\n this.setPointersPositions(evt);\n const eventsEnabled = !(Konva.isDragging() || Konva.isTransforming()) || Konva.hitOnDragEnabled;\n if (!eventsEnabled) {\n return;\n }\n const processedShapesIds = {};\n let triggeredOnShape = false;\n const targetShape = this._getTargetShape(eventType);\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n const differentTarget = targetShape !== shape;\n if (differentTarget && targetShape) {\n targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n }\n if (shape) {\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n if (differentTarget) {\n shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n this[eventType + 'targetShape'] = shape;\n }\n shape._fireAndBubble(events.pointermove, { ...event });\n }\n else {\n if (targetShape) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n this[eventType + 'targetShape'] = null;\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointermove, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n }\n _pointerup(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const clickStartShape = this[eventType + 'ClickStartShape'];\n const clickEndShape = this[eventType + 'ClickEndShape'];\n const processedShapesIds = {};\n let skipPointerUpTrigger = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n if (shape) {\n shape.releaseCapture(pos.id);\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n let fireDblClick = false;\n if (Konva['_' + eventType + 'InDblClickWindow']) {\n fireDblClick = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n else if (!DD.justDragged) {\n Konva['_' + eventType + 'InDblClickWindow'] = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n this[eventType + 'DblTimeout'] = setTimeout(function () {\n Konva['_' + eventType + 'InDblClickWindow'] = false;\n }, Konva.dblClickWindow);\n if (shape && shape.isListening()) {\n skipPointerUpTrigger = true;\n this[eventType + 'ClickEndShape'] = shape;\n shape._fireAndBubble(events.pointerup, { ...event });\n if (Konva['_' + eventType + 'ListenClick'] &&\n clickStartShape &&\n clickStartShape === shape) {\n shape._fireAndBubble(events.pointerclick, { ...event });\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\n shape._fireAndBubble(events.pointerdblclick, { ...event });\n }\n }\n }\n else {\n this[eventType + 'ClickEndShape'] = null;\n if (!skipPointerUpTrigger) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n skipPointerUpTrigger = true;\n }\n if (Konva['_' + eventType + 'ListenClick']) {\n this._fire(events.pointerclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n if (fireDblClick) {\n this._fire(events.pointerdblclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n }\n });\n if (!skipPointerUpTrigger) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n Konva['_' + eventType + 'ListenClick'] = false;\n if (evt.cancelable && eventType !== 'touch' && eventType !== 'pointer') {\n evt.preventDefault();\n }\n }\n _contextmenu(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(CONTEXTMENU, { evt: evt });\n }\n else {\n this._fire(CONTEXTMENU, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _wheel(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(WHEEL, { evt: evt });\n }\n else {\n this._fire(WHEEL, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointercancel(evt) {\n this.setPointersPositions(evt);\n const shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n }\n PointerEvents.releaseCapture(evt.pointerId);\n }\n _lostpointercapture(evt) {\n PointerEvents.releaseCapture(evt.pointerId);\n }\n setPointersPositions(evt) {\n const contentPosition = this._getContentPosition();\n let x = null, y = null;\n evt = evt ? evt : window.event;\n if (evt.touches !== undefined) {\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n Array.prototype.forEach.call(evt.touches, (touch) => {\n this._pointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n Array.prototype.forEach.call(evt.changedTouches || evt.touches, (touch) => {\n this._changedPointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n }\n else {\n x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\n y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\n this.pointerPos = {\n x: x,\n y: y,\n };\n this._pointerPositions = [{ x, y, id: Util._getFirstPointerId(evt) }];\n this._changedPointerPositions = [\n { x, y, id: Util._getFirstPointerId(evt) },\n ];\n }\n }\n _setPointerPosition(evt) {\n Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\n this.setPointersPositions(evt);\n }\n _getContentPosition() {\n if (!this.content || !this.content.getBoundingClientRect) {\n return {\n top: 0,\n left: 0,\n scaleX: 1,\n scaleY: 1,\n };\n }\n const rect = this.content.getBoundingClientRect();\n return {\n top: rect.top,\n left: rect.left,\n scaleX: rect.width / this.content.clientWidth || 1,\n scaleY: rect.height / this.content.clientHeight || 1,\n };\n }\n _buildDOM() {\n this.bufferCanvas = new SceneCanvas({\n width: this.width(),\n height: this.height(),\n });\n this.bufferHitCanvas = new HitCanvas({\n pixelRatio: 1,\n width: this.width(),\n height: this.height(),\n });\n if (!Konva.isBrowser) {\n return;\n }\n const container = this.container();\n if (!container) {\n throw 'Stage has no container. A container is required.';\n }\n container.innerHTML = '';\n this.content = document.createElement('div');\n this.content.style.position = 'relative';\n this.content.style.userSelect = 'none';\n this.content.className = 'konvajs-content';\n this.content.setAttribute('role', 'presentation');\n container.appendChild(this.content);\n this._resizeDOM();\n }\n cache() {\n Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\n return this;\n }\n clearCache() {\n return this;\n }\n batchDraw() {\n this.getChildren().forEach(function (layer) {\n layer.batchDraw();\n });\n return this;\n }\n}\nStage.prototype.nodeType = STAGE;\n_registerNode(Stage);\nFactory.addGetterSetter(Stage, 'container');\nif (Konva.isBrowser) {\n document.addEventListener('visibilitychange', () => {\n stages.forEach((stage) => {\n stage.batchDraw();\n });\n });\n}\n","import { Konva } from \"./Global.js\";\nimport { Transform, Util } from \"./Util.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Node } from \"./Node.js\";\nimport { getNumberValidator, getNumberOrAutoValidator, getStringValidator, getBooleanValidator, getStringOrGradientValidator, } from \"./Validators.js\";\nimport { _registerNode } from \"./Global.js\";\nimport * as PointerEvents from \"./PointerEvents.js\";\nconst HAS_SHADOW = 'hasShadow';\nconst SHADOW_RGBA = 'shadowRGBA';\nconst patternImage = 'patternImage';\nconst linearGradient = 'linearGradient';\nconst radialGradient = 'radialGradient';\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util.createCanvasElement().getContext('2d');\n return dummyContext;\n}\nexport const shapes = {};\nfunction _fillFunc(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFunc(context) {\n context.stroke();\n}\nfunction _fillFuncHit(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFuncHit(context) {\n context.stroke();\n}\nfunction _clearHasShadowCache() {\n this._clearCache(HAS_SHADOW);\n}\nfunction _clearGetShadowRGBACache() {\n this._clearCache(SHADOW_RGBA);\n}\nfunction _clearFillPatternCache() {\n this._clearCache(patternImage);\n}\nfunction _clearLinearGradientCache() {\n this._clearCache(linearGradient);\n}\nfunction _clearRadialGradientCache() {\n this._clearCache(radialGradient);\n}\nexport class Shape extends Node {\n constructor(config) {\n super(config);\n let key;\n while (true) {\n key = Util.getRandomColor();\n if (key && !(key in shapes)) {\n break;\n }\n }\n this.colorKey = key;\n shapes[key] = this;\n }\n getContext() {\n Util.warn('shape.getContext() method is deprecated. Please do not use it.');\n return this.getLayer().getContext();\n }\n getCanvas() {\n Util.warn('shape.getCanvas() method is deprecated. Please do not use it.');\n return this.getLayer().getCanvas();\n }\n getSceneFunc() {\n return this.attrs.sceneFunc || this['_sceneFunc'];\n }\n getHitFunc() {\n return this.attrs.hitFunc || this['_hitFunc'];\n }\n hasShadow() {\n return this._getCache(HAS_SHADOW, this._hasShadow);\n }\n _hasShadow() {\n return (this.shadowEnabled() &&\n this.shadowOpacity() !== 0 &&\n !!(this.shadowColor() ||\n this.shadowBlur() ||\n this.shadowOffsetX() ||\n this.shadowOffsetY()));\n }\n _getFillPattern() {\n return this._getCache(patternImage, this.__getFillPattern);\n }\n __getFillPattern() {\n if (this.fillPatternImage()) {\n const ctx = getDummyContext();\n const pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\n if (pattern && pattern.setTransform) {\n const tr = new Transform();\n tr.translate(this.fillPatternX(), this.fillPatternY());\n tr.rotate(Konva.getAngle(this.fillPatternRotation()));\n tr.scale(this.fillPatternScaleX(), this.fillPatternScaleY());\n tr.translate(-1 * this.fillPatternOffsetX(), -1 * this.fillPatternOffsetY());\n const m = tr.getMatrix();\n const matrix = typeof DOMMatrix === 'undefined'\n ? {\n a: m[0],\n b: m[1],\n c: m[2],\n d: m[3],\n e: m[4],\n f: m[5],\n }\n : new DOMMatrix(m);\n pattern.setTransform(matrix);\n }\n return pattern;\n }\n }\n _getLinearGradient() {\n return this._getCache(linearGradient, this.__getLinearGradient);\n }\n __getLinearGradient() {\n const colorStops = this.fillLinearGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillLinearGradientStartPoint();\n const end = this.fillLinearGradientEndPoint();\n const grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n _getRadialGradient() {\n return this._getCache(radialGradient, this.__getRadialGradient);\n }\n __getRadialGradient() {\n const colorStops = this.fillRadialGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillRadialGradientStartPoint();\n const end = this.fillRadialGradientEndPoint();\n const grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n getShadowRGBA() {\n return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\n }\n _getShadowRGBA() {\n if (!this.hasShadow()) {\n return;\n }\n const rgba = Util.colorToRGBA(this.shadowColor());\n if (rgba) {\n return ('rgba(' +\n rgba.r +\n ',' +\n rgba.g +\n ',' +\n rgba.b +\n ',' +\n rgba.a * (this.shadowOpacity() || 1) +\n ')');\n }\n }\n hasFill() {\n return this._calculate('hasFill', [\n 'fillEnabled',\n 'fill',\n 'fillPatternImage',\n 'fillLinearGradientColorStops',\n 'fillRadialGradientColorStops',\n ], () => {\n return (this.fillEnabled() &&\n !!(this.fill() ||\n this.fillPatternImage() ||\n this.fillLinearGradientColorStops() ||\n this.fillRadialGradientColorStops()));\n });\n }\n hasStroke() {\n return this._calculate('hasStroke', [\n 'strokeEnabled',\n 'strokeWidth',\n 'stroke',\n 'strokeLinearGradientColorStops',\n ], () => {\n return (this.strokeEnabled() &&\n this.strokeWidth() &&\n !!(this.stroke() || this.strokeLinearGradientColorStops()));\n });\n }\n hasHitStroke() {\n const width = this.hitStrokeWidth();\n if (width === 'auto') {\n return this.hasStroke();\n }\n return this.strokeEnabled() && !!width;\n }\n intersects(point) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const bufferHitCanvas = stage.bufferHitCanvas;\n bufferHitCanvas.getContext().clear();\n this.drawHit(bufferHitCanvas, undefined, true);\n const p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n return p[3] > 0;\n }\n destroy() {\n Node.prototype.destroy.call(this);\n delete shapes[this.colorKey];\n delete this.colorKey;\n return this;\n }\n _useBufferCanvas(forceFill) {\n var _a;\n const perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\n if (!perfectDrawEnabled) {\n return false;\n }\n const hasFill = forceFill || this.hasFill();\n const hasStroke = this.hasStroke();\n const isTransparent = this.getAbsoluteOpacity() !== 1;\n if (hasFill && hasStroke && isTransparent) {\n return true;\n }\n const hasShadow = this.hasShadow();\n const strokeForShadow = this.shadowForStrokeEnabled();\n if (hasFill && hasStroke && hasShadow && strokeForShadow) {\n return true;\n }\n return false;\n }\n setStrokeHitEnabled(val) {\n Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\n if (val) {\n this.hitStrokeWidth('auto');\n }\n else {\n this.hitStrokeWidth(0);\n }\n }\n getStrokeHitEnabled() {\n if (this.hitStrokeWidth() === 0) {\n return false;\n }\n else {\n return true;\n }\n }\n getSelfRect() {\n const size = this.size();\n return {\n x: this._centroid ? -size.width / 2 : 0,\n y: this._centroid ? -size.height / 2 : 0,\n width: size.width,\n height: size.height,\n };\n }\n getClientRect(config = {}) {\n let hasCachedParent = false;\n let parent = this.getParent();\n while (parent) {\n if (parent.isCached()) {\n hasCachedParent = true;\n break;\n }\n parent = parent.getParent();\n }\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo || (hasCachedParent && this.getStage()) || undefined;\n const fillRect = this.getSelfRect();\n const applyStroke = !config.skipStroke && this.hasStroke();\n const strokeWidth = (applyStroke && this.strokeWidth()) || 0;\n const fillAndStrokeWidth = fillRect.width + strokeWidth;\n const fillAndStrokeHeight = fillRect.height + strokeWidth;\n const applyShadow = !config.skipShadow && this.hasShadow();\n const shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\n const shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\n const preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\n const preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\n const blurRadius = (applyShadow && this.shadowBlur()) || 0;\n const width = preWidth + blurRadius * 2;\n const height = preHeight + blurRadius * 2;\n const rect = {\n width: width,\n height: height,\n x: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetX, 0) +\n fillRect.x,\n y: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetY, 0) +\n fillRect.y,\n };\n if (!skipTransform) {\n return this._transformedRect(rect, relativeTo);\n }\n return rect;\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer();\n const canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow();\n let stage;\n const skipBuffer = false;\n const cachingSelf = top === this;\n if (!this.isVisible() && !cachingSelf) {\n return this;\n }\n if (cachedCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n if (this._useBufferCanvas() && !skipBuffer) {\n stage = this.getStage();\n const bc = bufferCanvas || stage.bufferCanvas;\n const bufferContext = bc.getContext();\n bufferContext.clear();\n bufferContext.save();\n bufferContext._applyLineJoin(this);\n bufferContext._applyMiterLimit(this);\n const o = this.getAbsoluteTransform(top).getMatrix();\n bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n drawFunc.call(this, bufferContext, this);\n bufferContext.restore();\n const ratio = bc.pixelRatio;\n if (hasShadow) {\n context._applyShadow(this);\n }\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n context.drawImage(bc._canvas, bc.x || 0, bc.y || 0, bc.width / ratio, bc.height / ratio);\n }\n else {\n context._applyLineJoin(this);\n context._applyMiterLimit(this);\n if (!cachingSelf) {\n const o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n if (hasShadow) {\n context._applyShadow(this);\n }\n drawFunc.call(this, context, this);\n }\n context.restore();\n return this;\n }\n drawHit(can, top, skipDragCheck = false) {\n if (!this.shouldDrawHit(top, skipDragCheck)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (!this.colorKey) {\n Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()');\n }\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n context._applyLineJoin(this);\n context._applyMiterLimit(this);\n const selfCache = this === top;\n if (!selfCache) {\n const o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n }\n drawFunc.call(this, context, this);\n context.restore();\n return this;\n }\n drawHitFromCache(alphaThreshold = 0) {\n const cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight();\n hitContext.clear();\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n try {\n const hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n const hitData = hitImageData.data;\n const len = hitData.length;\n const rgbColorKey = Util._hexToRgb(this.colorKey);\n for (let i = 0; i < len; i += 4) {\n const alpha = hitData[i + 3];\n if (alpha > alphaThreshold) {\n hitData[i] = rgbColorKey.r;\n hitData[i + 1] = rgbColorKey.g;\n hitData[i + 2] = rgbColorKey.b;\n hitData[i + 3] = 255;\n }\n else {\n hitData[i + 3] = 0;\n }\n }\n hitContext.putImageData(hitImageData, 0, 0);\n }\n catch (e) {\n Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\n }\n return this;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n}\nShape.prototype._fillFunc = _fillFunc;\nShape.prototype._strokeFunc = _strokeFunc;\nShape.prototype._fillFuncHit = _fillFuncHit;\nShape.prototype._strokeFuncHit = _strokeFuncHit;\nShape.prototype._centroid = false;\nShape.prototype.nodeType = 'Shape';\n_registerNode(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory.addGetterSetter(Shape, 'stroke', undefined, getStringOrGradientValidator());\nFactory.addGetterSetter(Shape, 'strokeWidth', 2, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', getNumberOrAutoValidator());\nFactory.addGetterSetter(Shape, 'strokeHitEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'perfectDrawEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'lineJoin');\nFactory.addGetterSetter(Shape, 'lineCap');\nFactory.addGetterSetter(Shape, 'miterLimit');\nFactory.addGetterSetter(Shape, 'sceneFunc');\nFactory.addGetterSetter(Shape, 'hitFunc');\nFactory.addGetterSetter(Shape, 'dash');\nFactory.addGetterSetter(Shape, 'dashOffset', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowColor', undefined, getStringValidator());\nFactory.addGetterSetter(Shape, 'shadowBlur', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowOpacity', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'shadowOffsetX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowOffsetY', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternImage');\nFactory.addGetterSetter(Shape, 'fill', undefined, getStringOrGradientValidator());\nFactory.addGetterSetter(Shape, 'fillPatternX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternY', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'fillPatternScaleX', 1, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternScaleY', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory.addGetterSetter(Shape, 'fillRule', undefined, getStringValidator());\nFactory.backCompat(Shape, {\n dashArray: 'dash',\n getDashArray: 'getDash',\n setDashArray: 'getDash',\n drawFunc: 'sceneFunc',\n getDrawFunc: 'getSceneFunc',\n setDrawFunc: 'setSceneFunc',\n drawHitFunc: 'hitFunc',\n getDrawHitFunc: 'getHitFunc',\n setDrawHitFunc: 'setHitFunc',\n});\n","import { Util } from \"./Util.js\";\nimport { Container } from \"./Container.js\";\nimport { Node } from \"./Node.js\";\nimport { Factory } from \"./Factory.js\";\nimport { SceneCanvas, HitCanvas } from \"./Canvas.js\";\nimport { getBooleanValidator } from \"./Validators.js\";\nimport { shapes } from \"./Shape.js\";\nimport { _registerNode } from \"./Global.js\";\nconst HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n { x: 0, y: 0 },\n { x: -1, y: -1 },\n { x: 1, y: -1 },\n { x: 1, y: 1 },\n { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nexport class Layer extends Container {\n constructor(config) {\n super(config);\n this.canvas = new SceneCanvas();\n this.hitCanvas = new HitCanvas({\n pixelRatio: 1,\n });\n this._waitingForDraw = false;\n this.on('visibleChange.konva', this._checkVisibility);\n this._checkVisibility();\n this.on('imageSmoothingEnabledChange.konva', this._setSmoothEnabled);\n this._setSmoothEnabled();\n }\n createPNGStream() {\n const c = this.canvas._canvas;\n return c.createPNGStream();\n }\n getCanvas() {\n return this.canvas;\n }\n getNativeCanvasElement() {\n return this.canvas._canvas;\n }\n getHitCanvas() {\n return this.hitCanvas;\n }\n getContext() {\n return this.getCanvas().getContext();\n }\n clear(bounds) {\n this.getContext().clear(bounds);\n this.getHitCanvas().getContext().clear(bounds);\n return this;\n }\n setZIndex(index) {\n super.setZIndex(index);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n if (index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n }\n return this;\n }\n moveToTop() {\n Node.prototype.moveToTop.call(this);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveUp() {\n const moved = Node.prototype.moveUp.call(this);\n if (!moved) {\n return false;\n }\n const stage = this.getStage();\n if (!stage || !stage.content) {\n return false;\n }\n stage.content.removeChild(this.getNativeCanvasElement());\n if (this.index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[this.index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveDown() {\n if (Node.prototype.moveDown.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[this.index + 1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (Node.prototype.moveToBottom.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n getLayer() {\n return this;\n }\n remove() {\n const _canvas = this.getNativeCanvasElement();\n Node.prototype.remove.call(this);\n if (_canvas && _canvas.parentNode && Util._isInDocument(_canvas)) {\n _canvas.parentNode.removeChild(_canvas);\n }\n return this;\n }\n getStage() {\n return this.parent;\n }\n setSize({ width, height }) {\n this.canvas.setSize(width, height);\n this.hitCanvas.setSize(width, height);\n this._setSmoothEnabled();\n return this;\n }\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util.throw('You may only add groups and shapes to a layer.');\n }\n }\n _toKonvaCanvas(config) {\n config = { ...config };\n config.width = config.width || this.getWidth();\n config.height = config.height || this.getHeight();\n config.x = config.x !== undefined ? config.x : this.x();\n config.y = config.y !== undefined ? config.y : this.y();\n return Node.prototype._toKonvaCanvas.call(this, config);\n }\n _checkVisibility() {\n const visible = this.visible();\n if (visible) {\n this.canvas._canvas.style.display = 'block';\n }\n else {\n this.canvas._canvas.style.display = 'none';\n }\n }\n _setSmoothEnabled() {\n this.getContext()._context.imageSmoothingEnabled =\n this.imageSmoothingEnabled();\n }\n getWidth() {\n if (this.parent) {\n return this.parent.width();\n }\n }\n setWidth() {\n Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\n }\n getHeight() {\n if (this.parent) {\n return this.parent.height();\n }\n }\n setHeight() {\n Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n }\n batchDraw() {\n if (!this._waitingForDraw) {\n this._waitingForDraw = true;\n Util.requestAnimFrame(() => {\n this.draw();\n this._waitingForDraw = false;\n });\n }\n return this;\n }\n getIntersection(pos) {\n if (!this.isListening() || !this.isVisible()) {\n return null;\n }\n let spiralSearchDistance = 1;\n let continueSearch = false;\n while (true) {\n for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n const intersectionOffset = INTERSECTION_OFFSETS[i];\n const obj = this._getIntersection({\n x: pos.x + intersectionOffset.x * spiralSearchDistance,\n y: pos.y + intersectionOffset.y * spiralSearchDistance,\n });\n const shape = obj.shape;\n if (shape) {\n return shape;\n }\n continueSearch = !!obj.antialiased;\n if (!obj.antialiased) {\n break;\n }\n }\n if (continueSearch) {\n spiralSearchDistance += 1;\n }\n else {\n return null;\n }\n }\n }\n _getIntersection(pos) {\n const ratio = this.hitCanvas.pixelRatio;\n const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n const p3 = p[3];\n if (p3 === 255) {\n const colorKey = Util._rgbToHex(p[0], p[1], p[2]);\n const shape = shapes[HASH + colorKey];\n if (shape) {\n return {\n shape: shape,\n };\n }\n return {\n antialiased: true,\n };\n }\n else if (p3 > 0) {\n return {\n antialiased: true,\n };\n }\n return {};\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\n this._fire(BEFORE_DRAW, {\n node: this,\n });\n if (this.clearBeforeDraw()) {\n canvas.getContext().clear();\n }\n Container.prototype.drawScene.call(this, canvas, top, bufferCanvas);\n this._fire(DRAW, {\n node: this,\n });\n return this;\n }\n drawHit(can, top) {\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n if (layer && layer.clearBeforeDraw()) {\n layer.getHitCanvas().getContext().clear();\n }\n Container.prototype.drawHit.call(this, canvas, top);\n return this;\n }\n enableHitGraph() {\n this.hitGraphEnabled(true);\n return this;\n }\n disableHitGraph() {\n this.hitGraphEnabled(false);\n return this;\n }\n setHitGraphEnabled(val) {\n Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n this.listening(val);\n }\n getHitGraphEnabled(val) {\n Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n return this.listening();\n }\n toggleHitCanvas() {\n if (!this.parent || !this.parent['content']) {\n return;\n }\n const parent = this.parent;\n const added = !!this.hitCanvas._canvas.parentNode;\n if (added) {\n parent.content.removeChild(this.hitCanvas._canvas);\n }\n else {\n parent.content.appendChild(this.hitCanvas._canvas);\n }\n }\n destroy() {\n Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n return super.destroy();\n }\n}\nLayer.prototype.nodeType = 'Layer';\n_registerNode(Layer);\nFactory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory.addGetterSetter(Layer, 'hitGraphEnabled', true, getBooleanValidator());\n","import { Util } from \"./Util.js\";\nimport { Layer } from \"./Layer.js\";\nimport { _registerNode } from \"./Global.js\";\nexport class FastLayer extends Layer {\n constructor(attrs) {\n super(attrs);\n this.listening(false);\n Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n }\n}\nFastLayer.prototype.nodeType = 'FastLayer';\n_registerNode(FastLayer);\n","import { Util } from \"./Util.js\";\nimport { Container } from \"./Container.js\";\nimport { _registerNode } from \"./Global.js\";\nexport class Group extends Container {\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util.throw('You may only add groups and shapes to groups.');\n }\n }\n}\nGroup.prototype.nodeType = 'Group';\n_registerNode(Group);\n","import { glob } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nconst now = (function () {\n if (glob.performance && glob.performance.now) {\n return function () {\n return glob.performance.now();\n };\n }\n return function () {\n return new Date().getTime();\n };\n})();\nexport class Animation {\n constructor(func, layers) {\n this.id = Animation.animIdCounter++;\n this.frame = {\n time: 0,\n timeDiff: 0,\n lastTime: now(),\n frameRate: 0,\n };\n this.func = func;\n this.setLayers(layers);\n }\n setLayers(layers) {\n let lays = [];\n if (layers) {\n lays = Array.isArray(layers) ? layers : [layers];\n }\n this.layers = lays;\n return this;\n }\n getLayers() {\n return this.layers;\n }\n addLayer(layer) {\n const layers = this.layers;\n const len = layers.length;\n for (let n = 0; n < len; n++) {\n if (layers[n]._id === layer._id) {\n return false;\n }\n }\n this.layers.push(layer);\n return true;\n }\n isRunning() {\n const a = Animation;\n const animations = a.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === this.id) {\n return true;\n }\n }\n return false;\n }\n start() {\n this.stop();\n this.frame.timeDiff = 0;\n this.frame.lastTime = now();\n Animation._addAnimation(this);\n return this;\n }\n stop() {\n Animation._removeAnimation(this);\n return this;\n }\n _updateFrameObject(time) {\n this.frame.timeDiff = time - this.frame.lastTime;\n this.frame.lastTime = time;\n this.frame.time += this.frame.timeDiff;\n this.frame.frameRate = 1000 / this.frame.timeDiff;\n }\n static _addAnimation(anim) {\n this.animations.push(anim);\n this._handleAnimation();\n }\n static _removeAnimation(anim) {\n const id = anim.id;\n const animations = this.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === id) {\n this.animations.splice(n, 1);\n break;\n }\n }\n }\n static _runFrames() {\n const layerHash = {};\n const animations = this.animations;\n for (let n = 0; n < animations.length; n++) {\n const anim = animations[n];\n const layers = anim.layers;\n const func = anim.func;\n anim._updateFrameObject(now());\n const layersLen = layers.length;\n let needRedraw;\n if (func) {\n needRedraw = func.call(anim, anim.frame) !== false;\n }\n else {\n needRedraw = true;\n }\n if (!needRedraw) {\n continue;\n }\n for (let i = 0; i < layersLen; i++) {\n const layer = layers[i];\n if (layer._id !== undefined) {\n layerHash[layer._id] = layer;\n }\n }\n }\n for (const key in layerHash) {\n if (!layerHash.hasOwnProperty(key)) {\n continue;\n }\n layerHash[key].batchDraw();\n }\n }\n static _animationLoop() {\n const Anim = Animation;\n if (Anim.animations.length) {\n Anim._runFrames();\n Util.requestAnimFrame(Anim._animationLoop);\n }\n else {\n Anim.animRunning = false;\n }\n }\n static _handleAnimation() {\n if (!this.animRunning) {\n this.animRunning = true;\n Util.requestAnimFrame(this._animationLoop);\n }\n }\n}\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n","import { Util } from \"./Util.js\";\nimport { Animation } from \"./Animation.js\";\nimport { Node } from \"./Node.js\";\nimport { Konva } from \"./Global.js\";\nconst blacklist = {\n node: 1,\n duration: 1,\n easing: 1,\n onFinish: 1,\n yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, colorAttrs = ['fill', 'stroke', 'shadowColor'];\nlet idCounter = 0;\nclass TweenEngine {\n constructor(prop, propFunc, func, begin, finish, duration, yoyo) {\n this.prop = prop;\n this.propFunc = propFunc;\n this.begin = begin;\n this._pos = begin;\n this.duration = duration;\n this._change = 0;\n this.prevPos = 0;\n this.yoyo = yoyo;\n this._time = 0;\n this._position = 0;\n this._startTime = 0;\n this._finish = 0;\n this.func = func;\n this._change = finish - this.begin;\n this.pause();\n }\n fire(str) {\n const handler = this[str];\n if (handler) {\n handler();\n }\n }\n setTime(t) {\n if (t > this.duration) {\n if (this.yoyo) {\n this._time = this.duration;\n this.reverse();\n }\n else {\n this.finish();\n }\n }\n else if (t < 0) {\n if (this.yoyo) {\n this._time = 0;\n this.play();\n }\n else {\n this.reset();\n }\n }\n else {\n this._time = t;\n this.update();\n }\n }\n getTime() {\n return this._time;\n }\n setPosition(p) {\n this.prevPos = this._pos;\n this.propFunc(p);\n this._pos = p;\n }\n getPosition(t) {\n if (t === undefined) {\n t = this._time;\n }\n return this.func(t, this.begin, this._change, this.duration);\n }\n play() {\n this.state = PLAYING;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onPlay');\n }\n reverse() {\n this.state = REVERSING;\n this._time = this.duration - this._time;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onReverse');\n }\n seek(t) {\n this.pause();\n this._time = t;\n this.update();\n this.fire('onSeek');\n }\n reset() {\n this.pause();\n this._time = 0;\n this.update();\n this.fire('onReset');\n }\n finish() {\n this.pause();\n this._time = this.duration;\n this.update();\n this.fire('onFinish');\n }\n update() {\n this.setPosition(this.getPosition(this._time));\n this.fire('onUpdate');\n }\n onEnterFrame() {\n const t = this.getTimer() - this._startTime;\n if (this.state === PLAYING) {\n this.setTime(t);\n }\n else if (this.state === REVERSING) {\n this.setTime(this.duration - t);\n }\n }\n pause() {\n this.state = PAUSED;\n this.fire('onPause');\n }\n getTimer() {\n return new Date().getTime();\n }\n}\nexport class Tween {\n constructor(config) {\n const that = this, node = config.node, nodeId = node._id, easing = config.easing || Easings.Linear, yoyo = !!config.yoyo;\n let duration, key;\n if (typeof config.duration === 'undefined') {\n duration = 0.3;\n }\n else if (config.duration === 0) {\n duration = 0.001;\n }\n else {\n duration = config.duration;\n }\n this.node = node;\n this._id = idCounter++;\n const layers = node.getLayer() ||\n (node instanceof Konva['Stage'] ? node.getLayers() : null);\n if (!layers) {\n Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n }\n this.anim = new Animation(function () {\n that.tween.onEnterFrame();\n }, layers);\n this.tween = new TweenEngine(key, function (i) {\n that._tweenFunc(i);\n }, easing, 0, 1, duration * 1000, yoyo);\n this._addListeners();\n if (!Tween.attrs[nodeId]) {\n Tween.attrs[nodeId] = {};\n }\n if (!Tween.attrs[nodeId][this._id]) {\n Tween.attrs[nodeId][this._id] = {};\n }\n if (!Tween.tweens[nodeId]) {\n Tween.tweens[nodeId] = {};\n }\n for (key in config) {\n if (blacklist[key] === undefined) {\n this._addAttr(key, config[key]);\n }\n }\n this.reset();\n this.onFinish = config.onFinish;\n this.onReset = config.onReset;\n this.onUpdate = config.onUpdate;\n }\n _addAttr(key, end) {\n const node = this.node, nodeId = node._id;\n let diff, len, trueEnd, trueStart, endRGBA;\n const tweenId = Tween.tweens[nodeId][key];\n if (tweenId) {\n delete Tween.attrs[nodeId][tweenId][key];\n }\n let start = node.getAttr(key);\n if (Util._isArray(end)) {\n diff = [];\n len = Math.max(end.length, start.length);\n if (key === 'points' && end.length !== start.length) {\n if (end.length > start.length) {\n trueStart = start;\n start = Util._prepareArrayForTween(start, end, node.closed());\n }\n else {\n trueEnd = end;\n end = Util._prepareArrayForTween(end, start, node.closed());\n }\n }\n if (key.indexOf('fill') === 0) {\n for (let n = 0; n < len; n++) {\n if (n % 2 === 0) {\n diff.push(end[n] - start[n]);\n }\n else {\n const startRGBA = Util.colorToRGBA(start[n]);\n endRGBA = Util.colorToRGBA(end[n]);\n start[n] = startRGBA;\n diff.push({\n r: endRGBA.r - startRGBA.r,\n g: endRGBA.g - startRGBA.g,\n b: endRGBA.b - startRGBA.b,\n a: endRGBA.a - startRGBA.a,\n });\n }\n }\n }\n else {\n for (let n = 0; n < len; n++) {\n diff.push(end[n] - start[n]);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n start = Util.colorToRGBA(start);\n endRGBA = Util.colorToRGBA(end);\n diff = {\n r: endRGBA.r - start.r,\n g: endRGBA.g - start.g,\n b: endRGBA.b - start.b,\n a: endRGBA.a - start.a,\n };\n }\n else {\n diff = end - start;\n }\n Tween.attrs[nodeId][this._id][key] = {\n start: start,\n diff: diff,\n end: end,\n trueEnd: trueEnd,\n trueStart: trueStart,\n };\n Tween.tweens[nodeId][key] = this._id;\n }\n _tweenFunc(i) {\n const node = this.node, attrs = Tween.attrs[node._id][this._id];\n let key, attr, start, diff, newVal, n, len, end;\n for (key in attrs) {\n attr = attrs[key];\n start = attr.start;\n diff = attr.diff;\n end = attr.end;\n if (Util._isArray(start)) {\n newVal = [];\n len = Math.max(start.length, end.length);\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n else {\n newVal.push('rgba(' +\n Math.round(start[n].r + diff[n].r * i) +\n ',' +\n Math.round(start[n].g + diff[n].g * i) +\n ',' +\n Math.round(start[n].b + diff[n].b * i) +\n ',' +\n (start[n].a + diff[n].a * i) +\n ')');\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n newVal =\n 'rgba(' +\n Math.round(start.r + diff.r * i) +\n ',' +\n Math.round(start.g + diff.g * i) +\n ',' +\n Math.round(start.b + diff.b * i) +\n ',' +\n (start.a + diff.a * i) +\n ')';\n }\n else {\n newVal = start + diff * i;\n }\n node.setAttr(key, newVal);\n }\n }\n _addListeners() {\n this.tween.onPlay = () => {\n this.anim.start();\n };\n this.tween.onReverse = () => {\n this.anim.start();\n };\n this.tween.onPause = () => {\n this.anim.stop();\n };\n this.tween.onFinish = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueEnd) {\n node.setAttr('points', attrs.points.trueEnd);\n }\n if (this.onFinish) {\n this.onFinish.call(this);\n }\n };\n this.tween.onReset = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueStart) {\n node.points(attrs.points.trueStart);\n }\n if (this.onReset) {\n this.onReset();\n }\n };\n this.tween.onUpdate = () => {\n if (this.onUpdate) {\n this.onUpdate.call(this);\n }\n };\n }\n play() {\n this.tween.play();\n return this;\n }\n reverse() {\n this.tween.reverse();\n return this;\n }\n reset() {\n this.tween.reset();\n return this;\n }\n seek(t) {\n this.tween.seek(t * 1000);\n return this;\n }\n pause() {\n this.tween.pause();\n return this;\n }\n finish() {\n this.tween.finish();\n return this;\n }\n destroy() {\n const nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId];\n this.pause();\n if (this.anim) {\n this.anim.stop();\n }\n for (const key in attrs) {\n delete Tween.tweens[nodeId][key];\n }\n delete Tween.attrs[nodeId][thisId];\n if (Tween.tweens[nodeId]) {\n if (Object.keys(Tween.tweens[nodeId]).length === 0) {\n delete Tween.tweens[nodeId];\n }\n if (Object.keys(Tween.attrs[nodeId]).length === 0) {\n delete Tween.attrs[nodeId];\n }\n }\n }\n}\nTween.attrs = {};\nTween.tweens = {};\nNode.prototype.to = function (params) {\n const onFinish = params.onFinish;\n params.node = this;\n params.onFinish = function () {\n this.destroy();\n if (onFinish) {\n onFinish();\n }\n };\n const tween = new Tween(params);\n tween.play();\n};\nexport const Easings = {\n BackEaseIn(t, b, c, d) {\n const s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n BackEaseOut(t, b, c, d) {\n const s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n BackEaseInOut(t, b, c, d) {\n let s = 1.70158;\n if ((t /= d / 2) < 1) {\n return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n }\n return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n },\n ElasticEaseIn(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (-(a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\n },\n ElasticEaseOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\n c +\n b);\n },\n ElasticEaseInOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n if (t < 1) {\n return (-0.5 *\n (a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\n b);\n }\n return (a *\n Math.pow(2, -10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\n 0.5 +\n c +\n b);\n },\n BounceEaseOut(t, b, c, d) {\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n }\n else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n BounceEaseIn(t, b, c, d) {\n return c - Easings.BounceEaseOut(d - t, 0, c, d) + b;\n },\n BounceEaseInOut(t, b, c, d) {\n if (t < d / 2) {\n return Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n }\n else {\n return Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n },\n EaseIn(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n EaseOut(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n EaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t + b;\n }\n return (-c / 2) * (--t * (t - 2) - 1) + b;\n },\n StrongEaseIn(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n },\n StrongEaseOut(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n StrongEaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t * t * t * t + b;\n }\n return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\n },\n Linear(t, b, c, d) {\n return (c * t) / d + b;\n },\n};\n","import { Konva as Global } from \"./Global.js\";\nimport { Util, Transform } from \"./Util.js\";\nimport { Node } from \"./Node.js\";\nimport { Container } from \"./Container.js\";\nimport { Stage, stages } from \"./Stage.js\";\nimport { Layer } from \"./Layer.js\";\nimport { FastLayer } from \"./FastLayer.js\";\nimport { Group } from \"./Group.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { Shape, shapes } from \"./Shape.js\";\nimport { Animation } from \"./Animation.js\";\nimport { Tween, Easings } from \"./Tween.js\";\nimport { Context } from \"./Context.js\";\nimport { Canvas } from \"./Canvas.js\";\nexport const Konva = Util._assign(Global, {\n Util,\n Transform,\n Node,\n Container,\n Stage,\n stages,\n Layer,\n FastLayer,\n Group,\n DD,\n Shape,\n shapes,\n Animation,\n Tween,\n Easings,\n Context,\n Canvas,\n});\nexport default Konva;\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator, getBooleanValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Arc extends Shape {\n _sceneFunc(context) {\n const angle = Konva.getAngle(this.angle()), clockwise = this.clockwise();\n context.beginPath();\n context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n getSelfRect() {\n const innerRadius = this.innerRadius();\n const outerRadius = this.outerRadius();\n const clockwise = this.clockwise();\n const angle = Konva.getAngle(clockwise ? 360 - this.angle() : this.angle());\n const boundLeftRatio = Math.cos(Math.min(angle, Math.PI));\n const boundRightRatio = 1;\n const boundTopRatio = Math.sin(Math.min(Math.max(Math.PI, angle), (3 * Math.PI) / 2));\n const boundBottomRatio = Math.sin(Math.min(angle, Math.PI / 2));\n const boundLeft = boundLeftRatio * (boundLeftRatio > 0 ? innerRadius : outerRadius);\n const boundRight = boundRightRatio * (boundRightRatio > 0 ? outerRadius : innerRadius);\n const boundTop = boundTopRatio * (boundTopRatio > 0 ? innerRadius : outerRadius);\n const boundBottom = boundBottomRatio * (boundBottomRatio > 0 ? outerRadius : innerRadius);\n return {\n x: boundLeft,\n y: clockwise ? -1 * boundBottom : boundTop,\n width: boundRight - boundLeft,\n height: boundBottom - boundTop,\n };\n }\n}\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = [\n 'innerRadius',\n 'outerRadius',\n 'angle',\n 'clockwise',\n];\n_registerNode(Arc);\nFactory.addGetterSetter(Arc, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'outerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'angle', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'clockwise', false, getBooleanValidator());\n","import { Factory } from \"../Factory.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberArrayValidator, getNumberValidator } from \"../Validators.js\";\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n const d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n const len = p.length, allPoints = [];\n for (let n = 2; n < len - 2; n += 2) {\n const cp = getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n if (isNaN(cp[0])) {\n continue;\n }\n allPoints.push(cp[0]);\n allPoints.push(cp[1]);\n allPoints.push(p[n]);\n allPoints.push(p[n + 1]);\n allPoints.push(cp[2]);\n allPoints.push(cp[3]);\n }\n return allPoints;\n}\nexport class Line extends Shape {\n constructor(config) {\n super(config);\n this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n this._clearCache('tensionPoints');\n });\n }\n _sceneFunc(context) {\n const points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier();\n if (!length) {\n return;\n }\n let n = 0;\n context.beginPath();\n context.moveTo(points[0], points[1]);\n if (tension !== 0 && length > 4) {\n const tp = this.getTensionPoints();\n const len = tp.length;\n n = closed ? 0 : 4;\n if (!closed) {\n context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n }\n while (n < len - 2) {\n context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n }\n if (!closed) {\n context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n }\n }\n else if (bezier) {\n n = 2;\n while (n < length) {\n context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n }\n }\n else {\n for (n = 2; n < length; n += 2) {\n context.lineTo(points[n], points[n + 1]);\n }\n }\n if (closed) {\n context.closePath();\n context.fillStrokeShape(this);\n }\n else {\n context.strokeShape(this);\n }\n }\n getTensionPoints() {\n return this._getCache('tensionPoints', this._getTensionPoints);\n }\n _getTensionPoints() {\n if (this.closed()) {\n return this._getTensionPointsClosed();\n }\n else {\n return expandPoints(this.points(), this.tension());\n }\n }\n _getTensionPointsClosed() {\n const p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n .concat(middle)\n .concat([\n lastControlPoints[0],\n lastControlPoints[1],\n p[len - 2],\n p[len - 1],\n lastControlPoints[2],\n lastControlPoints[3],\n firstControlPoints[0],\n firstControlPoints[1],\n p[0],\n p[1],\n ]);\n return tp;\n }\n getWidth() {\n return this.getSelfRect().width;\n }\n getHeight() {\n return this.getSelfRect().height;\n }\n getSelfRect() {\n let points = this.points();\n if (points.length < 4) {\n return {\n x: points[0] || 0,\n y: points[1] || 0,\n width: 0,\n height: 0,\n };\n }\n if (this.tension() !== 0) {\n points = [\n points[0],\n points[1],\n ...this._getTensionPoints(),\n points[points.length - 2],\n points[points.length - 1],\n ];\n }\n else {\n points = this.points();\n }\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n}\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n_registerNode(Line);\nFactory.addGetterSetter(Line, 'closed', false);\nFactory.addGetterSetter(Line, 'bezier', false);\nFactory.addGetterSetter(Line, 'tension', 0, getNumberValidator());\nFactory.addGetterSetter(Line, 'points', [], getNumberArrayValidator());\n","export const tValues = [\n [],\n [],\n [\n -0.5773502691896257645091487805019574556476,\n 0.5773502691896257645091487805019574556476,\n ],\n [\n 0, -0.7745966692414833770358530799564799221665,\n 0.7745966692414833770358530799564799221665,\n ],\n [\n -0.3399810435848562648026657591032446872005,\n 0.3399810435848562648026657591032446872005,\n -0.8611363115940525752239464888928095050957,\n 0.8611363115940525752239464888928095050957,\n ],\n [\n 0, -0.5384693101056830910363144207002088049672,\n 0.5384693101056830910363144207002088049672,\n -0.9061798459386639927976268782993929651256,\n 0.9061798459386639927976268782993929651256,\n ],\n [\n 0.6612093864662645136613995950199053470064,\n -0.6612093864662645136613995950199053470064,\n -0.2386191860831969086305017216807119354186,\n 0.2386191860831969086305017216807119354186,\n -0.9324695142031520278123015544939946091347,\n 0.9324695142031520278123015544939946091347,\n ],\n [\n 0, 0.4058451513773971669066064120769614633473,\n -0.4058451513773971669066064120769614633473,\n -0.7415311855993944398638647732807884070741,\n 0.7415311855993944398638647732807884070741,\n -0.9491079123427585245261896840478512624007,\n 0.9491079123427585245261896840478512624007,\n ],\n [\n -0.1834346424956498049394761423601839806667,\n 0.1834346424956498049394761423601839806667,\n -0.5255324099163289858177390491892463490419,\n 0.5255324099163289858177390491892463490419,\n -0.7966664774136267395915539364758304368371,\n 0.7966664774136267395915539364758304368371,\n -0.9602898564975362316835608685694729904282,\n 0.9602898564975362316835608685694729904282,\n ],\n [\n 0, -0.8360311073266357942994297880697348765441,\n 0.8360311073266357942994297880697348765441,\n -0.9681602395076260898355762029036728700494,\n 0.9681602395076260898355762029036728700494,\n -0.3242534234038089290385380146433366085719,\n 0.3242534234038089290385380146433366085719,\n -0.6133714327005903973087020393414741847857,\n 0.6133714327005903973087020393414741847857,\n ],\n [\n -0.1488743389816312108848260011297199846175,\n 0.1488743389816312108848260011297199846175,\n -0.4333953941292471907992659431657841622,\n 0.4333953941292471907992659431657841622,\n -0.6794095682990244062343273651148735757692,\n 0.6794095682990244062343273651148735757692,\n -0.8650633666889845107320966884234930485275,\n 0.8650633666889845107320966884234930485275,\n -0.9739065285171717200779640120844520534282,\n 0.9739065285171717200779640120844520534282,\n ],\n [\n 0, -0.2695431559523449723315319854008615246796,\n 0.2695431559523449723315319854008615246796,\n -0.5190961292068118159257256694586095544802,\n 0.5190961292068118159257256694586095544802,\n -0.7301520055740493240934162520311534580496,\n 0.7301520055740493240934162520311534580496,\n -0.8870625997680952990751577693039272666316,\n 0.8870625997680952990751577693039272666316,\n -0.9782286581460569928039380011228573907714,\n 0.9782286581460569928039380011228573907714,\n ],\n [\n -0.1252334085114689154724413694638531299833,\n 0.1252334085114689154724413694638531299833,\n -0.3678314989981801937526915366437175612563,\n 0.3678314989981801937526915366437175612563,\n -0.587317954286617447296702418940534280369,\n 0.587317954286617447296702418940534280369,\n -0.7699026741943046870368938332128180759849,\n 0.7699026741943046870368938332128180759849,\n -0.9041172563704748566784658661190961925375,\n 0.9041172563704748566784658661190961925375,\n -0.9815606342467192506905490901492808229601,\n 0.9815606342467192506905490901492808229601,\n ],\n [\n 0, -0.2304583159551347940655281210979888352115,\n 0.2304583159551347940655281210979888352115,\n -0.4484927510364468528779128521276398678019,\n 0.4484927510364468528779128521276398678019,\n -0.6423493394403402206439846069955156500716,\n 0.6423493394403402206439846069955156500716,\n -0.8015780907333099127942064895828598903056,\n 0.8015780907333099127942064895828598903056,\n -0.9175983992229779652065478365007195123904,\n 0.9175983992229779652065478365007195123904,\n -0.9841830547185881494728294488071096110649,\n 0.9841830547185881494728294488071096110649,\n ],\n [\n -0.1080549487073436620662446502198347476119,\n 0.1080549487073436620662446502198347476119,\n -0.3191123689278897604356718241684754668342,\n 0.3191123689278897604356718241684754668342,\n -0.5152486363581540919652907185511886623088,\n 0.5152486363581540919652907185511886623088,\n -0.6872929048116854701480198030193341375384,\n 0.6872929048116854701480198030193341375384,\n -0.8272013150697649931897947426503949610397,\n 0.8272013150697649931897947426503949610397,\n -0.928434883663573517336391139377874264477,\n 0.928434883663573517336391139377874264477,\n -0.986283808696812338841597266704052801676,\n 0.986283808696812338841597266704052801676,\n ],\n [\n 0, -0.2011940939974345223006283033945962078128,\n 0.2011940939974345223006283033945962078128,\n -0.3941513470775633698972073709810454683627,\n 0.3941513470775633698972073709810454683627,\n -0.5709721726085388475372267372539106412383,\n 0.5709721726085388475372267372539106412383,\n -0.7244177313601700474161860546139380096308,\n 0.7244177313601700474161860546139380096308,\n -0.8482065834104272162006483207742168513662,\n 0.8482065834104272162006483207742168513662,\n -0.9372733924007059043077589477102094712439,\n 0.9372733924007059043077589477102094712439,\n -0.9879925180204854284895657185866125811469,\n 0.9879925180204854284895657185866125811469,\n ],\n [\n -0.0950125098376374401853193354249580631303,\n 0.0950125098376374401853193354249580631303,\n -0.281603550779258913230460501460496106486,\n 0.281603550779258913230460501460496106486,\n -0.45801677765722738634241944298357757354,\n 0.45801677765722738634241944298357757354,\n -0.6178762444026437484466717640487910189918,\n 0.6178762444026437484466717640487910189918,\n -0.7554044083550030338951011948474422683538,\n 0.7554044083550030338951011948474422683538,\n -0.8656312023878317438804678977123931323873,\n 0.8656312023878317438804678977123931323873,\n -0.9445750230732325760779884155346083450911,\n 0.9445750230732325760779884155346083450911,\n -0.9894009349916499325961541734503326274262,\n 0.9894009349916499325961541734503326274262,\n ],\n [\n 0, -0.1784841814958478558506774936540655574754,\n 0.1784841814958478558506774936540655574754,\n -0.3512317634538763152971855170953460050405,\n 0.3512317634538763152971855170953460050405,\n -0.5126905370864769678862465686295518745829,\n 0.5126905370864769678862465686295518745829,\n -0.6576711592166907658503022166430023351478,\n 0.6576711592166907658503022166430023351478,\n -0.7815140038968014069252300555204760502239,\n 0.7815140038968014069252300555204760502239,\n -0.8802391537269859021229556944881556926234,\n 0.8802391537269859021229556944881556926234,\n -0.9506755217687677612227169578958030214433,\n 0.9506755217687677612227169578958030214433,\n -0.9905754753144173356754340199406652765077,\n 0.9905754753144173356754340199406652765077,\n ],\n [\n -0.0847750130417353012422618529357838117333,\n 0.0847750130417353012422618529357838117333,\n -0.2518862256915055095889728548779112301628,\n 0.2518862256915055095889728548779112301628,\n -0.4117511614628426460359317938330516370789,\n 0.4117511614628426460359317938330516370789,\n -0.5597708310739475346078715485253291369276,\n 0.5597708310739475346078715485253291369276,\n -0.6916870430603532078748910812888483894522,\n 0.6916870430603532078748910812888483894522,\n -0.8037049589725231156824174550145907971032,\n 0.8037049589725231156824174550145907971032,\n -0.8926024664975557392060605911271455154078,\n 0.8926024664975557392060605911271455154078,\n -0.9558239495713977551811958929297763099728,\n 0.9558239495713977551811958929297763099728,\n -0.9915651684209309467300160047061507702525,\n 0.9915651684209309467300160047061507702525,\n ],\n [\n 0, -0.1603586456402253758680961157407435495048,\n 0.1603586456402253758680961157407435495048,\n -0.3165640999636298319901173288498449178922,\n 0.3165640999636298319901173288498449178922,\n -0.4645707413759609457172671481041023679762,\n 0.4645707413759609457172671481041023679762,\n -0.6005453046616810234696381649462392798683,\n 0.6005453046616810234696381649462392798683,\n -0.7209661773352293786170958608237816296571,\n 0.7209661773352293786170958608237816296571,\n -0.8227146565371428249789224867127139017745,\n 0.8227146565371428249789224867127139017745,\n -0.9031559036148179016426609285323124878093,\n 0.9031559036148179016426609285323124878093,\n -0.960208152134830030852778840687651526615,\n 0.960208152134830030852778840687651526615,\n -0.9924068438435844031890176702532604935893,\n 0.9924068438435844031890176702532604935893,\n ],\n [\n -0.0765265211334973337546404093988382110047,\n 0.0765265211334973337546404093988382110047,\n -0.227785851141645078080496195368574624743,\n 0.227785851141645078080496195368574624743,\n -0.3737060887154195606725481770249272373957,\n 0.3737060887154195606725481770249272373957,\n -0.5108670019508270980043640509552509984254,\n 0.5108670019508270980043640509552509984254,\n -0.6360536807265150254528366962262859367433,\n 0.6360536807265150254528366962262859367433,\n -0.7463319064601507926143050703556415903107,\n 0.7463319064601507926143050703556415903107,\n -0.8391169718222188233945290617015206853296,\n 0.8391169718222188233945290617015206853296,\n -0.9122344282513259058677524412032981130491,\n 0.9122344282513259058677524412032981130491,\n -0.963971927277913791267666131197277221912,\n 0.963971927277913791267666131197277221912,\n -0.9931285991850949247861223884713202782226,\n 0.9931285991850949247861223884713202782226,\n ],\n [\n 0, -0.1455618541608950909370309823386863301163,\n 0.1455618541608950909370309823386863301163,\n -0.288021316802401096600792516064600319909,\n 0.288021316802401096600792516064600319909,\n -0.4243421202074387835736688885437880520964,\n 0.4243421202074387835736688885437880520964,\n -0.551618835887219807059018796724313286622,\n 0.551618835887219807059018796724313286622,\n -0.667138804197412319305966669990339162597,\n 0.667138804197412319305966669990339162597,\n -0.7684399634756779086158778513062280348209,\n 0.7684399634756779086158778513062280348209,\n -0.8533633645833172836472506385875676702761,\n 0.8533633645833172836472506385875676702761,\n -0.9200993341504008287901871337149688941591,\n 0.9200993341504008287901871337149688941591,\n -0.9672268385663062943166222149076951614246,\n 0.9672268385663062943166222149076951614246,\n -0.9937521706203895002602420359379409291933,\n 0.9937521706203895002602420359379409291933,\n ],\n [\n -0.0697392733197222212138417961186280818222,\n 0.0697392733197222212138417961186280818222,\n -0.2078604266882212854788465339195457342156,\n 0.2078604266882212854788465339195457342156,\n -0.3419358208920842251581474204273796195591,\n 0.3419358208920842251581474204273796195591,\n -0.4693558379867570264063307109664063460953,\n 0.4693558379867570264063307109664063460953,\n -0.5876404035069115929588769276386473488776,\n 0.5876404035069115929588769276386473488776,\n -0.6944872631866827800506898357622567712673,\n 0.6944872631866827800506898357622567712673,\n -0.7878168059792081620042779554083515213881,\n 0.7878168059792081620042779554083515213881,\n -0.8658125777203001365364256370193787290847,\n 0.8658125777203001365364256370193787290847,\n -0.9269567721871740005206929392590531966353,\n 0.9269567721871740005206929392590531966353,\n -0.9700604978354287271239509867652687108059,\n 0.9700604978354287271239509867652687108059,\n -0.994294585482399292073031421161298980393,\n 0.994294585482399292073031421161298980393,\n ],\n [\n 0, -0.1332568242984661109317426822417661370104,\n 0.1332568242984661109317426822417661370104,\n -0.264135680970344930533869538283309602979,\n 0.264135680970344930533869538283309602979,\n -0.390301038030290831421488872880605458578,\n 0.390301038030290831421488872880605458578,\n -0.5095014778460075496897930478668464305448,\n 0.5095014778460075496897930478668464305448,\n -0.6196098757636461563850973116495956533871,\n 0.6196098757636461563850973116495956533871,\n -0.7186613631319501944616244837486188483299,\n 0.7186613631319501944616244837486188483299,\n -0.8048884016188398921511184069967785579414,\n 0.8048884016188398921511184069967785579414,\n -0.8767523582704416673781568859341456716389,\n 0.8767523582704416673781568859341456716389,\n -0.9329710868260161023491969890384229782357,\n 0.9329710868260161023491969890384229782357,\n -0.9725424712181152319560240768207773751816,\n 0.9725424712181152319560240768207773751816,\n -0.9947693349975521235239257154455743605736,\n 0.9947693349975521235239257154455743605736,\n ],\n [\n -0.0640568928626056260850430826247450385909,\n 0.0640568928626056260850430826247450385909,\n -0.1911188674736163091586398207570696318404,\n 0.1911188674736163091586398207570696318404,\n -0.3150426796961633743867932913198102407864,\n 0.3150426796961633743867932913198102407864,\n -0.4337935076260451384870842319133497124524,\n 0.4337935076260451384870842319133497124524,\n -0.5454214713888395356583756172183723700107,\n 0.5454214713888395356583756172183723700107,\n -0.6480936519369755692524957869107476266696,\n 0.6480936519369755692524957869107476266696,\n -0.7401241915785543642438281030999784255232,\n 0.7401241915785543642438281030999784255232,\n -0.8200019859739029219539498726697452080761,\n 0.8200019859739029219539498726697452080761,\n -0.8864155270044010342131543419821967550873,\n 0.8864155270044010342131543419821967550873,\n -0.9382745520027327585236490017087214496548,\n 0.9382745520027327585236490017087214496548,\n -0.9747285559713094981983919930081690617411,\n 0.9747285559713094981983919930081690617411,\n -0.9951872199970213601799974097007368118745,\n 0.9951872199970213601799974097007368118745,\n ],\n];\nexport const cValues = [\n [],\n [],\n [1.0, 1.0],\n [\n 0.8888888888888888888888888888888888888888,\n 0.5555555555555555555555555555555555555555,\n 0.5555555555555555555555555555555555555555,\n ],\n [\n 0.6521451548625461426269360507780005927646,\n 0.6521451548625461426269360507780005927646,\n 0.3478548451374538573730639492219994072353,\n 0.3478548451374538573730639492219994072353,\n ],\n [\n 0.5688888888888888888888888888888888888888,\n 0.4786286704993664680412915148356381929122,\n 0.4786286704993664680412915148356381929122,\n 0.2369268850561890875142640407199173626432,\n 0.2369268850561890875142640407199173626432,\n ],\n [\n 0.3607615730481386075698335138377161116615,\n 0.3607615730481386075698335138377161116615,\n 0.4679139345726910473898703439895509948116,\n 0.4679139345726910473898703439895509948116,\n 0.1713244923791703450402961421727328935268,\n 0.1713244923791703450402961421727328935268,\n ],\n [\n 0.4179591836734693877551020408163265306122,\n 0.3818300505051189449503697754889751338783,\n 0.3818300505051189449503697754889751338783,\n 0.2797053914892766679014677714237795824869,\n 0.2797053914892766679014677714237795824869,\n 0.1294849661688696932706114326790820183285,\n 0.1294849661688696932706114326790820183285,\n ],\n [\n 0.3626837833783619829651504492771956121941,\n 0.3626837833783619829651504492771956121941,\n 0.3137066458778872873379622019866013132603,\n 0.3137066458778872873379622019866013132603,\n 0.2223810344533744705443559944262408844301,\n 0.2223810344533744705443559944262408844301,\n 0.1012285362903762591525313543099621901153,\n 0.1012285362903762591525313543099621901153,\n ],\n [\n 0.3302393550012597631645250692869740488788,\n 0.1806481606948574040584720312429128095143,\n 0.1806481606948574040584720312429128095143,\n 0.0812743883615744119718921581105236506756,\n 0.0812743883615744119718921581105236506756,\n 0.3123470770400028400686304065844436655987,\n 0.3123470770400028400686304065844436655987,\n 0.2606106964029354623187428694186328497718,\n 0.2606106964029354623187428694186328497718,\n ],\n [\n 0.295524224714752870173892994651338329421,\n 0.295524224714752870173892994651338329421,\n 0.2692667193099963550912269215694693528597,\n 0.2692667193099963550912269215694693528597,\n 0.2190863625159820439955349342281631924587,\n 0.2190863625159820439955349342281631924587,\n 0.1494513491505805931457763396576973324025,\n 0.1494513491505805931457763396576973324025,\n 0.0666713443086881375935688098933317928578,\n 0.0666713443086881375935688098933317928578,\n ],\n [\n 0.272925086777900630714483528336342189156,\n 0.2628045445102466621806888698905091953727,\n 0.2628045445102466621806888698905091953727,\n 0.2331937645919904799185237048431751394317,\n 0.2331937645919904799185237048431751394317,\n 0.1862902109277342514260976414316558916912,\n 0.1862902109277342514260976414316558916912,\n 0.1255803694649046246346942992239401001976,\n 0.1255803694649046246346942992239401001976,\n 0.0556685671161736664827537204425485787285,\n 0.0556685671161736664827537204425485787285,\n ],\n [\n 0.2491470458134027850005624360429512108304,\n 0.2491470458134027850005624360429512108304,\n 0.2334925365383548087608498989248780562594,\n 0.2334925365383548087608498989248780562594,\n 0.2031674267230659217490644558097983765065,\n 0.2031674267230659217490644558097983765065,\n 0.160078328543346226334652529543359071872,\n 0.160078328543346226334652529543359071872,\n 0.1069393259953184309602547181939962242145,\n 0.1069393259953184309602547181939962242145,\n 0.047175336386511827194615961485017060317,\n 0.047175336386511827194615961485017060317,\n ],\n [\n 0.2325515532308739101945895152688359481566,\n 0.2262831802628972384120901860397766184347,\n 0.2262831802628972384120901860397766184347,\n 0.2078160475368885023125232193060527633865,\n 0.2078160475368885023125232193060527633865,\n 0.1781459807619457382800466919960979955128,\n 0.1781459807619457382800466919960979955128,\n 0.1388735102197872384636017768688714676218,\n 0.1388735102197872384636017768688714676218,\n 0.0921214998377284479144217759537971209236,\n 0.0921214998377284479144217759537971209236,\n 0.0404840047653158795200215922009860600419,\n 0.0404840047653158795200215922009860600419,\n ],\n [\n 0.2152638534631577901958764433162600352749,\n 0.2152638534631577901958764433162600352749,\n 0.2051984637212956039659240656612180557103,\n 0.2051984637212956039659240656612180557103,\n 0.1855383974779378137417165901251570362489,\n 0.1855383974779378137417165901251570362489,\n 0.1572031671581935345696019386238421566056,\n 0.1572031671581935345696019386238421566056,\n 0.1215185706879031846894148090724766259566,\n 0.1215185706879031846894148090724766259566,\n 0.0801580871597602098056332770628543095836,\n 0.0801580871597602098056332770628543095836,\n 0.0351194603317518630318328761381917806197,\n 0.0351194603317518630318328761381917806197,\n ],\n [\n 0.2025782419255612728806201999675193148386,\n 0.1984314853271115764561183264438393248186,\n 0.1984314853271115764561183264438393248186,\n 0.1861610000155622110268005618664228245062,\n 0.1861610000155622110268005618664228245062,\n 0.1662692058169939335532008604812088111309,\n 0.1662692058169939335532008604812088111309,\n 0.1395706779261543144478047945110283225208,\n 0.1395706779261543144478047945110283225208,\n 0.1071592204671719350118695466858693034155,\n 0.1071592204671719350118695466858693034155,\n 0.0703660474881081247092674164506673384667,\n 0.0703660474881081247092674164506673384667,\n 0.0307532419961172683546283935772044177217,\n 0.0307532419961172683546283935772044177217,\n ],\n [\n 0.1894506104550684962853967232082831051469,\n 0.1894506104550684962853967232082831051469,\n 0.1826034150449235888667636679692199393835,\n 0.1826034150449235888667636679692199393835,\n 0.1691565193950025381893120790303599622116,\n 0.1691565193950025381893120790303599622116,\n 0.1495959888165767320815017305474785489704,\n 0.1495959888165767320815017305474785489704,\n 0.1246289712555338720524762821920164201448,\n 0.1246289712555338720524762821920164201448,\n 0.0951585116824927848099251076022462263552,\n 0.0951585116824927848099251076022462263552,\n 0.0622535239386478928628438369943776942749,\n 0.0622535239386478928628438369943776942749,\n 0.0271524594117540948517805724560181035122,\n 0.0271524594117540948517805724560181035122,\n ],\n [\n 0.1794464703562065254582656442618856214487,\n 0.1765627053669926463252709901131972391509,\n 0.1765627053669926463252709901131972391509,\n 0.1680041021564500445099706637883231550211,\n 0.1680041021564500445099706637883231550211,\n 0.1540457610768102880814315948019586119404,\n 0.1540457610768102880814315948019586119404,\n 0.1351363684685254732863199817023501973721,\n 0.1351363684685254732863199817023501973721,\n 0.1118838471934039710947883856263559267358,\n 0.1118838471934039710947883856263559267358,\n 0.0850361483171791808835353701910620738504,\n 0.0850361483171791808835353701910620738504,\n 0.0554595293739872011294401653582446605128,\n 0.0554595293739872011294401653582446605128,\n 0.0241483028685479319601100262875653246916,\n 0.0241483028685479319601100262875653246916,\n ],\n [\n 0.1691423829631435918406564701349866103341,\n 0.1691423829631435918406564701349866103341,\n 0.1642764837458327229860537764659275904123,\n 0.1642764837458327229860537764659275904123,\n 0.1546846751262652449254180038363747721932,\n 0.1546846751262652449254180038363747721932,\n 0.1406429146706506512047313037519472280955,\n 0.1406429146706506512047313037519472280955,\n 0.1225552067114784601845191268002015552281,\n 0.1225552067114784601845191268002015552281,\n 0.1009420441062871655628139849248346070628,\n 0.1009420441062871655628139849248346070628,\n 0.0764257302548890565291296776166365256053,\n 0.0764257302548890565291296776166365256053,\n 0.0497145488949697964533349462026386416808,\n 0.0497145488949697964533349462026386416808,\n 0.0216160135264833103133427102664524693876,\n 0.0216160135264833103133427102664524693876,\n ],\n [\n 0.1610544498487836959791636253209167350399,\n 0.1589688433939543476499564394650472016787,\n 0.1589688433939543476499564394650472016787,\n 0.152766042065859666778855400897662998461,\n 0.152766042065859666778855400897662998461,\n 0.1426067021736066117757461094419029724756,\n 0.1426067021736066117757461094419029724756,\n 0.1287539625393362276755157848568771170558,\n 0.1287539625393362276755157848568771170558,\n 0.1115666455473339947160239016817659974813,\n 0.1115666455473339947160239016817659974813,\n 0.0914900216224499994644620941238396526609,\n 0.0914900216224499994644620941238396526609,\n 0.0690445427376412265807082580060130449618,\n 0.0690445427376412265807082580060130449618,\n 0.0448142267656996003328381574019942119517,\n 0.0448142267656996003328381574019942119517,\n 0.0194617882297264770363120414644384357529,\n 0.0194617882297264770363120414644384357529,\n ],\n [\n 0.1527533871307258506980843319550975934919,\n 0.1527533871307258506980843319550975934919,\n 0.1491729864726037467878287370019694366926,\n 0.1491729864726037467878287370019694366926,\n 0.1420961093183820513292983250671649330345,\n 0.1420961093183820513292983250671649330345,\n 0.1316886384491766268984944997481631349161,\n 0.1316886384491766268984944997481631349161,\n 0.118194531961518417312377377711382287005,\n 0.118194531961518417312377377711382287005,\n 0.1019301198172404350367501354803498761666,\n 0.1019301198172404350367501354803498761666,\n 0.0832767415767047487247581432220462061001,\n 0.0832767415767047487247581432220462061001,\n 0.0626720483341090635695065351870416063516,\n 0.0626720483341090635695065351870416063516,\n 0.040601429800386941331039952274932109879,\n 0.040601429800386941331039952274932109879,\n 0.0176140071391521183118619623518528163621,\n 0.0176140071391521183118619623518528163621,\n ],\n [\n 0.1460811336496904271919851476833711882448,\n 0.1445244039899700590638271665537525436099,\n 0.1445244039899700590638271665537525436099,\n 0.1398873947910731547221334238675831108927,\n 0.1398873947910731547221334238675831108927,\n 0.132268938633337461781052574496775604329,\n 0.132268938633337461781052574496775604329,\n 0.1218314160537285341953671771257335983563,\n 0.1218314160537285341953671771257335983563,\n 0.1087972991671483776634745780701056420336,\n 0.1087972991671483776634745780701056420336,\n 0.0934444234560338615532897411139320884835,\n 0.0934444234560338615532897411139320884835,\n 0.0761001136283793020170516533001831792261,\n 0.0761001136283793020170516533001831792261,\n 0.0571344254268572082836358264724479574912,\n 0.0571344254268572082836358264724479574912,\n 0.0369537897708524937999506682993296661889,\n 0.0369537897708524937999506682993296661889,\n 0.0160172282577743333242246168584710152658,\n 0.0160172282577743333242246168584710152658,\n ],\n [\n 0.1392518728556319933754102483418099578739,\n 0.1392518728556319933754102483418099578739,\n 0.1365414983460151713525738312315173965863,\n 0.1365414983460151713525738312315173965863,\n 0.1311735047870623707329649925303074458757,\n 0.1311735047870623707329649925303074458757,\n 0.1232523768105124242855609861548144719594,\n 0.1232523768105124242855609861548144719594,\n 0.1129322960805392183934006074217843191142,\n 0.1129322960805392183934006074217843191142,\n 0.1004141444428809649320788378305362823508,\n 0.1004141444428809649320788378305362823508,\n 0.0859416062170677274144436813727028661891,\n 0.0859416062170677274144436813727028661891,\n 0.0697964684245204880949614189302176573987,\n 0.0697964684245204880949614189302176573987,\n 0.0522933351526832859403120512732112561121,\n 0.0522933351526832859403120512732112561121,\n 0.0337749015848141547933022468659129013491,\n 0.0337749015848141547933022468659129013491,\n 0.0146279952982722006849910980471854451902,\n 0.0146279952982722006849910980471854451902,\n ],\n [\n 0.1336545721861061753514571105458443385831,\n 0.132462039404696617371642464703316925805,\n 0.132462039404696617371642464703316925805,\n 0.1289057221880821499785953393997936532597,\n 0.1289057221880821499785953393997936532597,\n 0.1230490843067295304675784006720096548158,\n 0.1230490843067295304675784006720096548158,\n 0.1149966402224113649416435129339613014914,\n 0.1149966402224113649416435129339613014914,\n 0.1048920914645414100740861850147438548584,\n 0.1048920914645414100740861850147438548584,\n 0.0929157660600351474770186173697646486034,\n 0.0929157660600351474770186173697646486034,\n 0.0792814117767189549228925247420432269137,\n 0.0792814117767189549228925247420432269137,\n 0.0642324214085258521271696151589109980391,\n 0.0642324214085258521271696151589109980391,\n 0.0480376717310846685716410716320339965612,\n 0.0480376717310846685716410716320339965612,\n 0.0309880058569794443106942196418845053837,\n 0.0309880058569794443106942196418845053837,\n 0.0134118594871417720813094934586150649766,\n 0.0134118594871417720813094934586150649766,\n ],\n [\n 0.1279381953467521569740561652246953718517,\n 0.1279381953467521569740561652246953718517,\n 0.1258374563468282961213753825111836887264,\n 0.1258374563468282961213753825111836887264,\n 0.121670472927803391204463153476262425607,\n 0.121670472927803391204463153476262425607,\n 0.1155056680537256013533444839067835598622,\n 0.1155056680537256013533444839067835598622,\n 0.1074442701159656347825773424466062227946,\n 0.1074442701159656347825773424466062227946,\n 0.0976186521041138882698806644642471544279,\n 0.0976186521041138882698806644642471544279,\n 0.086190161531953275917185202983742667185,\n 0.086190161531953275917185202983742667185,\n 0.0733464814110803057340336152531165181193,\n 0.0733464814110803057340336152531165181193,\n 0.0592985849154367807463677585001085845412,\n 0.0592985849154367807463677585001085845412,\n 0.0442774388174198061686027482113382288593,\n 0.0442774388174198061686027482113382288593,\n 0.0285313886289336631813078159518782864491,\n 0.0285313886289336631813078159518782864491,\n 0.0123412297999871995468056670700372915759,\n 0.0123412297999871995468056670700372915759,\n ],\n];\nexport const binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nexport const getCubicArcLength = (xs, ys, t) => {\n let sum;\n let correctedT;\n const n = 20;\n const z = t / 2;\n sum = 0;\n for (let i = 0; i < n; i++) {\n correctedT = z * tValues[n][i] + z;\n sum += cValues[n][i] * BFunc(xs, ys, correctedT);\n }\n return z * sum;\n};\nexport const getQuadraticArcLength = (xs, ys, t) => {\n if (t === undefined) {\n t = 1;\n }\n const ax = xs[0] - 2 * xs[1] + xs[2];\n const ay = ys[0] - 2 * ys[1] + ys[2];\n const bx = 2 * xs[1] - 2 * xs[0];\n const by = 2 * ys[1] - 2 * ys[0];\n const A = 4 * (ax * ax + ay * ay);\n const B = 4 * (ax * bx + ay * by);\n const C = bx * bx + by * by;\n if (A === 0) {\n return (t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2)));\n }\n const b = B / (2 * A);\n const c = C / A;\n const u = t + b;\n const k = c - b * b;\n const uuk = u * u + k > 0 ? Math.sqrt(u * u + k) : 0;\n const bbk = b * b + k > 0 ? Math.sqrt(b * b + k) : 0;\n const term = b + Math.sqrt(b * b + k) !== 0\n ? k * Math.log(Math.abs((u + uuk) / (b + bbk)))\n : 0;\n return (Math.sqrt(A) / 2) * (u * uuk - b * bbk + term);\n};\nfunction BFunc(xs, ys, t) {\n const xbase = getDerivative(1, t, xs);\n const ybase = getDerivative(1, t, ys);\n const combined = xbase * xbase + ybase * ybase;\n return Math.sqrt(combined);\n}\nconst getDerivative = (derivative, t, vs) => {\n const n = vs.length - 1;\n let _vs;\n let value;\n if (n === 0) {\n return 0;\n }\n if (derivative === 0) {\n value = 0;\n for (let k = 0; k <= n; k++) {\n value +=\n binomialCoefficients[n][k] *\n Math.pow(1 - t, n - k) *\n Math.pow(t, k) *\n vs[k];\n }\n return value;\n }\n else {\n _vs = new Array(n);\n for (let k = 0; k < n; k++) {\n _vs[k] = n * (vs[k + 1] - vs[k]);\n }\n return getDerivative(derivative - 1, t, _vs);\n }\n};\nexport const t2length = (length, totalLength, func) => {\n let error = 1;\n let t = length / totalLength;\n let step = (length - func(t)) / totalLength;\n let numIterations = 0;\n while (error > 0.001) {\n const increasedTLength = func(t + step);\n const increasedTError = Math.abs(length - increasedTLength) / totalLength;\n if (increasedTError < error) {\n error = increasedTError;\n t += step;\n }\n else {\n const decreasedTLength = func(t - step);\n const decreasedTError = Math.abs(length - decreasedTLength) / totalLength;\n if (decreasedTError < error) {\n error = decreasedTError;\n t -= step;\n }\n else {\n step /= 2;\n }\n }\n numIterations++;\n if (numIterations > 500) {\n break;\n }\n }\n return t;\n};\n","import { Factory } from \"../Factory.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getCubicArcLength, getQuadraticArcLength, t2length, } from \"../BezierFunctions.js\";\nexport class Path extends Shape {\n constructor(config) {\n super(config);\n this.dataArray = [];\n this.pathLength = 0;\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n });\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = Path.getPathLength(this.dataArray);\n }\n _sceneFunc(context) {\n const ca = this.dataArray;\n context.beginPath();\n let isClosed = false;\n for (let n = 0; n < ca.length; n++) {\n const c = ca[n].command;\n const p = ca[n].points;\n switch (c) {\n case 'L':\n context.lineTo(p[0], p[1]);\n break;\n case 'M':\n context.moveTo(p[0], p[1]);\n break;\n case 'C':\n context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\n break;\n case 'Q':\n context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\n break;\n case 'A':\n const cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(psi);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-psi);\n context.translate(-cx, -cy);\n break;\n case 'z':\n isClosed = true;\n context.closePath();\n break;\n }\n }\n if (!isClosed && !this.hasFill()) {\n context.strokeShape(this);\n }\n else {\n context.fillStrokeShape(this);\n }\n }\n getSelfRect() {\n let points = [];\n this.dataArray.forEach(function (data) {\n if (data.command === 'A') {\n const start = data.points[4];\n const dTheta = data.points[5];\n const end = data.points[4] + dTheta;\n let inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n if (dTheta < 0) {\n for (let t = start - inc; t > end; t -= inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n else {\n for (let t = start + inc; t < end; t += inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n }\n else if (data.command === 'C') {\n for (let t = 0.0; t <= 1; t += 0.01) {\n const point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n points.push(point.x, point.y);\n }\n }\n else {\n points = points.concat(data.points);\n }\n });\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n if (!isNaN(x)) {\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n }\n if (!isNaN(y)) {\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getLength() {\n return this.pathLength;\n }\n getPointAtLength(length) {\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n static getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n static getPathLength(dataArray) {\n let pathLength = 0;\n for (let i = 0; i < dataArray.length; ++i) {\n pathLength += dataArray[i].pathLength;\n }\n return pathLength;\n }\n static getPointAtLengthOfDataArray(length, dataArray) {\n let points, i = 0, ii = dataArray.length;\n if (!ii) {\n return null;\n }\n while (i < ii && length > dataArray[i].pathLength) {\n length -= dataArray[i].pathLength;\n ++i;\n }\n if (i === ii) {\n points = dataArray[i - 1].points.slice(-2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n if (length < 0.01) {\n const cmd = dataArray[i].command;\n if (cmd === 'M') {\n points = dataArray[i].points.slice(0, 2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n else {\n return {\n x: dataArray[i].start.x,\n y: dataArray[i].start.y,\n };\n }\n }\n const cp = dataArray[i];\n const p = cp.points;\n switch (cp.command) {\n case 'L':\n return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\n case 'C':\n return Path.getPointOnCubicBezier(t2length(length, Path.getPathLength(dataArray), (i) => {\n return getCubicArcLength([cp.start.x, p[0], p[2], p[4]], [cp.start.y, p[1], p[3], p[5]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\n case 'Q':\n return Path.getPointOnQuadraticBezier(t2length(length, Path.getPathLength(dataArray), (i) => {\n return getQuadraticArcLength([cp.start.x, p[0], p[2]], [cp.start.y, p[1], p[3]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n case 'A':\n const cx = p[0], cy = p[1], rx = p[2], ry = p[3], dTheta = p[5], psi = p[6];\n let theta = p[4];\n theta += (dTheta * length) / cp.pathLength;\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n }\n return null;\n }\n static getPointOnLine(dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n fromX = fromX !== null && fromX !== void 0 ? fromX : P1x;\n fromY = fromY !== null && fromY !== void 0 ? fromY : P1y;\n const len = this.getLineLength(P1x, P1y, P2x, P2y);\n if (len < 1e-10) {\n return { x: P1x, y: P1y };\n }\n if (P2x === P1x) {\n return { x: fromX, y: fromY + (P2y > P1y ? dist : -dist) };\n }\n const m = (P2y - P1y) / (P2x - P1x);\n const run = Math.sqrt((dist * dist) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const rise = m * run;\n if (Math.abs(fromY - P1y - m * (fromX - P1x)) < 1e-10) {\n return { x: fromX + run, y: fromY + rise };\n }\n const u = ((fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y)) / (len * len);\n const ix = P1x + u * (P2x - P1x);\n const iy = P1y + u * (P2y - P1y);\n const pRise = this.getLineLength(fromX, fromY, ix, iy);\n const pRun = Math.sqrt(dist * dist - pRise * pRise);\n const adjustedRun = Math.sqrt((pRun * pRun) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const adjustedRise = m * adjustedRun;\n return { x: ix + adjustedRun, y: iy + adjustedRise };\n }\n static getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n const x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n const y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return { x, y };\n }\n static getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n function QB1(t) {\n return t * t;\n }\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\n const x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n const y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return { x, y };\n }\n static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n const cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n const pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta),\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi),\n };\n }\n static parsePathData(data) {\n if (!data) {\n return [];\n }\n let cs = data;\n const cc = [\n 'm',\n 'M',\n 'l',\n 'L',\n 'v',\n 'V',\n 'h',\n 'H',\n 'z',\n 'Z',\n 'c',\n 'C',\n 'q',\n 'Q',\n 't',\n 'T',\n 's',\n 'S',\n 'a',\n 'A',\n ];\n cs = cs.replace(new RegExp(' ', 'g'), ',');\n for (let n = 0; n < cc.length; n++) {\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n }\n const arr = cs.split('|');\n const ca = [];\n const coords = [];\n let cpx = 0;\n let cpy = 0;\n const re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n let match;\n for (let n = 1; n < arr.length; n++) {\n let str = arr[n];\n let c = str.charAt(0);\n str = str.slice(1);\n coords.length = 0;\n while ((match = re.exec(str))) {\n coords.push(match[0]);\n }\n let p = [];\n let arcParamIndex = c === 'A' || c === 'a' ? 0 : -1;\n for (let j = 0, jlen = coords.length; j < jlen; j++) {\n const token = coords[j];\n if (token === '00') {\n p.push(0, 0);\n if (arcParamIndex >= 0) {\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n }\n continue;\n }\n if (arcParamIndex >= 0) {\n if (arcParamIndex === 3) {\n if (/^[01]{2}\\d+(?:\\.\\d+)?$/.test(token)) {\n p.push(parseInt(token[0], 10));\n p.push(parseInt(token[1], 10));\n p.push(parseFloat(token.slice(2)));\n arcParamIndex += 3;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '11' || token === '10' || token === '01') {\n p.push(parseInt(token[0], 10));\n p.push(parseInt(token[1], 10));\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '0' || token === '1') {\n p.push(parseInt(token, 10));\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n }\n else if (arcParamIndex === 4) {\n if (/^[01]\\d+(?:\\.\\d+)?$/.test(token)) {\n p.push(parseInt(token[0], 10));\n p.push(parseFloat(token.slice(1)));\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '0' || token === '1') {\n p.push(parseInt(token, 10));\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n }\n const parsedArc = parseFloat(token);\n if (!isNaN(parsedArc)) {\n p.push(parsedArc);\n }\n else {\n p.push(0);\n }\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n }\n else {\n const parsed = parseFloat(token);\n if (!isNaN(parsed)) {\n p.push(parsed);\n }\n else {\n p.push(0);\n }\n }\n }\n while (p.length > 0) {\n if (isNaN(p[0])) {\n break;\n }\n let cmd = '';\n let points = [];\n const startX = cpx, startY = cpy;\n let prevCmd, ctlPtx, ctlPty;\n let rx, ry, psi, fa, fs, x1, y1;\n switch (c) {\n case 'l':\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'L':\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'm':\n const dx = p.shift();\n const dy = p.shift();\n cpx += dx;\n cpy += dy;\n cmd = 'M';\n if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\n for (let idx = ca.length - 2; idx >= 0; idx--) {\n if (ca[idx].command === 'M') {\n cpx = ca[idx].points[0] + dx;\n cpy = ca[idx].points[1] + dy;\n break;\n }\n }\n }\n points.push(cpx, cpy);\n c = 'l';\n break;\n case 'M':\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'M';\n points.push(cpx, cpy);\n c = 'L';\n break;\n case 'h':\n cpx += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'H':\n cpx = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'v':\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'V':\n cpy = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'C':\n points.push(p.shift(), p.shift(), p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'c':\n points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'Q':\n points.push(p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'q':\n points.push(cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n case 'a':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n }\n ca.push({\n command: cmd || c,\n points: points,\n start: {\n x: startX,\n y: startY,\n },\n pathLength: this.calcLength(startX, startY, cmd || c, points),\n });\n }\n if (c === 'z' || c === 'Z') {\n ca.push({\n command: 'z',\n points: [],\n start: undefined,\n pathLength: 0,\n });\n }\n }\n return ca;\n }\n static calcLength(x, y, cmd, points) {\n let len, p1, p2, t;\n const path = Path;\n switch (cmd) {\n case 'L':\n return path.getLineLength(x, y, points[0], points[1]);\n case 'C':\n return getCubicArcLength([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n case 'Q':\n return getQuadraticArcLength([x, points[0], points[2]], [y, points[1], points[3]], 1);\n case 'A':\n len = 0.0;\n const start = points[4];\n const dTheta = points[5];\n const end = points[4] + dTheta;\n let inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n p1 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n if (dTheta < 0) {\n for (t = start - inc; t > end; t -= inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n else {\n for (t = start + inc; t < end; t += inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n return 0;\n }\n static convertEndpointToCenterParameterization(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\n const psi = psiDeg * (Math.PI / 180.0);\n const xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n (Math.cos(psi) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n let f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\n (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\n if (fa === fs) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n const cxp = (f * rx * yp) / ry;\n const cyp = (f * -ry * xp) / rx;\n const cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n const vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n };\n const vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n };\n const vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n };\n const theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n const u = [(xp - cxp) / rx, (yp - cyp) / ry];\n const v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n let dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return [cx, cy, rx, ry, theta, dTheta, psi, fs];\n }\n}\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n_registerNode(Path);\nFactory.addGetterSetter(Path, 'data');\n","import { Factory } from \"../Factory.js\";\nimport { Line } from \"./Line.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Path } from \"./Path.js\";\nexport class Arrow extends Line {\n _sceneFunc(ctx) {\n super._sceneFunc(ctx);\n const PI2 = Math.PI * 2;\n const points = this.points();\n let tp = points;\n const fromTension = this.tension() !== 0 && points.length > 4;\n if (fromTension) {\n tp = this.getTensionPoints();\n }\n const length = this.pointerLength();\n const n = points.length;\n let dx, dy;\n if (fromTension) {\n const lp = [\n tp[tp.length - 4],\n tp[tp.length - 3],\n tp[tp.length - 2],\n tp[tp.length - 1],\n points[n - 2],\n points[n - 1],\n ];\n const lastLength = Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n const previous = Path.getPointOnQuadraticBezier(Math.min(1, 1 - length / lastLength), lp[0], lp[1], lp[2], lp[3], lp[4], lp[5]);\n dx = points[n - 2] - previous.x;\n dy = points[n - 1] - previous.y;\n }\n else {\n dx = points[n - 2] - points[n - 4];\n dy = points[n - 1] - points[n - 3];\n }\n const radians = (Math.atan2(dy, dx) + PI2) % PI2;\n const width = this.pointerWidth();\n if (this.pointerAtEnding()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[n - 2], points[n - 1]);\n ctx.rotate(radians);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n if (this.pointerAtBeginning()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[0], points[1]);\n if (fromTension) {\n dx = (tp[0] + tp[2]) / 2 - points[0];\n dy = (tp[1] + tp[3]) / 2 - points[1];\n }\n else {\n dx = points[2] - points[0];\n dy = points[3] - points[1];\n }\n ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n }\n __fillStroke(ctx) {\n const isDashEnabled = this.dashEnabled();\n if (isDashEnabled) {\n this.attrs.dashEnabled = false;\n ctx.setLineDash([]);\n }\n ctx.fillStrokeShape(this);\n if (isDashEnabled) {\n this.attrs.dashEnabled = true;\n }\n }\n getSelfRect() {\n const lineRect = super.getSelfRect();\n const offset = this.pointerWidth() / 2;\n return {\n x: lineRect.x,\n y: lineRect.y - offset,\n width: lineRect.width,\n height: lineRect.height + offset * 2,\n };\n }\n}\nArrow.prototype.className = 'Arrow';\n_registerNode(Arrow);\nFactory.addGetterSetter(Arrow, 'pointerLength', 10, getNumberValidator());\nFactory.addGetterSetter(Arrow, 'pointerWidth', 10, getNumberValidator());\nFactory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Circle extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.attrs.radius || 0, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n if (this.radius() !== width / 2) {\n this.radius(width / 2);\n }\n }\n setHeight(height) {\n if (this.radius() !== height / 2) {\n this.radius(height / 2);\n }\n }\n}\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n_registerNode(Circle);\nFactory.addGetterSetter(Circle, 'radius', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Ellipse extends Shape {\n _sceneFunc(context) {\n const rx = this.radiusX(), ry = this.radiusY();\n context.beginPath();\n context.save();\n if (rx !== ry) {\n context.scale(1, ry / rx);\n }\n context.arc(0, 0, rx, 0, Math.PI * 2, false);\n context.restore();\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radiusX() * 2;\n }\n getHeight() {\n return this.radiusY() * 2;\n }\n setWidth(width) {\n this.radiusX(width / 2);\n }\n setHeight(height) {\n this.radiusY(height / 2);\n }\n}\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n_registerNode(Ellipse);\nFactory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory.addGetterSetter(Ellipse, 'radiusX', 0, getNumberValidator());\nFactory.addGetterSetter(Ellipse, 'radiusY', 0, getNumberValidator());\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nexport class Image extends Shape {\n constructor(attrs) {\n super(attrs);\n this._loadListener = () => {\n this._requestDraw();\n };\n this.on('imageChange.konva', (props) => {\n this._removeImageLoad(props.oldVal);\n this._setImageLoad();\n });\n this._setImageLoad();\n }\n _setImageLoad() {\n const image = this.image();\n if (image && image.complete) {\n return;\n }\n if (image && image.readyState === 4) {\n return;\n }\n if (image && image['addEventListener']) {\n image['addEventListener']('load', this._loadListener);\n }\n }\n _removeImageLoad(image) {\n if (image && image['removeEventListener']) {\n image['removeEventListener']('load', this._loadListener);\n }\n }\n destroy() {\n this._removeImageLoad(this.image());\n super.destroy();\n return this;\n }\n _useBufferCanvas() {\n const hasCornerRadius = !!this.cornerRadius();\n const hasShadow = this.hasShadow();\n if (hasCornerRadius && hasShadow) {\n return true;\n }\n return super._useBufferCanvas(true);\n }\n _sceneFunc(context) {\n const width = this.getWidth();\n const height = this.getHeight();\n const cornerRadius = this.cornerRadius();\n const image = this.attrs.image;\n let params;\n if (image) {\n const cropWidth = this.attrs.cropWidth;\n const cropHeight = this.attrs.cropHeight;\n if (cropWidth && cropHeight) {\n params = [\n image,\n this.cropX(),\n this.cropY(),\n cropWidth,\n cropHeight,\n 0,\n 0,\n width,\n height,\n ];\n }\n else {\n params = [image, 0, 0, width, height];\n }\n }\n if (this.hasFill() || this.hasStroke() || cornerRadius) {\n context.beginPath();\n cornerRadius\n ? Util.drawRoundedRectPath(context, width, height, cornerRadius)\n : context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (cornerRadius) {\n context.clip();\n }\n context.drawImage.apply(context, params);\n }\n }\n _hitFunc(context) {\n const width = this.width(), height = this.height(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n var _a, _b;\n return (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width;\n }\n getHeight() {\n var _a, _b;\n return (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height;\n }\n static fromURL(url, callback, onError = null) {\n const img = Util.createImageElement();\n img.onload = function () {\n const image = new Image({\n image: img,\n });\n callback(image);\n };\n img.onerror = onError;\n img.crossOrigin = 'Anonymous';\n img.src = url;\n }\n}\nImage.prototype.className = 'Image';\n_registerNode(Image);\nFactory.addGetterSetter(Image, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\nFactory.addGetterSetter(Image, 'image');\nFactory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory.addGetterSetter(Image, 'cropX', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropY', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropWidth', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropHeight', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Group } from \"../Group.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst ATTR_CHANGE_LIST = [\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'padding',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'pointerDirection',\n 'pointerWidth',\n 'pointerHeight',\n], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', attrChangeListLen = ATTR_CHANGE_LIST.length;\nexport class Label extends Group {\n constructor(config) {\n super(config);\n this.on('add.konva', function (evt) {\n this._addListeners(evt.child);\n this._sync();\n });\n }\n getText() {\n return this.find('Text')[0];\n }\n getTag() {\n return this.find('Tag')[0];\n }\n _addListeners(text) {\n let that = this, n;\n const func = function () {\n that._sync();\n };\n for (n = 0; n < attrChangeListLen; n++) {\n text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\n }\n }\n getWidth() {\n return this.getText().width();\n }\n getHeight() {\n return this.getText().height();\n }\n _sync() {\n let text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\n if (text && tag) {\n width = text.width();\n height = text.height();\n pointerDirection = tag.pointerDirection();\n pointerWidth = tag.pointerWidth();\n pointerHeight = tag.pointerHeight();\n x = 0;\n y = 0;\n switch (pointerDirection) {\n case UP:\n x = width / 2;\n y = -1 * pointerHeight;\n break;\n case RIGHT:\n x = width + pointerWidth;\n y = height / 2;\n break;\n case DOWN:\n x = width / 2;\n y = height + pointerHeight;\n break;\n case LEFT:\n x = -1 * pointerWidth;\n y = height / 2;\n break;\n }\n tag.setAttrs({\n x: -1 * x,\n y: -1 * y,\n width: width,\n height: height,\n });\n text.setAttrs({\n x: -1 * x,\n y: -1 * y,\n });\n }\n }\n}\nLabel.prototype.className = 'Label';\n_registerNode(Label);\nexport class Tag extends Shape {\n _sceneFunc(context) {\n const width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = this.cornerRadius();\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.beginPath();\n context.moveTo(topLeft, 0);\n if (pointerDirection === UP) {\n context.lineTo((width - pointerWidth) / 2, 0);\n context.lineTo(width / 2, -1 * pointerHeight);\n context.lineTo((width + pointerWidth) / 2, 0);\n }\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n if (pointerDirection === RIGHT) {\n context.lineTo(width, (height - pointerHeight) / 2);\n context.lineTo(width + pointerWidth, height / 2);\n context.lineTo(width, (height + pointerHeight) / 2);\n }\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n if (pointerDirection === DOWN) {\n context.lineTo((width + pointerWidth) / 2, height);\n context.lineTo(width / 2, height + pointerHeight);\n context.lineTo((width - pointerWidth) / 2, height);\n }\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n if (pointerDirection === LEFT) {\n context.lineTo(0, (height + pointerHeight) / 2);\n context.lineTo(-1 * pointerWidth, height / 2);\n context.lineTo(0, (height - pointerHeight) / 2);\n }\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getSelfRect() {\n let x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\n if (direction === UP) {\n y -= pointerHeight;\n height += pointerHeight;\n }\n else if (direction === DOWN) {\n height += pointerHeight;\n }\n else if (direction === LEFT) {\n x -= pointerWidth * 1.5;\n width += pointerWidth;\n }\n else if (direction === RIGHT) {\n width += pointerWidth * 1.5;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n }\n}\nTag.prototype.className = 'Tag';\n_registerNode(Tag);\nFactory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory.addGetterSetter(Tag, 'pointerWidth', 0, getNumberValidator());\nFactory.addGetterSetter(Tag, 'pointerHeight', 0, getNumberValidator());\nFactory.addGetterSetter(Tag, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Util } from \"../Util.js\";\nimport { getNumberOrArrayOfNumbersValidator } from \"../Validators.js\";\nexport class Rect extends Shape {\n _sceneFunc(context) {\n const cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n}\nRect.prototype.className = 'Rect';\n_registerNode(Rect);\nFactory.addGetterSetter(Rect, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Util } from \"../Util.js\";\nexport class RegularPolygon extends Shape {\n _sceneFunc(context) {\n const points = this._getPoints(), radius = this.radius(), sides = this.sides(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.moveTo(points[0].x, points[0].y);\n for (let n = 1; n < points.length; n++) {\n context.lineTo(points[n].x, points[n].y);\n }\n }\n else {\n Util.drawRoundedPolygonPath(context, points, sides, radius, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n _getPoints() {\n const sides = this.attrs.sides;\n const radius = this.attrs.radius || 0;\n const points = [];\n for (let n = 0; n < sides; n++) {\n points.push({\n x: radius * Math.sin((n * 2 * Math.PI) / sides),\n y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n });\n }\n return points;\n }\n getSelfRect() {\n const points = this._getPoints();\n let minX = points[0].x;\n let maxX = points[0].y;\n let minY = points[0].x;\n let maxY = points[0].y;\n points.forEach((point) => {\n minX = Math.min(minX, point.x);\n maxX = Math.max(maxX, point.x);\n minY = Math.min(minY, point.y);\n maxY = Math.max(maxY, point.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n_registerNode(RegularPolygon);\nFactory.addGetterSetter(RegularPolygon, 'radius', 0, getNumberValidator());\nFactory.addGetterSetter(RegularPolygon, 'sides', 0, getNumberValidator());\nFactory.addGetterSetter(RegularPolygon, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst PIx2 = Math.PI * 2;\nexport class Ring extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\n context.moveTo(this.outerRadius(), 0);\n context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n_registerNode(Ring);\nFactory.addGetterSetter(Ring, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Ring, 'outerRadius', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Animation } from \"../Animation.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Sprite extends Shape {\n constructor(config) {\n super(config);\n this._updated = true;\n this.anim = new Animation(() => {\n const updated = this._updated;\n this._updated = false;\n return updated;\n });\n this.on('animationChange.konva', function () {\n this.frameIndex(0);\n });\n this.on('frameIndexChange.konva', function () {\n this._updated = true;\n });\n this.on('frameRateChange.konva', function () {\n if (!this.anim.isRunning()) {\n return;\n }\n clearInterval(this.interval);\n this._setInterval();\n });\n }\n _sceneFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\n if (this.hasFill() || this.hasStroke()) {\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (offsets) {\n const offset = offsets[anim], ix2 = index * 2;\n context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.drawImage(image, x, y, width, height, 0, 0, width, height);\n }\n }\n }\n _hitFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\n context.beginPath();\n if (offsets) {\n const offset = offsets[anim];\n const ix2 = index * 2;\n context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.rect(0, 0, width, height);\n }\n context.closePath();\n context.fillShape(this);\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _setInterval() {\n const that = this;\n this.interval = setInterval(function () {\n that._updateIndex();\n }, 1000 / this.frameRate());\n }\n start() {\n if (this.isRunning()) {\n return;\n }\n const layer = this.getLayer();\n this.anim.setLayers(layer);\n this._setInterval();\n this.anim.start();\n }\n stop() {\n this.anim.stop();\n clearInterval(this.interval);\n }\n isRunning() {\n return this.anim.isRunning();\n }\n _updateIndex() {\n const index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\n if (index < len - 1) {\n this.frameIndex(index + 1);\n }\n else {\n this.frameIndex(0);\n }\n }\n}\nSprite.prototype.className = 'Sprite';\n_registerNode(Sprite);\nFactory.addGetterSetter(Sprite, 'animation');\nFactory.addGetterSetter(Sprite, 'animations');\nFactory.addGetterSetter(Sprite, 'frameOffsets');\nFactory.addGetterSetter(Sprite, 'image');\nFactory.addGetterSetter(Sprite, 'frameIndex', 0, getNumberValidator());\nFactory.addGetterSetter(Sprite, 'frameRate', 17, getNumberValidator());\nFactory.backCompat(Sprite, {\n index: 'frameIndex',\n getIndex: 'getFrameIndex',\n setIndex: 'setFrameIndex',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Star extends Shape {\n _sceneFunc(context) {\n const innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n context.beginPath();\n context.moveTo(0, 0 - outerRadius);\n for (let n = 1; n < numPoints * 2; n++) {\n const radius = n % 2 === 0 ? outerRadius : innerRadius;\n const x = radius * Math.sin((n * Math.PI) / numPoints);\n const y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\n context.lineTo(x, y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n_registerNode(Star);\nFactory.addGetterSetter(Star, 'numPoints', 5, getNumberValidator());\nFactory.addGetterSetter(Star, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Star, 'outerRadius', 0, getNumberValidator());\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator, getStringValidator, getNumberOrAutoValidator, getBooleanValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport function stringToArray(string) {\n return [...string].reduce((acc, char, index, array) => {\n if (/\\p{Emoji}/u.test(char)) {\n const nextChar = array[index + 1];\n if (nextChar && /\\p{Emoji_Modifier}|\\u200D/u.test(nextChar)) {\n acc.push(char + nextChar);\n array[index + 1] = '';\n }\n else {\n acc.push(char);\n }\n }\n else if (/\\p{Regional_Indicator}{2}/u.test(char + (array[index + 1] || ''))) {\n acc.push(char + array[index + 1]);\n }\n else if (index > 0 && /\\p{Mn}|\\p{Me}|\\p{Mc}/u.test(char)) {\n acc[acc.length - 1] += char;\n }\n else if (char) {\n acc.push(char);\n }\n return acc;\n }, []);\n}\nconst AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n 'direction',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontVariant',\n 'padding',\n 'align',\n 'verticalAlign',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'wrap',\n 'ellipsis',\n 'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nfunction normalizeFontFamily(fontFamily) {\n return fontFamily\n .split(',')\n .map((family) => {\n family = family.trim();\n const hasSpace = family.indexOf(' ') >= 0;\n const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n if (hasSpace && !hasQuotes) {\n family = `\"${family}\"`;\n }\n return family;\n })\n .join(', ');\n}\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util.createCanvasElement().getContext(CONTEXT_2D);\n return dummyContext;\n}\nfunction _fillFunc(context) {\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n context.setAttr('miterLimit', 2);\n context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n config = config || {};\n if (!config.fillLinearGradientColorStops &&\n !config.fillRadialGradientColorStops &&\n !config.fillPatternImage) {\n config.fill = config.fill || 'black';\n }\n return config;\n}\nexport class Text extends Shape {\n constructor(config) {\n super(checkDefaultFill(config));\n this._partialTextX = 0;\n this._partialTextY = 0;\n for (let n = 0; n < attrChangeListLen; n++) {\n this.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, this._setTextData);\n }\n this._setTextData();\n }\n _sceneFunc(context) {\n var _a, _b;\n const textArr = this.textArr, textArrLen = textArr.length;\n if (!this.text()) {\n return;\n }\n let padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), direction = this.direction(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), charRenderFunc = this.charRenderFunc(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n direction = direction === INHERIT ? context.direction : direction;\n let translateY = lineHeightPx / 2;\n let baseline = MIDDLE;\n if (!Konva.legacyTextRendering) {\n const metrics = this.measureSize('M');\n baseline = 'alphabetic';\n const ascent = (_a = metrics.fontBoundingBoxAscent) !== null && _a !== void 0 ? _a : metrics.actualBoundingBoxAscent;\n const descent = (_b = metrics.fontBoundingBoxDescent) !== null && _b !== void 0 ? _b : metrics.actualBoundingBoxDescent;\n translateY = (ascent - descent) / 2 + lineHeightPx / 2;\n }\n if (direction === RTL) {\n context.setAttr('direction', direction);\n }\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', baseline);\n context.setAttr('textAlign', LEFT);\n if (verticalAlign === MIDDLE) {\n alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n }\n else if (verticalAlign === BOTTOM) {\n alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n }\n context.translate(padding, alignY + padding);\n for (n = 0; n < textArrLen; n++) {\n let lineTranslateX = 0;\n let lineTranslateY = 0;\n const obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph;\n context.save();\n if (align === RIGHT) {\n lineTranslateX += totalWidth - width - padding * 2;\n }\n else if (align === CENTER) {\n lineTranslateX += (totalWidth - width - padding * 2) / 2;\n }\n if (shouldUnderline) {\n context.save();\n context.beginPath();\n const yOffset = !Konva.legacyTextRendering\n ? Math.round(fontSize / 4)\n : Math.round(fontSize / 2);\n const x = lineTranslateX;\n const y = translateY + lineTranslateY + yOffset;\n context.moveTo(x, y);\n const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(x + Math.round(lineWidth), y);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (direction !== RTL &&\n (letterSpacing !== 0 || align === JUSTIFY || charRenderFunc)) {\n const spacesNumber = text.split(' ').length - 1;\n const array = stringToArray(text);\n for (let li = 0; li < array.length; li++) {\n const letter = array[li];\n if (letter === ' ' && !lastLine && align === JUSTIFY) {\n lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = letter;\n if (charRenderFunc) {\n context.save();\n const previousLines = textArr.slice(0, n);\n const previousGraphemes = previousLines.reduce((acc, line) => acc + stringToArray(line.text).length, 0);\n const charIndex = li + previousGraphemes;\n charRenderFunc({\n char: letter,\n index: charIndex,\n x: lineTranslateX,\n y: translateY + lineTranslateY,\n lineIndex: n,\n column: li,\n isLastInLine: lastLine,\n width: this.measureSize(letter).width,\n context,\n });\n }\n context.fillStrokeShape(this);\n if (charRenderFunc) {\n context.restore();\n }\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\n }\n }\n else {\n if (letterSpacing !== 0) {\n context.setAttr('letterSpacing', `${letterSpacing}px`);\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = text;\n context.fillStrokeShape(this);\n }\n if (shouldLineThrough) {\n context.save();\n context.beginPath();\n const yOffset = !Konva.legacyTextRendering\n ? -Math.round(fontSize / 4)\n : 0;\n const x = align === JUSTIFY ? 0 : lineTranslateX;\n context.moveTo(x, translateY + lineTranslateY + yOffset);\n const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(x + Math.round(lineWidth), translateY + lineTranslateY + yOffset);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n context.restore();\n if (textArrLen > 1) {\n translateY += lineHeightPx;\n }\n }\n }\n _hitFunc(context) {\n const width = this.getWidth(), height = this.getHeight();\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n setText(text) {\n const str = Util._isString(text)\n ? text\n : text === null || text === undefined\n ? ''\n : text + '';\n this._setAttr(TEXT, str);\n return this;\n }\n getWidth() {\n const isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n }\n getHeight() {\n const isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\n return isAuto\n ? this.fontSize() * this.textArr.length * this.lineHeight() +\n this.padding() * 2\n : this.attrs.height;\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n measureSize(text) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n let _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n _context.save();\n _context.font = this._getContextFont();\n metrics = _context.measureText(text);\n _context.restore();\n const scaleFactor = fontSize / 100;\n return {\n actualBoundingBoxAscent: (_a = metrics.actualBoundingBoxAscent) !== null && _a !== void 0 ? _a : 71.58203125 * scaleFactor,\n actualBoundingBoxDescent: (_b = metrics.actualBoundingBoxDescent) !== null && _b !== void 0 ? _b : 0,\n actualBoundingBoxLeft: (_c = metrics.actualBoundingBoxLeft) !== null && _c !== void 0 ? _c : -7.421875 * scaleFactor,\n actualBoundingBoxRight: (_d = metrics.actualBoundingBoxRight) !== null && _d !== void 0 ? _d : 75.732421875 * scaleFactor,\n alphabeticBaseline: (_e = metrics.alphabeticBaseline) !== null && _e !== void 0 ? _e : 0,\n emHeightAscent: (_f = metrics.emHeightAscent) !== null && _f !== void 0 ? _f : 100 * scaleFactor,\n emHeightDescent: (_g = metrics.emHeightDescent) !== null && _g !== void 0 ? _g : -20 * scaleFactor,\n fontBoundingBoxAscent: (_h = metrics.fontBoundingBoxAscent) !== null && _h !== void 0 ? _h : 91 * scaleFactor,\n fontBoundingBoxDescent: (_j = metrics.fontBoundingBoxDescent) !== null && _j !== void 0 ? _j : 21 * scaleFactor,\n hangingBaseline: (_k = metrics.hangingBaseline) !== null && _k !== void 0 ? _k : 72.80000305175781 * scaleFactor,\n ideographicBaseline: (_l = metrics.ideographicBaseline) !== null && _l !== void 0 ? _l : -21 * scaleFactor,\n width: metrics.width,\n height: fontSize,\n };\n }\n _getContextFont() {\n return (this.fontStyle() +\n SPACE +\n this.fontVariant() +\n SPACE +\n (this.fontSize() + PX_SPACE) +\n normalizeFontFamily(this.fontFamily()));\n }\n _addTextLine(line) {\n const align = this.align();\n if (align === JUSTIFY) {\n line = line.trim();\n }\n const width = this._getTextWidth(line);\n return this.textArr.push({\n text: line,\n width: width,\n lastInParagraph: false,\n });\n }\n _getTextWidth(text) {\n const letterSpacing = this.letterSpacing();\n const length = text.length;\n return getDummyContext().measureText(text).width + letterSpacing * length;\n }\n _setTextData() {\n let lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), shouldWrap = wrap !== NONE, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis();\n this.textArr = [];\n getDummyContext().font = this._getContextFont();\n const additionalWidth = shouldAddEllipsis\n ? this._getTextWidth(ELLIPSIS)\n : 0;\n for (let i = 0, max = lines.length; i < max; ++i) {\n let line = lines[i];\n let lineWidth = this._getTextWidth(line);\n if (fixedWidth && lineWidth > maxWidth) {\n while (line.length > 0) {\n let low = 0, high = stringToArray(line).length, match = '', matchWidth = 0;\n while (low < high) {\n const mid = (low + high) >>> 1, lineArray = stringToArray(line), substr = lineArray.slice(0, mid + 1).join(''), substrWidth = this._getTextWidth(substr);\n const shouldConsiderEllipsis = shouldAddEllipsis &&\n fixedHeight &&\n currentHeightPx + lineHeightPx > maxHeightPx;\n const effectiveWidth = shouldConsiderEllipsis\n ? substrWidth + additionalWidth\n : substrWidth;\n if (effectiveWidth <= maxWidth) {\n low = mid + 1;\n match = substr;\n matchWidth = substrWidth;\n }\n else {\n high = mid;\n }\n }\n if (match) {\n if (wrapAtWord) {\n const lineArray = stringToArray(line);\n const matchArray = stringToArray(match);\n const nextChar = lineArray[matchArray.length];\n const nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n let wrapIndex;\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n wrapIndex = matchArray.length;\n }\n else {\n const lastSpaceIndex = matchArray.lastIndexOf(SPACE);\n const lastDashIndex = matchArray.lastIndexOf(DASH);\n wrapIndex = Math.max(lastSpaceIndex, lastDashIndex) + 1;\n }\n if (wrapIndex > 0) {\n low = wrapIndex;\n match = lineArray.slice(0, low).join('');\n matchWidth = this._getTextWidth(match);\n }\n }\n match = match.trimRight();\n this._addTextLine(match);\n textWidth = Math.max(textWidth, matchWidth);\n currentHeightPx += lineHeightPx;\n const shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n if (shouldHandleEllipsis) {\n this._tryToAddEllipsisToLastLine();\n break;\n }\n const lineArray = stringToArray(line);\n line = lineArray.slice(low).join('').trimLeft();\n if (line.length > 0) {\n lineWidth = this._getTextWidth(line);\n if (lineWidth <= maxWidth) {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n break;\n }\n }\n }\n else {\n break;\n }\n }\n }\n else {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n if (this._shouldHandleEllipsis(currentHeightPx) && i < max - 1) {\n this._tryToAddEllipsisToLastLine();\n }\n }\n if (this.textArr[this.textArr.length - 1]) {\n this.textArr[this.textArr.length - 1].lastInParagraph = true;\n }\n if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n break;\n }\n }\n this.textHeight = fontSize;\n this.textWidth = textWidth;\n }\n _shouldHandleEllipsis(currentHeightPx) {\n const fontSize = +this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, height = this.attrs.height, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxHeightPx = height - padding * 2, wrap = this.wrap(), shouldWrap = wrap !== NONE;\n return (!shouldWrap ||\n (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx));\n }\n _tryToAddEllipsisToLastLine() {\n const width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n const lastLine = this.textArr[this.textArr.length - 1];\n if (!lastLine || !shouldAddEllipsis) {\n return;\n }\n if (fixedWidth) {\n const haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n if (!haveSpace) {\n lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n }\n }\n this.textArr.splice(this.textArr.length - 1, 1);\n this._addTextLine(lastLine.text + ELLIPSIS);\n }\n getStrokeScaleEnabled() {\n return true;\n }\n _useBufferCanvas() {\n const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n this.textDecoration().indexOf('line-through') !== -1;\n const hasShadow = this.hasShadow();\n if (hasLine && hasShadow) {\n return true;\n }\n return super._useBufferCanvas();\n }\n}\nText.prototype._fillFunc = _fillFunc;\nText.prototype._strokeFunc = _strokeFunc;\nText.prototype.className = TEXT_UPPER;\nText.prototype._attrsAffectingSize = [\n 'text',\n 'fontSize',\n 'padding',\n 'wrap',\n 'lineHeight',\n 'letterSpacing',\n];\n_registerNode(Text);\nFactory.overWriteSetter(Text, 'width', getNumberOrAutoValidator());\nFactory.overWriteSetter(Text, 'height', getNumberOrAutoValidator());\nFactory.addGetterSetter(Text, 'direction', INHERIT);\nFactory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory.addGetterSetter(Text, 'fontSize', 12, getNumberValidator());\nFactory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory.addGetterSetter(Text, 'padding', 0, getNumberValidator());\nFactory.addGetterSetter(Text, 'align', LEFT);\nFactory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory.addGetterSetter(Text, 'lineHeight', 1, getNumberValidator());\nFactory.addGetterSetter(Text, 'wrap', WORD);\nFactory.addGetterSetter(Text, 'ellipsis', false, getBooleanValidator());\nFactory.addGetterSetter(Text, 'letterSpacing', 0, getNumberValidator());\nFactory.addGetterSetter(Text, 'text', '', getStringValidator());\nFactory.addGetterSetter(Text, 'textDecoration', '');\nFactory.addGetterSetter(Text, 'charRenderFunc', undefined);\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Path } from \"./Path.js\";\nimport { Text, stringToArray } from \"./Text.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst EMPTY_STRING = '', NORMAL = 'normal';\nfunction _fillFunc(context) {\n context.fillText(this.partialText, 0, 0);\n}\nfunction _strokeFunc(context) {\n context.strokeText(this.partialText, 0, 0);\n}\nexport class TextPath extends Shape {\n constructor(config) {\n super(config);\n this.dummyCanvas = Util.createCanvasElement();\n this.dataArray = [];\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n this._setTextData();\n });\n this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva', this._setTextData);\n this._setTextData();\n }\n _getTextPathLength() {\n return Path.getPathLength(this.dataArray);\n }\n _getPointAtLength(length) {\n if (!this.attrs.data) {\n return null;\n }\n const totalLength = this.pathLength;\n if (length > totalLength) {\n return null;\n }\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.attrs.data);\n this.pathLength = this._getTextPathLength();\n }\n _sceneFunc(context) {\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', this.textBaseline());\n context.setAttr('textAlign', 'left');\n context.save();\n const textDecoration = this.textDecoration();\n const fill = this.fill();\n const fontSize = this.fontSize();\n const glyphInfo = this.glyphInfo;\n if (textDecoration === 'underline') {\n context.beginPath();\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n context.save();\n const p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n this.partialText = glyphInfo[i].text;\n context.fillStrokeShape(this);\n if (textDecoration === 'underline') {\n if (i === 0) {\n context.moveTo(0, fontSize / 2 + 1);\n }\n context.lineTo(fontSize, fontSize / 2 + 1);\n }\n context.restore();\n }\n if (textDecoration === 'underline') {\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n context.restore();\n }\n _hitFunc(context) {\n context.beginPath();\n const glyphInfo = this.glyphInfo;\n if (glyphInfo.length >= 1) {\n const p0 = glyphInfo[0].p0;\n context.moveTo(p0.x, p0.y);\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n const p1 = glyphInfo[i].p1;\n context.lineTo(p1.x, p1.y);\n }\n context.setAttr('lineWidth', this.fontSize());\n context.setAttr('strokeStyle', this.colorKey);\n context.stroke();\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n setText(text) {\n return Text.prototype.setText.call(this, text);\n }\n _getContextFont() {\n return Text.prototype._getContextFont.call(this);\n }\n _getTextSize(text) {\n const dummyCanvas = this.dummyCanvas;\n const _context = dummyCanvas.getContext('2d');\n _context.save();\n _context.font = this._getContextFont();\n const metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: parseInt(`${this.fontSize()}`, 10),\n };\n }\n _setTextData() {\n const charArr = stringToArray(this.text());\n const chars = [];\n let width = 0;\n for (let i = 0; i < charArr.length; i++) {\n chars.push({\n char: charArr[i],\n width: this._getTextSize(charArr[i]).width,\n });\n width += chars[i].width;\n }\n const { height } = this._getTextSize(this.attrs.text);\n this.textWidth = width;\n this.textHeight = height;\n this.glyphInfo = [];\n if (!this.attrs.data) {\n return null;\n }\n const letterSpacing = this.letterSpacing();\n const align = this.align();\n const kerningFunc = this.kerningFunc();\n const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n let offset = 0;\n if (align === 'center') {\n offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n }\n if (align === 'right') {\n offset = Math.max(0, this.pathLength - textWidth);\n }\n let offsetToGlyph = offset;\n for (let i = 0; i < chars.length; i++) {\n const charStartPoint = this._getPointAtLength(offsetToGlyph);\n if (!charStartPoint)\n return;\n const char = chars[i].char;\n let glyphWidth = chars[i].width + letterSpacing;\n if (char === ' ' && align === 'justify') {\n const numberOfSpaces = this.text().split(' ').length - 1;\n glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n }\n const charEndPoint = this._getPointAtLength(offsetToGlyph + glyphWidth);\n if (!charEndPoint) {\n return;\n }\n const width = Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n let kern = 0;\n if (kerningFunc) {\n try {\n kern = kerningFunc(chars[i - 1].char, char) * this.fontSize();\n }\n catch (e) {\n kern = 0;\n }\n }\n charStartPoint.x += kern;\n charEndPoint.x += kern;\n this.textWidth += kern;\n const midpoint = Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n this.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: charArr[i],\n rotation: rotation,\n p0: charStartPoint,\n p1: charEndPoint,\n });\n offsetToGlyph += glyphWidth;\n }\n }\n getSelfRect() {\n if (!this.glyphInfo.length) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n const points = [];\n this.glyphInfo.forEach(function (info) {\n points.push(info.p0.x);\n points.push(info.p0.y);\n points.push(info.p1.x);\n points.push(info.p1.y);\n });\n let minX = points[0] || 0;\n let maxX = points[0] || 0;\n let minY = points[1] || 0;\n let maxY = points[1] || 0;\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n const fontSize = this.fontSize();\n return {\n x: minX - fontSize / 2,\n y: minY - fontSize / 2,\n width: maxX - minX + fontSize,\n height: maxY - minY + fontSize,\n };\n }\n destroy() {\n Util.releaseCanvas(this.dummyCanvas);\n return super.destroy();\n }\n}\nTextPath.prototype._fillFunc = _fillFunc;\nTextPath.prototype._strokeFunc = _strokeFunc;\nTextPath.prototype._fillFuncHit = _fillFunc;\nTextPath.prototype._strokeFuncHit = _strokeFunc;\nTextPath.prototype.className = 'TextPath';\nTextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\n_registerNode(TextPath);\nFactory.addGetterSetter(TextPath, 'data');\nFactory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory.addGetterSetter(TextPath, 'fontSize', 12, getNumberValidator());\nFactory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory.addGetterSetter(TextPath, 'align', 'left');\nFactory.addGetterSetter(TextPath, 'letterSpacing', 0, getNumberValidator());\nFactory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory.addGetterSetter(TextPath, 'textDecoration', '');\nFactory.addGetterSetter(TextPath, 'kerningFunc', undefined);\n","import { Util, Transform } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Rect } from \"./Rect.js\";\nimport { Group } from \"../Group.js\";\nimport { Konva } from \"../Global.js\";\nimport { getBooleanValidator, getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst EVENTS_NAME = 'tr-konva';\nconst ATTR_CHANGE_LIST = [\n 'resizeEnabledChange',\n 'rotateAnchorOffsetChange',\n 'rotateEnabledChange',\n 'enabledAnchorsChange',\n 'anchorSizeChange',\n 'borderEnabledChange',\n 'borderStrokeChange',\n 'borderStrokeWidthChange',\n 'borderDashChange',\n 'anchorStrokeChange',\n 'anchorStrokeWidthChange',\n 'anchorFillChange',\n 'anchorCornerRadiusChange',\n 'ignoreStrokeChange',\n 'anchorStyleFuncChange',\n]\n .map((e) => e + `.${EVENTS_NAME}`)\n .join(' ');\nconst NODES_RECT = 'nodesRect';\nconst TRANSFORM_CHANGE_STR = [\n 'widthChange',\n 'heightChange',\n 'scaleXChange',\n 'scaleYChange',\n 'skewXChange',\n 'skewYChange',\n 'rotationChange',\n 'offsetXChange',\n 'offsetYChange',\n 'transformsEnabledChange',\n 'strokeWidthChange',\n 'draggableChange',\n];\nconst ANGLES = {\n 'top-left': -45,\n 'top-center': 0,\n 'top-right': 45,\n 'middle-right': -90,\n 'middle-left': 90,\n 'bottom-left': -135,\n 'bottom-center': 180,\n 'bottom-right': 135,\n};\nconst TOUCH_DEVICE = 'ontouchstart' in Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n if (anchorName === 'rotater') {\n return rotateCursor;\n }\n rad += Util.degToRad(ANGLES[anchorName] || 0);\n const angle = ((Util.radToDeg(rad) % 360) + 360) % 360;\n if (Util._inRange(angle, 315 + 22.5, 360) || Util._inRange(angle, 0, 22.5)) {\n return 'ns-resize';\n }\n else if (Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n return 'nwse-resize';\n }\n else if (Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n return 'ns-resize';\n }\n else if (Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n return 'nwse-resize';\n }\n else {\n Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n return 'pointer';\n }\n}\nconst ANCHORS_NAMES = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-right',\n 'middle-left',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\nconst MAX_SAFE_INTEGER = 100000000;\nfunction getCenter(shape) {\n return {\n x: shape.x +\n (shape.width / 2) * Math.cos(shape.rotation) +\n (shape.height / 2) * Math.sin(-shape.rotation),\n y: shape.y +\n (shape.height / 2) * Math.cos(shape.rotation) +\n (shape.width / 2) * Math.sin(shape.rotation),\n };\n}\nfunction rotateAroundPoint(shape, angleRad, point) {\n const x = point.x +\n (shape.x - point.x) * Math.cos(angleRad) -\n (shape.y - point.y) * Math.sin(angleRad);\n const y = point.y +\n (shape.x - point.x) * Math.sin(angleRad) +\n (shape.y - point.y) * Math.cos(angleRad);\n return {\n ...shape,\n rotation: shape.rotation + angleRad,\n x,\n y,\n };\n}\nfunction rotateAroundCenter(shape, deltaRad) {\n const center = getCenter(shape);\n return rotateAroundPoint(shape, deltaRad, center);\n}\nfunction getSnap(snaps, newRotationRad, tol) {\n let snapped = newRotationRad;\n for (let i = 0; i < snaps.length; i++) {\n const angle = Konva.getAngle(snaps[i]);\n const absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\n const dif = Math.min(absDiff, Math.PI * 2 - absDiff);\n if (dif < tol) {\n snapped = angle;\n }\n }\n return snapped;\n}\nlet activeTransformersCount = 0;\nexport class Transformer extends Group {\n constructor(config) {\n super(config);\n this._movingAnchorName = null;\n this._transforming = false;\n this._createElements();\n this._handleMouseMove = this._handleMouseMove.bind(this);\n this._handleMouseUp = this._handleMouseUp.bind(this);\n this.update = this.update.bind(this);\n this.on(ATTR_CHANGE_LIST, this.update);\n if (this.getNode()) {\n this.update();\n }\n }\n attachTo(node) {\n this.setNode(node);\n return this;\n }\n setNode(node) {\n Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\n return this.setNodes([node]);\n }\n getNode() {\n return this._nodes && this._nodes[0];\n }\n _getEventNamespace() {\n return EVENTS_NAME + this._id;\n }\n setNodes(nodes = []) {\n if (this._nodes && this._nodes.length) {\n this.detach();\n }\n const filteredNodes = nodes.filter((node) => {\n if (node.isAncestorOf(this)) {\n Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n return false;\n }\n return true;\n });\n this._nodes = nodes = filteredNodes;\n if (nodes.length === 1 && this.useSingleNodeRotation()) {\n this.rotation(nodes[0].getAbsoluteRotation());\n }\n else {\n this.rotation(0);\n }\n this._nodes.forEach((node) => {\n const onChange = () => {\n if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n this.rotation(this.nodes()[0].getAbsoluteRotation());\n }\n this._resetTransformCache();\n if (!this._transforming && !this.isDragging()) {\n this.update();\n }\n };\n if (node._attrsAffectingSize.length) {\n const additionalEvents = node._attrsAffectingSize\n .map((prop) => prop + 'Change.' + this._getEventNamespace())\n .join(' ');\n node.on(additionalEvents, onChange);\n }\n node.on(TRANSFORM_CHANGE_STR.map((e) => e + `.${this._getEventNamespace()}`).join(' '), onChange);\n node.on(`absoluteTransformChange.${this._getEventNamespace()}`, onChange);\n this._proxyDrag(node);\n });\n this._resetTransformCache();\n const elementsCreated = !!this.findOne('.top-left');\n if (elementsCreated) {\n this.update();\n }\n return this;\n }\n _proxyDrag(node) {\n let lastPos;\n node.on(`dragstart.${this._getEventNamespace()}`, (e) => {\n lastPos = node.getAbsolutePosition();\n if (!this.isDragging() && node !== this.findOne('.back')) {\n this.startDrag(e, false);\n }\n });\n node.on(`dragmove.${this._getEventNamespace()}`, (e) => {\n if (!lastPos) {\n return;\n }\n const abs = node.getAbsolutePosition();\n const dx = abs.x - lastPos.x;\n const dy = abs.y - lastPos.y;\n this.nodes().forEach((otherNode) => {\n if (otherNode === node) {\n return;\n }\n if (otherNode.isDragging()) {\n return;\n }\n const otherAbs = otherNode.getAbsolutePosition();\n otherNode.setAbsolutePosition({\n x: otherAbs.x + dx,\n y: otherAbs.y + dy,\n });\n otherNode.startDrag(e);\n });\n lastPos = null;\n });\n }\n getNodes() {\n return this._nodes || [];\n }\n getActiveAnchor() {\n return this._movingAnchorName;\n }\n detach() {\n if (this._nodes) {\n this._nodes.forEach((node) => {\n node.off('.' + this._getEventNamespace());\n });\n }\n this._nodes = [];\n this._resetTransformCache();\n }\n _resetTransformCache() {\n this._clearCache(NODES_RECT);\n this._clearCache('transform');\n this._clearSelfAndDescendantCache('absoluteTransform');\n }\n _getNodeRect() {\n return this._getCache(NODES_RECT, this.__getNodeRect);\n }\n __getNodeShape(node, rot = this.rotation(), relative) {\n const rect = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const absScale = node.getAbsoluteScale(relative);\n const absPos = node.getAbsolutePosition(relative);\n const dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n const dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n const rotation = (Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\n (Math.PI * 2);\n const box = {\n x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\n y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\n width: rect.width * absScale.x,\n height: rect.height * absScale.y,\n rotation: rotation,\n };\n return rotateAroundPoint(box, -Konva.getAngle(rot), {\n x: 0,\n y: 0,\n });\n }\n __getNodeRect() {\n const node = this.getNode();\n if (!node) {\n return {\n x: -MAX_SAFE_INTEGER,\n y: -MAX_SAFE_INTEGER,\n width: 0,\n height: 0,\n rotation: 0,\n };\n }\n const totalPoints = [];\n this.nodes().map((node) => {\n const box = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n const trans = node.getAbsoluteTransform();\n points.forEach(function (point) {\n const transformed = trans.point(point);\n totalPoints.push(transformed);\n });\n });\n const tr = new Transform();\n tr.rotate(-Konva.getAngle(this.rotation()));\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n totalPoints.forEach(function (point) {\n const transformed = tr.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n tr.invert();\n const p = tr.point({ x: minX, y: minY });\n return {\n x: p.x,\n y: p.y,\n width: maxX - minX,\n height: maxY - minY,\n rotation: Konva.getAngle(this.rotation()),\n };\n }\n getX() {\n return this._getNodeRect().x;\n }\n getY() {\n return this._getNodeRect().y;\n }\n getWidth() {\n return this._getNodeRect().width;\n }\n getHeight() {\n return this._getNodeRect().height;\n }\n _createElements() {\n this._createBack();\n ANCHORS_NAMES.forEach((name) => {\n this._createAnchor(name);\n });\n this._createAnchor('rotater');\n }\n _createAnchor(name) {\n const anchor = new Rect({\n stroke: 'rgb(0, 161, 255)',\n fill: 'white',\n strokeWidth: 1,\n name: name + ' _anchor',\n dragDistance: 0,\n draggable: true,\n hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\n });\n const self = this;\n anchor.on('mousedown touchstart', function (e) {\n self._handleMouseDown(e);\n });\n anchor.on('dragstart', (e) => {\n anchor.stopDrag();\n e.cancelBubble = true;\n });\n anchor.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n anchor.on('mouseenter', () => {\n const rad = Konva.getAngle(this.rotation());\n const rotateCursor = this.rotateAnchorCursor();\n const cursor = getCursor(name, rad, rotateCursor);\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = cursor);\n this._cursorChange = true;\n });\n anchor.on('mouseout', () => {\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = '');\n this._cursorChange = false;\n });\n this.add(anchor);\n }\n _createBack() {\n const back = new Shape({\n name: 'back',\n width: 0,\n height: 0,\n sceneFunc(ctx, shape) {\n const tr = shape.getParent();\n const padding = tr.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.moveTo(shape.width() / 2, -padding);\n if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n ctx.lineTo(shape.width() / 2, -tr.rotateAnchorOffset() * Util._sign(shape.height()) - padding);\n }\n ctx.fillStrokeShape(shape);\n },\n hitFunc: (ctx, shape) => {\n if (!this.shouldOverdrawWholeArea()) {\n return;\n }\n const padding = this.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.fillStrokeShape(shape);\n },\n });\n this.add(back);\n this._proxyDrag(back);\n back.on('dragstart', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragmove', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n this.on('dragmove', (e) => {\n this.update();\n });\n }\n _handleMouseDown(e) {\n if (this._transforming) {\n return;\n }\n this._movingAnchorName = e.target.name().split(' ')[0];\n const attrs = this._getNodeRect();\n const width = attrs.width;\n const height = attrs.height;\n const hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n this.sin = Math.abs(height / hypotenuse);\n this.cos = Math.abs(width / hypotenuse);\n if (typeof window !== 'undefined') {\n window.addEventListener('mousemove', this._handleMouseMove);\n window.addEventListener('touchmove', this._handleMouseMove);\n window.addEventListener('mouseup', this._handleMouseUp, true);\n window.addEventListener('touchend', this._handleMouseUp, true);\n }\n this._transforming = true;\n const ap = e.target.getAbsolutePosition();\n const pos = e.target.getStage().getPointerPosition();\n this._anchorDragOffset = {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n };\n activeTransformersCount++;\n this._fire('transformstart', { evt: e.evt, target: this.getNode() });\n this._nodes.forEach((target) => {\n target._fire('transformstart', { evt: e.evt, target });\n });\n }\n _handleMouseMove(e) {\n let x, y, newHypotenuse;\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n const stage = anchorNode.getStage();\n stage.setPointersPositions(e);\n const pp = stage.getPointerPosition();\n let newNodePos = {\n x: pp.x - this._anchorDragOffset.x,\n y: pp.y - this._anchorDragOffset.y,\n };\n const oldAbs = anchorNode.getAbsolutePosition();\n if (this.anchorDragBoundFunc()) {\n newNodePos = this.anchorDragBoundFunc()(oldAbs, newNodePos, e);\n }\n anchorNode.setAbsolutePosition(newNodePos);\n const newAbs = anchorNode.getAbsolutePosition();\n if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n return;\n }\n if (this._movingAnchorName === 'rotater') {\n const attrs = this._getNodeRect();\n x = anchorNode.x() - attrs.width / 2;\n y = -anchorNode.y() + attrs.height / 2;\n let delta = Math.atan2(-y, x) + Math.PI / 2;\n if (attrs.height < 0) {\n delta -= Math.PI;\n }\n const oldRotation = Konva.getAngle(this.rotation());\n const newRotation = oldRotation + delta;\n const tol = Konva.getAngle(this.rotationSnapTolerance());\n const snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\n const diff = snappedRot - attrs.rotation;\n const shape = rotateAroundCenter(attrs, diff);\n this._fitNodesInto(shape, e);\n return;\n }\n const shiftBehavior = this.shiftBehavior();\n let keepProportion;\n if (shiftBehavior === 'inverted') {\n keepProportion = this.keepRatio() && !e.shiftKey;\n }\n else if (shiftBehavior === 'none') {\n keepProportion = this.keepRatio();\n }\n else {\n keepProportion = this.keepRatio() || e.shiftKey;\n }\n let centeredScaling = this.centeredScaling() || e.altKey;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-right').x(),\n y: this.findOne('.bottom-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n const reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-left').x(comparePoint.x - x);\n this.findOne('.top-left').y(comparePoint.y - y);\n }\n }\n else if (this._movingAnchorName === 'top-center') {\n this.findOne('.top-left').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'top-right') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-left').x(),\n y: this.findOne('.bottom-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n const reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-right').x(comparePoint.x + x);\n this.findOne('.top-right').y(comparePoint.y - y);\n }\n var pos = anchorNode.position();\n this.findOne('.top-left').y(pos.y);\n this.findOne('.bottom-right').x(pos.x);\n }\n else if (this._movingAnchorName === 'middle-left') {\n this.findOne('.top-left').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'middle-right') {\n this.findOne('.bottom-right').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'bottom-left') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-right').x(),\n y: this.findOne('.top-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n const reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n const reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n anchorNode.x(comparePoint.x - x);\n anchorNode.y(comparePoint.y + y);\n }\n pos = anchorNode.position();\n this.findOne('.top-left').x(pos.x);\n this.findOne('.bottom-right').y(pos.y);\n }\n else if (this._movingAnchorName === 'bottom-center') {\n this.findOne('.bottom-right').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'bottom-right') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-left').x(),\n y: this.findOne('.top-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n const reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.bottom-right').x(comparePoint.x + x);\n this.findOne('.bottom-right').y(comparePoint.y + y);\n }\n }\n else {\n console.error(new Error('Wrong position argument of selection resizer: ' +\n this._movingAnchorName));\n }\n centeredScaling = this.centeredScaling() || e.altKey;\n if (centeredScaling) {\n const topLeft = this.findOne('.top-left');\n const bottomRight = this.findOne('.bottom-right');\n const topOffsetX = topLeft.x();\n const topOffsetY = topLeft.y();\n const bottomOffsetX = this.getWidth() - bottomRight.x();\n const bottomOffsetY = this.getHeight() - bottomRight.y();\n bottomRight.move({\n x: -topOffsetX,\n y: -topOffsetY,\n });\n topLeft.move({\n x: bottomOffsetX,\n y: bottomOffsetY,\n });\n }\n const absPos = this.findOne('.top-left').getAbsolutePosition();\n x = absPos.x;\n y = absPos.y;\n const width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n const height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\n this._fitNodesInto({\n x: x,\n y: y,\n width: width,\n height: height,\n rotation: Konva.getAngle(this.rotation()),\n }, e);\n }\n _handleMouseUp(e) {\n this._removeEvents(e);\n }\n getAbsoluteTransform() {\n return this.getTransform();\n }\n _removeEvents(e) {\n var _a;\n if (this._transforming) {\n this._transforming = false;\n if (typeof window !== 'undefined') {\n window.removeEventListener('mousemove', this._handleMouseMove);\n window.removeEventListener('touchmove', this._handleMouseMove);\n window.removeEventListener('mouseup', this._handleMouseUp, true);\n window.removeEventListener('touchend', this._handleMouseUp, true);\n }\n const node = this.getNode();\n activeTransformersCount--;\n this._fire('transformend', { evt: e, target: node });\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n if (node) {\n this._nodes.forEach((target) => {\n var _a;\n target._fire('transformend', { evt: e, target });\n (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n }\n this._movingAnchorName = null;\n }\n }\n _fitNodesInto(newAttrs, evt) {\n const oldAttrs = this._getNodeRect();\n const minSize = 1;\n if (Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n if (Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n const t = new Transform();\n t.rotate(Konva.getAngle(this.rotation()));\n if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('left') >= 0) {\n const offset = t.point({\n x: -this.padding() * 2,\n y: 0,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.width += this.padding() * 2;\n this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n }\n else if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('right') >= 0) {\n const offset = t.point({\n x: this.padding() * 2,\n y: 0,\n });\n this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.width += this.padding() * 2;\n }\n if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('top') >= 0) {\n const offset = t.point({\n x: 0,\n y: -this.padding() * 2,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n else if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('bottom') >= 0) {\n const offset = t.point({\n x: 0,\n y: this.padding() * 2,\n });\n this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n if (this.boundBoxFunc()) {\n const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n if (bounded) {\n newAttrs = bounded;\n }\n else {\n Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n }\n }\n const baseSize = 10000000;\n const oldTr = new Transform();\n oldTr.translate(oldAttrs.x, oldAttrs.y);\n oldTr.rotate(oldAttrs.rotation);\n oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\n const newTr = new Transform();\n const newScaleX = newAttrs.width / baseSize;\n const newScaleY = newAttrs.height / baseSize;\n if (this.flipEnabled() === false) {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n }\n else {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.scale(newScaleX, newScaleY);\n }\n const delta = newTr.multiply(oldTr.invert());\n this._nodes.forEach((node) => {\n var _a;\n if (!node.getStage()) {\n return;\n }\n const parentTransform = node.getParent().getAbsoluteTransform();\n const localTransform = node.getTransform().copy();\n localTransform.translate(node.offsetX(), node.offsetY());\n const newLocalTransform = new Transform();\n newLocalTransform\n .multiply(parentTransform.copy().invert())\n .multiply(delta)\n .multiply(parentTransform)\n .multiply(localTransform);\n const attrs = newLocalTransform.decompose();\n node.setAttrs(attrs);\n (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n this.rotation(Util._getRotation(newAttrs.rotation));\n this._nodes.forEach((node) => {\n this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n });\n this._resetTransformCache();\n this.update();\n this.getLayer().batchDraw();\n }\n forceUpdate() {\n this._resetTransformCache();\n this.update();\n }\n _batchChangeChild(selector, attrs) {\n const anchor = this.findOne(selector);\n anchor.setAttrs(attrs);\n }\n update() {\n var _a;\n const attrs = this._getNodeRect();\n this.rotation(Util._getRotation(attrs.rotation));\n const width = attrs.width;\n const height = attrs.height;\n const enabledAnchors = this.enabledAnchors();\n const resizeEnabled = this.resizeEnabled();\n const padding = this.padding();\n const anchorSize = this.anchorSize();\n const anchors = this.find('._anchor');\n anchors.forEach((node) => {\n node.setAttrs({\n width: anchorSize,\n height: anchorSize,\n offsetX: anchorSize / 2,\n offsetY: anchorSize / 2,\n stroke: this.anchorStroke(),\n strokeWidth: this.anchorStrokeWidth(),\n fill: this.anchorFill(),\n cornerRadius: this.anchorCornerRadius(),\n });\n });\n this._batchChangeChild('.top-left', {\n x: 0,\n y: 0,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n });\n this._batchChangeChild('.top-center', {\n x: width / 2,\n y: 0,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n });\n this._batchChangeChild('.top-right', {\n x: width,\n y: 0,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n });\n this._batchChangeChild('.middle-left', {\n x: 0,\n y: height / 2,\n offsetX: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n });\n this._batchChangeChild('.middle-right', {\n x: width,\n y: height / 2,\n offsetX: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n });\n this._batchChangeChild('.bottom-left', {\n x: 0,\n y: height,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n });\n this._batchChangeChild('.bottom-center', {\n x: width / 2,\n y: height,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n });\n this._batchChangeChild('.bottom-right', {\n x: width,\n y: height,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n });\n this._batchChangeChild('.rotater', {\n x: width / 2,\n y: -this.rotateAnchorOffset() * Util._sign(height) - padding,\n visible: this.rotateEnabled(),\n });\n this._batchChangeChild('.back', {\n width: width,\n height: height,\n visible: this.borderEnabled(),\n stroke: this.borderStroke(),\n strokeWidth: this.borderStrokeWidth(),\n dash: this.borderDash(),\n draggable: this.nodes().some((node) => node.draggable()),\n x: 0,\n y: 0,\n });\n const styleFunc = this.anchorStyleFunc();\n if (styleFunc) {\n anchors.forEach((node) => {\n styleFunc(node);\n });\n }\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n }\n isTransforming() {\n return this._transforming;\n }\n stopTransform() {\n if (this._transforming) {\n this._removeEvents();\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n if (anchorNode) {\n anchorNode.stopDrag();\n }\n }\n }\n destroy() {\n if (this.getStage() && this._cursorChange) {\n this.getStage().content && (this.getStage().content.style.cursor = '');\n }\n Group.prototype.destroy.call(this);\n this.detach();\n this._removeEvents();\n return this;\n }\n toObject() {\n return Node.prototype.toObject.call(this);\n }\n clone(obj) {\n const node = Node.prototype.clone.call(this, obj);\n return node;\n }\n getClientRect() {\n if (this.nodes().length > 0) {\n return super.getClientRect();\n }\n else {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n }\n}\nTransformer.isTransforming = () => {\n return activeTransformersCount > 0;\n};\nfunction validateAnchors(val) {\n if (!(val instanceof Array)) {\n Util.warn('enabledAnchors value should be an array');\n }\n if (val instanceof Array) {\n val.forEach(function (name) {\n if (ANCHORS_NAMES.indexOf(name) === -1) {\n Util.warn('Unknown anchor name: ' +\n name +\n '. Available names are: ' +\n ANCHORS_NAMES.join(', '));\n }\n });\n }\n return val || [];\n}\nTransformer.prototype.className = 'Transformer';\n_registerNode(Transformer);\nFactory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory.addGetterSetter(Transformer, 'flipEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory.addGetterSetter(Transformer, 'anchorSize', 10, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderDash');\nFactory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory.addGetterSetter(Transformer, 'padding', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'nodes');\nFactory.addGetterSetter(Transformer, 'node');\nFactory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory.backCompat(Transformer, {\n lineEnabled: 'borderEnabled',\n rotateHandlerOffset: 'rotateAnchorOffset',\n enabledHandlers: 'enabledAnchors',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Wedge extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.radius(), 0, Konva.getAngle(this.angle()), this.clockwise());\n context.lineTo(0, 0);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n_registerNode(Wedge);\nFactory.addGetterSetter(Wedge, 'radius', 0, getNumberValidator());\nFactory.addGetterSetter(Wedge, 'angle', 0, getNumberValidator());\nFactory.addGetterSetter(Wedge, 'clockwise', false);\nFactory.backCompat(Wedge, {\n angleDeg: 'angle',\n getAngleDeg: 'getAngle',\n setAngleDeg: 'setAngle',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction BlurStack() {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n}\nconst mul_table = [\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,\n 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,\n 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,\n 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,\n 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,\n 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,\n 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,\n 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,\n 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,\n 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,\n 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,\n 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,\n 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,\n 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,\n 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,\n 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259,\n];\nconst shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17,\n 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,\n 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,\n 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24,\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n const pixels = imageData.data, width = imageData.width, height = imageData.height;\n let p, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\n const div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n let stackEnd = null, stack = stackStart, stackIn = null, stackOut = null;\n for (let i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n yw = yi = 0;\n for (let y = 0; y < height; y++) {\n r_in_sum =\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_sum =\n g_sum =\n b_sum =\n a_sum =\n 0;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (let i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n for (let i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n }\n stackIn = stackStart;\n stackOut = stackEnd;\n for (let x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa !== 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n r_in_sum += stackIn.r = pixels[p];\n g_in_sum += stackIn.g = pixels[p + 1];\n b_in_sum += stackIn.b = pixels[p + 2];\n a_in_sum += stackIn.a = pixels[p + 3];\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += 4;\n }\n yw += width;\n }\n for (let x = 0; x < width; x++) {\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_in_sum =\n g_sum =\n b_sum =\n a_sum =\n r_sum =\n 0;\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (let i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n let yp = width;\n for (let i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n if (i < heightMinus1) {\n yp += width;\n }\n }\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (let y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p =\n (x +\n ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\n 2;\n r_sum += r_in_sum += stackIn.r = pixels[p];\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n}\nexport const Blur = function Blur(imageData) {\n const radius = Math.round(this.blurRadius());\n if (radius > 0) {\n filterGaussBlurRGBA(imageData, radius);\n }\n};\nFactory.addGetterSetter(Node, 'blurRadius', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Brighten = function (imageData) {\n const brightness = this.brightness() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] += brightness;\n data[i + 1] += brightness;\n data[i + 2] += brightness;\n }\n};\nFactory.addGetterSetter(Node, 'brightness', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Contrast = function (imageData) {\n const adjust = Math.pow((this.contrast() + 100) / 100, 2);\n const data = imageData.data, nPixels = data.length;\n let red = 150, green = 150, blue = 150;\n for (let i = 0; i < nPixels; i += 4) {\n red = data[i];\n green = data[i + 1];\n blue = data[i + 2];\n red /= 255;\n red -= 0.5;\n red *= adjust;\n red += 0.5;\n red *= 255;\n green /= 255;\n green -= 0.5;\n green *= adjust;\n green += 0.5;\n green *= 255;\n blue /= 255;\n blue -= 0.5;\n blue *= adjust;\n blue += 0.5;\n blue *= 255;\n red = red < 0 ? 0 : red > 255 ? 255 : red;\n green = green < 0 ? 0 : green > 255 ? 255 : green;\n blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\n data[i] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n }\n};\nFactory.addGetterSetter(Node, 'contrast', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n const fromRange = fromMax - fromMin, toRange = toMax - toMin;\n if (fromRange === 0) {\n return toMin + toRange / 2;\n }\n if (toRange === 0) {\n return toMin;\n }\n let toValue = (fromValue - fromMin) / fromRange;\n toValue = toRange * toValue + toMin;\n return toValue;\n}\nexport const Enhance = function (imageData) {\n const data = imageData.data, nSubPixels = data.length;\n let rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b;\n const enhanceAmount = this.enhance();\n if (enhanceAmount === 0) {\n return;\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n r = data[i + 0];\n if (r < rMin) {\n rMin = r;\n }\n else if (r > rMax) {\n rMax = r;\n }\n g = data[i + 1];\n if (g < gMin) {\n gMin = g;\n }\n else if (g > gMax) {\n gMax = g;\n }\n b = data[i + 2];\n if (b < bMin) {\n bMin = b;\n }\n else if (b > bMax) {\n bMax = b;\n }\n }\n if (rMax === rMin) {\n rMax = 255;\n rMin = 0;\n }\n if (gMax === gMin) {\n gMax = 255;\n gMin = 0;\n }\n if (bMax === bMin) {\n bMax = 255;\n bMin = 0;\n }\n let rGoalMax, rGoalMin, gGoalMax, gGoalMin, bGoalMax, bGoalMin;\n if (enhanceAmount > 0) {\n rGoalMax = rMax + enhanceAmount * (255 - rMax);\n rGoalMin = rMin - enhanceAmount * (rMin - 0);\n gGoalMax = gMax + enhanceAmount * (255 - gMax);\n gGoalMin = gMin - enhanceAmount * (gMin - 0);\n bGoalMax = bMax + enhanceAmount * (255 - bMax);\n bGoalMin = bMin - enhanceAmount * (bMin - 0);\n }\n else {\n const rMid = (rMax + rMin) * 0.5;\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n const gMid = (gMax + gMin) * 0.5;\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n const bMid = (bMax + bMin) * 0.5;\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\n data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\n data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\n }\n};\nFactory.addGetterSetter(Node, 'enhance', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Emboss = function (imageData) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const data = imageData.data;\n const w = imageData.width;\n const h = imageData.height;\n const strength01 = Math.min(1, Math.max(0, (_b = (_a = this.embossStrength) === null || _a === void 0 ? void 0 : _a.call(this)) !== null && _b !== void 0 ? _b : 0.5));\n const whiteLevel01 = Math.min(1, Math.max(0, (_d = (_c = this.embossWhiteLevel) === null || _c === void 0 ? void 0 : _c.call(this)) !== null && _d !== void 0 ? _d : 0.5));\n const directionMap = {\n 'top-left': 315,\n top: 270,\n 'top-right': 225,\n right: 180,\n 'bottom-right': 135,\n bottom: 90,\n 'bottom-left': 45,\n left: 0,\n };\n const directionDeg = (_g = directionMap[(_f = (_e = this.embossDirection) === null || _e === void 0 ? void 0 : _e.call(this)) !== null && _f !== void 0 ? _f : 'top-left']) !== null && _g !== void 0 ? _g : 315;\n const blend = !!((_j = (_h = this.embossBlend) === null || _h === void 0 ? void 0 : _h.call(this)) !== null && _j !== void 0 ? _j : false);\n const strength = strength01 * 10;\n const bias = whiteLevel01 * 255;\n const dirRad = (directionDeg * Math.PI) / 180;\n const cx = Math.cos(dirRad);\n const cy = Math.sin(dirRad);\n const SCALE = (128 / 1020) * strength;\n const src = new Uint8ClampedArray(data);\n const lum = new Float32Array(w * h);\n for (let p = 0, i = 0; i < data.length; i += 4, p++) {\n lum[p] = 0.2126 * src[i] + 0.7152 * src[i + 1] + 0.0722 * src[i + 2];\n }\n const Gx = [-1, 0, 1, -2, 0, 2, -1, 0, 1];\n const Gy = [-1, -2, -1, 0, 0, 0, 1, 2, 1];\n const OFF = [-w - 1, -w, -w + 1, -1, 0, 1, w - 1, w, w + 1];\n const clamp8 = (v) => (v < 0 ? 0 : v > 255 ? 255 : v);\n for (let y = 1; y < h - 1; y++) {\n for (let x = 1; x < w - 1; x++) {\n const p = y * w + x;\n let sx = 0, sy = 0;\n sx += lum[p + OFF[0]] * Gx[0];\n sy += lum[p + OFF[0]] * Gy[0];\n sx += lum[p + OFF[1]] * Gx[1];\n sy += lum[p + OFF[1]] * Gy[1];\n sx += lum[p + OFF[2]] * Gx[2];\n sy += lum[p + OFF[2]] * Gy[2];\n sx += lum[p + OFF[3]] * Gx[3];\n sy += lum[p + OFF[3]] * Gy[3];\n sx += lum[p + OFF[5]] * Gx[5];\n sy += lum[p + OFF[5]] * Gy[5];\n sx += lum[p + OFF[6]] * Gx[6];\n sy += lum[p + OFF[6]] * Gy[6];\n sx += lum[p + OFF[7]] * Gx[7];\n sy += lum[p + OFF[7]] * Gy[7];\n sx += lum[p + OFF[8]] * Gx[8];\n sy += lum[p + OFF[8]] * Gy[8];\n const r = cx * sx + cy * sy;\n const outGray = clamp8(bias + r * SCALE);\n const o = p * 4;\n if (blend) {\n const delta = outGray - bias;\n data[o] = clamp8(src[o] + delta);\n data[o + 1] = clamp8(src[o + 1] + delta);\n data[o + 2] = clamp8(src[o + 2] + delta);\n data[o + 3] = src[o + 3];\n }\n else {\n data[o] = data[o + 1] = data[o + 2] = outGray;\n data[o + 3] = src[o + 3];\n }\n }\n }\n for (let x = 0; x < w; x++) {\n let oTop = x * 4, oBot = ((h - 1) * w + x) * 4;\n data[oTop] = src[oTop];\n data[oTop + 1] = src[oTop + 1];\n data[oTop + 2] = src[oTop + 2];\n data[oTop + 3] = src[oTop + 3];\n data[oBot] = src[oBot];\n data[oBot + 1] = src[oBot + 1];\n data[oBot + 2] = src[oBot + 2];\n data[oBot + 3] = src[oBot + 3];\n }\n for (let y = 1; y < h - 1; y++) {\n let oL = y * w * 4, oR = (y * w + (w - 1)) * 4;\n data[oL] = src[oL];\n data[oL + 1] = src[oL + 1];\n data[oL + 2] = src[oL + 2];\n data[oL + 3] = src[oL + 3];\n data[oR] = src[oR];\n data[oR + 1] = src[oR + 1];\n data[oR + 2] = src[oR + 2];\n data[oR + 3] = src[oR + 3];\n }\n return imageData;\n};\nFactory.addGetterSetter(Node, 'embossStrength', 0.5, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossWhiteLevel', 0.5, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossDirection', 'top-left', undefined, Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossBlend', false, undefined, Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nFactory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'luminance', 0, getNumberValidator(), Factory.afterSetFilter);\nexport const HSL = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n let r, g, b, a;\n for (let i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b + l;\n data[i + 1] = gr * r + gg * g + gb * b + l;\n data[i + 2] = br * r + bg * g + bb * b + l;\n data[i + 3] = a;\n }\n};\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const HSV = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n for (let i = 0; i < nPixels; i += 4) {\n const r = data[i + 0];\n const g = data[i + 1];\n const b = data[i + 2];\n const a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b;\n data[i + 1] = gr * r + gg * g + gb * b;\n data[i + 2] = br * r + bg * g + bb * b;\n data[i + 3] = a;\n }\n};\nFactory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'value', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction pixelAt(idata, x, y) {\n let idx = (y * idata.width + x) * 4;\n const d = [];\n d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\n return d;\n}\nfunction rgbDistance(p1, p2) {\n return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\n Math.pow(p1[1] - p2[1], 2) +\n Math.pow(p1[2] - p2[2], 2));\n}\nfunction rgbMean(pTab) {\n const m = [0, 0, 0];\n for (let i = 0; i < pTab.length; i++) {\n m[0] += pTab[i][0];\n m[1] += pTab[i][1];\n m[2] += pTab[i][2];\n }\n m[0] /= pTab.length;\n m[1] /= pTab.length;\n m[2] /= pTab.length;\n return m;\n}\nfunction backgroundMask(idata, threshold) {\n const rgbv_no = pixelAt(idata, 0, 0);\n const rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n const rgbv_so = pixelAt(idata, 0, idata.height - 1);\n const rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n const thres = threshold || 10;\n if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\n rgbDistance(rgbv_ne, rgbv_se) < thres &&\n rgbDistance(rgbv_se, rgbv_so) < thres &&\n rgbDistance(rgbv_so, rgbv_no) < thres) {\n const mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n const mask = [];\n for (let i = 0; i < idata.width * idata.height; i++) {\n const d = rgbDistance(mean, [\n idata.data[i * 4],\n idata.data[i * 4 + 1],\n idata.data[i * 4 + 2],\n ]);\n mask[i] = d < thres ? 0 : 255;\n }\n return mask;\n }\n}\nfunction applyMask(idata, mask) {\n for (let i = 0; i < idata.width * idata.height; i++) {\n idata.data[4 * i + 3] = mask[i];\n }\n}\nfunction erodeMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a === 255 * 8 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction dilateMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a >= 255 * 4 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction smoothEdgeMask(mask, sw, sh) {\n const weights = [\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n ];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a;\n }\n }\n return maskResult;\n}\nexport const Mask = function (imageData) {\n const threshold = this.threshold();\n let mask = backgroundMask(imageData, threshold);\n if (mask) {\n mask = erodeMask(mask, imageData.width, imageData.height);\n mask = dilateMask(mask, imageData.width, imageData.height);\n mask = smoothEdgeMask(mask, imageData.width, imageData.height);\n applyMask(imageData, mask);\n }\n return imageData;\n};\nFactory.addGetterSetter(Node, 'threshold', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { Util } from \"../Util.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nconst ToPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize;\n const conversion = ((360 / tSize) * Math.PI) / 180;\n for (let theta = 0; theta < tSize; theta += 1) {\n const sin = Math.sin(theta * conversion);\n const cos = Math.cos(theta * conversion);\n for (let radius = 0; radius < rSize; radius += 1) {\n x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\n y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\n let i = (y * xSize + x) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (theta + radius * xSize) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nconst FromPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize, phaseShift = opt.polarRotation || 0;\n let x1, y1;\n for (x = 0; x < xSize; x += 1) {\n for (y = 0; y < ySize; y += 1) {\n const dx = x - xMid;\n const dy = y - yMid;\n const radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n let theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\n theta = (theta * tSize) / 360;\n x1 = Math.floor(theta);\n y1 = Math.floor(radius);\n let i = (y1 * xSize + x1) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (y * xSize + x) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nexport const Kaleidoscope = function (imageData) {\n const xSize = imageData.width, ySize = imageData.height;\n let x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n let power = Math.round(this.kaleidoscopePower());\n const angle = Math.round(this.kaleidoscopeAngle());\n const offset = Math.floor((xSize * (angle % 360)) / 360);\n if (power < 1) {\n return;\n }\n const tempCanvas = Util.createCanvasElement();\n tempCanvas.width = xSize;\n tempCanvas.height = ySize;\n const scratchData = tempCanvas\n .getContext('2d')\n .getImageData(0, 0, xSize, ySize);\n Util.releaseCanvas(tempCanvas);\n ToPolar(imageData, scratchData, {\n polarCenterX: xSize / 2,\n polarCenterY: ySize / 2,\n });\n let minSectionSize = xSize / Math.pow(2, power);\n while (minSectionSize <= 8) {\n minSectionSize = minSectionSize * 2;\n power -= 1;\n }\n minSectionSize = Math.ceil(minSectionSize);\n let sectionSize = minSectionSize;\n let xStart = 0, xEnd = sectionSize, xDelta = 1;\n if (offset + minSectionSize > xSize) {\n xStart = sectionSize;\n xEnd = 0;\n xDelta = -1;\n }\n for (y = 0; y < ySize; y += 1) {\n for (x = xStart; x !== xEnd; x += xDelta) {\n xoff = Math.round(x + offset) % xSize;\n srcPos = (xSize * y + xoff) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + x) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n }\n for (y = 0; y < ySize; y += 1) {\n sectionSize = Math.floor(minSectionSize);\n for (i = 0; i < power; i += 1) {\n for (x = 0; x < sectionSize + 1; x += 1) {\n srcPos = (xSize * y + x) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n sectionSize *= 2;\n }\n }\n FromPolar(scratchData, imageData, { polarRotation: 0 });\n};\nFactory.addGetterSetter(Node, 'kaleidoscopePower', 2, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'kaleidoscopeAngle', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Noise = function (imageData) {\n const amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2;\n for (let i = 0; i < nPixels; i += 4) {\n data[i + 0] += half - 2 * half * Math.random();\n data[i + 1] += half - 2 * half * Math.random();\n data[i + 2] += half - 2 * half * Math.random();\n }\n};\nFactory.addGetterSetter(Node, 'noise', 0.2, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Util } from \"../Util.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Pixelate = function (imageData) {\n let pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), data = imageData.data;\n if (pixelSize <= 0) {\n Util.error('pixelSize value can not be <= 0');\n return;\n }\n for (let xBin = 0; xBin < nBinsX; xBin += 1) {\n for (let yBin = 0; yBin < nBinsY; yBin += 1) {\n let red = 0;\n let green = 0;\n let blue = 0;\n let alpha = 0;\n const xBinStart = xBin * pixelSize;\n const xBinEnd = xBinStart + pixelSize;\n const yBinStart = yBin * pixelSize;\n const yBinEnd = yBinStart + pixelSize;\n let pixelsInBin = 0;\n for (let x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (let y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n const i = (width * y + x) * 4;\n red += data[i + 0];\n green += data[i + 1];\n blue += data[i + 2];\n alpha += data[i + 3];\n pixelsInBin += 1;\n }\n }\n red = red / pixelsInBin;\n green = green / pixelsInBin;\n blue = blue / pixelsInBin;\n alpha = alpha / pixelsInBin;\n for (let x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (let y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n const i = (width * y + x) * 4;\n data[i + 0] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n data[i + 3] = alpha;\n }\n }\n }\n }\n};\nFactory.addGetterSetter(Node, 'pixelSize', 8, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Posterize = function (imageData) {\n const levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels;\n for (let i = 0; i < len; i += 1) {\n data[i] = Math.floor(data[i] / scale) * scale;\n }\n};\nFactory.addGetterSetter(Node, 'levels', 0.5, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { RGBComponent } from \"../Validators.js\";\nexport const RGB = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue();\n for (let i = 0; i < nPixels; i += 4) {\n const brightness = (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\n data[i] = brightness * red;\n data[i + 1] = brightness * green;\n data[i + 2] = brightness * blue;\n data[i + 3] = data[i + 3];\n }\n};\nFactory.addGetterSetter(Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { RGBComponent } from \"../Validators.js\";\nexport const RGBA = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha();\n for (let i = 0; i < nPixels; i += 4) {\n const ia = 1 - alpha;\n data[i] = red * alpha + data[i] * ia;\n data[i + 1] = green * alpha + data[i + 1] * ia;\n data[i + 2] = blue * alpha + data[i + 2] * ia;\n }\n};\nFactory.addGetterSetter(Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'alpha', 1, function (val) {\n this._filterUpToDate = false;\n if (val > 1) {\n return 1;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return val;\n }\n});\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Threshold = function (imageData) {\n const level = this.threshold() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 1) {\n data[i] = data[i] < level ? 0 : 255;\n }\n};\nFactory.addGetterSetter(Node, 'threshold', 0.5, getNumberValidator(), Factory.afterSetFilter);\n","import { Konva as Core } from \"./_CoreInternals.js\";\nimport { Arc } from \"./shapes/Arc.js\";\nimport { Arrow } from \"./shapes/Arrow.js\";\nimport { Circle } from \"./shapes/Circle.js\";\nimport { Ellipse } from \"./shapes/Ellipse.js\";\nimport { Image } from \"./shapes/Image.js\";\nimport { Label, Tag } from \"./shapes/Label.js\";\nimport { Line } from \"./shapes/Line.js\";\nimport { Path } from \"./shapes/Path.js\";\nimport { Rect } from \"./shapes/Rect.js\";\nimport { RegularPolygon } from \"./shapes/RegularPolygon.js\";\nimport { Ring } from \"./shapes/Ring.js\";\nimport { Sprite } from \"./shapes/Sprite.js\";\nimport { Star } from \"./shapes/Star.js\";\nimport { Text } from \"./shapes/Text.js\";\nimport { TextPath } from \"./shapes/TextPath.js\";\nimport { Transformer } from \"./shapes/Transformer.js\";\nimport { Wedge } from \"./shapes/Wedge.js\";\nimport { Blur } from \"./filters/Blur.js\";\nimport { Brighten } from \"./filters/Brighten.js\";\nimport { Brightness } from \"./filters/Brightness.js\";\nimport { Contrast } from \"./filters/Contrast.js\";\nimport { Emboss } from \"./filters/Emboss.js\";\nimport { Enhance } from \"./filters/Enhance.js\";\nimport { Grayscale } from \"./filters/Grayscale.js\";\nimport { HSL } from \"./filters/HSL.js\";\nimport { HSV } from \"./filters/HSV.js\";\nimport { Invert } from \"./filters/Invert.js\";\nimport { Kaleidoscope } from \"./filters/Kaleidoscope.js\";\nimport { Mask } from \"./filters/Mask.js\";\nimport { Noise } from \"./filters/Noise.js\";\nimport { Pixelate } from \"./filters/Pixelate.js\";\nimport { Posterize } from \"./filters/Posterize.js\";\nimport { RGB } from \"./filters/RGB.js\";\nimport { RGBA } from \"./filters/RGBA.js\";\nimport { Sepia } from \"./filters/Sepia.js\";\nimport { Solarize } from \"./filters/Solarize.js\";\nimport { Threshold } from \"./filters/Threshold.js\";\nexport const Konva = Core.Util._assign(Core, {\n Arc,\n Arrow,\n Circle,\n Ellipse,\n Image,\n Label,\n Tag,\n Line,\n Path,\n Rect,\n RegularPolygon,\n Ring,\n Sprite,\n Star,\n Text,\n TextPath,\n Transformer,\n Wedge,\n Filters: {\n Blur,\n Brightness,\n Brighten,\n Contrast,\n Emboss,\n Enhance,\n Grayscale,\n HSL,\n HSV,\n Invert,\n Kaleidoscope,\n Mask,\n Noise,\n Pixelate,\n Posterize,\n RGB,\n RGBA,\n Sepia,\n Solarize,\n Threshold,\n },\n});\n","export const Brightness = function (imageData) {\n const brightness = this.brightness(), data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] = Math.min(255, data[i] * brightness);\n data[i + 1] = Math.min(255, data[i + 1] * brightness);\n data[i + 2] = Math.min(255, data[i + 2] * brightness);\n }\n};\n","export const Grayscale = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n const brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\n data[i] = brightness;\n data[i + 1] = brightness;\n data[i + 2] = brightness;\n }\n};\n","export const Invert = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n};\n","export const Sepia = function (imageData) {\n const data = imageData.data, nPixels = data.length;\n for (let i = 0; i < nPixels; i += 4) {\n const r = data[i + 0];\n const g = data[i + 1];\n const b = data[i + 2];\n data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\n data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\n data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\n }\n};\n","export const Solarize = function (imageData) {\n const threshold = 128;\n const d = imageData.data;\n for (let i = 0; i < d.length; i += 4) {\n const r = d[i], g = d[i + 1], b = d[i + 2];\n const L = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n if (L >= threshold) {\n d[i] = 255 - r;\n d[i + 1] = 255 - g;\n d[i + 2] = 255 - b;\n }\n }\n return imageData;\n};\n","import b from \"konva\";\nconst Z = [\"north\", \"south\", \"east\", \"west\", \"northeast\", \"northwest\", \"southeast\", \"southwest\"], $t = {\n n: \"north\",\n s: \"south\",\n e: \"east\",\n w: \"west\",\n ne: \"northeast\",\n nw: \"northwest\",\n se: \"southeast\",\n sw: \"southwest\"\n}, N = {\n north: \"n\",\n south: \"s\",\n east: \"e\",\n west: \"w\",\n northeast: \"ne\",\n northwest: \"nw\",\n southeast: \"se\",\n southwest: \"sw\",\n up: \"u\",\n down: \"d\",\n in: \"i\",\n out: \"o\"\n}, et = {\n north: { x: 0, y: -1 },\n south: { x: 0, y: 1 },\n east: { x: 1, y: 0 },\n west: { x: -1, y: 0 },\n northeast: { x: 1, y: -1 },\n northwest: { x: -1, y: -1 },\n southeast: { x: 1, y: 1 },\n southwest: { x: -1, y: 1 }\n}, dt = [\n \"north\",\n \"south\",\n \"east\",\n \"west\",\n \"northeast\",\n \"northwest\",\n \"southeast\",\n \"southwest\"\n], Dt = {\n north: \"south\",\n south: \"north\",\n east: \"west\",\n west: \"east\",\n northeast: \"southwest\",\n northwest: \"southeast\",\n southeast: \"northwest\",\n southwest: \"northeast\"\n};\nfunction ut(m) {\n return m ? Object.prototype.hasOwnProperty.call(et, m) : !1;\n}\nfunction L(m, t, s, e = 1) {\n if (!ut(s))\n return { x: m, y: t };\n const i = et[s];\n return {\n x: m + i.x * e,\n y: t + i.y * e\n };\n}\nfunction st(m, t, s, e = 1, i = 0) {\n if (!ut(s))\n return { x: m, y: t };\n const o = et[s];\n if (!(o.x !== 0 && o.y !== 0) || i <= 0)\n return L(m, t, s, e);\n const r = e - i + i / Math.SQRT2;\n return {\n x: m + o.x * r,\n y: t + o.y * r\n };\n}\nfunction it(m, t, s, e = 1) {\n if (!ut(s))\n return { x: m, y: t };\n const i = et[s], o = Math.atan2(i.y, i.x);\n return {\n x: m + Math.cos(o) * e,\n y: t + Math.sin(o) * e\n };\n}\nconst H = {\n OPEN_DOOR: \"rgb(10, 155, 10)\",\n CLOSED_DOOR: \"rgb(226, 205, 59)\",\n LOCKED_DOOR: \"rgb(155, 10, 10)\",\n ONE_WAY_FILL: \"rgb(155, 10, 10)\"\n}, Pt = {\n 1: \"north\",\n 2: \"northeast\",\n 3: \"northwest\",\n 4: \"east\",\n 5: \"west\",\n 6: \"south\",\n 7: \"southeast\",\n 8: \"southwest\",\n 9: \"up\",\n 10: \"down\",\n 11: \"in\",\n 12: \"out\"\n}, At = [\"up\", \"down\", \"in\", \"out\"];\nfunction pt(m) {\n switch (m) {\n case 1:\n return H.OPEN_DOOR;\n case 2:\n return H.CLOSED_DOOR;\n default:\n return H.LOCKED_DOOR;\n }\n}\nclass ft {\n constructor(t, s, e) {\n this.mapReader = t, this.mapRenderer = s, this.settings = e;\n }\n /**\n * Get the edge point of a room based on its shape\n */\n getRoomEdgePoint(t, s, e, i) {\n return this.settings.roomShape === \"circle\" ? it(t, s, e, i) : this.settings.roomShape === \"roundedRectangle\" ? st(t, s, e, i, this.settings.roomSize * 0.2) : L(t, s, e, i);\n }\n renderData(t, s) {\n return this.renderDataWithColor(t, this.settings.lineColor, s);\n }\n renderDataWithColor(t, s, e) {\n const i = t.aDir && Z.includes(t.aDir), o = t.bDir && Z.includes(t.bDir);\n if (i && o)\n return this.renderTwoWayExitData(t, s, e);\n if (i || o) {\n const n = i ? \"a\" : \"b\";\n return this.renderOneWayExitData(t, s, n);\n }\n }\n renderTwoWayExitData(t, s, e) {\n const i = this.mapReader.getRoom(t.a), o = this.mapReader.getRoom(t.b);\n if (!i || !o || !t.aDir || !t.bDir || i.customLines[N[t.aDir]] && o.customLines[N[t.bDir]] || i.z !== o.z && (e !== o.z && i.customLines[N[t.aDir]] || e !== i.z && o.customLines[N[t.bDir]]))\n return;\n const n = this.getRoomEdgePoint(i.x, i.y, t.aDir, this.settings.roomSize / 2), r = this.getRoomEdgePoint(o.x, o.y, t.bDir, this.settings.roomSize / 2), h = [n.x, n.y, r.x, r.y], a = [{ points: h, stroke: s, strokeWidth: this.settings.lineWidth }], c = [], l = i.doors[N[t.aDir]] ?? o.doors[N[t.bDir]];\n if (l) {\n const p = h[0] + (h[2] - h[0]) / 2, x = h[1] + (h[3] - h[1]) / 2;\n c.push({\n x: p - this.settings.roomSize / 4,\n y: x - this.settings.roomSize / 4,\n width: this.settings.roomSize / 2,\n height: this.settings.roomSize / 2,\n stroke: pt(l),\n strokeWidth: this.settings.lineWidth\n });\n }\n const d = Math.min(h[0], h[2]), g = Math.max(h[0], h[2]), u = Math.min(h[1], h[3]), f = Math.max(h[1], h[3]), y = i.z !== o.z ? i.z === e ? o.id : i.id : void 0;\n return { lines: a, arrows: [], doors: c, bounds: { x: d, y: u, width: g - d, height: f - u }, targetRoomId: y };\n }\n renderOneWayExitData(t, s, e) {\n const i = e === \"a\" || !e && t.aDir, o = i ? this.mapReader.getRoom(t.a) : this.mapReader.getRoom(t.b), n = i ? this.mapReader.getRoom(t.b) : this.mapReader.getRoom(t.a), r = i ? t.aDir : t.bDir;\n if (!r || !o || !n || !Z.includes(r) || o.customLines[N[r] || r]) return;\n if (o.area != n.area && r) {\n const $ = this.mapReader.getColorValue(n.env), X = this.getRoomEdgePoint(o.x, o.y, r, this.settings.roomSize / 2), w = L(o.x, o.y, r, this.settings.roomSize * 1.5), R = $;\n return {\n lines: [],\n arrows: [{\n points: [X.x, X.y, w.x, w.y],\n pointerLength: 0.3,\n pointerWidth: 0.3,\n strokeWidth: this.settings.lineWidth * 1.4,\n stroke: R,\n fill: R\n }],\n doors: [],\n bounds: { x: Math.min(X.x, w.x), y: Math.min(X.y, w.y), width: Math.abs(w.x - X.x), height: Math.abs(w.y - X.y) },\n targetRoomId: n.id\n };\n }\n const h = n.area !== o.area || n.z !== o.z;\n let a = { x: n.x, y: n.y };\n h && (a = L(o.x, o.y, r, this.settings.roomSize / 2));\n const c = L(o.x, o.y, r, 0.3), l = c.x - (c.x - a.x) / 2, d = c.y - (c.y - a.y) / 2, g = this.getRoomEdgePoint(o.x, o.y, r, this.settings.roomSize / 2), u = [g.x, g.y, a.x, a.y], f = [g.x, a.x, l], y = [g.y, a.y, d], p = Math.min(...f), x = Math.max(...f), k = Math.min(...y), D = Math.max(...y);\n return {\n lines: [{ points: u, stroke: s, strokeWidth: this.settings.lineWidth, dash: [0.1, 0.05] }],\n arrows: [{\n points: [u[0], u[1], l, d],\n pointerLength: 0.5,\n pointerWidth: 0.35,\n strokeWidth: this.settings.lineWidth * 1.4,\n stroke: s,\n fill: H.ONE_WAY_FILL,\n dash: [0.1, 0.05]\n }],\n doors: [],\n bounds: { x: p, y: k, width: x - p, height: D - k },\n ...h ? { targetRoomId: n.id } : {}\n };\n }\n render(t, s) {\n return this.renderWithColor(t, this.settings.lineColor, s);\n }\n renderWithColor(t, s, e) {\n const i = t.aDir && Z.includes(t.aDir), o = t.bDir && Z.includes(t.bDir);\n if (i && o)\n return this.renderTwoWayExit(t, s, e);\n if (i || o) {\n const n = i ? \"a\" : \"b\";\n return this.renderOneWayExit(t, s, n);\n }\n }\n renderTwoWayExit(t, s, e) {\n const i = this.mapReader.getRoom(t.a), o = this.mapReader.getRoom(t.b);\n if (!i || !o || !t.aDir || !t.bDir || i.customLines[N[t.aDir]] && o.customLines[N[t.bDir]] || i.z !== o.z && (e !== o.z && i.customLines[N[t.aDir]] || e !== i.z && o.customLines[N[t.bDir]]))\n return;\n const n = new b.Group({ listening: !1 }), r = [];\n if (r.push(...Object.values(this.getRoomEdgePoint(i.x, i.y, t.aDir, this.settings.roomSize / 2))), r.push(...Object.values(this.getRoomEdgePoint(o.x, o.y, t.bDir, this.settings.roomSize / 2))), i.doors[N[t.aDir]] || o.doors[N[t.bDir]]) {\n const a = this.renderDoor(r, i.doors[N[t.aDir]] ?? o.doors[N[t.bDir]]);\n n.add(a);\n }\n const h = new b.Line({\n points: r,\n stroke: s,\n strokeWidth: this.settings.lineWidth,\n perfectDrawEnabled: !1,\n listening: !1\n });\n return n.add(h), n;\n }\n renderOneWayExit(t, s, e) {\n const i = e === \"a\" || !e && t.aDir, o = i ? this.mapReader.getRoom(t.a) : this.mapReader.getRoom(t.b), n = i ? this.mapReader.getRoom(t.b) : this.mapReader.getRoom(t.a), r = i ? t.aDir : t.bDir;\n if (!r || !o || !n || !Z.includes(r) || o.customLines[N[r] || r])\n return;\n if (o.area != n.area && r) {\n const y = this.mapReader.getColorValue(n.env);\n return this.renderAreaExit(o, r, y);\n }\n let h = { x: n.x, y: n.y };\n (n.area !== o.area || n.z !== o.z) && (h = L(o.x, o.y, r, this.settings.roomSize / 2));\n const a = L(o.x, o.y, r, 0.3), c = a.x - (a.x - h.x) / 2, l = a.y - (a.y - h.y) / 2, d = new b.Group({ listening: !1 }), g = [];\n g.push(...Object.values(this.getRoomEdgePoint(o.x, o.y, r, this.settings.roomSize / 2))), g.push(h.x, h.y);\n const u = new b.Line({\n points: g,\n stroke: s,\n strokeWidth: this.settings.lineWidth,\n dashEnabled: !0,\n dash: [0.1, 0.05],\n perfectDrawEnabled: !1,\n listening: !1\n });\n d.add(u);\n const f = new b.Arrow({\n points: [g[0], g[1], c, l],\n pointerLength: 0.5,\n pointerWidth: 0.35,\n strokeWidth: this.settings.lineWidth * 1.4,\n stroke: s,\n fill: H.ONE_WAY_FILL,\n dashEnabled: !0,\n dash: [0.1, 0.05],\n perfectDrawEnabled: !1,\n listening: !1\n });\n return d.add(f), d;\n }\n renderAreaExit(t, s, e) {\n const i = this.getRoomEdgePoint(t.x, t.y, s, this.settings.roomSize / 2), o = L(t.x, t.y, s, this.settings.roomSize * 1.5), n = e ?? this.mapReader.getColorValue(t.env);\n return new b.Arrow({\n points: [i.x, i.y, o.x, o.y],\n pointerLength: 0.3,\n pointerWidth: 0.3,\n strokeWidth: this.settings.lineWidth * 1.4,\n stroke: n,\n fill: n,\n perfectDrawEnabled: !1,\n listening: !1\n });\n }\n renderSpecialExits(t, s) {\n return Object.entries(t.customLines).flatMap(([e, i]) => {\n const o = [t.x, t.y];\n i.points.reduce((d, g) => (d.push(g.x, -g.y), d), o);\n const n = i.attributes.arrow ? b.Arrow : b.Line, r = s ?? `rgb(${i.attributes.color.r}, ${i.attributes.color.g}, ${i.attributes.color.b})`, h = new n({\n points: o,\n strokeWidth: this.settings.lineWidth,\n stroke: r,\n fill: s ?? `rgb(${i.attributes.color.r}, ${i.attributes.color.g} , ${i.attributes.color.b})`,\n pointerLength: 0.3,\n pointerWidth: 0.2,\n perfectDrawEnabled: !1,\n listening: !1\n });\n let a = i.attributes.style;\n a === \"dot line\" ? (h.dash([0.05, 0.05]), h.dashOffset(0.1)) : a === \"dash line\" ? h.dash([0.4, 0.2]) : a === \"solid line\" || a !== void 0 && console.log(\"Brak opisu stylu: \" + a);\n const c = [h], l = t.doors[e];\n return l && o.length >= 4 && c.push(this.renderDoor(o, l)), c;\n });\n }\n /**\n * Returns hit-zone bounds for special exits (custom lines) that lead to rooms in another area.\n */\n getSpecialExitAreaTargets(t) {\n const s = [];\n for (const [e, i] of Object.entries(t.customLines)) {\n let o = t.specialExits[e];\n if (o === void 0) {\n const d = $t[e];\n d && (o = t.exits[d] ?? t.specialExits[d]);\n }\n if (o === void 0) continue;\n const n = this.mapReader.getRoom(o);\n if (!n || n.area === t.area && n.z === t.z) continue;\n const r = [t.x, t.y];\n i.points.reduce((d, g) => (d.push(g.x, -g.y), d), r);\n let h = 1 / 0, a = 1 / 0, c = -1 / 0, l = -1 / 0;\n for (let d = 0; d < r.length; d += 2)\n h = Math.min(h, r[d]), c = Math.max(c, r[d]), a = Math.min(a, r[d + 1]), l = Math.max(l, r[d + 1]);\n s.push({ bounds: { x: h, y: a, width: c - h, height: l - a }, targetRoomId: o });\n }\n return s;\n }\n renderStubs(t, s = this.settings.lineColor) {\n return t.stubs.map((e) => {\n const i = Pt[e], o = this.getRoomEdgePoint(t.x, t.y, i, this.settings.roomSize / 2), n = L(t.x, t.y, i, this.settings.roomSize / 2 + 0.5), r = [o.x, o.y, n.x, n.y];\n return new b.Line({\n points: r,\n stroke: s,\n strokeWidth: this.settings.lineWidth,\n perfectDrawEnabled: !1,\n listening: !1\n });\n });\n }\n getSymbolColor(t, s) {\n return this.settings.frameMode ? this.mapReader.getColorValue(t) : this.mapReader.getSymbolColor(t, s);\n }\n renderInnerExits(t) {\n return At.map((s) => {\n if (t.exits[s]) {\n const e = new b.Group({ listening: !1 }), i = new b.RegularPolygon({\n x: t.x,\n y: t.y,\n sides: 3,\n fill: this.getSymbolColor(t.env, 0.6),\n stroke: this.getSymbolColor(t.env),\n strokeWidth: this.settings.lineWidth,\n radius: this.settings.roomSize / 5,\n scaleX: 1.4,\n scaleY: 0.8,\n perfectDrawEnabled: !1,\n listening: !1\n });\n e.add(i);\n let o = t.doors[s];\n if (o !== void 0)\n switch (o) {\n case 1:\n i.stroke(H.OPEN_DOOR);\n break;\n case 2:\n i.stroke(H.CLOSED_DOOR);\n break;\n default:\n i.stroke(H.LOCKED_DOOR);\n }\n const n = i.stroke();\n switch (s) {\n case \"up\":\n i.position(L(t.x, t.y, \"south\", this.settings.roomSize / 4));\n break;\n case \"down\":\n i.rotation(180), i.position(L(t.x, t.y, \"north\", this.settings.roomSize / 4));\n break;\n case \"in\": {\n i.rotation(90), i.position(L(t.x, t.y, \"west\", this.settings.roomSize / 4));\n const r = L(t.x, t.y, \"east\", this.settings.roomSize / 4);\n e.add(new b.RegularPolygon({\n x: r.x,\n y: r.y,\n sides: 3,\n fill: i.fill(),\n stroke: n,\n strokeWidth: this.settings.lineWidth,\n radius: this.settings.roomSize / 5,\n scaleX: 1.4,\n scaleY: 0.8,\n rotation: -90,\n perfectDrawEnabled: !1,\n listening: !1\n }));\n break;\n }\n case \"out\": {\n i.rotation(-90), i.position(L(t.x, t.y, \"west\", this.settings.roomSize / 4));\n const r = L(t.x, t.y, \"east\", this.settings.roomSize / 4);\n e.add(new b.RegularPolygon({\n x: r.x,\n y: r.y,\n sides: 3,\n fill: i.fill(),\n stroke: n,\n strokeWidth: this.settings.lineWidth,\n radius: this.settings.roomSize / 5,\n scaleX: 1.4,\n scaleY: 0.8,\n rotation: 90,\n perfectDrawEnabled: !1,\n listening: !1\n }));\n break;\n }\n }\n return e;\n }\n }).filter((s) => s !== void 0);\n }\n renderDoor(t, s) {\n const e = {\n x: t[0] + (t[2] - t[0]) / 2,\n y: t[1] + (t[3] - t[1]) / 2\n };\n return new b.Rect({\n x: e.x - this.settings.roomSize / 4,\n y: e.y - this.settings.roomSize / 4,\n width: this.settings.roomSize / 2,\n height: this.settings.roomSize / 2,\n stroke: pt(s),\n strokeWidth: this.settings.lineWidth,\n perfectDrawEnabled: !1,\n listening: !1\n });\n }\n}\nclass It {\n constructor(t, s) {\n this.rooms = [], this.labels = [], this.rooms = t, this.labels = s, this.bounds = this.createBounds();\n }\n getRooms() {\n return this.rooms;\n }\n getLabels() {\n return this.labels;\n }\n getBounds() {\n return this.bounds;\n }\n createBounds() {\n const t = this.rooms.reduce(\n (s, e) => ({\n minX: Math.min(s.minX, e.x),\n maxX: Math.max(s.maxX, e.x),\n minY: Math.min(s.minY, e.y),\n maxY: Math.max(s.maxY, e.y)\n }),\n {\n minX: Number.POSITIVE_INFINITY,\n maxX: Number.NEGATIVE_INFINITY,\n minY: Number.POSITIVE_INFINITY,\n maxY: Number.NEGATIVE_INFINITY\n }\n );\n for (const s of this.labels) {\n const e = s.X, i = -s.Y;\n t.minX = Math.min(t.minX, e), t.maxX = Math.max(t.maxX, e + s.Width), t.minY = Math.min(t.minY, i), t.maxY = Math.max(t.maxY, i + s.Height);\n }\n return t;\n }\n}\nconst tt = class tt {\n constructor(t) {\n this.planes = {}, this.exits = /* @__PURE__ */ new Map(), this.version = 0, this.area = t, this.planes = this.createPlanes(), this.createExits();\n }\n getAreaName() {\n return this.area.areaName;\n }\n getAreaId() {\n return parseInt(this.area.areaId);\n }\n getVersion() {\n return this.version;\n }\n markDirty() {\n this.version++;\n }\n getPlane(t) {\n return this.planes[t];\n }\n getPlanes() {\n return Object.values(this.planes);\n }\n getZLevels() {\n return Object.keys(this.planes).map(Number).sort((t, s) => t - s);\n }\n getRooms() {\n return this.area.rooms;\n }\n getFullBounds() {\n return this.getPlanes().reduce(\n (t, s) => {\n const e = s.getBounds();\n return {\n minX: Math.min(t.minX, e.minX),\n maxX: Math.max(t.maxX, e.maxX),\n minY: Math.min(t.minY, e.minY),\n maxY: Math.max(t.maxY, e.maxY)\n };\n },\n { minX: 1 / 0, maxX: -1 / 0, minY: 1 / 0, maxY: -1 / 0 }\n );\n }\n getLinkExits(t) {\n return Array.from(this.exits.values()).filter((s) => s.zIndex.includes(t));\n }\n createPlanes() {\n const t = this.area.rooms.reduce((s, e) => (s[e.z] || (s[e.z] = []), s[e.z].push(e), s), {});\n return Object.entries(t).reduce(\n (s, [e, i]) => (s[+e] = new It(i, this.area.labels.filter((o) => o.Z === +e)), s),\n {}\n );\n }\n createExits() {\n const t = /* @__PURE__ */ new Map();\n this.area.rooms.forEach((s) => {\n Object.entries(s.exits).forEach(([e, i]) => {\n if (s.id === i) return;\n const o = Math.min(s.id, i), n = Math.max(s.id, i), r = `${o}-${n}`;\n t.has(r) || t.set(r, []), t.get(r).push({\n origin: s.id,\n target: i,\n z: s.z,\n dir: e\n });\n });\n });\n for (const [s, e] of t) {\n const [i, o] = s.split(\"-\"), n = parseInt(i), r = parseInt(o), h = e.filter((l) => l.origin === n), a = e.filter((l) => l.origin === r), c = /* @__PURE__ */ new Set();\n for (const l of h) {\n let d = -1;\n for (let g = 0; g < a.length; g++)\n if (!c.has(g)) {\n if (a[g].dir === tt.oppositeDir[l.dir]) {\n d = g;\n break;\n }\n d === -1 && (d = g);\n }\n if (d !== -1) {\n c.add(d);\n const g = a[d];\n this.exits.set(`${s}-${l.dir}`, {\n a: n,\n b: r,\n aDir: l.dir,\n bDir: g.dir,\n zIndex: [l.z, g.z]\n });\n } else\n this.exits.set(`${s}-a:${l.dir}`, {\n a: n,\n b: r,\n aDir: l.dir,\n zIndex: [l.z]\n });\n }\n for (let l = 0; l < a.length; l++)\n if (!c.has(l)) {\n const d = a[l];\n this.exits.set(`${s}-b:${d.dir}`, {\n a: n,\n b: r,\n bDir: d.dir,\n zIndex: [d.z]\n });\n }\n }\n }\n};\ntt.oppositeDir = {\n north: \"south\",\n south: \"north\",\n east: \"west\",\n west: \"east\",\n northeast: \"southwest\",\n southwest: \"northeast\",\n northwest: \"southeast\",\n southeast: \"northwest\",\n up: \"down\",\n down: \"up\",\n in: \"out\",\n out: \"in\"\n};\nlet _ = tt;\nclass yt extends It {\n constructor(t, s) {\n super(t.getRooms(), t.getLabels()), this.basePlane = t, this.visitedRooms = s;\n }\n getRooms() {\n return this.basePlane.getRooms().filter((t) => this.visitedRooms.has(t.id));\n }\n getLabels() {\n return this.basePlane.getLabels();\n }\n getBounds() {\n const t = this.getRooms();\n return t.length ? t.reduce(\n (s, e) => ({\n minX: Math.min(s.minX, e.x),\n maxX: Math.max(s.maxX, e.x),\n minY: Math.min(s.minY, e.y),\n maxY: Math.max(s.maxY, e.y)\n }),\n {\n minX: Number.POSITIVE_INFINITY,\n maxX: Number.NEGATIVE_INFINITY,\n minY: Number.POSITIVE_INFINITY,\n maxY: Number.NEGATIVE_INFINITY\n }\n ) : this.basePlane.getBounds();\n }\n}\nclass gt extends _ {\n constructor(t, s) {\n super(t), this.planeCache = /* @__PURE__ */ new WeakMap(), this.visitedRooms = s instanceof Set ? s : new Set(s ?? []), this.areaRoomIds = new Set(t.rooms.map((e) => e.id));\n }\n getPlane(t) {\n const s = super.getPlane(t);\n if (!s)\n return s;\n let e = this.planeCache.get(s);\n return e || (e = new yt(s, this.visitedRooms), this.planeCache.set(s, e)), e;\n }\n getPlanes() {\n return super.getPlanes().map((t) => {\n let s = this.planeCache.get(t);\n return s || (s = new yt(t, this.visitedRooms), this.planeCache.set(t, s)), s;\n });\n }\n getLinkExits(t) {\n return super.getLinkExits(t).filter((s) => this.visitedRooms.has(s.a) || this.visitedRooms.has(s.b));\n }\n getVisitedRoomCount() {\n return super.getRooms().reduce((t, s) => t + (this.visitedRooms.has(s.id) ? 1 : 0), 0);\n }\n getTotalRoomCount() {\n return this.areaRoomIds.size;\n }\n hasVisitedRoom(t) {\n return this.areaRoomIds.has(t) && this.visitedRooms.has(t);\n }\n getVisitedRoomIds() {\n return super.getRooms().filter((t) => this.visitedRooms.has(t.id)).map((t) => t.id);\n }\n addVisitedRoom(t) {\n const s = this.visitedRooms.has(t);\n this.visitedRooms.add(t);\n const e = !s && this.areaRoomIds.has(t);\n return e && this.markDirty(), e;\n }\n addVisitedRooms(t) {\n let s = 0;\n for (const e of t) {\n const i = this.visitedRooms.has(e);\n this.visitedRooms.add(e), !i && this.areaRoomIds.has(e) && s++;\n }\n return s > 0 && this.markDirty(), s;\n }\n}\nconst G = [\"up\", \"down\", \"in\", \"out\"];\nfunction U(m, t, s, e, i) {\n return m.roomShape === \"circle\" ? it(t, s, e, i) : m.roomShape === \"roundedRectangle\" ? st(t, s, e, i, m.roomSize * 0.2) : L(t, s, e, i);\n}\nfunction Xt(m, t, s) {\n for (const [e, i] of Object.entries(t.exits))\n if (i === s.id) {\n const o = e;\n if (G.includes(o)) {\n const h = N[o], a = t.customLines[h] ? h : t.customLines[o] ? o : void 0;\n return { type: \"inner\", fromDir: o, customLineKey: a, fromRoom: t, toRoom: s };\n }\n const n = N[o];\n if (t.customLines[n])\n return { type: \"special\", fromDir: o, customLineKey: n, fromRoom: t, toRoom: s };\n if (t.customLines[o])\n return { type: \"special\", fromDir: o, customLineKey: o, fromRoom: t, toRoom: s };\n const r = Wt(s, t.id);\n return { type: \"regular\", fromDir: o, toDir: r, fromRoom: t, toRoom: s };\n }\n for (const [e, i] of Object.entries(t.specialExits))\n if (i === s.id)\n return t.customLines[e] ? { type: \"special\", customLineKey: e, fromRoom: t, toRoom: s } : { type: \"inner\", fromRoom: t, toRoom: s };\n for (const [e, i] of Object.entries(s.exits))\n if (i === t.id) {\n const o = e;\n if (G.includes(o)) {\n const r = N[o], h = s.customLines[r] ? r : s.customLines[o] ? o : void 0;\n return { type: \"inner\", toDir: o, customLineKey: h, fromRoom: t, toRoom: s };\n }\n const n = N[o];\n return s.customLines[n] ? { type: \"special\", toDir: o, customLineKey: n, fromRoom: t, toRoom: s } : s.customLines[o] ? { type: \"special\", toDir: o, customLineKey: o, fromRoom: t, toRoom: s } : { type: \"regular\", toDir: o, fromRoom: t, toRoom: s };\n }\n for (const [e, i] of Object.entries(s.specialExits))\n if (i === t.id)\n return s.customLines[e] ? { type: \"special\", customLineKey: e, fromRoom: t, toRoom: s } : { type: \"inner\", fromRoom: t, toRoom: s };\n return { type: \"none\", fromRoom: t, toRoom: s };\n}\nfunction Wt(m, t) {\n for (const [s, e] of Object.entries(m.exits))\n if (e === t)\n return s;\n}\nfunction xt(m, t, s) {\n return m ? m.area === t && m.z === s : !1;\n}\nfunction Yt(m, t) {\n for (const [s, e] of Object.entries(m.exits))\n if (e === t.id)\n return { direction: s };\n for (const [s, e] of Object.entries(m.specialExits))\n if (e === t.id)\n return;\n}\nfunction Nt(m, t) {\n for (const s of dt)\n if (m.exits[s] === t.id) return s;\n for (const s of dt)\n if (t.exits[s] === m.id) return Dt[s];\n}\nfunction Tt(m, t, s) {\n const { fromRoom: e, toRoom: i, fromDir: o, toDir: n } = t;\n if (s.length === 0 && s.push(e.x, e.y), o && Z.includes(o)) {\n const r = U(m, e.x, e.y, o, m.roomSize / 2);\n s.push(r.x, r.y);\n }\n if (n && Z.includes(n)) {\n const r = U(m, i.x, i.y, n, m.roomSize / 2);\n s.push(r.x, r.y);\n }\n s.push(i.x, i.y);\n}\nfunction Ot(m, t) {\n const { fromRoom: s, toRoom: e, customLineKey: i } = m;\n let o = s, n;\n i && (n = s.customLines[i], n || (n = e.customLines[i], o = e)), t.length === 0 && t.push(o.x, o.y), n && n.points.forEach((r) => {\n t.push(r.x, -r.y);\n }), t.push(e.x, e.y);\n}\nfunction mt(m, t, s, e, i) {\n const o = [], n = [], r = [], h = s.map((d) => m.getRoom(d)).filter((d) => d !== void 0);\n let a = [];\n const c = () => {\n a.length >= 4 && o.push({ points: [...a] }), a = [];\n }, l = (d) => {\n const { fromRoom: g, toRoom: u, fromDir: f, toDir: y, customLineKey: p } = d;\n if (p) {\n let x = g, k = g.customLines[p];\n if (k || (k = u.customLines[p], x = u), k) {\n const D = [x.x, x.y];\n k.points.forEach(($) => {\n D.push($.x, -$.y);\n }), r.push({ points: D });\n }\n }\n f && G.includes(f) && n.push({ room: g, direction: f }), y && G.includes(y) && n.push({ room: u, direction: y });\n };\n for (let d = 0; d < h.length - 1; d++) {\n const g = h[d], u = h[d + 1], f = xt(g, e, i), y = xt(u, e, i);\n if (!f && !y) {\n c();\n continue;\n }\n if (f && y) {\n const p = Xt(m, g, u);\n switch (p.type) {\n case \"regular\":\n Tt(t, p, a);\n break;\n case \"special\":\n Ot(p, a);\n break;\n case \"inner\":\n c(), l(p);\n break;\n case \"none\":\n a.length === 0 && a.push(g.x, g.y), a.push(u.x, u.y);\n break;\n }\n } else {\n const p = f ? g : u, x = f ? u : g, k = Yt(p, x);\n if (k) {\n if (G.includes(k.direction))\n c(), n.push({ room: p, direction: k.direction });\n else if (Z.includes(k.direction)) {\n a.length === 0 && a.push(p.x, p.y);\n const D = U(t, p.x, p.y, k.direction, t.roomSize / 2), $ = L(p.x, p.y, k.direction, t.roomSize);\n a.push(D.x, D.y, $.x, $.y), c();\n }\n } else {\n const D = Nt(p, x);\n if (D) {\n a.length === 0 && a.push(p.x, p.y);\n const $ = U(t, p.x, p.y, D, t.roomSize / 2), X = L(p.x, p.y, D, t.roomSize);\n a.push($.x, $.y, X.x, X.y), c();\n }\n }\n }\n }\n return c(), { segments: o, innerMarkers: n, customLines: r };\n}\nclass Bt {\n constructor(t, s, e) {\n this.paths = [], this.mapReader = t, this.overlayLayer = s, this.settings = e;\n }\n createStrokedLine(t, s) {\n const e = new b.Group();\n return e.opacity(0.8), e.add(new b.Line({\n points: t,\n stroke: \"black\",\n strokeWidth: this.settings.lineWidth * 8,\n lineCap: \"round\",\n lineJoin: \"round\"\n })), e.add(new b.Line({\n points: t,\n stroke: s,\n strokeWidth: this.settings.lineWidth * 4,\n lineCap: \"round\",\n lineJoin: \"round\"\n })), e;\n }\n renderInnerExitMarker(t, s, e) {\n const i = new b.Group();\n i.opacity(0.8);\n const o = new b.RegularPolygon({\n x: t.x,\n y: t.y,\n sides: 3,\n fill: e,\n stroke: \"black\",\n strokeWidth: this.settings.lineWidth * 2,\n radius: this.settings.roomSize / 5,\n scaleX: 1.4,\n scaleY: 0.8\n });\n switch (s) {\n case \"up\":\n o.position(L(t.x, t.y, \"south\", this.settings.roomSize / 4));\n break;\n case \"down\":\n o.rotation(180), o.position(L(t.x, t.y, \"north\", this.settings.roomSize / 4));\n break;\n case \"in\": {\n const n = o.clone();\n n.rotation(-90), n.position(L(t.x, t.y, \"east\", this.settings.roomSize / 4)), i.add(n), o.rotation(90), o.position(L(t.x, t.y, \"west\", this.settings.roomSize / 4));\n break;\n }\n case \"out\": {\n const n = o.clone();\n n.rotation(90), n.position(L(t.x, t.y, \"east\", this.settings.roomSize / 4)), i.add(n), o.rotation(-90), o.position(L(t.x, t.y, \"west\", this.settings.roomSize / 4));\n break;\n }\n }\n return i.add(o), i;\n }\n renderPath(t, s, e, i = \"#66E64D\") {\n if (s === void 0 || e === void 0)\n return;\n const o = mt(this.mapReader, this.settings, t, s, e);\n for (const n of o.segments) {\n const r = this.createStrokedLine(n.points, i);\n this.overlayLayer.add(r), this.paths.push(r);\n }\n for (const n of o.customLines) {\n const r = this.createStrokedLine(n.points, i);\n this.overlayLayer.add(r), this.paths.push(r);\n }\n for (const n of o.innerMarkers) {\n const r = this.renderInnerExitMarker(n.room, n.direction, i);\n this.overlayLayer.add(r), this.paths.push(r);\n }\n return this.paths[0];\n }\n clearPaths() {\n this.paths.forEach((t) => {\n t.destroy();\n }), this.paths = [];\n }\n}\nconst Ft = {\n 1: \"north\",\n 2: \"northeast\",\n 3: \"northwest\",\n 4: \"east\",\n 5: \"west\",\n 6: \"south\",\n 7: \"southeast\",\n 8: \"southwest\",\n 9: \"up\",\n 10: \"down\",\n 11: \"in\",\n 12: \"out\"\n}, Vt = [\"up\", \"down\", \"in\", \"out\"], nt = {\n OPEN: \"rgb(10, 155, 10)\",\n CLOSED: \"rgb(226, 205, 59)\",\n LOCKED: \"rgb(155, 10, 10)\"\n};\nfunction bt(m) {\n switch (m) {\n case 1:\n return nt.OPEN;\n case 2:\n return nt.CLOSED;\n default:\n return nt.LOCKED;\n }\n}\nfunction A(m) {\n return m.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#39;\");\n}\nclass Lt {\n constructor(t, s) {\n this.mapReader = t, this.settings = s, this.exitRenderer = new ft(t, null, s);\n }\n getSymbolColor(t, s) {\n return this.settings.frameMode ? this.mapReader.getColorValue(t) : this.mapReader.getSymbolColor(t, s);\n }\n export(t, s, e) {\n const i = this.mapReader.getArea(t);\n if (!i) throw new Error(`Area ${t} not found`);\n const o = i.getPlane(s);\n if (!o) throw new Error(`Plane z=${s} not found in area ${t}`);\n const n = e?.padding ?? 3, r = this.computeBounds(i, o, e?.roomId, n), h = [];\n h.push(`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${r.x} ${r.y} ${r.w} ${r.h}\">`), h.push(`<rect x=\"${r.x}\" y=\"${r.y}\" width=\"${r.w}\" height=\"${r.h}\" fill=\"${A(this.settings.backgroundColor)}\"/>`), this.settings.gridEnabled && this.renderGrid(h, r), this.renderLabels(h, o.getLabels()), this.renderLinkExits(h, i, s);\n const a = o.getRooms();\n this.renderSpecialExits(h, a), this.renderStubs(h, a), this.renderRooms(h, a), this.renderInnerExits(h, a);\n const c = e?.overlays;\n if (c) {\n if (c.paths)\n for (const l of c.paths)\n this.renderPathOverlay(h, l.locations, l.color, t, s);\n if (c.highlights)\n for (const l of c.highlights)\n this.renderHighlightOverlay(h, l.roomId, l.color);\n c.position && this.renderPositionMarker(h, c.position.roomId);\n }\n if (this.settings.areaName) {\n const l = i.getAreaName();\n if (l) {\n const d = this.getEffectiveBounds(i, o);\n h.push(`<text x=\"${d.minX - 3.5}\" y=\"${d.minY - 2}\" font-size=\"2.5\" font-family=\"${A(this.settings.fontFamily)}\" fill=\"white\">${A(l)}</text>`);\n }\n }\n return h.push(\"</svg>\"), h.join(`\n`);\n }\n computeBounds(t, s, e, i) {\n if (e !== void 0) {\n const g = this.mapReader.getRoom(e);\n if (!g) throw new Error(`Room ${e} not found`);\n return {\n x: g.x - i,\n y: g.y - i,\n w: i * 2,\n h: i * 2\n };\n }\n const o = this.getEffectiveBounds(t, s), n = this.settings.areaName ? t.getAreaName() : void 0, r = n ? 7 : 0, h = n ? 3.5 : 0, a = o.minX - h, c = o.minY - r, l = n ? o.minX - 3.5 + n.length * 2.5 * 0.6 : -1 / 0, d = Math.max(o.maxX, l);\n return {\n x: a - i,\n y: c - i,\n w: d - a + i * 2,\n h: o.maxY - c + i * 2\n };\n }\n getEffectiveBounds(t, s) {\n return this.settings.uniformLevelSize ? t.getFullBounds() : s.getBounds();\n }\n getRoomEdgePoint(t, s, e, i) {\n return this.settings.roomShape === \"circle\" ? it(t, s, e, i) : this.settings.roomShape === \"roundedRectangle\" ? st(t, s, e, i, this.settings.roomSize * 0.2) : L(t, s, e, i);\n }\n // --- Grid ---\n renderGrid(t, s) {\n const e = this.settings.gridSize, i = Math.floor(s.x / e) * e, o = Math.ceil((s.x + s.w) / e) * e, n = Math.floor(s.y / e) * e, r = Math.ceil((s.y + s.h) / e) * e, h = A(this.settings.gridColor), a = this.settings.gridLineWidth;\n for (let c = i; c <= o; c += e)\n t.push(`<line x1=\"${c}\" y1=\"${n}\" x2=\"${c}\" y2=\"${r}\" stroke=\"${h}\" stroke-width=\"${a}\"/>`);\n for (let c = n; c <= r; c += e)\n t.push(`<line x1=\"${i}\" y1=\"${c}\" x2=\"${o}\" y2=\"${c}\" stroke=\"${h}\" stroke-width=\"${a}\"/>`);\n }\n // --- Labels ---\n renderLabels(t, s) {\n for (const e of s) {\n const i = e.X, o = -e.Y;\n if (this.settings.labelRenderMode === \"image\" && e.pixMap) {\n t.push(`<image x=\"${i}\" y=\"${o}\" width=\"${e.Width}\" height=\"${e.Height}\" href=\"data:image/png;base64,${e.pixMap}\"/>`);\n continue;\n }\n if ((e.BgColor?.alpha ?? 0) > 0 && !this.settings.transparentLabels) {\n const n = this.labelColor(e.BgColor);\n t.push(`<rect x=\"${i}\" y=\"${o}\" width=\"${e.Width}\" height=\"${e.Height}\" fill=\"${n}\"/>`);\n }\n if (e.Text) {\n const n = this.labelColor(e.FgColor), r = Math.min(0.75, e.Width / Math.max(e.Text.length / 2, 1)), h = Math.max(0.1, Math.min(r, Math.max(e.Height * 0.9, 0.1)));\n t.push(`<text x=\"${i + e.Width / 2}\" y=\"${o + e.Height / 2}\" font-size=\"${h}\" font-family=\"${A(this.settings.fontFamily)}\" fill=\"${n}\" text-anchor=\"middle\" dominant-baseline=\"central\">${A(e.Text)}</text>`);\n }\n }\n }\n labelColor(t) {\n const s = (t?.alpha ?? 255) / 255, e = (i) => Math.min(255, Math.max(0, i ?? 0));\n return `rgba(${e(t?.r)}, ${e(t?.g)}, ${e(t?.b)}, ${s})`;\n }\n // --- Link Exits ---\n renderLinkExits(t, s, e) {\n const i = s.getLinkExits(e);\n for (const o of i) {\n const n = this.exitRenderer.renderData(o, e);\n n && this.renderExitData(t, n);\n }\n }\n renderExitData(t, s) {\n for (const e of s.lines)\n this.renderSvgLine(t, e);\n for (const e of s.arrows)\n this.renderSvgArrow(t, e);\n for (const e of s.doors)\n this.renderSvgDoor(t, e);\n }\n renderSvgLine(t, s) {\n if (s.points.length < 4) return;\n const e = s.points.map((o) => o.toString()).join(\" \"), i = s.dash ? ` stroke-dasharray=\"${s.dash.join(\" \")}\"` : \"\";\n t.push(`<polyline points=\"${e}\" stroke=\"${A(s.stroke)}\" stroke-width=\"${s.strokeWidth}\" fill=\"none\"${i}/>`);\n }\n renderSvgArrow(t, s) {\n if (s.points.length < 4) return;\n const e = s.points.map((p) => p.toString()).join(\" \"), i = s.dash ? ` stroke-dasharray=\"${s.dash.join(\" \")}\"` : \"\";\n t.push(`<polyline points=\"${e}\" stroke=\"${A(s.stroke)}\" stroke-width=\"${s.strokeWidth}\" fill=\"none\"${i}/>`);\n const o = s.points.length - 2, n = s.points[o], r = s.points[o + 1], h = s.points[o - 2], a = s.points[o - 1], c = Math.atan2(r - a, n - h), l = s.pointerLength, d = s.pointerWidth / 2, g = n - l * Math.cos(c - Math.atan2(d, l)), u = r - l * Math.sin(c - Math.atan2(d, l)), f = n - l * Math.cos(c + Math.atan2(d, l)), y = r - l * Math.sin(c + Math.atan2(d, l));\n t.push(`<polygon points=\"${n},${r} ${g},${u} ${f},${y}\" fill=\"${A(s.fill)}\" stroke=\"${A(s.stroke)}\" stroke-width=\"${s.strokeWidth}\"/>`);\n }\n renderSvgDoor(t, s) {\n t.push(`<rect x=\"${s.x}\" y=\"${s.y}\" width=\"${s.width}\" height=\"${s.height}\" stroke=\"${A(s.stroke)}\" stroke-width=\"${s.strokeWidth}\" fill=\"none\"/>`);\n }\n // --- Stubs ---\n renderStubs(t, s) {\n const e = this.settings.lineColor;\n for (const i of s)\n for (const o of i.stubs) {\n const n = Ft[o];\n if (!n) continue;\n const r = this.getRoomEdgePoint(i.x, i.y, n, this.settings.roomSize / 2), h = L(i.x, i.y, n, this.settings.roomSize / 2 + 0.5);\n t.push(`<line x1=\"${r.x}\" y1=\"${r.y}\" x2=\"${h.x}\" y2=\"${h.y}\" stroke=\"${A(e)}\" stroke-width=\"${this.settings.lineWidth}\"/>`);\n }\n }\n // --- Special Exits (custom lines) ---\n renderSpecialExits(t, s) {\n for (const e of s)\n for (const [i, o] of Object.entries(e.customLines)) {\n const n = [e.x, e.y];\n for (const l of o.points)\n n.push(l.x, -l.y);\n const r = `rgb(${o.attributes.color.r}, ${o.attributes.color.g}, ${o.attributes.color.b})`;\n let h = \"\";\n o.attributes.style === \"dot line\" ? h = ' stroke-dasharray=\"0.05 0.05\"' : o.attributes.style === \"dash line\" && (h = ' stroke-dasharray=\"0.4 0.2\"');\n const a = n.map((l) => l.toString()).join(\" \");\n if (o.attributes.arrow && n.length >= 4) {\n t.push(`<polyline points=\"${a}\" stroke=\"${A(r)}\" stroke-width=\"${this.settings.lineWidth}\" fill=\"none\"${h}/>`);\n const l = n.length - 2, d = n[l], g = n[l + 1], u = n[l - 2], f = n[l - 1], y = Math.atan2(g - f, d - u), p = 0.3, x = 0.1, k = d - p * Math.cos(y - Math.atan2(x, p)), D = g - p * Math.sin(y - Math.atan2(x, p)), $ = d - p * Math.cos(y + Math.atan2(x, p)), X = g - p * Math.sin(y + Math.atan2(x, p));\n t.push(`<polygon points=\"${d},${g} ${k},${D} ${$},${X}\" fill=\"${A(r)}\" stroke=\"${A(r)}\" stroke-width=\"${this.settings.lineWidth}\"/>`);\n } else\n t.push(`<polyline points=\"${a}\" stroke=\"${A(r)}\" stroke-width=\"${this.settings.lineWidth}\" fill=\"none\"${h}/>`);\n const c = e.doors[i];\n if (c && n.length >= 4) {\n const l = n[0] + (n[2] - n[0]) / 2, d = n[1] + (n[3] - n[1]) / 2, g = this.settings.roomSize / 2;\n t.push(`<rect x=\"${l - g / 2}\" y=\"${d - g / 2}\" width=\"${g}\" height=\"${g}\" stroke=\"${bt(c)}\" stroke-width=\"${this.settings.lineWidth}\" fill=\"none\"/>`);\n }\n }\n }\n // --- Rooms ---\n renderRooms(t, s) {\n const e = this.settings.roomSize, i = e / 2;\n for (const o of s) {\n const n = this.mapReader.getColorValue(o.env), r = this.settings.frameMode ? this.settings.backgroundColor : n, h = this.settings.frameMode ? n : this.settings.lineColor;\n if (this.settings.roomShape === \"circle\")\n t.push(`<circle cx=\"${o.x}\" cy=\"${o.y}\" r=\"${i}\" fill=\"${A(r)}\" stroke=\"${A(h)}\" stroke-width=\"${this.settings.lineWidth}\"/>`);\n else {\n const a = o.x - i, c = o.y - i, l = this.settings.roomShape === \"roundedRectangle\" ? e * 0.2 : 0, d = l > 0 ? ` rx=\"${l}\" ry=\"${l}\"` : \"\";\n if (t.push(`<rect x=\"${a}\" y=\"${c}\" width=\"${e}\" height=\"${e}\" fill=\"${A(r)}\" stroke=\"${A(h)}\" stroke-width=\"${this.settings.lineWidth}\"${d}/>`), this.settings.emboss) {\n const g = J(this.settings.lineColor) > 0.41, u = g ? \"#000000\" : \"#ffffff\", f = g ? `${a},${c} ${a + e},${c} ${a + e},${c + e}` : `${a},${c} ${a},${c + e} ${a + e},${c + e}`;\n t.push(`<polyline points=\"${f}\" stroke=\"${u}\" stroke-width=\"${this.settings.lineWidth}\" fill=\"none\"/>`);\n }\n }\n if (o.roomChar) {\n const a = this.getSymbolColor(o.env), c = e * 0.75;\n t.push(`<text x=\"${o.x}\" y=\"${o.y}\" dy=\"0.35em\" font-size=\"${c}\" font-weight=\"bold\" font-family=\"${A(this.settings.fontFamily)}\" fill=\"${A(a)}\" text-anchor=\"middle\">${A(o.roomChar)}</text>`);\n }\n }\n }\n // --- Inner Exits (up/down/in/out triangles) ---\n renderInnerExits(t, s) {\n const e = this.settings.roomSize, i = e / 5;\n for (const o of s)\n for (const n of Vt) {\n if (!o.exits[n]) continue;\n const r = this.getSymbolColor(o.env), h = this.getSymbolColor(o.env, 0.6);\n let a;\n const c = o.doors[n];\n c !== void 0 && (a = bt(c));\n const l = a ?? r;\n switch (n) {\n case \"up\": {\n const d = L(o.x, o.y, \"south\", e / 4);\n t.push(this.svgTriangle(d.x, d.y, i, 0, h, l));\n break;\n }\n case \"down\": {\n const d = L(o.x, o.y, \"north\", e / 4);\n t.push(this.svgTriangle(d.x, d.y, i, 180, h, l));\n break;\n }\n case \"in\": {\n const d = L(o.x, o.y, \"west\", e / 4), g = L(o.x, o.y, \"east\", e / 4);\n t.push(this.svgTriangle(d.x, d.y, i, 90, h, l)), t.push(this.svgTriangle(g.x, g.y, i, -90, h, l));\n break;\n }\n case \"out\": {\n const d = L(o.x, o.y, \"west\", e / 4), g = L(o.x, o.y, \"east\", e / 4);\n t.push(this.svgTriangle(d.x, d.y, i, -90, h, l)), t.push(this.svgTriangle(g.x, g.y, i, 90, h, l));\n break;\n }\n }\n }\n }\n svgTriangle(t, s, e, i, o, n) {\n const a = i * Math.PI / 180, c = [];\n for (let l = 0; l < 3; l++) {\n const d = 2 * Math.PI * l / 3 - Math.PI / 2;\n let g = Math.cos(d) * e * 1.4, u = Math.sin(d) * e * 0.8;\n const f = g * Math.cos(a) - u * Math.sin(a), y = g * Math.sin(a) + u * Math.cos(a);\n c.push(`${t + f},${s + y}`);\n }\n return `<polygon points=\"${c.join(\" \")}\" fill=\"${A(o)}\" stroke=\"${A(n)}\" stroke-width=\"${this.settings.lineWidth}\"/>`;\n }\n // --- Overlay: Paths ---\n renderPathOverlay(t, s, e, i, o) {\n const n = mt(this.mapReader, this.settings, s, i, o), r = this.settings.lineWidth;\n for (const a of n.segments) {\n const c = a.points.map((l) => l.toString()).join(\" \");\n t.push(`<polyline points=\"${c}\" stroke=\"black\" stroke-width=\"${r * 8}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" opacity=\"0.8\"/>`), t.push(`<polyline points=\"${c}\" stroke=\"${A(e)}\" stroke-width=\"${r * 4}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" opacity=\"0.8\"/>`);\n }\n for (const a of n.customLines) {\n const c = a.points.map((l) => l.toString()).join(\" \");\n t.push(`<polyline points=\"${c}\" stroke=\"black\" stroke-width=\"${r * 8}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" opacity=\"0.8\"/>`), t.push(`<polyline points=\"${c}\" stroke=\"${A(e)}\" stroke-width=\"${r * 4}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" opacity=\"0.8\"/>`);\n }\n const h = this.settings.roomSize / 5;\n for (const a of n.innerMarkers)\n t.push(this.svgTriangle(a.room.x, a.room.y, h, this.innerExitRotation(a.direction), e, \"black\"));\n }\n innerExitRotation(t) {\n switch (t) {\n case \"up\":\n return 0;\n case \"down\":\n return 180;\n case \"in\":\n return 90;\n case \"out\":\n return -90;\n default:\n return 0;\n }\n }\n // --- Overlay: Highlights ---\n renderHighlightOverlay(t, s, e) {\n const i = this.mapReader.getRoom(s);\n if (!i) return;\n const o = 1.5, n = this.settings.roomSize, r = \"0.05 0.05\";\n if (this.settings.roomShape === \"circle\")\n t.push(`<circle cx=\"${i.x}\" cy=\"${i.y}\" r=\"${n / 2 * o}\" stroke=\"${A(e)}\" stroke-width=\"0.1\" stroke-dasharray=\"${r}\" fill=\"none\"/>`);\n else {\n const h = n * o;\n t.push(`<rect x=\"${i.x - h / 2}\" y=\"${i.y - h / 2}\" width=\"${h}\" height=\"${h}\" stroke=\"${A(e)}\" stroke-width=\"0.1\" stroke-dasharray=\"${r}\" fill=\"none\"/>`);\n }\n }\n // --- Overlay: Position Marker ---\n renderPositionMarker(t, s) {\n const e = this.mapReader.getRoom(s);\n if (!e) return;\n const i = this.settings.playerMarker, n = this.settings.roomSize * i.sizeFactor, r = i.dashEnabled && i.dash ? ` stroke-dasharray=\"${i.dash.join(\" \")}\"` : \"\", h = i.fillAlpha > 0 ? ` fill=\"${i.fillColor}\" fill-opacity=\"${i.fillAlpha}\"` : ' fill=\"none\"';\n t.push(`<circle cx=\"${e.x}\" cy=\"${e.y}\" r=\"${n / 2}\" stroke=\"${i.strokeColor}\" stroke-width=\"${i.strokeWidth}\" stroke-opacity=\"${i.strokeAlpha}\"${r}${h}/>`);\n }\n}\nconst Zt = 0.6, j = 75, jt = 0.025, Ht = \"rgb(225, 255, 225)\", q = \"rgb(120, 72, 0)\";\nfunction J(m) {\n let t, s, e;\n const i = m.match(/(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);\n if (i)\n t = parseInt(i[1]) / 255, s = parseInt(i[2]) / 255, e = parseInt(i[3]) / 255;\n else if (m.startsWith(\"#\") && m.length >= 7)\n t = parseInt(m.slice(1, 3), 16) / 255, s = parseInt(m.slice(3, 5), 16) / 255, e = parseInt(m.slice(5, 7), 16) / 255;\n else\n return 0.5;\n return (Math.max(t, s, e) + Math.min(t, s, e)) / 2;\n}\nclass Gt {\n constructor(t = 60) {\n this.samples = [], this.lastCullingTime = 0, this.callback = null, this.windowSize = t;\n }\n setCallback(t) {\n t !== this.callback && (this.callback = t, this.samples = []);\n }\n record(t) {\n this.callback && (this.samples.push(t), this.samples.length >= this.windowSize && this.flush());\n }\n computeFps() {\n const t = performance.now(), s = t - this.lastCullingTime;\n return this.lastCullingTime = t, s > 0 ? 1e3 / s : 0;\n }\n flush() {\n const t = this.samples.length;\n if (t === 0) return;\n const s = {\n cullingMs: 0,\n gridMs: 0,\n visibleRooms: 0,\n totalRooms: 0,\n visibleExits: 0,\n fps: 0\n };\n for (const e of this.samples)\n s.cullingMs += e.cullingMs, s.gridMs += e.gridMs, s.visibleRooms += e.visibleRooms, s.totalRooms += e.totalRooms, s.visibleExits += e.visibleExits, s.fps += e.fps;\n s.cullingMs /= t, s.gridMs /= t, s.visibleRooms = Math.round(s.visibleRooms / t), s.totalRooms = Math.round(s.totalRooms / t), s.visibleExits = Math.round(s.visibleExits / t), s.fps = Math.round(s.fps), this.callback(s), this.samples = [];\n }\n}\nfunction K(m, t) {\n const s = parseInt(m.slice(1, 3), 16), e = parseInt(m.slice(3, 5), 16), i = parseInt(m.slice(5, 7), 16);\n return `rgba(${s}, ${e}, ${i}, ${t})`;\n}\nfunction zt() {\n return {\n roomSize: Zt,\n lineWidth: jt,\n lineColor: Ht,\n backgroundColor: \"#000000\",\n instantMapMove: !1,\n highlightCurrentRoom: !0,\n cullingEnabled: !0,\n cullingMode: \"indexed\",\n cullingBounds: null,\n labelRenderMode: \"image\",\n transparentLabels: !1,\n roomShape: \"rectangle\",\n playerMarker: {\n strokeColor: \"#00e5b2\",\n strokeAlpha: 1,\n fillColor: \"#00e5b2\",\n fillAlpha: 0,\n strokeWidth: 0.1,\n sizeFactor: 1.7,\n dash: [0.05, 0.05],\n dashEnabled: !0\n },\n gridEnabled: !1,\n gridSize: 1,\n gridColor: \"rgba(200, 200, 200, 0.15)\",\n gridLineWidth: 0.03,\n perfCallback: null,\n borders: !0,\n frameMode: !1,\n emboss: !1,\n areaName: !0,\n fontFamily: \"sans-serif\",\n uniformLevelSize: !1\n };\n}\nclass fe {\n constructor(t, s, e) {\n this.highlights = /* @__PURE__ */ new Map(), this.currentZoom = 1, this.currentRoomOverlay = [], this.roomNodes = /* @__PURE__ */ new Map(), this.centerOnResize = !0, this.minZoom = 0.05, this.standaloneExitNodes = [], this.spatialBucketSize = 5, this.roomSpatialIndex = /* @__PURE__ */ new Map(), this.exitSpatialIndex = /* @__PURE__ */ new Map(), this.visibleRooms = /* @__PURE__ */ new Set(), this.visibleStandaloneExitNodes = /* @__PURE__ */ new Set(), this.bufferRoomSet = /* @__PURE__ */ new Set(), this.bufferExitSet = /* @__PURE__ */ new Set(), this.bufferRoomCandidates = /* @__PURE__ */ new Set(), this.bufferExitCandidates = /* @__PURE__ */ new Set(), this.cullingScheduled = !1, this.perfMonitor = new Gt(), this.areaExitHitZones = [], this.visibleExitDrawData = [], this.cachedGridBounds = null, this.settings = e ?? zt(), this.stage = new b.Stage({\n container: t,\n width: t.clientWidth,\n height: t.clientHeight,\n draggable: !0\n }), t.style.backgroundColor = this.settings.backgroundColor, window.addEventListener(\"resize\", () => {\n this.onResize(t);\n }), t.addEventListener(\"resize\", () => {\n this.onResize(t);\n }), this.gridLayer = new b.Layer({ listening: !1, hitGraphEnabled: !1 }), this.stage.add(this.gridLayer), this.linkLayer = new b.Layer({\n listening: !1,\n hitGraphEnabled: !1\n }), this.stage.add(this.linkLayer), this.roomLayer = new b.Layer({ hitGraphEnabled: !1 }), this.stage.add(this.roomLayer), this.positionLayer = new b.Layer({\n listening: !1,\n hitGraphEnabled: !1\n }), this.stage.add(this.positionLayer), this.overlayLayer = new b.Layer({\n listening: !1,\n hitGraphEnabled: !1\n }), this.stage.add(this.overlayLayer), this.mapReader = s, this.exitRenderer = new ft(s, this, this.settings), this.pathRenderer = new Bt(s, this.overlayLayer, this.settings), this.initScaling(1.1), this.stage.on(\"dragmove\", () => {\n this.scheduleRoomCulling(), this.emitPanEvent();\n }), this.stage.on(\"dragend\", () => {\n this.scheduleRoomCulling(), this.emitPanEvent();\n }), this.initRoomHitDetection();\n }\n clientToMapPoint(t, s) {\n const i = this.stage.container().getBoundingClientRect(), o = t - i.left, n = s - i.top, r = this.stage.scaleX();\n if (!r) return null;\n const h = this.stage.position();\n return {\n x: (o - h.x) / r,\n y: (n - h.y) / r\n };\n }\n findRoomAtClientPoint(t, s) {\n const e = this.clientToMapPoint(t, s);\n if (!e) return null;\n const i = this.settings.roomSize / 2, o = this.getBucketKey(\n Math.floor(e.x / this.spatialBucketSize),\n Math.floor(e.y / this.spatialBucketSize)\n ), n = this.roomSpatialIndex.get(o);\n if (!n) return null;\n for (const r of n) {\n const h = e.x - r.room.x, a = e.y - r.room.y;\n if (h >= -i && h <= i && a >= -i && a <= i)\n return r.room;\n }\n return null;\n }\n initRoomHitDetection() {\n const t = this.stage.container();\n let s = null;\n t.addEventListener(\"mousemove\", (a) => {\n const c = this.findRoomAtClientPoint(a.clientX, a.clientY);\n if (c !== s && (s = c, c)) {\n t.style.cursor = \"pointer\";\n return;\n }\n if (!s) {\n const d = this.findAreaExitAtClientPoint(a.clientX, a.clientY) !== null;\n t.style.cursor = d ? \"pointer\" : \"auto\";\n }\n }), t.addEventListener(\"mouseleave\", () => {\n s = null, t.style.cursor = \"auto\";\n });\n let e = null;\n t.addEventListener(\"mousedown\", (a) => {\n a.button === 0 && (e = { x: a.clientX, y: a.clientY });\n }), t.addEventListener(\"mouseup\", (a) => {\n if (a.button !== 0 || !e) return;\n const c = a.clientX - e.x, l = a.clientY - e.y;\n if (e = null, c * c + l * l > 25) return;\n const d = this.findRoomAtClientPoint(a.clientX, a.clientY);\n if (d) {\n this.emitRoomClickEvent(d.id, a.clientX, a.clientY);\n return;\n }\n const g = this.findAreaExitAtClientPoint(a.clientX, a.clientY);\n if (g) {\n this.emitAreaExitClickEvent(g.targetRoomId, a.clientX, a.clientY);\n return;\n }\n this.emitMapClickEvent();\n }), t.addEventListener(\"contextmenu\", (a) => {\n const c = this.findRoomAtClientPoint(a.clientX, a.clientY);\n c && (a.preventDefault(), this.emitRoomContextEvent(c.id, a.clientX, a.clientY));\n });\n let i, o, n;\n const r = () => {\n n !== void 0 && (this.stage.draggable(n), n = void 0);\n }, h = () => {\n i !== void 0 && (window.clearTimeout(i), i = void 0), o = void 0, r();\n };\n t.addEventListener(\"touchstart\", (a) => {\n if (h(), a.touches.length > 1) return;\n const c = a.touches[0];\n !c || !this.findRoomAtClientPoint(c.clientX, c.clientY) || (o = { clientX: c.clientX, clientY: c.clientY }, n = this.stage.draggable(), this.stage.draggable(!1), i = window.setTimeout(() => {\n if (o) {\n const d = this.findRoomAtClientPoint(o.clientX, o.clientY);\n d && this.emitRoomContextEvent(d.id, o.clientX, o.clientY);\n }\n h();\n }, 500));\n }, { passive: !0 }), t.addEventListener(\"touchend\", () => h(), { passive: !0 }), t.addEventListener(\"touchcancel\", () => h(), { passive: !0 }), t.addEventListener(\"touchmove\", (a) => {\n if (!o) return;\n const c = a.touches[0];\n if (!c) {\n h();\n return;\n }\n const l = c.clientX - o.clientX, d = c.clientY - o.clientY;\n if (l * l + d * d > 100) {\n const g = n;\n h(), g && this.stage.startDrag();\n }\n }, { passive: !0 });\n }\n onResize(t) {\n this.stage.width(t.clientWidth), this.stage.height(t.clientHeight), this.centerOnResize && this.currentRoomId && this.centerOnRoom(this.mapReader.getRoom(this.currentRoomId), !1), this.stage.batchDraw(), this.scheduleRoomCulling();\n }\n initScaling(t) {\n let s, e = !1, i = !1;\n this.stage.on(\"touchstart\", (o) => {\n const n = o.evt.touches;\n n && n.length > 1 ? (i = !0, this.stage.isDragging() && (this.stage.stopDrag(), e = !0), this.stage.draggable(!1)) : (i = !1, this.stage.draggable(!0));\n }), this.stage.on(\"touchend touchcancel\", (o) => {\n s = void 0;\n const n = o.evt.touches;\n (!n || n.length <= 1) && (i = !1, this.stage.draggable(!0));\n }), this.stage.on(\"wheel\", (o) => {\n o.evt.preventDefault();\n const n = this.stage.scaleX(), r = this.stage.getPointerPosition();\n if (!r)\n return;\n const h = {\n x: (r.x - this.stage.x()) / n,\n y: (r.y - this.stage.y()) / n\n };\n let a = o.evt.deltaY > 0 ? -1 : 1;\n o.evt.ctrlKey && (a = -a);\n const c = a > 0 ? this.currentZoom * t : this.currentZoom / t;\n if (this.setZoom(c)) {\n const d = this.stage.scaleX(), g = {\n x: r.x - h.x * d,\n y: r.y - h.y * d\n };\n this.stage.position(g), this.scheduleRoomCulling(), this.emitZoomChangeEvent();\n }\n }), this.stage.on(\"touchmove\", (o) => {\n const n = o.evt.touches, r = n?.[0], h = n?.[1];\n if (h || i && (i = !1, this.stage.draggable(!0)), r && !h && e && !this.stage.isDragging() && (this.stage.startDrag(), e = !1), !r || !h) {\n s = void 0;\n return;\n }\n o.evt.preventDefault(), this.stage.isDragging() && (this.stage.stopDrag(), e = !0), i || (i = !0, this.stage.draggable(!1));\n const a = this.stage.container().getBoundingClientRect(), c = {\n x: r.clientX - a.left,\n y: r.clientY - a.top\n }, l = {\n x: h.clientX - a.left,\n y: h.clientY - a.top\n }, d = Math.hypot(c.x - l.x, c.y - l.y);\n if (s === void 0) {\n s = d;\n return;\n }\n if (s === 0 || d === 0) {\n s = d;\n return;\n }\n const g = this.stage.scaleX(), u = this.stage.x(), f = this.stage.y(), y = {\n x: this.stage.width() / 2,\n y: this.stage.height() / 2\n }, p = {\n x: (y.x - u) / g,\n y: (y.y - f) / g\n }, x = this.currentZoom * (d / s);\n if (this.setZoom(x)) {\n const D = this.stage.scaleX(), $ = {\n x: y.x - p.x * D,\n y: y.y - p.y * D\n };\n this.stage.position($), this.stage.batchDraw(), this.scheduleRoomCulling(), this.emitZoomChangeEvent();\n }\n s = d;\n });\n }\n drawArea(t, s) {\n const e = this.mapReader.getArea(t);\n if (!e)\n return;\n const i = e.getPlane(s);\n i && (this.currentArea = t, this.currentAreaInstance = e, this.currentZIndex = s, this.currentAreaVersion = e.getVersion(), this.clearCurrentRoomOverlay(), this.positionRender && (this.positionRender.destroy(), this.positionRender = void 0), this.positionLayer.destroyChildren(), this.gridLayer.destroyChildren(), this.invalidateGridCache(), this.roomLayer.destroyChildren(), this.linkLayer.destroyChildren(), this.roomNodes.clear(), this.standaloneExitNodes = [], this.areaExitHitZones = [], this.standaloneExitBoundsRoomSize = void 0, this.roomSpatialIndex.clear(), this.exitSpatialIndex.clear(), this.visibleRooms.clear(), this.visibleStandaloneExitNodes.clear(), this.visibleExitDrawData.length = 0, this.exitBatchShape = void 0, this.spatialBucketSize = this.computeSpatialBucketSize(), this.stage.scale({ x: j * this.currentZoom, y: j * this.currentZoom }), this.renderGrid(), this.renderLabels(i.getLabels()), this.renderExits(e.getLinkExits(s)), this.renderRooms(i.getRooms() ?? []), this.renderAreaName(e, i), this.refreshHighlights(), this.updateRoomCulling(), this.stage.batchDraw());\n }\n /**\n * Export the currently displayed area as an SVG string.\n * @param options - Optional room focus and padding\n * @returns SVG string, or undefined if no area is displayed\n */\n exportSvg(t) {\n return this.currentArea === void 0 || this.currentZIndex === void 0 ? void 0 : new Lt(this.mapReader, this.settings).export(this.currentArea, this.currentZIndex, t);\n }\n /**\n * Export the currently displayed canvas as a PNG data URL.\n * @param options - pixelRatio for resolution (default 1), mimeType override\n * @returns data URL string, or undefined if no area is displayed\n */\n exportPng(t) {\n if (this.currentArea === void 0 || this.currentZIndex === void 0) return;\n const s = t?.pixelRatio ?? 1, e = this.stage.toCanvas({ pixelRatio: s }), i = document.createElement(\"canvas\");\n i.width = e.width, i.height = e.height;\n const o = i.getContext(\"2d\");\n return o.fillStyle = this.settings.backgroundColor, o.fillRect(0, 0, i.width, i.height), o.drawImage(e, 0, 0), i.toDataURL(\"image/png\");\n }\n /**\n * Export the currently displayed canvas as a PNG Blob.\n * @param options - pixelRatio for resolution (default 1)\n * @returns Promise resolving to a Blob, or undefined if no area is displayed\n */\n exportPngBlob(t) {\n if (this.currentArea === void 0 || this.currentZIndex === void 0) return;\n const s = t?.pixelRatio ?? 1, e = this.stage.toCanvas({ pixelRatio: s }), i = document.createElement(\"canvas\");\n i.width = e.width, i.height = e.height;\n const o = i.getContext(\"2d\");\n return o.fillStyle = this.settings.backgroundColor, o.fillRect(0, 0, i.width, i.height), o.drawImage(e, 0, 0), new Promise((n) => {\n i.toBlob((r) => {\n r && n(r);\n }, \"image/png\");\n });\n }\n computeSpatialBucketSize() {\n return Math.max(this.settings.roomSize * 10, 5);\n }\n getBucketKey(t, s) {\n return t * 1000003 + s;\n }\n forEachBucket(t, s, e, i, o) {\n const n = this.spatialBucketSize, r = Math.min(t, e), h = Math.max(t, e), a = Math.min(s, i), c = Math.max(s, i), l = Math.floor(r / n), d = Math.floor(h / n), g = Math.floor(a / n), u = Math.floor(c / n);\n for (let f = l; f <= d; f++)\n for (let y = g; y <= u; y++)\n o(this.getBucketKey(f, y));\n }\n addRoomToSpatialIndex(t) {\n const s = this.settings.roomSize / 2, e = t.room.x - s, i = t.room.x + s, o = t.room.y - s, n = t.room.y + s;\n this.forEachBucket(e, o, i, n, (r) => {\n let h = this.roomSpatialIndex.get(r);\n h || (h = /* @__PURE__ */ new Set(), this.roomSpatialIndex.set(r, h)), h.add(t);\n });\n }\n addStandaloneExitToSpatialIndex(t) {\n const { bounds: s } = t, e = s.x, i = s.x + s.width, o = s.y, n = s.y + s.height;\n this.forEachBucket(e, o, i, n, (r) => {\n let h = this.exitSpatialIndex.get(r);\n h || (h = /* @__PURE__ */ new Set(), this.exitSpatialIndex.set(r, h)), h.add(t);\n });\n }\n collectRoomCandidates(t, s, e, i) {\n const o = this.bufferRoomCandidates;\n return o.clear(), this.forEachBucket(t, s, e, i, (n) => {\n this.roomSpatialIndex.get(n)?.forEach((h) => o.add(h));\n }), o;\n }\n collectStandaloneExitCandidates(t, s, e, i) {\n const o = this.bufferExitCandidates;\n return o.clear(), this.forEachBucket(t, s, e, i, (n) => {\n this.exitSpatialIndex.get(n)?.forEach((h) => o.add(h));\n }), o;\n }\n refreshStandaloneExitBoundsIfNeeded() {\n this.standaloneExitBoundsRoomSize !== this.settings.roomSize && (this.exitSpatialIndex.clear(), this.standaloneExitNodes.forEach((t) => {\n this.addStandaloneExitToSpatialIndex(t);\n }), this.standaloneExitBoundsRoomSize = this.settings.roomSize);\n }\n emitRoomContextEvent(t, s, e) {\n const i = this.stage.container(), o = i.getBoundingClientRect(), n = {\n roomId: t,\n position: {\n x: s - o.left,\n y: e - o.top\n }\n }, r = new CustomEvent(\"roomcontextmenu\", { detail: n });\n i.dispatchEvent(r);\n }\n emitRoomClickEvent(t, s, e) {\n const i = this.stage.container(), o = i.getBoundingClientRect(), n = {\n roomId: t,\n position: {\n x: s - o.left,\n y: e - o.top\n }\n }, r = new CustomEvent(\"roomclick\", { detail: n });\n i.dispatchEvent(r);\n }\n findAreaExitAtClientPoint(t, s) {\n const e = this.clientToMapPoint(t, s);\n if (!e) return null;\n for (const i of this.areaExitHitZones) {\n const o = i.bounds, n = this.settings.roomSize * 0.5;\n if (e.x >= o.x - n && e.x <= o.x + o.width + n && e.y >= o.y - n && e.y <= o.y + o.height + n)\n return i;\n }\n return null;\n }\n emitAreaExitClickEvent(t, s, e) {\n const i = this.stage.container(), o = i.getBoundingClientRect(), n = {\n targetRoomId: t,\n position: {\n x: s - o.left,\n y: e - o.top\n }\n }, r = new CustomEvent(\"areaexitclick\", { detail: n });\n i.dispatchEvent(r);\n }\n emitZoomChangeEvent() {\n const t = new CustomEvent(\"zoom\", {\n detail: { zoom: this.currentZoom }\n });\n this.stage.container().dispatchEvent(t);\n }\n emitPanEvent() {\n const t = new CustomEvent(\"pan\", {\n detail: this.getViewportBounds()\n });\n this.stage.container().dispatchEvent(t);\n }\n emitMapClickEvent() {\n const t = new CustomEvent(\"mapclick\");\n this.stage.container().dispatchEvent(t);\n }\n setZoom(t) {\n const s = Math.max(this.minZoom, Math.min(5, t));\n return this.currentZoom === s ? !1 : (this.currentZoom = s, this.stage.scale({ x: j * this.currentZoom, y: j * this.currentZoom }), this.scheduleRoomCulling(), this.emitPanEvent(), !0);\n }\n /**\n * Zooms relative to the center of the viewport.\n * Use this for UI controls (buttons, menus) where there's no mouse position.\n */\n zoomToCenter(t) {\n const s = Math.max(this.minZoom, Math.min(5, t));\n if (this.currentZoom === s)\n return !1;\n const e = this.stage.scaleX(), i = this.stage.width(), o = this.stage.height(), n = i / 2, r = o / 2, h = {\n x: (n - this.stage.x()) / e,\n y: (r - this.stage.y()) / e\n };\n this.currentZoom = s;\n const a = j * s;\n this.stage.scale({ x: a, y: a });\n const c = {\n x: n - h.x * a,\n y: r - h.y * a\n };\n return this.stage.position(c), this.stage.batchDraw(), this.scheduleRoomCulling(), !0;\n }\n getZoom() {\n return this.currentZoom;\n }\n /**\n * Returns the current viewport bounds in map coordinates.\n */\n getViewportBounds() {\n const t = this.stage.scaleX(), s = this.stage.position();\n return {\n minX: (0 - s.x) / t,\n maxX: (this.stage.width() - s.x) / t,\n minY: (0 - s.y) / t,\n maxY: (this.stage.height() - s.y) / t\n };\n }\n /**\n * Returns the bounds of the current area in map coordinates.\n * Accounts for area name overhead if enabled.\n */\n getAreaBounds() {\n if (!this.currentAreaInstance || this.currentZIndex === void 0) return null;\n const t = this.currentAreaInstance.getPlane(this.currentZIndex);\n if (!t) return null;\n const s = this.getEffectiveBounds(this.currentAreaInstance, t), e = this.settings.areaName && this.currentAreaInstance.getAreaName();\n return {\n minX: e ? s.minX - 4 : s.minX,\n maxX: s.maxX,\n minY: e ? s.minY - 7 : s.minY,\n maxY: s.maxY\n };\n }\n /**\n * Fit the entire current area into the viewport.\n * Calculates the zoom level needed to show all rooms (and labels) and centers the view.\n * Call after drawArea() to show the whole area without needing a position room.\n */\n fitArea() {\n if (this.currentArea === void 0 || this.currentZIndex === void 0 || !this.currentAreaInstance) return;\n const t = this.currentAreaInstance.getPlane(this.currentZIndex);\n if (!t) return;\n const s = this.getEffectiveBounds(this.currentAreaInstance, t), e = this.settings.areaName && this.currentAreaInstance.getAreaName(), i = e ? s.minY - 7 : s.minY, o = e ? s.minX - 4 : s.minX, n = s.maxX - o, r = s.maxY - i;\n if (n <= 0 || r <= 0) return;\n const h = this.stage.width(), a = this.stage.height(), c = 2, l = h / ((n + c * 2) * j), d = a / ((r + c * 2) * j), g = Math.min(l, d);\n this.currentZoom = Math.max(0.05, Math.min(5, g)), this.minZoom = this.currentZoom;\n const u = j * this.currentZoom;\n this.stage.scale({ x: u, y: u });\n const f = (o + s.maxX) / 2, y = (i + s.maxY) / 2;\n this.stage.position({\n x: h / 2 - f * u,\n y: a / 2 - y * u\n }), this.stage.batchDraw(), this.scheduleRoomCulling();\n }\n setCullingMode(t) {\n this.settings.cullingMode = t, this.settings.cullingEnabled = t !== \"none\", this.scheduleRoomCulling();\n }\n getCullingMode() {\n return this.settings.cullingMode;\n }\n getCurrentArea() {\n return this.currentArea ? this.mapReader.getArea(this.currentArea) : void 0;\n }\n /**\n * Refreshes the current room overlay to reflect any changes to settings.\n * Call this after modifying Settings properties (like roomSize, roomShape, lineWidth, etc.)\n * to update the visual appearance of the current room and its exits without changing position.\n */\n refreshCurrentRoomOverlay() {\n if (this.currentRoomId !== void 0) {\n const t = this.mapReader.getRoom(this.currentRoomId);\n t && this.updateCurrentRoomOverlay(t);\n }\n }\n /**\n * Completely refreshes the map to reflect changes to settings.\n * This re-renders the entire current area and updates the player position marker.\n * Call this after changing Settings properties like roomSize, roomShape, lineWidth, etc.\n *\n * Note: This is more expensive than refreshCurrentRoomOverlay() but ensures everything is updated.\n */\n updateBackground() {\n this.stage.container().style.backgroundColor = this.settings.backgroundColor;\n }\n refresh() {\n this.updateBackground(), this.currentArea !== void 0 && this.currentZIndex !== void 0 && (this.drawArea(this.currentArea, this.currentZIndex), this.currentRoomId !== void 0 && this.setPosition(this.currentRoomId));\n }\n /**\n * Updates the player position marker without centering the view.\n * Use this when you want to show where the player is without moving the viewport.\n */\n updatePositionMarker(t) {\n const s = this.mapReader.getRoom(t);\n if (!s) return;\n if (s.area !== this.currentArea || s.z !== this.currentZIndex) {\n this.positionRender && (this.positionRender.hide(), this.positionLayer.batchDraw());\n return;\n }\n this.currentRoomId = t, this.updateCurrentRoomOverlay(s);\n const e = K(this.settings.playerMarker.strokeColor, this.settings.playerMarker.strokeAlpha), i = K(this.settings.playerMarker.fillColor, this.settings.playerMarker.fillAlpha), o = this.settings.roomSize / 2 * this.settings.playerMarker.sizeFactor;\n this.positionRender ? (this.positionRender.position({ x: s.x, y: s.y }), this.positionRender.radius(o), this.positionRender.stroke(e), this.positionRender.fill(i), this.positionRender.strokeWidth(this.settings.playerMarker.strokeWidth), this.positionRender.dash(this.settings.playerMarker.dash ?? []), this.positionRender.dashEnabled(this.settings.playerMarker.dashEnabled), this.positionRender.show()) : (this.positionRender = new b.Circle({\n x: s.x,\n y: s.y,\n radius: o,\n stroke: e,\n fill: i,\n strokeWidth: this.settings.playerMarker.strokeWidth,\n dash: this.settings.playerMarker.dash,\n dashEnabled: this.settings.playerMarker.dashEnabled\n }), this.positionLayer.add(this.positionRender)), this.positionLayer.batchDraw();\n }\n setPosition(t, s = !0) {\n const e = this.mapReader.getRoom(t);\n if (!e) return;\n const i = this.mapReader.getArea(e.area), o = i?.getVersion();\n let n = this.currentArea !== e.area || this.currentZIndex !== e.z;\n (this.currentArea !== e.area || this.currentZIndex !== e.z || o !== void 0 && this.currentAreaVersion !== o || i !== void 0 && this.currentAreaInstance !== i) && this.drawArea(e.area, e.z), s ? this.centerOnRoom(e, n) : this.currentRoomId = t, this.updateCurrentRoomOverlay(e);\n const r = K(this.settings.playerMarker.strokeColor, this.settings.playerMarker.strokeAlpha), h = K(this.settings.playerMarker.fillColor, this.settings.playerMarker.fillAlpha), a = this.settings.roomSize / 2 * this.settings.playerMarker.sizeFactor;\n this.positionRender ? (this.positionRender.radius(a), this.positionRender.stroke(r), this.positionRender.fill(h), this.positionRender.strokeWidth(this.settings.playerMarker.strokeWidth), this.positionRender.dash(this.settings.playerMarker.dash ?? []), this.positionRender.dashEnabled(this.settings.playerMarker.dashEnabled)) : (this.positionRender = new b.Circle({\n x: e.x,\n y: e.y,\n radius: a,\n stroke: r,\n fill: h,\n strokeWidth: this.settings.playerMarker.strokeWidth,\n dash: this.settings.playerMarker.dash,\n dashEnabled: this.settings.playerMarker.dashEnabled\n }), this.positionLayer.add(this.positionRender));\n }\n clearPosition() {\n this.currentRoomId = void 0, this.positionRender && (this.positionRender.destroy(), this.positionRender = void 0), this.positionLayer.batchDraw(), this.currentRoomOverlay.forEach((t) => t.destroy()), this.currentRoomOverlay = [], this.overlayLayer.batchDraw();\n }\n centerOn(t, s) {\n const e = this.mapReader.getRoom(t);\n if (!e) return;\n const i = this.mapReader.getArea(e.area), o = i?.getVersion(), n = this.currentArea !== e.area || this.currentZIndex !== e.z;\n (n || o !== void 0 && this.currentAreaVersion !== o || i !== void 0 && this.currentAreaInstance !== i) && this.drawArea(e.area, e.z), this.centerOnRoomView(e, s ?? n);\n }\n renderPath(t, s) {\n return this.pathRenderer.renderPath(t, this.currentArea, this.currentZIndex, s);\n }\n clearPaths() {\n this.pathRenderer.clearPaths();\n }\n renderHighlight(t, s) {\n const e = this.mapReader.getRoom(t);\n if (!e)\n return;\n const i = this.highlights.get(t);\n i?.shape && (i.shape.destroy(), delete i.shape);\n const o = { color: s, area: e.area, z: e.z };\n if (this.highlights.set(t, o), e.area === this.currentArea && e.z === this.currentZIndex) {\n const n = this.createHighlightShape(e, s);\n return this.overlayLayer.add(n), o.shape = n, this.overlayLayer.batchDraw(), n;\n }\n return o.shape;\n }\n removeHighlight(t) {\n const s = this.highlights.get(t);\n s && (s.shape?.destroy(), this.highlights.delete(t), this.overlayLayer.batchDraw());\n }\n hasHighlight(t) {\n return this.highlights.has(t);\n }\n clearHighlights() {\n this.highlights.forEach(({ shape: t }) => t?.destroy()), this.highlights.clear(), this.overlayLayer.batchDraw();\n }\n refreshHighlights() {\n this.highlights.forEach((t, s) => {\n if (t.shape?.destroy(), delete t.shape, t.area !== this.currentArea || t.z !== this.currentZIndex)\n return;\n const e = this.mapReader.getRoom(s);\n if (!e)\n return;\n const i = this.createHighlightShape(e, t.color);\n this.overlayLayer.add(i), t.shape = i;\n }), this.overlayLayer.batchDraw();\n }\n createHighlightShape(t, s) {\n return this.settings.roomShape === \"circle\" ? new b.Circle({\n x: t.x,\n y: t.y,\n radius: this.settings.roomSize / 2 * 1.5,\n stroke: s,\n strokeWidth: 0.1,\n dash: [0.05, 0.05],\n dashEnabled: !0,\n listening: !1\n }) : new b.Rect({\n x: t.x - this.settings.roomSize / 2 * 1.5,\n y: t.y - this.settings.roomSize / 2 * 1.5,\n width: this.settings.roomSize * 1.5,\n height: this.settings.roomSize * 1.5,\n stroke: s,\n strokeWidth: 0.1,\n dash: [0.05, 0.05],\n dashEnabled: !0,\n cornerRadius: this.settings.roomShape === \"roundedRectangle\" ? this.settings.roomSize * 1.5 * 0.2 : 0,\n listening: !1\n });\n }\n centerOnRoom(t, s = !1) {\n this.currentRoomId = t.id;\n const e = { x: t.x, y: t.y };\n this.positionRender?.position(t);\n const o = this.stage.getAbsoluteTransform().point(e), n = {\n x: this.stage.width() / 2,\n y: this.stage.height() / 2\n }, r = n.x - o.x, h = n.y - o.y;\n this.currentTransition && (this.currentTransition.pause(), this.currentTransition.destroy(), delete this.currentTransition), s || this.settings.instantMapMove ? (this.stage.position({\n x: this.stage.x() + r,\n y: this.stage.y() + h\n }), this.scheduleRoomCulling()) : (this.currentTransition = new b.Tween({\n node: this.stage,\n x: this.stage.x() + r,\n y: this.stage.y() + h,\n duration: 0.2,\n easing: b.Easings.EaseInOut,\n onUpdate: () => this.scheduleRoomCulling(),\n onFinish: () => this.scheduleRoomCulling()\n }), this.currentTransition.play());\n }\n centerOnRoomView(t, s = !1) {\n const e = { x: t.x, y: t.y }, o = this.stage.getAbsoluteTransform().point(e), n = {\n x: this.stage.width() / 2,\n y: this.stage.height() / 2\n }, r = n.x - o.x, h = n.y - o.y;\n this.currentTransition && (this.currentTransition.pause(), this.currentTransition.destroy(), delete this.currentTransition), s || this.settings.instantMapMove ? (this.stage.position({\n x: this.stage.x() + r,\n y: this.stage.y() + h\n }), this.scheduleRoomCulling(), this.emitPanEvent()) : (this.currentTransition = new b.Tween({\n node: this.stage,\n x: this.stage.x() + r,\n y: this.stage.y() + h,\n duration: 0.2,\n easing: b.Easings.EaseInOut,\n onUpdate: () => this.scheduleRoomCulling(),\n onFinish: () => {\n this.scheduleRoomCulling(), this.emitPanEvent();\n }\n }), this.currentTransition.play());\n }\n getEffectiveBounds(t, s) {\n return this.settings.uniformLevelSize ? t.getFullBounds() : s.getBounds();\n }\n renderAreaName(t, s) {\n if (!this.settings.areaName) return;\n const e = t.getAreaName();\n if (!e) return;\n const i = this.getEffectiveBounds(t, s);\n this.roomLayer.add(new b.Text({\n x: i.minX - 3.5,\n y: i.minY - 4.5,\n text: e,\n fontSize: 2.5,\n fontFamily: this.settings.fontFamily,\n fill: \"white\",\n listening: !1,\n perfectDrawEnabled: !1\n }));\n }\n renderRooms(t) {\n t.forEach((s) => {\n const e = new b.Group({\n x: s.x - this.settings.roomSize / 2,\n y: s.y - this.settings.roomSize / 2,\n listening: !1\n }), i = this.mapReader.getColorValue(s.env), o = this.settings.frameMode ? this.settings.backgroundColor : i, n = this.settings.frameMode ? i : this.settings.lineColor, r = this.settings.borders ? this.settings.lineWidth : 0, h = this.settings.roomShape === \"circle\" ? new b.Circle({\n x: this.settings.roomSize / 2,\n y: this.settings.roomSize / 2,\n radius: this.settings.roomSize / 2,\n fill: o,\n strokeWidth: r,\n stroke: n,\n perfectDrawEnabled: !1,\n listening: !1\n }) : new b.Rect({\n x: 0,\n y: 0,\n width: this.settings.roomSize,\n height: this.settings.roomSize,\n fill: o,\n strokeWidth: r,\n stroke: n,\n cornerRadius: this.settings.roomShape === \"roundedRectangle\" ? this.settings.roomSize * 0.2 : 0,\n perfectDrawEnabled: !1,\n listening: !1\n });\n if (e.add(h), this.settings.emboss && this.settings.roomShape !== \"circle\") {\n const d = this.settings.roomSize, g = J(this.settings.lineColor) > 0.41;\n e.add(new b.Line({\n points: g ? [0, 0, d, 0, d, d] : [0, 0, 0, d, d, d],\n stroke: g ? \"#000000\" : \"#ffffff\",\n strokeWidth: this.settings.lineWidth,\n perfectDrawEnabled: !1,\n listening: !1\n }));\n }\n this.renderSymbol(s, e), this.roomLayer.add(e), this.exitRenderer.renderSpecialExits(s).forEach((d) => {\n this.linkLayer.add(d);\n }), this.exitRenderer.getSpecialExitAreaTargets(s).forEach((d) => {\n this.areaExitHitZones.push(d);\n });\n const a = s.x - this.settings.roomSize / 2, c = s.y - this.settings.roomSize / 2;\n this.exitRenderer.renderStubs(s).forEach((d) => {\n const g = d.points();\n for (let u = 0; u < g.length; u += 2)\n g[u] -= a, g[u + 1] -= c;\n d.points(g), e.add(d);\n }), this.exitRenderer.renderInnerExits(s).forEach((d) => {\n d.position({ x: -a, y: -c }), e.add(d);\n });\n const l = { room: s, group: e };\n this.roomNodes.set(s.id, l), this.addRoomToSpatialIndex(l);\n });\n }\n scheduleRoomCulling() {\n this.cullingScheduled || (this.cullingScheduled = !0, window.requestAnimationFrame(() => {\n this.cullingScheduled = !1, this.updateRoomCulling();\n }));\n }\n updateRoomCulling() {\n if (this.roomNodes.size === 0 && this.standaloneExitNodes.length === 0)\n return;\n const t = this.stage.scaleX();\n if (!t)\n return;\n this.syncPerfMonitor();\n const s = this.settings.perfCallback ? performance.now() : 0, e = this.stage.position(), i = this.settings.roomSize / 2, o = this.settings.cullingBounds, n = o ? o.x : 0, r = o ? o.x + o.width : this.stage.width(), h = o ? o.y : 0, a = o ? o.y + o.height : this.stage.height(), c = Math.min(n, r), l = Math.max(n, r), d = Math.min(h, a), g = Math.max(h, a), u = (c - e.x) / t, f = (l - e.x) / t, y = (d - e.y) / t, p = (g - e.y) / t;\n let x = !1, k = !1;\n const D = this.settings.cullingEnabled ? this.settings.cullingMode ?? \"indexed\" : \"none\", $ = u - i, X = f + i, w = y - i, R = p + i;\n if (this.refreshStandaloneExitBoundsIfNeeded(), D === \"none\") {\n if (this.roomNodes.forEach((v) => {\n v.group.visible() || (v.group.visible(!0), x = !0);\n }), this.visibleExitDrawData.length !== this.standaloneExitNodes.length) {\n this.visibleExitDrawData.length = 0;\n for (const v of this.standaloneExitNodes)\n this.visibleExitDrawData.push(v.data);\n k = !0;\n }\n x && this.roomLayer.batchDraw(), k && this.linkLayer.batchDraw(), this.visibleRooms.clear(), this.roomNodes.forEach((v) => this.visibleRooms.add(v)), this.visibleStandaloneExitNodes.clear(), this.standaloneExitNodes.forEach((v) => this.visibleStandaloneExitNodes.add(v));\n return;\n }\n if (D === \"basic\") {\n const v = this.bufferRoomSet;\n v.clear(), this.roomNodes.forEach((P) => {\n const O = P.room.x - i, T = P.room.x + i, F = P.room.y - i, V = P.room.y + i, B = T >= u && O <= f && V >= y && F <= p;\n P.group.visible() !== B && (P.group.visible(B), x = !0), B && v.add(P);\n });\n const z = this.bufferExitSet;\n z.clear();\n let Y = !1;\n this.standaloneExitNodes.forEach((P) => {\n const { bounds: O } = P, T = O.x, F = O.x + O.width, V = O.y, B = O.y + O.height;\n F >= u && T <= f && B >= y && V <= p && (z.add(P), this.visibleStandaloneExitNodes.has(P) || (Y = !0));\n }), !Y && z.size !== this.visibleStandaloneExitNodes.size && (Y = !0), this.bufferRoomSet = this.visibleRooms, this.visibleRooms = v, this.bufferExitSet = this.visibleStandaloneExitNodes, this.visibleStandaloneExitNodes = z, Y && (this.visibleExitDrawData.length = 0, this.visibleStandaloneExitNodes.forEach((P) => this.visibleExitDrawData.push(P.data)), k = !0), x && this.roomLayer.batchDraw(), k && this.linkLayer.batchDraw();\n return;\n }\n const E = this.collectRoomCandidates($, w, X, R), C = this.bufferRoomSet;\n C.clear(), E.forEach((v) => {\n const z = v.room.x - i, Y = v.room.x + i, P = v.room.y - i, O = v.room.y + i, T = Y >= u && z <= f && O >= y && P <= p;\n v.group.visible() !== T && (v.group.visible(T), x = !0), T && C.add(v);\n }), this.visibleRooms.forEach((v) => {\n E.has(v) || v.group.visible() && (v.group.visible(!1), x = !0);\n }), this.bufferRoomSet = this.visibleRooms, this.visibleRooms = C;\n const S = this.collectStandaloneExitCandidates($, w, X, R), M = this.bufferExitSet;\n M.clear();\n let I = !1;\n S.forEach((v) => {\n const { bounds: z } = v, Y = z.x, P = z.x + z.width, O = z.y, T = z.y + z.height;\n P >= u && Y <= f && T >= y && O <= p && (M.add(v), this.visibleStandaloneExitNodes.has(v) || (I = !0));\n }), !I && M.size !== this.visibleStandaloneExitNodes.size && (I = !0), this.bufferExitSet = this.visibleStandaloneExitNodes, this.visibleStandaloneExitNodes = M, I && (this.visibleExitDrawData.length = 0, this.visibleStandaloneExitNodes.forEach((v) => this.visibleExitDrawData.push(v.data)), k = !0), x && this.roomLayer.batchDraw(), k && this.linkLayer.batchDraw();\n const W = this.settings.perfCallback ? performance.now() : 0;\n if (this.renderGrid(), this.settings.perfCallback) {\n const v = performance.now() - W, z = performance.now() - s;\n this.perfMonitor.record({\n cullingMs: z,\n gridMs: v,\n visibleRooms: this.visibleRooms.size,\n totalRooms: this.roomNodes.size,\n visibleExits: this.visibleStandaloneExitNodes.size,\n fps: this.perfMonitor.computeFps()\n });\n }\n }\n syncPerfMonitor() {\n this.perfMonitor.setCallback(this.settings.perfCallback);\n }\n invalidateGridCache() {\n this.cachedGridBounds = null;\n }\n renderGrid() {\n if (!this.settings.gridEnabled) {\n this.cachedGridBounds !== null && (this.gridLayer.destroyChildren(), this.gridLayer.batchDraw(), this.cachedGridBounds = null);\n return;\n }\n const t = this.stage.scaleX();\n if (!t)\n return;\n const s = this.stage.position(), e = this.stage.width(), i = this.stage.height(), o = (0 - s.x) / t, n = (e - s.x) / t, r = (0 - s.y) / t, h = (i - s.y) / t, a = this.settings.gridSize * 2, c = Math.floor((Math.min(o, n) - a) / this.settings.gridSize) * this.settings.gridSize, l = Math.ceil((Math.max(o, n) + a) / this.settings.gridSize) * this.settings.gridSize, d = Math.floor((Math.min(r, h) - a) / this.settings.gridSize) * this.settings.gridSize, g = Math.ceil((Math.max(r, h) + a) / this.settings.gridSize) * this.settings.gridSize, u = this.cachedGridBounds;\n if (!(u && u.left === c && u.right === l && u.top === d && u.bottom === g)) {\n this.gridLayer.destroyChildren();\n for (let f = c; f <= l; f += this.settings.gridSize)\n this.gridLayer.add(new b.Line({\n points: [f, d, f, g],\n stroke: this.settings.gridColor,\n strokeWidth: this.settings.gridLineWidth,\n listening: !1,\n perfectDrawEnabled: !1\n }));\n for (let f = d; f <= g; f += this.settings.gridSize)\n this.gridLayer.add(new b.Line({\n points: [c, f, l, f],\n stroke: this.settings.gridColor,\n strokeWidth: this.settings.gridLineWidth,\n listening: !1,\n perfectDrawEnabled: !1\n }));\n this.cachedGridBounds = { left: c, right: l, top: d, bottom: g }, this.gridLayer.batchDraw();\n }\n }\n clearCurrentRoomOverlay() {\n this.currentRoomOverlay.forEach((t) => t.destroy()), this.currentRoomOverlay = [], this.positionLayer.batchDraw();\n }\n updateCurrentRoomOverlay(t) {\n if (this.clearCurrentRoomOverlay(), t.area !== this.currentArea || t.z !== this.currentZIndex) {\n this.positionLayer.batchDraw();\n return;\n }\n const s = /* @__PURE__ */ new Map();\n s.set(t.id, t);\n const e = [], i = this.currentAreaInstance instanceof gt ? this.currentAreaInstance : void 0;\n this.currentAreaInstance && this.currentZIndex !== void 0 && this.currentAreaInstance.getLinkExits(this.currentZIndex).filter((h) => h.a === t.id || h.b === t.id).forEach((h) => {\n const a = this.settings.highlightCurrentRoom ? this.exitRenderer.renderWithColor(h, q, this.currentZIndex) : this.exitRenderer.render(h, this.currentZIndex);\n a && e.push(a);\n });\n const o = this.settings.highlightCurrentRoom ? q : void 0;\n this.exitRenderer.renderSpecialExits(t, o).forEach((r) => {\n e.push(r);\n }), (this.settings.highlightCurrentRoom ? this.exitRenderer.renderStubs(t, q) : this.exitRenderer.renderStubs(t)).forEach((r) => {\n e.push(r);\n }), [...Object.values(t.exits), ...Object.values(t.specialExits)].forEach((r) => {\n const h = this.mapReader.getRoom(r), a = !i || i.hasVisitedRoom(r);\n h && h.area === this.currentArea && h.z === this.currentZIndex && a && s.set(r, h);\n }), e.forEach((r) => {\n this.positionLayer.add(r), this.currentRoomOverlay.push(r);\n }), s.forEach((r, h) => {\n const a = h === t.id, c = this.createOverlayRoomGroup(\n r,\n {\n stroke: a && this.settings.highlightCurrentRoom ? q : this.settings.lineColor\n }\n );\n this.positionLayer.add(c), this.currentRoomOverlay.push(c), this.exitRenderer.renderInnerExits(r).forEach((l) => {\n this.positionLayer.add(l), this.currentRoomOverlay.push(l);\n });\n }), this.positionRender && this.positionRender.moveToTop(), this.positionLayer.batchDraw();\n }\n createOverlayRoomGroup(t, s) {\n const e = new b.Group({\n x: t.x - this.settings.roomSize / 2,\n y: t.y - this.settings.roomSize / 2,\n listening: !1\n }), i = this.mapReader.getColorValue(t.env), o = this.settings.frameMode ? this.settings.backgroundColor : i, n = this.settings.frameMode ? i : s.stroke, r = this.settings.borders ? this.settings.lineWidth : 0, h = this.settings.roomShape === \"circle\" ? new b.Circle({\n x: this.settings.roomSize / 2,\n y: this.settings.roomSize / 2,\n radius: this.settings.roomSize / 2,\n fill: o,\n stroke: n,\n strokeWidth: r\n }) : new b.Rect({\n x: 0,\n y: 0,\n width: this.settings.roomSize,\n height: this.settings.roomSize,\n fill: o,\n stroke: n,\n strokeWidth: r,\n cornerRadius: this.settings.roomShape === \"roundedRectangle\" ? this.settings.roomSize * 0.2 : 0\n });\n if (e.add(h), this.settings.emboss && this.settings.roomShape !== \"circle\") {\n const a = this.settings.roomSize, c = J(this.settings.lineColor) > 0.41;\n e.add(new b.Line({\n points: c ? [0, 0, a, 0, a, a] : [0, 0, 0, a, a, a],\n stroke: c ? \"#000000\" : \"#ffffff\",\n strokeWidth: this.settings.lineWidth,\n perfectDrawEnabled: !1,\n listening: !1\n }));\n }\n return this.renderSymbol(t, e), e;\n }\n getSymbolColor(t, s) {\n return this.settings.frameMode ? this.mapReader.getColorValue(t) : this.mapReader.getSymbolColor(t, s);\n }\n renderSymbol(t, s) {\n if (t.roomChar !== void 0) {\n const e = this.settings.roomSize * 0.75, i = new b.Text({\n x: 0,\n y: 0,\n text: t.roomChar,\n fontSize: e,\n fontStyle: \"bold\",\n fill: this.getSymbolColor(t.env),\n align: \"center\",\n verticalAlign: \"middle\",\n width: this.settings.roomSize,\n height: this.settings.roomSize,\n perfectDrawEnabled: !1,\n listening: !1\n });\n s.add(i);\n }\n }\n renderExits(t) {\n t.forEach((s) => {\n const e = this.exitRenderer.renderData(s, this.currentZIndex);\n if (!e)\n return;\n const i = { data: e, bounds: e.bounds, targetRoomId: e.targetRoomId };\n this.standaloneExitNodes.push(i), this.addStandaloneExitToSpatialIndex(i), e.targetRoomId !== void 0 && this.areaExitHitZones.push({ bounds: e.bounds, targetRoomId: e.targetRoomId });\n }), this.standaloneExitBoundsRoomSize = this.settings.roomSize, this.exitBatchShape = new b.Shape({\n listening: !1,\n perfectDrawEnabled: !1,\n sceneFunc: (s) => {\n const e = s._context;\n for (const i of this.visibleExitDrawData)\n this.drawExitData(e, i);\n }\n }), this.linkLayer.add(this.exitBatchShape);\n }\n drawExitData(t, s) {\n for (const e of s.lines) {\n t.beginPath(), t.moveTo(e.points[0], e.points[1]);\n for (let i = 2; i < e.points.length; i += 2)\n t.lineTo(e.points[i], e.points[i + 1]);\n t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, e.dash ? t.setLineDash(e.dash) : t.setLineDash([]), t.stroke();\n }\n for (const e of s.arrows) {\n t.beginPath(), t.moveTo(e.points[0], e.points[1]);\n for (let d = 2; d < e.points.length; d += 2)\n t.lineTo(e.points[d], e.points[d + 1]);\n t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, e.dash ? t.setLineDash(e.dash) : t.setLineDash([]), t.stroke();\n const i = e.points.length - 2, o = e.points[i], n = e.points[i + 1], r = e.points[i - 2], h = e.points[i - 1], a = Math.atan2(n - h, o - r), c = e.pointerLength, l = e.pointerWidth / 2;\n t.beginPath(), t.setLineDash([]), t.moveTo(o, n), t.lineTo(o - c * Math.cos(a - Math.atan2(l, c)), n - c * Math.sin(a - Math.atan2(l, c))), t.lineTo(o - c * Math.cos(a + Math.atan2(l, c)), n - c * Math.sin(a + Math.atan2(l, c))), t.closePath(), t.fillStyle = e.fill, t.fill(), t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.stroke();\n }\n for (const e of s.doors)\n t.beginPath(), t.rect(e.x, e.y, e.width, e.height), t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.setLineDash([]), t.stroke();\n }\n renderLabels(t) {\n this.settings.labelRenderMode !== \"none\" && t.forEach((s) => {\n if (this.settings.labelRenderMode === \"image\") {\n if (!s.pixMap)\n return;\n const e = new Image();\n e.src = `data:image/png;base64,${s.pixMap}`;\n const i = new b.Image({\n x: s.X,\n y: -s.Y,\n width: s.Width,\n height: s.Height,\n image: e,\n listening: !1\n });\n this.linkLayer.add(i);\n return;\n }\n this.renderLabelAsData(s);\n });\n }\n renderLabelAsData(t) {\n const s = new b.Group({\n listening: !1\n }), e = new b.Rect({\n x: t.X,\n y: -t.Y,\n width: t.Width,\n height: t.Height,\n listening: !1\n });\n (t.BgColor?.alpha ?? 0) > 0 && !this.settings.transparentLabels ? e.fill(this.getLabelColor(t.BgColor)) : e.fillEnabled(!1), s.add(e);\n const i = Math.min(0.75, t.Width / Math.max(t.Text.length / 2, 1)), o = Math.max(0.1, Math.min(i, Math.max(t.Height * 0.9, 0.1))), n = new b.Text({\n x: t.X,\n y: -t.Y,\n width: t.Width,\n height: t.Height,\n text: t.Text,\n fontSize: o,\n fillEnabled: !0,\n fill: this.getLabelColor(t.FgColor),\n align: \"center\",\n verticalAlign: \"middle\",\n listening: !1\n });\n s.add(n), this.linkLayer.add(s);\n }\n getLabelColor(t) {\n const s = (t?.alpha ?? 255) / 255, e = (i) => Math.min(255, Math.max(0, i ?? 0));\n return `rgba(${e(t?.r)}, ${e(t?.g)}, ${e(t?.b)}, ${s})`;\n }\n}\nconst wt = {\n rgbValue: \"rgb(114, 1, 0)\",\n symbolColor: [225, 225, 225]\n};\nfunction vt(m) {\n const t = m[0] / 255, s = m[1] / 255, e = m[2] / 255, i = Math.max(t, s, e), o = Math.min(t, s, e);\n return (i + o) / 2;\n}\nclass me {\n constructor(t, s) {\n this.rooms = {}, this.areas = {}, this.areaSources = {}, this.explorationEnabled = !1, this.colors = {}, t.forEach((e) => {\n e.rooms.forEach((o) => {\n o.y = -o.y, this.rooms[o.id] = o;\n });\n const i = parseInt(e.areaId);\n this.areas[i] = new _(e), this.areaSources[i] = e;\n }), this.colors = s.reduce((e, i) => ({\n ...e,\n [i.envId]: {\n rgb: i.colors,\n rgbValue: `rgb(${i.colors.join(\",\")})`,\n symbolColor: vt(i.colors) > 0.41 ? [25, 25, 25] : [225, 255, 255],\n symbolColorValue: vt(i.colors) > 0.41 ? \"rgb(25,25,25)\" : \"rgb(225,255,255)\"\n }\n }), {});\n }\n getArea(t) {\n return this.areas[t];\n }\n getExplorationArea(t) {\n const s = this.areas[t];\n if (s instanceof gt)\n return s;\n }\n getAreas() {\n return Object.values(this.areas);\n }\n getRooms() {\n return Object.values(this.rooms);\n }\n getRoom(t) {\n return this.rooms[t];\n }\n ensureVisitedRooms() {\n return this.visitedRooms || (this.visitedRooms = /* @__PURE__ */ new Set()), this.visitedRooms;\n }\n applyExplorationDecoration() {\n this.visitedRooms && Object.entries(this.areaSources).forEach(([t, s]) => {\n const e = parseInt(t, 10);\n this.areas[e] = new gt(s, this.visitedRooms);\n });\n }\n decorateWithExploration(t) {\n return t !== void 0 ? this.setVisitedRooms(t) : this.ensureVisitedRooms(), this.applyExplorationDecoration(), this.explorationEnabled = !0, this.visitedRooms;\n }\n getVisitedRooms() {\n return this.visitedRooms;\n }\n clearExplorationDecoration() {\n Object.entries(this.areaSources).forEach(([t, s]) => {\n const e = parseInt(t, 10);\n this.areas[e] = new _(s);\n }), this.explorationEnabled = !1;\n }\n isExplorationEnabled() {\n return this.explorationEnabled;\n }\n setVisitedRooms(t) {\n return this.visitedRooms = t instanceof Set ? t : new Set(t), this.explorationEnabled && this.applyExplorationDecoration(), this.visitedRooms;\n }\n addVisitedRoom(t) {\n if (this.explorationEnabled) {\n const i = this.getRoom(t);\n if (i) {\n const o = this.getExplorationArea(i.area);\n if (o)\n return o.addVisitedRoom(t);\n }\n }\n const s = this.ensureVisitedRooms(), e = s.has(t);\n return s.add(t), !e;\n }\n addVisitedRooms(t) {\n const s = this.ensureVisitedRooms();\n let e = 0;\n for (const i of t) {\n if (this.explorationEnabled) {\n const n = this.getRoom(i);\n if (n) {\n const r = this.getExplorationArea(n.area);\n if (r) {\n r.addVisitedRoom(i) && e++;\n continue;\n }\n }\n }\n const o = s.has(i);\n s.add(i), o || e++;\n }\n return e;\n }\n hasVisitedRoom(t) {\n return this.visitedRooms?.has(t) ?? !1;\n }\n getColorValue(t) {\n return this.colors[t]?.rgbValue ?? wt.rgbValue;\n }\n getSymbolColor(t, s) {\n const e = this.colors[t]?.symbolColor ?? wt.symbolColor, i = Math.min(Math.max(s ?? 1, 0), 1), o = e.join(\",\");\n return i != 1 ? `rgba(${o}, ${i})` : `rgba(${o})`;\n }\n}\nfunction _t(m) {\n return m && m.__esModule && Object.prototype.hasOwnProperty.call(m, \"default\") ? m.default : m;\n}\nvar rt, kt;\nfunction qt() {\n if (kt) return rt;\n kt = 1;\n class m {\n /**\n * Creates a new empty priority queue\n */\n constructor() {\n this.keys = /* @__PURE__ */ new Set(), this.queue = [];\n }\n /**\n * Sort the queue to have the least expensive node to visit on top\n *\n * @private\n */\n sort() {\n this.queue.sort((s, e) => s.priority - e.priority);\n }\n /**\n * Sets a priority for a key in the queue.\n * Inserts it in the queue if it does not already exists.\n *\n * @param {any} key Key to update or insert\n * @param {number} value Priority of the key\n * @return {number} Size of the queue\n */\n set(s, e) {\n const i = Number(e);\n if (isNaN(i)) throw new TypeError('\"priority\" must be a number');\n return this.keys.has(s) ? this.queue.map((o) => (o.key === s && Object.assign(o, { priority: i }), o)) : (this.keys.add(s), this.queue.push({ key: s, priority: i })), this.sort(), this.queue.length;\n }\n /**\n * The next method is used to dequeue a key:\n * It removes the first element from the queue and returns it\n *\n * @return {object} First priority queue entry\n */\n next() {\n const s = this.queue.shift();\n return this.keys.delete(s.key), s;\n }\n /**\n * @return {boolean} `true` when the queue is empty\n */\n isEmpty() {\n return this.queue.length === 0;\n }\n /**\n * Check if the queue has a key in it\n *\n * @param {any} key Key to lookup\n * @return {boolean}\n */\n has(s) {\n return this.keys.has(s);\n }\n /**\n * Get the element in the queue with the specified key\n *\n * @param {any} key Key to lookup\n * @return {object}\n */\n get(s) {\n return this.queue.find((e) => e.key === s);\n }\n }\n return rt = m, rt;\n}\nvar at, Rt;\nfunction Kt() {\n if (Rt) return at;\n Rt = 1;\n function m(t, s) {\n const e = /* @__PURE__ */ new Map();\n for (const [i, o] of t)\n i !== s && o instanceof Map ? e.set(i, m(o, s)) : i !== s && e.set(i, o);\n return e;\n }\n return at = m, at;\n}\nvar ht, St;\nfunction Qt() {\n if (St) return ht;\n St = 1;\n function m(s) {\n const e = Number(s);\n return !(isNaN(e) || e <= 0);\n }\n function t(s) {\n const e = /* @__PURE__ */ new Map();\n return Object.keys(s).forEach((o) => {\n const n = s[o];\n if (n !== null && typeof n == \"object\" && !Array.isArray(n))\n return e.set(o, t(n));\n if (!m(n))\n throw new Error(\n `Could not add node at key \"${o}\", make sure it's a valid node`,\n n\n );\n return e.set(o, Number(n));\n }), e;\n }\n return ht = t, ht;\n}\nvar ct, Et;\nfunction Ut() {\n if (Et) return ct;\n Et = 1;\n function m(t) {\n if (!(t instanceof Map))\n throw new Error(`Invalid graph: Expected Map instead found ${typeof t}`);\n t.forEach((s, e) => {\n if (typeof s == \"object\" && s instanceof Map) {\n m(s);\n return;\n }\n if (typeof s != \"number\" || s <= 0)\n throw new Error(\n `Values must be numbers greater than 0. Found value ${s} at ${e}`\n );\n });\n }\n return ct = m, ct;\n}\nvar lt, Mt;\nfunction Jt() {\n if (Mt) return lt;\n Mt = 1;\n const m = qt(), t = Kt(), s = Qt(), e = Ut();\n class i {\n /**\n * Creates a new Graph, optionally initializing it a nodes graph representation.\n *\n * A graph representation is an object that has as keys the name of the point and as values\n * the points reacheable from that node, with the cost to get there:\n *\n * {\n * node (Number|String): {\n * neighbor (Number|String): cost (Number),\n * ...,\n * },\n * }\n *\n * In alternative to an object, you can pass a `Map` of `Map`. This will\n * allow you to specify numbers as keys.\n *\n * @param {Objec|Map} [graph] - Initial graph definition\n * @example\n *\n * const route = new Graph();\n *\n * // Pre-populated graph\n * const route = new Graph({\n * A: { B: 1 },\n * B: { A: 1, C: 2, D: 4 },\n * });\n *\n * // Passing a Map\n * const g = new Map()\n *\n * const a = new Map()\n * a.set('B', 1)\n *\n * const b = new Map()\n * b.set('A', 1)\n * b.set('C', 2)\n * b.set('D', 4)\n *\n * g.set('A', a)\n * g.set('B', b)\n *\n * const route = new Graph(g)\n */\n constructor(n) {\n n instanceof Map ? (e(n), this.graph = n) : n ? this.graph = s(n) : this.graph = /* @__PURE__ */ new Map();\n }\n /**\n * Adds a node to the graph\n *\n * @param {string} name - Name of the node\n * @param {Object|Map} neighbors - Neighbouring nodes and cost to reach them\n * @return {this}\n * @example\n *\n * const route = new Graph();\n *\n * route.addNode('A', { B: 1 });\n *\n * // It's possible to chain the calls\n * route\n * .addNode('B', { A: 1 })\n * .addNode('C', { A: 3 });\n *\n * // The neighbors can be expressed in a Map\n * const d = new Map()\n * d.set('A', 2)\n * d.set('B', 8)\n *\n * route.addNode('D', d)\n */\n addNode(n, r) {\n let h;\n return r instanceof Map ? (e(r), h = r) : h = s(r), this.graph.set(n, h), this;\n }\n /**\n * @deprecated since version 2.0, use `Graph#addNode` instead\n */\n addVertex(n, r) {\n return this.addNode(n, r);\n }\n /**\n * Removes a node and all of its references from the graph\n *\n * @param {string|number} key - Key of the node to remove from the graph\n * @return {this}\n * @example\n *\n * const route = new Graph({\n * A: { B: 1, C: 5 },\n * B: { A: 3 },\n * C: { B: 2, A: 2 },\n * });\n *\n * route.removeNode('C');\n * // The graph now is:\n * // { A: { B: 1 }, B: { A: 3 } }\n */\n removeNode(n) {\n return this.graph = t(this.graph, n), this;\n }\n /**\n * Compute the shortest path between the specified nodes\n *\n * @param {string} start - Starting node\n * @param {string} goal - Node we want to reach\n * @param {object} [options] - Options\n *\n * @param {boolean} [options.trim] - Exclude the origin and destination nodes from the result\n * @param {boolean} [options.reverse] - Return the path in reversed order\n * @param {boolean} [options.cost] - Also return the cost of the path when set to true\n *\n * @return {array|object} Computed path between the nodes.\n *\n * When `option.cost` is set to true, the returned value will be an object with shape:\n * - `path` *(Array)*: Computed path between the nodes\n * - `cost` *(Number)*: Cost of the path\n *\n * @example\n *\n * const route = new Graph()\n *\n * route.addNode('A', { B: 1 })\n * route.addNode('B', { A: 1, C: 2, D: 4 })\n * route.addNode('C', { B: 2, D: 1 })\n * route.addNode('D', { C: 1, B: 4 })\n *\n * route.path('A', 'D') // => ['A', 'B', 'C', 'D']\n *\n * // trimmed\n * route.path('A', 'D', { trim: true }) // => [B', 'C']\n *\n * // reversed\n * route.path('A', 'D', { reverse: true }) // => ['D', 'C', 'B', 'A']\n *\n * // include the cost\n * route.path('A', 'D', { cost: true })\n * // => {\n * // path: [ 'A', 'B', 'C', 'D' ],\n * // cost: 4\n * // }\n */\n path(n, r, h = {}) {\n if (!this.graph.size)\n return h.cost ? { path: null, cost: 0 } : null;\n const a = /* @__PURE__ */ new Set(), c = new m(), l = /* @__PURE__ */ new Map();\n let d = [], g = 0, u = [];\n if (h.avoid && (u = [].concat(h.avoid)), u.includes(n))\n throw new Error(`Starting node (${n}) cannot be avoided`);\n if (u.includes(r))\n throw new Error(`Ending node (${r}) cannot be avoided`);\n for (c.set(n, 0); !c.isEmpty(); ) {\n const f = c.next();\n if (f.key === r) {\n g = f.priority;\n let p = f.key;\n for (; l.has(p); )\n d.push(p), p = l.get(p);\n break;\n }\n a.add(f.key), (this.graph.get(f.key) || /* @__PURE__ */ new Map()).forEach((p, x) => {\n if (a.has(x) || u.includes(x)) return null;\n if (!c.has(x))\n return l.set(x, f.key), c.set(x, f.priority + p);\n const k = c.get(x).priority, D = f.priority + p;\n return D < k ? (l.set(x, f.key), c.set(x, D)) : null;\n });\n }\n return d.length ? (h.trim ? d.shift() : d = d.concat([n]), h.reverse || (d = d.reverse()), h.cost ? {\n path: d,\n cost: g\n } : d) : h.cost ? { path: null, cost: 0 } : null;\n }\n /**\n * @deprecated since version 2.0, use `Graph#path` instead\n */\n shortestPath(...n) {\n return this.path(...n);\n }\n }\n return lt = i, lt;\n}\nvar te = Jt();\nconst ee = /* @__PURE__ */ _t(te), se = {\n 1: \"north\",\n 2: \"northeast\",\n 3: \"northwest\",\n 4: \"east\",\n 5: \"west\",\n 6: \"south\",\n 7: \"southeast\",\n 8: \"southwest\",\n 9: \"up\",\n 10: \"down\",\n 11: \"in\",\n 12: \"out\"\n}, ie = {\n north: \"n\",\n northeast: \"ne\",\n northwest: \"nw\",\n east: \"e\",\n west: \"w\",\n south: \"s\",\n southeast: \"se\",\n southwest: \"sw\",\n up: \"up\",\n down: \"down\",\n in: \"in\",\n out: \"out\"\n};\nfunction Ct(m, t) {\n m.push(t);\n let s = m.length - 1;\n for (; s > 0; ) {\n const e = s - 1 >> 1;\n if (m[e].priority <= m[s].priority) break;\n [m[e], m[s]] = [m[s], m[e]], s = e;\n }\n}\nfunction oe(m) {\n if (m.length === 0) return;\n const t = m[0], s = m.pop();\n if (m.length > 0) {\n m[0] = s;\n let e = 0;\n const i = m.length;\n for (; ; ) {\n let o = e;\n const n = 2 * e + 1, r = 2 * e + 2;\n if (n < i && m[n].priority < m[o].priority && (o = n), r < i && m[r].priority < m[o].priority && (o = r), o === e) break;\n [m[e], m[o]] = [m[o], m[e]], e = o;\n }\n }\n return t;\n}\nfunction ne(m, t, s) {\n const e = [s];\n let i = s;\n for (; i !== t; )\n i = m.get(i), e.push(i);\n return e.reverse(), e;\n}\nfunction re(m, t, s) {\n const e = m.path(t.toString(), s.toString()), i = Array.isArray(e) ? e : e?.path;\n return i ? i.map((o) => Number(o)) : null;\n}\nfunction ae(m, t, s, e, i, o) {\n const n = e.getRoom(s);\n if (!n) return null;\n const r = n.x, h = n.y, a = n.z, c = (u) => {\n const f = e.getRoom(u);\n if (!f) return 0;\n const y = f.x - r, p = f.y - h, x = f.z - a;\n return Math.sqrt(y * y + p * p + x * x) / i * o;\n }, l = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), g = [];\n for (l.set(t, 0), Ct(g, { id: t, priority: c(t) }); g.length > 0; ) {\n const { id: u } = oe(g);\n if (u === s) return ne(d, t, s);\n const f = l.get(u) ?? 1 / 0, y = m.get(u);\n if (y)\n for (const p of y) {\n const x = f + p.weight;\n x < (l.get(p.id) ?? 1 / 0) && (l.set(p.id, x), d.set(p.id, u), Ct(g, { id: p.id, priority: x + c(p.id) }));\n }\n }\n return null;\n}\nclass pe {\n constructor(t, s = \"dijkstra\") {\n this.cache = /* @__PURE__ */ new Map(), this.mapReader = t, this._algorithm = s;\n const { adj: e, maxEdgeDistance: i, minEdgeWeight: o, graphDefinition: n } = this.buildGraph();\n this.adj = e, this.graph = new ee(n), this.maxEdgeDistance = i, this.minEdgeWeight = o;\n }\n get algorithm() {\n return this._algorithm;\n }\n setAlgorithm(t) {\n t !== this._algorithm && (this._algorithm = t, this.cache.clear());\n }\n findPath(t, s) {\n const e = `${t}->${s}`;\n if (this.cache.has(e))\n return this.cache.get(e);\n if (t === s) {\n const o = this.mapReader.getRoom(t) ? [t] : null;\n return this.cache.set(e, o), o;\n }\n if (!this.mapReader.getRoom(t) || !this.mapReader.getRoom(s))\n return this.cache.set(e, null), null;\n let i;\n switch (this._algorithm) {\n case \"dijkstra\":\n i = re(this.graph, t, s);\n break;\n case \"astar\":\n i = ae(this.adj, t, s, this.mapReader, this.maxEdgeDistance, this.minEdgeWeight);\n break;\n }\n return this.cache.set(e, i), i;\n }\n resolveEdgeWeight(t, s, e) {\n const i = t.exitWeights?.[s];\n return i !== void 0 && i > 0 ? i : Math.max(e.weight, 1);\n }\n buildGraph() {\n const t = /* @__PURE__ */ new Map(), s = {};\n let e = 1, i = 1 / 0;\n return this.mapReader.getRooms().forEach((o) => {\n const n = [], r = {}, h = new Set(\n (o.exitLocks ?? []).map((c) => se[c]).filter((c) => !!c)\n ), a = new Set(o.mSpecialExitLocks ?? []);\n Object.entries(o.exits ?? {}).forEach(([c, l]) => {\n if (h.has(c)) return;\n const d = this.mapReader.getRoom(l);\n if (d) {\n const g = ie[c] ?? c, u = this.resolveEdgeWeight(o, g, d);\n n.push({ id: l, weight: u }), r[l.toString()] = u, u < i && (i = u);\n const f = d.x - o.x, y = d.y - o.y, p = d.z - o.z, x = Math.sqrt(f * f + y * y + p * p);\n x > e && (e = x);\n }\n }), Object.entries(o.specialExits ?? {}).forEach(([c, l]) => {\n if (a.has(l)) return;\n const d = this.mapReader.getRoom(l);\n if (d) {\n const g = this.resolveEdgeWeight(o, c, d);\n n.push({ id: l, weight: g }), r[l.toString()] = g, g < i && (i = g);\n const u = d.x - o.x, f = d.y - o.y, y = d.z - o.z, p = Math.sqrt(u * u + f * f + y * y);\n p > e && (e = p);\n }\n }), t.set(o.id, n), s[o.id.toString()] = r;\n }), isFinite(i) || (i = 1), { adj: t, maxEdgeDistance: e, minEdgeWeight: i, graphDefinition: s };\n }\n}\nconst he = {\n 1: \"north\",\n 2: \"northeast\",\n 3: \"northwest\",\n 4: \"east\",\n 5: \"west\",\n 6: \"south\",\n 7: \"southeast\",\n 8: \"southwest\",\n 9: \"up\",\n 10: \"down\",\n 11: \"in\",\n 12: \"out\"\n};\nfunction ce() {\n return {\n areaWidth: 150,\n areaHeight: 80,\n areaSpacing: 50,\n fontSize: 14,\n connectionLineWidth: 2,\n areaFillColor: \"#2a2a3e\",\n areaStrokeColor: \"#4a4a6e\",\n textColor: \"#e0e0e0\",\n connectionColor: \"#6a6a8e\",\n highlightColor: \"#ff9900\"\n };\n}\nclass ye {\n constructor(t, s, e) {\n this.areaNodes = /* @__PURE__ */ new Map(), this.connectionGroups = [], this.currentZoom = 1, this.domainInfo = /* @__PURE__ */ new Map(), this.domainFilter = \"all\", this.dotsMode = !1, this.settings = e ?? ce(), this.stage = new b.Stage({\n container: t,\n width: t.clientWidth,\n height: t.clientHeight,\n draggable: !0\n }), this.backgroundLayer = new b.Layer({ listening: !1 }), this.stage.add(this.backgroundLayer), this.connectionLayer = new b.Layer({ listening: !1 }), this.stage.add(this.connectionLayer), this.areaLayer = new b.Layer(), this.stage.add(this.areaLayer), this.mapReader = s, this.initScaling(), this.initResize(t);\n }\n initResize(t) {\n new ResizeObserver(() => {\n this.stage.width(t.clientWidth), this.stage.height(t.clientHeight), this.stage.batchDraw();\n }).observe(t);\n }\n initScaling() {\n this.stage.on(\"wheel\", (s) => {\n s.evt.preventDefault();\n const e = this.stage.scaleX(), i = this.stage.getPointerPosition();\n if (!i) return;\n const o = {\n x: (i.x - this.stage.x()) / e,\n y: (i.y - this.stage.y()) / e\n }, r = (s.evt.deltaY > 0 ? -1 : 1) > 0 ? this.currentZoom * 1.1 : this.currentZoom / 1.1;\n if (this.setZoom(r)) {\n const h = this.stage.scaleX(), a = {\n x: i.x - o.x * h,\n y: i.y - o.y * h\n };\n this.stage.position(a), this.stage.batchDraw();\n }\n });\n }\n setZoom(t) {\n const s = Math.max(0.1, Math.min(5, t));\n return this.currentZoom === s ? !1 : (this.currentZoom = s, this.stage.scale({ x: this.currentZoom, y: this.currentZoom }), !0);\n }\n getZoom() {\n return this.currentZoom;\n }\n setDomainInfo(t) {\n this.domainInfo.clear();\n for (const [s, e] of Object.entries(t))\n this.domainInfo.set(Number(s), e);\n }\n setDomainFilter(t) {\n this.domainFilter = t;\n }\n getDomainFilter() {\n return this.domainFilter;\n }\n setBackgroundImage(t) {\n this.backgroundConfig = {\n url: t.url,\n x: t.x,\n y: t.y,\n width: t.width,\n height: t.height,\n opacity: t.opacity ?? 0.3\n };\n }\n clearBackgroundImage() {\n this.backgroundConfig = void 0, this.backgroundImage = void 0, this.backgroundLayer.destroyChildren(), this.backgroundLayer.batchDraw();\n }\n redrawBackground() {\n this.drawBackground();\n }\n setDotsMode(t) {\n this.dotsMode = t;\n }\n getDotsMode() {\n return this.dotsMode;\n }\n redraw() {\n this.drawBackground(), this.drawConnections(), this.drawAreas(), this.stage.batchDraw();\n }\n isAreaInDomain(t) {\n const s = this.domainInfo.get(t);\n if (!s)\n return this.domainFilter === \"interdomain\" || this.domainFilter === \"all\";\n switch (this.domainFilter) {\n case \"ishtar\":\n return s.isIshtar;\n case \"empire\":\n return s.isEmpire;\n case \"interdomain\":\n return !s.isIshtar && !s.isEmpire;\n case \"all\":\n return !0;\n }\n }\n areAreasInSameDomain(t, s) {\n const e = this.domainInfo.get(t), i = this.domainInfo.get(s);\n return !e || !i ? !1 : e.isIshtar && i.isIshtar || e.isEmpire && i.isEmpire ? !0 : !e.isIshtar && !e.isEmpire && !i.isIshtar && !i.isEmpire;\n }\n render() {\n this.analyzeConnections(), this.layoutAreas(), this.drawBackground(), this.drawConnections(), this.drawAreas(), this.centerView(), this.stage.batchDraw();\n }\n drawBackground() {\n if (this.backgroundLayer.destroyChildren(), !this.backgroundConfig) return;\n const t = new Image();\n t.crossOrigin = \"anonymous\", t.onload = () => {\n this.backgroundImage = new b.Image({\n x: this.backgroundConfig.x,\n y: this.backgroundConfig.y,\n image: t,\n width: this.backgroundConfig.width,\n height: this.backgroundConfig.height,\n opacity: this.backgroundConfig.opacity,\n listening: !1\n }), this.backgroundLayer.add(this.backgroundImage), this.backgroundLayer.batchDraw();\n }, t.onerror = () => {\n console.error(\"Failed to load background image:\", this.backgroundConfig?.url);\n }, t.src = this.backgroundConfig.url;\n }\n analyzeConnections() {\n this.areaNodes.clear(), this.connectionGroups = [];\n const t = this.mapReader.getRooms(), s = this.mapReader.getAreas(), e = /* @__PURE__ */ new Map();\n for (const a of s) {\n const c = a.getAreaId(), l = a.getRooms();\n if (l.length === 0) continue;\n let d = 1 / 0, g = -1 / 0, u = 1 / 0, f = -1 / 0, y = 0;\n for (const k of l)\n k.z === 0 && (y++, d = Math.min(d, k.x), g = Math.max(g, k.x), u = Math.min(u, k.y), f = Math.max(f, k.y));\n if (y === 0)\n for (const k of l)\n d = Math.min(d, k.x), g = Math.max(g, k.x), u = Math.min(u, k.y), f = Math.max(f, k.y);\n const p = (d + g) / 2, x = (u + f) / 2;\n e.set(c, { minX: d, maxX: g, minY: u, maxY: f, centerX: p, centerY: x, roomCount: l.length });\n }\n let i = 1;\n for (const a of e.values()) {\n const c = a.maxX - a.minX, l = a.maxY - a.minY;\n i = Math.max(i, c, l);\n }\n const o = 200, n = 100, r = o / i;\n for (const a of s) {\n const c = a.getAreaId(), l = e.get(c);\n if (!l || !this.isAreaInDomain(c))\n continue;\n const d = l.maxX - l.minX, g = l.maxY - l.minY;\n let u = Math.max(n, d * r), f = Math.max(n, g * r);\n const y = u / f;\n y > 3 ? f = u / 3 : y < 1 / 3 && (u = f / 3), this.areaNodes.set(c, {\n areaId: c,\n name: a.getAreaName(),\n x: 0,\n y: 0,\n width: u,\n height: f,\n connections: [],\n roomCount: l.roomCount,\n realCenterX: l.centerX,\n realCenterY: l.centerY\n });\n }\n const h = /* @__PURE__ */ new Map();\n for (const a of t) {\n const c = a.area;\n if (!this.areaNodes.has(c)) continue;\n const l = this.getLockedDirections(a), d = new Set(a.mSpecialExitLocks ?? []);\n for (const [g, u] of Object.entries(a.exits ?? {})) {\n if (l.has(g)) continue;\n const f = this.mapReader.getRoom(u);\n if (!f || f.area === c || !this.areaNodes.has(f.area) || !this.areAreasInSameDomain(c, f.area)) continue;\n const y = this.createConnection(\n a,\n f,\n g\n );\n y && this.addConnection(h, y);\n }\n for (const [g, u] of Object.entries(a.specialExits ?? {})) {\n if (d.has(u)) continue;\n const f = this.mapReader.getRoom(u);\n if (!f || f.area === c || !this.areaNodes.has(f.area) || !this.areAreasInSameDomain(c, f.area)) continue;\n const y = this.parseDirection(g), p = this.createConnection(a, f, y);\n p && this.addConnection(h, p);\n }\n }\n for (const [a, c] of h) {\n const [l, d] = a.split(\"-\").map(Number), g = this.createConnectionGroup(l, d, c);\n this.connectionGroups.push(g);\n const u = this.areaNodes.get(l), f = this.areaNodes.get(d);\n if (u && u.connections.push(...c), f)\n for (const y of c)\n f.connections.push({\n ...y,\n fromAreaId: y.toAreaId,\n toAreaId: y.fromAreaId,\n fromRoomId: y.toRoomId,\n toRoomId: y.fromRoomId,\n direction: y.direction ? Dt[y.direction] : null,\n fromRoomPosition: y.toRoomPosition,\n toRoomPosition: y.fromRoomPosition\n });\n }\n }\n getLockedDirections(t) {\n return new Set(\n (t.exitLocks ?? []).map((s) => he[s]).filter((s) => !!s)\n );\n }\n createConnection(t, s, e) {\n const i = this.toPlanarDirection(e);\n return {\n fromAreaId: t.area,\n toAreaId: s.area,\n fromRoomId: t.id,\n toRoomId: s.id,\n direction: i,\n fromRoomPosition: { x: t.x, y: t.y },\n toRoomPosition: { x: s.x, y: s.y }\n };\n }\n addConnection(t, s) {\n const e = s.fromAreaId < s.toAreaId ? `${s.fromAreaId}-${s.toAreaId}` : `${s.toAreaId}-${s.fromAreaId}`;\n t.has(e) || t.set(e, []), t.get(e).push(s);\n }\n createConnectionGroup(t, s, e) {\n const i = /* @__PURE__ */ new Map();\n let o = 0, n = 0;\n for (const a of e)\n a.direction && i.set(\n a.direction,\n (i.get(a.direction) ?? 0) + 1\n ), o += a.toRoomPosition.x - a.fromRoomPosition.x, n += a.toRoomPosition.y - a.fromRoomPosition.y;\n let r = null, h = 0;\n for (const [a, c] of i)\n c > h && (h = c, r = a);\n return {\n fromAreaId: t,\n toAreaId: s,\n connections: e,\n primaryDirection: r,\n averageOffset: {\n x: o / e.length,\n y: n / e.length\n }\n };\n }\n parseDirection(t) {\n const s = t.toLowerCase().trim();\n return {\n n: \"north\",\n north: \"north\",\n s: \"south\",\n south: \"south\",\n e: \"east\",\n east: \"east\",\n w: \"west\",\n west: \"west\",\n ne: \"northeast\",\n northeast: \"northeast\",\n nw: \"northwest\",\n northwest: \"northwest\",\n se: \"southeast\",\n southeast: \"southeast\",\n sw: \"southwest\",\n southwest: \"southwest\",\n u: \"up\",\n up: \"up\",\n d: \"down\",\n down: \"down\",\n i: \"in\",\n in: \"in\",\n o: \"out\",\n out: \"out\"\n }[s] ?? null;\n }\n toPlanarDirection(t) {\n return t && dt.includes(t) ? t : null;\n }\n layoutAreas() {\n if (Array.from(this.areaNodes.values()).length === 0) return;\n const s = this.findConnectedComponents();\n let e = 0;\n const i = this.settings.areaWidth * 3;\n for (const o of s)\n if (o.length === 1) {\n const n = this.areaNodes.get(o[0]);\n n && (n.x = e, n.y = 0), e += this.settings.areaWidth + i;\n } else {\n const n = this.forceDirectedLayout(o);\n for (const h of o) {\n const a = this.areaNodes.get(h);\n a && isFinite(n.minX) && isFinite(n.minY) && (a.x -= n.minX, a.x += e, a.y -= n.minY);\n }\n const r = isFinite(n.maxX - n.minX) ? n.maxX - n.minX : this.settings.areaWidth;\n e += r + i;\n }\n }\n findConnectedComponents() {\n const t = /* @__PURE__ */ new Set(), s = [];\n for (const [e] of this.areaNodes) {\n if (t.has(e)) continue;\n const i = [], o = [e];\n for (; o.length > 0; ) {\n const n = o.shift();\n if (t.has(n)) continue;\n t.add(n), i.push(n);\n const r = this.areaNodes.get(n);\n if (r)\n for (const h of r.connections)\n t.has(h.toAreaId) || o.push(h.toAreaId);\n }\n s.push(i);\n }\n return s;\n }\n forceDirectedLayout(t) {\n const s = /* @__PURE__ */ new Map();\n for (const w of t) {\n const R = this.areaNodes.get(w);\n if (!R) continue;\n const E = new Set(R.connections.map((C) => C.toAreaId));\n s.set(w, E);\n }\n const e = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set();\n for (const [w, R] of s)\n R.size >= 3 && e.add(w);\n for (const [w, R] of s) {\n if (e.has(w) || i.has(w) || R.size > 2) continue;\n const E = [w];\n i.add(w);\n const C = Array.from(R);\n for (const M of C) {\n let I = M, W = w;\n for (; I && !i.has(I) && !e.has(I); ) {\n const v = s.get(I);\n if (!v) break;\n if (v.size >= 3) {\n e.add(I);\n break;\n }\n E.push(I), i.add(I);\n let z = !1;\n for (const Y of v)\n if (Y !== W && !i.has(Y)) {\n W = I, I = Y, z = !0;\n break;\n }\n if (!z) break;\n }\n }\n let S = !1;\n for (const M of E) {\n const I = s.get(M);\n if (I) {\n for (const W of I)\n if (e.has(W)) {\n S = !0;\n break;\n }\n }\n if (S) break;\n }\n if (!S && E.length > 0) {\n let M = E[0], I = s.get(E[0])?.size ?? 0;\n for (const W of E) {\n const v = s.get(W)?.size ?? 0;\n v > I && (I = v, M = W);\n }\n e.add(M), i.delete(M);\n }\n }\n for (const w of t) {\n const R = s.get(w);\n (!R || R.size === 0) && e.add(w);\n }\n const o = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();\n for (const w of e)\n o.set(w, w), n.set(w, []);\n const r = new Set(e);\n for (const w of e) {\n const R = s.get(w) ?? /* @__PURE__ */ new Set();\n for (const E of R) {\n if (r.has(E)) continue;\n const C = [];\n let S = E, M = w;\n for (; S && !r.has(S); ) {\n C.push(S), o.set(S, w), r.add(S);\n const I = s.get(S) ?? /* @__PURE__ */ new Set();\n let W;\n for (const v of I)\n if (v !== M && !r.has(v)) {\n W = v;\n break;\n }\n M = S, S = W;\n }\n C.length > 0 && n.get(w).push(C);\n }\n }\n const h = /* @__PURE__ */ new Set(), a = [], c = e.values().next().value, l = c !== void 0 ? c : t[0];\n if (l !== void 0) {\n const w = this.areaNodes.get(l);\n w && (w.x = 0, w.y = 0, h.add(l), a.push(l));\n }\n for (; a.length > 0; ) {\n const w = a.shift(), R = this.areaNodes.get(w), E = /* @__PURE__ */ new Map();\n for (const C of R.connections) {\n const S = C.toAreaId;\n if (h.has(S) || !e.has(S)) continue;\n const M = this.areaNodes.get(S);\n if (!M) continue;\n const I = C.direction ?? \"none\";\n E.has(I) || E.set(I, []), E.get(I).push({ id: S, node: M, conn: C });\n }\n for (const [C, S] of E) {\n const M = this.getDirectionOffset(C === \"none\" ? null : C);\n S.sort((v, z) => Math.abs(M.x) > Math.abs(M.y) ? z.node.realCenterY - v.node.realCenterY : v.node.realCenterX - z.node.realCenterX);\n const I = this.settings.areaWidth + this.settings.areaSpacing, W = this.settings.areaHeight + this.settings.areaSpacing;\n S.forEach((v, z) => {\n if (v.node.x = R.x + M.x * I, v.node.y = R.y + M.y * W, S.length > 1) {\n const Y = (z - (S.length - 1) / 2) * 0.5;\n Math.abs(M.x) > Math.abs(M.y) ? v.node.y += Y * W : v.node.x += Y * I;\n }\n h.add(v.id), a.push(v.id);\n });\n }\n }\n const d = Array.from(e);\n d.length > 1 && this.applyForces(d, 80);\n const g = this.settings.areaWidth + this.settings.areaSpacing + 30, u = this.settings.areaHeight + this.settings.areaSpacing + 30, f = /* @__PURE__ */ new Map(), y = [\n \"east\",\n \"west\",\n \"north\",\n \"south\",\n \"northeast\",\n \"northwest\",\n \"southeast\",\n \"southwest\"\n ];\n for (const [w, R] of n) {\n const E = this.areaNodes.get(w);\n if (!E) continue;\n let C = 0;\n const S = /* @__PURE__ */ new Map();\n for (const M of R) {\n let I = w, W = E.x, v = E.y, z = null;\n for (const Y of M) {\n const P = this.areaNodes.get(Y);\n if (!P) continue;\n const O = this.areaNodes.get(I);\n let T = null;\n if (O) {\n for (const B of O.connections)\n if (B.toAreaId === Y) {\n T = B.direction;\n break;\n }\n }\n !T && I === w ? (z = y[C % y.length], C++, T = z) : !T && z && (T = z);\n const F = this.getDirectionOffset(T);\n let V = 0;\n if (I === w && T) {\n const B = T, ot = S.get(B) ?? 0;\n S.set(B, ot + 1), V = ot;\n }\n P.x = W + F.x * g, P.y = v + F.y * u, V > 0 && (F.x !== 0 && F.y === 0 ? P.y += V * u * 1.2 : F.y !== 0 && F.x === 0 ? P.x += V * g * 1.2 : (P.x += V * g * 1.2, P.y -= V * u * 1.2)), f.set(Y, {\n dx: P.x - E.x,\n dy: P.y - E.y,\n hubId: w\n }), I = Y, W = P.x, v = P.y;\n }\n }\n }\n const p = /* @__PURE__ */ new Map(), x = /* @__PURE__ */ new Map();\n for (const w of e) {\n const R = this.areaNodes.get(w);\n if (!R) continue;\n let E = R.x, C = R.y, S = R.x + R.width, M = R.y + R.height;\n const I = n.get(w) ?? [];\n for (const W of I)\n for (const v of W) {\n const z = this.areaNodes.get(v);\n z && (E = Math.min(E, z.x), C = Math.min(C, z.y), S = Math.max(S, z.x + z.width), M = Math.max(M, z.y + z.height));\n }\n p.set(w, { minX: E, minY: C, maxX: S, maxY: M }), x.set(w, { dx: E - R.x, dy: C - R.y });\n }\n this.applyClusterForces(d, p, x, 60);\n for (const [w, R] of f) {\n const E = this.areaNodes.get(w), C = this.areaNodes.get(R.hubId);\n !E || !C || (E.x = C.x + R.dx, E.y = C.y + R.dy);\n }\n let k = 1 / 0, D = 1 / 0, $ = -1 / 0, X = -1 / 0;\n for (const w of t) {\n const R = this.areaNodes.get(w);\n k = Math.min(k, R.x), D = Math.min(D, R.y), $ = Math.max($, R.x + R.width), X = Math.max(X, R.y + R.height);\n }\n return { minX: k, minY: D, maxX: $, maxY: X };\n }\n getDirectionOffset(t) {\n const s = {\n north: { x: 0, y: -1 },\n south: { x: 0, y: 1 },\n east: { x: 1, y: 0 },\n west: { x: -1, y: 0 },\n northeast: { x: 0.75, y: -0.75 },\n northwest: { x: -0.75, y: -0.75 },\n southeast: { x: 0.75, y: 0.75 },\n southwest: { x: -0.75, y: 0.75 }\n };\n return t && s[t] ? s[t] : { x: 1, y: 0 };\n }\n applyClusterForces(t, s, e, i) {\n const r = /* @__PURE__ */ new Map();\n for (const h of t)\n r.set(h, { vx: 0, vy: 0 });\n for (let h = 0; h < i; h++) {\n for (const a of t) {\n const c = this.areaNodes.get(a), l = s.get(a), d = e.get(a);\n if (!c || !l || !d) continue;\n const g = l.maxX - l.minX, u = l.maxY - l.minY;\n l.minX = c.x + d.dx, l.minY = c.y + d.dy, l.maxX = l.minX + g, l.maxY = l.minY + u;\n }\n for (const a of t) {\n const c = this.areaNodes.get(a), l = r.get(a), d = s.get(a);\n if (!(!c || !l || !d)) {\n for (const g of t) {\n if (a === g) continue;\n const u = s.get(g);\n if (!u) continue;\n const f = (d.minX + d.maxX) / 2, y = (d.minY + d.maxY) / 2, p = (u.minX + u.maxX) / 2, x = (u.minY + u.maxY) / 2, k = f - p, D = y - x, $ = (d.maxX - d.minX) / 2, X = (d.maxY - d.minY) / 2, w = (u.maxX - u.minX) / 2, R = (u.maxY - u.minY) / 2, E = $ + w + 50, C = X + R + 50, S = E - Math.abs(k), M = C - Math.abs(D);\n if (S > 0 && M > 0)\n if (S < M) {\n const I = S * (k >= 0 ? 1 : -1) * 0.5;\n l.vx += I;\n } else {\n const I = M * (D >= 0 ? 1 : -1) * 0.5;\n l.vy += I;\n }\n }\n for (const g of c.connections) {\n const u = this.areaNodes.get(g.toAreaId);\n if (!u || !t.includes(g.toAreaId)) continue;\n const f = u.x - c.x, y = u.y - c.y, p = Math.sqrt(f * f + y * y) || 1, x = this.settings.areaWidth + this.settings.areaSpacing + 50, D = (p - x) * 0.015;\n l.vx += f / p * D, l.vy += y / p * D;\n }\n }\n }\n for (const a of t) {\n const c = this.areaNodes.get(a), l = r.get(a);\n !c || !l || (c.x += l.vx, c.y += l.vy, l.vx *= 0.8, l.vy *= 0.8);\n }\n }\n }\n applyForces(t, s) {\n const o = this.settings.areaWidth + this.settings.areaSpacing, n = this.settings.areaWidth / 2 + 60, r = new Set(t), h = [], a = /* @__PURE__ */ new Set();\n for (const l of t) {\n const d = this.areaNodes.get(l);\n if (d)\n for (const g of d.connections) {\n if (!r.has(g.toAreaId)) continue;\n const u = Math.min(l, g.toAreaId) + \"-\" + Math.max(l, g.toAreaId);\n a.has(u) || (a.add(u), h.push({ from: l, to: g.toAreaId }));\n }\n }\n const c = /* @__PURE__ */ new Map();\n for (const l of t)\n c.set(l, { vx: 0, vy: 0 });\n for (let l = 0; l < s; l++) {\n for (const d of t) {\n const g = this.areaNodes.get(d), u = c.get(d);\n if (!g || !u) continue;\n const f = g.x + g.width / 2, y = g.y + g.height / 2;\n for (const p of t) {\n if (d === p) continue;\n const x = this.areaNodes.get(p);\n if (!x) continue;\n const k = (g.width + x.width) / 2 + 20, D = (g.height + x.height) / 2 + 20, $ = g.x + g.width / 2, X = g.y + g.height / 2, w = x.x + x.width / 2, R = x.y + x.height / 2, E = $ - w, C = X - R, S = k - Math.abs(E), M = D - Math.abs(C);\n S > 0 && M > 0 && (S < M ? u.vx += (E >= 0 ? 1 : -1) * S * 0.5 : u.vy += (C >= 0 ? 1 : -1) * M * 0.5);\n }\n for (const p of h) {\n if (p.from === d || p.to === d) continue;\n const x = this.areaNodes.get(p.from), k = this.areaNodes.get(p.to);\n if (!x || !k) continue;\n const D = x.x + x.width / 2, $ = x.y + x.height / 2, X = k.x + k.width / 2, w = k.y + k.height / 2, R = this.closestPointOnSegment(\n f,\n y,\n D,\n $,\n X,\n w\n ), E = f - R.x, C = y - R.y, S = Math.sqrt(E * E + C * C) || 1;\n if (S < n) {\n const M = (n - S) * 0.6;\n u.vx += E / S * M, u.vy += C / S * M;\n }\n }\n for (const p of g.connections) {\n if (!r.has(p.toAreaId)) continue;\n const x = this.areaNodes.get(p.toAreaId);\n if (!x) continue;\n const k = x.x - g.x, D = x.y - g.y, $ = Math.sqrt(k * k + D * D) || 1, w = ($ - o) * 0.03;\n u.vx += k / $ * w, u.vy += D / $ * w;\n const R = this.getDirectionOffset(p.direction), E = g.x + R.x * o, C = g.y + R.y * o, S = c.get(p.toAreaId);\n S && (S.vx += (E - x.x) * 0.01, S.vy += (C - x.y) * 0.01);\n }\n }\n for (const d of t) {\n const g = this.areaNodes.get(d), u = c.get(d);\n !g || !u || (g.x += u.vx, g.y += u.vy, u.vx *= 0.8, u.vy *= 0.8);\n }\n }\n }\n closestPointOnSegment(t, s, e, i, o, n) {\n const r = o - e, h = n - i, a = t - e, c = s - i, l = r * r + h * h;\n if (l === 0)\n return { x: e, y: i };\n let d = (a * r + c * h) / l;\n return d = Math.max(0, Math.min(1, d)), {\n x: e + d * r,\n y: i + d * h\n };\n }\n edgesIntersect(t, s, e, i, o, n, r, h) {\n const a = (c, l, d, g, u, f) => (f - l) * (d - c) > (g - l) * (u - c);\n return a(t, s, o, n, r, h) !== a(e, i, o, n, r, h) && a(t, s, e, i, o, n) !== a(t, s, e, i, r, h);\n }\n drawConnections() {\n this.connectionLayer.destroyChildren();\n for (const t of this.connectionGroups) {\n const s = this.areaNodes.get(t.fromAreaId), e = this.areaNodes.get(t.toAreaId);\n if (!s || !e || !isFinite(s.x) || !isFinite(s.y) || !isFinite(e.x) || !isFinite(e.y))\n continue;\n const i = {\n x: s.x + s.width / 2,\n y: s.y + s.height / 2\n }, o = {\n x: e.x + e.width / 2,\n y: e.y + e.height / 2\n };\n let n, r;\n if (this.dotsMode ? (n = i, r = o) : (n = this.getEdgePoint(s, o), r = this.getEdgePoint(e, i)), !isFinite(n.x) || !isFinite(n.y) || !isFinite(r.x) || !isFinite(r.y))\n continue;\n const h = this.dotsMode ? \"#ffffff\" : this.settings.connectionColor, a = this.dotsMode ? 1 : Math.min(this.settings.connectionLineWidth, 1 + t.connections.length * 0.5), c = new b.Line({\n points: [n.x, n.y, r.x, r.y],\n stroke: h,\n strokeWidth: a,\n lineCap: \"round\",\n listening: !1\n });\n this.connectionLayer.add(c);\n }\n }\n getEdgePoint(t, s) {\n const e = t.x + t.width / 2, i = t.y + t.height / 2, o = s.x - e, n = s.y - i, r = t.width / 2, h = t.height / 2;\n if (o === 0 && n === 0)\n return { x: e, y: i };\n const a = Math.abs(o), c = Math.abs(n);\n let l;\n return a / r > c / h ? l = r / a : l = h / c, {\n x: e + o * l,\n y: i + n * l\n };\n }\n drawAreas() {\n this.areaLayer.destroyChildren();\n for (const [, t] of this.areaNodes) {\n if (!isFinite(t.x) || !isFinite(t.y))\n continue;\n const s = t.areaId === this.highlightedArea;\n if (this.dotsMode) {\n const i = t.x + t.width / 2, o = t.y + t.height / 2, n = new b.Group({\n x: i,\n y: o,\n draggable: !0\n }), r = new b.Circle({\n radius: 6,\n fill: s ? this.settings.highlightColor : \"#ffffff\",\n stroke: s ? this.settings.highlightColor : \"#ffffff\",\n strokeWidth: 1\n }), h = new b.Text({\n text: t.name,\n fontSize: 10,\n fill: \"#ffffff\",\n x: 10,\n y: -5\n });\n n.add(r), n.add(h), n.on(\"click tap\", () => {\n this.emitAreaClickEvent(t.areaId);\n }), n.on(\"mouseenter\", () => {\n this.stage.container().style.cursor = \"pointer\", r.fill(this.settings.highlightColor), r.stroke(this.settings.highlightColor), this.areaLayer.batchDraw();\n }), n.on(\"mouseleave\", () => {\n this.stage.container().style.cursor = \"auto\", r.fill(s ? this.settings.highlightColor : \"#ffffff\"), r.stroke(s ? this.settings.highlightColor : \"#ffffff\"), this.areaLayer.batchDraw();\n }), n.on(\"dragmove\", () => {\n t.x = n.x() - t.width / 2, t.y = n.y() - t.height / 2, this.drawConnections(), this.connectionLayer.batchDraw();\n }), n.on(\"dragstart\", () => {\n this.stage.container().style.cursor = \"grabbing\";\n }), n.on(\"dragend\", () => {\n this.stage.container().style.cursor = \"pointer\";\n }), this.areaLayer.add(n);\n } else {\n const e = new b.Group({\n x: t.x,\n y: t.y,\n draggable: !0\n }), i = new b.Rect({\n width: t.width,\n height: t.height,\n fill: this.settings.areaFillColor,\n stroke: s ? this.settings.highlightColor : this.settings.areaStrokeColor,\n strokeWidth: s ? 3 : 2,\n cornerRadius: 8\n }), o = new b.Text({\n text: t.name,\n fontSize: this.settings.fontSize,\n fill: this.settings.textColor,\n width: t.width - 10,\n height: t.height - 20,\n x: 5,\n y: 10,\n align: \"center\",\n verticalAlign: \"middle\",\n ellipsis: !0,\n wrap: \"word\"\n }), n = new b.Text({\n text: `${t.roomCount} rooms`,\n fontSize: 10,\n fill: this.settings.connectionColor,\n width: t.width - 10,\n x: 5,\n y: t.height - 18,\n align: \"center\"\n });\n e.add(i), e.add(o), e.add(n), e.on(\"click tap\", () => {\n this.emitAreaClickEvent(t.areaId);\n }), e.on(\"mouseenter\", () => {\n this.stage.container().style.cursor = \"pointer\", i.stroke(this.settings.highlightColor), this.areaLayer.batchDraw();\n }), e.on(\"mouseleave\", () => {\n this.stage.container().style.cursor = \"auto\", i.stroke(s ? this.settings.highlightColor : this.settings.areaStrokeColor), this.areaLayer.batchDraw();\n }), e.on(\"dragmove\", () => {\n t.x = e.x(), t.y = e.y(), this.drawConnections(), this.connectionLayer.batchDraw();\n }), e.on(\"dragstart\", () => {\n this.stage.container().style.cursor = \"grabbing\";\n }), e.on(\"dragend\", () => {\n this.stage.container().style.cursor = \"pointer\";\n }), this.areaLayer.add(e);\n }\n }\n }\n centerView() {\n let t = 1 / 0, s = 1 / 0, e = -1 / 0, i = -1 / 0;\n for (const [, u] of this.areaNodes)\n t = Math.min(t, u.x), s = Math.min(s, u.y), e = Math.max(e, u.x + u.width), i = Math.max(i, u.y + u.height);\n if (!isFinite(t)) return;\n const o = e - t, n = i - s, r = t + o / 2, h = s + n / 2, a = 50, c = (this.stage.width() - a * 2) / o, l = (this.stage.height() - a * 2) / n, d = Math.min(c, l, 1.5);\n this.setZoom(d);\n const g = this.stage.scaleX();\n this.stage.position({\n x: this.stage.width() / 2 - r * g,\n y: this.stage.height() / 2 - h * g\n });\n }\n highlightArea(t) {\n this.highlightedArea = t, this.drawAreas(), this.stage.batchDraw();\n }\n centerOnArea(t) {\n const s = this.areaNodes.get(t);\n if (!s) return;\n const e = this.stage.scaleX(), i = s.x + s.width / 2, o = s.y + s.height / 2;\n this.stage.position({\n x: this.stage.width() / 2 - i * e,\n y: this.stage.height() / 2 - o * e\n }), this.stage.batchDraw();\n }\n emitAreaClickEvent(t) {\n const s = new CustomEvent(\"areaclick\", {\n detail: { areaId: t }\n });\n this.stage.container().dispatchEvent(s);\n }\n getAreaNode(t) {\n return this.areaNodes.get(t);\n }\n getConnectionGroups() {\n return this.connectionGroups;\n }\n destroy() {\n this.stage.destroy();\n }\n}\nconst le = {\n 1: \"north\",\n 2: \"northeast\",\n 3: \"northwest\",\n 4: \"east\",\n 5: \"west\",\n 6: \"south\",\n 7: \"southeast\",\n 8: \"southwest\",\n 9: \"up\",\n 10: \"down\",\n 11: \"in\",\n 12: \"out\"\n}, de = [\"up\", \"down\", \"in\", \"out\"], Q = {\n 1: \"rgb(10, 155, 10)\",\n 2: \"rgb(226, 205, 59)\",\n 3: \"rgb(155, 10, 10)\"\n};\nclass ge {\n constructor(t, s) {\n this.mapReader = t, this.settings = s, this.exitRenderer = new ft(t, null, s);\n }\n getSymbolColor(t, s) {\n return this.settings.frameMode ? this.mapReader.getColorValue(t) : this.mapReader.getSymbolColor(t, s);\n }\n /**\n * Render the map area to a Canvas2D context.\n * The caller creates the canvas and context; this method draws to it.\n */\n render(t, s, e, i) {\n const o = this.mapReader.getArea(s);\n if (!o) throw new Error(`Area ${s} not found`);\n const n = o.getPlane(e);\n if (!n) throw new Error(`Plane z=${e} not found in area ${s}`);\n const r = i.padding ?? 3, h = this.computeBounds(o, n, i.roomId, r), a = i.width / h.w, c = i.height / h.h, l = Math.min(a, c);\n t.save(), t.fillStyle = this.settings.backgroundColor, t.fillRect(0, 0, i.width, i.height);\n const d = h.w * l, g = h.h * l;\n if (t.translate((i.width - d) / 2, (i.height - g) / 2), t.scale(l, l), t.translate(-h.x, -h.y), this.settings.gridEnabled) {\n const f = (i.width - d) / 2, y = (i.height - g) / 2, p = {\n x: h.x - f / l,\n y: h.y - y / l,\n w: i.width / l,\n h: i.height / l\n };\n this.renderGrid(t, p);\n }\n this.renderLabels(t, n.getLabels()), this.renderLinkExits(t, o, e), this.renderSpecialExits(t, n.getRooms()), this.renderStubs(t, n.getRooms()), this.renderRooms(t, n.getRooms()), this.renderInnerExits(t, n.getRooms());\n const u = i.overlays;\n if (u) {\n if (u.paths)\n for (const f of u.paths)\n this.renderPathOverlay(t, f.locations, f.color, s, e);\n if (u.highlights)\n for (const f of u.highlights)\n this.renderHighlightOverlay(t, f.roomId, f.color);\n u.position && this.renderPositionMarker(t, u.position.roomId);\n }\n if (this.settings.areaName) {\n const f = o.getAreaName();\n if (f) {\n const y = this.getEffectiveBounds(o, n);\n t.fillStyle = \"white\", t.font = `2.5px ${this.settings.fontFamily}`, t.textAlign = \"left\", t.textBaseline = \"bottom\", t.fillText(f, y.minX - 3.5, y.minY - 2);\n }\n }\n t.restore();\n }\n computeBounds(t, s, e, i) {\n if (e !== void 0) {\n const g = this.mapReader.getRoom(e);\n if (!g) throw new Error(`Room ${e} not found`);\n return { x: g.x - i, y: g.y - i, w: i * 2, h: i * 2 };\n }\n const o = this.getEffectiveBounds(t, s), n = this.settings.areaName ? t.getAreaName() : void 0, r = n ? 7 : 0, h = n ? 3.5 : 0, a = o.minX - h, c = o.minY - r, l = n ? o.minX - 3.5 + n.length * 2.5 * 0.6 : -1 / 0, d = Math.max(o.maxX, l);\n return { x: a - i, y: c - i, w: d - a + i * 2, h: o.maxY - c + i * 2 };\n }\n getEffectiveBounds(t, s) {\n return this.settings.uniformLevelSize ? t.getFullBounds() : s.getBounds();\n }\n getRoomEdgePoint(t, s, e, i) {\n return this.settings.roomShape === \"circle\" ? it(t, s, e, i) : this.settings.roomShape === \"roundedRectangle\" ? st(t, s, e, i, this.settings.roomSize * 0.2) : L(t, s, e, i);\n }\n // --- Grid ---\n renderGrid(t, s) {\n const e = this.settings.gridSize, i = Math.floor(s.x / e) * e, o = Math.ceil((s.x + s.w) / e) * e, n = Math.floor(s.y / e) * e, r = Math.ceil((s.y + s.h) / e) * e;\n t.strokeStyle = this.settings.gridColor, t.lineWidth = this.settings.gridLineWidth, t.setLineDash([]);\n for (let h = i; h <= o; h += e)\n t.beginPath(), t.moveTo(h, n), t.lineTo(h, r), t.stroke();\n for (let h = n; h <= r; h += e)\n t.beginPath(), t.moveTo(i, h), t.lineTo(o, h), t.stroke();\n }\n // --- Labels ---\n renderLabels(t, s) {\n for (const e of s) {\n const i = e.X, o = -e.Y;\n if ((e.BgColor?.alpha ?? 0) > 0 && !this.settings.transparentLabels) {\n const n = (e.BgColor.alpha ?? 255) / 255;\n t.fillStyle = `rgba(${e.BgColor.r},${e.BgColor.g},${e.BgColor.b},${n})`, t.fillRect(i, o, e.Width, e.Height);\n }\n if (e.Text) {\n const n = (e.FgColor?.alpha ?? 255) / 255;\n t.fillStyle = `rgba(${e.FgColor?.r ?? 0},${e.FgColor?.g ?? 0},${e.FgColor?.b ?? 0},${n})`;\n const r = Math.min(0.75, e.Width / Math.max(e.Text.length / 2, 1)), h = Math.max(0.1, Math.min(r, Math.max(e.Height * 0.9, 0.1)));\n t.font = `${h}px ${this.settings.fontFamily}`, t.textAlign = \"center\", t.textBaseline = \"middle\", t.fillText(e.Text, i + e.Width / 2, o + e.Height / 2);\n }\n }\n }\n // --- Link Exits ---\n renderLinkExits(t, s, e) {\n const i = s.getLinkExits(e);\n for (const o of i) {\n const n = this.exitRenderer.renderData(o, e);\n n && this.drawExitData(t, n);\n }\n }\n drawExitData(t, s) {\n for (const e of s.lines) {\n t.beginPath(), t.moveTo(e.points[0], e.points[1]);\n for (let i = 2; i < e.points.length; i += 2)\n t.lineTo(e.points[i], e.points[i + 1]);\n t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.setLineDash(e.dash ?? []), t.stroke();\n }\n for (const e of s.arrows) {\n t.beginPath(), t.moveTo(e.points[0], e.points[1]);\n for (let d = 2; d < e.points.length; d += 2)\n t.lineTo(e.points[d], e.points[d + 1]);\n t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.setLineDash(e.dash ?? []), t.stroke();\n const i = e.points.length - 2, o = e.points[i], n = e.points[i + 1], r = e.points[i - 2], h = e.points[i - 1], a = Math.atan2(n - h, o - r), c = e.pointerLength, l = e.pointerWidth / 2;\n t.beginPath(), t.setLineDash([]), t.moveTo(o, n), t.lineTo(o - c * Math.cos(a - Math.atan2(l, c)), n - c * Math.sin(a - Math.atan2(l, c))), t.lineTo(o - c * Math.cos(a + Math.atan2(l, c)), n - c * Math.sin(a + Math.atan2(l, c))), t.closePath(), t.fillStyle = e.fill, t.fill(), t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.stroke();\n }\n for (const e of s.doors)\n t.beginPath(), t.rect(e.x, e.y, e.width, e.height), t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.setLineDash([]), t.stroke();\n }\n // --- Stubs ---\n renderStubs(t, s) {\n t.strokeStyle = this.settings.lineColor, t.lineWidth = this.settings.lineWidth, t.setLineDash([]);\n for (const e of s)\n for (const i of e.stubs) {\n const o = le[i];\n if (!o) continue;\n const n = this.getRoomEdgePoint(e.x, e.y, o, this.settings.roomSize / 2), r = L(e.x, e.y, o, this.settings.roomSize / 2 + 0.5);\n t.beginPath(), t.moveTo(n.x, n.y), t.lineTo(r.x, r.y), t.stroke();\n }\n }\n // --- Special Exits ---\n renderSpecialExits(t, s) {\n for (const e of s)\n for (const [i, o] of Object.entries(e.customLines)) {\n const n = [e.x, e.y];\n for (const a of o.points)\n n.push(a.x, -a.y);\n const r = `rgb(${o.attributes.color.r}, ${o.attributes.color.g}, ${o.attributes.color.b})`;\n t.strokeStyle = r, t.lineWidth = this.settings.lineWidth, o.attributes.style === \"dot line\" ? t.setLineDash([0.05, 0.05]) : o.attributes.style === \"dash line\" ? t.setLineDash([0.4, 0.2]) : t.setLineDash([]), t.beginPath(), t.moveTo(n[0], n[1]);\n for (let a = 2; a < n.length; a += 2)\n t.lineTo(n[a], n[a + 1]);\n if (t.stroke(), o.attributes.arrow && n.length >= 4) {\n const a = n.length - 2, c = n[a], l = n[a + 1], d = n[a - 2], g = n[a - 1], u = Math.atan2(l - g, c - d), f = 0.3, y = 0.1;\n t.beginPath(), t.setLineDash([]), t.moveTo(c, l), t.lineTo(c - f * Math.cos(u - Math.atan2(y, f)), l - f * Math.sin(u - Math.atan2(y, f))), t.lineTo(c - f * Math.cos(u + Math.atan2(y, f)), l - f * Math.sin(u + Math.atan2(y, f))), t.closePath(), t.fillStyle = r, t.fill();\n }\n const h = e.doors[i];\n if (h && n.length >= 4) {\n const a = n[0] + (n[2] - n[0]) / 2, c = n[1] + (n[3] - n[1]) / 2, l = this.settings.roomSize / 2;\n t.beginPath(), t.rect(a - l / 2, c - l / 2, l, l), t.strokeStyle = Q[h] ?? Q[3], t.lineWidth = this.settings.lineWidth, t.setLineDash([]), t.stroke();\n }\n }\n }\n // --- Rooms ---\n renderRooms(t, s) {\n const e = this.settings.roomSize, i = e / 2;\n for (const o of s) {\n const n = this.mapReader.getColorValue(o.env), r = this.settings.frameMode ? this.settings.backgroundColor : n, h = this.settings.frameMode ? n : this.settings.lineColor;\n if (t.fillStyle = r, t.strokeStyle = h, t.lineWidth = this.settings.lineWidth, t.setLineDash([]), this.settings.roomShape === \"circle\")\n t.beginPath(), t.arc(o.x, o.y, i, 0, Math.PI * 2), t.fill(), t.stroke();\n else {\n const a = o.x - i, c = o.y - i, l = this.settings.roomShape === \"roundedRectangle\" ? e * 0.2 : 0;\n if (l > 0 ? (this.roundRect(t, a, c, e, e, l), t.fill(), t.stroke()) : (t.fillRect(a, c, e, e), t.strokeRect(a, c, e, e)), this.settings.emboss) {\n const d = J(this.settings.lineColor) > 0.41;\n t.beginPath(), d ? (t.moveTo(a, c), t.lineTo(a + e, c), t.lineTo(a + e, c + e)) : (t.moveTo(a, c), t.lineTo(a, c + e), t.lineTo(a + e, c + e)), t.strokeStyle = d ? \"#000000\" : \"#ffffff\", t.lineWidth = this.settings.lineWidth, t.stroke();\n }\n }\n if (o.roomChar) {\n const a = this.getSymbolColor(o.env), c = e * 0.75;\n t.fillStyle = a, t.font = `bold ${c}px ${this.settings.fontFamily}`, t.textAlign = \"left\", t.textBaseline = \"alphabetic\";\n const l = t.measureText(o.roomChar);\n t.fillText(o.roomChar, o.x - l.width / 2, o.y + c * 0.35);\n }\n }\n }\n roundRect(t, s, e, i, o, n) {\n t.beginPath(), t.moveTo(s + n, e), t.lineTo(s + i - n, e), t.arcTo(s + i, e, s + i, e + n, n), t.lineTo(s + i, e + o - n), t.arcTo(s + i, e + o, s + i - n, e + o, n), t.lineTo(s + n, e + o), t.arcTo(s, e + o, s, e + o - n, n), t.lineTo(s, e + n), t.arcTo(s, e, s + n, e, n), t.closePath();\n }\n // --- Inner Exits ---\n renderInnerExits(t, s) {\n const e = this.settings.roomSize, i = e / 5;\n for (const o of s)\n for (const n of de) {\n if (!o.exits[n]) continue;\n const r = this.getSymbolColor(o.env), h = this.getSymbolColor(o.env, 0.6), a = o.doors[n], c = a !== void 0 ? Q[a] ?? Q[3] : r;\n switch (n) {\n case \"up\": {\n const l = L(o.x, o.y, \"south\", e / 4);\n this.drawTriangle(t, l.x, l.y, i, 0, h, c);\n break;\n }\n case \"down\": {\n const l = L(o.x, o.y, \"north\", e / 4);\n this.drawTriangle(t, l.x, l.y, i, 180, h, c);\n break;\n }\n case \"in\": {\n const l = L(o.x, o.y, \"west\", e / 4), d = L(o.x, o.y, \"east\", e / 4);\n this.drawTriangle(t, l.x, l.y, i, 90, h, c), this.drawTriangle(t, d.x, d.y, i, -90, h, c);\n break;\n }\n case \"out\": {\n const l = L(o.x, o.y, \"west\", e / 4), d = L(o.x, o.y, \"east\", e / 4);\n this.drawTriangle(t, l.x, l.y, i, -90, h, c), this.drawTriangle(t, d.x, d.y, i, 90, h, c);\n break;\n }\n }\n }\n }\n drawTriangle(t, s, e, i, o, n, r) {\n const c = o * Math.PI / 180;\n t.beginPath();\n for (let l = 0; l < 3; l++) {\n const d = 2 * Math.PI * l / 3 - Math.PI / 2;\n let g = Math.cos(d) * i * 1.4, u = Math.sin(d) * i * 0.8;\n const f = g * Math.cos(c) - u * Math.sin(c), y = g * Math.sin(c) + u * Math.cos(c);\n l === 0 ? t.moveTo(s + f, e + y) : t.lineTo(s + f, e + y);\n }\n t.closePath(), t.fillStyle = n, t.fill(), t.strokeStyle = r, t.lineWidth = this.settings.lineWidth, t.stroke();\n }\n // --- Overlay: Paths ---\n renderPathOverlay(t, s, e, i, o) {\n const n = mt(this.mapReader, this.settings, s, i, o), r = this.settings.lineWidth;\n t.save(), t.globalAlpha = 0.8, t.lineCap = \"round\", t.lineJoin = \"round\", t.setLineDash([]);\n const h = (c) => {\n if (!(c.length < 4)) {\n t.beginPath(), t.moveTo(c[0], c[1]);\n for (let l = 2; l < c.length; l += 2) t.lineTo(c[l], c[l + 1]);\n t.strokeStyle = \"black\", t.lineWidth = r * 8, t.stroke(), t.beginPath(), t.moveTo(c[0], c[1]);\n for (let l = 2; l < c.length; l += 2) t.lineTo(c[l], c[l + 1]);\n t.strokeStyle = e, t.lineWidth = r * 4, t.stroke();\n }\n };\n for (const c of n.segments) h(c.points);\n for (const c of n.customLines) h(c.points);\n const a = this.settings.roomSize / 5;\n for (const c of n.innerMarkers) {\n const l = c.direction === \"up\" ? 0 : c.direction === \"down\" ? 180 : c.direction === \"in\" ? 90 : -90;\n this.drawTriangle(t, c.room.x, c.room.y, a, l, e, \"black\");\n }\n t.restore();\n }\n // --- Overlay: Highlights ---\n renderHighlightOverlay(t, s, e) {\n const i = this.mapReader.getRoom(s);\n if (!i) return;\n const o = 1.5, n = this.settings.roomSize;\n if (t.strokeStyle = e, t.lineWidth = 0.1, t.setLineDash([0.05, 0.05]), this.settings.roomShape === \"circle\")\n t.beginPath(), t.arc(i.x, i.y, n / 2 * o, 0, Math.PI * 2), t.stroke();\n else {\n const r = n * o;\n t.strokeRect(i.x - r / 2, i.y - r / 2, r, r);\n }\n t.setLineDash([]);\n }\n // --- Overlay: Position Marker ---\n renderPositionMarker(t, s) {\n const e = this.mapReader.getRoom(s);\n if (!e) return;\n const i = this.settings.playerMarker, o = this.settings.roomSize * i.sizeFactor;\n t.save(), t.globalAlpha = i.strokeAlpha, t.strokeStyle = i.strokeColor, t.lineWidth = i.strokeWidth, t.setLineDash(i.dashEnabled && i.dash ? i.dash : []), t.beginPath(), t.arc(e.x, e.y, o / 2, 0, Math.PI * 2), t.stroke(), i.fillAlpha > 0 && (t.globalAlpha = i.fillAlpha, t.fillStyle = i.fillColor, t.fill()), t.restore();\n }\n}\nclass xe {\n constructor(t, s) {\n this.highlights = /* @__PURE__ */ new Map(), this.paths = [], this.mapReader = t, this.settings = s ?? zt();\n }\n drawArea(t, s) {\n const e = this.mapReader.getArea(t);\n !e || !e.getPlane(s) || (this.currentArea = t, this.currentAreaInstance = e, this.currentZIndex = s);\n }\n getCurrentArea() {\n return this.currentAreaInstance;\n }\n setPosition(t) {\n this.positionRoomId = t;\n }\n clearPosition() {\n this.positionRoomId = void 0;\n }\n renderPath(t, s = \"#66E64D\") {\n this.paths.push({ locations: t, color: s });\n }\n clearPaths() {\n this.paths = [];\n }\n renderHighlight(t, s) {\n const e = this.mapReader.getRoom(t);\n e && this.highlights.set(t, { color: s, area: e.area, z: e.z });\n }\n removeHighlight(t) {\n this.highlights.delete(t);\n }\n hasHighlight(t) {\n return this.highlights.has(t);\n }\n clearHighlights() {\n this.highlights.clear();\n }\n /**\n * Export the current area as an SVG string.\n */\n exportSvg(t) {\n if (this.currentArea === void 0 || this.currentZIndex === void 0) return;\n const s = {\n ...t,\n overlays: this.buildOverlays(t?.overlays)\n };\n return new Lt(this.mapReader, this.settings).export(this.currentArea, this.currentZIndex, s);\n }\n /**\n * Render the current area to a Canvas2D context (for PNG export).\n * The caller provides the canvas and context — works with `canvas` npm package (Node.js)\n * or OffscreenCanvas (browser).\n */\n renderToCanvas(t, s) {\n if (this.currentArea === void 0 || this.currentZIndex === void 0) return;\n const e = {\n ...s,\n overlays: this.buildOverlays(s?.overlays)\n };\n new ge(this.mapReader, this.settings).render(t, this.currentArea, this.currentZIndex, e);\n }\n buildOverlays(t) {\n const s = { ...t };\n if (this.positionRoomId !== void 0) {\n const o = this.mapReader.getRoom(this.positionRoomId);\n o && o.area === this.currentArea && o.z === this.currentZIndex && (s.position = { roomId: this.positionRoomId });\n }\n const e = [...t?.highlights ?? []];\n for (const [o, n] of this.highlights)\n n.area === this.currentArea && n.z === this.currentZIndex && e.push({ roomId: o, color: n.color });\n e.length > 0 && (s.highlights = e);\n const i = [...t?.paths ?? []];\n return i.push(...this.paths), i.length > 0 && (s.paths = i), s;\n }\n}\nexport {\n ye as AreaMapRenderer,\n ge as CanvasExporter,\n gt as ExplorationArea,\n xe as HeadlessRenderer,\n me as MapReader,\n pe as PathFinder,\n fe as Renderer,\n Lt as SvgExporter,\n J as colorLightness,\n mt as computePathData,\n ce as createAreaMapSettings,\n zt as createSettings\n};\n//# sourceMappingURL=index.mjs.map\n","/**\r\n * Preview minimap overlay for the browser-based map viewer.\r\n *\r\n * Shows a low-resolution snapshot of the current area with a viewport\r\n * indicator that reflects the current zoom level and pan position.\r\n */\r\n\r\nimport type {Renderer, ViewportBounds} from \"mudlet-map-renderer\";\r\n\r\nconst MAX_SIZE = 400;\r\n\r\nexport class Preview {\r\n private readonly map: HTMLDivElement;\r\n private readonly preview: HTMLElement;\r\n private readonly previewBg: HTMLElement;\r\n private readonly previewPan: HTMLElement;\r\n private readonly pageControls: any;\r\n\r\n private areaBounds: ViewportBounds | null = null;\r\n private timeout: ReturnType<typeof setTimeout> | undefined;\r\n\r\n constructor(map: HTMLDivElement, pageControls: any) {\r\n this.map = map;\r\n this.preview = document.querySelector(\".preview-container\") as HTMLElement;\r\n this.previewBg = document.querySelector(\".preview\") as HTMLElement;\r\n this.previewPan = document.querySelector(\".preview-pan\") as HTMLElement;\r\n this.pageControls = pageControls;\r\n\r\n this.map.addEventListener(\"pan\", (() => {\r\n this.update();\r\n }) as EventListener);\r\n }\r\n\r\n /**\r\n * @param bounds Viewport bounds captured right after fitArea().\r\n * @param pngDataUrl PNG captured at the same fitArea() state, or null.\r\n */\r\n init(bounds: ViewportBounds, pngDataUrl: string | null): void {\r\n this.areaBounds = bounds;\r\n\r\n const areaW = bounds.maxX - bounds.minX;\r\n const areaH = bounds.maxY - bounds.minY;\r\n if (areaW <= 0 || areaH <= 0) {\r\n this.preview.style.opacity = \"0\";\r\n return;\r\n }\r\n\r\n // Size the preview box to match the viewport aspect ratio\r\n const aspect = areaW / areaH;\r\n let boxW: number, boxH: number;\r\n if (aspect >= 1) {\r\n boxW = MAX_SIZE;\r\n boxH = MAX_SIZE / aspect;\r\n } else {\r\n boxH = MAX_SIZE;\r\n boxW = MAX_SIZE * aspect;\r\n }\r\n this.preview.style.width = `${Math.round(boxW)}px`;\r\n this.preview.style.height = `${Math.round(boxH)}px`;\r\n\r\n if (pngDataUrl) {\r\n this.previewBg.style.backgroundImage = `url(${pngDataUrl})`;\r\n this.previewBg.style.backgroundSize = \"100% 100%\";\r\n this.previewBg.style.opacity = \"0.6\";\r\n } else {\r\n this.previewBg.style.backgroundImage = \"\";\r\n this.previewBg.style.opacity = \"\";\r\n }\r\n\r\n this.update();\r\n }\r\n\r\n update(): void {\r\n if (!this.pageControls.pageSettings?.preview) {\r\n return;\r\n }\r\n\r\n this.preview.style.opacity = \"1\";\r\n clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.preview.style.opacity = \"0\";\r\n }, 4000);\r\n\r\n const renderer: Renderer = this.pageControls.renderer;\r\n if (!renderer || !this.areaBounds) {\r\n return;\r\n }\r\n\r\n const viewport = renderer.getViewportBounds();\r\n\r\n const areaW = this.areaBounds.maxX - this.areaBounds.minX;\r\n const areaH = this.areaBounds.maxY - this.areaBounds.minY;\r\n if (areaW <= 0 || areaH <= 0) return;\r\n\r\n const left = ((viewport.minX - this.areaBounds.minX) / areaW) * 100;\r\n const top = ((viewport.minY - this.areaBounds.minY) / areaH) * 100;\r\n const width = ((viewport.maxX - viewport.minX) / areaW) * 100;\r\n const height = ((viewport.maxY - viewport.minY) / areaH) * 100;\r\n\r\n const clampedLeft = Math.max(0, Math.min(left, 100));\r\n const clampedTop = Math.max(0, Math.min(top, 100));\r\n const clampedRight = Math.min(100, left + width);\r\n const clampedBottom = Math.min(100, top + height);\r\n\r\n this.previewPan.style.left = `${clampedLeft}%`;\r\n this.previewPan.style.top = `${clampedTop}%`;\r\n this.previewPan.style.width = `${Math.max(0, clampedRight - clampedLeft)}%`;\r\n this.previewPan.style.height = `${Math.max(0, clampedBottom - clampedTop)}%`;\r\n }\r\n}\r\n","var e,t;e=this,t=function(){\"use strict\";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?e(Object(i),!0).forEach((function(e){r(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):e(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function n(e){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},n(e)}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||o(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function o(e,t){if(e){if(\"string\"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var u=function(e){return\"string\"==typeof e?document.querySelector(e):e()},a=function(e,t){var n=\"string\"==typeof e?document.createElement(e):e;for(var r in t){var i=t[r];if(\"inside\"===r)i.append(n);else if(\"dest\"===r)u(i[0]).insertAdjacentElement(i[1],n);else if(\"around\"===r){var o=i;o.parentNode.insertBefore(n,o),n.append(o),null!=o.getAttribute(\"autofocus\")&&o.focus()}else r in n?n[r]=i:n.setAttribute(r,i)}return n},c=function(e,t){return e=String(e).toLowerCase(),t?e.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g,\"\").normalize(\"NFC\"):e},l=function(e,n){return a(\"mark\",t({innerHTML:e},\"string\"==typeof n&&{class:n})).outerHTML},f=function(e,t){t.input.dispatchEvent(new CustomEvent(e,{bubbles:!0,detail:t.feedback,cancelable:!0}))},p=function(e,t,n){var r=n||{},i=r.mode,o=r.diacritics,s=r.highlight,u=c(t,o);if(t=String(t),e=c(e,o),\"loose\"===i){var a=(e=e.replace(/ /g,\"\")).length,f=0,p=Array.from(t).map((function(t,n){return f<a&&u[n]===e[f]&&(t=s?l(t,s):t,f++),t})).join(\"\");if(f===a)return p}else{var d=u.indexOf(e);if(~d)return e=t.substring(d,d+e.length),d=s?t.replace(e,l(e,s)):t}},d=function(e,t){return new Promise((function(n,r){var i;return(i=e.data).cache&&i.store?n():new Promise((function(e,n){return\"function\"==typeof i.src?i.src(t).then(e,n):e(i.src)})).then((function(t){try{return e.feedback=i.store=t,f(\"response\",e),n()}catch(e){return r(e)}}),r)}))},h=function(e,t){var n=t.data,r=t.searchEngine,i=[];n.store.forEach((function(s,u){var a=function(n){var o=n?s[n]:s,u=\"function\"==typeof r?r(e,o):p(e,o,{mode:r,diacritics:t.diacritics,highlight:t.resultItem.highlight});if(u){var a={match:u,value:s};n&&(a.key=n),i.push(a)}};if(n.keys){var c,l=function(e,t){var n=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!n){if(Array.isArray(e)||(n=o(e))||t&&e&&\"number\"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,u=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,s=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw s}}}}(n.keys);try{for(l.s();!(c=l.n()).done;)a(c.value)}catch(e){l.e(e)}finally{l.f()}}else a()})),n.filter&&(i=n.filter(i));var s=i.slice(0,t.resultsList.maxResults);t.feedback={query:e,matches:i,results:s},f(\"results\",t)},m=\"aria-expanded\",b=\"aria-activedescendant\",y=\"aria-selected\",v=function(e,n){e.feedback.selection=t({index:n},e.feedback.results[n])},g=function(e){e.isOpen||((e.wrapper||e.input).setAttribute(m,!0),e.list.removeAttribute(\"hidden\"),e.isOpen=!0,f(\"open\",e))},w=function(e){e.isOpen&&((e.wrapper||e.input).setAttribute(m,!1),e.input.setAttribute(b,\"\"),e.list.setAttribute(\"hidden\",\"\"),e.isOpen=!1,f(\"close\",e))},O=function(e,t){var n=t.resultItem,r=t.list.getElementsByTagName(n.tag),o=!!n.selected&&n.selected.split(\" \");if(t.isOpen&&r.length){var s,u,a=t.cursor;e>=r.length&&(e=0),e<0&&(e=r.length-1),t.cursor=e,a>-1&&(r[a].removeAttribute(y),o&&(u=r[a].classList).remove.apply(u,i(o))),r[e].setAttribute(y,!0),o&&(s=r[e].classList).add.apply(s,i(o)),t.input.setAttribute(b,r[t.cursor].id),t.list.scrollTop=r[e].offsetTop-t.list.clientHeight+r[e].clientHeight+5,t.feedback.cursor=t.cursor,v(t,e),f(\"navigate\",t)}},A=function(e){O(e.cursor+1,e)},k=function(e){O(e.cursor-1,e)},L=function(e,t,n){(n=n>=0?n:e.cursor)<0||(e.feedback.event=t,v(e,n),f(\"selection\",e),w(e))};function j(e,n){var r=this;return new Promise((function(i,o){var s,u;return s=n||((u=e.input)instanceof HTMLInputElement||u instanceof HTMLTextAreaElement?u.value:u.innerHTML),function(e,t,n){return t?t(e):e.length>=n}(s=e.query?e.query(s):s,e.trigger,e.threshold)?d(e,s).then((function(n){try{return e.feedback instanceof Error?i():(h(s,e),e.resultsList&&function(e){var n=e.resultsList,r=e.list,i=e.resultItem,o=e.feedback,s=o.matches,u=o.results;if(e.cursor=-1,r.innerHTML=\"\",s.length||n.noResults){var c=new DocumentFragment;u.forEach((function(e,n){var r=a(i.tag,t({id:\"\".concat(i.id,\"_\").concat(n),role:\"option\",innerHTML:e.match,inside:c},i.class&&{class:i.class}));i.element&&i.element(r,e)})),r.append(c),n.element&&n.element(r,o),g(e)}else w(e)}(e),c.call(r))}catch(e){return o(e)}}),o):(w(e),c.call(r));function c(){return i()}}))}var S=function(e,t){for(var n in e)for(var r in e[n])t(n,r)},T=function(e){var n,r,i,o=e.events,s=(n=function(){return j(e)},r=e.debounce,function(){clearTimeout(i),i=setTimeout((function(){return n()}),r)}),u=e.events=t({input:t({},o&&o.input)},e.resultsList&&{list:o?t({},o.list):{}}),a={input:{input:function(){s()},keydown:function(t){!function(e,t){switch(e.keyCode){case 40:case 38:e.preventDefault(),40===e.keyCode?A(t):k(t);break;case 13:t.submit||e.preventDefault(),t.cursor>=0&&L(t,e);break;case 9:t.resultsList.tabSelect&&t.cursor>=0&&L(t,e);break;case 27:t.input.value=\"\",w(t)}}(t,e)},blur:function(){w(e)}},list:{mousedown:function(e){e.preventDefault()},click:function(t){!function(e,t){var n=t.resultItem.tag.toUpperCase(),r=Array.from(t.list.querySelectorAll(n)),i=e.target.closest(n);i&&i.nodeName===n&&L(t,e,r.indexOf(i))}(t,e)}}};S(a,(function(t,n){(e.resultsList||\"input\"===n)&&(u[t][n]||(u[t][n]=a[t][n]))})),S(u,(function(t,n){e[t].addEventListener(n,u[t][n])}))};function E(e){var n=this;return new Promise((function(r,i){var o,s,u;if(o=e.placeHolder,u={role:\"combobox\",\"aria-owns\":(s=e.resultsList).id,\"aria-haspopup\":!0,\"aria-expanded\":!1},a(e.input,t(t({\"aria-controls\":s.id,\"aria-autocomplete\":\"both\"},o&&{placeholder:o}),!e.wrapper&&t({},u))),e.wrapper&&(e.wrapper=a(\"div\",t({around:e.input,class:e.name+\"_wrapper\"},u))),s&&(e.list=a(s.tag,t({dest:[s.destination,s.position],id:s.id,role:\"listbox\",hidden:\"hidden\"},s.class&&{class:s.class}))),T(e),e.data.cache)return d(e).then((function(e){try{return c.call(n)}catch(e){return i(e)}}),i);function c(){return f(\"init\",e),r()}return c.call(n)}))}function x(e){var t=e.prototype;t.init=function(){E(this)},t.start=function(e){j(this,e)},t.unInit=function(){if(this.wrapper){var e=this.wrapper.parentNode;e.insertBefore(this.input,this.wrapper),e.removeChild(this.wrapper)}var t;S((t=this).events,(function(e,n){t[e].removeEventListener(n,t.events[e][n])}))},t.open=function(){g(this)},t.close=function(){w(this)},t.goTo=function(e){O(e,this)},t.next=function(){A(this)},t.previous=function(){k(this)},t.select=function(e){L(this,null,e)},t.search=function(e,t,n){return p(e,t,n)}}return function e(t){this.options=t,this.id=e.instances=(e.instances||0)+1,this.name=\"autoComplete\",this.wrapper=1,this.threshold=1,this.debounce=0,this.resultsList={position:\"afterend\",tag:\"ul\",maxResults:5},this.resultItem={tag:\"li\"},function(e){var t=e.name,r=e.options,i=e.resultsList,o=e.resultItem;for(var s in r)if(\"object\"===n(r[s]))for(var a in e[s]||(e[s]={}),r[s])e[s][a]=r[s][a];else e[s]=r[s];e.selector=e.selector||\"#\"+t,i.destination=i.destination||e.selector,i.id=i.id||t+\"_list_\"+e.id,o.id=o.id||t+\"_result\",e.input=u(e.selector)}(this),x.call(this,e),E(this)}},\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).autoComplete=t();\n","import autoComplete from \"@tarekraafat/autocomplete.js\";\r\n\r\ninterface Npc {\r\n name: string;\r\n loc: number;\r\n}\r\n\r\ntype RoomNpcMap = Record<number, string[]>;\r\ntype NpcLocationMap = Record<string, number[]>;\r\n\r\nconst npcs: NpcLocationMap = {};\r\n\r\nconst searchFieldSelector = \"#search-id\";\r\nconst defaultMaxResults = 10;\r\nlet maxResults = defaultMaxResults;\r\n\r\nconst searchField = document.querySelector<HTMLInputElement>(searchFieldSelector);\r\n\r\nexport const downloadNpc = async (): Promise<RoomNpcMap> => {\r\n const roomNpc: RoomNpcMap = {};\r\n const url = searchField?.getAttribute(\"data-npc\");\r\n if (!url) {\r\n return roomNpc;\r\n }\r\n\r\n const response = await fetch(url);\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch NPCs: ${response.status} ${response.statusText}`);\r\n }\r\n\r\n const data: Npc[] = await response.json();\r\n data.forEach((npc) => {\r\n if (!roomNpc[npc.loc]) {\r\n roomNpc[npc.loc] = [];\r\n }\r\n roomNpc[npc.loc].push(npc.name);\r\n npcs[npc.name] =\r\n npcs[npc.name] && npcs[npc.name].indexOf(npc.loc) === -1\r\n ? npcs[npc.name].concat([npc.loc])\r\n : [npc.loc];\r\n });\r\n\r\n return roomNpc;\r\n};\r\n\r\nexport const findNpc = (name: string): number[] | false => {\r\n return npcs[name] ?? false;\r\n};\r\n\r\nconst ac = new autoComplete({\r\n selector: searchFieldSelector,\r\n data: {\r\n src: async () => {\r\n await downloadNpc();\r\n const items = Object.keys(npcs).map((item) => {\r\n return { value: npcs[item], text: item };\r\n });\r\n return items;\r\n },\r\n keys: [\"text\"],\r\n cache: true,\r\n },\r\n resultItem: {\r\n tag: \"a\",\r\n class: \"dropdown-item\",\r\n selected: \"active\",\r\n highlight: true,\r\n },\r\n resultsList: {\r\n tag: \"div\",\r\n class: \"npc-autocomplete dropdown-menu show\",\r\n maxResults: undefined,\r\n destination: \"#search .advancedAutoComplete\",\r\n },\r\n submit: false,\r\n});\r\n\r\nlet shouldNavigate = true;\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"selection\", function (event: any) {\r\n if (event.detail.selection.value instanceof Function) {\r\n event.detail.selection.value();\r\n } else {\r\n if (event.detail.selection.value && searchField) {\r\n searchField.value = event.detail.selection.value.value;\r\n }\r\n searchField?.form?.requestSubmit();\r\n }\r\n});\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"keyup\", ((event: KeyboardEvent) => {\r\n if (event.keyCode === 13) {\r\n if (shouldNavigate) {\r\n ac.select(0);\r\n }\r\n if (searchField && searchField.value.trim() !== \"\" && !isNaN(Number(searchField.value))) {\r\n searchField.form?.requestSubmit();\r\n }\r\n }\r\n}) as EventListener);\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"navigate\", () => {\r\n shouldNavigate = false;\r\n});\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"results\", function (event: any) {\r\n let list = event.detail.results;\r\n\r\n const length = list.length;\r\n if (length > 0) {\r\n list.sort((a: any, b: any) => {\r\n const aText: string = a.value.text.toLowerCase();\r\n const bText: string = b.value.text.toLowerCase();\r\n const query: string = event.detail.query.toLowerCase();\r\n\r\n if (aText.startsWith(query) && !bText.startsWith(query)) {\r\n return -1;\r\n } else if (!aText.startsWith(event.detail.query) && bText.startsWith(query)) {\r\n return 1;\r\n } else {\r\n return aText.localeCompare(bText);\r\n }\r\n });\r\n list = list.slice(0, maxResults);\r\n if (length > maxResults) {\r\n list.push({\r\n value: function () {\r\n const newMax = maxResults + 10;\r\n ac.start();\r\n maxResults = newMax;\r\n },\r\n match: \"Więcej...\",\r\n });\r\n }\r\n }\r\n\r\n event.detail.results = list;\r\n});\r\n\r\nsearchField?.addEventListener(\"input\", () => {\r\n maxResults = defaultMaxResults;\r\n});\r\n","import Translator from \"@andreasremdt/simple-translator\";\r\nimport {Modal, Toast} from \"bootstrap\";\r\nimport {MapReader, Renderer, createSettings, PathFinder} from \"mudlet-map-renderer\";\r\nimport type {Settings, RoomClickEventDetail, RoomContextMenuEventDetail, AreaExitClickEventDetail, ZoomChangeEventDetail} from \"mudlet-map-renderer\";\r\nimport {Preview} from \"./preview\";\r\nimport {downloadTags, downloadVersion} from \"./versions\";\r\n\r\nconst rainbow = [\"#CC99C9\", \"#9EC1CF\", \"#9EE09E\", \"#FDFD97\", \"#FEB144\", \"#FF6663\"];\r\nlet pathPick = 0;\r\n\r\nconst defaultLanguage = document.querySelector(\"html\")!.getAttribute(\"lang\") ?? \"pl\";\r\n\r\nconst translator = new Translator({\r\n defaultLanguage: defaultLanguage,\r\n detectLanguage: false,\r\n selector: \"[data-i18n]\",\r\n debug: false,\r\n registerGlobally: \"__\",\r\n persist: true,\r\n persistKey: \"preferred_language\",\r\n filesLocation: \"i18n\",\r\n});\r\n(window as any).translator = translator;\r\n\r\nif (location.hostname !== \"\") {\r\n translator\r\n .fetch([defaultLanguage], false)\r\n .then((json: any) => {\r\n const defaultLang: Record<string, string> = {};\r\n document.querySelectorAll(\"[data-i18n]\").forEach(item => {\r\n defaultLang[item.getAttribute(\"data-i18n\")!] = item.innerHTML;\r\n });\r\n translator.add(defaultLanguage, {...defaultLang, ...json});\r\n })\r\n .catch((e: Error) => console.log(`Cannot fetch translations. ${e.message}`));\r\n\r\n translator\r\n .fetch([\"en\"])\r\n .then(() => {\r\n translator.translatePageTo();\r\n })\r\n .catch((e: Error) => console.log(`Cannot fetch translations. ${e.message}`));\r\n} else if (typeof translations !== \"undefined\") {\r\n const defaultLang: Record<string, string> = {};\r\n document.querySelectorAll(\"[data-i18n]\").forEach(item => {\r\n defaultLang[item.getAttribute(\"data-i18n\")!] = item.innerHTML;\r\n });\r\n translator.add(\"pl\", {...defaultLang, ...translations.pl});\r\n translator.add(\"en\", translations.en);\r\n}\r\n\r\nconst urlSearchParams = new URLSearchParams(window.location.search);\r\nconst params = Object.fromEntries(urlSearchParams.entries());\r\nconst url = window.location.origin + window.location.pathname;\r\n\r\nconst svgToDataURL = (svgStr: string): string => {\r\n const encoded = encodeURIComponent(svgStr).replace(/'/g, \"%27\").replace(/\"/g, \"%22\");\r\n return \"data:image/svg+xml,\" + encoded;\r\n};\r\n\r\nfunction toHexColor(color: string): string {\r\n if (color.startsWith(\"#\")) return color;\r\n const match = color.match(/rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/);\r\n if (match) {\r\n const r = parseInt(match[1]).toString(16).padStart(2, \"0\");\r\n const g = parseInt(match[2]).toString(16).padStart(2, \"0\");\r\n const b = parseInt(match[3]).toString(16).padStart(2, \"0\");\r\n return `#${r}${g}${b}`;\r\n }\r\n return color;\r\n}\r\n\r\nimport {downloadNpc, findNpc} from \"./npc\";\r\nlet roomNpc: Record<number, string[]> = {};\r\ndownloadNpc().then(value => (roomNpc = value));\r\n\r\nlet position: {area: number; zIndex: number} | null = null;\r\nconst storedPosition = localStorage.getItem(\"position\");\r\nif (storedPosition) {\r\n position = JSON.parse(storedPosition);\r\n}\r\n\r\ninterface PageSettings {\r\n preview: boolean;\r\n keepZoomLevel: boolean;\r\n disableKeyBinds: boolean;\r\n}\r\n\r\ninterface PathData {\r\n locations: number[];\r\n color: string;\r\n}\r\n\r\nclass PageControls {\r\n map: HTMLDivElement;\r\n reader: MapReader;\r\n renderer: Renderer;\r\n pathFinder: PathFinder;\r\n settings: Settings;\r\n pageSettings: PageSettings;\r\n select: HTMLSelectElement;\r\n infoBox: HTMLElement;\r\n levels: HTMLElement;\r\n saveImageButton: HTMLElement | null;\r\n saveSvgImageButton: HTMLElement | null;\r\n copyImageButton: HTMLElement | null;\r\n zoomButtons: NodeListOf<HTMLElement>;\r\n toastContainer: HTMLElement;\r\n searchModal: HTMLElement;\r\n search: HTMLFormElement;\r\n findPathForm: HTMLFormElement | null;\r\n findPathModal: HTMLElement | null;\r\n helpModal: HTMLElement;\r\n zoomBar: HTMLElement;\r\n settingsModal: HTMLElement;\r\n settingsForm: HTMLFormElement;\r\n resetSettingsButton: HTMLElement;\r\n versions: HTMLSelectElement | null;\r\n releaseDescription: HTMLElement;\r\n versionBadge: HTMLElement;\r\n languageSelector: HTMLElement;\r\n currentLanguageFlag: HTMLElement;\r\n pathBox: HTMLElement;\r\n areaModal: HTMLElement | null;\r\n preview: Preview;\r\n areaId: number = 0;\r\n zIndex: number = 0;\r\n zoom: number = 1;\r\n selectedRoom: MapData.Room | null = null;\r\n paths: Record<string, PathData> = {};\r\n progressTimeout: ReturnType<typeof setTimeout> | undefined;\r\n\r\n constructor(reader: MapReader) {\r\n this.map = document.querySelector(\"#map\") as HTMLDivElement;\r\n this.reader = reader;\r\n this.settings = createSettings();\r\n this.pathFinder = new PathFinder(this.reader);\r\n\r\n this.pageSettings = {\r\n preview: true,\r\n keepZoomLevel: false,\r\n disableKeyBinds: false,\r\n };\r\n\r\n const loaded = localStorage.getItem(\"settings\");\r\n if (loaded) {\r\n const parsed = JSON.parse(loaded);\r\n // Migrate old field names\r\n if (parsed.mapBackground !== undefined && parsed.backgroundColor === undefined) {\r\n parsed.backgroundColor = parsed.mapBackground;\r\n }\r\n if (parsed.linesColor !== undefined && parsed.lineColor === undefined) {\r\n parsed.lineColor = parsed.linesColor;\r\n }\r\n if (parsed.exitsSize !== undefined && parsed.lineWidth === undefined) {\r\n parsed.lineWidth = parsed.exitsSize;\r\n }\r\n if (parsed.isRound !== undefined && parsed.roomShape === undefined) {\r\n parsed.roomShape = parsed.isRound ? \"circle\" : \"rectangle\";\r\n }\r\n // Scale old integer roomSize values to new float scale\r\n if (parsed.roomSize !== undefined && parsed.roomSize > 5) {\r\n parsed.roomSize = parsed.roomSize / 25;\r\n }\r\n if (parsed.lineWidth !== undefined && parsed.lineWidth > 1) {\r\n parsed.lineWidth = parsed.lineWidth / 100;\r\n }\r\n // Remove obsolete fields before applying\r\n delete parsed.mapBackground;\r\n delete parsed.linesColor;\r\n delete parsed.exitsSize;\r\n delete parsed.isRound;\r\n delete parsed.optimizeDrag;\r\n delete parsed.showLabels;\r\n // Remove old grid defaults so new ones take effect\r\n delete parsed.gridColor;\r\n delete parsed.gridLineWidth;\r\n // Reset areaName to pick up new default (true)\r\n delete parsed.areaName;\r\n\r\n // Apply renderer settings\r\n const defaults = createSettings();\r\n for (const key of Object.keys(defaults)) {\r\n if (parsed[key] !== undefined) {\r\n (this.settings as any)[key] = parsed[key];\r\n }\r\n }\r\n // Apply page settings\r\n if (parsed.preview !== undefined) this.pageSettings.preview = parsed.preview;\r\n if (parsed.keepZoomLevel !== undefined) this.pageSettings.keepZoomLevel = parsed.keepZoomLevel;\r\n if (parsed.disableKeyBinds !== undefined) this.pageSettings.disableKeyBinds = parsed.disableKeyBinds;\r\n }\r\n\r\n this.map.addEventListener(\"roomclick\", ((event: CustomEvent<RoomClickEventDetail>) => {\r\n const room = this.reader.getRoom(event.detail.roomId);\r\n if (room) {\r\n this.selectRoom(room);\r\n }\r\n }) as EventListener);\r\n\r\n this.map.addEventListener(\"zoom\", ((event: CustomEvent<ZoomChangeEventDetail>) => {\r\n this.adjustZoomBar(event.detail);\r\n this.zoom = event.detail.zoom;\r\n this.preview.update();\r\n }) as EventListener);\r\n\r\n this.map.addEventListener(\"mapclick\", () => {\r\n this.deselectRoom();\r\n });\r\n\r\n this.map.addEventListener(\"roomcontextmenu\", ((event: CustomEvent<RoomContextMenuEventDetail>) => {\r\n this.renderer.centerOn(event.detail.roomId);\r\n }) as EventListener);\r\n\r\n this.map.addEventListener(\"areaexitclick\", ((event: CustomEvent<AreaExitClickEventDetail>) => {\r\n setTimeout(() => {\r\n if (event.detail.targetRoomId) {\r\n this.findRoom(event.detail.targetRoomId);\r\n }\r\n });\r\n }) as EventListener);\r\n\r\n this.select = document.querySelector(\"#area\") as HTMLSelectElement;\r\n this.infoBox = document.querySelector(\".info-box\")!;\r\n this.levels = document.querySelector(\".levels\")!;\r\n this.saveImageButton = document.querySelector(\".save-image\");\r\n this.saveSvgImageButton = document.querySelector(\".save-image-svg\");\r\n this.copyImageButton = document.querySelector(\".copy-image\");\r\n this.zoomButtons = document.querySelectorAll(\".zoom-controls .btn\");\r\n this.toastContainer = document.querySelector(\".toast\")!;\r\n this.searchModal = document.querySelector(\"#search\")!;\r\n this.search = document.querySelector(\".search-form\") as HTMLFormElement;\r\n this.findPathForm = document.querySelector(\".findpath-form\") as HTMLFormElement | null;\r\n this.findPathModal = document.querySelector(\"#findpath\");\r\n this.helpModal = document.querySelector(\"#help\")!;\r\n this.zoomBar = document.querySelector(\".progress-container\")!;\r\n this.settingsModal = document.querySelector(\"#settings\")!;\r\n this.settingsForm = document.querySelector(\"#settings form\") as HTMLFormElement;\r\n this.resetSettingsButton = document.querySelector(\"#settings button[type='reset']\")!;\r\n this.versions = document.querySelector(\"#versions\") as HTMLSelectElement | null;\r\n this.releaseDescription = document.querySelector(\".release-description\")!;\r\n this.versionBadge = document.querySelector(\".version-number\")!;\r\n this.languageSelector = document.querySelector(\".lang-dropdown\")!;\r\n this.currentLanguageFlag = document.querySelector(\".current-language-flag\")!;\r\n this.pathBox = document.querySelector(\".path-box ul\")!;\r\n this.areaModal = document.getElementById(\"area-info\");\r\n this.preview = new Preview(this.map, this);\r\n\r\n if (this.versions) {\r\n this.versions.addEventListener(\"change\", event => {\r\n const target = event.target as HTMLSelectElement;\r\n this.replaceVersion(target.value);\r\n this.releaseDescription.innerHTML = target.selectedOptions[0].getAttribute(\"data-description\") ?? \"\";\r\n Modal.getInstance(this.helpModal)?.hide();\r\n });\r\n\r\n this.helpModal.addEventListener(\"shown.bs.modal\", () => {\r\n if (this.versions!.children.length == 0) {\r\n (downloadTags(this.versions!.getAttribute(\"data-tags\")!) as Promise<any[]>).then((tags) => {\r\n tags.forEach((tag: any) => {\r\n const option = document.createElement(\"option\");\r\n option.setAttribute(\"value\", tag.tag_name);\r\n option.setAttribute(\"data-description\", (tag.body ?? \"\").replaceAll(\"\\n\\n\", \"\\n\"));\r\n option.innerHTML = tag.tag_name;\r\n this.versions!.append(option);\r\n });\r\n this.releaseDescription.innerHTML = this.versions!.firstElementChild?.getAttribute(\"data-description\") ?? \"\";\r\n });\r\n }\r\n });\r\n }\r\n\r\n this.saveImageButton?.addEventListener(\"click\", () => this.saveImage());\r\n this.saveSvgImageButton?.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.downloadImage();\r\n });\r\n this.copyImageButton?.addEventListener(\"click\", () => this.copyImage());\r\n\r\n this.zoomButtons.forEach(item =>\r\n item.addEventListener(\"click\", event => {\r\n const delta = parseFloat((event.currentTarget as HTMLElement).getAttribute(\"data-factor\")!);\r\n this.renderer.zoomToCenter(this.renderer.getZoom() * delta);\r\n })\r\n );\r\n\r\n this.search.addEventListener(\"submit\", event => {\r\n event.preventDefault();\r\n this.submitSearch();\r\n });\r\n\r\n this.findPathForm?.addEventListener(\"submit\", event => {\r\n event.preventDefault();\r\n this.submitPathFind();\r\n });\r\n\r\n this.findPathModal?.addEventListener(\"shown.bs.modal\", () => {\r\n (this.findPathModal!.querySelector(\"input\") as HTMLInputElement)?.focus();\r\n });\r\n\r\n this.searchModal.addEventListener(\"shown.bs.modal\", () => {\r\n (this.searchModal.querySelector(\"input\") as HTMLInputElement)?.focus();\r\n });\r\n\r\n this.settingsModal.addEventListener(\"show.bs.modal\", () => {\r\n this.populateSettings();\r\n });\r\n\r\n this.settingsModal.addEventListener(\"shown.bs.modal\", () => {\r\n (this.settingsModal.querySelector(\"input\") as HTMLInputElement)?.focus();\r\n });\r\n\r\n this.settingsForm.addEventListener(\"submit\", event => {\r\n event.preventDefault();\r\n this.handleSaveSettings();\r\n });\r\n\r\n this.resetSettingsButton.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.resetSettings();\r\n });\r\n\r\n this.areaModal?.addEventListener(\"show.bs.modal\", () => {\r\n this.populateAreaInfo(this.areaId, this.zIndex);\r\n });\r\n\r\n this.translatePage();\r\n this.languageSelector.querySelectorAll(\"a\").forEach(element => {\r\n element.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.translatePage((element as HTMLElement).getAttribute(\"data-lang\") ?? undefined);\r\n });\r\n });\r\n\r\n this.renderer = new Renderer(this.map, this.reader, this.settings);\r\n }\r\n\r\n init() {\r\n if (params.version && this.versions) {\r\n this.replaceVersion(params.version);\r\n history.replaceState(null, \"\", url);\r\n return;\r\n }\r\n\r\n let area = this.reader.getAreas()[0].getAreaId();\r\n let zIdx = 0;\r\n if (params.loc) {\r\n this.findRoom(parseInt(params.loc));\r\n history.replaceState(null, \"\", url);\r\n } else {\r\n if (params.area) {\r\n area = parseInt(params.area);\r\n history.replaceState(null, \"\", url);\r\n } else if (position !== null && position.area) {\r\n area = position.area;\r\n zIdx = position.zIndex;\r\n }\r\n this.renderArea(area, zIdx);\r\n }\r\n }\r\n\r\n handleSaveSettings() {\r\n const formData: Record<string, any> = {};\r\n\r\n this.settingsModal.querySelectorAll<HTMLInputElement>(\"#nav-map input\").forEach(element => {\r\n const name = element.getAttribute(\"name\");\r\n if (!name) return;\r\n const type = element.getAttribute(\"type\");\r\n if (type === \"checkbox\") {\r\n formData[name] = element.checked;\r\n } else if (type === \"number\") {\r\n formData[name] = parseFloat(element.value);\r\n } else {\r\n formData[name] = element.value;\r\n }\r\n });\r\n\r\n this.settingsModal.querySelectorAll<HTMLSelectElement>(\"#nav-map select[name]\").forEach(element => {\r\n const name = element.getAttribute(\"name\");\r\n if (name) formData[name] = element.value;\r\n });\r\n\r\n // Apply renderer settings (only known keys)\r\n const defaults = createSettings();\r\n for (const key of Object.keys(defaults)) {\r\n if (formData[key] !== undefined) {\r\n (this.settings as any)[key] = formData[key];\r\n }\r\n }\r\n // Update page settings\r\n if (formData.preview !== undefined) this.pageSettings.preview = formData.preview;\r\n if (formData.keepZoomLevel !== undefined) this.pageSettings.keepZoomLevel = formData.keepZoomLevel;\r\n if (formData.disableKeyBinds !== undefined) this.pageSettings.disableKeyBinds = formData.disableKeyBinds;\r\n\r\n this.showToast(translator.translateForKey(\"settings-saved\", translator.currentLanguage));\r\n Modal.getInstance(this.settingsModal)?.hide();\r\n this.saveSettings();\r\n this.render(true);\r\n }\r\n\r\n saveSettings() {\r\n localStorage.setItem(\"settings\", JSON.stringify({\r\n ...this.settings,\r\n ...this.pageSettings,\r\n }));\r\n }\r\n\r\n render(force?: boolean) {\r\n return this.renderArea(parseInt(this.select.value), this.zIndex, force);\r\n }\r\n\r\n renderArea(areaId: number, zIndex: number, force?: boolean): boolean {\r\n if (this.areaId !== areaId || this.zIndex !== zIndex || force) {\r\n this.areaId = areaId;\r\n this.zIndex = zIndex;\r\n\r\n localStorage.setItem(\"position\", JSON.stringify({area: areaId, zIndex: zIndex}));\r\n document.querySelector(\"body\")!.style.background = this.settings.backgroundColor;\r\n\r\n this.renderer.updateBackground();\r\n this.renderer.drawArea(areaId, zIndex);\r\n this.renderer.fitArea();\r\n\r\n // Capture preview data at fitArea() state before any zoom override\r\n const previewBounds = this.renderer.getViewportBounds();\r\n const previewPng = this.renderer.exportPng({pixelRatio: 0.25}) ?? null;\r\n\r\n const area = this.reader.getArea(areaId);\r\n this.select.value = String(areaId);\r\n if (area) {\r\n this.populateLevelButtons(area.getZLevels(), zIndex);\r\n }\r\n this.hideRoomInfo();\r\n\r\n // Re-render paths on the new area\r\n this.reRenderAllPaths();\r\n\r\n this.renderer.clearHighlights();\r\n if (this.pageSettings.keepZoomLevel && this.zoom) {\r\n this.renderer.zoomToCenter(this.zoom);\r\n }\r\n\r\n this.preview.init(previewBounds, previewPng);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n genericSetup() {\r\n document.querySelectorAll(\".btn\").forEach(element =>\r\n element.addEventListener(\"click\", () => (element as HTMLElement).blur())\r\n );\r\n }\r\n\r\n populateLevelButtons(levels: number[], zIndex: number) {\r\n this.levels.innerHTML = \"\";\r\n if (levels.length <= 1) {\r\n return;\r\n }\r\n const levelsSorted = levels.slice().sort((a, b) => a - b);\r\n\r\n if (levelsSorted.length > 10) {\r\n const container = document.createElement(\"div\");\r\n container.classList.add(\"dropdown\");\r\n const button = document.createElement(\"button\");\r\n button.classList.add(\"btn\", \"btn-secondary\", \"dropdown-toggle\");\r\n button.setAttribute(\"type\", \"button\");\r\n button.setAttribute(\"data-bs-toggle\", \"dropdown\");\r\n button.append(document.createTextNode(String(zIndex)));\r\n const menu = document.createElement(\"div\");\r\n menu.classList.add(\"dropdown-menu\");\r\n container.append(button);\r\n container.append(menu);\r\n for (const level of levelsSorted) {\r\n const link = document.createElement(\"a\");\r\n link.classList.add(\"dropdown-item\", \"btn-level\");\r\n link.setAttribute(\"href\", \"#\");\r\n link.setAttribute(\"data-level\", String(level));\r\n link.append(document.createTextNode(String(level)));\r\n menu.append(link);\r\n }\r\n this.levels.append(container);\r\n } else {\r\n for (const level of levelsSorted) {\r\n const button = document.createElement(\"button\");\r\n button.setAttribute(\"type\", \"button\");\r\n button.setAttribute(\"data-level\", String(level));\r\n button.classList.add(\"btn\", \"btn-level\");\r\n if (level === zIndex) {\r\n button.classList.add(\"btn-primary\");\r\n } else {\r\n button.classList.add(\"btn-secondary\");\r\n }\r\n button.append(document.createTextNode(String(level)));\r\n this.levels.append(button);\r\n }\r\n }\r\n this.levels.querySelectorAll(\".btn-level\").forEach(item => {\r\n item.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n const zIdx = parseInt((event.target as HTMLElement).getAttribute(\"data-level\")!);\r\n this.renderArea(parseInt(this.select.value), zIdx);\r\n });\r\n });\r\n }\r\n\r\n populateAreaInfo(areaId: number, zIndex: number) {\r\n const area = this.reader.getArea(areaId);\r\n if (!area) return;\r\n this.areaModal!.querySelector(\".area-name\")!.innerHTML = `${area.getAreaName()} (id: ${area.getAreaId()})`;\r\n const rooms = area.getRooms();\r\n this.areaModal!.querySelector(\".area-room-count\")!.innerHTML = String(rooms.length);\r\n const areaExits = this.areaModal!.querySelector(\".area-exits\")!;\r\n areaExits.innerHTML = \"\";\r\n rooms.flatMap(room => this.getAreaExits(room)).forEach(([id, targetId]) => {\r\n const targetArea = this.reader.getArea(this.reader.getRoom(targetId)?.area ?? 0);\r\n const li = document.createElement(\"li\");\r\n const roomLink = document.createElement(\"a\");\r\n roomLink.setAttribute(\"href\", \"#\");\r\n roomLink.setAttribute(\"data-room\", String(id));\r\n roomLink.appendChild(document.createTextNode(String(id)));\r\n roomLink.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n const arrow = document.createTextNode(\" -> \");\r\n const targetLink = document.createElement(\"a\");\r\n targetLink.setAttribute(\"href\", \"#\");\r\n targetLink.setAttribute(\"data-room\", String(targetId));\r\n targetLink.appendChild(document.createTextNode(`${targetId} (${targetArea?.getAreaName() ?? \"?\"})`));\r\n targetLink.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n li.append(roomLink, arrow, targetLink);\r\n areaExits.appendChild(li);\r\n });\r\n }\r\n\r\n getAreaExits(room: MapData.Room): [number, number][] {\r\n const areaExits: [number, number][] = [];\r\n Object.values(room.exits).filter(target => this.isExitTarget(target)).forEach(exitId => areaExits.push([room.id, exitId]));\r\n Object.values(room.specialExits).filter(target => this.isExitTarget(target)).forEach(exitId => areaExits.push([room.id, exitId]));\r\n return areaExits;\r\n }\r\n\r\n isExitTarget(destinationRoom: number): boolean {\r\n const destRoom = this.reader.getRoom(destinationRoom);\r\n if (!destRoom) return false;\r\n const currentArea = this.renderer.getCurrentArea();\r\n return destRoom.area !== currentArea?.getAreaId();\r\n }\r\n\r\n populateSelectBox() {\r\n this.select.querySelectorAll(\"option\").forEach(item => item.remove());\r\n this.reader\r\n .getAreas()\r\n .filter(area => area.getRooms().length > 0 && area.getAreaName() !== undefined && area.getAreaName() !== \"\")\r\n .sort((a, b) => {\r\n const nameA = a.getAreaName().toLowerCase();\r\n const nameB = b.getAreaName().toLowerCase();\r\n if (nameA < nameB) return -1;\r\n if (nameA > nameB) return 1;\r\n return 0;\r\n })\r\n .forEach(areaElement => {\r\n if (!areaElement.getRooms().length) {\r\n return;\r\n }\r\n this.select.append(new Option(areaElement.getAreaName(), String(areaElement.getAreaId())));\r\n });\r\n this.select.addEventListener(\"change\", event => {\r\n this.renderArea(parseInt((event.target as HTMLSelectElement).value), 0);\r\n });\r\n }\r\n\r\n submitSearch() {\r\n Modal.getInstance(this.searchModal)?.hide();\r\n const inputs = this.search.querySelectorAll(\"input\");\r\n\r\n const formData: Record<string, string> = {};\r\n inputs.forEach(element => {\r\n formData[element.name] = element.value;\r\n element.value = \"\";\r\n });\r\n\r\n if (formData.roomId !== undefined) {\r\n let roomId: any = formData.roomId.split(\",\");\r\n if (isNaN(roomId[0])) {\r\n roomId = findNpc(roomId);\r\n }\r\n this.findRooms(roomId);\r\n }\r\n }\r\n\r\n submitPathFind() {\r\n Modal.getInstance(this.findPathModal!)?.hide();\r\n const inputs = this.findPathForm!.querySelectorAll(\"input\");\r\n\r\n const formData: Record<string, string> = {};\r\n inputs.forEach(element => {\r\n formData[element.name] = element.value;\r\n element.value = \"\";\r\n });\r\n if (this.findPath(formData[\"start-loc\"], formData[\"end-loc\"])) {\r\n this.findRoom(parseInt(formData[\"start-loc\"]));\r\n }\r\n }\r\n\r\n findRoom(id: number) {\r\n if (!id) {\r\n return;\r\n }\r\n const room = this.reader.getRoom(id);\r\n if (room) {\r\n const areaChanged = this.renderArea(room.area, room.z);\r\n this.renderer.setZoom(0.5);\r\n this.renderer.centerOn(id, areaChanged);\r\n this.selectRoom(room);\r\n } else {\r\n this.showToast(translator.translateForKey(\"location-not-found\", translator.currentLanguage));\r\n }\r\n }\r\n\r\n findRooms(rooms: (string | number)[]) {\r\n const firstRoom = this.reader.getRoom(parseInt(String(rooms[0])));\r\n if (firstRoom) {\r\n const areaChanged = this.renderArea(firstRoom.area, firstRoom.z);\r\n this.renderer.setZoom(0.5);\r\n this.renderer.centerOn(firstRoom.id, areaChanged);\r\n this.selectRoom(firstRoom);\r\n // Also highlight additional rooms if multiple\r\n if (rooms.length > 1) {\r\n rooms.slice(1).forEach(roomId => {\r\n this.renderer.renderHighlight(parseInt(String(roomId)), \"#FFFF00\");\r\n });\r\n }\r\n } else {\r\n this.showToast(translator.translateForKey(\"location-not-found\", translator.currentLanguage));\r\n }\r\n }\r\n\r\n findPath(from: string, to: string): boolean {\r\n const key = `${from}#${to}`;\r\n const existingColor = (this.pathBox.querySelector(`[data-path-key='${key}'] input[type='color']`) as HTMLInputElement)?.value;\r\n const pathColor = existingColor ?? rainbow[pathPick++ % rainbow.length];\r\n\r\n const pathLocations = this.pathFinder.findPath(parseInt(from), parseInt(to));\r\n if (!pathLocations) {\r\n this.showToast(translator.translateForKey(\"no-path\", translator.currentLanguage));\r\n pathPick--;\r\n return false;\r\n }\r\n\r\n this.paths[key] = {locations: pathLocations, color: pathColor};\r\n this.reRenderAllPaths();\r\n\r\n if (!this.pathBox.querySelector(`[data-path-key='${key}']`)) {\r\n const pathSelector = document.createElement(\"li\");\r\n pathSelector.classList.add(\"list-group-item\", \"d-inline-flex\", \"align-items-center\", \"position-relative\");\r\n pathSelector.setAttribute(\"data-path-key\", key);\r\n\r\n const color = document.createElement(\"input\");\r\n color.setAttribute(\"type\", \"color\");\r\n color.classList.add(\"small-color\", \"me-2\");\r\n color.value = pathColor;\r\n color.addEventListener(\"input\", () => {\r\n this.paths[key].color = color.value;\r\n this.reRenderAllPaths();\r\n });\r\n pathSelector.appendChild(color);\r\n\r\n pathSelector.appendChild(document.createTextNode(`${from} -> ${to}`));\r\n\r\n const deletePath = document.createElement(\"span\");\r\n deletePath.classList.add(\"badge\", \"bg-secondary\", \"position-absolute\", \"end-0\", \"me-2\");\r\n deletePath.appendChild(document.createTextNode(translator.translateForKey(\"delete\", translator.currentLanguage)));\r\n deletePath.onclick = () => {\r\n delete this.paths[key];\r\n this.reRenderAllPaths();\r\n pathSelector.remove();\r\n\r\n if (Object.keys(this.paths).length === 0) {\r\n this.pathBox.parentElement!.classList.add(\"invisible\");\r\n }\r\n };\r\n pathSelector.appendChild(deletePath);\r\n this.pathBox.appendChild(pathSelector);\r\n this.pathBox.parentElement!.classList.remove(\"invisible\");\r\n }\r\n return true;\r\n }\r\n\r\n reRenderAllPaths() {\r\n this.renderer.clearPaths();\r\n Object.entries(this.paths).forEach(([key, pathData]) => {\r\n const colorEl = (this.pathBox.querySelector(`[data-path-key='${key}'] input[type='color']`) as HTMLInputElement);\r\n const color = colorEl?.value ?? pathData.color;\r\n this.renderer.renderPath(pathData.locations, color);\r\n });\r\n }\r\n\r\n adjustZoomBar(detail: ZoomChangeEventDetail) {\r\n const minZoom = 0.1;\r\n const maxZoom = 5;\r\n const percentage = (detail.zoom - minZoom) / (maxZoom - minZoom);\r\n\r\n (this.zoomBar.querySelector(\".progress-bar\") as HTMLElement).style.width = percentage * 100 + \"%\";\r\n if (!this.zoomBar.classList.contains(\"visible\")) {\r\n this.zoomBar.classList.add(\"visible\");\r\n this.zoomBar.classList.remove(\"hidden\");\r\n this.progressTimeout = setTimeout(() => {\r\n this.zoomBar.classList.add(\"hidden\");\r\n this.zoomBar.classList.remove(\"visible\");\r\n }, 3000);\r\n } else {\r\n if (this.progressTimeout !== undefined) {\r\n clearTimeout(this.progressTimeout);\r\n this.progressTimeout = undefined;\r\n }\r\n this.progressTimeout = setTimeout(() => {\r\n this.zoomBar.classList.add(\"hidden\");\r\n this.zoomBar.classList.remove(\"visible\");\r\n }, 3000);\r\n }\r\n }\r\n\r\n selectRoom(room: MapData.Room) {\r\n this.renderer.clearHighlights();\r\n this.selectedRoom = room;\r\n this.renderer.updatePositionMarker(room.id);\r\n this.showRoomInfo(room);\r\n }\r\n\r\n deselectRoom() {\r\n this.selectedRoom = null;\r\n this.renderer.clearHighlights();\r\n this.renderer.clearPosition();\r\n this.hideRoomInfo();\r\n }\r\n\r\n showRoomInfo(room: MapData.Room) {\r\n const bgColor = this.reader.getColorValue(room.env);\r\n this.infoBox.style.border = `2px solid ${bgColor.replace(\"rgb(\", \"rgba(\").replace(\")\", \", 0.5)\")}`;\r\n this.infoBox.style.display = \"initial\";\r\n this.infoBox.querySelector(\".room-id\")!.innerHTML = String(room.id);\r\n (this.infoBox.querySelector(\".room-link\") as HTMLAnchorElement).setAttribute(\"href\", `${url}?loc=${room.id}`);\r\n this.infoBox.querySelector(\".room-name\")!.innerHTML = room.name;\r\n this.infoBox.querySelector(\".room-env\")!.innerHTML = String(room.env);\r\n this.infoBox.querySelector(\".coord-x\")!.innerHTML = String(room.x);\r\n this.infoBox.querySelector(\".coord-y\")!.innerHTML = String(room.y);\r\n this.infoBox.querySelector(\".coord-z\")!.innerHTML = String(room.z);\r\n this.infoBox.querySelector(\".room-hash\")!.innerHTML = room.hash ?? \"\";\r\n\r\n this.infoExitsGroup(this.infoBox.querySelector(\".exits\")!, room.exits);\r\n this.infoExitsGroup(this.infoBox.querySelector(\".special\")!, room.specialExits);\r\n\r\n this.userDataGroup(this.infoBox.querySelector(\".userData\")!, room.userData);\r\n this.npcDataGroup(this.infoBox.querySelector(\".npc\")!, roomNpc[room.id] || []);\r\n }\r\n\r\n userDataGroup(container: HTMLElement, userData: Record<string, string>) {\r\n const containerList = container.querySelector(\"ul\")!;\r\n containerList.innerHTML = \"\";\r\n let show = false;\r\n for (const userDataKey in userData) {\r\n show = true;\r\n const dataElement = document.createElement(\"li\");\r\n dataElement.classList.add(\"user-data\");\r\n const key = document.createElement(\"p\");\r\n key.append(`${userDataKey}:`);\r\n const value = document.createElement(\"p\");\r\n value.append(`${userData[userDataKey].replaceAll(\"\\\\n\", \"\\n\")}`);\r\n value.className = \"value\";\r\n dataElement.append(key, value);\r\n containerList.append(dataElement);\r\n }\r\n container.style.display = show ? \"initial\" : \"none\";\r\n }\r\n\r\n infoExitsGroup(container: HTMLElement, exits: Record<string, number>) {\r\n const containerList = container.querySelector(\"ul\")!;\r\n containerList.innerHTML = \"\";\r\n let show = false;\r\n for (const exit in exits) {\r\n show = true;\r\n containerList.append(this.infoExit(exit, exits[exit]));\r\n }\r\n container.style.display = show ? \"initial\" : \"none\";\r\n }\r\n\r\n npcDataGroup(container: HTMLElement, npcs: string[]) {\r\n const containerList = container.querySelector(\"ul\")!;\r\n containerList.innerHTML = \"\";\r\n let show = false;\r\n for (const npc of npcs) {\r\n show = true;\r\n const element = document.createElement(\"li\");\r\n element.append(document.createTextNode(npc));\r\n containerList.append(element);\r\n }\r\n container.style.display = show ? \"initial\" : \"none\";\r\n }\r\n\r\n infoExit(exit: string, id: number): HTMLElement {\r\n const exitElement = document.createElement(\"li\");\r\n\r\n const exitDir = document.createElement(\"span\");\r\n exitDir.setAttribute(\"data-i18n\", exit);\r\n exitDir.innerHTML = this.translateDir(exit);\r\n exitElement.append(exitDir);\r\n exitElement.append(document.createTextNode(\": \"));\r\n\r\n const link = document.createElement(\"a\");\r\n link.setAttribute(\"href\", \"#\");\r\n link.setAttribute(\"data-room\", String(id));\r\n link.innerHTML = String(id);\r\n link.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n exitElement.append(link);\r\n\r\n const destRoom = this.reader.getRoom(id);\r\n if (destRoom) {\r\n const currentArea = this.renderer.getCurrentArea();\r\n if (destRoom.area !== currentArea?.getAreaId()) {\r\n const area = this.reader.getArea(destRoom.area);\r\n exitElement.append(document.createTextNode(\" -> \"));\r\n const areaLink = document.createElement(\"a\");\r\n areaLink.setAttribute(\"href\", \"#\");\r\n areaLink.setAttribute(\"data-room\", String(destRoom.id));\r\n areaLink.innerHTML = area?.getAreaName() ?? \"?\";\r\n areaLink.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n exitElement.append(areaLink);\r\n }\r\n }\r\n\r\n return exitElement;\r\n }\r\n\r\n showToast(text: string) {\r\n this.toastContainer.querySelector(\".toast-body\")!.innerHTML = text;\r\n Toast.getOrCreateInstance(this.toastContainer).show();\r\n }\r\n\r\n translateDir(dir: string): string {\r\n return translator.translateForKey(dir) ?? dir;\r\n }\r\n\r\n translatePage(lang?: string) {\r\n this.currentLanguageFlag.classList.remove(`flag-${translator.currentLanguage}`);\r\n if (lang) {\r\n translator.translatePageTo(lang);\r\n }\r\n this.currentLanguageFlag.classList.add(`flag-${translator.currentLanguage}`);\r\n }\r\n\r\n hideRoomInfo() {\r\n this.infoBox.style.display = \"none\";\r\n }\r\n\r\n populateSettings() {\r\n const allSettings: Record<string, any> = {...this.settings, ...this.pageSettings};\r\n const mapTab = this.settingsModal.querySelector(\"#nav-map\");\r\n if (!mapTab) return;\r\n\r\n for (const setting in allSettings) {\r\n // Try input first\r\n const input = mapTab.querySelector(`input[name='${setting}']`) as HTMLInputElement | null;\r\n if (input) {\r\n if (input.getAttribute(\"type\") === \"checkbox\") {\r\n input.checked = allSettings[setting];\r\n } else if (input.getAttribute(\"type\") === \"color\") {\r\n input.value = toHexColor(allSettings[setting]);\r\n } else {\r\n input.value = allSettings[setting];\r\n }\r\n continue;\r\n }\r\n // Try select\r\n const select = mapTab.querySelector(`select[name='${setting}']`) as HTMLSelectElement | null;\r\n if (select) {\r\n select.value = allSettings[setting];\r\n }\r\n }\r\n }\r\n\r\n resetSettings() {\r\n const defaults = createSettings();\r\n const allDefaults: Record<string, any> = {\r\n ...defaults,\r\n preview: true,\r\n keepZoomLevel: false,\r\n disableKeyBinds: false,\r\n };\r\n const mapTab = this.settingsModal.querySelector(\"#nav-map\");\r\n if (!mapTab) return;\r\n\r\n for (const setting in allDefaults) {\r\n const input = mapTab.querySelector(`input[name='${setting}']`) as HTMLInputElement | null;\r\n if (input) {\r\n if (input.getAttribute(\"type\") === \"checkbox\") {\r\n input.checked = allDefaults[setting];\r\n } else if (input.getAttribute(\"type\") === \"color\") {\r\n input.value = toHexColor(allDefaults[setting]);\r\n } else {\r\n input.value = allDefaults[setting];\r\n }\r\n continue;\r\n }\r\n const select = mapTab.querySelector(`select[name='${setting}']`) as HTMLSelectElement | null;\r\n if (select) {\r\n select.value = allDefaults[setting];\r\n }\r\n }\r\n }\r\n\r\n saveImage() {\r\n const pngUrl = this.renderer.exportPng();\r\n if (!pngUrl) return;\r\n const a = document.createElement(\"a\");\r\n a.setAttribute(\"href\", pngUrl);\r\n a.setAttribute(\"download\", (this.renderer.getCurrentArea()?.getAreaName() ?? \"map\") + \".png\");\r\n document.querySelector(\"body\")!.append(a);\r\n a.click();\r\n a.remove();\r\n }\r\n\r\n downloadImage() {\r\n const svg = this.renderer.exportSvg();\r\n if (!svg) return;\r\n const a = document.createElement(\"a\");\r\n a.setAttribute(\"href\", svgToDataURL(svg));\r\n a.setAttribute(\"download\", (this.renderer.getCurrentArea()?.getAreaName() ?? \"map\") + \".svg\");\r\n document.querySelector(\"body\")!.append(a);\r\n a.click();\r\n a.remove();\r\n }\r\n\r\n copyImage() {\r\n if (typeof ClipboardItem !== \"undefined\") {\r\n const blobPromise = this.renderer.exportPngBlob();\r\n if (blobPromise) {\r\n blobPromise.then(blob =>\r\n navigator.clipboard.write([new ClipboardItem({\"image/png\": blob})])\r\n );\r\n }\r\n this.showToast(translator.translateForKey(\"copied\", translator.currentLanguage));\r\n } else {\r\n this.showToast(translator.translateForKey(\"no-clipboard\", translator.currentLanguage));\r\n }\r\n }\r\n\r\n goDirection(directionKey: string) {\r\n const fullDirection = dirsShortToLong(directionKey);\r\n if (this.selectedRoom && this.selectedRoom.exits[fullDirection as MapData.direction]) {\r\n this.findRoom(this.selectedRoom.exits[fullDirection as MapData.direction]);\r\n }\r\n }\r\n\r\n registerKeyBoard() {\r\n const directionKeys: Record<string, string> = {\r\n Numpad1: \"sw\",\r\n Numpad2: \"s\",\r\n Numpad3: \"se\",\r\n Numpad4: \"w\",\r\n Numpad6: \"e\",\r\n Numpad7: \"nw\",\r\n Numpad8: \"n\",\r\n Numpad9: \"ne\",\r\n NumpadMultiply: \"u\",\r\n NumpadDivide: \"d\",\r\n };\r\n\r\n window.addEventListener(\"keydown\", event => {\r\n if (this.pageSettings.disableKeyBinds) {\r\n return;\r\n }\r\n\r\n if (event.code === \"F1\") {\r\n event.preventDefault();\r\n this.showHelp();\r\n }\r\n\r\n if (event.ctrlKey && event.code === \"KeyF\") {\r\n event.preventDefault();\r\n this.showSearch();\r\n }\r\n });\r\n\r\n window.addEventListener(\"keydown\", event => {\r\n if (document.querySelector(\"input:focus\") || this.pageSettings.disableKeyBinds) {\r\n return;\r\n }\r\n\r\n if (event.ctrlKey && event.code === \"KeyS\") {\r\n this.saveImage();\r\n event.preventDefault();\r\n }\r\n\r\n if (event.code === \"Equal\") {\r\n this.renderer.zoomToCenter(this.renderer.getZoom() * 1.1);\r\n event.preventDefault();\r\n }\r\n\r\n if (event.code === \"Minus\") {\r\n this.renderer.zoomToCenter(this.renderer.getZoom() * 0.9);\r\n event.preventDefault();\r\n }\r\n\r\n if (directionKeys.hasOwnProperty(event.code)) {\r\n this.goDirection(directionKeys[event.code]);\r\n event.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n showHelp() {\r\n Modal.getOrCreateInstance(this.helpModal).show();\r\n }\r\n\r\n showSearch() {\r\n Modal.getOrCreateInstance(this.searchModal).show();\r\n }\r\n\r\n replaceVersion(tag: string) {\r\n downloadVersion(tag, this.versions!.getAttribute(\"data-files\")!).then(data => {\r\n this.reader = new MapReader(data as MapData.Map, colors);\r\n this.pathFinder = new PathFinder(this.reader);\r\n this.renderer = new Renderer(this.map, this.reader, this.settings);\r\n this.populateSelectBox();\r\n this.renderArea(this.areaId, this.zIndex, true);\r\n this.showToast(`Przeladowano wersje na ${tag}`);\r\n this.versionBadge.innerHTML = `v${tag}`;\r\n this.versionBadge.style.display = \"initial\";\r\n });\r\n }\r\n}\r\n\r\nconst controls = new PageControls(new MapReader(mapData, colors));\r\n(window as any).controls = controls;\r\ncontrols.genericSetup();\r\ncontrols.populateSelectBox();\r\ncontrols.init();\r\ncontrols.registerKeyBoard();\r\n\r\nconst dirs: Record<string, string> = {\r\n north: \"n\",\r\n south: \"s\",\r\n east: \"e\",\r\n west: \"w\",\r\n northeast: \"ne\",\r\n northwest: \"nw\",\r\n southeast: \"se\",\r\n southwest: \"sw\",\r\n up: \"u\",\r\n down: \"d\",\r\n};\r\n\r\nfunction getKeyByValue(obj: Record<string, string>, val: string): string | undefined {\r\n for (const k in obj) {\r\n if (obj.hasOwnProperty(k) && obj[k] === val) {\r\n return k;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction dirsShortToLong(dir: string): string {\r\n const result = getKeyByValue(dirs, dir);\r\n return result !== undefined ? result : dir;\r\n}\r\n","export const downloadTags = async (url: string): Promise<unknown> => {\r\n const response = await fetch(url);\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch tags: ${response.status} ${response.statusText}`);\r\n }\r\n return response.json();\r\n};\r\n\r\nexport const downloadVersion = async (tag: string, address: string): Promise<unknown> => {\r\n const url = address.replace(\"%tag%\", tag);\r\n const response = await fetch(url);\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch version: ${response.status} ${response.statusText}`);\r\n }\r\n return response.json();\r\n};\r\n"],"names":["t","e","Symbol","iterator","constructor","prototype","n","length","r","enumerable","configurable","writable","Object","defineProperty","key","a","Array","o","INVALID_PARAM_LANGUAGE","concat","INVALID_PARAM_JSON","EMPTY_PARAM_LANGUAGE","EMPTY_PARAM_JSON","INVALID_PARAM_KEY","NO_LANGUAGE_REGISTERED","TRANSLATION_NOT_FOUND","INVALID_PARAMETER_SOURCES","FETCH_ERROR","url","status","statusText","INVALID_ENVIRONMENT","MODULE_NOT_FOUND","MISMATCHING_ATTRIBUTES","join","outerHTML","INVALID_OPTIONS","i","arguments","u","TypeError","apply","c","isArray","call","next","done","push","value","return","toString","slice","name","from","test","stack","split","g","f","console","error","message","this","debug","languages","Map","config","assign","defaultConfig","registerGlobally","s","detectLanguage","_globalObject","translateForKey","bind","_env","_detectLanguage","get","window","global","module","exports","localStorage","getItem","persistKey","defaultLanguage","navigator","language","substr","reduce","getAttribute","forEach","_getValueFromJSON","setAttribute","has","selector","document","querySelectorAll","_replace","_currentLanguage","documentElement","lang","persist","setItem","keys","set","delete","map","replace","filesLocation","Promise","all","fetch","then","ok","json","filter","add","JSON","parse","require","readFileSync","process","cwd","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","nodeName","toLowerCase","getWindow","node","ownerDocument","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","applyStyles$1","enabled","phase","fn","_ref","state","elements","style","styles","attributes","removeAttribute","effect","_ref2","initialStyles","position","options","strategy","margin","arrow","hasOwnProperty","property","attribute","requires","getBasePlacement","max","Math","min","round","getUAString","uaData","userAgentData","brands","item","brand","version","userAgent","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","offsetHeight","height","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getLayoutRect","abs","contains","parent","child","rootNode","getRootNode","isSameNode","parentNode","host","getComputedStyle","isTableElement","indexOf","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","len","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","offset","axisProp","centerOffset","_options$element","querySelector","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","computeStyles$1","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","data","passive","eventListeners","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","addEventListener","update","removeEventListener","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","body","listScrollParents","list","_element$ownerDocumen","isBody","target","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","sort","b","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","find","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","v","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","order","modifiers","visited","Set","result","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","merged","orderModifiers","current","existing","m","_ref3$options","cleanupFn","noopFn","forceUpdate","_state$elements","index","_state$orderedModifie","_state$orderedModifie2","resolve","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","hide","TRANSITION_END","toType","object","match","getSelector","hrefAttribute","includes","startsWith","trim","getSelectorFromElement","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","jquery","nodeType","getElement","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","attachShadow","root","noop","reflow","getjQuery","jQuery","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","NAME","JQUERY_NO_CONFLICT","jQueryInterface","Constructor","noConflict","readyState","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","setTimeout","getNextActiveElement","activeElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","values","event","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","relatedTarget","delegateTarget","wrapFunction","handlers","previousFunction","domElements","domElement","hydrateObj","EventHandler","off","type","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","inNamespace","isNamespace","elementEvent","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","entries","_unused","elementMap","Data","instanceMap","size","remove","normalizeData","decodeURIComponent","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","getDataAttributes","bsKeys","dataset","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","configTypes","expectedTypes","valueType","RegExp","toUpperCase","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","VERSION","eventName","enableDismissTrigger","component","method","clickEvent","tagName","EVENT_KEY$b","EVENT_CLOSE","EVENT_CLOSED","Alert","close","_destroyElement","each","SELECTOR_DATA_TOGGLE$5","Button","toggle","button","SelectorEngine","findOne","children","matches","parents","ancestor","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","EVENT_KEY$9","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","Default$c","endCallback","leftCallback","rightCallback","DefaultType$c","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","pointerType","maxTouchPoints","EVENT_KEY$8","DATA_API_KEY$5","ARROW_LEFT_KEY$1","ARROW_RIGHT_KEY$1","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN$1","EVENT_MOUSEENTER$1","EVENT_MOUSELEAVE$1","EVENT_DRAG_START","EVENT_LOAD_DATA_API$3","EVENT_CLICK_DATA_API$5","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","Default$b","interval","keyboard","pause","ride","touch","wrap","DefaultType$b","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_KEY$7","EVENT_SHOW$6","EVENT_SHOWN$6","EVENT_HIDE$6","EVENT_HIDDEN$6","EVENT_CLICK_DATA_API$4","CLASS_NAME_SHOW$7","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE$4","Default$a","DefaultType$a","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","scrollSize","selected","triggerArray","isOpen","selectorElements","NAME$a","EVENT_KEY$6","DATA_API_KEY$3","ARROW_UP_KEY$1","ARROW_DOWN_KEY$1","EVENT_HIDE$5","EVENT_HIDDEN$5","EVENT_SHOW$5","EVENT_SHOWN$5","EVENT_CLICK_DATA_API$3","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW$6","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$9","autoClose","display","popperConfig","DefaultType$9","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","Popper","referenceElement","_getPopperConfig","Popper.createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","clearMenus","openToggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","NAME$9","CLASS_NAME_SHOW$5","EVENT_MOUSEDOWN","Default$8","className","clickCallback","rootElement","DefaultType$8","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_KEY$5","EVENT_FOCUSIN$2","EVENT_KEYDOWN_TAB","TAB_NAV_BACKWARD","Default$7","autofocus","trapElement","DefaultType$7","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","shiftKey","EVENT_KEY$4","EVENT_HIDE$4","EVENT_HIDE_PREVENTED$1","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_RESIZE$1","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_OPEN","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","Default$6","DefaultType$6","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","EVENT_KEY$3","DATA_API_KEY$1","EVENT_LOAD_DATA_API$2","CLASS_NAME_SHOW$3","CLASS_NAME_SHOWING$1","CLASS_NAME_HIDING","OPEN_SELECTOR","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_HIDE$3","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$3","EVENT_RESIZE","EVENT_CLICK_DATA_API$1","EVENT_KEYDOWN_DISMISS","Default$5","DefaultType$5","Offcanvas","blur","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","nodeValue","attributeRegex","regex","DefaultAllowlist","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","small","span","sub","sup","strong","ul","Default$4","allowList","content","extraClass","sanitize","sanitizeFn","template","DefaultType$4","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$2","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","container","customClass","delay","title","DefaultType$3","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","prefix","floor","random","getElementById","getUID","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","_getContent","EVENT_KEY$2","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API$1","CLASS_NAME_ACTIVE$1","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","Default$1","rootMargin","smoothScroll","threshold","DefaultType$1","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","id","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","_activateParents","listGroup","activeNodes","spy","EVENT_KEY$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","PI_OVER_180","PI","glob","WorkerGlobalScope","self","Konva","_global","isBrowser","isUnminified","param","dblClickWindow","getAngle","angle","angleDeg","enableTrace","pointerEventsEnabled","autoDrawEnabled","hitOnDragEnabled","capturePointerEventsEnabled","_mouseListenClick","_touchListenClick","_pointerListenClick","_mouseInDblClickWindow","_touchInDblClickWindow","_pointerInDblClickWindow","_mouseDblClickPointerId","_touchDblClickPointerId","_pointerDblClickPointerId","_renderBackend","legacyTextRendering","pixelRatio","dragDistance","showWarnings","dragButtons","isDragging","isTransforming","_a","_b","isDragReady","releaseCanvasOnDestroy","_injectGlobal","_registerNode","NodeClass","getClassName","ensureBrowser","Transform","dirty","copy","copyInto","tr","point","translate","scale","sx","sy","rotate","rad","cos","sin","m11","m12","m21","m22","getTranslation","skew","matrix","dx","dy","invert","d","m0","m1","m2","m3","m4","m5","getMatrix","decompose","delta","rotation","skewX","skewY","sqrt","acos","Util","_getRotation","PI_OVER_DEG180","DEG180_OVER_PI","KONVA_ERROR","COLORS","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","transparent","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","RGB_REGEX","animQueue","req","requestAnimationFrame","_isElement","_isFunction","_isPlainObject","_isArray","_isNumber","isNaN","isFinite","_isString","_isBoolean","isObject","val","isValidSelector","firstChar","_sign","number","requestAnimFrame","queue","cb","createCanvasElement","canvas","createImageElement","_isInDocument","_urlToImage","imageObj","onload","src","_rgbToHex","_hexToRgb","hex","bigint","getRandomColor","randColor","getRGB","color","rgb","substring","exec","colorToRGBA","str","_namedColorToRBA","_hex3ColorToRGBA","_hex4ColorToRGBA","_hex6ColorToRGBA","_hex8ColorToRGBA","_rgbColorToRGBA","_rgbaColorToRGBA","_hslColorToRGBA","parts","_","hsl","h","l","t2","t3","t1","haveIntersection","r1","r2","cloneObject","retObj","cloneArray","arr","degToRad","deg","radToDeg","_degToRad","warn","_radToDeg","radians","_capitalize","func","_inRange","_getProjectionToSegment","x1","y1","x2","y2","x3","y3","dist","pd2","_getProjectionToLine","pt","line","isClosed","pc","MAX_VALUE","p1","p2","proj","px","py","pdist","_prepareArrayForTween","startArray","endArray","temp","newStart","pr","_prepareToStringify","desc","visitedByCircularReferenceRemoval","getOwnPropertyDescriptor","_assign","source","_getFirstPointerId","changedTouches","identifier","pointerId","releaseCanvas","canvases","drawRoundedRectPath","cornerRadius","xOrigin","yOrigin","topLeft","topRight","bottomLeft","bottomRight","moveTo","lineTo","arc","drawRoundedPolygonPath","points","sides","radius","curr","vec1","vec2","len1","hypot","len2","currCornerRadius","normalVec1","normalVec2","arcTo","CONTEXT_METHODS","_pixelRatio","_cssFiltersSupported","isCSSFiltersSupported","ctx","getContext","Context","traceArr","_enableTrace","fillShape","shape","fillEnabled","_fill","strokeShape","hasStroke","_stroke","fillStrokeShape","attrs","fillAfterStrokeEnabled","getTrace","relaxed","rounded","trace","clearTrace","_trace","shift","getCanvas","getPixelRatio","setTransform","clear","bounds","clearRect","getHeight","_applyLineCap","lineCap","setAttr","_applyOpacity","absOpacity","getAbsoluteOpacity","_applyLineJoin","lineJoin","_applyMiterLimit","miterLimit","attr","_context","startAngle","endAngle","counterClockwise","beginPath","bezierCurveTo","cp1x","cp1y","cp2x","cp2y","clip","closePath","createImageData","createLinearGradient","x0","y0","createPattern","image","repetition","createRadialGradient","r0","drawImage","sWidth","sHeight","dWidth","dHeight","ellipse","radiusX","radiusY","counterclockwise","isPointInPath","path","fillRule","fill","fillRect","strokeRect","fillText","maxWidth","measureText","getImageData","sw","sh","roundRect","radii","putImageData","imageData","quadraticCurveTo","cpx","cpy","restore","save","setLineDash","segments","getLineDash","stroke","path2d","strokeText","that","origSetter","methodName","ret","origMethod","retArr","util","simplifyArray","prop","_applyGlobalCompositeOperation","op","globalCompositeOperation","SceneContext","willReadFrequently","_canvas","_fillColor","_fillFunc","_fillPattern","_getFillPattern","_fillLinearGradient","grd","_getLinearGradient","_fillRadialGradient","_getRadialGradient","hasColor","fillPriority","getFillPriority","hasPattern","getFillPatternImage","hasLinearGradient","getFillLinearGradientColorStops","hasRadialGradient","getFillRadialGradientColorStops","_strokeLinearGradient","getStrokeLinearGradientStartPoint","getStrokeLinearGradientEndPoint","colorStops","getStrokeLinearGradientColorStops","addColorStop","dash","strokeScaleEnabled","getStrokeScaleEnabled","dashEnabled","dashOffset","strokeWidth","getShadowForStrokeEnabled","_strokeFunc","_applyShadow","_c","getShadowRGBA","getShadowBlur","getShadowOffset","getAbsoluteScale","ratio","HitContext","colorKey","_fillFuncHit","hasHitStroke","hitStrokeWidth","_strokeFuncHit","Canvas","isCache","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","getDevicePixelRatio","border","background","setPixelRatio","previousRatio","setSize","setWidth","setHeight","toDataURL","mimeType","quality","err","SceneCanvas","isCanvasFarblingActive","fillStyle","isBraveBrowser","brave","isBrave","warned","HitCanvas","hitCanvas","DD","flag","_dragElements","dragStatus","justDragged","_drag","nodesToFireEvents","stage","getStage","setPointersPositions","pos","_changedPointerPositions","startPointerPos","startDrag","_setDragPosition","fire","_endDragBefore","drawNodes","drawNode","getLayer","draw","_endDragAfter","_formatValue","RGBComponent","getNumberValidator","getNumberOrArrayOfNumbersValidator","noOfElements","isNumber","isValidArray","getNumberOrAutoValidator","getStringValidator","getStringOrGradientValidator","isString","isGradient","getBooleanValidator","GET","SET","Factory","addGetterSetter","def","validator","after","addGetter","addSetter","addOverloadedGetterSetter","overWriteSetter","_setAttr","addComponentsGetterSetter","components","capitalize","getter","setter","getAttr","basicValidator","getComponentValidator","oldVal","_fireChangeEvent","capitalizedAttr","addDeprecatedGetterSetter","backCompat","methods","oldMethodName","newMethodName","oldGetter","oldSetter","deprecated","afterSetFilter","_filterUpToDate","parseCSSFilters","cssFilter","filterRegex","filterName","filterValue","blurRadius","KonvaFilters","Filters","Blur","brightness","Brightness","contrast","konvaContrast","Contrast","Grayscale","Sepia","Invert","ABSOLUTE_OPACITY","ALL_LISTENERS","ABSOLUTE_TRANSFORM","ABSOLUTE_SCALE","CANVAS","LISTENING","SHAPE","SPACE","STAGE","TRANSFORM","VISIBLE","TRANSFORM_CHANGE_STR","idCounter","Node$1","_id","_allEventListeners","_cache","_attachedDepsListeners","_lastPos","_batchingTransformChange","_needClearTransformCache","_isUnderCache","_dragEventId","_shouldFireChangeEvents","setAttrs","hasChildren","_clearCache","_getCache","privateGetter","cache","_calculate","deps","depsString","_getCanvasCache","_clearSelfAndDescendantCache","clearCache","scene","hit","buffer","_requestDraw","conf","getClientRect","skipTransform","relativeTo","getParent","ceil","drawBorder","hitCanvasPixelRatio","cachedSceneCanvas","cachedFilterCanvas","cachedHitCanvas","sceneContext","hitContext","bufferCanvas","bufferContext","imageSmoothingEnabled","drawScene","drawHit","isCached","_transformedRect","minX","Infinity","minY","maxX","maxY","trans","getAbsoluteTransform","transformed","_drawCachedSceneCanvas","canvasCache","cacheCanvas","_getCachedSceneCanvas","_drawCachedHitCanvas","filters","cachedCanvas","sceneCanvas","filterCanvas","filterContext","useNativeOnly","finalFilter","evtStr","_delegate","baseEvent","_off","stopNode","targets","findAncestors","currentTarget","stopDrag","_remove","_clearCaches","splice","_setChildrenIndices","getAncestors","ancestors","getAttrs","_batchTransformChanges","isListening","_isListening","listening","_isVisible","visible","shouldDrawHit","skipDragCheck","layer","layerUnderDrag","dragSkip","getZIndex","getAbsoluteZIndex","nodes","depth","getDepth","addChildren","getChildren","setPosition","getPosition","getRelativePointerPosition","getPointerPosition","getAbsolutePosition","haveCachedParent","absoluteMatrix","absoluteTransform","setAbsolutePosition","origTrans","_clearTransform","it","_getAbsoluteTransform","_setTransform","offsetX","offsetY","move","change","changeX","changeY","_eachAncestorReverse","family","unshift","theta","moveToTop","moveUp","moveDown","moveToBottom","setZIndex","zIndex","_getAbsoluteOpacity","opacity","newContainer","toObject","defaultValue","nonPlainObject","toJSON","stringify","includeSelf","res","_isMatch","isAncestorOf","findAncestor","selectorArr","hasName","_getStage","eventType","bubble","_fireAndBubble","_fire","at","transformsEnabled","getTransform","getAbsoluteRotation","_getTransform","clone","allListeners","listener","_toKonvaCanvas","box","toCanvas","toImage","reject","toBlob","blob","getSize","getType","getDragDistance","evtName","evtListeners","newVal","addName","oldName","newName","fullName","removeName","names","batchDraw","_setComponentAttr","compareShape","nonBubbling","stopBubble","cancelBubble","_getProtoListeners","getPrototypeOf","hierarchyEvents","topListeners","selfListeners","_createDragElement","ap","_getPointerById","bubbleEvent","newNodePos","dbf","dragBoundFunc","bounded","setDraggable","draggable","_dragChange","_listenDrag","_dragCleanup","hasDraggingChild","dragElement","isReady","isClientRectOnScreen","screenRect","create","_createNode","no","Class","_attrsAffectingSize","rotateDeg","setRotationDeg","getRotationDeg","Container","filterFunc","removeChildren","destroyChildren","_validateAdd","_generalFind","_descendants","valid","shouldStop","getAllIntersections","intersects","can","caching","_drawChildren","drawMethod","clipWidth","clipHeight","clipFunc","hasClip","selfCache","clipArgs","clipX","clipY","hasComposition","selfRect","skipShadow","skipStroke","shapes","hasVisible","Captures","SUPPORT_POINTER_EVENTS","getCapturedShape","createEvent","hasPointerCapture","setPointerCapture","releaseCapture","MOUSELEAVE","MOUSEOVER","MOUSEENTER","MOUSEMOVE","MOUSEDOWN","MOUSEUP","POINTERMOVE","POINTERDOWN","POINTERUP","POINTERCANCEL","POINTEROUT","POINTERLEAVE","POINTEROVER","POINTERENTER","CONTEXTMENU","TOUCHSTART","TOUCHEND","TOUCHMOVE","TOUCHCANCEL","WHEEL","EVENTS","EVENTS_MAP","mouse","pointerclick","pointerdblclick","pointer","getEventType","getEventsMap","checkNoClip","stages","Stage","_pointerPositions","_buildDOM","_bindContentEvents","_resizeDOM","_checkVisibility","isLayer","isFastLayer","throw","setContainer","getElementsByClassName","parentElement","removeChild","appendChild","layers","bufferHitCanvas","getPointersPositions","layerCanvas","getIntersection","rest","PointerEvents.hasPointerCapture","PointerEvents.setPointerCapture","PointerEvents.releaseCapture","getLayers","_pointerenter","pointerenter","_pointerover","pointerover","_getTargetShape","evenType","_pointerleave","targetShape","eventsEnabled","pointerout","pointerleave","pointerPos","_pointerdown","triggeredOnShape","pointerdown","isTouch","_pointermove","isTouchPointer","processedShapesIds","PointerEvents.getCapturedShape","differentTarget","pointermove","_pointerup","clickStartShape","clickEndShape","skipPointerUpTrigger","fireDblClick","pointerup","_contextmenu","_wheel","_pointercancel","PointerEvents.createEvent","_lostpointercapture","contentPosition","_getContentPosition","clientY","_setPointerPosition","userSelect","HAS_SHADOW","SHADOW_RGBA","patternImage","linearGradient","radialGradient","dummyContext","getDummyContext","Shape","getSceneFunc","sceneFunc","getHitFunc","hitFunc","hasShadow","_hasShadow","shadowEnabled","shadowOpacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","__getFillPattern","fillPatternImage","pattern","fillPatternRepeat","fillPatternX","fillPatternY","fillPatternRotation","fillPatternScaleX","fillPatternScaleY","fillPatternOffsetX","fillPatternOffsetY","DOMMatrix","__getLinearGradient","fillLinearGradientColorStops","fillLinearGradientStartPoint","fillLinearGradientEndPoint","__getRadialGradient","fillRadialGradientColorStops","fillRadialGradientStartPoint","fillRadialGradientEndPoint","fillRadialGradientStartRadius","fillRadialGradientEndRadius","_getShadowRGBA","rgba","hasFill","strokeEnabled","strokeLinearGradientColorStops","_useBufferCanvas","forceFill","perfectDrawEnabled","isTransparent","strokeForShadow","shadowForStrokeEnabled","setStrokeHitEnabled","getStrokeHitEnabled","getSelfRect","_centroid","hasCachedParent","fillAndStrokeWidth","fillAndStrokeHeight","applyShadow","preWidth","preHeight","drawFunc","cachingSelf","bc","drawHitFromCache","alphaThreshold","hitWidth","hitHeight","hitImageData","hitData","rgbColorKey","dashArray","getDashArray","setDashArray","getDrawFunc","setDrawFunc","drawHitFunc","getDrawHitFunc","setDrawHitFunc","INTERSECTION_OFFSETS","INTERSECTION_OFFSETS_LEN","Layer","_waitingForDraw","_setSmoothEnabled","createPNGStream","getNativeCanvasElement","getHitCanvas","insertBefore","spiralSearchDistance","continueSearch","intersectionOffset","_getIntersection","antialiased","p3","clearBeforeDraw","enableHitGraph","hitGraphEnabled","disableHitGraph","setHitGraphEnabled","getHitGraphEnabled","toggleHitCanvas","FastLayer","Group","now","performance","Date","getTime","Animation","animIdCounter","frame","time","timeDiff","lastTime","frameRate","setLayers","lays","addLayer","isRunning","animations","stop","_addAnimation","_removeAnimation","_updateFrameObject","anim","_handleAnimation","_runFrames","layerHash","layersLen","needRedraw","_animationLoop","Anim","animRunning","blacklist","duration","easing","onFinish","yoyo","colorAttrs","TweenEngine","propFunc","begin","finish","_pos","_change","prevPos","_time","_position","_startTime","_finish","setTime","reverse","play","getTimer","onEnterFrame","seek","Tween","nodeId","Easings","Linear","tween","_tweenFunc","_addListeners","tweens","_addAttr","onReset","onUpdate","diff","trueEnd","trueStart","endRGBA","tweenId","closed","startRGBA","onPlay","onReverse","onPause","thisId","params","BackEaseIn","BackEaseOut","BackEaseInOut","ElasticEaseIn","asin","pow","ElasticEaseOut","ElasticEaseInOut","BounceEaseOut","BounceEaseIn","BounceEaseInOut","EaseIn","EaseOut","EaseInOut","StrongEaseIn","StrongEaseOut","StrongEaseInOut","Global","Arc","_sceneFunc","clockwise","outerRadius","innerRadius","boundLeftRatio","boundTopRatio","boundBottomRatio","boundLeft","boundTop","boundBottom","getControlPoints","d01","d12","fa","fb","expandPoints","tension","allPoints","cp","Line","bezier","tp","getTensionPoints","_getTensionPoints","_getTensionPointsClosed","firstControlPoints","lastControlPoints","middle","TypedArray","Int8Array","getNumberArrayValidator","tValues","cValues","binomialCoefficients","getCubicArcLength","xs","ys","sum","correctedT","z","BFunc","getQuadraticArcLength","ax","ay","bx","by","A","B","C","k","uuk","bbk","term","log","xbase","getDerivative","ybase","combined","derivative","vs","_vs","t2length","totalLength","step","numIterations","increasedTLength","increasedTError","decreasedTLength","decreasedTError","Path","dataArray","pathLength","_readDataAttribute","parsePathData","getPathLength","ca","command","cx","cy","rx","ry","dTheta","psi","fs","inc","getPointOnEllipticalArc","getPointOnCubicBezier","getLength","getPointAtLength","getPointAtLengthOfDataArray","getLineLength","ii","getPointOnLine","getPointOnQuadraticBezier","P1x","P1y","P2x","P2y","fromX","fromY","run","rise","ix","iy","pRise","pRun","adjustedRun","pct","P3x","P3y","P4x","P4y","CB1","CB2","CB3","CB4","QB1","QB2","QB3","cosPsi","sinPsi","cs","cc","coords","re","arcParamIndex","j","jlen","token","parsedArc","parsed","cmd","startX","startY","prevCmd","ctlPtx","ctlPty","idx","convertEndpointToCenterParameterization","calcLength","psiDeg","xp","yp","lambda","cxp","cyp","vMag","vRatio","vAngle","Arrow","PI2","fromTension","pointerLength","lp","lastLength","atan2","pointerWidth","pointerAtEnding","__fillStroke","pointerAtBeginning","isDashEnabled","lineRect","Circle","Ellipse","Image","_loadListener","props","_removeImageLoad","_setImageLoad","complete","hasCornerRadius","cropWidth","cropHeight","cropX","cropY","_hitFunc","fromURL","onError","onerror","crossOrigin","ATTR_CHANGE_LIST","UP","DOWN","attrChangeListLen","Label","_sync","getText","getTag","pointerDirection","pointerHeight","tag","Tag","Rect","RegularPolygon","_getPoints","PIx2","Ring","Sprite","_updated","updated","frameIndex","_setInterval","ix4","frameOffsets","ix2","_updateIndex","getIndex","setIndex","Star","numPoints","stringToArray","string","char","array","nextChar","INHERIT","JUSTIFY","MIDDLE","NORMAL","NONE","Text","checkDefaultFill","_partialTextX","_partialTextY","_setTextData","textArr","textArrLen","fontSize","lineHeightPx","lineHeight","verticalAlign","alignY","align","totalWidth","letterSpacing","charRenderFunc","textDecoration","shouldUnderline","shouldLineThrough","translateY","baseline","metrics","measureSize","fontBoundingBoxAscent","actualBoundingBoxAscent","fontBoundingBoxDescent","actualBoundingBoxDescent","_getContextFont","lineTranslateX","lineTranslateY","lastLine","lastInParagraph","lineWidth","gradient","strokeStyle","_partialText","spacesNumber","letter","lineIndex","column","isLastInLine","yOffset","setText","getTextWidth","textWidth","getTextHeight","textHeight","_d","_e","_f","_g","_h","_j","_k","_l","font","scaleFactor","actualBoundingBoxLeft","actualBoundingBoxRight","alphabeticBaseline","emHeightAscent","emHeightDescent","hangingBaseline","ideographicBaseline","fontStyle","fontVariant","fontFamily","hasSpace","hasQuotes","_addTextLine","_getTextWidth","lines","fixedWidth","fixedHeight","maxHeightPx","currentHeightPx","wrapAtWord","shouldAddEllipsis","ellipsis","additionalWidth","low","high","matchWidth","mid","substrWidth","lineArray","matchArray","wrapIndex","lastSpaceIndex","lastIndexOf","lastDashIndex","trimRight","_shouldHandleEllipsis","_tryToAddEllipsisToLastLine","trimLeft","hasLine","partialText","TextPath","dummyCanvas","_getTextPathLength","_getPointAtLength","textBaseline","glyphInfo","p0","_getTextSize","charArr","chars","kerningFunc","offsetToGlyph","charStartPoint","glyphWidth","numberOfSpaces","charEndPoint","kern","midpoint","transposeX","transposeY","info","EVENTS_NAME","NODES_RECT","ANGLES","TOUCH_DEVICE","ANCHORS_NAMES","rotateAroundPoint","angleRad","rotateAroundCenter","deltaRad","getCenter","activeTransformersCount","Transformer","_movingAnchorName","_transforming","_createElements","_handleMouseMove","_handleMouseUp","getNode","attachTo","setNode","setNodes","_nodes","_getEventNamespace","detach","filteredNodes","useSingleNodeRotation","onChange","_resetTransformCache","additionalEvents","_proxyDrag","lastPos","otherNode","otherAbs","getNodes","getActiveAnchor","_getNodeRect","__getNodeRect","__getNodeShape","rot","relative","ignoreStroke","absScale","absPos","totalPoints","getX","getY","_createBack","_createAnchor","_handleMouseDown","rotateCursor","rotateAnchorCursor","cursor","anchorName","getCursor","_cursorChange","back","rotateEnabled","rotateLineVisible","rotateAnchorOffset","shouldOverdrawWholeArea","hypotenuse","_anchorDragOffset","newHypotenuse","anchorNode","pp","oldAbs","anchorDragBoundFunc","newAbs","newRotation","tol","rotationSnapTolerance","snappedRot","snaps","newRotationRad","snapped","absDiff","getSnap","rotationSnaps","_fitNodesInto","shiftBehavior","keepProportion","keepRatio","centeredScaling","altKey","comparePoint","reverseX","reverseY","topOffsetX","topOffsetY","bottomOffsetX","bottomOffsetY","_removeEvents","newAttrs","oldAttrs","boundBoxFunc","baseSize","oldTr","newTr","newScaleX","newScaleY","flipEnabled","parentTransform","localTransform","newLocalTransform","_batchChangeChild","enabledAnchors","resizeEnabled","anchorSize","anchors","anchorStroke","anchorStrokeWidth","anchorFill","anchorCornerRadius","borderEnabled","borderStroke","borderStrokeWidth","borderDash","styleFunc","anchorStyleFunc","stopTransform","lineEnabled","rotateHandlerOffset","enabledHandlers","Wedge","BlurStack","getAngleDeg","setAngleDeg","mul_table","shg_table","remap","fromValue","fromMin","fromMax","toMin","toMax","fromRange","toRange","toValue","pixelAt","idata","rgbDistance","Core","pixels","yi","yw","r_sum","g_sum","b_sum","a_sum","r_out_sum","g_out_sum","b_out_sum","a_out_sum","r_in_sum","g_in_sum","b_in_sum","a_in_sum","pg","pb","pa","rbs","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","mul_sum","shg_sum","stackEnd","stackIn","stackOut","filterGaussBlurRGBA","Brighten","adjust","nPixels","Emboss","w","strength01","embossStrength","whiteLevel01","embossWhiteLevel","directionDeg","embossDirection","blend","embossBlend","strength","bias","dirRad","SCALE","Uint8ClampedArray","lum","Float32Array","Gx","Gy","OFF","clamp8","outGray","oTop","oBot","oL","oR","Enhance","nSubPixels","rMin","rMax","gMin","gMax","bMin","bMax","enhanceAmount","enhance","rGoalMax","rGoalMin","gGoalMax","gGoalMin","bGoalMax","bGoalMin","rMid","gMid","bMid","HSL","saturation","hue","luminance","vsu","vsw","rr","rg","rb","gr","gg","gb","bg","bb","HSV","Kaleidoscope","xSize","ySize","xoff","srcPos","dstPos","power","kaleidoscopePower","kaleidoscopeAngle","tempCanvas","scratchData","dst","opt","srcPixels","dstPixels","xMid","polarCenterX","yMid","polarCenterY","rSize","tSize","conversion","ToPolar","minSectionSize","sectionSize","xStart","xEnd","xDelta","FromPolar","Mask","mask","rgbv_no","rgbv_ne","rgbv_so","rgbv_se","thres","mean","pTab","rgbMean","backgroundMask","weights","halfSide","maskResult","so","scy","scx","wt","erodeMask","dilateMask","smoothEdgeMask","applyMask","Noise","amount","noise","half","Pixelate","pixelSize","nBinsX","nBinsY","xBin","yBin","alpha","xBinStart","xBinEnd","yBinStart","yBinEnd","pixelsInBin","Posterize","levels","RGB","RGBA","ia","Solarize","Threshold","level","Z","$t","ne","nw","se","N","north","south","east","west","northeast","northwest","southeast","southwest","up","down","in","out","et","dt","Dt","ut","L","st","SQRT2","H","Pt","At","ft","mapReader","mapRenderer","settings","getRoomEdgePoint","roomShape","roomSize","renderData","renderDataWithColor","lineColor","aDir","bDir","renderTwoWayExitData","renderOneWayExitData","getRoom","customLines","doors","arrows","targetRoomId","getColorValue","env","X","R","D","render","renderWithColor","renderTwoWayExit","renderOneWayExit","renderDoor","renderAreaExit","renderSpecialExits","flatMap","getSpecialExitAreaTargets","specialExits","exits","renderStubs","stubs","getSymbolColor","frameMode","renderInnerExits","It","rooms","labels","createBounds","getRooms","getLabels","getBounds","POSITIVE_INFINITY","NEGATIVE_INFINITY","Y","Width","Height","tt","planes","createPlanes","createExits","getAreaName","areaName","getAreaId","areaId","getVersion","markDirty","getPlane","getPlanes","getZLevels","getFullBounds","getLinkExits","origin","oppositeDir","yt","basePlane","visitedRooms","gt","planeCache","WeakMap","areaRoomIds","getVisitedRoomCount","getTotalRoomCount","hasVisitedRoom","getVisitedRoomIds","addVisitedRoom","addVisitedRooms","G","U","Xt","fromDir","customLineKey","fromRoom","toRoom","toDir","Wt","xt","Yt","Nt","Tt","Ot","mt","room","innerMarkers","Bt","paths","overlayLayer","createStrokedLine","renderInnerExitMarker","renderPath","clearPaths","Ft","Vt","nt","bt","Lt","exitRenderer","getArea","computeBounds","roomId","backgroundColor","gridEnabled","renderGrid","renderLabels","renderLinkExits","renderRooms","overlays","renderPathOverlay","locations","highlights","renderHighlightOverlay","renderPositionMarker","getEffectiveBounds","uniformLevelSize","gridSize","gridColor","gridLineWidth","labelRenderMode","pixMap","BgColor","transparentLabels","labelColor","FgColor","renderExitData","renderSvgLine","renderSvgArrow","renderSvgDoor","emboss","J","roomChar","svgTriangle","innerExitRotation","playerMarker","sizeFactor","fillAlpha","fillColor","strokeColor","strokeAlpha","q","Gt","samples","lastCullingTime","windowSize","setCallback","record","flush","computeFps","cullingMs","gridMs","visibleRooms","totalRooms","visibleExits","fps","K","fe","currentZoom","currentRoomOverlay","roomNodes","centerOnResize","minZoom","standaloneExitNodes","spatialBucketSize","roomSpatialIndex","exitSpatialIndex","visibleStandaloneExitNodes","bufferRoomSet","bufferExitSet","bufferRoomCandidates","bufferExitCandidates","cullingScheduled","perfMonitor","areaExitHitZones","visibleExitDrawData","cachedGridBounds","instantMapMove","highlightCurrentRoom","cullingEnabled","cullingMode","cullingBounds","perfCallback","borders","onResize","gridLayer","linkLayer","roomLayer","positionLayer","pathRenderer","initScaling","scheduleRoomCulling","emitPanEvent","initRoomHitDetection","clientToMapPoint","findRoomAtClientPoint","getBucketKey","findAreaExitAtClientPoint","emitRoomClickEvent","emitAreaExitClickEvent","emitMapClickEvent","emitRoomContextEvent","currentRoomId","centerOnRoom","deltaY","ctrlKey","setZoom","emitZoomChangeEvent","drawArea","currentArea","currentAreaInstance","currentZIndex","currentAreaVersion","clearCurrentRoomOverlay","positionRender","invalidateGridCache","standaloneExitBoundsRoomSize","exitBatchShape","computeSpatialBucketSize","renderExits","renderAreaName","refreshHighlights","updateRoomCulling","exportSvg","export","exportPng","exportPngBlob","forEachBucket","addRoomToSpatialIndex","addStandaloneExitToSpatialIndex","collectRoomCandidates","collectStandaloneExitCandidates","refreshStandaloneExitBoundsIfNeeded","CustomEvent","detail","zoom","getViewportBounds","zoomToCenter","getZoom","getAreaBounds","fitArea","setCullingMode","getCullingMode","getCurrentArea","refreshCurrentRoomOverlay","updateCurrentRoomOverlay","updateBackground","updatePositionMarker","clearPosition","centerOn","centerOnRoomView","renderHighlight","createHighlightShape","removeHighlight","hasHighlight","clearHighlights","currentTransition","renderSymbol","group","syncPerfMonitor","P","O","T","F","V","E","S","M","I","W","createOverlayRoomGroup","drawExitData","renderLabelAsData","getLabelColor","rgbValue","symbolColor","vt","me","areas","areaSources","explorationEnabled","colors","envId","symbolColorValue","getExplorationArea","getAreas","ensureVisitedRooms","applyExplorationDecoration","decorateWithExploration","setVisitedRooms","getVisitedRooms","clearExplorationDecoration","isExplorationEnabled","_t","__esModule","default","rt","kt","Rt","ht","St","ct","Et","lt","Mt","Qt","te","priority","isEmpty","graph","addNode","addVertex","removeNode","cost","avoid","shortestPath","Jt","ee","ie","Ct","oe","pop","pe","_algorithm","adj","maxEdgeDistance","minEdgeWeight","graphDefinition","buildGraph","algorithm","setAlgorithm","findPath","weight","ae","resolveEdgeWeight","exitWeights","exitLocks","mSpecialExitLocks","MAX_SIZE","Preview","pageControls","areaBounds","preview","previewBg","previewPan","init","pngDataUrl","areaW","areaH","aspect","boxW","boxH","backgroundImage","backgroundSize","pageSettings","renderer","clampedLeft","clampedTop","clampedRight","clampedBottom","getOwnPropertySymbols","getOwnPropertyDescriptors","defineProperties","insertAdjacentElement","String","normalize","class","input","feedback","mode","diacritics","highlight","store","selection","results","wrapper","resultItem","getElementsByTagName","HTMLInputElement","HTMLTextAreaElement","query","searchEngine","resultsList","maxResults","noResults","DocumentFragment","role","inside","placeHolder","placeholder","around","dest","destination","debounce","keydown","keyCode","submit","tabSelect","mousedown","unInit","goTo","select","search","instances","npcs","searchFieldSelector","searchField","downloadNpc","async","roomNpc","response","npc","loc","ac","autoComplete","shouldNavigate","Function","form","requestSubmit","aText","bText","localeCompare","newMax","rainbow","pathPick","translator","Translator","location","hostname","defaultLang","catch","translatePageTo","translations","pl","en","urlSearchParams","URLSearchParams","fromEntries","pathname","toHexColor","padStart","storedPosition","controls","reader","selectedRoom","pathFinder","PathFinder","keepZoomLevel","disableKeyBinds","loaded","mapBackground","linesColor","exitsSize","isRound","optimizeDrag","showLabels","defaults","selectRoom","adjustZoomBar","deselectRoom","findRoom","infoBox","saveImageButton","saveSvgImageButton","copyImageButton","zoomButtons","toastContainer","searchModal","findPathForm","findPathModal","helpModal","zoomBar","settingsModal","settingsForm","resetSettingsButton","versions","releaseDescription","versionBadge","languageSelector","currentLanguageFlag","pathBox","areaModal","replaceVersion","selectedOptions","downloadTags","tags","option","tag_name","replaceAll","firstElementChild","saveImage","downloadImage","copyImage","submitSearch","submitPathFind","populateSettings","handleSaveSettings","resetSettings","populateAreaInfo","translatePage","Renderer","history","replaceState","zIdx","renderArea","formData","checked","showToast","currentLanguage","saveSettings","force","previewBounds","previewPng","populateLevelButtons","hideRoomInfo","reRenderAllPaths","genericSetup","levelsSorted","createTextNode","menu","link","areaExits","getAreaExits","targetId","targetArea","roomLink","targetLink","isExitTarget","exitId","destinationRoom","destRoom","populateSelectBox","nameA","nameB","areaElement","Option","inputs","findRooms","areaChanged","firstRoom","existingColor","pathColor","pathLocations","pathSelector","deletePath","onclick","pathData","colorEl","percentage","progressTimeout","showRoomInfo","bgColor","infoExitsGroup","userDataGroup","userData","npcDataGroup","containerList","userDataKey","dataElement","exit","infoExit","exitElement","exitDir","translateDir","areaLink","allSettings","mapTab","setting","allDefaults","pngUrl","svg","encodeURIComponent","ClipboardItem","blobPromise","clipboard","goDirection","directionKey","fullDirection","getKeyByValue","dirs","dirsShortToLong","registerKeyBoard","directionKeys","Numpad1","Numpad2","Numpad3","Numpad4","Numpad6","Numpad7","Numpad8","Numpad9","NumpadMultiply","NumpadDivide","showHelp","showSearch","address","downloadVersion","MapReader","mapData"],"mappings":"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ACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,mBACH,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBAEJ,EACI,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,kBACH,mBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,mBACH,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,kBACA,mBACA,mBACA,oBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,mBACH,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,mBACH,oBACA,mBACA,oBACA,mBACA,oBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,gBACA,iBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,mBACA,oBACA,mBACA,oBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,kBACH,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,mBACA,oBACA,mBACA,oBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,kBACH,mBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,oBAGKC,GAAU,CACnB,GACA,GACA,CAAC,EAAK,GACN,CACI,kBACA,kBACA,mBAEJ,CACI,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,mBAEJ,CACI,iBACA,iBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,gBACA,gBACA,mBACA,mBACA,kBACA,kBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,oBACA,oBACA,oBACA,oBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,mBACA,mBACA,kBACA,mBAEJ,CACI,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,kBACA,oBAGKC,GAAuB,CAAC,CAAC,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAC1DC,GAAoB,CAACC,EAAIC,EA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ACd,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEpEC,GAAY,CACd,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,115]}