{ "version": 3, "sources": ["../../node_modules/aos/dist/aos.js", "../../node_modules/konva/lib/Global.js", "../../node_modules/konva/lib/Util.js", "../../node_modules/konva/lib/Validators.js", "../../node_modules/konva/lib/Factory.js", "../../node_modules/konva/lib/Context.js", "../../node_modules/konva/lib/Canvas.js", "../../node_modules/konva/lib/DragAndDrop.js", "../../node_modules/konva/lib/Node.js", "../../node_modules/konva/lib/Container.js", "../../node_modules/konva/lib/PointerEvents.js", "../../node_modules/konva/lib/Stage.js", "../../node_modules/konva/lib/Shape.js", "../../node_modules/konva/lib/Layer.js", "../../node_modules/konva/lib/FastLayer.js", "../../node_modules/konva/lib/Group.js", "../../node_modules/konva/lib/Animation.js", "../../node_modules/konva/lib/Tween.js", "../../node_modules/konva/lib/_CoreInternals.js", "../../node_modules/konva/lib/shapes/Arc.js", "../../node_modules/konva/lib/shapes/Line.js", "../../node_modules/konva/lib/shapes/Path.js", "../../node_modules/konva/lib/shapes/Arrow.js", "../../node_modules/konva/lib/shapes/Circle.js", "../../node_modules/konva/lib/shapes/Ellipse.js", "../../node_modules/konva/lib/shapes/Image.js", "../../node_modules/konva/lib/shapes/Label.js", "../../node_modules/konva/lib/shapes/Rect.js", "../../node_modules/konva/lib/shapes/RegularPolygon.js", "../../node_modules/konva/lib/shapes/Ring.js", "../../node_modules/konva/lib/shapes/Sprite.js", "../../node_modules/konva/lib/shapes/Star.js", "../../node_modules/konva/lib/shapes/Text.js", "../../node_modules/konva/lib/shapes/TextPath.js", "../../node_modules/konva/lib/shapes/Transformer.js", "../../node_modules/konva/lib/shapes/Wedge.js", "../../node_modules/konva/lib/filters/Blur.js", "../../node_modules/konva/lib/filters/Brighten.js", "../../node_modules/konva/lib/filters/Contrast.js", "../../node_modules/konva/lib/filters/Emboss.js", "../../node_modules/konva/lib/filters/Enhance.js", "../../node_modules/konva/lib/filters/Grayscale.js", "../../node_modules/konva/lib/filters/HSL.js", "../../node_modules/konva/lib/filters/HSV.js", "../../node_modules/konva/lib/filters/Invert.js", "../../node_modules/konva/lib/filters/Kaleidoscope.js", "../../node_modules/konva/lib/filters/Mask.js", "../../node_modules/konva/lib/filters/Noise.js", "../../node_modules/konva/lib/filters/Pixelate.js", "../../node_modules/konva/lib/filters/Posterize.js", "../../node_modules/konva/lib/filters/RGB.js", "../../node_modules/konva/lib/filters/RGBA.js", "../../node_modules/konva/lib/filters/Sepia.js", "../../node_modules/konva/lib/filters/Solarize.js", "../../node_modules/konva/lib/filters/Threshold.js", "../../node_modules/konva/lib/_FullInternals.js", "../../node_modules/konva/lib/index.js", "../../theme/js/browsergallery.mjs", "../../theme/js/cookieconsent.js"], "sourcesContent": ["!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.AOS=t()}(this,function(){\"use strict\";var e=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{},t=\"Expected a function\",n=NaN,o=\"[object Symbol]\",i=/^\\s+|\\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,c=/^0o[0-7]+$/i,s=parseInt,u=\"object\"==typeof e&&e&&e.Object===Object&&e,d=\"object\"==typeof self&&self&&self.Object===Object&&self,l=u||d||Function(\"return this\")(),f=Object.prototype.toString,m=Math.max,p=Math.min,b=function(){return l.Date.now()};function v(e,n,o){var i,a,r,c,s,u,d=0,l=!1,f=!1,v=!0;if(\"function\"!=typeof e)throw new TypeError(t);function y(t){var n=i,o=a;return i=a=void 0,d=t,c=e.apply(o,n)}function h(e){var t=e-u;return void 0===u||t>=n||t<0||f&&e-d>=r}function k(){var e=b();if(h(e))return x(e);s=setTimeout(k,function(e){var t=n-(e-u);return f?p(t,r-(e-d)):t}(e))}function x(e){return s=void 0,v&&i?y(e):(i=a=void 0,c)}function O(){var e=b(),t=h(e);if(i=arguments,a=this,u=e,t){if(void 0===s)return function(e){return d=e,s=setTimeout(k,n),l?y(e):c}(u);if(f)return s=setTimeout(k,n),y(u)}return void 0===s&&(s=setTimeout(k,n)),c}return n=w(n)||0,g(o)&&(l=!!o.leading,r=(f=\"maxWait\"in o)?m(w(o.maxWait)||0,n):r,v=\"trailing\"in o?!!o.trailing:v),O.cancel=function(){void 0!==s&&clearTimeout(s),d=0,i=u=a=s=void 0},O.flush=function(){return void 0===s?c:x(b())},O}function g(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function w(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&f.call(e)==o}(e))return n;if(g(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(i,\"\");var u=r.test(e);return u||c.test(e)?s(e.slice(2),u?2:8):a.test(e)?n:+e}var y=function(e,n,o){var i=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(t);return g(o)&&(i=\"leading\"in o?!!o.leading:i,a=\"trailing\"in o?!!o.trailing:a),v(e,n,{leading:i,maxWait:n,trailing:a})},h=\"Expected a function\",k=NaN,x=\"[object Symbol]\",O=/^\\s+|\\s+$/g,j=/^[-+]0x[0-9a-f]+$/i,E=/^0b[01]+$/i,N=/^0o[0-7]+$/i,z=parseInt,C=\"object\"==typeof e&&e&&e.Object===Object&&e,A=\"object\"==typeof self&&self&&self.Object===Object&&self,q=C||A||Function(\"return this\")(),L=Object.prototype.toString,T=Math.max,M=Math.min,S=function(){return q.Date.now()};function D(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function H(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&L.call(e)==x}(e))return k;if(D(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=D(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(O,\"\");var n=E.test(e);return n||N.test(e)?z(e.slice(2),n?2:8):j.test(e)?k:+e}var $=function(e,t,n){var o,i,a,r,c,s,u=0,d=!1,l=!1,f=!0;if(\"function\"!=typeof e)throw new TypeError(h);function m(t){var n=o,a=i;return o=i=void 0,u=t,r=e.apply(a,n)}function p(e){var n=e-s;return void 0===s||n>=t||n<0||l&&e-u>=a}function b(){var e=S();if(p(e))return v(e);c=setTimeout(b,function(e){var n=t-(e-s);return l?M(n,a-(e-u)):n}(e))}function v(e){return c=void 0,f&&o?m(e):(o=i=void 0,r)}function g(){var e=S(),n=p(e);if(o=arguments,i=this,s=e,n){if(void 0===c)return function(e){return u=e,c=setTimeout(b,t),d?m(e):r}(s);if(l)return c=setTimeout(b,t),m(s)}return void 0===c&&(c=setTimeout(b,t)),r}return t=H(t)||0,D(n)&&(d=!!n.leading,a=(l=\"maxWait\"in n)?T(H(n.maxWait)||0,t):a,f=\"trailing\"in n?!!n.trailing:f),g.cancel=function(){void 0!==c&&clearTimeout(c),u=0,o=s=i=c=void 0},g.flush=function(){return void 0===c?r:v(S())},g},W=function(){};function P(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),n=Array.prototype.slice.call(e.removedNodes);if(function e(t){var n=void 0,o=void 0;for(n=0;n=o.out&&!n.once?a():t>=o.in?e.animated||(function(e,t){t&&t.forEach(function(t){return e.classList.add(t)})}(i,n.animatedClassNames),V(\"aos:in\",i),e.options.id&&V(\"aos:in:\"+e.options.id,i),e.animated=!0):e.animated&&!n.once&&a()}(e,window.pageYOffset)})},Z=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}},ee=function(e,t,n){var o=e.getAttribute(\"data-aos-\"+t);if(void 0!==o){if(\"true\"===o)return!0;if(\"false\"===o)return!1}return o||n},te=function(e,t){return e.forEach(function(e,n){var o=ee(e.node,\"mirror\",t.mirror),i=ee(e.node,\"once\",t.once),a=ee(e.node,\"id\"),r=t.useClassNames&&e.node.getAttribute(\"data-aos\"),c=[t.animatedClassName].concat(r?r.split(\" \"):[]).filter(function(e){return\"string\"==typeof e});t.initClassName&&e.node.classList.add(t.initClassName),e.position={in:function(e,t,n){var o=window.innerHeight,i=ee(e,\"anchor\"),a=ee(e,\"anchor-placement\"),r=Number(ee(e,\"offset\",a?0:t)),c=a||n,s=e;i&&document.querySelectorAll(i)&&(s=document.querySelectorAll(i)[0]);var u=Z(s).top-o;switch(c){case\"top-bottom\":break;case\"center-bottom\":u+=s.offsetHeight/2;break;case\"bottom-bottom\":u+=s.offsetHeight;break;case\"top-center\":u+=o/2;break;case\"center-center\":u+=o/2+s.offsetHeight/2;break;case\"bottom-center\":u+=o/2+s.offsetHeight;break;case\"top-top\":u+=o;break;case\"bottom-top\":u+=o+s.offsetHeight;break;case\"center-top\":u+=o+s.offsetHeight/2}return u+r}(e.node,t.offset,t.anchorPlacement),out:o&&function(e,t){window.innerHeight;var n=ee(e,\"anchor\"),o=ee(e,\"offset\",t),i=e;return n&&document.querySelectorAll(n)&&(i=document.querySelectorAll(n)[0]),Z(i).top+i.offsetHeight-o}(e.node,t.offset)},e.options={once:i,mirror:o,animatedClassNames:c,id:a}}),e},ne=function(){var e=document.querySelectorAll(\"[data-aos]\");return Array.prototype.map.call(e,function(e){return{node:e}})},oe=[],ie=!1,ae={offset:120,delay:0,easing:\"ease\",duration:400,disable:!1,once:!1,mirror:!1,anchorPlacement:\"top-bottom\",startEvent:\"DOMContentLoaded\",animatedClassName:\"aos-animate\",initClassName:\"aos-init\",useClassNames:!1,disableMutationObserver:!1,throttleDelay:99,debounceDelay:50},re=function(){return document.all&&!window.atob},ce=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(ie=!0),ie&&(oe=te(oe,ae),X(oe),window.addEventListener(\"scroll\",y(function(){X(oe,ae.once)},ae.throttleDelay)))},se=function(){if(oe=ne(),de(ae.disable)||re())return ue();ce()},ue=function(){oe.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\"),ae.initClassName&&e.node.classList.remove(ae.initClassName),ae.animatedClassName&&e.node.classList.remove(ae.animatedClassName)})},de=function(e){return!0===e||\"mobile\"===e&&U.mobile()||\"phone\"===e&&U.phone()||\"tablet\"===e&&U.tablet()||\"function\"==typeof e&&!0===e()};return{init:function(e){return ae=I(ae,e),oe=ne(),ae.disableMutationObserver||_.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),ae.disableMutationObserver=!0),ae.disableMutationObserver||_.ready(\"[data-aos]\",se),de(ae.disable)||re()?ue():(document.querySelector(\"body\").setAttribute(\"data-aos-easing\",ae.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",ae.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",ae.delay),-1===[\"DOMContentLoaded\",\"load\"].indexOf(ae.startEvent)?document.addEventListener(ae.startEvent,function(){ce(!0)}):window.addEventListener(\"load\",function(){ce(!0)}),\"DOMContentLoaded\"===ae.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1&&ce(!0),window.addEventListener(\"resize\",$(ce,ae.debounceDelay,!0)),window.addEventListener(\"orientationchange\",$(ce,ae.debounceDelay,!0)),oe)},refresh:ce,refreshHard:se}});\n", "var 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: '8.4.3',\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 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 isDragReady() {\n return !!Konva['DD'].node;\n },\n releaseCanvasOnDestroy: true,\n document: glob.document,\n _injectGlobal(Konva) {\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';\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 var 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 var c = Math.cos(rad);\n var s = Math.sin(rad);\n var m11 = this.m[0] * c + this.m[2] * s;\n var m12 = this.m[1] * c + this.m[3] * s;\n var m21 = this.m[0] * -s + this.m[2] * c;\n var 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 var m11 = this.m[0] + this.m[2] * sy;\n var m12 = this.m[1] + this.m[3] * sy;\n var m21 = this.m[2] + this.m[0] * sx;\n var 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 var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n var 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 var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n var m0 = this.m[3] * d;\n var m1 = -this.m[1] * d;\n var m2 = -this.m[2] * d;\n var m3 = this.m[0] * d;\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n var 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 var a = this.m[0];\n var b = this.m[1];\n var c = this.m[2];\n var d = this.m[3];\n var e = this.m[4];\n var f = this.m[5];\n var delta = a * d - b * c;\n let 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 var 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 var 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}\nvar 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})\\)/, 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 var 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 var canvas = document.createElement('canvas');\n try {\n canvas.style = canvas.style || {};\n }\n catch (e) { }\n return canvas;\n },\n createImageElement() {\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 var 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 var 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 var 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 var 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 var 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 var 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 var 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 var retObj = {};\n for (var 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 (var 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 var x, y, dist;\n var 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 var 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 var pc = Util.cloneObject(pt);\n var dist = Number.MAX_VALUE;\n line.forEach(function (p1, i) {\n if (!isClosed && i === line.length - 1) {\n return;\n }\n var p2 = line[(i + 1) % line.length];\n var proj = Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n var 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 var n, start = [], end = [];\n if (startArray.length > endArray.length) {\n var temp = endArray;\n endArray = startArray;\n startArray = temp;\n }\n for (n = 0; n < startArray.length; n += 2) {\n start.push({\n x: startArray[n],\n y: startArray[n + 1],\n });\n }\n for (n = 0; n < endArray.length; n += 2) {\n end.push({\n x: endArray[n],\n y: endArray[n + 1],\n });\n }\n var newStart = [];\n end.forEach(function (point) {\n var 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 var desc;\n obj.visitedByCircularReferenceRemoval = true;\n for (var 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 (var 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 topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft = topRight = bottomLeft = bottomRight = 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(topLeft, 0);\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n }\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(' +\n noOfElements +\n ')');\n }\n return val;\n };\n }\n}\nexport function getNumberOrAutoValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n var isNumber = Util._isNumber(val);\n var 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 var 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';\nvar GET = 'get', 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 var method = GET + Util._capitalize(attr);\n constructor.prototype[method] =\n constructor.prototype[method] ||\n function () {\n var val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n },\n addSetter(constructor, attr, validator, after) {\n var 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 var 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 var len = components.length, capitalize = Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr), n, component;\n constructor.prototype[getter] = function () {\n var ret = {};\n for (n = 0; n < len; n++) {\n component = components[n];\n ret[component] = this.getAttr(attr + capitalize(component));\n }\n return ret;\n };\n var basicValidator = getComponentValidator(components);\n constructor.prototype[setter] = function (val) {\n var oldVal = this.attrs[attr], key;\n if (validator) {\n val = validator.call(this, val);\n }\n if (basicValidator) {\n basicValidator.call(this, val, attr);\n }\n for (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 var 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 var method = GET + Util._capitalize(attr);\n var 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 var 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 var method = constructor.prototype[newMethodName];\n var oldGetter = GET + Util._capitalize(oldMethodName);\n var 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 { Util } from './Util.js';\nimport { Konva } from './Global.js';\nfunction simplifyArray(arr) {\n var retArr = [], len = arr.length, util = Util, n, val;\n for (n = 0; n < len; n++) {\n 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}\nvar 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 'restore',\n 'rotate',\n 'save',\n 'scale',\n 'setLineDash',\n 'setTransform',\n 'stroke',\n 'strokeText',\n 'transform',\n 'translate',\n];\nvar CONTEXT_PROPERTIES = [\n 'fillStyle',\n 'strokeStyle',\n 'shadowColor',\n 'shadowBlur',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'lineCap',\n 'lineDashOffset',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit',\n 'font',\n 'textAlign',\n 'textBaseline',\n 'globalAlpha',\n 'globalCompositeOperation',\n 'imageSmoothingEnabled',\n];\nconst traceArrMax = 100;\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 var 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 var traceArr = this.traceArr, len;\n traceArr.push(str);\n len = traceArr.length;\n if (len >= traceArrMax) {\n traceArr.shift();\n }\n }\n reset() {\n var 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 var 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 var 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 setAttr(attr, val) {\n this._context[attr] = val;\n }\n arc(a0, a1, a2, a3, a4, a5) {\n this._context.arc(a0, a1, a2, a3, a4, a5);\n }\n arcTo(a0, a1, a2, a3, a4) {\n this._context.arcTo(a0, a1, a2, a3, a4);\n }\n beginPath() {\n this._context.beginPath();\n }\n bezierCurveTo(a0, a1, a2, a3, a4, a5) {\n this._context.bezierCurveTo(a0, a1, a2, a3, a4, a5);\n }\n clearRect(a0, a1, a2, a3) {\n this._context.clearRect(a0, a1, a2, a3);\n }\n clip() {\n this._context.clip();\n }\n closePath() {\n this._context.closePath();\n }\n createImageData(a0, a1) {\n var a = arguments;\n if (a.length === 2) {\n return this._context.createImageData(a0, a1);\n }\n else if (a.length === 1) {\n return this._context.createImageData(a0);\n }\n }\n createLinearGradient(a0, a1, a2, a3) {\n return this._context.createLinearGradient(a0, a1, a2, a3);\n }\n createPattern(a0, a1) {\n return this._context.createPattern(a0, a1);\n }\n createRadialGradient(a0, a1, a2, a3, a4, a5) {\n return this._context.createRadialGradient(a0, a1, a2, a3, a4, a5);\n }\n drawImage(a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n var a = arguments, _context = this._context;\n if (a.length === 3) {\n _context.drawImage(a0, a1, a2);\n }\n else if (a.length === 5) {\n _context.drawImage(a0, a1, a2, a3, a4);\n }\n else if (a.length === 9) {\n _context.drawImage(a0, a1, a2, a3, a4, a5, a6, a7, a8);\n }\n }\n ellipse(a0, a1, a2, a3, a4, a5, a6, a7) {\n this._context.ellipse(a0, a1, a2, a3, a4, a5, a6, a7);\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(path2d) {\n if (path2d) {\n this._context.fill(path2d);\n }\n else {\n this._context.fill();\n }\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(a0, a1, a2, a3) {\n return this._context.getImageData(a0, a1, a2, a3);\n }\n lineTo(a0, a1) {\n this._context.lineTo(a0, a1);\n }\n moveTo(a0, a1) {\n this._context.moveTo(a0, a1);\n }\n rect(a0, a1, a2, a3) {\n this._context.rect(a0, a1, a2, a3);\n }\n putImageData(a0, a1, a2) {\n this._context.putImageData(a0, a1, a2);\n }\n quadraticCurveTo(a0, a1, a2, a3) {\n this._context.quadraticCurveTo(a0, a1, a2, a3);\n }\n restore() {\n this._context.restore();\n }\n rotate(a0) {\n this._context.rotate(a0);\n }\n save() {\n this._context.save();\n }\n scale(a0, a1) {\n this._context.scale(a0, a1);\n }\n setLineDash(a0) {\n if (this._context.setLineDash) {\n this._context.setLineDash(a0);\n }\n else if ('mozDash' in this._context) {\n this._context['mozDash'] = a0;\n }\n else if ('webkitLineDash' in this._context) {\n this._context['webkitLineDash'] = a0;\n }\n }\n getLineDash() {\n return this._context.getLineDash();\n }\n setTransform(a0, a1, a2, a3, a4, a5) {\n this._context.setTransform(a0, a1, a2, a3, a4, a5);\n }\n stroke(path2d) {\n if (path2d) {\n this._context.stroke(path2d);\n }\n else {\n this._context.stroke();\n }\n }\n strokeText(a0, a1, a2, a3) {\n this._context.strokeText(a0, a1, a2, a3);\n }\n transform(a0, a1, a2, a3, a4, a5) {\n this._context.transform(a0, a1, a2, a3, a4, a5);\n }\n translate(a0, a1) {\n this._context.translate(a0, a1);\n }\n _enableTrace() {\n var that = this, len = CONTEXT_METHODS.length, origSetter = this.setAttr, n, args;\n var func = function (methodName) {\n var 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 var prop = arguments[0];\n var 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 var 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) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d');\n }\n _fillColor(shape) {\n var 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 var 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 (var 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 var dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (shape.hasStroke()) {\n if (!strokeScaleEnabled) {\n this.save();\n var 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 var 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 var 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 var pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n var hitStrokeWidth = shape.hitStrokeWidth();\n var 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';\nimport { Factory } from './Factory.js';\nimport { getNumberValidator } from './Validators.js';\nvar _pixelRatio;\nfunction getDevicePixelRatio() {\n if (_pixelRatio) {\n return _pixelRatio;\n }\n var canvas = Util.createCanvasElement();\n var context = canvas.getContext('2d');\n _pixelRatio = (function () {\n var 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 var conf = config || {};\n var 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 var 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 var 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 var 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}\nFactory.addGetterSetter(Canvas, 'pixelRatio', undefined, getNumberValidator());\nexport class SceneCanvas extends Canvas {\n constructor(config = { width: 0, height: 0 }) {\n super(config);\n this.context = new SceneContext(this);\n this.setSize(config.width, config.height);\n }\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 }\n}\n", "import { Konva } from './Global.js';\nimport { Util } from './Util.js';\nexport const DD = {\n get isDragging() {\n var 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 var 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 var dragDistance = node.dragDistance();\n var 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('mousemove', DD._drag);\n window.addEventListener('touchmove', DD._drag);\n window.addEventListener('mouseup', DD._endDragAfter, false);\n window.addEventListener('touchend', DD._endDragAfter, false);\n}\n", "import { Util, Transform } from './Util.js';\nimport { Factory } from './Factory.js';\nimport { SceneCanvas, HitCanvas } from './Canvas.js';\nimport { Konva } from './Global.js';\nimport { DD } from './DragAndDrop.js';\nimport { getNumberValidator, getStringValidator, getBooleanValidator, } from './Validators.js';\nvar 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', 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 var cache = this._cache.get(attr);\n var isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n var 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 } = this._cache.get(CANVAS);\n Util.releaseCanvas(scene, filter, hit);\n this._cache.delete(CANVAS);\n }\n this._clearSelfAndDescendantCache();\n this._requestDraw();\n return this;\n }\n cache(config) {\n var conf = config || {};\n var 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(),\n });\n }\n var 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 width += offset * 2 + 1;\n height += offset * 2 + 1;\n x -= offset;\n y -= offset;\n var 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 }), cachedHitCanvas = new HitCanvas({\n pixelRatio: hitCanvasPixelRatio,\n width: width,\n height: height,\n }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.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 sceneContext.translate(-x, -y);\n hitContext.translate(-x, -y);\n this._isUnderCache = true;\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this.drawScene(cachedSceneCanvas, this);\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 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 var 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 var minX, minY, maxX, maxY;\n var trans = this.getAbsoluteTransform(top);\n points.forEach(function (point) {\n var 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 var cacheCanvas = this._getCachedSceneCanvas();\n var ratio = cacheCanvas.pixelRatio;\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n context.restore();\n }\n _drawCachedHitCanvas(context) {\n var 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 var filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n if (filters) {\n if (!this._filterUpToDate) {\n var ratio = sceneCanvas.pixelRatio;\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\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 !== 'function') {\n Util.error('Filter should be type of function, but got ' +\n typeof filter +\n ' instead. Please check correct filters');\n continue;\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 }\n return filterCanvas;\n }\n return sceneCanvas;\n }\n on(evtStr, handler) {\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (arguments.length === 3) {\n return this._delegate.apply(this, arguments);\n }\n var events = evtStr.split(SPACE), len = events.length, n, event, parts, baseEvent, name;\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 (!this.eventListeners[baseEvent]) {\n this.eventListeners[baseEvent] = [];\n }\n this.eventListeners[baseEvent].push({\n name: name,\n handler: handler,\n });\n }\n return this;\n }\n off(evtStr, callback) {\n var 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 var 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 var stopNode = this;\n this.on(event, function (evt) {\n var targets = evt.target.findAncestors(selector, true, stopNode);\n for (var 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 var 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 var 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 var 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 var 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 var layer = this.getLayer();\n var 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 var dragSkip = !skipDragCheck && !Konva.hitOnDragEnabled && layerUnderDrag;\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 var 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 if (that.nodeType !== UPPER_STAGE) {\n addChildren(that.getStage().getChildren());\n }\n return index;\n }\n getDepth() {\n var 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 if (!this.getStage()) {\n return null;\n }\n var pos = this.getStage().getPointerPosition();\n if (!pos) {\n return null;\n }\n var 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 var 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 var origTrans = this._clearTransform();\n this.attrs.x = origTrans.x;\n this.attrs.y = origTrans.y;\n delete origTrans.x;\n delete origTrans.y;\n this._clearCache(TRANSFORM);\n var 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 var key;\n for (key in trans) {\n this.attrs[key] = trans[key];\n }\n }\n _clearTransform() {\n var 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 var 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 var 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 var 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 var 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 var 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 var 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 var 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 var absOpacity = this.opacity();\n var 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 var obj = {}, attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n obj.attrs = {};\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 obj.className = this.getClassName();\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 var res = [];\n if (includeSelf && this._isMatch(selector)) {\n res.push(this);\n }\n var 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 var 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 var parent = this.getParent();\n return parent ? parent.getLayer() : null;\n }\n getStage() {\n return this._getCache(STAGE, this._getStage);\n }\n _getStage() {\n var parent = this.getParent();\n if (parent) {\n return parent.getStage();\n }\n else {\n return undefined;\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 var at;\n if (top) {\n at = new Transform();\n this._eachAncestorReverse(function (node) {\n var 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 var 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 var 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 var m = this._cache.get(TRANSFORM) || new Transform();\n m.reset();\n var 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 var attrs = Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n for (key in obj) {\n attrs[key] = obj[key];\n }\n var 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 var box = this.getClientRect();\n var 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 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);\n context.restore();\n return canvas;\n }\n toCanvas(config) {\n return this._toKonvaCanvas(config)._canvas;\n }\n toDataURL(config) {\n config = config || {};\n var mimeType = config.mimeType || null, quality = config.quality || null;\n var 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 });\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 var 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 var oldName = this.name();\n var 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 var names = (fullName || '').split(/\\s/g);\n return names.indexOf(name) !== -1;\n }\n removeName(name) {\n var names = (this.name() || '').split(/\\s/g);\n var 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 var 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 var 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 var 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 var shouldStop = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\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 var stopBubble = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\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 let listeners = this._cache.get(ALL_LISTENERS);\n if (!listeners) {\n listeners = {};\n let obj = Object.getPrototypeOf(this);\n while (obj) {\n if (!obj.eventListeners) {\n obj = Object.getPrototypeOf(obj);\n continue;\n }\n for (var event in obj.eventListeners) {\n const newEvents = obj.eventListeners[event];\n const oldEvents = listeners[event] || [];\n listeners[event] = newEvents.concat(oldEvents);\n }\n obj = Object.getPrototypeOf(obj);\n }\n this._cache.set(ALL_LISTENERS, listeners);\n }\n return listeners[eventType];\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 (var 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 (var 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 var pointerId = evt ? evt.pointerId : undefined;\n var stage = this.getStage();\n var ap = this.getAbsolutePosition();\n var 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 var newNodePos = {\n x: pos.x - elem.offset.x,\n y: pos.y - elem.offset.y,\n };\n var 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 var shouldCheckButton = evt.evt['button'] !== undefined;\n var canDrag = !shouldCheckButton || Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n if (!canDrag) {\n return;\n }\n if (this.isDragging()) {\n return;\n }\n var 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 var 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 var 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', null, getNumberValidator());\naddGetterSetter(Node, 'width', 0, getNumberValidator());\naddGetterSetter(Node, 'height', 0, getNumberValidator());\naddGetterSetter(Node, 'listening', true, getBooleanValidator());\naddGetterSetter(Node, 'preventDefault', true, getBooleanValidator());\naddGetterSetter(Node, 'filters', null, 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 if (!filterFunc) {\n return this.children || [];\n }\n const children = this.children || [];\n var results = [];\n children.forEach(function (child) {\n if (filterFunc(child)) {\n results.push(child);\n }\n });\n return results;\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 (var 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 var result = this._generalFind(selector, true);\n return result.length > 0 ? result[0] : undefined;\n }\n _generalFind(selector, findOne) {\n var 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 var 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 var 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 var 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 var arr = [];\n this.find('Shape').forEach(function (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) {\n var layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n var caching = canvas && canvas.isCache;\n if (!this.isVisible() && !caching) {\n return this;\n }\n if (cachedSceneCanvas) {\n context.save();\n var 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);\n }\n return this;\n }\n drawHit(can, top) {\n if (!this.shouldDrawHit(top)) {\n return this;\n }\n var 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 var 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) {\n var _a;\n var context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (clipWidth && clipHeight) || clipFunc;\n const selfCache = top === this;\n if (hasClip) {\n context.save();\n var transform = this.getAbsoluteTransform(top);\n var m = transform.getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n context.beginPath();\n if (clipFunc) {\n clipFunc.call(this, context, this);\n }\n else {\n var clipX = this.clipX();\n var clipY = this.clipY();\n context.rect(clipX, clipY, clipWidth, clipHeight);\n }\n context.clip();\n m = transform.copy().invert().getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n var 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);\n });\n if (hasComposition) {\n context.restore();\n }\n if (hasClip) {\n context.restore();\n }\n }\n getClientRect(config) {\n var _a;\n config = config || {};\n var skipTransform = config.skipTransform;\n var relativeTo = config.relativeTo;\n var minX, minY, maxX, maxY;\n var selfRect = {\n x: Infinity,\n y: Infinity,\n width: 0,\n height: 0,\n };\n var that = this;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n if (!child.visible()) {\n return;\n }\n var 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 var shapes = this.find('Shape');\n var hasVisible = false;\n for (var i = 0; i < shapes.length; i++) {\n var 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';\nvar 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 [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 if (container.charAt(0) === '.') {\n var className = container.slice(1);\n container = document.getElementsByClassName(className)[0];\n }\n else {\n var id;\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 var layers = this.children, len = layers.length, n;\n for (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 var content = this.content;\n if (content && Util._isInDocument(content)) {\n this.container().removeChild(content);\n }\n var 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 var canvas = new SceneCanvas({\n width: config.width,\n height: config.height,\n pixelRatio: config.pixelRatio || 1,\n });\n var _context = canvas.getContext()._context;\n var 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 var 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 var layers = this.children, len = layers.length, end = len - 1, n;\n for (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 var width = this.width();\n var 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 (var i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n super.add(layer);\n var 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 this._fire(events.pointerenter, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n _pointerover(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\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 var targetShape = this._getTargetShape(eventType);\n var eventsEnabled = !DD.isDragging || 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 = undefined;\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 var triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n var shape = this.getIntersection(pos);\n DD.justDragged = false;\n Konva['_' + eventType + 'ListenClick'] = true;\n const hasShape = shape && shape.isListening();\n if (!hasShape) {\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 if (DD.isDragging && DD.node.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n this.setPointersPositions(evt);\n var eventsEnabled = !DD.isDragging || Konva.hitOnDragEnabled;\n if (!eventsEnabled) {\n return;\n }\n var processedShapesIds = {};\n let triggeredOnShape = false;\n var 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 var differentTarget = targetShape !== shape;\n if (differentTarget && targetShape) {\n targetShape._fireAndBubble(events.pointerout, Object.assign({}, event), shape);\n targetShape._fireAndBubble(events.pointerleave, Object.assign({}, 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, Object.assign({}, event), targetShape);\n shape._fireAndBubble(events.pointerenter, Object.assign({}, event), targetShape);\n this[eventType + 'targetShape'] = shape;\n }\n shape._fireAndBubble(events.pointermove, Object.assign({}, 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 var processedShapesIds = {};\n let triggeredOnShape = 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 triggeredOnShape = true;\n this[eventType + 'ClickEndShape'] = shape;\n shape._fireAndBubble(events.pointerup, Object.assign({}, event));\n if (Konva['_' + eventType + 'ListenClick'] &&\n clickStartShape &&\n clickStartShape === shape) {\n shape._fireAndBubble(events.pointerclick, Object.assign({}, event));\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\n shape._fireAndBubble(events.pointerdblclick, Object.assign({}, event));\n }\n }\n }\n else {\n this[eventType + 'ClickEndShape'] = null;\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 (!triggeredOnShape) {\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') {\n evt.preventDefault();\n }\n }\n _contextmenu(evt) {\n this.setPointersPositions(evt);\n var 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 var 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 var contentPosition = this._getContentPosition(), 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 var 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 var 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');\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';\nvar HAS_SHADOW = 'hasShadow';\nvar SHADOW_RGBA = 'shadowRGBA';\nvar patternImage = 'patternImage';\nvar linearGradient = 'linearGradient';\nvar 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 context.fill();\n}\nfunction _strokeFunc(context) {\n context.stroke();\n}\nfunction _fillFuncHit(context) {\n context.fill();\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 var 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 var colorStops = this.fillLinearGradientColorStops();\n if (colorStops) {\n var ctx = getDummyContext();\n var start = this.fillLinearGradientStartPoint();\n var end = this.fillLinearGradientEndPoint();\n var grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n for (var 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 var colorStops = this.fillRadialGradientColorStops();\n if (colorStops) {\n var ctx = getDummyContext();\n var start = this.fillRadialGradientStartPoint();\n var end = this.fillRadialGradientEndPoint();\n var grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n for (var 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 var 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 var stage = this.getStage(), bufferHitCanvas = stage.bufferHitCanvas, p;\n bufferHitCanvas.getContext().clear();\n this.drawHit(bufferHitCanvas, null, true);\n 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 if (!this.getStage()) {\n return false;\n }\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 var 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 const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo;\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) {\n var layer = this.getLayer(), canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow(), stage, bufferCanvas, bufferContext;\n var skipBuffer = canvas.isCache;\n var cachingSelf = top === this;\n if (!this.isVisible() && !cachingSelf) {\n return this;\n }\n if (cachedCanvas) {\n context.save();\n var 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 bufferCanvas = stage.bufferCanvas;\n bufferContext = bufferCanvas.getContext();\n bufferContext.clear();\n bufferContext.save();\n bufferContext._applyLineJoin(this);\n var 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 var ratio = bufferCanvas.pixelRatio;\n if (hasShadow) {\n context._applyShadow(this);\n }\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n context.drawImage(bufferCanvas._canvas, 0, 0, bufferCanvas.width / ratio, bufferCanvas.height / ratio);\n }\n else {\n context._applyLineJoin(this);\n if (!cachingSelf) {\n var 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 var 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 var 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 const selfCache = this === top;\n if (!selfCache) {\n var 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 var cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight(), hitImageData, hitData, len, rgbColorKey, i, alpha;\n hitContext.clear();\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n try {\n hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n hitData = hitImageData.data;\n len = hitData.length;\n rgbColorKey = Util._hexToRgb(this.colorKey);\n for (i = 0; i < len; i += 4) {\n 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, '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.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';\nvar 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 var 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 var 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 var moved = Node.prototype.moveUp.call(this);\n if (!moved) {\n return false;\n }\n var 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 var stage = this.getStage();\n if (stage) {\n var 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 var stage = this.getStage();\n if (stage) {\n var 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 var _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 var 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 var spiralSearchDistance = 1;\n var 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) {\n var 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);\n this._fire(DRAW, {\n node: this,\n });\n return this;\n }\n drawHit(can, top) {\n var 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 var parent = this.parent;\n var 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 var 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';\nvar 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 var lays = [];\n if (!layers) {\n lays = [];\n }\n else if (layers.length > 0) {\n lays = layers;\n }\n else {\n lays = [layers];\n }\n this.layers = lays;\n return this;\n }\n getLayers() {\n return this.layers;\n }\n addLayer(layer) {\n var layers = this.layers, len = layers.length, n;\n for (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 var a = Animation, animations = a.animations, len = animations.length, n;\n for (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 var id = anim.id, animations = this.animations, len = animations.length, n;\n for (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 var layerHash = {}, animations = this.animations, anim, layers, func, n, i, layersLen, layer, key, needRedraw;\n for (n = 0; n < animations.length; n++) {\n anim = animations[n];\n layers = anim.layers;\n func = anim.func;\n anim._updateFrameObject(now());\n layersLen = layers.length;\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 (i = 0; i < layersLen; i++) {\n layer = layers[i];\n if (layer._id !== undefined) {\n layerHash[layer._id] = layer;\n }\n }\n }\n for (key in layerHash) {\n if (!layerHash.hasOwnProperty(key)) {\n continue;\n }\n layerHash[key].batchDraw();\n }\n }\n static _animationLoop() {\n var 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';\nvar blacklist = {\n node: 1,\n duration: 1,\n easing: 1,\n onFinish: 1,\n yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, idCounter = 0, colorAttrs = ['fill', 'stroke', 'shadowColor'];\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 var 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 var 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 var that = this, node = config.node, nodeId = node._id, duration, easing = config.easing || Easings.Linear, yoyo = !!config.yoyo, 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 var 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 var node = this.node, nodeId = node._id, start, diff, tweenId, n, len, trueEnd, trueStart, endRGBA;\n tweenId = Tween.tweens[nodeId][key];\n if (tweenId) {\n delete Tween.attrs[nodeId][tweenId][key];\n }\n 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 (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n diff.push(end[n] - start[n]);\n }\n else {\n var 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 (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 var node = this.node, attrs = Tween.attrs[node._id][this._id], 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 var node = this.node;\n var 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 var node = this.node;\n var 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 var nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId], key;\n this.pause();\n for (key in attrs) {\n delete Tween.tweens[nodeId][key];\n }\n delete Tween.attrs[nodeId][thisId];\n }\n}\nTween.attrs = {};\nTween.tweens = {};\nNode.prototype.to = function (params) {\n var onFinish = params.onFinish;\n params.node = this;\n params.onFinish = function () {\n this.destroy();\n if (onFinish) {\n onFinish();\n }\n };\n var tween = new Tween(params);\n tween.play();\n};\nexport const Easings = {\n BackEaseIn(t, b, c, d) {\n var s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n BackEaseOut(t, b, c, d) {\n var 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 var 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 var 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 var 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 var 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 var 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 = ['innerRadius', 'outerRadius'];\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 { Shape } from '../Shape.js';\nimport { getNumberValidator, getNumberArrayValidator } from '../Validators.js';\nimport { _registerNode } from '../Global.js';\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n var 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 var len = p.length, allPoints = [], n, cp;\n for (n = 2; n < len - 2; n += 2) {\n 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 var points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier(), tp, len, n;\n if (!length) {\n return;\n }\n context.beginPath();\n context.moveTo(points[0], points[1]);\n if (tension !== 0 && length > 4) {\n tp = this.getTensionPoints();\n 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 var 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 var 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 var minX = points[0];\n var maxX = points[0];\n var minY = points[1];\n var maxY = points[1];\n var x, y;\n for (var 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", "import { Factory } from '../Factory.js';\nimport { Shape } from '../Shape.js';\nimport { _registerNode } from '../Global.js';\nexport class Path extends Shape {\n constructor(config) {\n super(config);\n this.dataArray = [];\n this.pathLength = 0;\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = 0;\n for (var i = 0; i < this.dataArray.length; ++i) {\n this.pathLength += this.dataArray[i].pathLength;\n }\n this.on('dataChange.konva', function () {\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = 0;\n for (var i = 0; i < this.dataArray.length; ++i) {\n this.pathLength += this.dataArray[i].pathLength;\n }\n });\n }\n _sceneFunc(context) {\n var ca = this.dataArray;\n context.beginPath();\n var isClosed = false;\n for (var n = 0; n < ca.length; n++) {\n var c = ca[n].command;\n var 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 var 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 var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var 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 var points = [];\n this.dataArray.forEach(function (data) {\n if (data.command === 'A') {\n var start = data.points[4];\n var dTheta = data.points[5];\n var end = data.points[4] + dTheta;\n var 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 var minX = points[0];\n var maxX = points[0];\n var minY = points[1];\n var maxY = points[1];\n var x, y;\n for (var 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 var point, i = 0, ii = this.dataArray.length;\n if (!ii) {\n return null;\n }\n while (i < ii && length > this.dataArray[i].pathLength) {\n length -= this.dataArray[i].pathLength;\n ++i;\n }\n if (i === ii) {\n point = this.dataArray[i - 1].points.slice(-2);\n return {\n x: point[0],\n y: point[1],\n };\n }\n if (length < 0.01) {\n point = this.dataArray[i].points.slice(0, 2);\n return {\n x: point[0],\n y: point[1],\n };\n }\n var cp = this.dataArray[i];\n var 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(length / cp.pathLength, 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(length / cp.pathLength, cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6];\n theta += (dTheta * length) / cp.pathLength;\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n }\n return null;\n }\n static getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n static getPointOnLine(dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n if (fromX === undefined) {\n fromX = P1x;\n }\n if (fromY === undefined) {\n fromY = P1y;\n }\n var m = (P2y - P1y) / (P2x - P1x + 0.00000001);\n var run = Math.sqrt((dist * dist) / (1 + m * m));\n if (P2x < P1x) {\n run *= -1;\n }\n var rise = m * run;\n var pt;\n if (P2x === P1x) {\n pt = {\n x: fromX,\n y: fromY + rise,\n };\n }\n else if ((fromY - P1y) / (fromX - P1x + 0.00000001) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise,\n };\n }\n else {\n var ix, iy;\n var len = this.getLineLength(P1x, P1y, P2x, P2y);\n var u = (fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y);\n u = u / (len * len);\n ix = P1x + u * (P2x - P1x);\n iy = P1y + u * (P2y - P1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt((pRun * pRun) / (1 + m * m));\n if (P2x < P1x) {\n run *= -1;\n }\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise,\n };\n }\n return pt;\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 var x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n var y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return {\n x: x,\n y: y,\n };\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 var x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n var y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return {\n x: x,\n y: y,\n };\n }\n static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n var 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 var cs = data;\n var 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 (var n = 0; n < cc.length; n++) {\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n }\n var arr = cs.split('|');\n var ca = [];\n var coords = [];\n var cpx = 0;\n var cpy = 0;\n var re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n var match;\n for (n = 1; n < arr.length; n++) {\n var str = arr[n];\n var 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 var p = [];\n for (var j = 0, jlen = coords.length; j < jlen; j++) {\n if (coords[j] === '00') {\n p.push(0, 0);\n continue;\n }\n var parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n p.push(parsed);\n }\n else {\n p.push(0);\n }\n }\n while (p.length > 0) {\n if (isNaN(p[0])) {\n break;\n }\n var cmd = null;\n var points = [];\n var startX = cpx, startY = cpy;\n var prevCmd, ctlPtx, ctlPty;\n var 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 var dx = p.shift();\n var 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 (var 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 var len, p1, p2, t;\n var path = Path;\n switch (cmd) {\n case 'L':\n return path.getLineLength(x, y, points[0], points[1]);\n case 'C':\n len = 0.0;\n p1 = path.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = path.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n return len;\n case 'Q':\n len = 0.0;\n p1 = path.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = path.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n return len;\n case 'A':\n len = 0.0;\n var start = points[4];\n var dTheta = points[5];\n var end = points[4] + dTheta;\n var 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 var psi = psiDeg * (Math.PI / 180.0);\n var xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n (Math.cos(psi) * (y1 - y2)) / 2.0;\n var 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 var 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 var cxp = (f * rx * yp) / ry;\n var cyp = (f * -ry * xp) / rx;\n var cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n var vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n };\n var vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n };\n var vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n };\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var 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 var PI2 = Math.PI * 2;\n var points = this.points();\n var tp = points;\n var fromTension = this.tension() !== 0 && points.length > 4;\n if (fromTension) {\n tp = this.getTensionPoints();\n }\n var length = this.pointerLength();\n var n = points.length;\n var 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 var radians = (Math.atan2(dy, dx) + PI2) % PI2;\n var 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 var 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 - offset,\n y: lineRect.y - offset,\n width: lineRect.width + offset * 2,\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 var 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.on('imageChange.konva', () => {\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', () => {\n this._requestDraw();\n });\n }\n }\n _useBufferCanvas() {\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 var 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 var img = Util.createImageElement();\n img.onload = function () {\n var 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';\nvar 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 var that = this, n;\n var 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 var 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 var 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 var 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 var 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 { getNumberValidator } from '../Validators.js';\nimport { _registerNode } from '../Global.js';\nexport class RegularPolygon extends Shape {\n _sceneFunc(context) {\n const points = this._getPoints();\n context.beginPath();\n context.moveTo(points[0].x, points[0].y);\n for (var n = 1; n < points.length; n++) {\n context.lineTo(points[n].x, points[n].y);\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 (var 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 var minX = points[0].x;\n var maxX = points[0].y;\n var minY = points[0].x;\n var 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());\n", "import { Factory } from '../Factory.js';\nimport { Shape } from '../Shape.js';\nimport { getNumberValidator } from '../Validators.js';\nimport { _registerNode } from '../Global.js';\nvar 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 var 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 var 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 var 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 var 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 var offset = offsets[anim];\n var 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 var 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 var 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 var 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 var innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n context.beginPath();\n context.moveTo(0, 0 - outerRadius);\n for (var n = 1; n < numPoints * 2; n++) {\n var radius = n % 2 === 0 ? outerRadius : innerRadius;\n var x = radius * Math.sin((n * Math.PI) / numPoints);\n var 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 { getNumberValidator, getStringValidator, getNumberOrAutoValidator, getBooleanValidator, } from '../Validators.js';\nimport { _registerNode } from '../Global.js';\nexport function stringToArray(string) {\n return Array.from(string);\n}\nvar AUTO = 'auto', CENTER = 'center', 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', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '\u2026', ATTR_CHANGE_LIST = [\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}\nvar 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.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 (var 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 textArr = this.textArr, textArrLen = textArr.length;\n if (!this.text()) {\n return;\n }\n var padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n var translateY = 0;\n var translateY = lineHeightPx / 2;\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', MIDDLE);\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 var lineTranslateX = 0;\n var lineTranslateY = 0;\n var obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph, spacesNumber, oneWord, lineWidth;\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 context.moveTo(lineTranslateX, translateY + lineTranslateY + Math.round(fontSize / 2));\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY + Math.round(fontSize / 2));\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (shouldLineThrough) {\n context.save();\n context.beginPath();\n context.moveTo(lineTranslateX, translateY + lineTranslateY);\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && lastLine && !oneWord\n ? totalWidth - padding * 2\n : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (letterSpacing !== 0 || align === JUSTIFY) {\n spacesNumber = text.split(' ').length - 1;\n var array = stringToArray(text);\n for (var li = 0; li < array.length; li++) {\n var 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 context.fillStrokeShape(this);\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\n }\n }\n else {\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = text;\n context.fillStrokeShape(this);\n }\n context.restore();\n if (textArrLen > 1) {\n translateY += lineHeightPx;\n }\n }\n }\n _hitFunc(context) {\n var 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 var 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 var isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n }\n getHeight() {\n var 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 _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n _context.save();\n _context.font = this._getContextFont();\n metrics = _context.measureText(text);\n _context.restore();\n return {\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 var width = this._getTextWidth(line);\n return this.textArr.push({\n text: line,\n width: width,\n lastInParagraph: false,\n });\n }\n _getTextWidth(text) {\n var letterSpacing = this.letterSpacing();\n var length = text.length;\n return (getDummyContext().measureText(text).width +\n (length ? letterSpacing * (length - 1) : 0));\n }\n _setTextData() {\n var 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 var additionalWidth = shouldAddEllipsis ? this._getTextWidth(ELLIPSIS) : 0;\n for (var i = 0, max = lines.length; i < max; ++i) {\n var line = lines[i];\n var lineWidth = this._getTextWidth(line);\n if (fixedWidth && lineWidth > maxWidth) {\n while (line.length > 0) {\n var low = 0, high = line.length, match = '', matchWidth = 0;\n while (low < high) {\n var mid = (low + high) >>> 1, substr = line.slice(0, mid + 1), substrWidth = this._getTextWidth(substr) + additionalWidth;\n if (substrWidth <= 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 var wrapIndex;\n var nextChar = line[match.length];\n var nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n wrapIndex = match.length;\n }\n else {\n wrapIndex =\n Math.max(match.lastIndexOf(SPACE), match.lastIndexOf(DASH)) +\n 1;\n }\n if (wrapIndex > 0) {\n low = wrapIndex;\n match = match.slice(0, low);\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 var shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n if (shouldHandleEllipsis) {\n this._tryToAddEllipsisToLastLine();\n break;\n }\n line = line.slice(low);\n line = line.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 var 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 var width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n var lastLine = this.textArr[this.textArr.length - 1];\n if (!lastLine || !shouldAddEllipsis) {\n return;\n }\n if (fixedWidth) {\n var 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}\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, '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', '');\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';\nvar 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.dataArray = Path.parsePathData(this.attrs.data);\n this.on('dataChange.konva', function () {\n this.dataArray = Path.parsePathData(this.attrs.data);\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 _sceneFunc(context) {\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', this.textBaseline());\n context.setAttr('textAlign', 'left');\n context.save();\n var textDecoration = this.textDecoration();\n var fill = this.fill();\n var fontSize = this.fontSize();\n var glyphInfo = this.glyphInfo;\n if (textDecoration === 'underline') {\n context.beginPath();\n }\n for (var i = 0; i < glyphInfo.length; i++) {\n context.save();\n var 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 var glyphInfo = this.glyphInfo;\n if (glyphInfo.length >= 1) {\n var p0 = glyphInfo[0].p0;\n context.moveTo(p0.x, p0.y);\n }\n for (var i = 0; i < glyphInfo.length; i++) {\n var 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 var dummyCanvas = this.dummyCanvas;\n var _context = dummyCanvas.getContext('2d');\n _context.save();\n _context.font = this._getContextFont();\n var metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: parseInt(this.attrs.fontSize, 10),\n };\n }\n _setTextData() {\n var that = this;\n var size = this._getTextSize(this.attrs.text);\n var letterSpacing = this.letterSpacing();\n var align = this.align();\n var kerningFunc = this.kerningFunc();\n this.textWidth = size.width;\n this.textHeight = size.height;\n var textFullWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n this.glyphInfo = [];\n var fullPathWidth = 0;\n for (var l = 0; l < that.dataArray.length; l++) {\n if (that.dataArray[l].pathLength > 0) {\n fullPathWidth += that.dataArray[l].pathLength;\n }\n }\n var offset = 0;\n if (align === 'center') {\n offset = Math.max(0, fullPathWidth / 2 - textFullWidth / 2);\n }\n if (align === 'right') {\n offset = Math.max(0, fullPathWidth - textFullWidth);\n }\n var charArr = stringToArray(this.text());\n var spacesNumber = this.text().split(' ').length - 1;\n var p0, p1, pathCmd;\n var pIndex = -1;\n var currentT = 0;\n var getNextPathSegment = function () {\n currentT = 0;\n var pathData = that.dataArray;\n for (var j = pIndex + 1; j < pathData.length; j++) {\n if (pathData[j].pathLength > 0) {\n pIndex = j;\n return pathData[j];\n }\n else if (pathData[j].command === 'M') {\n p0 = {\n x: pathData[j].points[0],\n y: pathData[j].points[1],\n };\n }\n }\n return {};\n };\n var findSegmentToFitCharacter = function (c) {\n var glyphWidth = that._getTextSize(c).width + letterSpacing;\n if (c === ' ' && align === 'justify') {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n var currLen = 0;\n var attempts = 0;\n p1 = undefined;\n while (Math.abs(glyphWidth - currLen) / glyphWidth > 0.01 &&\n attempts < 20) {\n attempts++;\n var cumulativePathLength = currLen;\n while (pathCmd === undefined) {\n pathCmd = getNextPathSegment();\n if (pathCmd &&\n cumulativePathLength + pathCmd.pathLength < glyphWidth) {\n cumulativePathLength += pathCmd.pathLength;\n pathCmd = undefined;\n }\n }\n if (Object.keys(pathCmd).length === 0 || p0 === undefined) {\n return undefined;\n }\n var needNewSegment = false;\n switch (pathCmd.command) {\n case 'L':\n if (Path.getLineLength(p0.x, p0.y, pathCmd.points[0], pathCmd.points[1]) > glyphWidth) {\n p1 = Path.getPointOnLine(glyphWidth, p0.x, p0.y, pathCmd.points[0], pathCmd.points[1], p0.x, p0.y);\n }\n else {\n pathCmd = undefined;\n }\n break;\n case 'A':\n var start = pathCmd.points[4];\n var dTheta = pathCmd.points[5];\n var end = pathCmd.points[4] + dTheta;\n if (currentT === 0) {\n currentT = start + 0.00000001;\n }\n else if (glyphWidth > currLen) {\n currentT += ((Math.PI / 180.0) * dTheta) / Math.abs(dTheta);\n }\n else {\n currentT -= ((Math.PI / 360.0) * dTheta) / Math.abs(dTheta);\n }\n if ((dTheta < 0 && currentT < end) ||\n (dTheta >= 0 && currentT > end)) {\n currentT = end;\n needNewSegment = true;\n }\n p1 = Path.getPointOnEllipticalArc(pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], currentT, pathCmd.points[6]);\n break;\n case 'C':\n if (currentT === 0) {\n if (glyphWidth > pathCmd.pathLength) {\n currentT = 0.00000001;\n }\n else {\n currentT = glyphWidth / pathCmd.pathLength;\n }\n }\n else if (glyphWidth > currLen) {\n currentT += (glyphWidth - currLen) / pathCmd.pathLength / 2;\n }\n else {\n currentT = Math.max(currentT - (currLen - glyphWidth) / pathCmd.pathLength / 2, 0);\n }\n if (currentT > 1.0) {\n currentT = 1.0;\n needNewSegment = true;\n }\n p1 = Path.getPointOnCubicBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], pathCmd.points[4], pathCmd.points[5]);\n break;\n case 'Q':\n if (currentT === 0) {\n currentT = glyphWidth / pathCmd.pathLength;\n }\n else if (glyphWidth > currLen) {\n currentT += (glyphWidth - currLen) / pathCmd.pathLength;\n }\n else {\n currentT -= (currLen - glyphWidth) / pathCmd.pathLength;\n }\n if (currentT > 1.0) {\n currentT = 1.0;\n needNewSegment = true;\n }\n p1 = Path.getPointOnQuadraticBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3]);\n break;\n }\n if (p1 !== undefined) {\n currLen = Path.getLineLength(p0.x, p0.y, p1.x, p1.y);\n }\n if (needNewSegment) {\n needNewSegment = false;\n pathCmd = undefined;\n }\n }\n };\n var testChar = 'C';\n var glyphWidth = that._getTextSize(testChar).width + letterSpacing;\n var lettersInOffset = offset / glyphWidth - 1;\n for (var k = 0; k < lettersInOffset; k++) {\n findSegmentToFitCharacter(testChar);\n if (p0 === undefined || p1 === undefined) {\n break;\n }\n p0 = p1;\n }\n for (var i = 0; i < charArr.length; i++) {\n findSegmentToFitCharacter(charArr[i]);\n if (p0 === undefined || p1 === undefined) {\n break;\n }\n var width = Path.getLineLength(p0.x, p0.y, p1.x, p1.y);\n var kern = 0;\n if (kerningFunc) {\n try {\n kern = kerningFunc(charArr[i - 1], charArr[i]) * this.fontSize();\n }\n catch (e) {\n kern = 0;\n }\n }\n p0.x += kern;\n p1.x += kern;\n this.textWidth += kern;\n var midpoint = Path.getPointOnLine(kern + width / 2.0, p0.x, p0.y, p1.x, p1.y);\n var rotation = Math.atan2(p1.y - p0.y, p1.x - p0.x);\n this.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: charArr[i],\n rotation: rotation,\n p0: p0,\n p1: p1,\n });\n p0 = p1;\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 var 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 var minX = points[0] || 0;\n var maxX = points[0] || 0;\n var minY = points[1] || 0;\n var maxY = points[1] || 0;\n var x, y;\n for (var 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 var 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', null);\nFactory.addGetterSetter(TextPath, 'kerningFunc', null);\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';\nvar EVENTS_NAME = 'tr-konva';\nvar 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]\n .map((e) => e + `.${EVENTS_NAME}`)\n .join(' ');\nvar NODES_RECT = 'nodesRect';\nvar 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];\nvar 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) {\n if (anchorName === 'rotater') {\n return 'crosshair';\n }\n rad += Util.degToRad(ANGLES[anchorName] || 0);\n var 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}\nvar 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];\nvar 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 Object.assign(Object.assign({}, shape), { rotation: shape.rotation + angleRad, x,\n y });\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}\nexport class Transformer extends Group {\n constructor(config) {\n super(config);\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 const additionalEvents = node._attrsAffectingSize\n .map((prop) => prop + 'Change.' + this._getEventNamespace())\n .join(' ');\n node.on(additionalEvents, onChange);\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 var 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 var rect = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n var absScale = node.getAbsoluteScale(relative);\n var absPos = node.getAbsolutePosition(relative);\n var dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n var 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 var 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 var 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 var trans = node.getAbsoluteTransform();\n points.forEach(function (point) {\n var transformed = trans.point(point);\n totalPoints.push(transformed);\n });\n });\n const tr = new Transform();\n tr.rotate(-Konva.getAngle(this.rotation()));\n var minX, minY, maxX, maxY;\n totalPoints.forEach(function (point) {\n var 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(function (name) {\n this._createAnchor(name);\n }.bind(this));\n this._createAnchor('rotater');\n }\n _createAnchor(name) {\n var 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 var 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 var rad = Konva.getAngle(this.rotation());\n var cursor = getCursor(name, rad);\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 var back = new Shape({\n name: 'back',\n width: 0,\n height: 0,\n draggable: true,\n sceneFunc(ctx) {\n var tr = this.getParent();\n var padding = tr.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, this.width() + padding * 2, this.height() + padding * 2);\n ctx.moveTo(this.width() / 2, -padding);\n if (tr.rotateEnabled()) {\n ctx.lineTo(this.width() / 2, -tr.rotateAnchorOffset() * Util._sign(this.height()) - padding);\n }\n ctx.fillStrokeShape(this);\n },\n hitFunc: (ctx, shape) => {\n if (!this.shouldOverdrawWholeArea()) {\n return;\n }\n var 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 this._movingAnchorName = e.target.name().split(' ')[0];\n var attrs = this._getNodeRect();\n var width = attrs.width;\n var height = attrs.height;\n var 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 var ap = e.target.getAbsolutePosition();\n var pos = e.target.getStage().getPointerPosition();\n this._anchorDragOffset = {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n };\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 var x, y, newHypotenuse;\n var anchorNode = this.findOne('.' + this._movingAnchorName);\n var 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 var 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 var 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 var keepProportion = this.keepRatio() || e.shiftKey;\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n var 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 var reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n var 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 var 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 var reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n var 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 var 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 var reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n var 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 var 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 var reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n var 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 var centeredScaling = this.centeredScaling() || e.altKey;\n if (centeredScaling) {\n var topLeft = this.findOne('.top-left');\n var bottomRight = this.findOne('.bottom-right');\n var topOffsetX = topLeft.x();\n var topOffsetY = topLeft.y();\n var bottomOffsetX = this.getWidth() - bottomRight.x();\n var 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 var absPos = this.findOne('.top-left').getAbsolutePosition();\n x = absPos.x;\n y = absPos.y;\n var width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n var 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 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 var node = this.getNode();\n this._fire('transformend', { evt: e, target: node });\n if (node) {\n this._nodes.forEach((target) => {\n target._fire('transformend', { evt: e, target });\n });\n }\n this._movingAnchorName = null;\n }\n }\n _fitNodesInto(newAttrs, evt) {\n var 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 allowNegativeScale = this.flipEnabled();\n var 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 if (!allowNegativeScale) {\n this.update();\n return;\n }\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 if (!allowNegativeScale) {\n this.update();\n return;\n }\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 if (!allowNegativeScale) {\n this.update();\n return;\n }\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 if (!allowNegativeScale) {\n this.update();\n return;\n }\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 newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.scale(newAttrs.width / baseSize, newAttrs.height / baseSize);\n const delta = newTr.multiply(oldTr.invert());\n this._nodes.forEach((node) => {\n var _a;\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 this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n this.rotation(Util._getRotation(newAttrs.rotation));\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 var attrs = this._getNodeRect();\n this.rotation(Util._getRotation(attrs.rotation));\n var width = attrs.width;\n var height = attrs.height;\n var enabledAnchors = this.enabledAnchors();\n var resizeEnabled = this.resizeEnabled();\n var padding = this.padding();\n var anchorSize = this.anchorSize();\n this.find('._anchor').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 x: 0,\n y: 0,\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 var 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 var 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}\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, 'rotationSnaps', []);\nFactory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, getNumberValidator());\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, 'centeredScaling', false);\nFactory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory.addGetterSetter(Transformer, 'padding', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'node');\nFactory.addGetterSetter(Transformer, 'nodes');\nFactory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\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}\nvar mul_table = [\n 512,\n 512,\n 456,\n 512,\n 328,\n 456,\n 335,\n 512,\n 405,\n 328,\n 271,\n 456,\n 388,\n 335,\n 292,\n 512,\n 454,\n 405,\n 364,\n 328,\n 298,\n 271,\n 496,\n 456,\n 420,\n 388,\n 360,\n 335,\n 312,\n 292,\n 273,\n 512,\n 482,\n 454,\n 428,\n 405,\n 383,\n 364,\n 345,\n 328,\n 312,\n 298,\n 284,\n 271,\n 259,\n 496,\n 475,\n 456,\n 437,\n 420,\n 404,\n 388,\n 374,\n 360,\n 347,\n 335,\n 323,\n 312,\n 302,\n 292,\n 282,\n 273,\n 265,\n 512,\n 497,\n 482,\n 468,\n 454,\n 441,\n 428,\n 417,\n 405,\n 394,\n 383,\n 373,\n 364,\n 354,\n 345,\n 337,\n 328,\n 320,\n 312,\n 305,\n 298,\n 291,\n 284,\n 278,\n 271,\n 265,\n 259,\n 507,\n 496,\n 485,\n 475,\n 465,\n 456,\n 446,\n 437,\n 428,\n 420,\n 412,\n 404,\n 396,\n 388,\n 381,\n 374,\n 367,\n 360,\n 354,\n 347,\n 341,\n 335,\n 329,\n 323,\n 318,\n 312,\n 307,\n 302,\n 297,\n 292,\n 287,\n 282,\n 278,\n 273,\n 269,\n 265,\n 261,\n 512,\n 505,\n 497,\n 489,\n 482,\n 475,\n 468,\n 461,\n 454,\n 447,\n 441,\n 435,\n 428,\n 422,\n 417,\n 411,\n 405,\n 399,\n 394,\n 389,\n 383,\n 378,\n 373,\n 368,\n 364,\n 359,\n 354,\n 350,\n 345,\n 341,\n 337,\n 332,\n 328,\n 324,\n 320,\n 316,\n 312,\n 309,\n 305,\n 301,\n 298,\n 294,\n 291,\n 287,\n 284,\n 281,\n 278,\n 274,\n 271,\n 268,\n 265,\n 262,\n 259,\n 257,\n 507,\n 501,\n 496,\n 491,\n 485,\n 480,\n 475,\n 470,\n 465,\n 460,\n 456,\n 451,\n 446,\n 442,\n 437,\n 433,\n 428,\n 424,\n 420,\n 416,\n 412,\n 408,\n 404,\n 400,\n 396,\n 392,\n 388,\n 385,\n 381,\n 377,\n 374,\n 370,\n 367,\n 363,\n 360,\n 357,\n 354,\n 350,\n 347,\n 344,\n 341,\n 338,\n 335,\n 332,\n 329,\n 326,\n 323,\n 320,\n 318,\n 315,\n 312,\n 310,\n 307,\n 304,\n 302,\n 299,\n 297,\n 294,\n 292,\n 289,\n 287,\n 285,\n 282,\n 280,\n 278,\n 275,\n 273,\n 271,\n 269,\n 267,\n 265,\n 263,\n 261,\n 259,\n];\nvar shg_table = [\n 9,\n 11,\n 12,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15,\n 15,\n 15,\n 16,\n 16,\n 16,\n 16,\n 17,\n 17,\n 17,\n 17,\n 17,\n 17,\n 17,\n 18,\n 18,\n 18,\n 18,\n 18,\n 18,\n 18,\n 18,\n 18,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n var pixels = imageData.data, width = imageData.width, height = imageData.height;\n var x, y, i, p, yp, 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 var div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), stackEnd = null, stack = stackStart, stackIn = null, stackOut = null, mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n for (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 (y = 0; y < height; y++) {\n r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 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 (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 (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 (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 (x = 0; x < width; x++) {\n g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 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 (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 yp = width;\n for (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 (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 var 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 var brightness = this.brightness() * 255, data = imageData.data, len = data.length, i;\n for (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 var adjust = Math.pow((this.contrast() + 100) / 100, 2);\n var data = imageData.data, nPixels = data.length, red = 150, green = 150, blue = 150, i;\n for (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 { Util } from '../Util.js';\nimport { getNumberValidator } from '../Validators.js';\nexport const Emboss = function (imageData) {\n var strength = this.embossStrength() * 10, greyLevel = this.embossWhiteLevel() * 255, direction = this.embossDirection(), blend = this.embossBlend(), dirY = 0, dirX = 0, data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n switch (direction) {\n case 'top-left':\n dirY = -1;\n dirX = -1;\n break;\n case 'top':\n dirY = -1;\n dirX = 0;\n break;\n case 'top-right':\n dirY = -1;\n dirX = 1;\n break;\n case 'right':\n dirY = 0;\n dirX = 1;\n break;\n case 'bottom-right':\n dirY = 1;\n dirX = 1;\n break;\n case 'bottom':\n dirY = 1;\n dirX = 0;\n break;\n case 'bottom-left':\n dirY = 1;\n dirX = -1;\n break;\n case 'left':\n dirY = 0;\n dirX = -1;\n break;\n default:\n Util.error('Unknown emboss direction: ' + direction);\n }\n do {\n var offsetY = (y - 1) * w4;\n var otherY = dirY;\n if (y + otherY < 1) {\n otherY = 0;\n }\n if (y + otherY > h) {\n otherY = 0;\n }\n var offsetYOther = (y - 1 + otherY) * w * 4;\n var x = w;\n do {\n var offset = offsetY + (x - 1) * 4;\n var otherX = dirX;\n if (x + otherX < 1) {\n otherX = 0;\n }\n if (x + otherX > w) {\n otherX = 0;\n }\n var offsetOther = offsetYOther + (x - 1 + otherX) * 4;\n var dR = data[offset] - data[offsetOther];\n var dG = data[offset + 1] - data[offsetOther + 1];\n var dB = data[offset + 2] - data[offsetOther + 2];\n var dif = dR;\n var absDif = dif > 0 ? dif : -dif;\n var absG = dG > 0 ? dG : -dG;\n var absB = dB > 0 ? dB : -dB;\n if (absG > absDif) {\n dif = dG;\n }\n if (absB > absDif) {\n dif = dB;\n }\n dif *= strength;\n if (blend) {\n var r = data[offset] + dif;\n var g = data[offset + 1] + dif;\n var b = data[offset + 2] + dif;\n data[offset] = r > 255 ? 255 : r < 0 ? 0 : r;\n data[offset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;\n data[offset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;\n }\n else {\n var grey = greyLevel - dif;\n if (grey < 0) {\n grey = 0;\n }\n else if (grey > 255) {\n grey = 255;\n }\n data[offset] = data[offset + 1] = data[offset + 2] = grey;\n }\n } while (--x);\n } while (--y);\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', null, Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossBlend', false, null, 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 var fromRange = fromMax - fromMin, toRange = toMax - toMin, toValue;\n if (fromRange === 0) {\n return toMin + toRange / 2;\n }\n if (toRange === 0) {\n return toMin;\n }\n toValue = (fromValue - fromMin) / fromRange;\n toValue = toRange * toValue + toMin;\n return toValue;\n}\nexport const Enhance = function (imageData) {\n var data = imageData.data, nSubPixels = data.length, rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b, i;\n var enhanceAmount = this.enhance();\n if (enhanceAmount === 0) {\n return;\n }\n for (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 var rMid, rGoalMax, rGoalMin, gMid, gGoalMax, gGoalMin, bMid, 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 rMid = (rMax + rMin) * 0.5;\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n gMid = (gMax + gMin) * 0.5;\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n bMid = (bMax + bMin) * 0.5;\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n }\n for (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", "export const Grayscale = function (imageData) {\n var data = imageData.data, len = data.length, i, brightness;\n for (i = 0; i < len; i += 4) {\n 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", "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 var 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, i;\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n var 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 var 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 var 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 var r, g, b, a;\n for (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 var 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, i;\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n var 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 var 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 var 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 var r, g, b, a;\n for (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;\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", "export const Invert = function (imageData) {\n var data = imageData.data, len = data.length, i;\n for (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", "import { Factory } from '../Factory.js';\nimport { Node } from '../Node.js';\nimport { Util } from '../Util.js';\nimport { getNumberValidator } from '../Validators.js';\nvar ToPolar = function (src, dst, opt) {\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, r = 0, g = 0, b = 0, a = 0;\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n x = xSize - xMid;\n y = ySize - yMid;\n rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n var rSize = ySize, tSize = xSize, radius, theta;\n var conversion = ((360 / tSize) * Math.PI) / 180, sin, cos;\n for (theta = 0; theta < tSize; theta += 1) {\n sin = Math.sin(theta * conversion);\n cos = Math.cos(theta * conversion);\n for (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 i = (y * xSize + x) * 4;\n r = srcPixels[i + 0];\n g = srcPixels[i + 1];\n b = srcPixels[i + 2];\n 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};\nvar FromPolar = function (src, dst, opt) {\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, dx, dy, r = 0, g = 0, b = 0, a = 0;\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n x = xSize - xMid;\n y = ySize - yMid;\n rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n var rSize = ySize, tSize = xSize, radius, theta, phaseShift = opt.polarRotation || 0;\n var x1, y1;\n for (x = 0; x < xSize; x += 1) {\n for (y = 0; y < ySize; y += 1) {\n dx = x - xMid;\n dy = y - yMid;\n radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n 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 i = (y1 * xSize + x1) * 4;\n r = srcPixels[i + 0];\n g = srcPixels[i + 1];\n b = srcPixels[i + 2];\n 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 var xSize = imageData.width, ySize = imageData.height;\n var x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n var power = Math.round(this.kaleidoscopePower());\n var angle = Math.round(this.kaleidoscopeAngle());\n var offset = Math.floor((xSize * (angle % 360)) / 360);\n if (power < 1) {\n return;\n }\n var tempCanvas = Util.createCanvasElement();\n tempCanvas.width = xSize;\n tempCanvas.height = ySize;\n var 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 var minSectionSize = xSize / Math.pow(2, power);\n while (minSectionSize <= 8) {\n minSectionSize = minSectionSize * 2;\n power -= 1;\n }\n minSectionSize = Math.ceil(minSectionSize);\n var sectionSize = minSectionSize;\n var 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';\nfunction pixelAt(idata, x, y) {\n var idx = (y * idata.width + x) * 4;\n var 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 var m = [0, 0, 0];\n for (var 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 var rgbv_no = pixelAt(idata, 0, 0);\n var rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n var rgbv_so = pixelAt(idata, 0, idata.height - 1);\n var rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n var 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 var mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n var mask = [];\n for (var i = 0; i < idata.width * idata.height; i++) {\n var 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 (var i = 0; i < idata.width * idata.height; i++) {\n idata.data[4 * i + 3] = mask[i];\n }\n}\nfunction erodeMask(mask, sw, sh) {\n var weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var 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 var weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var 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 var weights = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var 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 var threshold = this.threshold(), 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 { getNumberValidator } from '../Validators.js';\nexport const Noise = function (imageData) {\n var amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2, i;\n for (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 var pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, x, y, i, red, green, blue, alpha, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), xBinStart, xBinEnd, yBinStart, yBinEnd, xBin, yBin, pixelsInBin, data = imageData.data;\n if (pixelSize <= 0) {\n Util.error('pixelSize value can not be <= 0');\n return;\n }\n for (xBin = 0; xBin < nBinsX; xBin += 1) {\n for (yBin = 0; yBin < nBinsY; yBin += 1) {\n red = 0;\n green = 0;\n blue = 0;\n alpha = 0;\n xBinStart = xBin * pixelSize;\n xBinEnd = xBinStart + pixelSize;\n yBinStart = yBin * pixelSize;\n yBinEnd = yBinStart + pixelSize;\n pixelsInBin = 0;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n 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 (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n 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 var levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels, i;\n for (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 var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), i, brightness;\n for (i = 0; i < nPixels; i += 4) {\n brightness =\n (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 var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha(), i, ia;\n for (i = 0; i < nPixels; i += 4) {\n 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", "export const Sepia = function (imageData) {\n var data = imageData.data, nPixels = data.length, i, r, g, b;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n 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 var data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n do {\n var offsetY = (y - 1) * w4;\n var x = w;\n do {\n var offset = offsetY + (x - 1) * 4;\n var r = data[offset];\n var g = data[offset + 1];\n var b = data[offset + 2];\n if (r > 127) {\n r = 255 - r;\n }\n if (g > 127) {\n g = 255 - g;\n }\n if (b > 127) {\n b = 255 - b;\n }\n data[offset] = r;\n data[offset + 1] = g;\n data[offset + 2] = b;\n } while (--x);\n } while (--y);\n};\n", "import { Factory } from '../Factory.js';\nimport { Node } from '../Node.js';\nimport { getNumberValidator } from '../Validators.js';\nexport const Threshold = function (imageData) {\n var level = this.threshold() * 255, data = imageData.data, len = data.length, i;\n for (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 { 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 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", "import { Konva } from './_FullInternals.js';\nexport default Konva;\n", "import Konva from \"konva\";\n// import LazyLoad from \"vanilla-lazyload\";\nimport AOS from 'aos';\nimport \"./cookieconsent.js\";\n// import * as Turbo from './turbo.es2017-umd.js';\n\nconst applyAddedPdfsToOverview = () => {\n const overview = document.querySelector(\"#overview\");\n if (!overview) {\n console.warn(\"#overview not found\");\n }\n // TODO: implement PDF\n // return;\n fetch(overview.getAttribute(\"data-status-url\")).then((res) => {\n res.text().then((commaseparatedIDs) => {\n const ids = commaseparatedIDs.split(\",\");\n const count = ids.length && ids[0] ? ids.length : 0;\n document.querySelector(\".downloadPDF .pdfPicturesCount\").textContent =\n String(count);\n document.querySelectorAll(`#galleries li`).forEach((el) => {\n if (ids.includes(el.getAttribute(\"data-id\"))) {\n el.classList.add(\"isInContactsheet\");\n el.querySelector(\".toggleToPDF\").classList.add(\"added\");\n } else {\n el.classList.remove(\"isInContactsheet\");\n el.querySelector(\".toggleToPDF\").classList.remove(\"added\");\n }\n });\n });\n });\n};\n\nconst keyboardArrowEvents = (document) => {\n document.addEventListener(\"keydown\", (event) => {\n const keyPressed =\n event.keyCode === 37 ? \"left\" : event.keyCode === 39 ? \"right\" : null;\n if (keyPressed === \"right\") {\n document.getElementById(\"goNext\").click();\n }\n if (keyPressed === \"left\") {\n document.getElementById(\"goPrev\").click();\n }\n });\n};\n\nconst getCurrentPicture = (document) =>\n document.querySelector(\"#galleries li.current\");\n\nconst loadCurrentImage = (document, doNotReloadPicture = false) => {\n const currentPicture = getCurrentPicture(document);\n const body = document.querySelector(\"body\");\n // clear all previous class names\n [\n \"topLeftBright\",\n \"topRightBright\",\n \"bottomLeftBright\",\n \"bottomRightBright\"\n ].forEach((className) => {\n body.classList.remove(className);\n });\n\n function preloadPreviousAndNextImage() {\n let picturesToLoad = [];\n if (currentPicture.previousElementSibling) {\n picturesToLoad.push(currentPicture.previousElementSibling);\n // (new Image()).src = currentPicture.previousElementSibling.dataset.url;\n } else {\n picturesToLoad.push(currentPicture.parentElement.lastElementChild);\n }\n if (currentPicture.nextElementSibling) {\n picturesToLoad.push(currentPicture.nextElementSibling);\n // (new Image()).src = currentPicture.nextElementSibling.dataset.url;\n } else {\n picturesToLoad.push(currentPicture.parentElement.firstElementChild);\n }\n // load surrounding images\n picturesToLoad.forEach((picture) => {\n if (!picture) {\n return;\n }\n let image = new Image();\n image.srcset = picture.dataset.srcset;\n image.src = picture.dataset.url;\n });\n }\n\n preloadPreviousAndNextImage();\n\n const pictureContainer = document.querySelector(\"#currentPictures\");\n const fullSizeUrl = currentPicture.getAttribute(\"data-url\");\n const smallSizeUrl = currentPicture.getAttribute(\"data-small-preview-url\");\n const picture = document.querySelector(\"#currentPictures > .picture.current\");\n const preloadedPicture = document.querySelector(\n \"#currentPictures > .picture.preloaded\"\n );\n\n if (!doNotReloadPicture) {\n // just remove the blurry image for a nicer fade\n preloadedPicture.style[\"backgroundImage\"] = null;\n preloadedPicture.style[\"--image-url\"] = null;\n pictureContainer.classList.add(\"loading\");\n setTimeout(() => {\n preloadedPicture.style[\"backgroundImage\"] = \"url(\" + smallSizeUrl + \")\";\n preloadedPicture.style[\"--image-url\"] = \"url(\" + smallSizeUrl + \")\";\n pictureContainer.classList.remove(\"loading\");\n picture.style[\"backgroundImage\"] = \"url(\" + fullSizeUrl + \")\";\n picture.style[\"--image-url\"] = \"url(\" + fullSizeUrl + \")\";\n }, 400);\n }\n\n const darkLightThreshold = 120;\n const isAboveThreshold = (x, y, layer) => {\n let {data} = layer.getCanvas().getContext(\"2d\").getImageData(x, y, 1, 1);\n return data[0] >= darkLightThreshold;\n };\n\n Konva.Image.fromURL(currentPicture.dataset.smallPreviewUrl, function (image) {\n let pixelSize = image.width() / 1.5;\n\n image.cache();\n image.filters([Konva.Filters.Pixelate, Konva.Filters.Grayscale]);\n image.pixelSize(pixelSize);\n\n var layer = new Konva.Layer();\n layer.add(image);\n\n var stage = new Konva.Stage({\n container: \"#tmpCanvas\",\n // container: '#currentPictures',\n width: image.width(),\n height: image.height()\n });\n stage.add(layer);\n layer.batchDraw();\n\n let pixelRatio = layer.getCanvas().pixelRatio;\n\n let map = [\n [1, 1],\n [image.width() * pixelRatio - 1, 1],\n [1, image.height() * pixelRatio - 1],\n [image.width() * pixelRatio - 1, image.height() * pixelRatio - 1]\n ];\n\n let thresholds = [\n isAboveThreshold(map[0][0], map[0][1], layer),\n isAboveThreshold(map[1][0], map[1][1], layer),\n isAboveThreshold(map[2][0], map[2][1], layer),\n isAboveThreshold(map[3][0], map[3][1], layer)\n ];\n\n if (thresholds[0]) {\n body.classList.add(\"topLeftBright\");\n }\n if (thresholds[1]) {\n body.classList.add(\"topRightBright\");\n }\n if (thresholds[2]) {\n body.classList.add(\"bottomLeftBright\");\n }\n if (thresholds[3]) {\n body.classList.add(\"bottomRightBright\");\n }\n });\n\n document.querySelector(\"#leftContent\").innerText =\n currentPicture.getAttribute(\"data-left-content\");\n document.querySelector(\"#rightContent\").innerText =\n currentPicture.getAttribute(\"data-right-content\");\n\n // history url\n if (!doNotReloadPicture) {\n document.title = currentPicture.getAttribute(\"data-title\");\n history.pushState(\n null,\n currentPicture.getAttribute(\"data-title\"),\n currentPicture.getAttribute(\"data-link\")\n );\n }\n};\n\nconst userAgentIsMobile = () => {\n return (\n window.getComputedStyle(document.getElementById(\"bottomNavigation\"))[\n \"display\"\n ] === \"none\"\n );\n};\n\nconst getNextSiblingFromNestedGalleries = (el) => {\n let nextSibling = null;\n if (el.nextElementSibling) {\n nextSibling = el.nextElementSibling;\n } else if (el.parentElement.nextElementSibling) {\n let nextElementSibling = el.parentElement.nextElementSibling;\n while (nextElementSibling && nextElementSibling.nodeName !== \"UL\") {\n nextElementSibling = nextElementSibling.nextElementSibling;\n }\n nextSibling = nextElementSibling.querySelector(\"li:first-of-type\");\n } else {\n nextSibling = document.querySelector(\"#galleries li:first-of-type\");\n }\n return nextSibling;\n};\n\nconst getPreviousSiblingFromNestedGalleries = (el) => {\n let prevSibling = null;\n if (el.previousElementSibling) {\n prevSibling = el.previousElementSibling;\n } else if (el.parentElement.previousElementSibling) {\n prevSibling =\n el.parentElement.previousElementSibling.querySelector(\"li:last-of-type\");\n } else {\n // load last image\n prevSibling = document.querySelector(\n \"#galleries ul:last-of-type li:last-of-type\"\n );\n }\n return prevSibling;\n};\n\nconst preloadFullSizeImages = (document) => {\n let currentPicture = getCurrentPicture(document);\n let nextPic = currentPicture;\n let prevPic = currentPicture;\n let loadingStack = [];\n\n while (\n document.querySelector(\"#galleries li:not(.loading)\") &&\n (nextPic || prevPic)\n ) {\n if (nextPic) {\n loadingStack.push(nextPic);\n nextPic.classList.add(\"loading\");\n nextPic = getNextSiblingFromNestedGalleries(nextPic);\n }\n if (prevPic) {\n loadingStack.push(prevPic);\n prevPic.classList.add(\"loading\");\n prevPic = getPreviousSiblingFromNestedGalleries(prevPic);\n }\n }\n\n // loads all pics sequentially\n let i = 0;\n let debugLoading = false;\n\n loadingStack.reduce((previousPromise, li) => {\n return previousPromise.then(() => {\n return new Promise((resolve) => {\n i += 1;\n if (debugLoading) {\n console.log(\"Starts\", i);\n }\n const img = li.querySelector(\"img\");\n img.addEventListener(\"load\", () => {\n let percentageDone = (100 / loadingStack.length) * i;\n document.getElementById(\"loadingPicturesProgressBar\").style.width =\n String(percentageDone) + \"%\";\n if (percentageDone >= 98) {\n setTimeout(\n () =>\n document\n .getElementById(\"loadingPicturesProgressBar\")\n .classList.add(\"hidden\"),\n 200\n );\n }\n li.classList.remove(\"loading\");\n if (debugLoading) {\n console.log(\"Done\", i);\n }\n resolve();\n });\n img.setAttribute(\"src\", li.getAttribute(\"data-url\"));\n img.classList.add(\"fully-loaded\");\n });\n });\n }, Promise.resolve());\n};\n\nconst hideGalleryControls = (document) =>\n document.querySelector(\"body\").classList.add(\"hideGalleryControls\");\nconst displayGalleryControls = (document) =>\n document.querySelector(\"body\").classList.remove(\"hideGalleryControls\");\n\nconst applyPhotoNavigation = (document) => {\n const loadNextPhoto = (ev) => {\n hideGalleryControls(document);\n hideBottomMenu(document);\n let currentPicture = getCurrentPicture(document);\n currentPicture.classList.remove(\"current\");\n getNextSiblingFromNestedGalleries(currentPicture).classList.add(\"current\");\n loadCurrentImage(document);\n };\n const loadPreviousPhoto = (ev) => {\n hideGalleryControls(document);\n hideBottomMenu(document);\n let currentPicture = getCurrentPicture(document);\n currentPicture.classList.remove(\"current\");\n getPreviousSiblingFromNestedGalleries(currentPicture).classList.add(\n \"current\"\n );\n loadCurrentImage(document);\n };\n document.getElementById(\"goNext\").addEventListener(\"click\", loadNextPhoto);\n document\n .getElementById(\"goPrev\")\n .addEventListener(\"click\", loadPreviousPhoto);\n};\n\nconst overviewOnClickEvent = (e) => {\n e.preventDefault();\n const body = document.querySelector(\"body\");\n body.classList.toggle(\"displayOverview\");\n body.classList.remove(\"displayContentPagesNavigation\");\n\n const overviewNavigation = e.currentTarget;\n const galleryItems = document.querySelectorAll(\"#galleries li\");\n galleryItems.forEach((li) => li.classList.remove(\"visible\"));\n let i = 0;\n const overviewIsDisplayed = body.classList.contains(\"displayOverview\");\n\n if (!overviewIsDisplayed && location.hash === \"#contactsheet\") {\n location.hash === \"\";\n }\n\n galleryItems.forEach((li) => {\n i += 1;\n setTimeout(\n () => {\n if (overviewIsDisplayed) {\n li.classList.add(\"visible\");\n } else {\n li.classList.remove(\"visible\");\n }\n },\n i < 16 ? i * 100 + 200 : 0\n );\n });\n};\n\nconst onWindowResize = () => {\n if (userAgentIsMobile()) {\n console.info(\"detected mobile / touch\");\n return applyMobileBehaviour(document);\n }\n};\n\nconst displayBottomMenu = (document) =>\n document.querySelector(\"body\").classList.add(\"displayBottomMenu\");\nconst hideBottomMenu = (document) =>\n document.querySelector(\"body\").classList.remove(\"displayBottomMenu\");\n\nconst applyFadeTransitionInPhotoGalleryContentAndBottomMenu = (document) => {\n let lastFadeOutTimeout = null;\n const stopFadeOutIfQueued = () => {\n if (lastFadeOutTimeout) {\n clearTimeout(lastFadeOutTimeout);\n lastFadeOutTimeout = null;\n }\n };\n const fadeOutLater = (document, timeout = 5000) => {\n stopFadeOutIfQueued();\n lastFadeOutTimeout = setTimeout(() => {\n hideBottomMenu(document);\n }, timeout);\n };\n\n displayBottomMenu(document);\n fadeOutLater(document);\n\n document\n .getElementById(\"menuMouseAreaBottom\")\n .addEventListener(\"mousemove\", (ev) => {\n stopFadeOutIfQueued();\n displayBottomMenu(document);\n });\n document\n .getElementById(\"menuMouseAreaLeft\")\n .addEventListener(\"mouseenter\", (ev) => {\n fadeOutLater(document, 0);\n });\n document\n .getElementById(\"menuMouseAreaRight\")\n .addEventListener(\"mouseenter\", (ev) => {\n fadeOutLater(document, 0);\n });\n};\n\nconst applyMobileBehaviour = (document) => {\n // document.querySelectorAll(\"#mobilePhotoGalleriesMenu a\").forEach((el) => {\n // el.addEventListener(\"click\", (ev) => {\n // document.querySelector(`#contentPagesNavigationToggle a[href='#menu']`).click();\n // });\n // });\n document.querySelector(\"#mainLogo\").addEventListener(\"click\", (ev) => {\n if (document.querySelector('body.displayContentPagesNavigation')) {\n ev.preventDefault();\n document.querySelector('body.displayContentPagesNavigation').classList.remove('displayContentPagesNavigation');\n }\n });\n\n};\n\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n}\n\nfunction loadMobileGallery() {\n document.querySelector(\"#backToTop\").addEventListener(\"click\", (e) => {\n e.preventDefault();\n window.scrollTo(0, 0);\n });\n\n const nav = document.querySelector('header.navigation');\n\n window.addEventListener(\"scroll\", (ev) => {\n if (window.scrollY > 50) {\n document.querySelector(\"#backToTop\").classList.add(\"visible\");\n nav.classList.remove(\"fade-in\");\n } else {\n document.querySelector(\"#backToTop\").classList.remove(\"visible\");\n nav.classList.add(\"fade-in\");\n }\n if (window.scrollY + window.innerHeight > document.body.scrollHeight - 70) {\n document.querySelector(\"#backToTop\").classList.add(\"full-contrast\");\n } else {\n document.querySelector(\"#backToTop\").classList.remove(\"full-contrast\");\n }\n\n });\n document.querySelectorAll(\"#galleries li\").forEach((a) => {\n a.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.target.closest(\"li\").classList.toggle(\"expanded\");\n });\n });\n}\n\ndocument.addEventListener(window.Turbo ? 'turbo:load' : 'DOMContentLoaded', function (event) {\n\n const contentPagesNavigationToggleLink = document.querySelector(\n `#contentPagesNavigationToggle a[href='#menu']`\n );\n contentPagesNavigationToggleLink.addEventListener(\"click\", (e) => {\n e.preventDefault();\n document\n .querySelector(\"body\")\n .classList.toggle(\"displayContentPagesNavigation\");\n });\n\n\n AOS.init({\n disable: !isTouchDevice(),\n once: true,\n mirror: true,\n });\n\n window.cookieconsent.initialise({\n palette: {\n popup: {\n background: \"#ffffff\"\n },\n button: {\n background: \"transparent\",\n border: \"#000\",\n text: \"#000\"\n }\n },\n position: \"bottom-right\",\n content: {\n message: \"Wir verwenden ausschlie\u00DFlich technisch-essentielle Cookies.\",\n dismiss: \"OK\",\n link: \"Mehr Informationen\",\n href: \"https://www.steffen-jaenicke.de/datenschutz\"\n }\n });\n\n\n if (isTouchDevice()) {\n console.info(\"skipping gallery loading for touch devices\");\n loadMobileGallery();\n onWindowResize();\n return;\n }\n\n let assistentinnenRollover = document.querySelector(\n '.secondColumn img[src*=\"assistentinnen\"]'\n );\n if (assistentinnenRollover) {\n let url = \"/resources/themes/steffenjaenicke2020/images\";\n assistentinnenRollover.setAttribute(\"src\", `${url}/assi01.jpg`);\n assistentinnenRollover.addEventListener(\"mouseenter\", () =>\n assistentinnenRollover.setAttribute(\"src\", `${url}/assi02.jpg`)\n );\n assistentinnenRollover.addEventListener(\"mouseleave\", () =>\n assistentinnenRollover.setAttribute(\"src\", `${url}/assi01.jpg`)\n );\n }\n\n onWindowResize();\n\n if (!document.querySelector(\"body\").classList.contains(\"gallerypage\")) {\n console.info(\"skipping gallery loading\");\n return;\n }\n\n document\n .querySelector(\"#overviewNavigation > a\")\n .addEventListener(\"click\", overviewOnClickEvent);\n\n let displayContactSheetIfHash = (hash = location.hash) => {\n if (hash === \"#contactsheet\") {\n document.querySelector(\"#overviewNavigation > a\").click();\n }\n document.querySelector(document.location).scrollIntoView({\n behavior: \"smooth\"\n });\n };\n\n window.addEventListener(\n \"hashchange\",\n function () {\n displayContactSheetIfHash();\n },\n false\n );\n\n if (document.location.hash) {\n displayContactSheetIfHash(document.location.hash.match(/^#(people|corporate|reportage)$/) ? '#contactsheet' : document.location.hash);\n }\n\n document.querySelectorAll('a[href^=\"/pdf\"][data-method]').forEach((el) => {\n el.addEventListener(\"click\", (e) => {\n e.preventDefault();\n fetch(e.currentTarget.getAttribute(\"href\"), {\n method: e.currentTarget.getAttribute(\"data-method\")\n }).then((res) => {\n res.text().then((t) => {\n applyAddedPdfsToOverview();\n });\n });\n });\n });\n\n document\n .querySelector(\"#overview .downloadPDF a\")\n .addEventListener(\"click\", (ev) => {\n let count = Number(\n ev.currentTarget.querySelector(\".pdfPicturesCount\").innerText\n );\n if (count < 1) {\n ev.preventDefault();\n alert(\n \"Bitte f\u00FCgen Sie zuerst ein Bild zu dem PDF Contactsheet hinzu, indem Sie auf das Plus in den roten Felden klicken.\"\n );\n }\n });\n\n document\n .getElementById(\"menuMouseAreaRight\")\n .addEventListener(\"click\", () => document.getElementById(\"goNext\").click());\n document\n .getElementById(\"menuMouseAreaLeft\")\n .addEventListener(\"click\", () => document.getElementById(\"goPrev\").click());\n\n let currentPictureId = document\n .querySelector(\"#currentPictures img\")\n .getAttribute(\"data-id\");\n // this needs to be initially done since everything in html is cached\n document\n .querySelector(`#galleries li[data-id=\"${currentPictureId}\"]`)\n .classList.add(\"current\");\n\n let imagesPreloaderExecuted = false;\n\n let imagesPreloader = () => {\n if (imagesPreloaderExecuted) {\n return \"Will only be executed once\";\n }\n imagesPreloaderExecuted = true;\n console.info(\"Running images preloader\");\n loadCurrentImage(document, true);\n /*\n // This is NOT IN USE ANYMORE, we use native browser lazy loading instead\n preloadFullSizeImages(document);\n */\n };\n\n document\n .querySelector(\"#currentPictures .picture.current img\")\n .addEventListener(\"load\", imagesPreloader);\n // in chrome, the load event will not be triggered\u2026\n setTimeout(() => imagesPreloader(), 2000);\n\n applyPhotoNavigation(document);\n applyFadeTransitionInPhotoGalleryContentAndBottomMenu(document);\n applyAddedPdfsToOverview();\n keyboardArrowEvents(document);\n\n document\n .getElementById(\"pictureViewContainer\")\n .addEventListener(\"mousemove\", () => displayGalleryControls(document));\n});\n\nwindow.addEventListener(\"resize\", onWindowResize);\n", "!(function (e) {\n if (!e.hasInitialised) {\n var t = {\n escapeRegExp: function (e) {\n return e.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n },\n hasClass: function (e, t) {\n var i = \" \";\n return (\n 1 === e.nodeType &&\n (i + e.className + i).replace(/[\\n\\t]/g, i).indexOf(i + t + i) >= 0\n );\n },\n addClass: function (e, t) {\n e.className += \" \" + t;\n },\n removeClass: function (e, t) {\n var i = new RegExp(\"\\\\b\" + this.escapeRegExp(t) + \"\\\\b\");\n e.className = e.className.replace(i, \"\");\n },\n interpolateString: function (e, t) {\n return e.replace(/{{([a-z][a-z0-9\\-_]*)}}/gi, function (e) {\n return t(arguments[1]) || \"\";\n });\n },\n getCookie: function (e) {\n var t = (\"; \" + document.cookie).split(\"; \" + e + \"=\");\n return t.length < 2 ? void 0 : t.pop().split(\";\").shift();\n },\n setCookie: function (e, t, i, n, o, s) {\n var r = new Date();\n r.setHours(r.getHours() + 24 * (i || 365));\n var a = [\n e + \"=\" + t,\n \"expires=\" + r.toUTCString(),\n \"path=\" + (o || \"/\"),\n ];\n n && a.push(\"domain=\" + n),\n s && a.push(\"secure\"),\n (document.cookie = a.join(\";\"));\n },\n deepExtend: function (e, t) {\n for (var i in t)\n t.hasOwnProperty(i) &&\n (i in e && this.isPlainObject(e[i]) && this.isPlainObject(t[i])\n ? this.deepExtend(e[i], t[i])\n : (e[i] = t[i]));\n return e;\n },\n throttle: function (e, t) {\n var i = !1;\n return function () {\n i ||\n (e.apply(this, arguments),\n (i = !0),\n setTimeout(function () {\n i = !1;\n }, t));\n };\n },\n hash: function (e) {\n var t,\n i,\n n = 0;\n if (0 === e.length) return n;\n for (t = 0, i = e.length; t < i; ++t)\n (n = (n << 5) - n + e.charCodeAt(t)), (n |= 0);\n return n;\n },\n normaliseHex: function (e) {\n return (\n \"#\" == e[0] && (e = e.substr(1)),\n 3 == e.length && (e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]),\n e\n );\n },\n getContrast: function (e) {\n return (\n (e = this.normaliseHex(e)),\n (299 * parseInt(e.substr(0, 2), 16) +\n 587 * parseInt(e.substr(2, 2), 16) +\n 114 * parseInt(e.substr(4, 2), 16)) /\n 1e3 >=\n 128\n ? \"#000\"\n : \"#fff\"\n );\n },\n getLuminance: function (e) {\n var t = parseInt(this.normaliseHex(e), 16),\n i = 38 + (t >> 16),\n n = 38 + ((t >> 8) & 255),\n o = 38 + (255 & t);\n return (\n \"#\" +\n (\n 16777216 +\n 65536 * (i < 255 ? (i < 1 ? 0 : i) : 255) +\n 256 * (n < 255 ? (n < 1 ? 0 : n) : 255) +\n (o < 255 ? (o < 1 ? 0 : o) : 255)\n )\n .toString(16)\n .slice(1)\n );\n },\n isMobile: function () {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n },\n isPlainObject: function (e) {\n return \"object\" == typeof e && null !== e && e.constructor == Object;\n },\n traverseDOMPath: function (e, i) {\n return e && e.parentNode\n ? t.hasClass(e, i)\n ? e\n : this.traverseDOMPath(e.parentNode, i)\n : null;\n },\n };\n (e.status = { deny: \"deny\", allow: \"allow\", dismiss: \"dismiss\" }),\n (e.transitionEnd = (function () {\n var e = document.createElement(\"div\"),\n t = {\n t: \"transitionend\",\n OT: \"oTransitionEnd\",\n msT: \"MSTransitionEnd\",\n MozT: \"transitionend\",\n WebkitT: \"webkitTransitionEnd\",\n };\n for (var i in t)\n if (t.hasOwnProperty(i) && void 0 !== e.style[i + \"ransition\"])\n return t[i];\n return \"\";\n })()),\n (e.hasTransition = !!e.transitionEnd);\n var i = Object.keys(e.status).map(t.escapeRegExp);\n (e.customStyles = {}),\n (e.Popup = (function () {\n var n = {\n enabled: !0,\n container: null,\n cookie: {\n name: \"cookieconsent_status\",\n path: \"/\",\n domain: \"\",\n expiryDays: 365,\n secure: !1,\n },\n onPopupOpen: function () {},\n onPopupClose: function () {},\n onInitialise: function (e) {},\n onStatusChange: function (e, t) {},\n onRevokeChoice: function () {},\n onNoCookieLaw: function (e, t) {},\n content: {\n header: \"Cookies used on the website!\",\n message:\n \"This website uses cookies to ensure you get the best experience on our website.\",\n dismiss: \"Got it!\",\n allow: \"Allow cookies\",\n deny: \"Decline\",\n link: \"Learn more\",\n href: \"https://www.cookiesandyou.com\",\n close: \"❌\",\n target: \"_blank\",\n policy: \"Cookie Policy\",\n },\n elements: {\n header: '{{header}} ',\n message:\n '{{message}}',\n messagelink:\n '{{message}} {{link}}',\n dismiss:\n '{{dismiss}}',\n allow:\n '{{allow}}',\n deny: '{{deny}}',\n link: '{{link}}',\n close:\n '{{close}}',\n },\n window:\n '
\\x3c!--googleoff: all--\\x3e{{children}}\\x3c!--googleon: all--\\x3e
',\n revokeBtn: '
{{policy}}
',\n compliance: {\n info: '
{{dismiss}}
',\n \"opt-in\":\n '
{{deny}}{{allow}}
',\n \"opt-out\":\n '
{{deny}}{{allow}}
',\n },\n type: \"info\",\n layouts: {\n basic: \"{{messagelink}}{{compliance}}\",\n \"basic-close\": \"{{messagelink}}{{compliance}}{{close}}\",\n \"basic-header\": \"{{header}}{{message}}{{link}}{{compliance}}\",\n },\n layout: \"basic\",\n position: \"bottom\",\n theme: \"block\",\n static: !1,\n palette: null,\n revokable: !1,\n animateRevokable: !0,\n showLink: !0,\n dismissOnScroll: !1,\n dismissOnTimeout: !1,\n dismissOnWindowClick: !1,\n ignoreClicksFrom: [\"cc-revoke\", \"cc-btn\"],\n autoOpen: !0,\n autoAttach: !0,\n whitelistPage: [],\n blacklistPage: [],\n overrideHTML: null,\n };\n function o() {\n this.initialise.apply(this, arguments);\n }\n function s(e) {\n (this.openingTimeout = null), t.removeClass(e, \"cc-invisible\");\n }\n function r(t) {\n (t.style.display = \"none\"),\n t.removeEventListener(e.transitionEnd, this.afterTransition),\n (this.afterTransition = null);\n }\n function a() {\n var e = this.options.position.split(\"-\"),\n t = [];\n return (\n e.forEach(function (e) {\n t.push(\"cc-\" + e);\n }),\n t\n );\n }\n function c(n) {\n var o = this.options,\n s = document.createElement(\"div\"),\n r =\n o.container && 1 === o.container.nodeType\n ? o.container\n : document.body;\n s.innerHTML = n;\n var a = s.children[0];\n return (\n (a.style.display = \"none\"),\n t.hasClass(a, \"cc-window\") &&\n e.hasTransition &&\n t.addClass(a, \"cc-invisible\"),\n (this.onButtonClick = function (n) {\n var o = t.traverseDOMPath(n.target, \"cc-btn\") || n.target;\n if (t.hasClass(o, \"cc-btn\")) {\n var s = o.className.match(\n new RegExp(\"\\\\bcc-(\" + i.join(\"|\") + \")\\\\b\")\n ),\n r = (s && s[1]) || !1;\n r && (this.setStatus(r), this.close(!0));\n }\n t.hasClass(o, \"cc-close\") &&\n (this.setStatus(e.status.dismiss), this.close(!0));\n t.hasClass(o, \"cc-revoke\") && this.revokeChoice();\n }.bind(this)),\n a.addEventListener(\"click\", this.onButtonClick),\n o.autoAttach &&\n (r.firstChild\n ? r.insertBefore(a, r.firstChild)\n : r.appendChild(a)),\n a\n );\n }\n function l(e) {\n return \"000000\" == (e = t.normaliseHex(e))\n ? \"#222\"\n : t.getLuminance(e);\n }\n function u(e, t) {\n for (var i = 0, n = e.length; i < n; ++i) {\n var o = e[i];\n if (\n (o instanceof RegExp && o.test(t)) ||\n (\"string\" == typeof o && o.length && o === t)\n )\n return !0;\n }\n return !1;\n }\n return (\n (o.prototype.initialise = function (i) {\n this.options && this.destroy(),\n t.deepExtend((this.options = {}), n),\n t.isPlainObject(i) && t.deepExtend(this.options, i),\n function () {\n var t = this.options.onInitialise.bind(this);\n if (!window.navigator.cookieEnabled)\n return t(e.status.deny), !0;\n if (window.CookiesOK || window.navigator.CookiesOK)\n return t(e.status.allow), !0;\n var i = Object.keys(e.status),\n n = this.getStatus(),\n o = i.indexOf(n) >= 0;\n o && t(n);\n return o;\n }.call(this) && (this.options.enabled = !1),\n u(this.options.blacklistPage, location.pathname) &&\n (this.options.enabled = !1),\n u(this.options.whitelistPage, location.pathname) &&\n (this.options.enabled = !0);\n var o = this.options.window\n .replace(\n \"{{classes}}\",\n function () {\n var i = this.options,\n n =\n \"top\" == i.position || \"bottom\" == i.position\n ? \"banner\"\n : \"floating\";\n t.isMobile() && (n = \"floating\");\n var o = [\n \"cc-\" + n,\n \"cc-type-\" + i.type,\n \"cc-theme-\" + i.theme,\n ];\n i.static && o.push(\"cc-static\");\n o.push.apply(o, a.call(this));\n (function (i) {\n var n = t.hash(JSON.stringify(i)),\n o = \"cc-color-override-\" + n,\n s = t.isPlainObject(i);\n (this.customStyleSelector = s ? o : null),\n s &&\n (function (i, n, o) {\n if (e.customStyles[i])\n return void ++e.customStyles[i].references;\n var s = {},\n r = n.popup,\n a = n.button,\n c = n.highlight;\n r &&\n ((r.text = r.text\n ? r.text\n : t.getContrast(r.background)),\n (r.link = r.link ? r.link : r.text),\n (s[o + \".cc-window\"] = [\n \"color: \" + r.text,\n \"background-color: \" + r.background,\n ]),\n (s[o + \".cc-revoke\"] = [\n \"color: \" + r.text,\n \"background-color: \" + r.background,\n ]),\n (s[\n o +\n \" .cc-link,\" +\n o +\n \" .cc-link:active,\" +\n o +\n \" .cc-link:visited\"\n ] = [\"color: \" + r.link]),\n a &&\n ((a.text = a.text\n ? a.text\n : t.getContrast(a.background)),\n (a.border = a.border\n ? a.border\n : \"transparent\"),\n (s[o + \" .cc-btn\"] = [\n \"color: \" + a.text,\n \"border-color: \" + a.border,\n \"background-color: \" + a.background,\n ]),\n a.padding &&\n s[o + \" .cc-btn\"].push(\n \"padding: \" + a.padding\n ),\n \"transparent\" != a.background &&\n (s[\n o +\n \" .cc-btn:hover, \" +\n o +\n \" .cc-btn:focus\"\n ] = [\n \"background-color: \" +\n (a.hover || l(a.background)),\n ]),\n c\n ? ((c.text = c.text\n ? c.text\n : t.getContrast(c.background)),\n (c.border = c.border\n ? c.border\n : \"transparent\"),\n (s[\n o + \" .cc-highlight .cc-btn:first-child\"\n ] = [\n \"color: \" + c.text,\n \"border-color: \" + c.border,\n \"background-color: \" + c.background,\n ]))\n : (s[\n o + \" .cc-highlight .cc-btn:first-child\"\n ] = [\"color: \" + r.text])));\n var u = document.createElement(\"style\");\n document.head.appendChild(u),\n (e.customStyles[i] = {\n references: 1,\n element: u.sheet,\n });\n var h = -1;\n for (var p in s)\n s.hasOwnProperty(p) &&\n u.sheet.insertRule(\n p + \"{\" + s[p].join(\";\") + \"}\",\n ++h\n );\n })(n, i, \".\" + o);\n return s;\n }.call(this, this.options.palette));\n this.customStyleSelector &&\n o.push(this.customStyleSelector);\n return o;\n }\n .call(this)\n .join(\" \")\n )\n .replace(\n \"{{children}}\",\n function () {\n var e = {},\n i = this.options;\n i.showLink ||\n ((i.elements.link = \"\"),\n (i.elements.messagelink = i.elements.message));\n Object.keys(i.elements).forEach(function (n) {\n e[n] = t.interpolateString(i.elements[n], function (e) {\n var t = i.content[e];\n return e && \"string\" == typeof t && t.length ? t : \"\";\n });\n });\n var n = i.compliance[i.type];\n n || (n = i.compliance.info);\n e.compliance = t.interpolateString(n, function (t) {\n return e[t];\n });\n var o = i.layouts[i.layout];\n o || (o = i.layouts.basic);\n return t.interpolateString(o, function (t) {\n return e[t];\n });\n }.call(this)\n ),\n s = this.options.overrideHTML;\n if (\n (\"string\" == typeof s && s.length && (o = s), this.options.static)\n ) {\n var r = c.call(this, '
' + o + \"
\");\n (r.style.display = \"\"),\n (this.element = r.firstChild),\n (this.element.style.display = \"none\"),\n t.addClass(this.element, \"cc-invisible\");\n } else this.element = c.call(this, o);\n (function () {\n var i = this.setStatus.bind(this),\n n = this.close.bind(this),\n o = this.options.dismissOnTimeout;\n \"number\" == typeof o &&\n o >= 0 &&\n (this.dismissTimeout = window.setTimeout(function () {\n i(e.status.dismiss), n(!0);\n }, Math.floor(o)));\n var s = this.options.dismissOnScroll;\n if (\"number\" == typeof s && s >= 0) {\n var r = function (t) {\n window.pageYOffset > Math.floor(s) &&\n (i(e.status.dismiss),\n n(!0),\n window.removeEventListener(\"scroll\", r),\n (this.onWindowScroll = null));\n };\n this.options.enabled &&\n ((this.onWindowScroll = r),\n window.addEventListener(\"scroll\", r));\n }\n var a = this.options.dismissOnWindowClick,\n c = this.options.ignoreClicksFrom;\n if (a) {\n var l = function (o) {\n for (\n var s = !1, r = o.path.length, a = c.length, u = 0;\n u < r;\n u++\n )\n if (!s)\n for (var h = 0; h < a; h++)\n s || (s = t.hasClass(o.path[u], c[h]));\n s ||\n (i(e.status.dismiss),\n n(!0),\n window.removeEventListener(\"click\", l),\n window.removeEventListener(\"touchend\", l),\n (this.onWindowClick = null));\n }.bind(this);\n this.options.enabled &&\n ((this.onWindowClick = l),\n window.addEventListener(\"click\", l),\n window.addEventListener(\"touchend\", l));\n }\n }.call(this),\n function () {\n \"info\" != this.options.type && (this.options.revokable = !0);\n t.isMobile() && (this.options.animateRevokable = !1);\n if (this.options.revokable) {\n var e = a.call(this);\n this.options.animateRevokable && e.push(\"cc-animate\"),\n this.customStyleSelector &&\n e.push(this.customStyleSelector);\n var i = this.options.revokeBtn\n .replace(\"{{classes}}\", e.join(\" \"))\n .replace(\"{{policy}}\", this.options.content.policy);\n this.revokeBtn = c.call(this, i);\n var n = this.revokeBtn;\n if (this.options.animateRevokable) {\n var o = t.throttle(function (e) {\n var i = !1,\n o = window.innerHeight - 20;\n t.hasClass(n, \"cc-top\") && e.clientY < 20 && (i = !0),\n t.hasClass(n, \"cc-bottom\") && e.clientY > o && (i = !0),\n i\n ? t.hasClass(n, \"cc-active\") ||\n t.addClass(n, \"cc-active\")\n : t.hasClass(n, \"cc-active\") &&\n t.removeClass(n, \"cc-active\");\n }, 200);\n (this.onMouseMove = o),\n window.addEventListener(\"mousemove\", o);\n }\n }\n }.call(this),\n this.options.autoOpen && this.autoOpen());\n }),\n (o.prototype.destroy = function () {\n this.onButtonClick &&\n this.element &&\n (this.element.removeEventListener(\"click\", this.onButtonClick),\n (this.onButtonClick = null)),\n this.dismissTimeout &&\n (clearTimeout(this.dismissTimeout),\n (this.dismissTimeout = null)),\n this.onWindowScroll &&\n (window.removeEventListener(\"scroll\", this.onWindowScroll),\n (this.onWindowScroll = null)),\n this.onWindowClick &&\n (window.removeEventListener(\"click\", this.onWindowClick),\n (this.onWindowClick = null)),\n this.onMouseMove &&\n (window.removeEventListener(\"mousemove\", this.onMouseMove),\n (this.onMouseMove = null)),\n this.element &&\n this.element.parentNode &&\n this.element.parentNode.removeChild(this.element),\n (this.element = null),\n this.revokeBtn &&\n this.revokeBtn.parentNode &&\n this.revokeBtn.parentNode.removeChild(this.revokeBtn),\n (this.revokeBtn = null),\n (function (i) {\n if (t.isPlainObject(i)) {\n var n = t.hash(JSON.stringify(i)),\n o = e.customStyles[n];\n if (o && !--o.references) {\n var s = o.element.ownerNode;\n s && s.parentNode && s.parentNode.removeChild(s),\n (e.customStyles[n] = null);\n }\n }\n })(this.options.palette),\n (this.options = null);\n }),\n (o.prototype.open = function (t) {\n if (this.element)\n return (\n this.isOpen() ||\n (e.hasTransition\n ? this.fadeIn()\n : (this.element.style.display = \"\"),\n this.options.revokable && this.toggleRevokeButton(),\n this.options.onPopupOpen.call(this)),\n this\n );\n }),\n (o.prototype.close = function (t) {\n if (this.element)\n return (\n this.isOpen() &&\n (e.hasTransition\n ? this.fadeOut()\n : (this.element.style.display = \"none\"),\n t && this.options.revokable && this.toggleRevokeButton(!0),\n this.options.onPopupClose.call(this)),\n this\n );\n }),\n (o.prototype.fadeIn = function () {\n var i = this.element;\n if (\n e.hasTransition &&\n i &&\n (this.afterTransition && r.call(this, i),\n t.hasClass(i, \"cc-invisible\"))\n ) {\n if (((i.style.display = \"\"), this.options.static)) {\n var n = this.element.clientHeight;\n this.element.parentNode.style.maxHeight = n + \"px\";\n }\n this.openingTimeout = setTimeout(s.bind(this, i), 20);\n }\n }),\n (o.prototype.fadeOut = function () {\n var i = this.element;\n e.hasTransition &&\n i &&\n (this.openingTimeout &&\n (clearTimeout(this.openingTimeout), s.bind(this, i)),\n t.hasClass(i, \"cc-invisible\") ||\n (this.options.static &&\n (this.element.parentNode.style.maxHeight = \"\"),\n (this.afterTransition = r.bind(this, i)),\n i.addEventListener(e.transitionEnd, this.afterTransition),\n t.addClass(i, \"cc-invisible\")));\n }),\n (o.prototype.isOpen = function () {\n return (\n this.element &&\n \"\" == this.element.style.display &&\n (!e.hasTransition || !t.hasClass(this.element, \"cc-invisible\"))\n );\n }),\n (o.prototype.toggleRevokeButton = function (e) {\n this.revokeBtn && (this.revokeBtn.style.display = e ? \"\" : \"none\");\n }),\n (o.prototype.revokeChoice = function (e) {\n (this.options.enabled = !0),\n this.clearStatus(),\n this.options.onRevokeChoice.call(this),\n e || this.autoOpen();\n }),\n (o.prototype.hasAnswered = function (t) {\n return Object.keys(e.status).indexOf(this.getStatus()) >= 0;\n }),\n (o.prototype.hasConsented = function (t) {\n var i = this.getStatus();\n return i == e.status.allow || i == e.status.dismiss;\n }),\n (o.prototype.autoOpen = function (e) {\n !this.hasAnswered() && this.options.enabled\n ? this.open()\n : this.hasAnswered() &&\n this.options.revokable &&\n this.toggleRevokeButton(!0);\n }),\n (o.prototype.setStatus = function (i) {\n var n = this.options.cookie,\n o = t.getCookie(n.name),\n s = Object.keys(e.status).indexOf(o) >= 0;\n Object.keys(e.status).indexOf(i) >= 0\n ? (t.setCookie(\n n.name,\n i,\n n.expiryDays,\n n.domain,\n n.path,\n n.secure\n ),\n this.options.onStatusChange.call(this, i, s))\n : this.clearStatus();\n }),\n (o.prototype.getStatus = function () {\n return t.getCookie(this.options.cookie.name);\n }),\n (o.prototype.clearStatus = function () {\n var e = this.options.cookie;\n t.setCookie(e.name, \"\", -1, e.domain, e.path);\n }),\n o\n );\n })()),\n (e.Location = (function () {\n var e = {\n timeout: 5e3,\n services: [\"ipinfo\"],\n serviceDefinitions: {\n ipinfo: function () {\n return {\n url: \"//ipinfo.io\",\n headers: [\"Accept: application/json\"],\n callback: function (e, t) {\n try {\n var i = JSON.parse(t);\n return i.error ? s(i) : { code: i.country };\n } catch (e) {\n return s({ error: \"Invalid response (\" + e + \")\" });\n }\n },\n };\n },\n ipinfodb: function (e) {\n return {\n url: \"//api.ipinfodb.com/v3/ip-country/?key={api_key}&format=json&callback={callback}\",\n isScript: !0,\n callback: function (e, t) {\n try {\n var i = JSON.parse(t);\n return \"ERROR\" == i.statusCode\n ? s({ error: i.statusMessage })\n : { code: i.countryCode };\n } catch (e) {\n return s({ error: \"Invalid response (\" + e + \")\" });\n }\n },\n };\n },\n maxmind: function () {\n return {\n url: \"//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js\",\n isScript: !0,\n callback: function (e) {\n window.geoip2\n ? geoip2.country(\n function (t) {\n try {\n e({ code: t.country.iso_code });\n } catch (t) {\n e(s(t));\n }\n },\n function (t) {\n e(s(t));\n }\n )\n : e(\n new Error(\n \"Unexpected response format. The downloaded script should have exported `geoip2` to the global scope\"\n )\n );\n },\n };\n },\n },\n };\n function i(i) {\n t.deepExtend((this.options = {}), e),\n t.isPlainObject(i) && t.deepExtend(this.options, i),\n (this.currentServiceIndex = -1);\n }\n function n(e, t, i) {\n var n,\n o = document.createElement(\"script\");\n (o.type = \"text/\" + (e.type || \"javascript\")),\n (o.src = e.src || e),\n (o.async = !1),\n (o.onreadystatechange = o.onload =\n function () {\n var e = o.readyState;\n clearTimeout(n),\n t.done ||\n (e && !/loaded|complete/.test(e)) ||\n ((t.done = !0),\n t(),\n (o.onreadystatechange = o.onload = null));\n }),\n document.body.appendChild(o),\n (n = setTimeout(function () {\n (t.done = !0), t(), (o.onreadystatechange = o.onload = null);\n }, i));\n }\n function o(e, t, i, n, o) {\n var s = new (window.XMLHttpRequest || window.ActiveXObject)(\n \"MSXML2.XMLHTTP.3.0\"\n );\n if (\n (s.open(n ? \"POST\" : \"GET\", e, 1),\n s.setRequestHeader(\n \"Content-type\",\n \"application/x-www-form-urlencoded\"\n ),\n Array.isArray(o))\n )\n for (var r = 0, a = o.length; r < a; ++r) {\n var c = o[r].split(\":\", 2);\n s.setRequestHeader(\n c[0].replace(/^\\s+|\\s+$/g, \"\"),\n c[1].replace(/^\\s+|\\s+$/g, \"\")\n );\n }\n \"function\" == typeof t &&\n (s.onreadystatechange = function () {\n s.readyState > 3 && t(s);\n }),\n s.send(n);\n }\n function s(e) {\n return new Error(\"Error [\" + (e.code || \"UNKNOWN\") + \"]: \" + e.error);\n }\n return (\n (i.prototype.getNextService = function () {\n var e;\n do {\n e = this.getServiceByIdx(++this.currentServiceIndex);\n } while (\n this.currentServiceIndex < this.options.services.length &&\n !e\n );\n return e;\n }),\n (i.prototype.getServiceByIdx = function (e) {\n var i = this.options.services[e];\n if (\"function\" == typeof i) {\n var n = i();\n return (\n n.name &&\n t.deepExtend(n, this.options.serviceDefinitions[n.name](n)),\n n\n );\n }\n return \"string\" == typeof i\n ? this.options.serviceDefinitions[i]()\n : t.isPlainObject(i)\n ? this.options.serviceDefinitions[i.name](i)\n : null;\n }),\n (i.prototype.locate = function (e, t) {\n var i = this.getNextService();\n i\n ? ((this.callbackComplete = e),\n (this.callbackError = t),\n this.runService(i, this.runNextServiceOnError.bind(this)))\n : t(new Error(\"No services to run\"));\n }),\n (i.prototype.setupUrl = function (e) {\n var t = this.getCurrentServiceOpts();\n return e.url.replace(/\\{(.*?)\\}/g, function (i, n) {\n if (\"callback\" === n) {\n var o = \"callback\" + Date.now();\n return (\n (window[o] = function (t) {\n e.__JSONP_DATA = JSON.stringify(t);\n }),\n o\n );\n }\n if (n in t.interpolateUrl) return t.interpolateUrl[n];\n });\n }),\n (i.prototype.runService = function (e, t) {\n var i = this;\n e &&\n e.url &&\n e.callback &&\n (e.isScript ? n : o)(\n this.setupUrl(e),\n function (n) {\n var o = n ? n.responseText : \"\";\n e.__JSONP_DATA &&\n ((o = e.__JSONP_DATA), delete e.__JSONP_DATA),\n i.runServiceCallback.call(i, t, e, o);\n },\n this.options.timeout,\n e.data,\n e.headers\n );\n }),\n (i.prototype.runServiceCallback = function (e, t, i) {\n var n = this,\n o = t.callback(function (t) {\n o || n.onServiceResult.call(n, e, t);\n }, i);\n o && this.onServiceResult.call(this, e, o);\n }),\n (i.prototype.onServiceResult = function (e, t) {\n t instanceof Error || (t && t.error)\n ? e.call(this, t, null)\n : e.call(this, null, t);\n }),\n (i.prototype.runNextServiceOnError = function (e, t) {\n if (e) {\n this.logError(e);\n var i = this.getNextService();\n i\n ? this.runService(i, this.runNextServiceOnError.bind(this))\n : this.completeService.call(\n this,\n this.callbackError,\n new Error(\"All services failed\")\n );\n } else this.completeService.call(this, this.callbackComplete, t);\n }),\n (i.prototype.getCurrentServiceOpts = function () {\n var e = this.options.services[this.currentServiceIndex];\n return \"string\" == typeof e\n ? { name: e }\n : \"function\" == typeof e\n ? e()\n : t.isPlainObject(e)\n ? e\n : {};\n }),\n (i.prototype.completeService = function (e, t) {\n (this.currentServiceIndex = -1), e && e(t);\n }),\n (i.prototype.logError = function (e) {\n var t = this.currentServiceIndex,\n i = this.getServiceByIdx(t);\n console.warn(\n \"The service[\" +\n t +\n \"] (\" +\n i.url +\n \") responded with the following error\",\n e\n );\n }),\n i\n );\n })()),\n (e.Law = (function () {\n var e = {\n regionalLaw: !0,\n hasLaw: [\n \"AT\",\n \"BE\",\n \"BG\",\n \"HR\",\n \"CZ\",\n \"CY\",\n \"DK\",\n \"EE\",\n \"FI\",\n \"FR\",\n \"DE\",\n \"EL\",\n \"HU\",\n \"IE\",\n \"IT\",\n \"LV\",\n \"LT\",\n \"LU\",\n \"MT\",\n \"NL\",\n \"PL\",\n \"PT\",\n \"SK\",\n \"ES\",\n \"SE\",\n \"GB\",\n \"UK\",\n \"GR\",\n \"EU\",\n ],\n revokable: [\n \"HR\",\n \"CY\",\n \"DK\",\n \"EE\",\n \"FR\",\n \"DE\",\n \"LV\",\n \"LT\",\n \"NL\",\n \"PT\",\n \"ES\",\n ],\n explicitAction: [\"HR\", \"IT\", \"ES\"],\n };\n function i(e) {\n this.initialise.apply(this, arguments);\n }\n return (\n (i.prototype.initialise = function (i) {\n t.deepExtend((this.options = {}), e),\n t.isPlainObject(i) && t.deepExtend(this.options, i);\n }),\n (i.prototype.get = function (e) {\n var t = this.options;\n return {\n hasLaw: t.hasLaw.indexOf(e) >= 0,\n revokable: t.revokable.indexOf(e) >= 0,\n explicitAction: t.explicitAction.indexOf(e) >= 0,\n };\n }),\n (i.prototype.applyLaw = function (e, t) {\n var i = this.get(t);\n return (\n i.hasLaw ||\n ((e.enabled = !1),\n \"function\" == typeof e.onNoCookieLaw && e.onNoCookieLaw(t, i)),\n this.options.regionalLaw &&\n (i.revokable && (e.revokable = !0),\n i.explicitAction &&\n ((e.dismissOnScroll = !1), (e.dismissOnTimeout = !1))),\n e\n );\n }),\n i\n );\n })()),\n (e.initialise = function (i, n, o) {\n var s = new e.Law(i.law);\n n || (n = function () {}), o || (o = function () {});\n var r = Object.keys(e.status),\n a = t.getCookie(\"cookieconsent_status\");\n r.indexOf(a) >= 0\n ? n(new e.Popup(i))\n : e.getCountryCode(\n i,\n function (t) {\n delete i.law,\n delete i.location,\n t.code && (i = s.applyLaw(i, t.code)),\n n(new e.Popup(i));\n },\n function (t) {\n delete i.law, delete i.location, o(t, new e.Popup(i));\n }\n );\n }),\n (e.getCountryCode = function (t, i, n) {\n t.law && t.law.countryCode\n ? i({ code: t.law.countryCode })\n : t.location\n ? new e.Location(t.location).locate(function (e) {\n i(e || {});\n }, n)\n : i({});\n }),\n (e.utils = t),\n (e.hasInitialised = !0),\n (window.cookieconsent = e);\n }\n})(window.cookieconsent || {});\n"], "mappings": "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,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA,MAAI,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA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", "names": ["e", "n", "o", "i", "a", "r", "c", "s", "u", "d", "l", "f", "v", "y", "t", "h", "k", "x", "O", "m", "p", "b", "g", "Konva", "component", "pos", "SET", "transformsEnabled", "shapes", "STAGE", "MOUSELEAVE", "MOUSEENTER", "HASH", "idCounter", "Konva", "i", "v", "u", "Image", "CHANGE_KONVA", "LEFT", "SPACE", "RIGHT", "NONE", "ATTR_CHANGE_LIST", "attrChangeListLen", "dummyContext", "getDummyContext", "_fillFunc", "_strokeFunc", "EMPTY_STRING", "NORMAL", "_fillFunc", "_strokeFunc", "glyphWidth", "ATTR_CHANGE_LIST", "TRANSFORM_CHANGE_STR", "node", "self", "Blur", "Konva", "Image", "Konva", "e", "t", "i", "n", "o", "s", "r", "a", "c", "u", "l", "document", "picture", "document", "AOS"] }