diff --git a/public/html-page/Spectrogram.html b/public/html-page/Spectrogram.html index 6d97c21..1f44e01 100644 --- a/public/html-page/Spectrogram.html +++ b/public/html-page/Spectrogram.html @@ -4,14 +4,13 @@ - Document + 频谱图+瀑布图的html页面
- - - + + - - - - diff --git a/src/pages/Page/canvas/ConstellationDiagram/konva.2.4.2.min.js b/src/pages/Page/canvas/ConstellationDiagram/konva.2.4.2.min.js deleted file mode 100644 index 59bf059..0000000 --- a/src/pages/Page/canvas/ConstellationDiagram/konva.2.4.2.min.js +++ /dev/null @@ -1,7380 +0,0 @@ -// @ts-nocheck -/* - * Konva JavaScript Framework v2.4.2 - * http://konvajs.github.io/ - * Licensed under the MIT - * Date: Fri Oct 12 2018 - * - * Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS) - * Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva) - * - * @license - */ -!(function () { - 'use strict'; - var e = Math.PI / 180, - r = { - version: '2.4.2', - stages: [], - idCounter: 0, - ids: {}, - names: {}, - shapes: {}, - listenClickTap: !1, - inDblClickWindow: !1, - isBrowser: - 'undefined' != typeof window && - ('[object Window]' === {}.toString.call(window) || '[object global]' === {}.toString.call(window)), - isUnminified: /comment/.test(function () {}), - enableTrace: !1, - traceArrMax: 100, - dblClickWindow: 400, - pixelRatio: void 0, - dragDistance: 3, - angleDeg: !0, - showWarnings: !0, - Filters: {}, - isDragging: function () { - var t = r.DD; - return !!t && t.isDragging; - }, - isDragReady: function () { - var t = r.DD; - return !!t && !!t.node; - }, - _addId: function (t, e) { - e && (this.ids[e] = t); - }, - _removeId: function (t) { - void 0 !== t && delete this.ids[t]; - }, - _addName: function (t, e) { - e && (this.names[e] || (this.names[e] = []), this.names[e].push(t)); - }, - _removeName: function (t, e) { - if (t) { - var i = this.names[t]; - if (i) { - for (var n = 0; n < i.length; n++) { - i[n]._id === e && i.splice(n, 1); - } - 0 === i.length && delete this.names[t]; - } - } - }, - getAngle: function (t) { - return this.angleDeg ? t * e : t; - }, - _detectIE: function (t) { - var e = t.indexOf('msie '); - if (0 < e) return parseInt(t.substring(e + 5, t.indexOf('.', e)), 10); - if (0 < t.indexOf('trident/')) { - var i = t.indexOf('rv:'); - return parseInt(t.substring(i + 3, t.indexOf('.', i)), 10); - } - var n = t.indexOf('edge/'); - return 0 < n && parseInt(t.substring(n + 5, t.indexOf('.', n)), 10); - }, - _parseUA: function (t) { - var e = t.toLowerCase(), - i = - /(chrome)[ /]([\w.]+)/.exec(e) || - /(webkit)[ /]([\w.]+)/.exec(e) || - /(opera)(?:.*version|)[ /]([\w.]+)/.exec(e) || - /(msie) ([\w.]+)/.exec(e) || - (e.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)) || - [], - n = !!t.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i), - a = !!t.match(/IEMobile/i); - return { browser: i[1] || '', version: i[2] || '0', isIE: r._detectIE(e), mobile: n, ieMobile: a }; - }, - UA: void 0, - }, - t = - 'undefined' != typeof global - ? global - : 'undefined' != typeof window - ? window - : 'undefined' != typeof WorkerGlobalScope - ? self - : {}; - (r.UA = r._parseUA((t.navigator && t.navigator.userAgent) || '')), - t.Konva && console.error('Konva instance is already exist in current eviroment. Please use only one instance.'), - ((t.Konva = r).global = t), - (r.window = t), - (r.document = t.document), - 'object' == typeof exports - ? (module.exports = r) - : 'function' == typeof define && - define.amd && - define(function () { - return r; - }); -})(), - (function () { - 'use strict'; - (Konva.Collection = function () { - var t = [].slice.call(arguments), - e = t.length, - i = 0; - for (this.length = e; i < e; i++) this[i] = t[i]; - return this; - }), - (Konva.Collection.prototype = []), - (Konva.Collection.prototype.each = function (t) { - for (var e = 0; e < this.length; e++) t(this[e], e); - }), - (Konva.Collection.prototype.toArray = function () { - var t, - e = [], - i = this.length; - for (t = 0; t < i; t++) e.push(this[t]); - return e; - }), - (Konva.Collection.toCollection = function (t) { - var e, - i = new Konva.Collection(), - n = t.length; - for (e = 0; e < n; e++) i.push(t[e]); - return i; - }), - (Konva.Collection._mapMethod = function (n) { - Konva.Collection.prototype[n] = function () { - var t, - e = this.length, - i = [].slice.call(arguments); - for (t = 0; t < e; t++) this[t][n].apply(this[t], i); - return this; - }; - }), - (Konva.Collection.mapMethods = function (t) { - var e = t.prototype; - for (var i in e) Konva.Collection._mapMethod(i); - }), - (Konva.Transform = function (t) { - this.m = (t && t.slice()) || [1, 0, 0, 1, 0, 0]; - }), - (Konva.Transform.prototype = { - copy: function () { - return new Konva.Transform(this.m); - }, - point: function (t) { - var e = this.m; - return { x: e[0] * t.x + e[2] * t.y + e[4], y: e[1] * t.x + e[3] * t.y + e[5] }; - }, - translate: function (t, e) { - return (this.m[4] += this.m[0] * t + this.m[2] * e), (this.m[5] += this.m[1] * t + this.m[3] * e), this; - }, - scale: function (t, e) { - return (this.m[0] *= t), (this.m[1] *= t), (this.m[2] *= e), (this.m[3] *= e), this; - }, - rotate: function (t) { - var e = Math.cos(t), - i = Math.sin(t), - n = this.m[0] * e + this.m[2] * i, - a = this.m[1] * e + this.m[3] * i, - r = this.m[0] * -i + this.m[2] * e, - o = this.m[1] * -i + this.m[3] * e; - return (this.m[0] = n), (this.m[1] = a), (this.m[2] = r), (this.m[3] = o), this; - }, - getTranslation: function () { - return { x: this.m[4], y: this.m[5] }; - }, - skew: function (t, e) { - var i = this.m[0] + this.m[2] * e, - n = this.m[1] + this.m[3] * e, - a = this.m[2] + this.m[0] * t, - r = this.m[3] + this.m[1] * t; - return (this.m[0] = i), (this.m[1] = n), (this.m[2] = a), (this.m[3] = r), this; - }, - multiply: function (t) { - var e = this.m[0] * t.m[0] + this.m[2] * t.m[1], - i = this.m[1] * t.m[0] + this.m[3] * t.m[1], - n = this.m[0] * t.m[2] + this.m[2] * t.m[3], - a = this.m[1] * t.m[2] + this.m[3] * t.m[3], - r = this.m[0] * t.m[4] + this.m[2] * t.m[5] + this.m[4], - o = this.m[1] * t.m[4] + this.m[3] * t.m[5] + this.m[5]; - return ( - (this.m[0] = e), (this.m[1] = i), (this.m[2] = n), (this.m[3] = a), (this.m[4] = r), (this.m[5] = o), this - ); - }, - invert: function () { - var t = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]), - e = this.m[3] * t, - i = -this.m[1] * t, - n = -this.m[2] * t, - a = this.m[0] * t, - r = t * (this.m[2] * this.m[5] - this.m[3] * this.m[4]), - o = t * (this.m[1] * this.m[4] - this.m[0] * this.m[5]); - return ( - (this.m[0] = e), (this.m[1] = i), (this.m[2] = n), (this.m[3] = a), (this.m[4] = r), (this.m[5] = o), this - ); - }, - getMatrix: function () { - return this.m; - }, - setAbsolutePosition: function (t, e) { - var i = this.m[0], - n = this.m[1], - a = this.m[2], - r = this.m[3], - o = this.m[4], - s = (i * (e - this.m[5]) - n * (t - o)) / (i * r - n * a), - h = (t - o - a * s) / i; - return this.translate(h, s); - }, - }); - var e = Math.PI / 180, - i = 180 / Math.PI, - n = 'Konva error: ', - a = { - aliceblue: [240, 248, 255], - antiquewhite: [250, 235, 215], - aqua: [0, 255, 255], - aquamarine: [127, 255, 212], - azure: [240, 255, 255], - beige: [245, 245, 220], - bisque: [255, 228, 196], - black: [0, 0, 0], - blanchedalmond: [255, 235, 205], - blue: [0, 0, 255], - blueviolet: [138, 43, 226], - brown: [165, 42, 42], - burlywood: [222, 184, 135], - cadetblue: [95, 158, 160], - chartreuse: [127, 255, 0], - chocolate: [210, 105, 30], - coral: [255, 127, 80], - cornflowerblue: [100, 149, 237], - cornsilk: [255, 248, 220], - crimson: [220, 20, 60], - cyan: [0, 255, 255], - darkblue: [0, 0, 139], - darkcyan: [0, 139, 139], - darkgoldenrod: [184, 132, 11], - darkgray: [169, 169, 169], - darkgreen: [0, 100, 0], - darkgrey: [169, 169, 169], - darkkhaki: [189, 183, 107], - darkmagenta: [139, 0, 139], - darkolivegreen: [85, 107, 47], - darkorange: [255, 140, 0], - darkorchid: [153, 50, 204], - darkred: [139, 0, 0], - darksalmon: [233, 150, 122], - darkseagreen: [143, 188, 143], - darkslateblue: [72, 61, 139], - darkslategray: [47, 79, 79], - darkslategrey: [47, 79, 79], - darkturquoise: [0, 206, 209], - darkviolet: [148, 0, 211], - deeppink: [255, 20, 147], - deepskyblue: [0, 191, 255], - dimgray: [105, 105, 105], - dimgrey: [105, 105, 105], - dodgerblue: [30, 144, 255], - firebrick: [178, 34, 34], - floralwhite: [255, 255, 240], - forestgreen: [34, 139, 34], - fuchsia: [255, 0, 255], - gainsboro: [220, 220, 220], - ghostwhite: [248, 248, 255], - gold: [255, 215, 0], - goldenrod: [218, 165, 32], - gray: [128, 128, 128], - green: [0, 128, 0], - greenyellow: [173, 255, 47], - grey: [128, 128, 128], - honeydew: [240, 255, 240], - hotpink: [255, 105, 180], - indianred: [205, 92, 92], - indigo: [75, 0, 130], - ivory: [255, 255, 240], - khaki: [240, 230, 140], - lavender: [230, 230, 250], - lavenderblush: [255, 240, 245], - lawngreen: [124, 252, 0], - lemonchiffon: [255, 250, 205], - lightblue: [173, 216, 230], - lightcoral: [240, 128, 128], - lightcyan: [224, 255, 255], - lightgoldenrodyellow: [250, 250, 210], - lightgray: [211, 211, 211], - lightgreen: [144, 238, 144], - lightgrey: [211, 211, 211], - lightpink: [255, 182, 193], - lightsalmon: [255, 160, 122], - lightseagreen: [32, 178, 170], - lightskyblue: [135, 206, 250], - lightslategray: [119, 136, 153], - lightslategrey: [119, 136, 153], - lightsteelblue: [176, 196, 222], - lightyellow: [255, 255, 224], - lime: [0, 255, 0], - limegreen: [50, 205, 50], - linen: [250, 240, 230], - magenta: [255, 0, 255], - maroon: [128, 0, 0], - mediumaquamarine: [102, 205, 170], - mediumblue: [0, 0, 205], - mediumorchid: [186, 85, 211], - mediumpurple: [147, 112, 219], - mediumseagreen: [60, 179, 113], - mediumslateblue: [123, 104, 238], - mediumspringgreen: [0, 250, 154], - mediumturquoise: [72, 209, 204], - mediumvioletred: [199, 21, 133], - midnightblue: [25, 25, 112], - mintcream: [245, 255, 250], - mistyrose: [255, 228, 225], - moccasin: [255, 228, 181], - navajowhite: [255, 222, 173], - navy: [0, 0, 128], - oldlace: [253, 245, 230], - olive: [128, 128, 0], - olivedrab: [107, 142, 35], - orange: [255, 165, 0], - orangered: [255, 69, 0], - orchid: [218, 112, 214], - palegoldenrod: [238, 232, 170], - palegreen: [152, 251, 152], - paleturquoise: [175, 238, 238], - palevioletred: [219, 112, 147], - papayawhip: [255, 239, 213], - peachpuff: [255, 218, 185], - peru: [205, 133, 63], - pink: [255, 192, 203], - plum: [221, 160, 203], - powderblue: [176, 224, 230], - purple: [128, 0, 128], - rebeccapurple: [102, 51, 153], - red: [255, 0, 0], - rosybrown: [188, 143, 143], - royalblue: [65, 105, 225], - saddlebrown: [139, 69, 19], - salmon: [250, 128, 114], - sandybrown: [244, 164, 96], - seagreen: [46, 139, 87], - seashell: [255, 245, 238], - sienna: [160, 82, 45], - silver: [192, 192, 192], - skyblue: [135, 206, 235], - slateblue: [106, 90, 205], - slategray: [119, 128, 144], - slategrey: [119, 128, 144], - snow: [255, 255, 250], - springgreen: [0, 255, 127], - steelblue: [70, 130, 180], - tan: [210, 180, 140], - teal: [0, 128, 128], - thistle: [216, 191, 216], - transparent: [255, 255, 255, 0], - tomato: [255, 99, 71], - turquoise: [64, 224, 208], - violet: [238, 130, 238], - wheat: [245, 222, 179], - white: [255, 255, 255], - whitesmoke: [245, 245, 245], - yellow: [255, 255, 0], - yellowgreen: [154, 205, 5], - }, - r = /rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/; - Konva.Util = { - _isElement: function (t) { - return !(!t || 1 != t.nodeType); - }, - _isFunction: function (t) { - return !!(t && t.constructor && t.call && t.apply); - }, - _isObject: function (t) { - return !!t && t.constructor === Object; - }, - _isArray: function (t) { - return '[object Array]' === Object.prototype.toString.call(t); - }, - _isNumber: function (t) { - return '[object Number]' === Object.prototype.toString.call(t) && !isNaN(t) && isFinite(t); - }, - _isString: function (t) { - return '[object String]' === Object.prototype.toString.call(t); - }, - _isBoolean: function (t) { - return '[object Boolean]' === Object.prototype.toString.call(t); - }, - isObject: function (t) { - return t instanceof Object; - }, - isValidSelector: function (t) { - if ('string' != typeof t) return !1; - var e = t[0]; - return '#' === e || '.' === e || e === e.toUpperCase(); - }, - _sign: function (t) { - return 0 === t ? 0 : 0 < t ? 1 : -1; - }, - createCanvasElement: function () { - var t = Konva.isBrowser ? Konva.document.createElement('canvas') : new Konva._nodeCanvas(); - try { - t.style = t.style || {}; - } catch (t) {} - return t; - }, - _isInDocument: function (t) { - for (; (t = t.parentNode); ) if (t == Konva.document) return !0; - return !1; - }, - _simplifyArray: function (t) { - var e, - i, - n = [], - a = t.length, - r = Konva.Util; - for (e = 0; e < a; e++) - (i = t[e]), - r._isNumber(i) ? (i = Math.round(1e3 * i) / 1e3) : r._isString(i) || (i = i.toString()), - n.push(i); - return n; - }, - _getImage: function (t, e) { - var i, n; - if (t) - if (this._isElement(t)) e(t); - else if (this._isString(t)) - ((i = new Konva.window.Image()).onload = function () { - e(i); - }), - (i.src = t); - else if (t.data) { - ((n = Konva.Util.createCanvasElement()).width = t.width), - (n.height = t.height), - n.getContext('2d').putImageData(t, 0, 0), - this._getImage(n.toDataURL(), e); - } else e(null); - else e(null); - }, - _getRGBAString: function (t) { - return ['rgba(', t.red || 0, ',', t.green || 0, ',', t.blue || 0, ',', t.alpha || 1, ')'].join(''); - }, - _rgbToHex: function (t, e, i) { - return ((1 << 24) + (t << 16) + (e << 8) + i).toString(16).slice(1); - }, - _hexToRgb: function (t) { - t = t.replace('#', ''); - var e = parseInt(t, 16); - return { r: (e >> 16) & 255, g: (e >> 8) & 255, b: 255 & e }; - }, - getRandomColor: function () { - for (var t = ((16777215 * Math.random()) << 0).toString(16); t.length < 6; ) t = '0' + t; - return '#' + t; - }, - get: function (t, e) { - return void 0 === t ? e : t; - }, - getRGB: function (t) { - var e; - return t in a - ? { r: (e = a[t])[0], g: e[1], b: e[2] } - : '#' === t[0] - ? this._hexToRgb(t.substring(1)) - : 'rgb(' === t.substr(0, 4) - ? ((e = r.exec(t.replace(/ /g, ''))), - { r: parseInt(e[1], 10), g: parseInt(e[2], 10), b: parseInt(e[3], 10) }) - : { r: 0, g: 0, b: 0 }; - }, - colorToRGBA: function (t) { - return ( - (t = t || 'black'), - Konva.Util._namedColorToRBA(t) || - Konva.Util._hex3ColorToRGBA(t) || - Konva.Util._hex6ColorToRGBA(t) || - Konva.Util._rgbColorToRGBA(t) || - Konva.Util._rgbaColorToRGBA(t) - ); - }, - _namedColorToRBA: function (t) { - var e = a[t.toLowerCase()]; - return e ? { r: e[0], g: e[1], b: e[2], a: 1 } : null; - }, - _rgbColorToRGBA: function (t) { - if (0 === t.indexOf('rgb(')) { - var e = (t = t.match(/rgb\(([^)]+)\)/)[1]).split(/ *, */).map(Number); - return { r: e[0], g: e[1], b: e[2], a: 1 }; - } - }, - _rgbaColorToRGBA: function (t) { - if (0 === t.indexOf('rgba(')) { - var e = (t = t.match(/rgba\(([^)]+)\)/)[1]).split(/ *, */).map(Number); - return { r: e[0], g: e[1], b: e[2], a: e[3] }; - } - }, - _hex6ColorToRGBA: function (t) { - if ('#' === t[0] && 7 === t.length) - return { - r: parseInt(t.slice(1, 3), 16), - g: parseInt(t.slice(3, 5), 16), - b: parseInt(t.slice(5, 7), 16), - a: 1, - }; - }, - _hex3ColorToRGBA: function (t) { - if ('#' === t[0] && 4 === t.length) - return { r: parseInt(t[1] + t[1], 16), g: parseInt(t[2] + t[2], 16), b: parseInt(t[3] + t[3], 16), a: 1 }; - }, - _merge: function (t, e) { - var i = this._clone(e); - for (var n in t) this._isObject(t[n]) ? (i[n] = this._merge(t[n], i[n])) : (i[n] = t[n]); - return i; - }, - haveIntersection: function (t, e) { - return !(e.x > t.x + t.width || e.x + e.width < t.x || e.y > t.y + t.height || e.y + e.height < t.y); - }, - cloneObject: function (t) { - var e = {}; - for (var i in t) - this._isObject(t[i]) - ? (e[i] = this.cloneObject(t[i])) - : this._isArray(t[i]) - ? (e[i] = this.cloneArray(t[i])) - : (e[i] = t[i]); - return e; - }, - cloneArray: function (t) { - return t.slice(0); - }, - _degToRad: function (t) { - return t * e; - }, - _radToDeg: function (t) { - return t * i; - }, - _capitalize: function (t) { - return t.charAt(0).toUpperCase() + t.slice(1); - }, - throw: function (t) { - throw new Error(n + t); - }, - error: function (t) { - console.error(n + t); - }, - warn: function (t) { - Konva.global.console && console.warn && Konva.showWarnings && console.warn('Konva warning: ' + t); - }, - extend: function (t, e) { - function i() { - this.constructor = t; - } - i.prototype = e.prototype; - var n = t.prototype; - for (var a in ((t.prototype = new i()), n)) n.hasOwnProperty(a) && (t.prototype[a] = n[a]); - (t.__super__ = e.prototype), (t.super = e); - }, - addMethods: function (t, e) { - var i; - for (i in e) t.prototype[i] = e[i]; - }, - _getControlPoints: function (t, e, i, n, a, r, o) { - var s = Math.sqrt(Math.pow(i - t, 2) + Math.pow(n - e, 2)), - h = Math.sqrt(Math.pow(a - i, 2) + Math.pow(r - n, 2)), - l = (o * s) / (s + h), - c = (o * h) / (s + h); - return [i - l * (a - t), n - l * (r - e), i + c * (a - t), n + c * (r - e)]; - }, - _expandPoints: function (t, e) { - var i, - n, - a = t.length, - r = []; - for (i = 2; i < a - 2; i += 2) - (n = Konva.Util._getControlPoints(t[i - 2], t[i - 1], t[i], t[i + 1], t[i + 2], t[i + 3], e)), - r.push(n[0]), - r.push(n[1]), - r.push(t[i]), - r.push(t[i + 1]), - r.push(n[2]), - r.push(n[3]); - return r; - }, - _removeLastLetter: function (t) { - return t.substring(0, t.length - 1); - }, - each: function (t, e) { - for (var i in t) e(i, t[i]); - }, - _inRange: function (t, e, i) { - return e <= t && t < i; - }, - _getProjectionToSegment: function (t, e, i, n, a, r) { - var o, - s, - h, - l = (t - i) * (t - i) + (e - n) * (e - n); - if (0 == l) (o = t), (s = e), (h = (a - i) * (a - i) + (r - n) * (r - n)); - else { - var c = ((a - t) * (i - t) + (r - e) * (n - e)) / l; - h = - c < 0 - ? ((o = t) - a) * (t - a) + ((s = e) - r) * (e - r) - : 1 < c - ? ((o = i) - a) * (i - a) + ((s = n) - r) * (n - r) - : ((o = t + c * (i - t)) - a) * (o - a) + ((s = e + c * (n - e)) - r) * (s - r); - } - return [o, s, h]; - }, - _getProjectionToLine: function (s, h, l) { - var c = Konva.Util.cloneObject(s), - d = Number.MAX_VALUE; - return ( - h.forEach(function (t, e) { - if (l || e !== h.length - 1) { - var i = h[(e + 1) % h.length], - n = Konva.Util._getProjectionToSegment(t.x, t.y, i.x, i.y, s.x, s.y), - a = n[0], - r = n[1], - o = n[2]; - o < d && ((c.x = a), (c.y = r), (d = o)); - } - }), - c - ); - }, - _prepareArrayForTween: function (t, e, i) { - var n, - a = [], - r = []; - if (t.length > e.length) { - var o = e; - (e = t), (t = o); - } - for (n = 0; n < t.length; n += 2) a.push({ x: t[n], y: t[n + 1] }); - for (n = 0; n < e.length; n += 2) r.push({ x: e[n], y: e[n + 1] }); - var s = []; - return ( - r.forEach(function (t) { - var e = Konva.Util._getProjectionToLine(t, a, i); - s.push(e.x), s.push(e.y); - }), - s - ); - }, - _prepareToStringify: function (t) { - var e; - for (var i in ((t.visitedByCircularReferenceRemoval = !0), t)) - if (t.hasOwnProperty(i) && t[i] && 'object' == typeof t[i]) - if ( - ((e = Object.getOwnPropertyDescriptor(t, i)), - t[i].visitedByCircularReferenceRemoval || Konva.Util._isElement(t[i])) - ) { - if (!e.configurable) return null; - delete t[i]; - } else if (null === Konva.Util._prepareToStringify(t[i])) { - if (!e.configurable) return null; - delete t[i]; - } - return delete t.visitedByCircularReferenceRemoval, t; - }, - }; - })(), - (function () { - 'use strict'; - var i; - (Konva.Canvas = function (t) { - this.init(t); - }), - (Konva.Canvas.prototype = { - init: function (t) { - var e = - (t || {}).pixelRatio || - Konva.pixelRatio || - (function () { - if (i) return i; - var t = Konva.Util.createCanvasElement().getContext('2d'); - return (i = - (Konva.window.devicePixelRatio || 1) / - (t.webkitBackingStorePixelRatio || - t.mozBackingStorePixelRatio || - t.msBackingStorePixelRatio || - t.oBackingStorePixelRatio || - t.backingStorePixelRatio || - 1)); - })(); - (this.pixelRatio = e), - (this._canvas = Konva.Util.createCanvasElement()), - (this._canvas.style.padding = 0), - (this._canvas.style.margin = 0), - (this._canvas.style.border = 0), - (this._canvas.style.background = 'transparent'), - (this._canvas.style.position = 'absolute'), - (this._canvas.style.top = 0), - (this._canvas.style.left = 0); - }, - getContext: function () { - return this.context; - }, - getPixelRatio: function () { - return this.pixelRatio; - }, - setPixelRatio: function (t) { - var e = this.pixelRatio; - (this.pixelRatio = t), this.setSize(this.getWidth() / e, this.getHeight() / e); - }, - setWidth: function (t) { - (this.width = this._canvas.width = t * this.pixelRatio), (this._canvas.style.width = t + 'px'); - var e = this.pixelRatio; - this.getContext()._context.scale(e, e); - }, - setHeight: function (t) { - (this.height = this._canvas.height = t * this.pixelRatio), (this._canvas.style.height = t + 'px'); - var e = this.pixelRatio; - this.getContext()._context.scale(e, e); - }, - getWidth: function () { - return this.width; - }, - getHeight: function () { - return this.height; - }, - setSize: function (t, e) { - this.setWidth(t), this.setHeight(e); - }, - toDataURL: function (t, e) { - try { - return this._canvas.toDataURL(t, e); - } catch (t) { - try { - return this._canvas.toDataURL(); - } catch (t) { - return Konva.Util.warn('Unable to get data URL. ' + t.message), ''; - } - } - }, - }), - (Konva.SceneCanvas = function (t) { - var e = t || {}, - i = e.width || 0, - n = e.height || 0; - Konva.Canvas.call(this, e), (this.context = new Konva.SceneContext(this)), this.setSize(i, n); - }), - Konva.Util.extend(Konva.SceneCanvas, Konva.Canvas), - (Konva.HitCanvas = function (t) { - var e = t || {}, - i = e.width || 0, - n = e.height || 0; - Konva.Canvas.call(this, e), - (this.context = new Konva.HitContext(this)), - this.setSize(i, n), - (this.hitCanvas = !0); - }), - Konva.Util.extend(Konva.HitCanvas, Konva.Canvas); - })(), - (function () { - 'use strict'; - var s = [ - 'arc', - 'arcTo', - 'beginPath', - 'bezierCurveTo', - 'clearRect', - 'clip', - 'closePath', - 'createLinearGradient', - 'createPattern', - 'createRadialGradient', - 'drawImage', - 'fill', - 'fillText', - 'getImageData', - 'createImageData', - 'lineTo', - 'moveTo', - 'putImageData', - 'quadraticCurveTo', - 'rect', - 'restore', - 'rotate', - 'save', - 'scale', - 'setLineDash', - 'setTransform', - 'stroke', - 'strokeText', - 'transform', - 'translate', - ]; - (Konva.Context = function (t) { - this.init(t); - }), - (Konva.Context.prototype = { - init: function (t) { - (this.canvas = t), - (this._context = t._canvas.getContext('2d')), - Konva.enableTrace && ((this.traceArr = []), this._enableTrace()); - }, - fillShape: function (t) { - t.getFillEnabled() && this._fill(t); - }, - strokeShape: function (t) { - t.getStrokeEnabled() && this._stroke(t); - }, - fillStrokeShape: function (t) { - t.getFillEnabled() && this._fill(t), t.getStrokeEnabled() && this._stroke(t); - }, - getTrace: function (t) { - var e, - i, - n, - a, - r = this.traceArr, - o = r.length, - s = ''; - for (e = 0; e < o; e++) - (n = (i = r[e]).method) - ? ((a = i.args), - (s += n), - t - ? (s += '()') - : Konva.Util._isArray(a[0]) - ? (s += '([' + a.join(',') + '])') - : (s += '(' + a.join(',') + ')')) - : ((s += i.property), t || (s += '=' + i.val)), - (s += ';'); - return s; - }, - clearTrace: function () { - this.traceArr = []; - }, - _trace: function (t) { - var e = this.traceArr; - e.push(t), e.length >= Konva.traceArrMax && e.shift(); - }, - reset: function () { - var t = this.getCanvas().getPixelRatio(); - this.setTransform(1 * t, 0, 0, 1 * t, 0, 0); - }, - getCanvas: function () { - return this.canvas; - }, - clear: function (t) { - var e = this.getCanvas(); - t - ? this.clearRect(t.x || 0, t.y || 0, t.width || 0, t.height || 0) - : this.clearRect(0, 0, e.getWidth() / e.pixelRatio, e.getHeight() / e.pixelRatio); - }, - _applyLineCap: function (t) { - var e = t.getLineCap(); - e && this.setAttr('lineCap', e); - }, - _applyOpacity: function (t) { - var e = t.getAbsoluteOpacity(); - 1 !== e && this.setAttr('globalAlpha', e); - }, - _applyLineJoin: function (t) { - var e = t.getLineJoin(); - e && this.setAttr('lineJoin', e); - }, - setAttr: function (t, e) { - this._context[t] = e; - }, - arc: function () { - var t = arguments; - this._context.arc(t[0], t[1], t[2], t[3], t[4], t[5]); - }, - beginPath: function () { - this._context.beginPath(); - }, - bezierCurveTo: function () { - var t = arguments; - this._context.bezierCurveTo(t[0], t[1], t[2], t[3], t[4], t[5]); - }, - clearRect: function () { - var t = arguments; - this._context.clearRect(t[0], t[1], t[2], t[3]); - }, - clip: function () { - this._context.clip(); - }, - closePath: function () { - this._context.closePath(); - }, - createImageData: function () { - var t = arguments; - return 2 === t.length - ? this._context.createImageData(t[0], t[1]) - : 1 === t.length - ? this._context.createImageData(t[0]) - : void 0; - }, - createLinearGradient: function () { - var t = arguments; - return this._context.createLinearGradient(t[0], t[1], t[2], t[3]); - }, - createPattern: function () { - var t = arguments; - return this._context.createPattern(t[0], t[1]); - }, - createRadialGradient: function () { - var t = arguments; - return this._context.createRadialGradient(t[0], t[1], t[2], t[3], t[4], t[5]); - }, - drawImage: function () { - var t = arguments, - e = this._context; - 3 === t.length - ? e.drawImage(t[0], t[1], t[2]) - : 5 === t.length - ? e.drawImage(t[0], t[1], t[2], t[3], t[4]) - : 9 === t.length && e.drawImage(t[0], t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8]); - }, - isPointInPath: function (t, e) { - return this._context.isPointInPath(t, e); - }, - fill: function () { - this._context.fill(); - }, - fillRect: function (t, e, i, n) { - this._context.fillRect(t, e, i, n); - }, - strokeRect: function (t, e, i, n) { - this._context.strokeRect(t, e, i, n); - }, - fillText: function () { - var t = arguments; - this._context.fillText(t[0], t[1], t[2]); - }, - measureText: function (t) { - return this._context.measureText(t); - }, - getImageData: function () { - var t = arguments; - return this._context.getImageData(t[0], t[1], t[2], t[3]); - }, - lineTo: function () { - var t = arguments; - this._context.lineTo(t[0], t[1]); - }, - moveTo: function () { - var t = arguments; - this._context.moveTo(t[0], t[1]); - }, - rect: function () { - var t = arguments; - this._context.rect(t[0], t[1], t[2], t[3]); - }, - putImageData: function () { - var t = arguments; - this._context.putImageData(t[0], t[1], t[2]); - }, - quadraticCurveTo: function () { - var t = arguments; - this._context.quadraticCurveTo(t[0], t[1], t[2], t[3]); - }, - restore: function () { - this._context.restore(); - }, - rotate: function () { - var t = arguments; - this._context.rotate(t[0]); - }, - save: function () { - this._context.save(); - }, - scale: function () { - var t = arguments; - this._context.scale(t[0], t[1]); - }, - setLineDash: function () { - var t = arguments, - e = this._context; - this._context.setLineDash - ? e.setLineDash(t[0]) - : 'mozDash' in e - ? (e.mozDash = t[0]) - : 'webkitLineDash' in e && (e.webkitLineDash = t[0]); - }, - getLineDash: function () { - return this._context.getLineDash(); - }, - setTransform: function () { - var t = arguments; - this._context.setTransform(t[0], t[1], t[2], t[3], t[4], t[5]); - }, - stroke: function () { - this._context.stroke(); - }, - strokeText: function () { - var t = arguments; - this._context.strokeText(t[0], t[1], t[2]); - }, - transform: function () { - var t = arguments; - this._context.transform(t[0], t[1], t[2], t[3], t[4], t[5]); - }, - translate: function () { - var t = arguments; - this._context.translate(t[0], t[1]); - }, - _enableTrace: function () { - var t, - n, - a = this, - e = s.length, - r = Konva.Util._simplifyArray, - i = this.setAttr, - o = function (t) { - var e, - i = a[t]; - a[t] = function () { - return ( - (n = r(Array.prototype.slice.call(arguments, 0))), - (e = i.apply(a, arguments)), - a._trace({ method: t, args: n }), - e - ); - }; - }; - for (t = 0; t < e; t++) o(s[t]); - a.setAttr = function () { - i.apply(a, arguments); - var t = arguments[0], - e = arguments[1]; - ('shadowOffsetX' !== t && 'shadowOffsetY' !== t && 'shadowBlur' !== t) || - (e /= this.canvas.getPixelRatio()), - a._trace({ property: t, val: e }); - }; - }, - }), - [ - 'fillStyle', - 'strokeStyle', - 'shadowColor', - 'shadowBlur', - 'shadowOffsetX', - 'shadowOffsetY', - 'lineCap', - 'lineDashOffset', - 'lineJoin', - 'lineWidth', - 'miterLimit', - 'font', - 'textAlign', - 'textBaseline', - 'globalAlpha', - 'globalCompositeOperation', - ].forEach(function (e) { - Object.defineProperty(Konva.Context.prototype, e, { - get: function () { - return this._context[e]; - }, - set: function (t) { - this._context[e] = t; - }, - }); - }), - (Konva.SceneContext = function (t) { - Konva.Context.call(this, t); - }), - (Konva.SceneContext.prototype = { - _fillColor: function (t) { - var e = t.fill(); - this.setAttr('fillStyle', e), t._fillFunc(this); - }, - _fillPattern: function (t) { - var e = t.getFillPatternX(), - i = t.getFillPatternY(), - n = t.getFillPatternScale(), - a = Konva.getAngle(t.getFillPatternRotation()), - r = t.getFillPatternOffset(); - (e || i) && this.translate(e || 0, i || 0), - a && this.rotate(a), - n && this.scale(n.x, n.y), - r && this.translate(-1 * r.x, -1 * r.y), - this.setAttr( - 'fillStyle', - this.createPattern(t.getFillPatternImage(), t.getFillPatternRepeat() || 'repeat'), - ), - this.fill(); - }, - _fillLinearGradient: function (t) { - var e = t.getFillLinearGradientStartPoint(), - i = t.getFillLinearGradientEndPoint(), - n = t.getFillLinearGradientColorStops(), - a = this.createLinearGradient(e.x, e.y, i.x, i.y); - if (n) { - for (var r = 0; r < n.length; r += 2) a.addColorStop(n[r], n[r + 1]); - this.setAttr('fillStyle', a), t._fillFunc(this); - } - }, - _fillRadialGradient: function (t) { - for ( - var e = t.getFillRadialGradientStartPoint(), - i = t.getFillRadialGradientEndPoint(), - n = t.getFillRadialGradientStartRadius(), - a = t.getFillRadialGradientEndRadius(), - r = t.getFillRadialGradientColorStops(), - o = this.createRadialGradient(e.x, e.y, n, i.x, i.y, a), - s = 0; - s < r.length; - s += 2 - ) - o.addColorStop(r[s], r[s + 1]); - this.setAttr('fillStyle', o), this.fill(); - }, - _fill: function (t) { - var e = t.fill(), - i = t.getFillPriority(); - if (e && 'color' === i) this._fillColor(t); - else { - var n = t.getFillPatternImage(); - if (n && 'pattern' === i) this._fillPattern(t); - else { - var a = t.getFillLinearGradientColorStops(); - if (a && 'linear-gradient' === i) this._fillLinearGradient(t); - else { - var r = t.getFillRadialGradientColorStops(); - r && 'radial-gradient' === i - ? this._fillRadialGradient(t) - : e - ? this._fillColor(t) - : n - ? this._fillPattern(t) - : a - ? this._fillLinearGradient(t) - : r && this._fillRadialGradient(t); - } - } - } - }, - _strokeLinearGradient: function (t) { - var e = t.getStrokeLinearGradientStartPoint(), - i = t.getStrokeLinearGradientEndPoint(), - n = t.getStrokeLinearGradientColorStops(), - a = this.createLinearGradient(e.x, e.y, i.x, i.y); - if (n) { - for (var r = 0; r < n.length; r += 2) a.addColorStop(n[r], n[r + 1]); - this.setAttr('strokeStyle', a); - } - }, - _stroke: function (t) { - var e = t.dash(), - i = t.getStrokeScaleEnabled() || t instanceof Konva.Text; - t.hasStroke() && - (i || (this.save(), this.setTransform(1, 0, 0, 1, 0, 0)), - this._applyLineCap(t), - e && t.dashEnabled() && (this.setLineDash(e), this.setAttr('lineDashOffset', t.dashOffset())), - this.setAttr('lineWidth', t.strokeWidth()), - t.getShadowForStrokeEnabled() || this.setAttr('shadowColor', 'rgba(0,0,0,0)'), - t.getStrokeLinearGradientColorStops() - ? this._strokeLinearGradient(t) - : this.setAttr('strokeStyle', t.stroke()), - t._strokeFunc(this), - i || this.restore()); - }, - _applyShadow: function (t) { - var e = Konva.Util, - i = e.get(t.getShadowRGBA(), 'black'), - n = e.get(t.getShadowBlur(), 5), - a = e.get(t.getShadowOffset(), { x: 0, y: 0 }), - r = t.getAbsoluteScale(), - o = this.canvas.getPixelRatio(), - s = r.x * o, - h = r.y * o; - this.setAttr('shadowColor', i), - this.setAttr('shadowBlur', n * Math.min(Math.abs(s), Math.abs(h))), - this.setAttr('shadowOffsetX', a.x * s), - this.setAttr('shadowOffsetY', a.y * h); - }, - _applyGlobalCompositeOperation: function (t) { - var e = t.getGlobalCompositeOperation(); - 'source-over' !== e && this.setAttr('globalCompositeOperation', e); - }, - }), - Konva.Util.extend(Konva.SceneContext, Konva.Context), - (Konva.HitContext = function (t) { - Konva.Context.call(this, t); - }), - (Konva.HitContext.prototype = { - _fill: function (t) { - this.save(), this.setAttr('fillStyle', t.colorKey), t._fillFuncHit(this), this.restore(); - }, - _stroke: function (t) { - if (t.hasStroke() && t.strokeHitEnabled()) { - var e = t.getStrokeScaleEnabled() || t instanceof Konva.Text; - e || (this.save(), this.setTransform(1, 0, 0, 1, 0, 0)), - this._applyLineCap(t), - this.setAttr('lineWidth', t.strokeWidth()), - this.setAttr('strokeStyle', t.colorKey), - t._strokeFuncHit(this), - e || this.restore(); - } - }, - }), - Konva.Util.extend(Konva.HitContext, Konva.Context); - })(), - (function () { - 'use strict'; - var d = 'get', - u = 'set'; - (Konva.Factory = { - addGetterSetter: function (t, e, i, n, a) { - this.addGetter(t, e, i), this.addSetter(t, e, n, a), this.addOverloadedGetterSetter(t, e); - }, - addGetter: function (t, e, i) { - var n = d + Konva.Util._capitalize(e); - t.prototype[n] = function () { - var t = this.attrs[e]; - return void 0 === t ? i : t; - }; - }, - addSetter: function (t, e, i, n) { - var a = u + Konva.Util._capitalize(e); - t.prototype[a] = function (t) { - return i && null != t && (t = i.call(this, t, e)), this._setAttr(e, t), n && n.call(this), this; - }; - }, - addComponentsGetterSetter: function (t, n, e, a, r) { - var i, - o, - s = e.length, - h = Konva.Util._capitalize, - l = d + h(n), - c = u + h(n); - (t.prototype[l] = function () { - var t = {}; - for (i = 0; i < s; i++) t[(o = e[i])] = this.getAttr(n + h(o)); - return t; - }), - (t.prototype[c] = function (t) { - var e, - i = this.attrs[n]; - for (e in (a && (t = a.call(this, t)), t)) t.hasOwnProperty(e) && this._setAttr(n + h(e), t[e]); - return this._fireChangeEvent(n, i, t), r && r.call(this), this; - }), - this.addOverloadedGetterSetter(t, n); - }, - addOverloadedGetterSetter: function (t, e) { - var i = Konva.Util._capitalize(e), - n = u + i, - a = d + i; - t.prototype[e] = function () { - return arguments.length ? (this[n](arguments[0]), this) : this[a](); - }; - }, - addDeprecatedGetterSetter: function (t, e, i, n) { - Konva.Util.error('Adding deprecated ' + e); - var a = d + Konva.Util._capitalize(e), - r = e + ' property is deprecated and will be removed soon. Look at Konva change log for more information.'; - (t.prototype[a] = function () { - Konva.Util.error(r); - var t = this.attrs[e]; - return void 0 === t ? i : t; - }), - this.addSetter(t, e, n, function () { - Konva.Util.error(r); - }), - this.addOverloadedGetterSetter(t, e); - }, - backCompat: function (o, t) { - Konva.Util.each(t, function (t, e) { - var i = o.prototype[e], - n = d + Konva.Util._capitalize(t), - a = u + Konva.Util._capitalize(t); - function r() { - i.apply(this, arguments), - Konva.Util.error('"' + t + '" method is deprecated and will be removed soon. Use ""' + e + '" instead.'); - } - (o.prototype[t] = r), (o.prototype[n] = r), (o.prototype[a] = r); - }); - }, - afterSetFilter: function () { - this._filterUpToDate = !1; - }, - }), - (Konva.Validators = { - RGBComponent: function (t) { - return 255 < t ? 255 : t < 0 ? 0 : Math.round(t); - }, - alphaComponent: function (t) { - return 1 < t ? 1 : t < 1e-4 ? 1e-4 : t; - }, - _formatValue: function (t) { - return Konva.Util._isString(t) - ? '"' + t + '"' - : '[object Number]' === Object.prototype.toString.call(t) - ? t - : Konva.Util._isBoolean(t) - ? t - : Object.prototype.toString.call(t); - }, - getNumberValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - Konva.Util._isNumber(t) || - Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a number.', - ), - t - ); - }; - }, - getNumberOrAutoValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - Konva.Util._isNumber(t) || - 'auto' === t || - Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a number or "auto".', - ), - t - ); - }; - }, - getStringValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - Konva.Util._isString(t) || - Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a string.', - ), - t - ); - }; - }, - getFunctionValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - Konva.Util._isFunction(t) || - Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a function.', - ), - t - ); - }; - }, - getNumberArrayValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - Konva.Util._isArray(t) - ? t.forEach(function (t) { - Konva.Util._isNumber(t) || - Konva.Util.warn( - '"' + - e + - '" attribute has non numeric element ' + - t + - '. Make sure that all elements are numbers.', - ); - }) - : Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a array of numbers.', - ), - t - ); - }; - }, - getBooleanValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - !0 === t || - !1 === t || - Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a boolean.', - ), - t - ); - }; - }, - }); - })(), - (function (v) { - 'use strict'; - var p = 'absoluteOpacity', - i = 'absoluteTransform', - m = 'absoluteScale', - e = 'listening', - r = 'mouseenter', - o = 'mouseleave', - l = 'Shape', - n = 'transform', - a = 'visible', - c = ['id'], - s = [ - 'xChange.konva', - 'yChange.konva', - 'scaleXChange.konva', - 'scaleYChange.konva', - 'skewXChange.konva', - 'skewYChange.konva', - 'rotationChange.konva', - 'offsetXChange.konva', - 'offsetYChange.konva', - 'transformsEnabledChange.konva', - ].join(' '), - h = ['scaleXChange.konva', 'scaleYChange.konva'].join(' '); - (v.Node = function (t) { - this._init(t); - }), - v.Util.addMethods(v.Node, { - _init: function (t) { - (this._id = v.idCounter++), - (this.eventListeners = {}), - (this.attrs = {}), - (this._cache = {}), - (this._filterUpToDate = !1), - (this._isUnderCache = !1), - this.setAttrs(t), - this.on(s, function () { - this._clearCache(n), this._clearSelfAndDescendantCache(i); - }), - this.on(h, function () { - this._clearSelfAndDescendantCache(m); - }), - this.on('visibleChange.konva', function () { - this._clearSelfAndDescendantCache(a); - }), - this.on('listeningChange.konva', function () { - this._clearSelfAndDescendantCache(e); - }), - this.on('opacityChange.konva', function () { - this._clearSelfAndDescendantCache(p); - }); - }, - _clearCache: function (t) { - t ? delete this._cache[t] : (this._cache = {}); - }, - _getCache: function (t, e) { - return void 0 === this._cache[t] && (this._cache[t] = e.call(this)), this._cache[t]; - }, - _clearSelfAndDescendantCache: function (e) { - this._clearCache(e), - this.children && - this.getChildren().each(function (t) { - t._clearSelfAndDescendantCache(e); - }); - }, - clearCache: function () { - return delete this._cache.canvas, (this._filterUpToDate = !1), this; - }, - cache: function (t) { - var e = t || {}, - i = this.getClientRect({ skipTransform: !0, relativeTo: this.getParent() }), - n = e.width || i.width, - a = e.height || i.height, - r = e.pixelRatio, - o = e.x || i.x, - s = e.y || i.y, - h = e.offset || 0, - l = e.drawBorder || !1; - if (n && a) { - (n += 2 * h), (a += 2 * h), (o -= h), (s -= h); - var c = new v.SceneCanvas({ pixelRatio: r, width: n, height: a }), - d = new v.SceneCanvas({ pixelRatio: r, width: n, height: a }), - u = new v.HitCanvas({ pixelRatio: 1, width: n, height: a }), - g = c.getContext(), - f = u.getContext(); - return ( - (u.isCache = !0), - this.clearCache(), - g.save(), - f.save(), - g.translate(-o, -s), - f.translate(-o, -s), - (this._isUnderCache = !0), - this._clearSelfAndDescendantCache(p), - this._clearSelfAndDescendantCache(m), - this.drawScene(c, this, !0), - this.drawHit(u, this, !0), - (this._isUnderCache = !1), - g.restore(), - f.restore(), - l && - (g.save(), - g.beginPath(), - g.rect(0, 0, n, a), - g.closePath(), - g.setAttr('strokeStyle', 'red'), - g.setAttr('lineWidth', 5), - g.stroke(), - g.restore()), - (this._cache.canvas = { scene: c, filter: d, hit: u, x: o, y: s }), - this - ); - } - v.Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.'); - }, - getClientRect: function () { - throw new Error('abstract "getClientRect" method call'); - }, - _transformedRect: function (t, e) { - var i, - n, - a, - r, - o = [ - { x: t.x, y: t.y }, - { x: t.x + t.width, y: t.y }, - { x: t.x + t.width, y: t.y + t.height }, - { x: t.x, y: t.y + t.height }, - ], - s = this.getAbsoluteTransform(e); - return ( - o.forEach(function (t) { - var e = s.point(t); - void 0 === i && ((i = a = e.x), (n = r = e.y)), - (i = Math.min(i, e.x)), - (n = Math.min(n, e.y)), - (a = Math.max(a, e.x)), - (r = Math.max(r, e.y)); - }), - { x: i, y: n, width: a - i, height: r - n } - ); - }, - _drawCachedSceneCanvas: function (t) { - t.save(), - t._applyOpacity(this), - t._applyGlobalCompositeOperation(this), - t.translate(this._cache.canvas.x, this._cache.canvas.y); - var e = this._getCachedSceneCanvas(), - i = e.pixelRatio; - t.drawImage(e._canvas, 0, 0, e.width / i, e.height / i), t.restore(); - }, - _drawCachedHitCanvas: function (t) { - var e = this._cache.canvas.hit; - t.save(), t.translate(this._cache.canvas.x, this._cache.canvas.y), t.drawImage(e._canvas, 0, 0), t.restore(); - }, - _getCachedSceneCanvas: function () { - var t, - e, - i, - n, - a = this.filters(), - r = this._cache.canvas, - o = r.scene, - s = r.filter, - h = s.getContext(); - if (a) { - if (!this._filterUpToDate) { - var l = o.pixelRatio; - try { - for ( - t = a.length, - h.clear(), - h.drawImage(o._canvas, 0, 0, o.getWidth() / l, o.getHeight() / l), - e = h.getImageData(0, 0, s.getWidth(), s.getHeight()), - i = 0; - i < t; - i++ - ) - 'function' == typeof (n = a[i]) - ? (n.call(this, e), h.putImageData(e, 0, 0)) - : v.Util.error( - 'Filter should be type of function, but got ' + - typeof n + - ' insted. Please check correct filters', - ); - } catch (t) { - v.Util.error('Unable to apply filter. ' + t.message); - } - this._filterUpToDate = !0; - } - return s; - } - return o; - }, - on: function (t, e) { - if (3 === arguments.length) return this._delegate.apply(this, arguments); - var i, - n, - a, - r, - o = t.split(' '), - s = o.length; - for (i = 0; i < s; i++) - (a = (n = o[i].split('.'))[0]), - (r = n[1] || ''), - this.eventListeners[a] || (this.eventListeners[a] = []), - this.eventListeners[a].push({ name: r, handler: e }); - return this; - }, - off: function (t, e) { - var i, - n, - a, - r, - o, - s = (t || '').split(' '), - h = s.length; - if (!t) for (n in this.eventListeners) this._off(n); - for (i = 0; i < h; i++) - if (((r = (a = s[i].split('.'))[0]), (o = a[1]), r)) this.eventListeners[r] && this._off(r, o, e); - else for (n in this.eventListeners) this._off(n, o, e); - return this; - }, - dispatchEvent: function (t) { - var e = { target: this, type: t.type, evt: t }; - return this.fire(t.type, e), this; - }, - addEventListener: function (t, e) { - return ( - this.on(t, function (t) { - e.call(this, t.evt); - }), - this - ); - }, - removeEventListener: function (t) { - return this.off(t), this; - }, - _delegate: function (t, n, a) { - var r = this; - this.on(t, function (t) { - for (var e = t.target.findAncestors(n, !0, r), i = 0; i < e.length; i++) - ((t = v.Util.cloneObject(t)).currentTarget = e[i]), a.call(e[i], t); - }); - }, - remove: function () { - var t = this.getParent(); - return ( - t && t.children && (t.children.splice(this.index, 1), t._setChildrenIndices(), delete this.parent), - this._clearSelfAndDescendantCache('stage'), - this._clearSelfAndDescendantCache(i), - this._clearSelfAndDescendantCache(a), - this._clearSelfAndDescendantCache(e), - this._clearSelfAndDescendantCache(p), - this - ); - }, - destroy: function () { - v._removeId(this.getId()); - for (var t = (this.getName() || '').split(/\s/g), e = 0; e < t.length; e++) { - var i = t[e]; - v._removeName(i, this._id); - } - return this.remove(), this; - }, - getAttr: function (t) { - var e = 'get' + v.Util._capitalize(t); - return v.Util._isFunction(this[e]) ? this[e]() : this.attrs[t]; - }, - getAncestors: function () { - for (var t = this.getParent(), e = new v.Collection(); t; ) e.push(t), (t = t.getParent()); - return e; - }, - getAttrs: function () { - return this.attrs || {}; - }, - setAttrs: function (t) { - var e, i; - if (!t) return this; - for (e in t) - 'children' !== e && - ((i = 'set' + v.Util._capitalize(e)), - v.Util._isFunction(this[i]) ? this[i](t[e]) : this._setAttr(e, t[e])); - return this; - }, - isListening: function () { - return this._getCache(e, this._isListening); - }, - _isListening: function () { - var t = this.getListening(), - e = this.getParent(); - return 'inherit' === t ? !e || e.isListening() : t; - }, - isVisible: function () { - return this._getCache(a, this._isVisible); - }, - _isVisible: function (t) { - var e = this.getVisible(), - i = this.getParent(); - return (t === i && 'inherit' === e) || (t === i ? e : 'inherit' === e ? !i || i._isVisible(t) : e); - }, - shouldDrawHit: function () { - var t = this.getLayer(); - return ( - (!t && this.isListening() && this.isVisible()) || - (t && t.hitGraphEnabled() && this.isListening() && this.isVisible()) - ); - }, - show: function () { - return this.setVisible(!0), this; - }, - hide: function () { - return this.setVisible(!1), this; - }, - getZIndex: function () { - return this.index || 0; - }, - getAbsoluteZIndex: function () { - var i, - n, - a, - r, - o = this.getDepth(), - s = this, - h = 0; - return ( - 'Stage' !== s.nodeType && - (function t(e) { - for (i = [], n = e.length, a = 0; a < n; a++) - (r = e[a]), - h++, - r.nodeType !== l && (i = i.concat(r.getChildren().toArray())), - r._id === s._id && (a = n); - 0 < i.length && i[0].getDepth() <= o && t(i); - })(s.getStage().getChildren()), - h - ); - }, - getDepth: function () { - for (var t = 0, e = this.parent; e; ) t++, (e = e.parent); - return t; - }, - setPosition: function (t) { - return this.setX(t.x), this.setY(t.y), this; - }, - getPosition: function () { - return { x: this.getX(), y: this.getY() }; - }, - getAbsolutePosition: function (t) { - var e = this.getAbsoluteTransform(t).getMatrix(), - i = new v.Transform(), - n = this.offset(); - return (i.m = e.slice()), i.translate(n.x, n.y), i.getTranslation(); - }, - setAbsolutePosition: function (t) { - var e, - i = this._clearTransform(); - return ( - (this.attrs.x = i.x), - (this.attrs.y = i.y), - delete i.x, - delete i.y, - (e = this.getAbsoluteTransform()).invert(), - e.translate(t.x, t.y), - (t = { x: this.attrs.x + e.getTranslation().x, y: this.attrs.y + e.getTranslation().y }), - this.setPosition({ x: t.x, y: t.y }), - this._setTransform(i), - this - ); - }, - _setTransform: function (t) { - var e; - for (e in t) this.attrs[e] = t[e]; - this._clearCache(n), this._clearSelfAndDescendantCache(i); - }, - _clearTransform: function () { - var t = { - x: this.getX(), - y: this.getY(), - rotation: this.getRotation(), - scaleX: this.getScaleX(), - scaleY: this.getScaleY(), - offsetX: this.getOffsetX(), - offsetY: this.getOffsetY(), - skewX: this.getSkewX(), - skewY: this.getSkewY(), - }; - return ( - (this.attrs.x = 0), - (this.attrs.y = 0), - (this.attrs.rotation = 0), - (this.attrs.scaleX = 1), - (this.attrs.scaleY = 1), - (this.attrs.offsetX = 0), - (this.attrs.offsetY = 0), - (this.attrs.skewX = 0), - (this.attrs.skewY = 0), - this._clearCache(n), - this._clearSelfAndDescendantCache(i), - t - ); - }, - move: function (t) { - var e = t.x, - i = t.y, - n = this.getX(), - a = this.getY(); - return void 0 !== e && (n += e), void 0 !== i && (a += i), this.setPosition({ x: n, y: a }), this; - }, - _eachAncestorReverse: function (t, e) { - var i, - n, - a = [], - r = this.getParent(); - if (e && e._id === this._id) t(this); - else { - for (a.unshift(this); r && (!e || r._id !== e._id); ) a.unshift(r), (r = r.parent); - for (i = a.length, n = 0; n < i; n++) t(a[n]); - } - }, - rotate: function (t) { - return this.setRotation(this.getRotation() + t), this; - }, - moveToTop: function () { - if (!this.parent) return v.Util.warn('Node has no parent. moveToTop function is ignored.'), !1; - var t = this.index; - return ( - this.parent.children.splice(t, 1), this.parent.children.push(this), this.parent._setChildrenIndices(), !0 - ); - }, - moveUp: function () { - if (!this.parent) return v.Util.warn('Node has no parent. moveUp function is ignored.'), !1; - var t = this.index; - return ( - t < this.parent.getChildren().length - 1 && - (this.parent.children.splice(t, 1), - this.parent.children.splice(t + 1, 0, this), - this.parent._setChildrenIndices(), - !0) - ); - }, - moveDown: function () { - if (!this.parent) return v.Util.warn('Node has no parent. moveDown function is ignored.'), !1; - var t = this.index; - return ( - 0 < t && - (this.parent.children.splice(t, 1), - this.parent.children.splice(t - 1, 0, this), - this.parent._setChildrenIndices(), - !0) - ); - }, - moveToBottom: function () { - if (!this.parent) return v.Util.warn('Node has no parent. moveToBottom function is ignored.'), !1; - var t = this.index; - return ( - 0 < t && - (this.parent.children.splice(t, 1), - this.parent.children.unshift(this), - this.parent._setChildrenIndices(), - !0) - ); - }, - setZIndex: function (t) { - if (!this.parent) return v.Util.warn('Node has no parent. zIndex parameter is ignored.'), !1; - var e = this.index; - return ( - this.parent.children.splice(e, 1), - this.parent.children.splice(t, 0, this), - this.parent._setChildrenIndices(), - this - ); - }, - getAbsoluteOpacity: function () { - return this._getCache(p, this._getAbsoluteOpacity); - }, - _getAbsoluteOpacity: function () { - var t = this.getOpacity(), - e = this.getParent(); - return e && !e._isUnderCache && (t *= this.getParent().getAbsoluteOpacity()), t; - }, - moveTo: function (t) { - return this.getParent() !== t && ((this.__originalRemove || this.remove).call(this), t.add(this)), this; - }, - toObject: function () { - var t, - e, - i, - n = {}, - a = this.getAttrs(); - for (t in ((n.attrs = {}), a)) - (e = a[t]), - (i = 'function' == typeof this[t] && this[t]), - delete a[t], - (i ? i.call(this) : null) !== (a[t] = e) && (n.attrs[t] = e); - return (n.className = this.getClassName()), v.Util._prepareToStringify(n); - }, - toJSON: function () { - return JSON.stringify(this.toObject()); - }, - getParent: function () { - return this.parent; - }, - findAncestors: function (t, e, i) { - var n = []; - e && this._isMatch(t) && n.push(this); - for (var a = this.parent; a; ) { - if (a === i) return n; - a._isMatch(t) && n.push(a), (a = a.parent); - } - return n; - }, - findAncestor: function (t, e, i) { - return this.findAncestors(t, e, i)[0]; - }, - _isMatch: function (t) { - if (!t) return !1; - var e, - i, - n = t.replace(/ /g, '').split(','), - a = n.length; - for (e = 0; e < a; e++) - if ( - ((i = n[e]), - v.Util.isValidSelector(i) || - (v.Util.warn( - 'Selector "' + i + '" is invalid. Allowed selectors examples are "#foo", ".bar" or "Group".', - ), - v.Util.warn( - 'If you have a custom shape with such className, please change it to start with upper letter like "Triangle".', - ), - v.Util.warn('Konva is awesome, right?')), - '#' === i.charAt(0)) - ) { - if (this.id() === i.slice(1)) return !0; - } else if ('.' === i.charAt(0)) { - if (this.hasName(i.slice(1))) return !0; - } else if (0 !== this._get(i).length) return !0; - return !1; - }, - getLayer: function () { - var t = this.getParent(); - return t ? t.getLayer() : null; - }, - getStage: function () { - return this._getCache('stage', this._getStage); - }, - _getStage: function () { - var t = this.getParent(); - return t ? t.getStage() : void 0; - }, - fire: function (t, e, i) { - return ((e = e || {}).target = e.target || this), i ? this._fireAndBubble(t, e) : this._fire(t, e), this; - }, - getAbsoluteTransform: function (t) { - return t ? this._getAbsoluteTransform(t) : this._getCache(i, this._getAbsoluteTransform); - }, - _getAbsoluteTransform: function (t) { - var i = new v.Transform(); - return ( - this._eachAncestorReverse(function (t) { - var e = t.transformsEnabled(); - 'all' === e - ? i.multiply(t.getTransform()) - : 'position' === e && i.translate(t.getX() - t.getOffsetX(), t.getY() - t.getOffsetY()); - }, t), - i - ); - }, - getAbsoluteScale: function (t) { - return t ? this._getAbsoluteScale(t) : this._getCache(m, this._getAbsoluteScale); - }, - _getAbsoluteScale: function (t) { - for (var e = this; e; ) e._isUnderCache && (t = e), (e = e.getParent()); - var i = 1, - n = 1; - return ( - this._eachAncestorReverse(function (t) { - (i *= t.scaleX()), (n *= t.scaleY()); - }, t), - { x: i, y: n } - ); - }, - getTransform: function () { - return this._getCache(n, this._getTransform); - }, - _getTransform: function () { - var t = new v.Transform(), - e = this.getX(), - i = this.getY(), - n = v.getAngle(this.getRotation()), - a = this.getScaleX(), - r = this.getScaleY(), - o = this.getSkewX(), - s = this.getSkewY(), - h = this.getOffsetX(), - l = this.getOffsetY(); - return ( - (0 === e && 0 === i) || t.translate(e, i), - 0 !== n && t.rotate(n), - (0 === o && 0 === s) || t.skew(o, s), - (1 === a && 1 === r) || t.scale(a, r), - (0 === h && 0 === l) || t.translate(-1 * h, -1 * l), - t - ); - }, - clone: function (t) { - var e, - i, - n, - a, - r, - o = v.Util.cloneObject(this.attrs); - for (var s in c) { - delete o[c[s]]; - } - for (e in t) o[e] = t[e]; - var h = new this.constructor(o); - for (e in this.eventListeners) - for (n = (i = this.eventListeners[e]).length, a = 0; a < n; a++) - (r = i[a]).name.indexOf('konva') < 0 && - (h.eventListeners[e] || (h.eventListeners[e] = []), h.eventListeners[e].push(r)); - return h; - }, - _toKonvaCanvas: function (t) { - t = t || {}; - var e = this.getClientRect(), - i = this.getStage(), - n = void 0 !== t.x ? t.x : e.x, - a = void 0 !== t.y ? t.y : e.y, - r = t.pixelRatio || 1, - o = new v.SceneCanvas({ - width: t.width || e.width || (i ? i.getWidth() : 0), - height: t.height || e.height || (i ? i.getHeight() : 0), - pixelRatio: r, - }), - s = o.getContext(); - return s.save(), (n || a) && s.translate(-1 * n, -1 * a), this.drawScene(o), s.restore(), o; - }, - toCanvas: function (t) { - return this._toKonvaCanvas(t)._canvas; - }, - toDataURL: function (t) { - var e = (t = t || {}).mimeType || null, - i = t.quality || null, - n = this._toKonvaCanvas(t).toDataURL(e, i); - return t.callback && t.callback(n), n; - }, - toImage: function (t) { - if (!t || !t.callback) throw 'callback required for toImage method config argument'; - var e = t.callback; - delete t.callback, - v.Util._getImage(this.toDataURL(t), function (t) { - e(t); - }); - }, - setSize: function (t) { - return this.setWidth(t.width), this.setHeight(t.height), this; - }, - getSize: function () { - return { width: this.getWidth(), height: this.getHeight() }; - }, - getWidth: function () { - return this.attrs.width || 0; - }, - getHeight: function () { - return this.attrs.height || 0; - }, - getClassName: function () { - return this.className || this.nodeType; - }, - getType: function () { - return this.nodeType; - }, - getDragDistance: function () { - return void 0 !== this.attrs.dragDistance - ? this.attrs.dragDistance - : this.parent - ? this.parent.getDragDistance() - : v.dragDistance; - }, - _get: function (t) { - return this.className === t || this.nodeType === t ? [this] : []; - }, - _off: function (t, e, i) { - var n, - a, - r, - o = this.eventListeners[t]; - for (n = 0; n < o.length; n++) - if ( - ((a = o[n].name), - (r = o[n].handler), - !(('konva' === a && 'konva' !== e) || (e && a !== e) || (i && i !== r))) - ) { - if ((o.splice(n, 1), 0 === o.length)) { - delete this.eventListeners[t]; - break; - } - n--; - } - }, - _fireChangeEvent: function (t, e, i) { - this._fire(t + 'Change', { oldVal: e, newVal: i }); - }, - setId: function (t) { - var e = this.getId(); - return v._removeId(e), v._addId(this, t), this._setAttr('id', t), this; - }, - setName: function (t) { - var e, - i, - n = (this.getName() || '').split(/\s/g), - a = (t || '').split(/\s/g); - for (i = 0; i < n.length; i++) (e = n[i]), -1 === a.indexOf(e) && e && v._removeName(e, this._id); - for (i = 0; i < a.length; i++) (e = a[i]), -1 === n.indexOf(e) && e && v._addName(this, e); - return this._setAttr('name', t), this; - }, - addName: function (t) { - if (!this.hasName(t)) { - var e = this.name(), - i = e ? e + ' ' + t : t; - this.setName(i); - } - return this; - }, - hasName: function (t) { - return -1 !== (this.name() || '').split(/\s/g).indexOf(t); - }, - removeName: function (t) { - var e = (this.name() || '').split(/\s/g), - i = e.indexOf(t); - return -1 !== i && (e.splice(i, 1), this.setName(e.join(' '))), this; - }, - setAttr: function (t, e) { - var i = this['set' + v.Util._capitalize(t)]; - return v.Util._isFunction(i) ? i.call(this, e) : this._setAttr(t, e), this; - }, - _setAttr: function (t, e) { - var i; - ((i = this.attrs[t]) === e && !v.Util.isObject(e)) || - (null == e ? delete this.attrs[t] : (this.attrs[t] = e), this._fireChangeEvent(t, i, e)); - }, - _setComponentAttr: function (t, e, i) { - var n; - void 0 !== i && - ((n = this.attrs[t]) || (this.attrs[t] = this.getAttr(t)), - (this.attrs[t][e] = i), - this._fireChangeEvent(t, n, i)); - }, - _fireAndBubble: function (t, e, i) { - var n = !0; - if ( - (e && this.nodeType === l && (e.target = this), - t === r && i && (this._id === i._id || (this.isAncestorOf && this.isAncestorOf(i))) - ? (n = !1) - : t === o && i && (this._id === i._id || (this.isAncestorOf && this.isAncestorOf(i))) && (n = !1), - n) - ) { - this._fire(t, e); - var a = (t === r || t === o) && i && i.isAncestorOf && i.isAncestorOf(this) && !i.isAncestorOf(this.parent); - ((e && !e.cancelBubble) || !e) && - this.parent && - this.parent.isListening() && - !a && - (i && i.parent - ? this._fireAndBubble.call(this.parent, t, e, i.parent) - : this._fireAndBubble.call(this.parent, t, e)); - } - }, - _fire: function (t, e) { - var i, - n = this.eventListeners[t]; - if ((((e = e || {}).currentTarget = this), (e.type = t), n)) - for (i = 0; i < n.length; i++) n[i].handler.call(this, e); - }, - draw: function () { - return this.drawScene(), this.drawHit(), this; - }, - }), - (v.Node.create = function (t, e) { - return v.Util._isString(t) && (t = JSON.parse(t)), this._createNode(t, e); - }), - (v.Node._createNode = function (t, e) { - var i, - n, - a, - r = v.Node.prototype.getClassName.call(t), - o = t.children; - if ((e && (t.attrs.container = e), (i = new v[r](t.attrs)), o)) - for (n = o.length, a = 0; a < n; a++) i.add(this._createNode(o[a])); - return i; - }), - v.Factory.addOverloadedGetterSetter(v.Node, 'position'), - v.Factory.addGetterSetter(v.Node, 'x', 0, v.Validators.getNumberValidator()), - v.Factory.addGetterSetter(v.Node, 'y', 0, v.Validators.getNumberValidator()), - v.Factory.addGetterSetter(v.Node, 'globalCompositeOperation', 'source-over', v.Validators.getStringValidator()), - v.Factory.addGetterSetter(v.Node, 'opacity', 1, v.Validators.getNumberValidator()), - v.Factory.addGetter(v.Node, 'name'), - v.Factory.addOverloadedGetterSetter(v.Node, 'name'), - v.Factory.addGetter(v.Node, 'id'), - v.Factory.addOverloadedGetterSetter(v.Node, 'id'), - v.Factory.addGetterSetter(v.Node, 'rotation', 0, v.Validators.getNumberValidator()), - v.Factory.addComponentsGetterSetter(v.Node, 'scale', ['x', 'y']), - v.Factory.addGetterSetter(v.Node, 'scaleX', 1, v.Validators.getNumberValidator()), - v.Factory.addGetterSetter(v.Node, 'scaleY', 1, v.Validators.getNumberValidator()), - v.Factory.addComponentsGetterSetter(v.Node, 'skew', ['x', 'y']), - v.Factory.addGetterSetter(v.Node, 'skewX', 0, v.Validators.getNumberValidator()), - v.Factory.addGetterSetter(v.Node, 'skewY', 0, v.Validators.getNumberValidator()), - v.Factory.addComponentsGetterSetter(v.Node, 'offset', ['x', 'y']), - v.Factory.addGetterSetter(v.Node, 'offsetX', 0, v.Validators.getNumberValidator()), - v.Factory.addGetterSetter(v.Node, 'offsetY', 0, v.Validators.getNumberValidator()), - v.Factory.addSetter(v.Node, 'dragDistance', v.Validators.getNumberValidator()), - v.Factory.addOverloadedGetterSetter(v.Node, 'dragDistance'), - v.Factory.addSetter(v.Node, 'width', v.Validators.getNumberValidator()), - v.Factory.addOverloadedGetterSetter(v.Node, 'width'), - v.Factory.addSetter(v.Node, 'height', v.Validators.getNumberValidator()), - v.Factory.addOverloadedGetterSetter(v.Node, 'height'), - v.Factory.addGetterSetter(v.Node, 'listening', 'inherit', function (t) { - return ( - !0 === t || - !1 === t || - 'inherit' === t || - v.Util.warn( - t + ' is a not valid value for "listening" attribute. The value may be true, false or "inherit".', - ), - t - ); - }), - v.Factory.addGetterSetter(v.Node, 'preventDefault', !0, v.Validators.getBooleanValidator()), - v.Factory.addGetterSetter(v.Node, 'filters', null, function (t) { - return (this._filterUpToDate = !1), t; - }), - v.Factory.addGetterSetter(v.Node, 'visible', 'inherit', function (t) { - return ( - !0 === t || - !1 === t || - 'inherit' === t || - v.Util.warn( - t + ' is a not valid value for "visible" attribute. The value may be true, false or "inherit".', - ), - t - ); - }), - v.Factory.addGetterSetter(v.Node, 'transformsEnabled', 'all', v.Validators.getStringValidator()), - v.Factory.addOverloadedGetterSetter(v.Node, 'size'), - v.Factory.backCompat(v.Node, { - rotateDeg: 'rotate', - setRotationDeg: 'setRotation', - getRotationDeg: 'getRotation', - }), - v.Collection.mapMethods(v.Node); - })(Konva), - (function () { - 'use strict'; - Konva.Filters.Grayscale = function (t) { - var e, - i, - n = t.data, - a = n.length; - for (e = 0; e < a; e += 4) - (i = 0.34 * n[e] + 0.5 * n[e + 1] + 0.16 * n[e + 2]), (n[e] = i), (n[e + 1] = i), (n[e + 2] = i); - }; - })(), - (function (t) { - 'use strict'; - (t.Filters.Brighten = function (t) { - var e, - i = 255 * this.brightness(), - n = t.data, - a = n.length; - for (e = 0; e < a; e += 4) (n[e] += i), (n[e + 1] += i), (n[e + 2] += i); - }), - t.Factory.addGetterSetter(t.Node, 'brightness', 0, t.Validators.getNumberValidator(), t.Factory.afterSetFilter); - })(Konva), - (function () { - 'use strict'; - Konva.Filters.Invert = function (t) { - var e, - i = t.data, - n = i.length; - for (e = 0; e < n; e += 4) (i[e] = 255 - i[e]), (i[e + 1] = 255 - i[e + 1]), (i[e + 2] = 255 - i[e + 2]); - }; - })(), - (function (t) { - 'use strict'; - function E() { - (this.r = 0), (this.g = 0), (this.b = 0), (this.a = 0), (this.next = null); - } - var B = [ - 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, - 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, - 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, - 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, - 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, - 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, - 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, - 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, - 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, - 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, - 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, - 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259, - ], - z = [ - 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, - ]; - (t.Filters.Blur = function (t) { - var e = Math.round(this.blurRadius()); - 0 < e && - (function (t, e) { - var i, - n, - a, - r, - o, - s, - h, - l, - c, - d, - u, - g, - f, - v, - p, - m, - _, - y, - K, - S, - b, - x, - C, - w, - F = t.data, - T = t.width, - P = t.height, - A = e + e + 1, - M = T - 1, - k = P - 1, - G = e + 1, - N = (G * (G + 1)) / 2, - R = new E(), - D = null, - L = R, - O = null, - V = null, - U = B[e], - I = z[e]; - for (a = 1; a < A; a++) (L = L.next = new E()), a === G && (D = L); - for (L.next = R, h = s = 0, n = 0; n < P; n++) { - for ( - m = _ = y = K = l = c = d = u = 0, - g = G * (S = F[s]), - f = G * (b = F[s + 1]), - v = G * (x = F[s + 2]), - p = G * (C = F[s + 3]), - l += N * S, - c += N * b, - d += N * x, - u += N * C, - L = R, - a = 0; - a < G; - a++ - ) - (L.r = S), (L.g = b), (L.b = x), (L.a = C), (L = L.next); - for (a = 1; a < G; a++) - (r = s + ((M < a ? M : a) << 2)), - (l += (L.r = S = F[r]) * (w = G - a)), - (c += (L.g = b = F[r + 1]) * w), - (d += (L.b = x = F[r + 2]) * w), - (u += (L.a = C = F[r + 3]) * w), - (m += S), - (_ += b), - (y += x), - (K += C), - (L = L.next); - for (O = R, V = D, i = 0; i < T; i++) - (F[s + 3] = C = (u * U) >> I), - 0 !== C - ? ((C = 255 / C), - (F[s] = ((l * U) >> I) * C), - (F[s + 1] = ((c * U) >> I) * C), - (F[s + 2] = ((d * U) >> I) * C)) - : (F[s] = F[s + 1] = F[s + 2] = 0), - (l -= g), - (c -= f), - (d -= v), - (u -= p), - (g -= O.r), - (f -= O.g), - (v -= O.b), - (p -= O.a), - (r = (h + ((r = i + e + 1) < M ? r : M)) << 2), - (l += m += O.r = F[r]), - (c += _ += O.g = F[r + 1]), - (d += y += O.b = F[r + 2]), - (u += K += O.a = F[r + 3]), - (O = O.next), - (g += S = V.r), - (f += b = V.g), - (v += x = V.b), - (p += C = V.a), - (m -= S), - (_ -= b), - (y -= x), - (K -= C), - (V = V.next), - (s += 4); - h += T; - } - for (i = 0; i < T; i++) { - for ( - _ = y = K = m = c = d = u = l = 0, - g = G * (S = F[(s = i << 2)]), - f = G * (b = F[s + 1]), - v = G * (x = F[s + 2]), - p = G * (C = F[s + 3]), - l += N * S, - c += N * b, - d += N * x, - u += N * C, - L = R, - a = 0; - a < G; - a++ - ) - (L.r = S), (L.g = b), (L.b = x), (L.a = C), (L = L.next); - for (o = T, a = 1; a <= e; a++) - (s = (o + i) << 2), - (l += (L.r = S = F[s]) * (w = G - a)), - (c += (L.g = b = F[s + 1]) * w), - (d += (L.b = x = F[s + 2]) * w), - (u += (L.a = C = F[s + 3]) * w), - (m += S), - (_ += b), - (y += x), - (K += C), - (L = L.next), - a < k && (o += T); - for (s = i, O = R, V = D, n = 0; n < P; n++) - (F[3 + (r = s << 2)] = C = (u * U) >> I), - 0 < C - ? ((C = 255 / C), - (F[r] = ((l * U) >> I) * C), - (F[r + 1] = ((c * U) >> I) * C), - (F[r + 2] = ((d * U) >> I) * C)) - : (F[r] = F[r + 1] = F[r + 2] = 0), - (l -= g), - (c -= f), - (d -= v), - (u -= p), - (g -= O.r), - (f -= O.g), - (v -= O.b), - (p -= O.a), - (r = (i + ((r = n + G) < k ? r : k) * T) << 2), - (l += m += O.r = F[r]), - (c += _ += O.g = F[r + 1]), - (d += y += O.b = F[r + 2]), - (u += K += O.a = F[r + 3]), - (O = O.next), - (g += S = V.r), - (f += b = V.g), - (v += x = V.b), - (p += C = V.a), - (m -= S), - (_ -= b), - (y -= x), - (K -= C), - (V = V.next), - (s += T); - } - })(t, e); - }), - t.Factory.addGetterSetter(t.Node, 'blurRadius', 0, t.Validators.getNumberValidator(), t.Factory.afterSetFilter); - })(Konva), - (function () { - 'use strict'; - function d(t, e, i) { - var n = 4 * (i * t.width + e), - a = []; - return a.push(t.data[n++], t.data[n++], t.data[n++], t.data[n++]), a; - } - function u(t, e) { - return Math.sqrt(Math.pow(t[0] - e[0], 2) + Math.pow(t[1] - e[1], 2) + Math.pow(t[2] - e[2], 2)); - } - (Konva.Filters.Mask = function (t) { - var e = (function (t, e) { - var i = d(t, 0, 0), - n = d(t, t.width - 1, 0), - a = d(t, 0, t.height - 1), - r = d(t, t.width - 1, t.height - 1), - o = e || 10; - if (u(i, n) < o && u(n, r) < o && u(r, a) < o && u(a, i) < o) { - for ( - var s = (function (t) { - for (var e = [0, 0, 0], i = 0; i < t.length; i++) - (e[0] += t[i][0]), (e[1] += t[i][1]), (e[2] += t[i][2]); - return (e[0] /= t.length), (e[1] /= t.length), (e[2] /= t.length), e; - })([n, i, r, a]), - h = [], - l = 0; - l < t.width * t.height; - l++ - ) { - var c = u(s, [t.data[4 * l], t.data[4 * l + 1], t.data[4 * l + 2]]); - h[l] = c < o ? 0 : 255; - } - return h; - } - })(t, this.threshold()); - return ( - e && - (function (t, e) { - for (var i = 0; i < t.width * t.height; i++) t.data[4 * i + 3] = e[i]; - })( - t, - (e = (function (t, e, i) { - for ( - var n = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9], - a = Math.round(Math.sqrt(n.length)), - r = Math.floor(a / 2), - o = [], - s = 0; - s < i; - s++ - ) - for (var h = 0; h < e; h++) { - for (var l = s * e + h, c = 0, d = 0; d < a; d++) - for (var u = 0; u < a; u++) { - var g = s + d - r, - f = h + u - r; - if (0 <= g && g < i && 0 <= f && f < e) { - var v = n[d * a + u]; - c += t[g * e + f] * v; - } - } - o[l] = c; - } - return o; - })( - (e = (function (t, e, i) { - for ( - var n = [1, 1, 1, 1, 1, 1, 1, 1, 1], - a = Math.round(Math.sqrt(n.length)), - r = Math.floor(a / 2), - o = [], - s = 0; - s < i; - s++ - ) - for (var h = 0; h < e; h++) { - for (var l = s * e + h, c = 0, d = 0; d < a; d++) - for (var u = 0; u < a; u++) { - var g = s + d - r, - f = h + u - r; - if (0 <= g && g < i && 0 <= f && f < e) { - var v = n[d * a + u]; - c += t[g * e + f] * v; - } - } - o[l] = 1020 <= c ? 255 : 0; - } - return o; - })( - (e = (function (t, e, i) { - for ( - var n = [1, 1, 1, 1, 0, 1, 1, 1, 1], - a = Math.round(Math.sqrt(n.length)), - r = Math.floor(a / 2), - o = [], - s = 0; - s < i; - s++ - ) - for (var h = 0; h < e; h++) { - for (var l = s * e + h, c = 0, d = 0; d < a; d++) - for (var u = 0; u < a; u++) { - var g = s + d - r, - f = h + u - r; - if (0 <= g && g < i && 0 <= f && f < e) { - var v = n[d * a + u]; - c += t[g * e + f] * v; - } - } - o[l] = 2040 === c ? 255 : 0; - } - return o; - })(e, t.width, t.height)), - t.width, - t.height, - )), - t.width, - t.height, - )), - ), - t - ); - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'threshold', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - (Konva.Filters.RGB = function (t) { - var e, - i, - n = t.data, - a = n.length, - r = this.red(), - o = this.green(), - s = this.blue(); - for (e = 0; e < a; e += 4) - (i = (0.34 * n[e] + 0.5 * n[e + 1] + 0.16 * n[e + 2]) / 255), - (n[e] = i * r), - (n[e + 1] = i * o), - (n[e + 2] = i * s), - (n[e + 3] = n[e + 3]); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'red', 0, function (t) { - return (this._filterUpToDate = !1), 255 < t ? 255 : t < 0 ? 0 : Math.round(t); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'green', 0, function (t) { - return (this._filterUpToDate = !1), 255 < t ? 255 : t < 0 ? 0 : Math.round(t); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'blue', 0, Konva.Validators.RGBComponent, Konva.Factory.afterSetFilter); - })(), - (function () { - 'use strict'; - (Konva.Filters.RGBA = function (t) { - var e, - i, - n = t.data, - a = n.length, - r = this.red(), - o = this.green(), - s = this.blue(), - h = this.alpha(); - for (e = 0; e < a; e += 4) - (i = 1 - h), (n[e] = r * h + n[e] * i), (n[e + 1] = o * h + n[e + 1] * i), (n[e + 2] = s * h + n[e + 2] * i); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'red', 0, function (t) { - return (this._filterUpToDate = !1), 255 < t ? 255 : t < 0 ? 0 : Math.round(t); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'green', 0, function (t) { - return (this._filterUpToDate = !1), 255 < t ? 255 : t < 0 ? 0 : Math.round(t); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'blue', 0, Konva.Validators.RGBComponent, Konva.Factory.afterSetFilter), - Konva.Factory.addGetterSetter(Konva.Node, 'alpha', 1, function (t) { - return (this._filterUpToDate = !1), 1 < t ? 1 : t < 0 ? 0 : t; - }); - })(), - (function () { - 'use strict'; - (Konva.Filters.HSV = function (t) { - var e, - i, - n, - a, - r, - o = t.data, - s = o.length, - h = Math.pow(2, this.value()), - l = Math.pow(2, this.saturation()), - c = Math.abs(this.hue() + 360) % 360, - d = h * l * Math.cos((c * Math.PI) / 180), - u = h * l * Math.sin((c * Math.PI) / 180), - g = 0.299 * h + 0.701 * d + 0.167 * u, - f = 0.587 * h - 0.587 * d + 0.33 * u, - v = 0.114 * h - 0.114 * d - 0.497 * u, - p = 0.299 * h - 0.299 * d - 0.328 * u, - m = 0.587 * h + 0.413 * d + 0.035 * u, - _ = 0.114 * h - 0.114 * d + 0.293 * u, - y = 0.299 * h - 0.3 * d + 1.25 * u, - K = 0.587 * h - 0.586 * d - 1.05 * u, - S = 0.114 * h + 0.886 * d - 0.2 * u; - for (e = 0; e < s; e += 4) - (i = o[e + 0]), - (n = o[e + 1]), - (a = o[e + 2]), - (r = o[e + 3]), - (o[e + 0] = g * i + f * n + v * a), - (o[e + 1] = p * i + m * n + _ * a), - (o[e + 2] = y * i + K * n + S * a), - (o[e + 3] = r); - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'hue', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'saturation', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'value', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - Konva.Factory.addGetterSetter( - Konva.Node, - 'hue', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'saturation', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'luminance', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - (Konva.Filters.HSL = function (t) { - var e, - i, - n, - a, - r, - o = t.data, - s = o.length, - h = Math.pow(2, this.saturation()), - l = Math.abs(this.hue() + 360) % 360, - c = 127 * this.luminance(), - d = 1 * h * Math.cos((l * Math.PI) / 180), - u = 1 * h * Math.sin((l * Math.PI) / 180), - g = 0.299 + 0.701 * d + 0.167 * u, - f = 0.587 - 0.587 * d + 0.33 * u, - v = 0.114 - 0.114 * d - 0.497 * u, - p = 0.299 - 0.299 * d - 0.328 * u, - m = 0.587 + 0.413 * d + 0.035 * u, - _ = 0.114 - 0.114 * d + 0.293 * u, - y = 0.299 - 0.3 * d + 1.25 * u, - K = 0.587 - 0.586 * d - 1.05 * u, - S = 0.114 + 0.886 * d - 0.2 * u; - for (e = 0; e < s; e += 4) - (i = o[e + 0]), - (n = o[e + 1]), - (a = o[e + 2]), - (r = o[e + 3]), - (o[e + 0] = g * i + f * n + v * a + c), - (o[e + 1] = p * i + m * n + _ * a + c), - (o[e + 2] = y * i + K * n + S * a + c), - (o[e + 3] = r); - }); - })(), - (function () { - 'use strict'; - (Konva.Filters.Emboss = function (t) { - var e = 10 * this.embossStrength(), - i = 255 * this.embossWhiteLevel(), - n = this.embossDirection(), - a = this.embossBlend(), - r = 0, - o = 0, - s = t.data, - h = t.width, - l = t.height, - c = 4 * h, - d = l; - switch (n) { - case 'top-left': - o = r = -1; - break; - case 'top': - (r = -1), (o = 0); - break; - case 'top-right': - (r = -1), (o = 1); - break; - case 'right': - (r = 0), (o = 1); - break; - case 'bottom-right': - o = r = 1; - break; - case 'bottom': - (r = 1), (o = 0); - break; - case 'bottom-left': - o = -(r = 1); - break; - case 'left': - (r = 0), (o = -1); - break; - default: - Konva.Util.error('Unknown emboss direction: ' + n); - } - do { - var u = (d - 1) * c, - g = r; - d + g < 1 && (g = 0), l < d + g && (g = 0); - var f = (d - 1 + g) * h * 4, - v = h; - do { - var p = u + 4 * (v - 1), - m = o; - v + m < 1 && (m = 0), h < v + m && (m = 0); - var _ = f + 4 * (v - 1 + m), - y = s[p] - s[_], - K = s[p + 1] - s[_ + 1], - S = s[p + 2] - s[_ + 2], - b = y, - x = 0 < b ? b : -b; - if ((x < (0 < K ? K : -K) && (b = K), x < (0 < S ? S : -S) && (b = S), (b *= e), a)) { - var C = s[p] + b, - w = s[p + 1] + b, - F = s[p + 2] + b; - (s[p] = 255 < C ? 255 : C < 0 ? 0 : C), - (s[p + 1] = 255 < w ? 255 : w < 0 ? 0 : w), - (s[p + 2] = 255 < F ? 255 : F < 0 ? 0 : F); - } else { - var T = i - b; - T < 0 ? (T = 0) : 255 < T && (T = 255), (s[p] = s[p + 1] = s[p + 2] = T); - } - } while (--v); - } while (--d); - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'embossStrength', - 0.5, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'embossWhiteLevel', - 0.5, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter(Konva.Node, 'embossDirection', 'top-left', null, Konva.Factory.afterSetFilter), - Konva.Factory.addGetterSetter(Konva.Node, 'embossBlend', !1, null, Konva.Factory.afterSetFilter); - })(), - (function () { - 'use strict'; - function x(t, e, i, n, a) { - var r = i - e, - o = a - n; - return 0 === r ? n + o / 2 : 0 === o ? n : o * ((t - e) / r) + n; - } - (Konva.Filters.Enhance = function (t) { - var e, - i, - n, - a, - r = t.data, - o = r.length, - s = r[0], - h = s, - l = r[1], - c = l, - d = r[2], - u = d, - g = this.enhance(); - if (0 !== g) { - for (a = 0; a < o; a += 4) - (e = r[a + 0]) < s ? (s = e) : h < e && (h = e), - (i = r[a + 1]) < l ? (l = i) : c < i && (c = i), - (n = r[a + 2]) < d ? (d = n) : u < n && (u = n); - var f, v, p, m, _, y, K, S, b; - for ( - h === s && ((h = 255), (s = 0)), - c === l && ((c = 255), (l = 0)), - u === d && ((u = 255), (d = 0)), - 0 < g - ? ((v = h + g * (255 - h)), - (p = s - g * (s - 0)), - (_ = c + g * (255 - c)), - (y = l - g * (l - 0)), - (S = u + g * (255 - u)), - (b = d - g * (d - 0))) - : ((v = h + g * (h - (f = 0.5 * (h + s)))), - (p = s + g * (s - f)), - (_ = c + g * (c - (m = 0.5 * (c + l)))), - (y = l + g * (l - m)), - (S = u + g * (u - (K = 0.5 * (u + d)))), - (b = d + g * (d - K))), - a = 0; - a < o; - a += 4 - ) - (r[a + 0] = x(r[a + 0], s, h, p, v)), - (r[a + 1] = x(r[a + 1], l, c, y, _)), - (r[a + 2] = x(r[a + 2], d, u, b, S)); - } - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'enhance', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - (Konva.Filters.Posterize = function (t) { - var e, - i = Math.round(254 * this.levels()) + 1, - n = t.data, - a = n.length, - r = 255 / i; - for (e = 0; e < a; e += 1) n[e] = Math.floor(n[e] / r) * r; - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'levels', - 0.5, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - (Konva.Filters.Noise = function (t) { - var e, - i = 255 * this.noise(), - n = t.data, - a = n.length, - r = i / 2; - for (e = 0; e < a; e += 4) - (n[e + 0] += r - 2 * r * Math.random()), - (n[e + 1] += r - 2 * r * Math.random()), - (n[e + 2] += r - 2 * r * Math.random()); - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'noise', - 0.2, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - (Konva.Filters.Pixelate = function (t) { - var e, - i, - n, - a, - r, - o, - s, - h, - l, - c, - d, - u, - g, - f, - v = Math.ceil(this.pixelSize()), - p = t.width, - m = t.height, - _ = Math.ceil(p / v), - y = Math.ceil(m / v); - if (((t = t.data), v <= 0)) Konva.Util.error('pixelSize value can not be <= 0'); - else - for (u = 0; u < _; u += 1) - for (g = 0; g < y; g += 1) { - for (l = (h = u * v) + v, d = (c = g * v) + v, f = s = o = r = a = 0, e = h; e < l; e += 1) - if (!(p <= e)) - for (i = c; i < d; i += 1) - m <= i || - ((a += t[(n = 4 * (p * i + e)) + 0]), (r += t[n + 1]), (o += t[n + 2]), (s += t[n + 3]), (f += 1)); - for (a /= f, r /= f, o /= f, s /= f, e = h; e < l; e += 1) - if (!(p <= e)) - for (i = c; i < d; i += 1) - m <= i || ((t[(n = 4 * (p * i + e)) + 0] = a), (t[n + 1] = r), (t[n + 2] = o), (t[n + 3] = s)); - } - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'pixelSize', - 8, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - (Konva.Filters.Threshold = function (t) { - var e, - i = 255 * this.threshold(), - n = t.data, - a = n.length; - for (e = 0; e < a; e += 1) n[e] = n[e] < i ? 0 : 255; - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'threshold', - 0.5, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - /** - * Sepia Filter - * Based on: Pixastic Lib - Sepia filter - v0.1.0 - * Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.nihilogic.dk/ - * @function - * @name Sepia - * @memberof Konva.Filters - * @param {Object} imageData - * @author Jacob Seidelin - * @license MPL v1.1 [http://www.pixastic.com/lib/license.txt] - * @example - * node.cache(); - * node.filters([Konva.Filters.Sepia]); - */ Konva.Filters.Sepia = function (t) { - var e, - i, - n, - a, - r, - o, - s, - h, - l, - c = t.data, - d = t.width, - u = t.height, - g = 4 * d; - do { - for ( - e = (u - 1) * g, i = d; - (s = 0.393 * (a = c[(n = e + 4 * (i - 1))]) + 0.769 * (r = c[n + 1]) + 0.189 * (o = c[n + 2])), - (h = 0.349 * a + 0.686 * r + 0.168 * o), - (l = 0.272 * a + 0.534 * r + 0.131 * o), - (c[n] = 255 < s ? 255 : s), - (c[n + 1] = 255 < h ? 255 : h), - (c[n + 2] = 255 < l ? 255 : l), - (c[n + 3] = c[n + 3]), - --i; - - ); - } while (--u); - }; - })(), - (function () { - 'use strict'; - Konva.Filters.Solarize = function (t) { - var e = t.data, - i = t.width, - n = 4 * i, - a = t.height; - do { - var r = (a - 1) * n, - o = i; - do { - var s = r + 4 * (o - 1), - h = e[s], - l = e[s + 1], - c = e[s + 2]; - 127 < h && (h = 255 - h), - 127 < l && (l = 255 - l), - 127 < c && (c = 255 - c), - (e[s] = h), - (e[s + 1] = l), - (e[s + 2] = c); - } while (--o); - } while (--a); - }; - })(), - (function () { - 'use strict'; - (Konva.Filters.Kaleidoscope = function (t) { - var e, - i, - n, - a, - r, - o, - s, - h, - l, - c = t.width, - d = t.height, - u = Math.round(this.kaleidoscopePower()), - g = Math.round(this.kaleidoscopeAngle()), - f = Math.floor((c * (g % 360)) / 360); - if (!(u < 1)) { - var v = Konva.Util.createCanvasElement(); - (v.width = c), (v.height = d); - var p = v.getContext('2d').getImageData(0, 0, c, d); - !(function (t, e, i) { - var n, - a, - r, - o, - s = t.data, - h = e.data, - l = t.width, - c = t.height, - d = i.polarCenterX || l / 2, - u = i.polarCenterY || c / 2, - g = 0, - f = 0, - v = 0, - p = 0, - m = Math.sqrt(d * d + u * u); - (a = l - d), (r = c - u), (m = m < (o = Math.sqrt(a * a + r * r)) ? o : m); - var _, - y, - K, - S, - b = c, - x = l, - C = ((360 / x) * Math.PI) / 180; - for (y = 0; y < x; y += 1) - for (K = Math.sin(y * C), S = Math.cos(y * C), _ = 0; _ < b; _ += 1) - (a = Math.floor(d + ((m * _) / b) * S)), - (g = s[0 + (n = 4 * ((r = Math.floor(u + ((m * _) / b) * K)) * l + a))]), - (f = s[n + 1]), - (v = s[n + 2]), - (p = s[n + 3]), - (h[0 + (n = 4 * (y + _ * l))] = g), - (h[n + 1] = f), - (h[n + 2] = v), - (h[n + 3] = p); - })(t, p, { polarCenterX: c / 2, polarCenterY: d / 2 }); - for (var m = c / Math.pow(2, u); m <= 8; ) (m *= 2), (u -= 1); - var _ = (m = Math.ceil(m)), - y = 0, - K = _, - S = 1; - for (c < f + m && ((y = _), (K = 0), (S = -1)), i = 0; i < d; i += 1) - for (e = y; e !== K; e += S) - (h = 4 * (c * i + (Math.round(e + f) % c))), - (a = p.data[h + 0]), - (r = p.data[h + 1]), - (o = p.data[h + 2]), - (s = p.data[h + 3]), - (l = 4 * (c * i + e)), - (p.data[l + 0] = a), - (p.data[l + 1] = r), - (p.data[l + 2] = o), - (p.data[l + 3] = s); - for (i = 0; i < d; i += 1) - for (_ = Math.floor(m), n = 0; n < u; n += 1) { - for (e = 0; e < _ + 1; e += 1) - (h = 4 * (c * i + e)), - (a = p.data[h + 0]), - (r = p.data[h + 1]), - (o = p.data[h + 2]), - (s = p.data[h + 3]), - (l = 4 * (c * i + 2 * _ - e - 1)), - (p.data[l + 0] = a), - (p.data[l + 1] = r), - (p.data[l + 2] = o), - (p.data[l + 3] = s); - _ *= 2; - } - !(function (t, e, i) { - var n, - a, - r, - o, - s, - h, - l = t.data, - c = e.data, - d = t.width, - u = t.height, - g = i.polarCenterX || d / 2, - f = i.polarCenterY || u / 2, - v = 0, - p = 0, - m = 0, - _ = 0, - y = Math.sqrt(g * g + f * f); - (a = d - g), (r = u - f), (y = y < (h = Math.sqrt(a * a + r * r)) ? h : y); - var K, - S, - b, - x = u, - C = d, - w = i.polarRotation || 0; - for (a = 0; a < d; a += 1) - for (r = 0; r < u; r += 1) - (o = a - g), - (s = r - f), - (K = (Math.sqrt(o * o + s * s) * x) / y), - (S = ((S = ((180 * Math.atan2(s, o)) / Math.PI + 360 + w) % 360) * C) / 360), - (b = Math.floor(S)), - (v = l[0 + (n = 4 * (Math.floor(K) * d + b))]), - (p = l[n + 1]), - (m = l[n + 2]), - (_ = l[n + 3]), - (c[0 + (n = 4 * (r * d + a))] = v), - (c[n + 1] = p), - (c[n + 2] = m), - (c[n + 3] = _); - })(p, t, { polarRotation: 0 }); - } - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'kaleidoscopePower', - 2, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'kaleidoscopeAngle', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function (t) { - 'use strict'; - (t.Filters.Contrast = function (t) { - var e, - i = Math.pow((parseInt(this.contrast()) + 100) / 100, 2), - n = t.data, - a = n.length, - r = 150, - o = 150, - s = 150; - for (e = 0; e < a; e += 4) - (r = n[e]), - (o = n[e + 1]), - (s = n[e + 2]), - (r /= 255), - (r -= 0.5), - (r *= i), - (r += 0.5), - (o /= 255), - (o -= 0.5), - (o *= i), - (o += 0.5), - (s /= 255), - (s -= 0.5), - (s *= i), - (s += 0.5), - (r = (r *= 255) < 0 ? 0 : 255 < r ? 255 : r), - (o = (o *= 255) < 0 ? 0 : 255 < o ? 255 : o), - (s = (s *= 255) < 0 ? 0 : 255 < s ? 255 : s), - (n[e] = r), - (n[e + 1] = o), - (n[e + 2] = s); - }), - t.Factory.addGetterSetter(t.Node, 'contrast', 0, t.Validators.getNumberValidator(), t.Factory.afterSetFilter); - })(Konva), - (function () { - 'use strict'; - (Konva.Container = function (t) { - this.__init(t); - }), - Konva.Util.addMethods(Konva.Container, { - __init: function (t) { - (this.children = new Konva.Collection()), Konva.Node.call(this, t); - }, - getChildren: function (e) { - if (!e) return this.children; - var i = new Konva.Collection(); - return ( - this.children.each(function (t) { - e(t) && i.push(t); - }), - i - ); - }, - hasChildren: function () { - return 0 < this.getChildren().length; - }, - removeChildren: function () { - for (var t, e = Konva.Collection.toCollection(this.children), i = 0; i < e.length; i++) - delete (t = e[i]).parent, (t.index = 0), t.remove(); - return (e = null), (this.children = new Konva.Collection()), this; - }, - destroyChildren: function () { - for (var t, e = Konva.Collection.toCollection(this.children), i = 0; i < e.length; i++) - delete (t = e[i]).parent, (t.index = 0), t.destroy(); - return (e = null), (this.children = new Konva.Collection()), this; - }, - add: function (t) { - if (1 < arguments.length) { - for (var e = 0; e < arguments.length; e++) this.add(arguments[e]); - return this; - } - if (t.getParent()) return t.moveTo(this), this; - var i = this.children; - return ( - this._validateAdd(t), - (t.index = i.length), - (t.parent = this), - i.push(t), - this._fire('add', { child: t }), - Konva.DD && t.isDragging() && Konva.DD.anim.setLayers(t.getLayer()), - this - ); - }, - destroy: function () { - return this.hasChildren() && this.destroyChildren(), Konva.Node.prototype.destroy.call(this), this; - }, - find: function (t) { - return this._generalFind(t, !1); - }, - findOne: function (t) { - var e = this._generalFind(t, !0); - return 0 < e.length ? e[0] : void 0; - }, - _generalFind: function (t, e) { - var i = []; - return ( - 'string' == typeof t - ? (i = this._findByString(t, e)) - : 'function' == typeof t && (i = this._findByFunction(t, e)), - Konva.Collection.toCollection(i) - ); - }, - _findByString: function (t) { - var e, - i, - n, - a, - r, - o, - s, - h = [], - l = t.replace(/ /g, '').split(','), - c = l.length; - for (e = 0; e < c; e++) { - if (((n = l[e]), !Konva.Util.isValidSelector(n))) { - var d = - 'Selector "' + - n + - '" is invalid. Allowed selectors examples are "#foo", ".bar" or "Group".\nIf you have a custom shape with such className, please change it to start with upper letter like "Triangle".\nKonva is awesome, right?'; - Konva.Util.warn(d); - } - if ('#' === n.charAt(0)) (r = this._getNodeById(n.slice(1))) && h.push(r); - else if ('.' === n.charAt(0)) (a = this._getNodesByName(n.slice(1))), (h = h.concat(a)); - else for (s = (o = this.getChildren()).length, i = 0; i < s; i++) h = h.concat(o[i]._get(n)); - } - return h; - }, - _findByFunction: function (a, r) { - var o = [], - s = function (t) { - if (!(r && 0 < o.length)) { - var e = t.getChildren(), - i = e.length; - a(t) && (o = o.concat(t)); - for (var n = 0; n < i; n++) s(e[n]); - } - }; - return s(this), o; - }, - _getNodeById: function (t) { - var e = Konva.ids[t]; - return void 0 !== e && this.isAncestorOf(e) ? e : null; - }, - _getNodesByName: function (t) { - var e = Konva.names[t] || []; - return this._getDescendants(e); - }, - _get: function (t) { - for (var e = Konva.Node.prototype._get.call(this, t), i = this.getChildren(), n = i.length, a = 0; a < n; a++) - e = e.concat(i[a]._get(t)); - return e; - }, - toObject: function () { - var t = Konva.Node.prototype.toObject.call(this); - t.children = []; - for (var e = this.getChildren(), i = e.length, n = 0; n < i; n++) { - var a = e[n]; - t.children.push(a.toObject()); - } - return t; - }, - _getDescendants: function (t) { - for (var e = [], i = t.length, n = 0; n < i; n++) { - var a = t[n]; - this.isAncestorOf(a) && e.push(a); - } - return e; - }, - isAncestorOf: function (t) { - for (var e = t.getParent(); e; ) { - if (e._id === this._id) return !0; - e = e.getParent(); - } - return !1; - }, - clone: function (t) { - var e = Konva.Node.prototype.clone.call(this, t); - return ( - this.getChildren().each(function (t) { - e.add(t.clone()); - }), - e - ); - }, - getAllIntersections: function (e) { - var i = []; - return ( - this.find('Shape').each(function (t) { - t.isVisible() && t.intersects(e) && i.push(t); - }), - i - ); - }, - _setChildrenIndices: function () { - this.children.each(function (t, e) { - t.index = e; - }); - }, - drawScene: function (t, e, i) { - var n = this.getLayer(), - a = t || (n && n.getCanvas()), - r = a && a.getContext(), - o = this._cache.canvas, - s = o && o.scene; - return ( - (this.isVisible() || i) && - (!i && s - ? (r.save(), n._applyTransform(this, r, e), this._drawCachedSceneCanvas(r), r.restore()) - : this._drawChildren(a, 'drawScene', e, !1, i)), - this - ); - }, - drawHit: function (t, e, i) { - var n = this.getLayer(), - a = t || (n && n.hitCanvas), - r = a && a.getContext(), - o = this._cache.canvas, - s = o && o.hit; - return ( - (this.shouldDrawHit(a) || i) && - (n && n.clearHitCache(), - !i && s - ? (r.save(), n._applyTransform(this, r, e), this._drawCachedHitCanvas(r), r.restore()) - : this._drawChildren(a, 'drawHit', e)), - this - ); - }, - _drawChildren: function (e, i, n, a, r) { - var t, - o, - s = this.getLayer(), - h = e && e.getContext(), - l = this.getClipWidth(), - c = this.getClipHeight(), - d = this.getClipFunc(), - u = (l && c) || d; - if (u && s) { - h.save(); - var g = this.getAbsoluteTransform(n), - f = g.getMatrix(); - h.transform(f[0], f[1], f[2], f[3], f[4], f[5]), - h.beginPath(), - d ? d.call(this, h, this) : ((t = this.getClipX()), (o = this.getClipY()), h.rect(t, o, l, c)), - h.clip(), - (f = g.copy().invert().getMatrix()), - h.transform(f[0], f[1], f[2], f[3], f[4], f[5]); - } - this.children.each(function (t) { - t[i](e, n, a, r); - }), - u && h.restore(); - }, - shouldDrawHit: function (t) { - var e = this.getLayer(), - i = Konva.DD && Konva.isDragging() && -1 !== Konva.DD.anim.getLayers().indexOf(e); - return (t && t.isCache) || (e && e.hitGraphEnabled() && this.isVisible() && !i); - }, - getClientRect: function (t) { - var i, - n, - a, - r, - e = (t = t || {}).skipTransform, - o = t.relativeTo, - s = { x: 1 / 0, y: 1 / 0, width: 0, height: 0 }, - h = this; - this.children.each(function (t) { - if (t.getVisible()) { - var e = t.getClientRect({ relativeTo: h }); - (0 === e.width && 0 === e.height) || - (void 0 === i - ? ((i = e.x), (n = e.y), (a = e.x + e.width), (r = e.y + e.height)) - : ((i = Math.min(i, e.x)), - (n = Math.min(n, e.y)), - (a = Math.max(a, e.x + e.width)), - (r = Math.max(r, e.y + e.height)))); - } - }); - for (var l = this.find('Shape'), c = !1, d = 0; d < l.length; d++) { - if (l[d]._isVisible(this)) { - c = !0; - break; - } - } - return ( - (s = c ? { x: i, y: n, width: a - i, height: r - n } : { x: 0, y: 0, width: 0, height: 0 }), - e ? s : this._transformedRect(s, o) - ); - }, - }), - Konva.Util.extend(Konva.Container, Konva.Node), - (Konva.Container.prototype.get = Konva.Container.prototype.find), - Konva.Factory.addComponentsGetterSetter(Konva.Container, 'clip', ['x', 'y', 'width', 'height']), - Konva.Factory.addGetterSetter(Konva.Container, 'clipX', void 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Container, 'clipY', void 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Container, 'clipWidth', void 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Container, 'clipHeight', void 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Container, 'clipFunc'), - Konva.Collection.mapMethods(Konva.Container); - })(), - (function (g) { - 'use strict'; - var t = 'hasShadow', - e = 'shadowRGBA'; - function n(t) { - t.fill(); - } - function a(t) { - t.stroke(); - } - function r(t) { - t.fill(); - } - function o(t) { - t.stroke(); - } - function s() { - this._clearCache(t); - } - function h() { - this._clearCache(e); - } - (g.Shape = function (t) { - this.__init(t); - }), - g.Util.addMethods(g.Shape, { - __init: function (t) { - (this.nodeType = 'Shape'), - (this._fillFunc = n), - (this._strokeFunc = a), - (this._fillFuncHit = r), - (this._strokeFuncHit = o); - for (var e, i = g.shapes; !(e = g.Util.getRandomColor()) || e in i; ); - (i[(this.colorKey = e)] = this), - g.Node.call(this, t), - this.on( - 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', - s, - ), - this.on('shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', h); - }, - hasChildren: function () { - return !1; - }, - getChildren: function () { - return []; - }, - getContext: function () { - return this.getLayer().getContext(); - }, - getCanvas: function () { - return this.getLayer().getCanvas(); - }, - hasShadow: function () { - return this._getCache(t, this._hasShadow); - }, - _hasShadow: function () { - return ( - this.getShadowEnabled() && - 0 !== this.getShadowOpacity() && - !!(this.getShadowColor() || this.getShadowBlur() || this.getShadowOffsetX() || this.getShadowOffsetY()) - ); - }, - getShadowRGBA: function () { - return this._getCache(e, this._getShadowRGBA); - }, - _getShadowRGBA: function () { - if (this.hasShadow()) { - var t = g.Util.colorToRGBA(this.shadowColor()); - return 'rgba(' + t.r + ',' + t.g + ',' + t.b + ',' + t.a * (this.getShadowOpacity() || 1) + ')'; - } - }, - hasFill: function () { - return !!( - this.getFill() || - this.getFillPatternImage() || - this.getFillLinearGradientColorStops() || - this.getFillRadialGradientColorStops() - ); - }, - hasStroke: function () { - return this.strokeEnabled() && !(!this.stroke() && !this.getStrokeLinearGradientColorStops()); - }, - intersects: function (t) { - var e = this.getStage().bufferHitCanvas; - return ( - e.getContext().clear(), - this.drawHit(e), - 0 < e.context.getImageData(Math.round(t.x), Math.round(t.y), 1, 1).data[3] - ); - }, - destroy: function () { - return g.Node.prototype.destroy.call(this), delete g.shapes[this.colorKey], this; - }, - _useBufferCanvas: function (t) { - return ( - (!t && - this.perfectDrawEnabled() && - 1 !== this.getAbsoluteOpacity() && - this.hasFill() && - this.hasStroke() && - this.getStage()) || - (this.perfectDrawEnabled() && - this.hasShadow() && - 1 !== this.getAbsoluteOpacity() && - this.hasFill() && - this.hasStroke() && - this.getStage()) - ); - }, - getSelfRect: function () { - var t = this.getSize(); - return { - x: this._centroid ? Math.round(-t.width / 2) : 0, - y: this._centroid ? Math.round(-t.height / 2) : 0, - width: t.width, - height: t.height, - }; - }, - getClientRect: function (t) { - var e = (t = t || {}).skipTransform, - i = t.relativeTo, - n = this.getSelfRect(), - a = (this.hasStroke() && this.strokeWidth()) || 0, - r = n.width + a, - o = n.height + a, - s = this.hasShadow() ? this.shadowOffsetX() : 0, - h = this.hasShadow() ? this.shadowOffsetY() : 0, - l = r + Math.abs(s), - c = o + Math.abs(h), - d = (this.hasShadow() && this.shadowBlur()) || 0, - u = l + 2 * d, - g = c + 2 * d, - f = 0; - Math.round(a / 2) !== a / 2 && (f = 1); - var v = { - width: u + f, - height: g + f, - x: -Math.round(a / 2 + d) + Math.min(s, 0) + n.x, - y: -Math.round(a / 2 + d) + Math.min(h, 0) + n.y, - }; - return e ? v : this._transformedRect(v, i); - }, - drawScene: function (t, e, i, n) { - var a, - r, - o = this.getLayer(), - s = t || o.getCanvas(), - h = s.getContext(), - l = this._cache.canvas, - c = this.sceneFunc(), - d = this.hasShadow(), - u = this.hasStroke(); - if (!this.isVisible() && !i) return this; - if (l) return h.save(), o._applyTransform(this, h, e), this._drawCachedSceneCanvas(h), h.restore(), this; - if (!c) return this; - if ((h.save(), this._useBufferCanvas(i) && !n)) { - if (((r = (a = this.getStage().bufferCanvas).getContext()).clear(), r.save(), r._applyLineJoin(this), !i)) - if (o) o._applyTransform(this, r, e); - else { - var g = this.getAbsoluteTransform(e).getMatrix(); - h.transform(g[0], g[1], g[2], g[3], g[4], g[5]); - } - c.call(this, r, this), r.restore(); - var f = a.pixelRatio; - d && !s.hitCanvas - ? (h.save(), - h._applyShadow(this), - h._applyOpacity(this), - h._applyGlobalCompositeOperation(this), - h.drawImage(a._canvas, 0, 0, a.width / f, a.height / f), - h.restore()) - : (h._applyOpacity(this), - h._applyGlobalCompositeOperation(this), - h.drawImage(a._canvas, 0, 0, a.width / f, a.height / f)); - } else { - if ((h._applyLineJoin(this), !i)) - if (o) o._applyTransform(this, h, e); - else { - var v = this.getAbsoluteTransform(e).getMatrix(); - h.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - } - d && u && !s.hitCanvas - ? (h.save(), - i || (h._applyOpacity(this), h._applyGlobalCompositeOperation(this)), - h._applyShadow(this), - c.call(this, h, this), - h.restore(), - this.hasFill() && this.getShadowForStrokeEnabled() && c.call(this, h, this)) - : d && !s.hitCanvas - ? (h.save(), - i || (h._applyOpacity(this), h._applyGlobalCompositeOperation(this)), - h._applyShadow(this), - c.call(this, h, this), - h.restore()) - : (i || (h._applyOpacity(this), h._applyGlobalCompositeOperation(this)), c.call(this, h, this)); - } - return h.restore(), this; - }, - drawHit: function (t, e, i) { - var n = this.getLayer(), - a = t || n.hitCanvas, - r = a.getContext(), - o = this.hitFunc() || this.sceneFunc(), - s = this._cache.canvas, - h = s && s.hit; - if (!this.shouldDrawHit(a) && !i) return this; - if ((n && n.clearHitCache(), h)) - return r.save(), n._applyTransform(this, r, e), this._drawCachedHitCanvas(r), r.restore(), this; - if (!o) return this; - if ((r.save(), r._applyLineJoin(this), !i)) - if (n) n._applyTransform(this, r, e); - else { - var l = this.getAbsoluteTransform(e).getMatrix(); - r.transform(l[0], l[1], l[2], l[3], l[4], l[5]); - } - return o.call(this, r, this), r.restore(), this; - }, - drawHitFromCache: function (t) { - var e, - i, - n, - a, - r, - o = t || 0, - s = this._cache.canvas, - h = this._getCachedSceneCanvas(), - l = s.hit, - c = l.getContext(), - d = l.getWidth(), - u = l.getHeight(); - c.clear(), c.drawImage(h._canvas, 0, 0, d, u); - try { - for ( - n = (i = (e = c.getImageData(0, 0, d, u)).data).length, a = g.Util._hexToRgb(this.colorKey), r = 0; - r < n; - r += 4 - ) - o < i[r + 3] ? ((i[r] = a.r), (i[r + 1] = a.g), (i[r + 2] = a.b), (i[r + 3] = 255)) : (i[r + 3] = 0); - c.putImageData(e, 0, 0); - } catch (t) { - g.Util.error('Unable to draw hit graph from cached scene canvas. ' + t.message); - } - return this; - }, - }), - g.Util.extend(g.Shape, g.Node), - g.Factory.addGetterSetter(g.Shape, 'stroke', void 0, g.Validators.getStringValidator()), - g.Factory.addGetterSetter(g.Shape, 'strokeWidth', 2, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'strokeHitEnabled', !0, g.Validators.getBooleanValidator()), - g.Factory.addGetterSetter(g.Shape, 'perfectDrawEnabled', !0, g.Validators.getBooleanValidator()), - g.Factory.addGetterSetter(g.Shape, 'shadowForStrokeEnabled', !0, g.Validators.getBooleanValidator()), - g.Factory.addGetterSetter(g.Shape, 'lineJoin'), - g.Factory.addGetterSetter(g.Shape, 'lineCap'), - g.Factory.addGetterSetter(g.Shape, 'sceneFunc'), - g.Factory.addGetterSetter(g.Shape, 'hitFunc'), - g.Factory.addGetterSetter(g.Shape, 'dash'), - g.Factory.addGetterSetter(g.Shape, 'dashOffset', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'shadowColor', void 0, g.Validators.getStringValidator()), - g.Factory.addGetterSetter(g.Shape, 'shadowBlur', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'shadowOpacity', 1, g.Validators.getNumberValidator()), - g.Factory.addComponentsGetterSetter(g.Shape, 'shadowOffset', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'shadowOffsetX', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'shadowOffsetY', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillPatternImage'), - g.Factory.addGetterSetter(g.Shape, 'fill', void 0, g.Validators.getStringValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillPatternX', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillPatternY', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillLinearGradientColorStops'), - g.Factory.addGetterSetter(g.Shape, 'strokeLinearGradientColorStops'), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientStartRadius', 0), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientEndRadius', 0), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientColorStops'), - g.Factory.addGetterSetter(g.Shape, 'fillPatternRepeat', 'repeat'), - g.Factory.addGetterSetter(g.Shape, 'fillEnabled', !0), - g.Factory.addGetterSetter(g.Shape, 'strokeEnabled', !0), - g.Factory.addGetterSetter(g.Shape, 'shadowEnabled', !0), - g.Factory.addGetterSetter(g.Shape, 'dashEnabled', !0), - g.Factory.addGetterSetter(g.Shape, 'strokeScaleEnabled', !0), - g.Factory.addGetterSetter(g.Shape, 'fillPriority', 'color'), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillPatternOffset', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillPatternOffsetX', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillPatternOffsetY', 0, g.Validators.getNumberValidator()), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillPatternScale', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillPatternScaleX', 1, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillPatternScaleY', 1, g.Validators.getNumberValidator()), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillLinearGradientStartPoint', ['x', 'y']), - g.Factory.addComponentsGetterSetter(g.Shape, 'strokeLinearGradientStartPoint', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillLinearGradientStartPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'strokeLinearGradientStartPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'fillLinearGradientStartPointY', 0), - g.Factory.addGetterSetter(g.Shape, 'strokeLinearGradientStartPointY', 0), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillLinearGradientEndPoint', ['x', 'y']), - g.Factory.addComponentsGetterSetter(g.Shape, 'strokeLinearGradientEndPoint', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillLinearGradientEndPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'strokeLinearGradientEndPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'fillLinearGradientEndPointY', 0), - g.Factory.addGetterSetter(g.Shape, 'strokeLinearGradientEndPointY', 0), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillRadialGradientStartPoint', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientStartPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientStartPointY', 0), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillRadialGradientEndPoint', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientEndPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientEndPointY', 0), - g.Factory.addGetterSetter(g.Shape, 'fillPatternRotation', 0), - g.Factory.backCompat(g.Shape, { - dashArray: 'dash', - getDashArray: 'getDash', - setDashArray: 'getDash', - drawFunc: 'sceneFunc', - getDrawFunc: 'getSceneFunc', - setDrawFunc: 'setSceneFunc', - drawHitFunc: 'hitFunc', - getDrawHitFunc: 'getHitFunc', - setDrawHitFunc: 'setHitFunc', - }), - g.Collection.mapMethods(g.Shape); - })(Konva), - (function () { - 'use strict'; - var i = 'mouseout', - n = 'mouseleave', - a = 'mouseover', - r = 'mousemove', - o = 'mousedown', - s = 'mouseup', - h = 'contextmenu', - l = 'dblclick', - c = 'touchstart', - d = 'touchend', - u = 'touchmove', - g = 'wheel', - f = '_', - e = [o, r, s, i, c, u, d, a, g, h], - v = e.length; - function p(e, i) { - e.content.addEventListener( - i, - function (t) { - e[f + i](t); - }, - !1, - ); - } - (Konva.Stage = function (t) { - this.___init(t); - }), - Konva.Util.addMethods(Konva.Stage, { - ___init: function (t) { - (this.nodeType = 'Stage'), - Konva.Container.call(this, t), - (this._id = Konva.idCounter++), - this._buildDOM(), - this._bindContentEvents(), - (this._enableNestedTransforms = !1), - Konva.stages.push(this); - }, - _validateAdd: function (t) { - 'Layer' !== t.getType() && Konva.Util.throw('You may only add layers to the stage.'); - }, - setContainer: function (t) { - if ('string' == typeof t) { - if ('.' === t.charAt(0)) { - var e = t.slice(1); - t = Konva.document.getElementsByClassName(e)[0]; - } else { - var i; - (i = '#' !== t.charAt(0) ? t : t.slice(1)), (t = Konva.document.getElementById(i)); - } - if (!t) throw 'Can not find container in document with id ' + i; - } - return this._setAttr('container', t), this; - }, - shouldDrawHit: function () { - return !0; - }, - draw: function () { - return Konva.Node.prototype.draw.call(this), this; - }, - setHeight: function (t) { - return Konva.Node.prototype.setHeight.call(this, t), this._resizeDOM(), this; - }, - setWidth: function (t) { - return Konva.Node.prototype.setWidth.call(this, t), this._resizeDOM(), this; - }, - clear: function () { - var t, - e = this.children, - i = e.length; - for (t = 0; t < i; t++) e[t].clear(); - return this; - }, - clone: function (t) { - return ( - t || (t = {}), - (t.container = Konva.document.createElement('div')), - Konva.Container.prototype.clone.call(this, t) - ); - }, - destroy: function () { - var t = this.content; - Konva.Container.prototype.destroy.call(this), - t && Konva.Util._isInDocument(t) && this.getContainer().removeChild(t); - var e = Konva.stages.indexOf(this); - return -1 < e && Konva.stages.splice(e, 1), this; - }, - getPointerPosition: function () { - return this.pointerPos; - }, - getStage: function () { - return this; - }, - getContent: function () { - return this.content; - }, - _toKonvaCanvas: function (i) { - var n = (i = i || {}).x || 0, - a = i.y || 0, - t = new Konva.SceneCanvas({ - width: i.width || this.getWidth(), - height: i.height || this.getHeight(), - pixelRatio: i.pixelRatio || 1, - }), - r = t.getContext()._context, - e = this.children; - return ( - (n || a) && r.translate(-1 * n, -1 * a), - e.each(function (t) { - if (t.isVisible()) { - var e = t._toKonvaCanvas(i); - r.drawImage(e._canvas, n, a, e.getWidth() / e.getPixelRatio(), e.getHeight() / e.getPixelRatio()); - } - }), - t - ); - }, - toImage: function (t) { - var e = t.callback; - (t.callback = function (t) { - Konva.Util._getImage(t, function (t) { - e(t); - }); - }), - this.toDataURL(t); - }, - getIntersection: function (t, e) { - var i, - n, - a = this.getChildren(); - for (i = a.length - 1; 0 <= i; i--) if ((n = a[i].getIntersection(t, e))) return n; - return null; - }, - _resizeDOM: function () { - if (this.content) { - var t, - e, - i = this.getWidth(), - n = this.getHeight(), - a = this.getChildren(), - r = a.length; - for ( - this.content.style.width = i + 'px', - this.content.style.height = n + 'px', - this.bufferCanvas.setSize(i, n), - this.bufferHitCanvas.setSize(i, n), - t = 0; - t < r; - t++ - ) - (e = a[t]).setSize(i, n), e.draw(); - } - }, - add: function (t) { - if (1 < arguments.length) { - for (var e = 0; e < arguments.length; e++) this.add(arguments[e]); - return this; - } - return ( - Konva.Container.prototype.add.call(this, t), - t._setCanvasSize(this.width(), this.height()), - t.draw(), - Konva.isBrowser && this.content.appendChild(t.canvas._canvas), - this - ); - }, - getParent: function () { - return null; - }, - getLayer: function () { - return null; - }, - getLayers: function () { - return this.getChildren(); - }, - _bindContentEvents: function () { - if (Konva.isBrowser) for (var t = 0; t < v; t++) p(this, e[t]); - }, - _mouseover: function (t) { - Konva.UA.mobile || (this._setPointerPosition(t), this._fire('contentMouseover', { evt: t })); - }, - _mouseout: function (t) { - if (!Konva.UA.mobile) { - this._setPointerPosition(t); - var e = this.targetShape; - e && - !Konva.isDragging() && - (e._fireAndBubble(i, { evt: t }), e._fireAndBubble(n, { evt: t }), (this.targetShape = null)), - (this.pointerPos = void 0), - this._fire('contentMouseout', { evt: t }); - } - }, - _mousemove: function (t) { - return Konva.UA.ieMobile - ? this._touchmove(t) - : (void 0 === t.movementX && void 0 === t.movementY) || 0 !== t.movementY || 0 !== t.movementX - ? Konva.UA.mobile - ? null - : (this._setPointerPosition(t), - Konva.isDragging() || - ((e = this.getIntersection(this.getPointerPosition())) && e.isListening() - ? Konva.isDragging() || (this.targetShape && this.targetShape._id === e._id) - ? e._fireAndBubble(r, { evt: t }) - : (this.targetShape && - (this.targetShape._fireAndBubble(i, { evt: t }, e), - this.targetShape._fireAndBubble(n, { evt: t }, e)), - e._fireAndBubble(a, { evt: t }, this.targetShape), - e._fireAndBubble('mouseenter', { evt: t }, this.targetShape), - (this.targetShape = e)) - : (this.targetShape && - !Konva.isDragging() && - (this.targetShape._fireAndBubble(i, { evt: t }), - this.targetShape._fireAndBubble(n, { evt: t }), - (this.targetShape = null)), - this._fire(r, { evt: t, target: this, currentTarget: this })), - this._fire('contentMousemove', { evt: t })), - void (t.cancelable && t.preventDefault())) - : null; - var e; - }, - _mousedown: function (t) { - if (Konva.UA.ieMobile) return this._touchstart(t); - if (!Konva.UA.mobile) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()); - (Konva.listenClickTap = !0), - e && e.isListening() - ? (this.clickStartShape = e)._fireAndBubble(o, { evt: t }) - : this._fire(o, { evt: t, target: this, currentTarget: this }), - this._fire('contentMousedown', { evt: t }); - } - }, - _mouseup: function (t) { - if (Konva.UA.ieMobile) return this._touchend(t); - if (!Konva.UA.mobile) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()), - i = this.clickStartShape, - n = this.clickEndShape, - a = !1, - r = Konva.DD; - Konva.inDblClickWindow - ? ((a = !0), clearTimeout(this.dblTimeout)) - : r && r.justDragged - ? r && (r.justDragged = !1) - : ((Konva.inDblClickWindow = !0), clearTimeout(this.dblTimeout)), - (this.dblTimeout = setTimeout(function () { - Konva.inDblClickWindow = !1; - }, Konva.dblClickWindow)), - e && e.isListening() - ? ((this.clickEndShape = e)._fireAndBubble(s, { evt: t }), - Konva.listenClickTap && - i && - i._id === e._id && - (e._fireAndBubble('click', { evt: t }), - a && n && n._id === e._id && e._fireAndBubble(l, { evt: t }))) - : (this._fire(s, { evt: t, target: this, currentTarget: this }), - Konva.listenClickTap && this._fire('click', { evt: t, target: this, currentTarget: this }), - a && this._fire(l, { evt: t, target: this, currentTarget: this })), - this._fire('contentMouseup', { evt: t }), - Konva.listenClickTap && - (this._fire('contentClick', { evt: t }), a && this._fire('contentDblclick', { evt: t })), - (Konva.listenClickTap = !1); - } - t.cancelable && t.preventDefault(); - }, - _contextmenu: function (t) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()); - e && e.isListening() - ? e._fireAndBubble(h, { evt: t }) - : this._fire(h, { evt: t, target: this, currentTarget: this }), - this._fire('contentContextmenu', { evt: t }); - }, - _touchstart: function (t) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()); - (Konva.listenClickTap = !0), - e && e.isListening() - ? ((this.tapStartShape = e)._fireAndBubble(c, { evt: t }), - e.isListening() && e.preventDefault() && t.cancelable && t.preventDefault()) - : this._fire(c, { evt: t, target: this, currentTarget: this }), - this._fire('contentTouchstart', { evt: t }); - }, - _touchend: function (t) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()), - i = !1; - Konva.inDblClickWindow ? (i = !0) : (Konva.inDblClickWindow = !0), - clearTimeout(this.dblTimeout), - (this.dblTimeout = setTimeout(function () { - Konva.inDblClickWindow = !1; - }, Konva.dblClickWindow)), - e && e.isListening() - ? (e._fireAndBubble(d, { evt: t }), - Konva.listenClickTap && - this.tapStartShape && - e._id === this.tapStartShape._id && - (e._fireAndBubble('tap', { evt: t }), i && e._fireAndBubble('dbltap', { evt: t })), - e.isListening() && e.preventDefault() && t.cancelable && t.preventDefault()) - : (this._fire(d, { evt: t, target: this, currentTarget: this }), - Konva.listenClickTap && this._fire('tap', { evt: t, target: this, currentTarget: this }), - i && this._fire('dbltap', { evt: t, target: this, currentTarget: this })), - this._fire('contentTouchend', { evt: t }), - Konva.listenClickTap && - (this._fire('contentTap', { evt: t }), i && this._fire('contentDbltap', { evt: t })), - (Konva.listenClickTap = !1); - }, - _touchmove: function (t) { - this._setPointerPosition(t); - var e, - i = Konva.DD; - Konva.isDragging() || - ((e = this.getIntersection(this.getPointerPosition())) && e.isListening() - ? (e._fireAndBubble(u, { evt: t }), - e.isListening() && e.preventDefault() && t.cancelable && t.preventDefault()) - : this._fire(u, { evt: t, target: this, currentTarget: this }), - this._fire('contentTouchmove', { evt: t })), - i && Konva.isDragging() && Konva.DD.node.preventDefault() && t.cancelable && t.preventDefault(); - }, - _wheel: function (t) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()); - e && e.isListening() - ? e._fireAndBubble(g, { evt: t }) - : this._fire(g, { evt: t, target: this, currentTarget: this }), - this._fire('contentWheel', { evt: t }); - }, - _setPointerPosition: function (t) { - var e = this._getContentPosition(), - i = null, - n = null; - if (void 0 !== (t = t || window.event).touches) { - if (0 < t.touches.length) { - var a = t.touches[0]; - (i = a.clientX - e.left), (n = a.clientY - e.top); - } - } else (i = t.clientX - e.left), (n = t.clientY - e.top); - null !== i && null !== n && (this.pointerPos = { x: i, y: n }); - }, - _getContentPosition: function () { - var t = this.content.getBoundingClientRect ? this.content.getBoundingClientRect() : { top: 0, left: 0 }; - return { top: t.top, left: t.left }; - }, - _buildDOM: function () { - if ( - ((this.bufferCanvas = new Konva.SceneCanvas()), - (this.bufferHitCanvas = new Konva.HitCanvas({ pixelRatio: 1 })), - Konva.isBrowser) - ) { - var t = this.getContainer(); - if (!t) throw 'Stage has no container. A container is required.'; - (t.innerHTML = ''), - (this.content = Konva.document.createElement('div')), - (this.content.style.position = 'relative'), - (this.content.style.userSelect = 'none'), - (this.content.className = 'konvajs-content'), - this.content.setAttribute('role', 'presentation'), - t.appendChild(this.content), - this._resizeDOM(); - } - }, - _onContent: function (t, e) { - var i, - n, - a = t.split(' '), - r = a.length; - for (i = 0; i < r; i++) (n = a[i]), this.content.addEventListener(n, e, !1); - }, - cache: function () { - Konva.Util.warn( - 'Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.', - ); - }, - clearCache: function () {}, - }), - Konva.Util.extend(Konva.Stage, Konva.Container), - Konva.Factory.addGetter(Konva.Stage, 'container'), - Konva.Factory.addOverloadedGetterSetter(Konva.Stage, 'container'); - })(), - (function (i) { - 'use strict'; - (i.BaseLayer = function (t) { - this.___init(t); - }), - i.Util.addMethods(i.BaseLayer, { - ___init: function (t) { - (this.nodeType = 'Layer'), i.Container.call(this, t); - }, - createPNGStream: function () { - return this.canvas._canvas.createPNGStream(); - }, - getCanvas: function () { - return this.canvas; - }, - getHitCanvas: function () { - return this.hitCanvas; - }, - getContext: function () { - return this.getCanvas().getContext(); - }, - clear: function (t) { - return this.getContext().clear(t), this; - }, - clearHitCache: function () { - this._hitImageData = void 0; - }, - setZIndex: function (t) { - i.Node.prototype.setZIndex.call(this, t); - var e = this.getStage(); - return ( - e && - (e.content.removeChild(this.getCanvas()._canvas), - t < e.getChildren().length - 1 - ? e.content.insertBefore(this.getCanvas()._canvas, e.getChildren()[t + 1].getCanvas()._canvas) - : e.content.appendChild(this.getCanvas()._canvas)), - this - ); - }, - moveToTop: function () { - i.Node.prototype.moveToTop.call(this); - var t = this.getStage(); - return ( - t && (t.content.removeChild(this.getCanvas()._canvas), t.content.appendChild(this.getCanvas()._canvas)), - this - ); - }, - moveUp: function () { - if (!i.Node.prototype.moveUp.call(this)) return this; - var t = this.getStage(); - return ( - t && - (t.content.removeChild(this.getCanvas()._canvas), - this.index < t.getChildren().length - 1 - ? t.content.insertBefore(this.getCanvas()._canvas, t.getChildren()[this.index + 1].getCanvas()._canvas) - : t.content.appendChild(this.getCanvas()._canvas)), - this - ); - }, - moveDown: function () { - if (i.Node.prototype.moveDown.call(this)) { - var t = this.getStage(); - if (t) { - var e = t.getChildren(); - t.content.removeChild(this.getCanvas()._canvas), - t.content.insertBefore(this.getCanvas()._canvas, e[this.index + 1].getCanvas()._canvas); - } - } - return this; - }, - moveToBottom: function () { - if (i.Node.prototype.moveToBottom.call(this)) { - var t = this.getStage(); - if (t) { - var e = t.getChildren(); - t.content.removeChild(this.getCanvas()._canvas), - t.content.insertBefore(this.getCanvas()._canvas, e[1].getCanvas()._canvas); - } - } - return this; - }, - getLayer: function () { - return this; - }, - remove: function () { - var t = this.getCanvas()._canvas; - return ( - i.Node.prototype.remove.call(this), - t && t.parentNode && i.Util._isInDocument(t) && t.parentNode.removeChild(t), - this - ); - }, - getStage: function () { - return this.parent; - }, - setSize: function (t, e) { - return this.canvas.setSize(t, e), this; - }, - _toKonvaCanvas: function (t) { - return ( - ((t = t || {}).width = t.width || this.getWidth()), - (t.height = t.height || this.getHeight()), - (t.x = void 0 !== t.x ? t.x : this.getX()), - (t.y = void 0 !== t.y ? t.y : this.getY()), - i.Node.prototype._toKonvaCanvas.call(this, t) - ); - }, - getWidth: function () { - if (this.parent) return this.parent.getWidth(); - }, - setWidth: function () { - i.Util.warn('Can not change width of layer. Use "stage.width(value)" function instead.'); - }, - getHeight: function () { - if (this.parent) return this.parent.getHeight(); - }, - setHeight: function () { - i.Util.warn('Can not change height of layer. Use "stage.height(value)" function instead.'); - }, - _applyTransform: function (t, e, i) { - var n = t.getAbsoluteTransform(i).getMatrix(); - e.transform(n[0], n[1], n[2], n[3], n[4], n[5]); - }, - }), - i.Util.extend(i.BaseLayer, i.Container), - i.Factory.addGetterSetter(i.BaseLayer, 'clearBeforeDraw', !0), - i.Collection.mapMethods(i.BaseLayer); - })(Konva), - (function () { - 'use strict'; - var h = [ - { x: 0, y: 0 }, - { x: -1, y: -1 }, - { x: 1, y: -1 }, - { x: 1, y: 1 }, - { x: -1, y: 1 }, - ], - l = h.length; - (Konva.Layer = function (t) { - this.____init(t); - }), - Konva.Util.addMethods(Konva.Layer, { - ____init: function (t) { - (this.nodeType = 'Layer'), - (this.canvas = new Konva.SceneCanvas()), - (this.hitCanvas = new Konva.HitCanvas({ pixelRatio: 1 })), - Konva.BaseLayer.call(this, t); - }, - _setCanvasSize: function (t, e) { - this.canvas.setSize(t, e), this.hitCanvas.setSize(t, e); - }, - _validateAdd: function (t) { - var e = t.getType(); - 'Group' !== e && 'Shape' !== e && Konva.Util.throw('You may only add groups and shapes to a layer.'); - }, - getIntersection: function (t, e) { - var i, n, a, r; - if (!this.hitGraphEnabled() || !this.isVisible()) return null; - for (var o = 1, s = !1; ; ) { - for (n = 0; n < l; n++) { - if (((a = h[n]), (r = (i = this._getIntersection({ x: t.x + a.x * o, y: t.y + a.y * o })).shape) && e)) - return r.findAncestor(e, !0); - if (r) return r; - if (((s = !!i.antialiased), !i.antialiased)) break; - } - if (!s) return null; - o += 1; - } - }, - _getImageData: function (t, e) { - var i = this.hitCanvas.width || 1, - n = this.hitCanvas.height || 1, - a = Math.round(e) * i + Math.round(t); - return ( - this._hitImageData || (this._hitImageData = this.hitCanvas.context.getImageData(0, 0, i, n)), - [ - this._hitImageData.data[4 * a + 0], - this._hitImageData.data[4 * a + 1], - this._hitImageData.data[4 * a + 2], - this._hitImageData.data[4 * a + 3], - ] - ); - }, - _getIntersection: function (t) { - var e, - i, - n = this.hitCanvas.pixelRatio, - a = this.hitCanvas.context.getImageData(Math.round(t.x * n), Math.round(t.y * n), 1, 1).data, - r = a[3]; - return 255 === r - ? ((e = Konva.Util._rgbToHex(a[0], a[1], a[2])), - (i = Konva.shapes['#' + e]) ? { shape: i } : { antialiased: !0 }) - : 0 < r - ? { antialiased: !0 } - : {}; - }, - drawScene: function (t, e) { - var i = this.getLayer(), - n = t || (i && i.getCanvas()); - return ( - this._fire('beforeDraw', { node: this }), - this.getClearBeforeDraw() && n.getContext().clear(), - Konva.Container.prototype.drawScene.call(this, n, e), - this._fire('draw', { node: this }), - this - ); - }, - drawHit: function (t, e) { - var i = this.getLayer(), - n = t || (i && i.hitCanvas); - return ( - i && i.getClearBeforeDraw() && i.getHitCanvas().getContext().clear(), - Konva.Container.prototype.drawHit.call(this, n, e), - (this.imageData = null), - this - ); - }, - clear: function (t) { - return ( - Konva.BaseLayer.prototype.clear.call(this, t), - this.getHitCanvas().getContext().clear(t), - (this.imageData = null), - this - ); - }, - setVisible: function (t) { - return ( - Konva.Node.prototype.setVisible.call(this, t), - t - ? ((this.getCanvas()._canvas.style.display = 'block'), (this.hitCanvas._canvas.style.display = 'block')) - : ((this.getCanvas()._canvas.style.display = 'none'), (this.hitCanvas._canvas.style.display = 'none')), - this - ); - }, - enableHitGraph: function () { - return this.setHitGraphEnabled(!0), this; - }, - disableHitGraph: function () { - return this.setHitGraphEnabled(!1), this; - }, - setSize: function (t, e) { - return Konva.BaseLayer.prototype.setSize.call(this, t, e), this.hitCanvas.setSize(t, e), this; - }, - }), - Konva.Util.extend(Konva.Layer, Konva.BaseLayer), - Konva.Factory.addGetterSetter(Konva.Layer, 'hitGraphEnabled', !0), - Konva.Collection.mapMethods(Konva.Layer); - })(), - (function () { - 'use strict'; - (Konva.FastLayer = function (t) { - this.____init(t); - }), - Konva.Util.addMethods(Konva.FastLayer, { - ____init: function (t) { - (this.nodeType = 'Layer'), (this.canvas = new Konva.SceneCanvas()), Konva.BaseLayer.call(this, t); - }, - _validateAdd: function (t) { - 'Shape' !== t.getType() && Konva.Util.throw('You may only add shapes to a fast layer.'); - }, - _setCanvasSize: function (t, e) { - this.canvas.setSize(t, e); - }, - hitGraphEnabled: function () { - return !1; - }, - getIntersection: function () { - return null; - }, - drawScene: function (t) { - var e = this.getLayer(), - i = t || (e && e.getCanvas()); - return ( - this.getClearBeforeDraw() && i.getContext().clear(), Konva.Container.prototype.drawScene.call(this, i), this - ); - }, - draw: function () { - return this.drawScene(), this; - }, - setVisible: function (t) { - return ( - Konva.Node.prototype.setVisible.call(this, t), - (this.getCanvas()._canvas.style.display = t ? 'block' : 'none'), - this - ); - }, - }), - Konva.Util.extend(Konva.FastLayer, Konva.BaseLayer), - Konva.Collection.mapMethods(Konva.FastLayer); - })(), - (function () { - 'use strict'; - (Konva.Group = function (t) { - this.___init(t); - }), - Konva.Util.addMethods(Konva.Group, { - ___init: function (t) { - (this.nodeType = 'Group'), Konva.Container.call(this, t); - }, - _validateAdd: function (t) { - var e = t.getType(); - 'Group' !== e && 'Shape' !== e && Konva.Util.throw('You may only add groups and shapes to groups.'); - }, - }), - Konva.Util.extend(Konva.Group, Konva.Container), - Konva.Collection.mapMethods(Konva.Group); - })(), - (function (n) { - 'use strict'; - var c = - n.global.performance && n.global.performance.now - ? function () { - return n.global.performance.now(); - } - : function () { - return new Date().getTime(); - }; - function t(t) { - setTimeout(t, 1e3 / 60); - } - var e = - n.global.requestAnimationFrame || - n.global.webkitRequestAnimationFrame || - n.global.mozRequestAnimationFrame || - n.global.oRequestAnimationFrame || - n.global.msRequestAnimationFrame || - t; - function i() { - return e.apply(n.global, arguments); - } - (n.Animation = function (t, e) { - var i = n.Animation; - (this.func = t), - this.setLayers(e), - (this.id = i.animIdCounter++), - (this.frame = { time: 0, timeDiff: 0, lastTime: c() }); - }), - (n.Animation.prototype = { - setLayers: function (t) { - var e = []; - return (e = t ? (0 < t.length ? t : [t]) : []), (this.layers = e), this; - }, - getLayers: function () { - return this.layers; - }, - addLayer: function (t) { - var e, - i = this.layers, - n = i.length; - for (e = 0; e < n; e++) if (i[e]._id === t._id) return !1; - return this.layers.push(t), !0; - }, - isRunning: function () { - var t, - e = n.Animation.animations, - i = e.length; - for (t = 0; t < i; t++) if (e[t].id === this.id) return !0; - return !1; - }, - start: function () { - var t = n.Animation; - return this.stop(), (this.frame.timeDiff = 0), (this.frame.lastTime = c()), t._addAnimation(this), this; - }, - stop: function () { - return n.Animation._removeAnimation(this), this; - }, - _updateFrameObject: function (t) { - (this.frame.timeDiff = t - this.frame.lastTime), - (this.frame.lastTime = t), - (this.frame.time += this.frame.timeDiff), - (this.frame.frameRate = 1e3 / this.frame.timeDiff); - }, - }), - (n.Animation.animations = []), - (n.Animation.animIdCounter = 0), - (n.Animation.animRunning = !1), - (n.Animation._addAnimation = function (t) { - this.animations.push(t), this._handleAnimation(); - }), - (n.Animation._removeAnimation = function (t) { - var e, - i = t.id, - n = this.animations, - a = n.length; - for (e = 0; e < a; e++) - if (n[e].id === i) { - this.animations.splice(e, 1); - break; - } - }), - (n.Animation._runFrames = function () { - var t, - e, - i, - n, - a, - r, - o, - s, - h = {}, - l = this.animations; - for (n = 0; n < l.length; n++) - if ( - ((e = (t = l[n]).layers), - (i = t.func), - t._updateFrameObject(c()), - (r = e.length), - !i || !1 !== i.call(t, t.frame)) - ) - for (a = 0; a < r; a++) void 0 !== (o = e[a])._id && (h[o._id] = o); - for (s in h) h.hasOwnProperty(s) && h[s].draw(); - }), - (n.Animation._animationLoop = function () { - var t = n.Animation; - t.animations.length ? (t._runFrames(), i(t._animationLoop)) : (t.animRunning = !1); - }), - (n.Animation._handleAnimation = function () { - this.animRunning || ((this.animRunning = !0), i(this._animationLoop)); - }), - (n.BaseLayer.prototype.batchDraw = function () { - var t = this, - e = n.Animation; - return ( - this.batchAnim || - (this.batchAnim = new e(function () { - t.batchAnim.stop(); - }, this)), - this.batchAnim.isRunning() || this.batchAnim.start(), - this - ); - }), - (n.Stage.prototype.batchDraw = function () { - return ( - this.getChildren().each(function (t) { - t.batchDraw(); - }), - this - ); - }); - })(Konva), - (function () { - 'use strict'; - var l = { node: 1, duration: 1, easing: 1, onFinish: 1, yoyo: 1 }, - c = 0, - g = ['fill', 'stroke', 'shadowColor'], - d = function (t, e, i, n, a, r, o) { - (this.prop = t), - (this.propFunc = e), - (this.begin = n), - (this._pos = n), - (this.duration = r), - (this._change = 0), - (this.prevPos = 0), - (this.yoyo = o), - (this._time = 0), - (this._position = 0), - (this._startTime = 0), - (this._finish = 0), - (this.func = i), - (this._change = a - this.begin), - this.pause(); - }; - (d.prototype = { - fire: function (t) { - var e = this[t]; - e && e(); - }, - setTime: function (t) { - t > this.duration - ? this.yoyo - ? ((this._time = this.duration), this.reverse()) - : this.finish() - : t < 0 - ? this.yoyo - ? ((this._time = 0), this.play()) - : this.reset() - : ((this._time = t), this.update()); - }, - getTime: function () { - return this._time; - }, - setPosition: function (t) { - (this.prevPos = this._pos), this.propFunc(t), (this._pos = t); - }, - getPosition: function (t) { - return void 0 === t && (t = this._time), this.func(t, this.begin, this._change, this.duration); - }, - play: function () { - (this.state = 2), (this._startTime = this.getTimer() - this._time), this.onEnterFrame(), this.fire('onPlay'); - }, - reverse: function () { - (this.state = 3), - (this._time = this.duration - this._time), - (this._startTime = this.getTimer() - this._time), - this.onEnterFrame(), - this.fire('onReverse'); - }, - seek: function (t) { - this.pause(), (this._time = t), this.update(), this.fire('onSeek'); - }, - reset: function () { - this.pause(), (this._time = 0), this.update(), this.fire('onReset'); - }, - finish: function () { - this.pause(), (this._time = this.duration), this.update(), this.fire('onFinish'); - }, - update: function () { - this.setPosition(this.getPosition(this._time)); - }, - onEnterFrame: function () { - var t = this.getTimer() - this._startTime; - 2 === this.state ? this.setTime(t) : 3 === this.state && this.setTime(this.duration - t); - }, - pause: function () { - (this.state = 1), this.fire('onPause'); - }, - getTimer: function () { - return new Date().getTime(); - }, - }), - (Konva.Tween = function (t) { - var e, - i, - n = this, - a = t.node, - r = a._id, - o = t.easing || Konva.Easings.Linear, - s = !!t.yoyo; - (e = void 0 === t.duration ? 0.3 : 0 === t.duration ? 0.001 : t.duration), (this.node = a), (this._id = c++); - var h = a.getLayer() || (a instanceof Konva.Stage ? a.getLayers() : null); - for (i in (h || - Konva.Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.'), - (this.anim = new Konva.Animation(function () { - n.tween.onEnterFrame(); - }, h)), - (this.tween = new d( - i, - function (t) { - n._tweenFunc(t); - }, - o, - 0, - 1, - 1e3 * e, - s, - )), - this._addListeners(), - Konva.Tween.attrs[r] || (Konva.Tween.attrs[r] = {}), - Konva.Tween.attrs[r][this._id] || (Konva.Tween.attrs[r][this._id] = {}), - Konva.Tween.tweens[r] || (Konva.Tween.tweens[r] = {}), - t)) - void 0 === l[i] && this._addAttr(i, t[i]); - this.reset(), (this.onFinish = t.onFinish), (this.onReset = t.onReset); - }), - (Konva.Tween.attrs = {}), - (Konva.Tween.tweens = {}), - (Konva.Tween.prototype = { - _addAttr: function (t, e) { - var i, - n, - a, - r, - o, - s, - h, - l, - c = this.node, - d = c._id; - if ( - ((a = Konva.Tween.tweens[d][t]) && delete Konva.Tween.attrs[d][a][t], - (i = c.getAttr(t)), - Konva.Util._isArray(e)) - ) - if ( - ((n = []), - (o = Math.max(e.length, i.length)), - 'points' === t && - e.length !== i.length && - (e.length > i.length - ? ((h = i), (i = Konva.Util._prepareArrayForTween(i, e, c.closed()))) - : ((s = e), (e = Konva.Util._prepareArrayForTween(e, i, c.closed())))), - 0 === t.indexOf('fill')) - ) - for (r = 0; r < o; r++) - if (r % 2 == 0) n.push(e[r] - i[r]); - else { - var u = Konva.Util.colorToRGBA(i[r]); - (l = Konva.Util.colorToRGBA(e[r])), - (i[r] = u), - n.push({ r: l.r - u.r, g: l.g - u.g, b: l.b - u.b, a: l.a - u.a }); - } - else for (r = 0; r < o; r++) n.push(e[r] - i[r]); - else - -1 !== g.indexOf(t) - ? ((i = Konva.Util.colorToRGBA(i)), - (n = { r: (l = Konva.Util.colorToRGBA(e)).r - i.r, g: l.g - i.g, b: l.b - i.b, a: l.a - i.a })) - : (n = e - i); - (Konva.Tween.attrs[d][this._id][t] = { start: i, diff: n, end: e, trueEnd: s, trueStart: h }), - (Konva.Tween.tweens[d][t] = this._id); - }, - _tweenFunc: function (t) { - var e, - i, - n, - a, - r, - o, - s, - h, - l = this.node, - c = Konva.Tween.attrs[l._id][this._id]; - for (e in c) { - if (((n = (i = c[e]).start), (a = i.diff), (h = i.end), Konva.Util._isArray(n))) - if (((r = []), (s = Math.max(n.length, h.length)), 0 === e.indexOf('fill'))) - for (o = 0; o < s; o++) - o % 2 == 0 - ? r.push((n[o] || 0) + a[o] * t) - : r.push( - 'rgba(' + - Math.round(n[o].r + a[o].r * t) + - ',' + - Math.round(n[o].g + a[o].g * t) + - ',' + - Math.round(n[o].b + a[o].b * t) + - ',' + - (n[o].a + a[o].a * t) + - ')', - ); - else for (o = 0; o < s; o++) r.push((n[o] || 0) + a[o] * t); - else - r = - -1 !== g.indexOf(e) - ? 'rgba(' + - Math.round(n.r + a.r * t) + - ',' + - Math.round(n.g + a.g * t) + - ',' + - Math.round(n.b + a.b * t) + - ',' + - (n.a + a.a * t) + - ')' - : n + a * t; - l.setAttr(e, r); - } - }, - _addListeners: function () { - var i = this; - (this.tween.onPlay = function () { - i.anim.start(); - }), - (this.tween.onReverse = function () { - i.anim.start(); - }), - (this.tween.onPause = function () { - i.anim.stop(); - }), - (this.tween.onFinish = function () { - var t = i.node, - e = Konva.Tween.attrs[t._id][i._id]; - e.points && e.points.trueEnd && t.points(e.points.trueEnd), i.onFinish && i.onFinish.call(i); - }), - (this.tween.onReset = function () { - var t = i.node, - e = Konva.Tween.attrs[t._id][i._id]; - e.points && e.points.trueStart && t.points(e.points.trueStart), i.onReset && i.onReset(); - }); - }, - play: function () { - return this.tween.play(), this; - }, - reverse: function () { - return this.tween.reverse(), this; - }, - reset: function () { - return this.tween.reset(), this; - }, - seek: function (t) { - return this.tween.seek(1e3 * t), this; - }, - pause: function () { - return this.tween.pause(), this; - }, - finish: function () { - return this.tween.finish(), this; - }, - destroy: function () { - var t, - e = this.node._id, - i = this._id, - n = Konva.Tween.tweens[e]; - for (t in (this.pause(), n)) delete Konva.Tween.tweens[e][t]; - delete Konva.Tween.attrs[e][i]; - }, - }), - (Konva.Node.prototype.to = function (t) { - var e = t.onFinish; - (t.node = this), - (t.onFinish = function () { - this.destroy(), e && e(); - }), - new Konva.Tween(t).play(); - }), - (Konva.Easings = { - BackEaseIn: function (t, e, i, n) { - return i * (t /= n) * t * (2.70158 * t - 1.70158) + e; - }, - BackEaseOut: function (t, e, i, n) { - return i * ((t = t / n - 1) * t * (2.70158 * t + 1.70158) + 1) + e; - }, - BackEaseInOut: function (t, e, i, n) { - var a = 1.70158; - return (t /= n / 2) < 1 - ? (i / 2) * (t * t * ((1 + (a *= 1.525)) * t - a)) + e - : (i / 2) * ((t -= 2) * t * ((1 + (a *= 1.525)) * t + a) + 2) + e; - }, - ElasticEaseIn: function (t, e, i, n, a, r) { - var o = 0; - return 0 === t - ? e - : 1 == (t /= n) - ? e + i - : (r || (r = 0.3 * n), - !a || a < Math.abs(i) ? ((a = i), (o = r / 4)) : (o = (r / (2 * Math.PI)) * Math.asin(i / a)), - -a * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t * n - o) * (2 * Math.PI)) / r) + e); - }, - ElasticEaseOut: function (t, e, i, n, a, r) { - var o = 0; - return 0 === t - ? e - : 1 == (t /= n) - ? e + i - : (r || (r = 0.3 * n), - !a || a < Math.abs(i) ? ((a = i), (o = r / 4)) : (o = (r / (2 * Math.PI)) * Math.asin(i / a)), - a * Math.pow(2, -10 * t) * Math.sin(((t * n - o) * (2 * Math.PI)) / r) + i + e); - }, - ElasticEaseInOut: function (t, e, i, n, a, r) { - var o = 0; - return 0 === t - ? e - : 2 == (t /= n / 2) - ? e + i - : (r || (r = n * (0.3 * 1.5)), - !a || a < Math.abs(i) ? ((a = i), (o = r / 4)) : (o = (r / (2 * Math.PI)) * Math.asin(i / a)), - t < 1 - ? a * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t * n - o) * (2 * Math.PI)) / r) * -0.5 + e - : a * Math.pow(2, -10 * (t -= 1)) * Math.sin(((t * n - o) * (2 * Math.PI)) / r) * 0.5 + i + e); - }, - BounceEaseOut: function (t, e, i, n) { - return (t /= n) < 1 / 2.75 - ? i * (7.5625 * t * t) + e - : t < 2 / 2.75 - ? i * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + e - : t < 2.5 / 2.75 - ? i * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + e - : i * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + e; - }, - BounceEaseIn: function (t, e, i, n) { - return i - Konva.Easings.BounceEaseOut(n - t, 0, i, n) + e; - }, - BounceEaseInOut: function (t, e, i, n) { - return t < n / 2 - ? 0.5 * Konva.Easings.BounceEaseIn(2 * t, 0, i, n) + e - : 0.5 * Konva.Easings.BounceEaseOut(2 * t - n, 0, i, n) + 0.5 * i + e; - }, - EaseIn: function (t, e, i, n) { - return i * (t /= n) * t + e; - }, - EaseOut: function (t, e, i, n) { - return -i * (t /= n) * (t - 2) + e; - }, - EaseInOut: function (t, e, i, n) { - return (t /= n / 2) < 1 ? (i / 2) * t * t + e : (-i / 2) * (--t * (t - 2) - 1) + e; - }, - StrongEaseIn: function (t, e, i, n) { - return i * (t /= n) * t * t * t * t + e; - }, - StrongEaseOut: function (t, e, i, n) { - return i * ((t = t / n - 1) * t * t * t * t + 1) + e; - }, - StrongEaseInOut: function (t, e, i, n) { - return (t /= n / 2) < 1 ? (i / 2) * t * t * t * t * t + e : (i / 2) * ((t -= 2) * t * t * t * t + 2) + e; - }, - Linear: function (t, e, i, n) { - return (i * t) / n + e; - }, - }); - })(), - (function () { - 'use strict'; - (Konva.DD = { - anim: new Konva.Animation(function () { - var t = this.dirty; - return (this.dirty = !1), t; - }), - isDragging: !1, - justDragged: !1, - offset: { x: 0, y: 0 }, - node: null, - _drag: function (t) { - var e = Konva.DD, - i = e.node; - if (i) { - if (!e.isDragging) { - var n = i.getStage().getPointerPosition(); - n || (i.getStage()._setPointerPosition(t), (n = i.getStage().getPointerPosition())); - var a = i.dragDistance(); - if (Math.max(Math.abs(n.x - e.startPointerPos.x), Math.abs(n.y - e.startPointerPos.y)) < a) return; - } - i.getStage()._setPointerPosition(t), - i._setDragPosition(t), - e.isDragging || ((e.isDragging = !0), i.fire('dragstart', { type: 'dragstart', target: i, evt: t }, !0)), - i.fire('dragmove', { type: 'dragmove', target: i, evt: t }, !0); - } - }, - _endDragBefore: function (t) { - var e, - i = Konva.DD, - n = i.node; - n && - ((e = n.getLayer()), - i.anim.stop(), - i.isDragging && - ((i.isDragging = !1), (i.justDragged = !0), (Konva.listenClickTap = !1), t && (t.dragEndNode = n)), - delete i.node, - (n.getLayer() || e || n instanceof Konva.Stage) && (e || n).draw()); - }, - _endDragAfter: function (t) { - var e = (t = t || {}).dragEndNode; - t && e && e.fire('dragend', { type: 'dragend', target: e, evt: t }, !0); - }, - }), - (Konva.Node.prototype.startDrag = function () { - var t = Konva.DD, - e = this.getStage(), - i = this.getLayer(), - n = e.getPointerPosition(), - a = this.getAbsolutePosition(); - n && - (t.node && t.node.stopDrag(), - (t.node = this), - (t.startPointerPos = n), - (t.offset.x = n.x - a.x), - (t.offset.y = n.y - a.y), - t.anim.setLayers(i || this.getLayers()), - t.anim.start(), - this._setDragPosition()); - }), - (Konva.Node.prototype._setDragPosition = function (t) { - var e = Konva.DD, - i = this.getStage().getPointerPosition(), - n = this.getDragBoundFunc(); - if (i) { - var a = { x: i.x - e.offset.x, y: i.y - e.offset.y }; - void 0 !== n && (a = n.call(this, a, t)), - this.setAbsolutePosition(a), - (this._lastPos && this._lastPos.x === a.x && this._lastPos.y === a.y) || (e.anim.dirty = !0), - (this._lastPos = a); - } - }), - (Konva.Node.prototype.stopDrag = function () { - var t = Konva.DD, - e = {}; - t._endDragBefore(e), t._endDragAfter(e); - }), - (Konva.Node.prototype.setDraggable = function (t) { - this._setAttr('draggable', t), this._dragChange(); - }); - var e = Konva.Node.prototype.remove; - (Konva.Node.prototype.__originalRemove = e), - (Konva.Node.prototype.remove = function () { - var t = Konva.DD; - t.node && t.node._id === this._id && this.stopDrag(), e.call(this); - }), - (Konva.Node.prototype.isDragging = function () { - var t = Konva.DD; - return !(!t.node || t.node._id !== this._id || !t.isDragging); - }), - (Konva.Node.prototype._listenDrag = function () { - var e = this; - this._dragCleanup(), - 'Stage' === this.getClassName() - ? this.on('contentMousedown.konva contentTouchstart.konva', function (t) { - Konva.DD.node || e.startDrag(t); - }) - : this.on('mousedown.konva touchstart.konva', function (t) { - 1 !== t.evt.button && 2 !== t.evt.button && (Konva.DD.node || e.startDrag(t)); - }); - }), - (Konva.Node.prototype._dragChange = function () { - if (this.attrs.draggable) this._listenDrag(); - else { - this._dragCleanup(); - var t = this.getStage(), - e = Konva.DD; - t && e.node && e.node._id === this._id && e.node.stopDrag(); - } - }), - (Konva.Node.prototype._dragCleanup = function () { - 'Stage' === this.getClassName() - ? (this.off('contentMousedown.konva'), this.off('contentTouchstart.konva')) - : (this.off('mousedown.konva'), this.off('touchstart.konva')); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'dragBoundFunc'), - Konva.Factory.addGetter(Konva.Node, 'draggable', !1), - Konva.Factory.addOverloadedGetterSetter(Konva.Node, 'draggable'), - Konva.isBrowser && - (window.addEventListener('mouseup', Konva.DD._endDragBefore, !0), - window.addEventListener('touchend', Konva.DD._endDragBefore, !0), - window.addEventListener('mousemove', Konva.DD._drag), - window.addEventListener('touchmove', Konva.DD._drag), - window.addEventListener('mouseup', Konva.DD._endDragAfter, !1), - window.addEventListener('touchend', Konva.DD._endDragAfter, !1)); - })(), - (function () { - 'use strict'; - (Konva.Rect = function (t) { - this.___init(t); - }), - (Konva.Rect.prototype = { - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Rect'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = this.getCornerRadius(), - i = this.getWidth(), - n = this.getHeight(); - t.beginPath(), - e - ? ((e = Math.min(e, i / 2, n / 2)), - t.moveTo(e, 0), - t.lineTo(i - e, 0), - t.arc(i - e, e, e, (3 * Math.PI) / 2, 0, !1), - t.lineTo(i, n - e), - t.arc(i - e, n - e, e, 0, Math.PI / 2, !1), - t.lineTo(e, n), - t.arc(e, n - e, e, Math.PI / 2, Math.PI, !1), - t.lineTo(0, e), - t.arc(e, e, e, Math.PI, (3 * Math.PI) / 2, !1)) - : t.rect(0, 0, i, n), - t.closePath(), - t.fillStrokeShape(this); - }, - }), - Konva.Util.extend(Konva.Rect, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Rect, 'cornerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.Rect); - })(), - (function (e) { - 'use strict'; - var i = 2 * Math.PI - 1e-4; - (e.Circle = function (t) { - this.___init(t); - }), - (e.Circle.prototype = { - _centroid: !0, - ___init: function (t) { - e.Shape.call(this, t), (this.className = 'Circle'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - t.beginPath(), t.arc(0, 0, this.getRadius(), 0, i, !1), t.closePath(), t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getRadius(); - }, - getHeight: function () { - return 2 * this.getRadius(); - }, - setWidth: function (t) { - e.Node.prototype.setWidth.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - setHeight: function (t) { - e.Node.prototype.setHeight.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - }), - e.Util.extend(e.Circle, e.Shape), - e.Factory.addGetterSetter(e.Circle, 'radius', 0, e.Validators.getNumberValidator()), - e.Factory.addOverloadedGetterSetter(e.Circle, 'radius'), - e.Collection.mapMethods(e.Circle); - })(Konva), - (function () { - 'use strict'; - var n = 2 * Math.PI - 1e-4; - (Konva.Ellipse = function (t) { - this.___init(t); - }), - (Konva.Ellipse.prototype = { - _centroid: !0, - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Ellipse'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = this.getRadiusX(), - i = this.getRadiusY(); - t.beginPath(), - t.save(), - e !== i && t.scale(1, i / e), - t.arc(0, 0, e, 0, n, !1), - t.restore(), - t.closePath(), - t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getRadiusX(); - }, - getHeight: function () { - return 2 * this.getRadiusY(); - }, - setWidth: function (t) { - Konva.Node.prototype.setWidth.call(this, t), this.setRadius({ x: t / 2 }); - }, - setHeight: function (t) { - Konva.Node.prototype.setHeight.call(this, t), this.setRadius({ y: t / 2 }); - }, - }), - Konva.Util.extend(Konva.Ellipse, Konva.Shape), - Konva.Factory.addComponentsGetterSetter(Konva.Ellipse, 'radius', ['x', 'y']), - Konva.Factory.addGetterSetter(Konva.Ellipse, 'radiusX', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Ellipse, 'radiusY', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.Ellipse); - })(), - (function () { - 'use strict'; - var e = 2 * Math.PI - 1e-4; - (Konva.Ring = function (t) { - this.___init(t); - }), - (Konva.Ring.prototype = { - _centroid: !0, - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Ring'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - t.beginPath(), - t.arc(0, 0, this.getInnerRadius(), 0, e, !1), - t.moveTo(this.getOuterRadius(), 0), - t.arc(0, 0, this.getOuterRadius(), e, 0, !0), - t.closePath(), - t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getOuterRadius(); - }, - getHeight: function () { - return 2 * this.getOuterRadius(); - }, - setWidth: function (t) { - Konva.Node.prototype.setWidth.call(this, t), this.outerRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - setHeight: function (t) { - Konva.Node.prototype.setHeight.call(this, t), this.outerRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - setOuterRadius: function (t) { - this._setAttr('outerRadius', t), this.setWidth(2 * t), this.setHeight(2 * t); - }, - }), - Konva.Util.extend(Konva.Ring, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Ring, 'innerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetter(Konva.Ring, 'outerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addOverloadedGetterSetter(Konva.Ring, 'outerRadius'), - Konva.Collection.mapMethods(Konva.Ring); - })(), - (function () { - 'use strict'; - (Konva.Wedge = function (t) { - this.___init(t); - }), - (Konva.Wedge.prototype = { - _centroid: !0, - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Wedge'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - t.beginPath(), - t.arc(0, 0, this.getRadius(), 0, Konva.getAngle(this.getAngle()), this.getClockwise()), - t.lineTo(0, 0), - t.closePath(), - t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getRadius(); - }, - getHeight: function () { - return 2 * this.getRadius(); - }, - setWidth: function (t) { - Konva.Node.prototype.setWidth.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - setHeight: function (t) { - Konva.Node.prototype.setHeight.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - }), - Konva.Util.extend(Konva.Wedge, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Wedge, 'radius', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Wedge, 'angle', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Wedge, 'clockwise', !1), - Konva.Factory.backCompat(Konva.Wedge, { angleDeg: 'angle', getAngleDeg: 'getAngle', setAngleDeg: 'setAngle' }), - Konva.Collection.mapMethods(Konva.Wedge); - })(), - (function (n) { - 'use strict'; - (n.Arc = function (t) { - this.___init(t); - }), - (n.Arc.prototype = { - _centroid: !0, - ___init: function (t) { - n.Shape.call(this, t), (this.className = 'Arc'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = n.getAngle(this.angle()), - i = this.clockwise(); - t.beginPath(), - t.arc(0, 0, this.getOuterRadius(), 0, e, i), - t.arc(0, 0, this.getInnerRadius(), e, 0, !i), - t.closePath(), - t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getOuterRadius(); - }, - getHeight: function () { - return 2 * this.getOuterRadius(); - }, - setWidth: function (t) { - n.Node.prototype.setWidth.call(this, t), this.getOuterRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - setHeight: function (t) { - n.Node.prototype.setHeight.call(this, t), this.getOuterRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - }), - n.Util.extend(n.Arc, n.Shape), - n.Factory.addGetterSetter(n.Arc, 'innerRadius', 0, n.Validators.getNumberValidator()), - n.Factory.addGetterSetter(n.Arc, 'outerRadius', 0, n.Validators.getNumberValidator()), - n.Factory.addGetterSetter(n.Arc, 'angle', 0, n.Validators.getNumberValidator()), - n.Factory.addGetterSetter(n.Arc, 'clockwise', !1), - n.Collection.mapMethods(n.Arc); - })(Konva), - (function () { - 'use strict'; - (Konva.Image = function (t) { - this.___init(t); - }), - (Konva.Image.prototype = { - ___init: function (t) { - Konva.Shape.call(this, t), - (this.className = 'Image'), - this.sceneFunc(this._sceneFunc), - this.hitFunc(this._hitFunc); - }, - _useBufferCanvas: function () { - return (this.hasShadow() || 1 !== this.getAbsoluteOpacity()) && this.hasStroke() && this.getStage(); - }, - _sceneFunc: function (t) { - var e, - i, - n, - a = this.getWidth(), - r = this.getHeight(), - o = this.getImage(); - o && - ((e = this.getCropWidth()), - (i = this.getCropHeight()), - (n = e && i ? [o, this.getCropX(), this.getCropY(), e, i, 0, 0, a, r] : [o, 0, 0, a, r])), - (this.hasFill() || this.hasStroke()) && - (t.beginPath(), t.rect(0, 0, a, r), t.closePath(), t.fillStrokeShape(this)), - o && t.drawImage.apply(t, n); - }, - _hitFunc: function (t) { - var e = this.getWidth(), - i = this.getHeight(); - t.beginPath(), t.rect(0, 0, e, i), t.closePath(), t.fillStrokeShape(this); - }, - getWidth: function () { - var t = this.getImage(); - return this.attrs.width || (t ? t.width : 0); - }, - getHeight: function () { - var t = this.getImage(); - return this.attrs.height || (t ? t.height : 0); - }, - }), - Konva.Util.extend(Konva.Image, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Image, 'image'), - Konva.Factory.addComponentsGetterSetter(Konva.Image, 'crop', ['x', 'y', 'width', 'height']), - Konva.Factory.addGetterSetter(Konva.Image, 'cropX', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Image, 'cropY', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Image, 'cropWidth', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Image, 'cropHeight', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.Image), - (Konva.Image.fromURL = function (t, e) { - var i = new Image(); - (i.onload = function () { - var t = new Konva.Image({ image: i }); - e(t); - }), - (i.crossOrigin = 'Anonymous'), - (i.src = t); - }); - })(), - (function () { - 'use strict'; - var t, - M = 'auto', - C = 'justify', - e = '2d', - i = [ - 'fontFamily', - 'fontSize', - 'fontStyle', - 'fontVariant', - 'padding', - 'align', - 'verticalAlign', - 'lineHeight', - 'text', - 'width', - 'height', - 'wrap', - 'ellipsis', - 'letterSpacing', - ], - n = i.length; - function k() { - return t || (t = Konva.Util.createCanvasElement().getContext(e)); - } - function a(t) { - t.fillText(this.partialText, 0, 0); - } - function r(t) { - t.strokeText(this.partialText, 0, 0); - } - (Konva.Text = function (t) { - this.___init(t); - }), - (Konva.Text.prototype = { - ___init: function (t) { - (t = t || {}).fillLinearGradientColorStops || t.fillRadialGradientColorStops || (t.fill = t.fill || 'black'), - Konva.Shape.call(this, t), - (this._fillFunc = a), - (this._strokeFunc = r), - (this.className = 'Text'); - for (var e = 0; e < n; e++) this.on(i[e] + 'Change.konva', this._setTextData); - this._setTextData(), this.sceneFunc(this._sceneFunc), this.hitFunc(this._hitFunc); - }, - _sceneFunc: function (t) { - var e, - i = this.getPadding(), - n = this.getTextHeight(), - a = this.getLineHeight() * n, - r = this.textArr, - o = r.length, - s = this.getVerticalAlign(), - h = 0, - l = this.getAlign(), - c = this.getWidth(), - d = this.getLetterSpacing(), - u = this.textDecoration(), - g = this.fill(), - f = this.fontSize(); - for ( - t.setAttr('font', this._getContextFont()), - t.setAttr('textBaseline', 'middle'), - t.setAttr('textAlign', 'left'), - 'middle' === s - ? (h = (this.getHeight() - o * a - 2 * i) / 2) - : 'bottom' === s && (h = this.getHeight() - o * a - 2 * i), - i ? (t.translate(i, 0), t.translate(0, h + i + a / 2)) : t.translate(0, h + a / 2), - e = 0; - e < o; - e++ - ) { - var v, - p, - m, - _ = r[e], - y = _.text, - K = _.width, - S = e !== o - 1; - if ( - (t.save(), - 'right' === l ? t.translate(c - K - 2 * i, 0) : 'center' === l && t.translate((c - K - 2 * i) / 2, 0), - -1 !== u.indexOf('underline') && - (t.save(), - t.beginPath(), - t.moveTo(0, Math.round(a / 2)), - (p = 0 === (v = y.split(' ').length - 1)), - (m = l === C && S && !p ? c - 2 * i : K), - t.lineTo(Math.round(m), Math.round(a / 2)), - (t.lineWidth = f / 15), - (t.strokeStyle = g), - t.stroke(), - t.restore()), - -1 !== u.indexOf('line-through') && - (t.save(), - t.beginPath(), - t.moveTo(0, 0), - (p = 0 === (v = y.split(' ').length - 1)), - (m = l === C && S && !p ? c - 2 * i : K), - t.lineTo(Math.round(m), 0), - (t.lineWidth = f / 15), - (t.strokeStyle = g), - t.stroke(), - t.restore()), - 0 !== d || l === C) - ) { - v = y.split(' ').length - 1; - for (var b = 0; b < y.length; b++) { - var x = y[b]; - ' ' === x && e !== o - 1 && l === C && t.translate(Math.floor((c - 2 * i - K) / v), 0), - (this.partialText = x), - t.fillStrokeShape(this), - t.translate(Math.round(this._getTextSize(x).width) + d, 0); - } - } else (this.partialText = y), t.fillStrokeShape(this); - t.restore(), 1 < o && t.translate(0, a); - } - }, - _hitFunc: function (t) { - var e = this.getWidth(), - i = this.getHeight(); - t.beginPath(), t.rect(0, 0, e, i), t.closePath(), t.fillStrokeShape(this); - }, - setText: function (t) { - var e = Konva.Util._isString(t) ? t : (t || '').toString(); - return this._setAttr('text', e), this; - }, - getWidth: function () { - return this.attrs.width === M || void 0 === this.attrs.width - ? this.getTextWidth() + 2 * this.getPadding() - : this.attrs.width; - }, - getHeight: function () { - return this.attrs.height === M || void 0 === this.attrs.height - ? this.getTextHeight() * this.textArr.length * this.getLineHeight() + 2 * this.getPadding() - : this.attrs.height; - }, - getTextWidth: function () { - return this.textWidth; - }, - getTextHeight: function () { - return this.textHeight; - }, - _getTextSize: function (t) { - var e, - i = k(), - n = this.getFontSize(); - return ( - i.save(), - (i.font = this._getContextFont()), - (e = i.measureText(t)), - i.restore(), - { width: e.width, height: parseInt(n, 10) } - ); - }, - _getContextFont: function () { - return Konva.UA.isIE - ? this.getFontStyle() + ' ' + this.getFontSize() + 'px ' + this.getFontFamily() - : this.getFontStyle() + - ' ' + - this.getFontVariant() + - ' ' + - this.getFontSize() + - 'px ' + - this.getFontFamily(); - }, - _addTextLine: function (t) { - this.align() === C && (t = t.trim()); - var e = this._getTextWidth(t); - return this.textArr.push({ text: t, width: e }); - }, - _getTextWidth: function (t) { - var e = this.getLetterSpacing(), - i = t.length; - return k().measureText(t).width + (i ? e * (i - 1) : 0); - }, - _setTextData: function () { - var t = this.getText().split('\n'), - e = +this.getFontSize(), - i = 0, - n = this.getLineHeight() * e, - a = this.attrs.width, - r = this.attrs.height, - o = a !== M, - s = r !== M, - h = this.getPadding(), - l = a - 2 * h, - c = r - 2 * h, - d = 0, - u = this.getWrap(), - g = 'none' !== u, - f = 'char' !== u && g, - v = this.getEllipsis() && !g; - (this.textArr = []), (k().font = this._getContextFont()); - for (var p = 0, m = t.length; p < m; ++p) { - var _ = t[p], - y = v ? this._getTextWidth('…') : 0, - K = this._getTextWidth(_); - if (o && l < K) - for (; 0 < _.length; ) { - for (var S = 0, b = _.length, x = '', C = 0; S < b; ) { - var w = (S + b) >>> 1, - F = _.slice(0, w + 1), - T = this._getTextWidth(F) + y; - T <= l ? ((S = w + 1), (x = F + (v ? '…' : '')), (C = T)) : (b = w); - } - if (!x) break; - if (f) { - var P, - A = _[x.length]; - 0 < - (P = - (' ' === A || '-' === A) && C <= l - ? x.length - : Math.max(x.lastIndexOf(' '), x.lastIndexOf('-')) + 1) && - ((S = P), (x = x.slice(0, S)), (C = this._getTextWidth(x))); - } - if (((x = x.trimRight()), this._addTextLine(x), (i = Math.max(i, C)), (d += n), !g || (s && c < d + n))) - break; - if (0 < (_ = (_ = _.slice(S)).trimLeft()).length && (K = this._getTextWidth(_)) <= l) { - this._addTextLine(_), (d += n), (i = Math.max(i, K)); - break; - } - } - else this._addTextLine(_), (d += n), (i = Math.max(i, K)); - if (s && c < d + n) break; - } - (this.textHeight = e), (this.textWidth = i); - }, - }), - Konva.Util.extend(Konva.Text, Konva.Shape), - Konva.Factory.addSetter(Konva.Node, 'width', Konva.Validators.getNumberOrAutoValidator()), - Konva.Factory.addSetter(Konva.Node, 'height', Konva.Validators.getNumberOrAutoValidator()), - Konva.Factory.addGetterSetter(Konva.Text, 'fontFamily', 'Arial'), - Konva.Factory.addGetterSetter(Konva.Text, 'fontSize', 12, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Text, 'fontStyle', 'normal'), - Konva.Factory.addGetterSetter(Konva.Text, 'fontVariant', 'normal'), - Konva.Factory.addGetterSetter(Konva.Text, 'padding', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Text, 'align', 'left'), - Konva.Factory.addGetterSetter(Konva.Text, 'verticalAlign', 'top'), - Konva.Factory.addGetterSetter(Konva.Text, 'lineHeight', 1, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Text, 'wrap', 'word'), - Konva.Factory.addGetterSetter(Konva.Text, 'ellipsis', !1), - Konva.Factory.addGetterSetter(Konva.Text, 'letterSpacing', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetter(Konva.Text, 'text', ''), - Konva.Factory.addOverloadedGetterSetter(Konva.Text, 'text'), - Konva.Factory.addGetterSetter(Konva.Text, 'textDecoration', ''), - Konva.Collection.mapMethods(Konva.Text); - })(), - (function () { - 'use strict'; - (Konva.Line = function (t) { - this.___init(t); - }), - (Konva.Line.prototype = { - ___init: function (t) { - Konva.Shape.call(this, t), - (this.className = 'Line'), - this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () { - this._clearCache('tensionPoints'); - }), - this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e, - i, - n, - a = this.getPoints(), - r = a.length, - o = this.getTension(), - s = this.getClosed(), - h = this.getBezier(); - if (r) { - if ((t.beginPath(), t.moveTo(a[0], a[1]), 0 !== o && 4 < r)) { - for ( - i = (e = this.getTensionPoints()).length, - n = s ? 0 : 4, - s || t.quadraticCurveTo(e[0], e[1], e[2], e[3]); - n < i - 2; - - ) - t.bezierCurveTo(e[n++], e[n++], e[n++], e[n++], e[n++], e[n++]); - s || t.quadraticCurveTo(e[i - 2], e[i - 1], a[r - 2], a[r - 1]); - } else if (h) for (n = 2; n < r; ) t.bezierCurveTo(a[n++], a[n++], a[n++], a[n++], a[n++], a[n++]); - else for (n = 2; n < r; n += 2) t.lineTo(a[n], a[n + 1]); - s ? (t.closePath(), t.fillStrokeShape(this)) : t.strokeShape(this); - } - }, - getTensionPoints: function () { - return this._getCache('tensionPoints', this._getTensionPoints); - }, - _getTensionPoints: function () { - return this.getClosed() - ? this._getTensionPointsClosed() - : Konva.Util._expandPoints(this.getPoints(), this.getTension()); - }, - _getTensionPointsClosed: function () { - var t = this.getPoints(), - e = t.length, - i = this.getTension(), - n = Konva.Util, - a = n._getControlPoints(t[e - 2], t[e - 1], t[0], t[1], t[2], t[3], i), - r = n._getControlPoints(t[e - 4], t[e - 3], t[e - 2], t[e - 1], t[0], t[1], i), - o = Konva.Util._expandPoints(t, i); - return [a[2], a[3]].concat(o).concat([r[0], r[1], t[e - 2], t[e - 1], r[2], r[3], a[0], a[1], t[0], t[1]]); - }, - getWidth: function () { - return this.getSelfRect().width; - }, - getHeight: function () { - return this.getSelfRect().height; - }, - getSelfRect: function () { - for ( - var t, - e, - i, - n = (t = 0 !== this.getTension() ? this._getTensionPoints() : this.getPoints())[0], - a = t[0], - r = t[1], - o = t[1], - s = 0; - s < t.length / 2; - s++ - ) - (e = t[2 * s]), - (i = t[2 * s + 1]), - (n = Math.min(n, e)), - (a = Math.max(a, e)), - (r = Math.min(r, i)), - (o = Math.max(o, i)); - return { x: Math.round(n), y: Math.round(r), width: Math.round(a - n), height: Math.round(o - r) }; - }, - }), - Konva.Util.extend(Konva.Line, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Line, 'closed', !1), - Konva.Factory.addGetterSetter(Konva.Line, 'bezier', !1), - Konva.Factory.addGetterSetter(Konva.Line, 'tension', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Line, 'points', [], Konva.Validators.getNumberArrayValidator()), - Konva.Collection.mapMethods(Konva.Line); - })(), - (function () { - 'use strict'; - (Konva.Sprite = function (t) { - this.___init(t); - }), - (Konva.Sprite.prototype = { - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Sprite'), (this._updated = !0); - var e = this; - (this.anim = new Konva.Animation(function () { - var t = e._updated; - return (e._updated = !1), t; - })), - this.on('animationChange.konva', function () { - this.frameIndex(0); - }), - this.on('frameIndexChange.konva', function () { - this._updated = !0; - }), - this.on('frameRateChange.konva', function () { - this.anim.isRunning() && (clearInterval(this.interval), this._setInterval()); - }), - this.sceneFunc(this._sceneFunc), - this.hitFunc(this._hitFunc); - }, - _sceneFunc: function (t) { - var e = this.getAnimation(), - i = this.frameIndex(), - n = 4 * i, - a = this.getAnimations()[e], - r = this.frameOffsets(), - o = a[n + 0], - s = a[n + 1], - h = a[n + 2], - l = a[n + 3], - c = this.getImage(); - if ( - ((this.hasFill() || this.hasStroke()) && - (t.beginPath(), t.rect(0, 0, h, l), t.closePath(), t.fillStrokeShape(this)), - c) - ) - if (r) { - var d = r[e], - u = 2 * i; - t.drawImage(c, o, s, h, l, d[u + 0], d[u + 1], h, l); - } else t.drawImage(c, o, s, h, l, 0, 0, h, l); - }, - _hitFunc: function (t) { - var e = this.getAnimation(), - i = this.frameIndex(), - n = 4 * i, - a = this.getAnimations()[e], - r = this.frameOffsets(), - o = a[n + 2], - s = a[n + 3]; - if ((t.beginPath(), r)) { - var h = r[e], - l = 2 * i; - t.rect(h[l + 0], h[l + 1], o, s); - } else t.rect(0, 0, o, s); - t.closePath(), t.fillShape(this); - }, - _useBufferCanvas: function () { - return (this.hasShadow() || 1 !== this.getAbsoluteOpacity()) && this.hasStroke(); - }, - _setInterval: function () { - var t = this; - this.interval = setInterval(function () { - t._updateIndex(); - }, 1e3 / this.getFrameRate()); - }, - start: function () { - if (!this.isRunning()) { - var t = this.getLayer(); - this.anim.setLayers(t), this._setInterval(), this.anim.start(); - } - }, - stop: function () { - this.anim.stop(), clearInterval(this.interval); - }, - isRunning: function () { - return this.anim.isRunning(); - }, - _updateIndex: function () { - var t = this.frameIndex(), - e = this.getAnimation(); - t < this.getAnimations()[e].length / 4 - 1 ? this.frameIndex(t + 1) : this.frameIndex(0); - }, - }), - Konva.Util.extend(Konva.Sprite, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Sprite, 'animation'), - Konva.Factory.addGetterSetter(Konva.Sprite, 'animations'), - Konva.Factory.addGetterSetter(Konva.Sprite, 'frameOffsets'), - Konva.Factory.addGetterSetter(Konva.Sprite, 'image'), - Konva.Factory.addGetterSetter(Konva.Sprite, 'frameIndex', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Sprite, 'frameRate', 17, Konva.Validators.getNumberValidator()), - Konva.Factory.backCompat(Konva.Sprite, { - index: 'frameIndex', - getIndex: 'getFrameIndex', - setIndex: 'setFrameIndex', - }), - Konva.Collection.mapMethods(Konva.Sprite); - })(), - (function () { - 'use strict'; - (Konva.Path = function (t) { - this.___init(t); - }), - (Konva.Path.prototype = { - ___init: function (t) { - this.dataArray = []; - var e = this; - Konva.Shape.call(this, t), - (this.className = 'Path'), - (this.dataArray = Konva.Path.parsePathData(this.getData())); - for (var i = (this.pathLength = 0); i < this.dataArray.length; ++i) - this.pathLength += this.dataArray[i].pathLength; - this.on('dataChange.konva', function () { - e.dataArray = Konva.Path.parsePathData(this.getData()); - for (var t = (this.pathLength = 0); t < this.dataArray.length; ++t) - this.pathLength += this.dataArray[t].pathLength; - }), - this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = this.dataArray; - t.beginPath(); - for (var i = 0; i < e.length; i++) { - var n = e[i].command, - a = e[i].points; - switch (n) { - case 'L': - t.lineTo(a[0], a[1]); - break; - case 'M': - t.moveTo(a[0], a[1]); - break; - case 'C': - t.bezierCurveTo(a[0], a[1], a[2], a[3], a[4], a[5]); - break; - case 'Q': - t.quadraticCurveTo(a[0], a[1], a[2], a[3]); - break; - case 'A': - var r = a[0], - o = a[1], - s = a[2], - h = a[3], - l = a[4], - c = a[5], - d = a[6], - u = a[7], - g = h < s ? s : h, - f = h < s ? 1 : s / h, - v = h < s ? h / s : 1; - t.translate(r, o), - t.rotate(d), - t.scale(f, v), - t.arc(0, 0, g, l, l + c, 1 - u), - t.scale(1 / f, 1 / v), - t.rotate(-d), - t.translate(-r, -o); - break; - case 'z': - t.closePath(); - } - } - t.fillStrokeShape(this); - }, - getSelfRect: function () { - var e = []; - this.dataArray.forEach(function (t) { - e = e.concat(t.points); - }); - for (var t, i, n = e[0], a = e[0], r = e[1], o = e[1], s = 0; s < e.length / 2; s++) - (t = e[2 * s]), - (i = e[2 * s + 1]), - isNaN(t) || ((n = Math.min(n, t)), (a = Math.max(a, t))), - isNaN(i) || ((r = Math.min(r, i)), (o = Math.max(o, i))); - return { x: Math.round(n), y: Math.round(r), width: Math.round(a - n), height: Math.round(o - r) }; - }, - getLength: function () { - return this.pathLength; - }, - getPointAtLength: function (t) { - var e, - i = 0, - n = this.dataArray.length; - if (!n) return null; - for (; i < n && t > this.dataArray[i].pathLength; ) (t -= this.dataArray[i].pathLength), ++i; - if (i === n) return { x: (e = this.dataArray[i - 1].points.slice(-2))[0], y: e[1] }; - if (t < 0.01) return { x: (e = this.dataArray[i].points.slice(0, 2))[0], y: e[1] }; - var a = this.dataArray[i], - r = a.points; - switch (a.command) { - case 'L': - return Konva.Path.getPointOnLine(t, a.start.x, a.start.y, r[0], r[1]); - case 'C': - return Konva.Path.getPointOnCubicBezier( - t / a.pathLength, - a.start.x, - a.start.y, - r[0], - r[1], - r[2], - r[3], - r[4], - r[5], - ); - case 'Q': - return Konva.Path.getPointOnQuadraticBezier( - t / a.pathLength, - a.start.x, - a.start.y, - r[0], - r[1], - r[2], - r[3], - ); - case 'A': - var o = r[0], - s = r[1], - h = r[2], - l = r[3], - c = r[4], - d = r[5], - u = r[6]; - return (c += (d * t) / a.pathLength), Konva.Path.getPointOnEllipticalArc(o, s, h, l, c, u); - } - return null; - }, - }), - Konva.Util.extend(Konva.Path, Konva.Shape), - (Konva.Path.getLineLength = function (t, e, i, n) { - return Math.sqrt((i - t) * (i - t) + (n - e) * (n - e)); - }), - (Konva.Path.getPointOnLine = function (t, e, i, n, a, r, o) { - void 0 === r && (r = e), void 0 === o && (o = i); - var s = (a - i) / (n - e + 1e-8), - h = Math.sqrt((t * t) / (1 + s * s)); - n < e && (h *= -1); - var l, - c = s * h; - if (n === e) l = { x: r, y: o + c }; - else if ((o - i) / (r - e + 1e-8) === s) l = { x: r + h, y: o + c }; - else { - var d, - u, - g = this.getLineLength(e, i, n, a); - if (g < 1e-8) return; - var f = (r - e) * (n - e) + (o - i) * (a - i); - (d = e + (f /= g * g) * (n - e)), (u = i + f * (a - i)); - var v = this.getLineLength(r, o, d, u), - p = Math.sqrt(t * t - v * v); - (h = Math.sqrt((p * p) / (1 + s * s))), n < e && (h *= -1), (l = { x: d + h, y: u + (c = s * h) }); - } - return l; - }), - (Konva.Path.getPointOnCubicBezier = function (t, e, i, n, a, r, o, s, h) { - function l(t) { - return t * t * t; - } - function c(t) { - return 3 * t * t * (1 - t); - } - function d(t) { - return 3 * t * (1 - t) * (1 - t); - } - function u(t) { - return (1 - t) * (1 - t) * (1 - t); - } - return { x: s * l(t) + r * c(t) + n * d(t) + e * u(t), y: h * l(t) + o * c(t) + a * d(t) + i * u(t) }; - }), - (Konva.Path.getPointOnQuadraticBezier = function (t, e, i, n, a, r, o) { - function s(t) { - return t * t; - } - function h(t) { - return 2 * t * (1 - t); - } - function l(t) { - return (1 - t) * (1 - t); - } - return { x: r * s(t) + n * h(t) + e * l(t), y: o * s(t) + a * h(t) + i * l(t) }; - }), - (Konva.Path.getPointOnEllipticalArc = function (t, e, i, n, a, r) { - var o = Math.cos(r), - s = Math.sin(r), - h = i * Math.cos(a), - l = n * Math.sin(a); - return { x: t + (h * o - l * s), y: e + (h * s + l * o) }; - }), - (Konva.Path.parsePathData = function (t) { - if (!t) return []; - var e = t, - i = ['m', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z', 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A']; - e = e.replace(new RegExp(' ', 'g'), ','); - for (var n = 0; n < i.length; n++) e = e.replace(new RegExp(i[n], 'g'), '|' + i[n]); - var a, - r = e.split('|'), - o = [], - s = [], - h = 0, - l = 0, - c = /([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/gi; - for (n = 1; n < r.length; n++) { - var d = r[n], - u = d.charAt(0); - for (d = d.slice(1), s.length = 0; (a = c.exec(d)); ) s.push(a[0]); - for (var g = [], f = 0, v = s.length; f < v; f++) { - var p = parseFloat(s[f]); - isNaN(p) ? g.push(0) : g.push(p); - } - for (; 0 < g.length && !isNaN(g[0]); ) { - var m, - _, - y, - K, - S, - b, - x, - C, - w, - F, - T = null, - P = [], - A = h, - M = l; - switch (u) { - case 'l': - (h += g.shift()), (l += g.shift()), (T = 'L'), P.push(h, l); - break; - case 'L': - (h = g.shift()), (l = g.shift()), P.push(h, l); - break; - case 'm': - var k = g.shift(), - G = g.shift(); - if (((h += k), (l += G), (T = 'M'), 2 < o.length && 'z' === o[o.length - 1].command)) - for (var N = o.length - 2; 0 <= N; N--) - if ('M' === o[N].command) { - (h = o[N].points[0] + k), (l = o[N].points[1] + G); - break; - } - P.push(h, l), (u = 'l'); - break; - case 'M': - (h = g.shift()), (l = g.shift()), (T = 'M'), P.push(h, l), (u = 'L'); - break; - case 'h': - (h += g.shift()), (T = 'L'), P.push(h, l); - break; - case 'H': - (h = g.shift()), (T = 'L'), P.push(h, l); - break; - case 'v': - (l += g.shift()), (T = 'L'), P.push(h, l); - break; - case 'V': - (l = g.shift()), (T = 'L'), P.push(h, l); - break; - case 'C': - P.push(g.shift(), g.shift(), g.shift(), g.shift()), (h = g.shift()), (l = g.shift()), P.push(h, l); - break; - case 'c': - P.push(h + g.shift(), l + g.shift(), h + g.shift(), l + g.shift()), - (h += g.shift()), - (l += g.shift()), - (T = 'C'), - P.push(h, l); - break; - case 'S': - (_ = h), - (y = l), - 'C' === (m = o[o.length - 1]).command && ((_ = h + (h - m.points[2])), (y = l + (l - m.points[3]))), - P.push(_, y, g.shift(), g.shift()), - (h = g.shift()), - (l = g.shift()), - (T = 'C'), - P.push(h, l); - break; - case 's': - (_ = h), - (y = l), - 'C' === (m = o[o.length - 1]).command && ((_ = h + (h - m.points[2])), (y = l + (l - m.points[3]))), - P.push(_, y, h + g.shift(), l + g.shift()), - (h += g.shift()), - (l += g.shift()), - (T = 'C'), - P.push(h, l); - break; - case 'Q': - P.push(g.shift(), g.shift()), (h = g.shift()), (l = g.shift()), P.push(h, l); - break; - case 'q': - P.push(h + g.shift(), l + g.shift()), (h += g.shift()), (l += g.shift()), (T = 'Q'), P.push(h, l); - break; - case 'T': - (_ = h), - (y = l), - 'Q' === (m = o[o.length - 1]).command && ((_ = h + (h - m.points[0])), (y = l + (l - m.points[1]))), - (h = g.shift()), - (l = g.shift()), - (T = 'Q'), - P.push(_, y, h, l); - break; - case 't': - (_ = h), - (y = l), - 'Q' === (m = o[o.length - 1]).command && ((_ = h + (h - m.points[0])), (y = l + (l - m.points[1]))), - (h += g.shift()), - (l += g.shift()), - (T = 'Q'), - P.push(_, y, h, l); - break; - case 'A': - (K = g.shift()), - (S = g.shift()), - (b = g.shift()), - (x = g.shift()), - (C = g.shift()), - (w = h), - (F = l), - (h = g.shift()), - (l = g.shift()), - (T = 'A'), - (P = this.convertEndpointToCenterParameterization(w, F, h, l, x, C, K, S, b)); - break; - case 'a': - (K = g.shift()), - (S = g.shift()), - (b = g.shift()), - (x = g.shift()), - (C = g.shift()), - (w = h), - (F = l), - (h += g.shift()), - (l += g.shift()), - (T = 'A'), - (P = this.convertEndpointToCenterParameterization(w, F, h, l, x, C, K, S, b)); - } - o.push({ command: T || u, points: P, start: { x: A, y: M }, pathLength: this.calcLength(A, M, T || u, P) }); - } - ('z' !== u && 'Z' !== u) || o.push({ command: 'z', points: [], start: void 0, pathLength: 0 }); - } - return o; - }), - (Konva.Path.calcLength = function (t, e, i, n) { - var a, - r, - o, - s, - h = Konva.Path; - switch (i) { - case 'L': - return h.getLineLength(t, e, n[0], n[1]); - case 'C': - for ( - a = 0, r = h.getPointOnCubicBezier(0, t, e, n[0], n[1], n[2], n[3], n[4], n[5]), s = 0.01; - s <= 1; - s += 0.01 - ) - (o = h.getPointOnCubicBezier(s, t, e, n[0], n[1], n[2], n[3], n[4], n[5])), - (a += h.getLineLength(r.x, r.y, o.x, o.y)), - (r = o); - return a; - case 'Q': - for (a = 0, r = h.getPointOnQuadraticBezier(0, t, e, n[0], n[1], n[2], n[3]), s = 0.01; s <= 1; s += 0.01) - (o = h.getPointOnQuadraticBezier(s, t, e, n[0], n[1], n[2], n[3])), - (a += h.getLineLength(r.x, r.y, o.x, o.y)), - (r = o); - return a; - case 'A': - a = 0; - var l = n[4], - c = n[5], - d = n[4] + c, - u = Math.PI / 180; - if ( - (Math.abs(l - d) < u && (u = Math.abs(l - d)), - (r = h.getPointOnEllipticalArc(n[0], n[1], n[2], n[3], l, 0)), - c < 0) - ) - for (s = l - u; d < s; s -= u) - (o = h.getPointOnEllipticalArc(n[0], n[1], n[2], n[3], s, 0)), - (a += h.getLineLength(r.x, r.y, o.x, o.y)), - (r = o); - else - for (s = l + u; s < d; s += u) - (o = h.getPointOnEllipticalArc(n[0], n[1], n[2], n[3], s, 0)), - (a += h.getLineLength(r.x, r.y, o.x, o.y)), - (r = o); - return ( - (o = h.getPointOnEllipticalArc(n[0], n[1], n[2], n[3], d, 0)), (a += h.getLineLength(r.x, r.y, o.x, o.y)) - ); - } - return 0; - }), - (Konva.Path.convertEndpointToCenterParameterization = function (t, e, i, n, a, r, o, s, h) { - var l = h * (Math.PI / 180), - c = (Math.cos(l) * (t - i)) / 2 + (Math.sin(l) * (e - n)) / 2, - d = (-1 * Math.sin(l) * (t - i)) / 2 + (Math.cos(l) * (e - n)) / 2, - u = (c * c) / (o * o) + (d * d) / (s * s); - 1 < u && ((o *= Math.sqrt(u)), (s *= Math.sqrt(u))); - var g = Math.sqrt((o * o * (s * s) - o * o * (d * d) - s * s * (c * c)) / (o * o * (d * d) + s * s * (c * c))); - a === r && (g *= -1), isNaN(g) && (g = 0); - var f = (g * o * d) / s, - v = (g * -s * c) / o, - p = (t + i) / 2 + Math.cos(l) * f - Math.sin(l) * v, - m = (e + n) / 2 + Math.sin(l) * f + Math.cos(l) * v, - _ = function (t) { - return Math.sqrt(t[0] * t[0] + t[1] * t[1]); - }, - y = function (t, e) { - return (t[0] * e[0] + t[1] * e[1]) / (_(t) * _(e)); - }, - K = function (t, e) { - return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(y(t, e)); - }, - S = K([1, 0], [(c - f) / o, (d - v) / s]), - b = [(c - f) / o, (d - v) / s], - x = [(-1 * c - f) / o, (-1 * d - v) / s], - C = K(b, x); - return ( - y(b, x) <= -1 && (C = Math.PI), - 1 <= y(b, x) && (C = 0), - 0 === r && 0 < C && (C -= 2 * Math.PI), - 1 === r && C < 0 && (C += 2 * Math.PI), - [p, m, o, s, S, C, l, r] - ); - }), - Konva.Factory.addGetterSetter(Konva.Path, 'data'), - Konva.Collection.mapMethods(Konva.Path); - })(), - (function () { - 'use strict'; - function i(t) { - t.fillText(this.partialText, 0, 0); - } - function n(t) { - t.strokeText(this.partialText, 0, 0); - } - (Konva.TextPath = function (t) { - this.___init(t); - }), - (Konva.TextPath.prototype = { - ___init: function (t) { - var e = this; - (this.dummyCanvas = Konva.Util.createCanvasElement()), - (this.dataArray = []), - (this.getKerning = t && t.getKerning), - Konva.Shape.call(this, t), - (this._fillFunc = i), - (this._strokeFunc = n), - (this._fillFuncHit = i), - (this._strokeFuncHit = n), - (this.className = 'TextPath'), - (this.dataArray = Konva.Path.parsePathData(this.attrs.data)), - this.on('dataChange.konva', function () { - (e.dataArray = Konva.Path.parsePathData(this.attrs.data)), e._setTextData(); - }), - this.on('textChange.konva alignChange.konva letterSpacingChange.konva', e._setTextData), - e._setTextData(), - this.sceneFunc(this._sceneFunc), - this.hitFunc(this._hitFunc); - }, - _sceneFunc: function (t) { - t.setAttr('font', this._getContextFont()), - t.setAttr('textBaseline', this.getTextBaseline()), - t.setAttr('textAlign', 'left'), - t.save(); - var e = this.textDecoration(), - i = this.fill(), - n = this.fontSize(), - a = this.glyphInfo; - 'underline' === e && t.beginPath(); - for (var r = 0; r < a.length; r++) { - t.save(); - var o = a[r].p0; - t.translate(o.x, o.y), - t.rotate(a[r].rotation), - (this.partialText = a[r].text), - t.fillStrokeShape(this), - 'underline' === e && (0 === r && t.moveTo(0, n / 2 + 1), t.lineTo(n, n / 2 + 1)), - t.restore(); - } - 'underline' === e && ((t.strokeStyle = i), (t.lineWidth = n / 20), t.stroke()), t.restore(); - }, - _hitFunc: function (t) { - t.beginPath(); - var e = this.glyphInfo; - if (1 <= e.length) { - var i = e[0].p0; - t.moveTo(i.x, i.y); - } - for (var n = 0; n < e.length; n++) { - var a = e[n].p1; - t.lineTo(a.x, a.y); - } - t.setAttr('lineWidth', this.getFontSize()), t.setAttr('strokeStyle', this.colorKey), t.stroke(); - }, - getTextWidth: function () { - return this.textWidth; - }, - getTextHeight: function () { - return this.textHeight; - }, - setText: function (t) { - Konva.Text.prototype.setText.call(this, t); - }, - _getTextSize: function (t) { - var e = this.dummyCanvas.getContext('2d'); - e.save(), (e.font = this._getContextFont()); - var i = e.measureText(t); - return e.restore(), { width: i.width, height: parseInt(this.attrs.fontSize, 10) }; - }, - _setTextData: function () { - var l = this, - t = this._getTextSize(this.attrs.text), - c = this.getLetterSpacing(), - d = this.align(); - (this.textWidth = t.width), (this.textHeight = t.height); - var u = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * c, 0); - this.glyphInfo = []; - for (var g = 0, e = 0; e < l.dataArray.length; e++) - 0 < l.dataArray[e].pathLength && (g += l.dataArray[e].pathLength); - var i = 0; - 'center' === d && (i = Math.max(0, g / 2 - u / 2)), 'right' === d && (i = Math.max(0, g - u)); - for ( - var f, - v, - p, - n = this.getText().split(''), - m = this.getText().split(' ').length - 1, - a = -1, - _ = 0, - y = function () { - _ = 0; - for (var t = l.dataArray, e = a + 1; e < t.length; e++) { - if (0 < t[e].pathLength) return t[(a = e)]; - 'M' === t[e].command && (f = { x: t[e].points[0], y: t[e].points[1] }); - } - return {}; - }, - r = function (t) { - var e = l._getTextSize(t).width + c; - ' ' === t && 'justify' === d && (e += (g - u) / m); - var i = 0, - n = 0; - for (v = void 0; 0.01 < Math.abs(e - i) / e && n < 25; ) { - n++; - for (var a = i; void 0 === p; ) - (p = y()) && a + p.pathLength < e && ((a += p.pathLength), (p = void 0)); - if (p === {} || void 0 === f) return; - var r = !1; - switch (p.command) { - case 'L': - Konva.Path.getLineLength(f.x, f.y, p.points[0], p.points[1]) > e - ? (v = Konva.Path.getPointOnLine(e, f.x, f.y, p.points[0], p.points[1], f.x, f.y)) - : (p = void 0); - break; - case 'A': - var o = p.points[4], - s = p.points[5], - h = p.points[4] + s; - 0 === _ - ? (_ = o + 1e-8) - : i < e - ? (_ += ((Math.PI / 180) * s) / Math.abs(s)) - : (_ -= ((Math.PI / 360) * s) / Math.abs(s)), - ((s < 0 && _ < h) || (0 <= s && h < _)) && ((_ = h), (r = !0)), - (v = Konva.Path.getPointOnEllipticalArc( - p.points[0], - p.points[1], - p.points[2], - p.points[3], - _, - p.points[6], - )); - break; - case 'C': - 0 === _ - ? (_ = e > p.pathLength ? 1e-8 : e / p.pathLength) - : i < e - ? (_ += (e - i) / p.pathLength) - : (_ -= (i - e) / p.pathLength), - 1 < _ && ((_ = 1), (r = !0)), - (v = Konva.Path.getPointOnCubicBezier( - _, - p.start.x, - p.start.y, - p.points[0], - p.points[1], - p.points[2], - p.points[3], - p.points[4], - p.points[5], - )); - break; - case 'Q': - 0 === _ - ? (_ = e / p.pathLength) - : i < e - ? (_ += (e - i) / p.pathLength) - : (_ -= (i - e) / p.pathLength), - 1 < _ && ((_ = 1), (r = !0)), - (v = Konva.Path.getPointOnQuadraticBezier( - _, - p.start.x, - p.start.y, - p.points[0], - p.points[1], - p.points[2], - p.points[3], - )); - } - void 0 !== v && (i = Konva.Path.getLineLength(f.x, f.y, v.x, v.y)), r && ((r = !1), (p = void 0)); - } - }, - o = l._getTextSize('C').width + c, - s = 0; - s < i / o && (r('C'), void 0 !== f && void 0 !== v); - s++ - ) - f = v; - for (var h = 0; h < n.length && (r(n[h]), void 0 !== f && void 0 !== v); h++) { - var K = Konva.Path.getLineLength(f.x, f.y, v.x, v.y), - S = 0; - if (this.getKerning) - try { - S = this.getKerning(n[h - 1], n[h]) * this.fontSize(); - } catch (t) { - S = 0; - } - (f.x += S), (v.x += S), (this.textWidth += S); - var b = Konva.Path.getPointOnLine(S + K / 2, f.x, f.y, v.x, v.y), - x = Math.atan2(v.y - f.y, v.x - f.x); - this.glyphInfo.push({ transposeX: b.x, transposeY: b.y, text: n[h], rotation: x, p0: f, p1: v }), (f = v); - } - }, - getSelfRect: function () { - var e = []; - this.glyphInfo.forEach(function (t) { - e.push(t.p0.x), e.push(t.p0.y), e.push(t.p1.x), e.push(t.p1.y); - }); - for (var t, i, n = e[0], a = e[0], r = e[0], o = e[0], s = 0; s < e.length / 2; s++) - (t = e[2 * s]), - (i = e[2 * s + 1]), - (n = Math.min(n, t)), - (a = Math.max(a, t)), - (r = Math.min(r, i)), - (o = Math.max(o, i)); - var h = this.fontSize(); - return { - x: Math.round(n) - h / 2, - y: Math.round(r) - h / 2, - width: Math.round(a - n) + h, - height: Math.round(o - r) + h, - }; - }, - }), - (Konva.TextPath.prototype._getContextFont = Konva.Text.prototype._getContextFont), - Konva.Util.extend(Konva.TextPath, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.TextPath, 'data'), - Konva.Factory.addGetterSetter(Konva.TextPath, 'fontFamily', 'Arial'), - Konva.Factory.addGetterSetter(Konva.TextPath, 'fontSize', 12, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.TextPath, 'fontStyle', 'normal'), - Konva.Factory.addGetterSetter(Konva.TextPath, 'align', 'left'), - Konva.Factory.addGetterSetter(Konva.TextPath, 'letterSpacing', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.TextPath, 'textBaseline', 'middle'), - Konva.Factory.addGetterSetter(Konva.TextPath, 'fontVariant', 'normal'), - Konva.Factory.addGetter(Konva.TextPath, 'text', ''), - Konva.Factory.addGetterSetter(Konva.TextPath, 'textDecoration', null), - Konva.Collection.mapMethods(Konva.TextPath); - })(), - (function () { - 'use strict'; - (Konva.RegularPolygon = function (t) { - this.___init(t); - }), - (Konva.RegularPolygon.prototype = { - _centroid: !0, - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'RegularPolygon'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e, - i, - n, - a = this.attrs.sides, - r = this.attrs.radius; - for (t.beginPath(), t.moveTo(0, 0 - r), e = 1; e < a; e++) - (i = r * Math.sin((2 * e * Math.PI) / a)), (n = -1 * r * Math.cos((2 * e * Math.PI) / a)), t.lineTo(i, n); - t.closePath(), t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getRadius(); - }, - getHeight: function () { - return 2 * this.getRadius(); - }, - setWidth: function (t) { - Konva.Node.prototype.setWidth.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - setHeight: function (t) { - Konva.Node.prototype.setHeight.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - }), - Konva.Util.extend(Konva.RegularPolygon, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.RegularPolygon, 'radius', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.RegularPolygon, 'sides', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.RegularPolygon); - })(), - (function () { - 'use strict'; - (Konva.Star = function (t) { - this.___init(t); - }), - (Konva.Star.prototype = { - _centroid: !0, - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Star'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = this.innerRadius(), - i = this.outerRadius(), - n = this.numPoints(); - t.beginPath(), t.moveTo(0, 0 - i); - for (var a = 1; a < 2 * n; a++) { - var r = a % 2 == 0 ? i : e, - o = r * Math.sin((a * Math.PI) / n), - s = -1 * r * Math.cos((a * Math.PI) / n); - t.lineTo(o, s); - } - t.closePath(), t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getOuterRadius(); - }, - getHeight: function () { - return 2 * this.getOuterRadius(); - }, - setWidth: function (t) { - Konva.Node.prototype.setWidth.call(this, t), this.outerRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - setHeight: function (t) { - Konva.Node.prototype.setHeight.call(this, t), this.outerRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - }), - Konva.Util.extend(Konva.Star, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Star, 'numPoints', 5, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Star, 'innerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Star, 'outerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.Star); - })(), - (function () { - 'use strict'; - var a = ['fontFamily', 'fontSize', 'fontStyle', 'padding', 'lineHeight', 'text', 'width'], - l = 'right', - c = 'down', - d = 'left', - r = a.length; - (Konva.Label = function (t) { - this.____init(t); - }), - (Konva.Label.prototype = { - ____init: function (t) { - var e = this; - Konva.Group.call(this, t), - (this.className = 'Label'), - this.on('add.konva', function (t) { - e._addListeners(t.child), e._sync(); - }); - }, - getText: function () { - return this.find('Text')[0]; - }, - getTag: function () { - return this.find('Tag')[0]; - }, - _addListeners: function (t) { - var e, - i = this, - n = function () { - i._sync(); - }; - for (e = 0; e < r; e++) t.on(a[e] + 'Change.konva', n); - }, - getWidth: function () { - return this.getText().getWidth(); - }, - getHeight: function () { - return this.getText().getHeight(); - }, - _sync: function () { - var t, - e, - i, - n, - a, - r, - o, - s = this.getText(), - h = this.getTag(); - if (s && h) { - switch ( - ((t = s.getWidth()), - (e = s.getHeight()), - (i = h.getPointerDirection()), - (n = h.getPointerWidth()), - (o = h.getPointerHeight()), - (r = a = 0), - i) - ) { - case 'up': - (a = t / 2), (r = -1 * o); - break; - case l: - (a = t + n), (r = e / 2); - break; - case c: - (a = t / 2), (r = e + o); - break; - case d: - (a = -1 * n), (r = e / 2); - } - h.setAttrs({ x: -1 * a, y: -1 * r, width: t, height: e }), s.setAttrs({ x: -1 * a, y: -1 * r }); - } - }, - }), - Konva.Util.extend(Konva.Label, Konva.Group), - Konva.Collection.mapMethods(Konva.Label), - (Konva.Tag = function (t) { - this.___init(t); - }), - (Konva.Tag.prototype = { - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Tag'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = this.getWidth(), - i = this.getHeight(), - n = this.getPointerDirection(), - a = this.getPointerWidth(), - r = this.getPointerHeight(), - o = Math.min(this.getCornerRadius(), e / 2, i / 2); - t.beginPath(), - o ? t.moveTo(o, 0) : t.moveTo(0, 0), - 'up' === n && (t.lineTo((e - a) / 2, 0), t.lineTo(e / 2, -1 * r), t.lineTo((e + a) / 2, 0)), - o ? (t.lineTo(e - o, 0), t.arc(e - o, o, o, (3 * Math.PI) / 2, 0, !1)) : t.lineTo(e, 0), - n === l && (t.lineTo(e, (i - r) / 2), t.lineTo(e + a, i / 2), t.lineTo(e, (i + r) / 2)), - o ? (t.lineTo(e, i - o), t.arc(e - o, i - o, o, 0, Math.PI / 2, !1)) : t.lineTo(e, i), - n === c && (t.lineTo((e + a) / 2, i), t.lineTo(e / 2, i + r), t.lineTo((e - a) / 2, i)), - o ? (t.lineTo(o, i), t.arc(o, i - o, o, Math.PI / 2, Math.PI, !1)) : t.lineTo(0, i), - n === d && (t.lineTo(0, (i + r) / 2), t.lineTo(-1 * a, i / 2), t.lineTo(0, (i - r) / 2)), - o && (t.lineTo(0, o), t.arc(o, o, o, Math.PI, (3 * Math.PI) / 2, !1)), - t.closePath(), - t.fillStrokeShape(this); - }, - getSelfRect: function () { - var t = 0, - e = 0, - i = this.getPointerWidth(), - n = this.getPointerHeight(), - a = this.pointerDirection(), - r = this.getWidth(), - o = this.getHeight(); - return ( - 'up' === a - ? ((e -= n), (o += n)) - : a === c - ? (o += n) - : a === d - ? ((t -= 1.5 * i), (r += i)) - : a === l && (r += 1.5 * i), - { x: t, y: e, width: r, height: o } - ); - }, - }), - Konva.Util.extend(Konva.Tag, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Tag, 'pointerDirection', 'none'), - Konva.Factory.addGetterSetter(Konva.Tag, 'pointerWidth', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Tag, 'pointerHeight', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Tag, 'cornerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.Tag); - })(), - (function (u) { - 'use strict'; - (u.Arrow = function (t) { - this.____init(t); - }), - (u.Arrow.prototype = { - ____init: function (t) { - u.Line.call(this, t), (this.className = 'Arrow'); - }, - _sceneFunc: function (t) { - u.Line.prototype._sceneFunc.apply(this, arguments); - var e = 2 * Math.PI, - i = this.points(), - n = i, - a = 0 !== this.getTension() && 4 < i.length; - a && (n = this.getTensionPoints()); - var r, - o, - s = i.length; - a - ? ((r = i[s - 2] - n[s - 2]), (o = i[s - 1] - n[s - 1])) - : ((r = i[s - 2] - i[s - 4]), (o = i[s - 1] - i[s - 3])); - var h = (Math.atan2(o, r) + e) % e, - l = this.pointerLength(), - c = this.pointerWidth(); - t.save(), - t.beginPath(), - t.translate(i[s - 2], i[s - 1]), - t.rotate(h), - t.moveTo(0, 0), - t.lineTo(-l, c / 2), - t.lineTo(-l, -c / 2), - t.closePath(), - t.restore(), - this.pointerAtBeginning() && - (t.save(), - t.translate(i[0], i[1]), - a ? ((r = n[0] - i[0]), (o = n[1] - i[1])) : ((r = i[2] - i[0]), (o = i[3] - i[1])), - t.rotate((Math.atan2(-o, -r) + e) % e), - t.moveTo(0, 0), - t.lineTo(-l, c / 2), - t.lineTo(-l, -c / 2), - t.closePath(), - t.restore()); - var d = this.dashEnabled(); - d && ((this.attrs.dashEnabled = !1), t.setLineDash([])), - t.fillStrokeShape(this), - d && (this.attrs.dashEnabled = !0); - }, - }), - u.Util.extend(u.Arrow, u.Line), - u.Factory.addGetterSetter(u.Arrow, 'pointerLength', 10, u.Validators.getNumberValidator()), - u.Factory.addGetterSetter(u.Arrow, 'pointerWidth', 10, u.Validators.getNumberValidator()), - u.Factory.addGetterSetter(u.Arrow, 'pointerAtBeginning', !1), - u.Collection.mapMethods(u.Arrow); - })(Konva), - (function (G) { - 'use strict'; - var e = [ - 'resizeEnabledChange', - 'rotateAnchorOffsetChange', - 'rotateEnabledChange', - 'enabledAnchorsChange', - 'anchorSizeChange', - 'borderEnabledChange', - 'borderStrokeChange', - 'borderStrokeWidthChange', - 'anchorStrokeChange', - 'anchorStrokeWidthChange', - 'anchorFillChange', - ].join(' '), - t = 'nodeRect', - i = [ - 'xChange.resizer', - 'yChange.resizer', - 'widthChange.resizer', - 'heightChange.resizer', - 'scaleXChange.resizer', - 'scaleYChange.resizer', - 'skewXChange.resizer', - 'skewYChange.resizer', - 'rotationChange.resizer', - 'offsetXChange.resizer', - 'offsetYChange.resizer', - 'transformsEnabledChange.resizer', - ].join(' '), - n = [ - 'widthChange.resizer', - 'heightChange.resizer', - 'scaleXChange.resizer', - 'scaleYChange.resizer', - 'skewXChange.resizer', - 'skewYChange.resizer', - 'rotationChange.resizer', - 'offsetXChange.resizer', - 'offsetYChange.resizer', - ].join(' '), - s = { - 'top-left': -45, - 'top-center': 0, - 'top-right': 45, - 'middle-right': -90, - 'middle-left': 90, - 'bottom-left': -135, - 'bottom-center': 180, - 'bottom-right': 135, - }; - G.Transformer = function (t) { - this.____init(t); - }; - var a = [ - 'top-left', - 'top-center', - 'top-right', - 'middle-right', - 'middle-left', - 'bottom-left', - 'bottom-center', - 'bottom-right', - ]; - (G.Transformer.prototype = { - _centroid: !1, - ____init: function (t) { - G.Group.call(this, t), - (this.className = 'Transformer'), - this._createElements(), - (this._handleMouseMove = this._handleMouseMove.bind(this)), - (this._handleMouseUp = this._handleMouseUp.bind(this)), - (this.update = this.update.bind(this)), - this.on(e, this.update), - this.getNode() && this.update(); - }, - attachTo: function (t) { - this.setNode(t); - }, - setNode: function (t) { - return ( - this._node && this.detach(), - (this._node = t), - this._resetTransformCache(), - t.on(i, this._resetTransformCache.bind(this)), - t.on( - n, - function () { - this._transforming || this.update(); - }.bind(this), - ), - !!this.findOne('.top-left') && this.update(), - this - ); - }, - getNode: function () { - return this._node; - }, - detach: function () { - this.getNode() && (this.getNode().off('.resizer'), (this._node = void 0)), this._resetTransformCache(); - }, - _resetTransformCache: function () { - this._clearCache(t), this._clearCache('transform'), this._clearSelfAndDescendantCache('absoluteTransform'); - }, - _getNodeRect: function () { - return this._getCache(t, this.__getNodeRect); - }, - __getNodeRect: function () { - var t = this.getNode(); - if (!t) return { x: -Number.MAX_SAFE_INTEGER, y: -Number.MAX_SAFE_INTEGER, width: 0, height: 0, rotation: 0 }; - var e = t.getClientRect({ skipTransform: !0 }), - i = G.getAngle(t.rotation()), - n = e.x * t.scaleX() - t.offsetX() * t.scaleX(), - a = e.y * t.scaleY() - t.offsetY() * t.scaleY(); - return { - x: t.x() + n * Math.cos(i) + a * Math.sin(-i), - y: t.y() + a * Math.cos(i) + n * Math.sin(i), - width: e.width * t.scaleX(), - height: e.height * t.scaleY(), - rotation: t.rotation(), - }; - }, - getX: function () { - return this._getNodeRect().x; - }, - getY: function () { - return this._getNodeRect().y; - }, - getRotation: function () { - return this._getNodeRect().rotation; - }, - getWidth: function () { - return this._getNodeRect().width; - }, - getHeight: function () { - return this._getNodeRect().height; - }, - _createElements: function () { - this._createBack(), - a.forEach( - function (t) { - this._createAnchor(t); - }.bind(this), - ), - this._createAnchor('rotater'); - }, - _createAnchor: function (r) { - var o = new G.Rect({ - stroke: 'rgb(0, 161, 255)', - fill: 'white', - strokeWidth: 1, - name: r + ' _anchor', - dragDistance: 0, - draggable: !0, - }), - e = this; - o.on('mousedown touchstart', function (t) { - e._handleMouseDown(t); - }), - o.on('dragstart', function (t) { - t.cancelBubble = !0; - }), - o.on('dragmove', function (t) { - t.cancelBubble = !0; - }), - o.on('dragend', function (t) { - t.cancelBubble = !0; - }), - o.on('mouseenter', function () { - var t = this.getParent(), - e = G.getAngle(t.rotation()), - i = t.getNode().getAbsoluteScale(), - n = i.y * i.x < 0, - a = (function (t, e, i) { - if ('rotater' === t) return 'crosshair'; - (e += G.Util._degToRad(s[t] || 0)), i && (e *= -1); - var n = ((G.Util._radToDeg(e) % 360) + 360) % 360; - return G.Util._inRange(n, 337.5, 360) || G.Util._inRange(n, 0, 22.5) - ? 'ns-resize' - : G.Util._inRange(n, 22.5, 67.5) - ? 'nesw-resize' - : G.Util._inRange(n, 67.5, 112.5) - ? 'ew-resize' - : G.Util._inRange(n, 112.5, 157.5) - ? 'nwse-resize' - : G.Util._inRange(n, 157.5, 202.5) - ? 'ns-resize' - : G.Util._inRange(n, 202.5, 247.5) - ? 'nesw-resize' - : G.Util._inRange(n, 247.5, 292.5) - ? 'ew-resize' - : G.Util._inRange(n, 292.5, 337.5) - ? 'nwse-resize' - : (G.Util.error('Transformer has unknown angle for cursor detection: ' + n), 'pointer'); - })(r, e, n); - (o.getStage().content.style.cursor = a), (t._cursorChange = !0); - }), - o.on('mouseout', function () { - o.getStage() && - this.getParent() && - ((o.getStage().content.style.cursor = ''), (this.getParent()._cursorChange = !1)); - }), - this.add(o); - }, - _createBack: function () { - var t = new G.Shape({ - name: 'back', - width: 0, - height: 0, - listening: !1, - sceneFunc: function (t) { - var e = this.getParent(), - i = e.getPadding(); - t.beginPath(), - t.rect(-i, -i, this.width() + 2 * i, this.height() + 2 * i), - t.moveTo(this.width() / 2, -i), - e.rotateEnabled() && t.lineTo(this.width() / 2, -e.rotateAnchorOffset() * G.Util._sign(this.height())), - t.fillStrokeShape(this); - }, - }); - this.add(t); - }, - _handleMouseDown: function (t) { - this.movingResizer = t.target.name().split(' ')[0]; - var e = this._getNodeRect(), - i = e.width, - n = e.height, - a = Math.sqrt(Math.pow(i, 2) + Math.pow(n, 2)); - (this.sin = n / a), - (this.cos = i / a), - window.addEventListener('mousemove', this._handleMouseMove), - window.addEventListener('touchmove', this._handleMouseMove), - window.addEventListener('mouseup', this._handleMouseUp, !0), - window.addEventListener('touchend', this._handleMouseUp, !0), - (this._transforming = !0), - this._fire('transformstart', { evt: t }), - this.getNode()._fire('transformstart', { evt: t }); - }, - _handleMouseMove: function (t) { - var e, - i, - n, - a = this.findOne('.' + this.movingResizer), - r = a.getStage().getContent().getBoundingClientRect(), - o = r.left, - s = r.top, - h = { - x: (void 0 !== t.clientX ? t.clientX : t.touches[0].clientX) - o, - y: (void 0 !== t.clientX ? t.clientY : t.touches[0].clientY) - s, - }; - a.setAbsolutePosition(h); - var l = this.keepRatio() || t.shiftKey; - if ('top-left' === this.movingResizer) - l && - ((e = - (n = Math.sqrt( - Math.pow(this.findOne('.bottom-right').x() - a.x(), 2) + - Math.pow(this.findOne('.bottom-right').y() - a.y(), 2), - )) * this.cos), - (i = n * this.sin), - this.findOne('.top-left').x(this.findOne('.bottom-right').x() - e), - this.findOne('.top-left').y(this.findOne('.bottom-right').y() - i)); - else if ('top-center' === this.movingResizer) this.findOne('.top-left').y(a.y()); - else if ('top-right' === this.movingResizer) { - l && - ((e = - (n = Math.sqrt( - Math.pow(this.findOne('.bottom-left').x() - a.x(), 2) + - Math.pow(this.findOne('.bottom-left').y() - a.y(), 2), - )) * this.cos), - (i = n * this.sin), - this.findOne('.top-right').x(e), - this.findOne('.top-right').y(this.findOne('.bottom-left').y() - i)); - var c = a.position(); - this.findOne('.top-left').y(c.y), this.findOne('.bottom-right').x(c.x); - } else if ('middle-left' === this.movingResizer) this.findOne('.top-left').x(a.x()); - else if ('middle-right' === this.movingResizer) this.findOne('.bottom-right').x(a.x()); - else if ('bottom-left' === this.movingResizer) - l && - ((e = - (n = Math.sqrt( - Math.pow(this.findOne('.top-right').x() - a.x(), 2) + - Math.pow(this.findOne('.top-right').y() - a.y(), 2), - )) * this.cos), - (i = n * this.sin), - this.findOne('.bottom-left').x(this.findOne('.top-right').x() - e), - this.findOne('.bottom-left').y(i)), - (c = a.position()), - this.findOne('.top-left').x(c.x), - this.findOne('.bottom-right').y(c.y); - else if ('bottom-center' === this.movingResizer) this.findOne('.bottom-right').y(a.y()); - else if ('bottom-right' === this.movingResizer) - l && - ((e = - (n = Math.sqrt( - Math.pow(this.findOne('.bottom-right').x(), 2) + Math.pow(this.findOne('.bottom-right').y(), 2), - )) * this.cos), - (i = n * this.sin), - this.findOne('.bottom-right').x(e), - this.findOne('.bottom-right').y(i)); - else if ('rotater' === this.movingResizer) { - var d = this.getPadding(), - u = this._getNodeRect(); - (e = a.x() - u.width / 2), (i = -a.y() + u.height / 2); - var g = Math.atan2(-i, e) + Math.PI / 2; - u.height < 0 && (g -= Math.PI); - for ( - var f = G.getAngle(this.rotation()), - v = G.Util._radToDeg(f) + G.Util._radToDeg(g), - p = G.getAngle(this.getNode().rotation()), - m = G.Util._degToRad(v), - _ = this.rotationSnaps(), - y = 0; - y < _.length; - y++ - ) { - var K = G.getAngle(_[y]); - Math.abs(K - G.Util._degToRad(v)) % (2 * Math.PI) < 0.1 && - ((v = G.Util._radToDeg(K)), (m = G.Util._degToRad(v))); - } - var S = d, - b = d; - this._fitNodeInto( - { - rotation: G.angleDeg ? v : G.Util._degToRad(v), - x: - u.x + - (u.width / 2 + d) * (Math.cos(p) - Math.cos(m)) + - (u.height / 2 + d) * (Math.sin(-p) - Math.sin(-m)) - - (S * Math.cos(f) + b * Math.sin(-f)), - y: - u.y + - (u.height / 2 + d) * (Math.cos(p) - Math.cos(m)) + - (u.width / 2 + d) * (Math.sin(p) - Math.sin(m)) - - (b * Math.cos(f) + S * Math.sin(f)), - width: u.width + 2 * d, - height: u.height + 2 * d, - }, - t, - ); - } else console.error(new Error('Wrong position argument of selection resizer: ', this.movingResizer)); - if ('rotater' !== this.movingResizer) { - var x = this.findOne('.top-left').getAbsolutePosition(this.getParent()); - if (this.getCenteredScaling() || t.altKey) { - var C = this.findOne('.top-left'), - w = this.findOne('.bottom-right'), - F = C.x(), - T = C.y(), - P = this.getWidth() - w.x(), - A = this.getHeight() - w.y(); - console.log(F, T, P, A), - w.move({ x: -F, y: -T }), - C.move({ x: P, y: A }), - (x = C.getAbsolutePosition(this.getParent())); - } - (e = x.x), (i = x.y); - var M = this.findOne('.bottom-right').x() - this.findOne('.top-left').x(), - k = this.findOne('.bottom-right').y() - this.findOne('.top-left').y(); - this._fitNodeInto({ x: e + this.offsetX(), y: i + this.offsetY(), width: M, height: k }, t); - } - }, - _handleMouseUp: function (t) { - this._removeEvents(t); - }, - _removeEvents: function (t) { - if (this._transforming) { - (this._transforming = !1), - window.removeEventListener('mousemove', this._handleMouseMove), - window.removeEventListener('touchmove', this._handleMouseMove), - window.removeEventListener('mouseup', this._handleMouseUp, !0), - window.removeEventListener('touchend', this._handleMouseUp, !0), - this._fire('transformend', { evt: t }); - var e = this.getNode(); - e && e.fire('transformend', { evt: t }); - } - }, - _fitNodeInto: function (t, e) { - var i = this.getBoundBoxFunc(); - if (i) { - var n = this._getNodeRect(); - t = i.call(this, n, t); - } - this._settings = !0; - var a = this.getNode(); - void 0 !== t.rotation && this.getNode().rotation(t.rotation); - var r = a.getClientRect({ skipTransform: !0 }), - o = this.getPadding(), - s = (t.width - 2 * o) / r.width, - h = (t.height - 2 * o) / r.height, - l = G.getAngle(a.getRotation()), - c = r.x * s - o - a.offsetX() * s, - d = r.y * h - o - a.offsetY() * h; - this.getNode().setAttrs({ - scaleX: s, - scaleY: h, - x: t.x - (c * Math.cos(l) + d * Math.sin(-l)), - y: t.y - (d * Math.cos(l) + c * Math.sin(l)), - }), - (this._settings = !1), - this._fire('transform', { evt: e }), - this.getNode()._fire('transform', { evt: e }), - this.update(), - this.getLayer().batchDraw(); - }, - forceUpdate: function () { - this._resetTransformCache(), this.update(); - }, - update: function () { - var t = this._getNodeRect(), - e = this.getNode(), - i = { x: 1, y: 1 }; - e && e.getParent() && (i = e.getParent().getAbsoluteScale()); - var n = { x: 1 / i.x, y: 1 / i.y }, - a = t.width, - r = t.height, - o = this.enabledAnchors(), - s = this.resizeEnabled(), - h = this.getPadding(), - l = this.getAnchorSize(); - this.find('._anchor').setAttrs({ - width: l, - height: l, - offsetX: l / 2, - offsetY: l / 2, - stroke: this.getAnchorStroke(), - strokeWidth: this.getAnchorStrokeWidth(), - fill: this.getAnchorFill(), - }), - this.findOne('.top-left').setAttrs({ x: -h, y: -h, scale: n, visible: s && 0 <= o.indexOf('top-left') }), - this.findOne('.top-center').setAttrs({ - x: a / 2, - y: -h, - scale: n, - visible: s && 0 <= o.indexOf('top-center'), - }), - this.findOne('.top-right').setAttrs({ x: a + h, y: -h, scale: n, visible: s && 0 <= o.indexOf('top-right') }), - this.findOne('.middle-left').setAttrs({ - x: -h, - y: r / 2, - scale: n, - visible: s && 0 <= o.indexOf('middle-left'), - }), - this.findOne('.middle-right').setAttrs({ - x: a + h, - y: r / 2, - scale: n, - visible: s && 0 <= o.indexOf('middle-right'), - }), - this.findOne('.bottom-left').setAttrs({ - x: -h, - y: r + h, - scale: n, - visible: s && 0 <= o.indexOf('bottom-left'), - }), - this.findOne('.bottom-center').setAttrs({ - x: a / 2, - y: r + h, - scale: n, - visible: s && 0 <= o.indexOf('bottom-center'), - }), - this.findOne('.bottom-right').setAttrs({ - x: a + h, - y: r + h, - scale: n, - visible: s && 0 <= o.indexOf('bottom-right'), - }); - var c = -this.rotateAnchorOffset() * Math.abs(n.y); - this.findOne('.rotater').setAttrs({ - x: a / 2, - y: c * G.Util._sign(r), - scale: n, - visible: this.rotateEnabled(), - }), - this.findOne('.back').setAttrs({ - width: a * i.x, - height: r * i.y, - scale: n, - visible: this.borderEnabled(), - stroke: this.getBorderStroke(), - strokeWidth: this.getBorderStrokeWidth(), - dash: this.getBorderDash(), - }); - }, - isTransforming: function () { - return this._transforming; - }, - stopTransform: function () { - if (this._transforming) { - this._removeEvents(); - var t = this.findOne('.' + this.movingResizer); - t && t.stopDrag(); - } - }, - destroy: function () { - this.getStage() && this._cursorChange && (this.getStage().content.style.cursor = ''), - G.Group.prototype.destroy.call(this), - this.detach(), - this._removeEvents(); - }, - toObject: function () { - return G.Node.prototype.toObject.call(this); - }, - }), - G.Util.extend(G.Transformer, G.Group), - G.Factory.addGetterSetter(G.Transformer, 'enabledAnchors', a, function (t) { - return ( - t instanceof Array || G.Util.warn('enabledAnchors value should be an array'), - t instanceof Array && - t.forEach(function (t) { - -1 === a.indexOf(t) && - G.Util.warn('Unknown anchor name: ' + t + '. Available names are: ' + a.join(', ')); - }), - t || [] - ); - }), - G.Factory.addGetterSetter(G.Transformer, 'resizeEnabled', !0), - G.Factory.addGetterSetter(G.Transformer, 'anchorSize', 10, G.Validators.getNumberValidator()), - G.Factory.addGetterSetter(G.Transformer, 'rotateEnabled', !0), - G.Factory.addGetterSetter(G.Transformer, 'rotationSnaps', []), - G.Factory.addGetterSetter(G.Transformer, 'rotateAnchorOffset', 50, G.Validators.getNumberValidator()), - G.Factory.addGetterSetter(G.Transformer, 'borderEnabled', !0), - G.Factory.addGetterSetter(G.Transformer, 'anchorStroke', 'rgb(0, 161, 255)'), - G.Factory.addGetterSetter(G.Transformer, 'anchorStrokeWidth', 1, G.Validators.getNumberValidator()), - G.Factory.addGetterSetter(G.Transformer, 'anchorFill', 'white'), - G.Factory.addGetterSetter(G.Transformer, 'borderStroke', 'rgb(0, 161, 255)'), - G.Factory.addGetterSetter(G.Transformer, 'borderStrokeWidth', 1, G.Validators.getNumberValidator()), - G.Factory.addGetterSetter(G.Transformer, 'borderDash'), - G.Factory.addGetterSetter(G.Transformer, 'keepRatio', !0), - G.Factory.addGetterSetter(G.Transformer, 'centeredScaling', !1), - G.Factory.addGetterSetter(G.Transformer, 'padding', 0, G.Validators.getNumberValidator()), - G.Factory.addOverloadedGetterSetter(G.Transformer, 'node'), - G.Factory.addGetterSetter(G.Transformer, 'boundBoxFunc'), - G.Factory.backCompat(G.Transformer, { - lineEnabled: 'borderEnabled', - rotateHandlerOffset: 'rotateAnchorOffset', - enabledHandlers: 'enabledAnchors', - }), - G.Collection.mapMethods(G.Transformer); - })(Konva); diff --git a/src/pages/Page/canvas/ConstellationDiagram/planispherewidget.js b/src/pages/Page/canvas/ConstellationDiagram/planispherewidget.js deleted file mode 100644 index e0e9394..0000000 --- a/src/pages/Page/canvas/ConstellationDiagram/planispherewidget.js +++ /dev/null @@ -1,441 +0,0 @@ -// @ts-nocheck -export class PlanisphereWidget { - constructor(id, options) { - console.log('PlanisphereWidget ' + id); - - this.options = options; - this.container = document.getElementById(id); - this.bg_color = options && options.bg_color ? options.bg_color : '#27293D'; - this.fore_color = options && options.bg_color ? options.bg_color : '#CCCCCC'; - this.coor_color = options && options.coor_color ? options.coor_color : '#1B1B24'; - this.border_color = options && options.border_color ? options.border_color : '#CCCCCC'; - this.wave_color = options && options.wave_color ? options.wave_color : '#1D8CF8'; - - this.margin_left = options && options.margin_left ? options.margin_left : 0; - this.margin_top = options && options.margin_top ? options.margin_top : 0; - - this.stage = new Konva.Stage({ - container: id, - width: this.container.clientWidth || 500, - height: this.container.clientHeight || 500, - }); - this.layer_coor = new Konva.Layer(); - this.layer_coor.hitGraphEnabled(false); - this.layer_wave = new Konva.Layer(); - this.layer_wave.hitGraphEnabled(false); - - this.stage.add(this.layer_coor); - this.stage.add(this.layer_wave); - - this.canvas = document.createElement('canvas'); - this.ctx_canvas = this.canvas.getContext('2d'); - this.ctx_canvas.fillStyle = this.bg_color; - - this.init(); - // this.initResize(); - - this.dAlpha = false; - this.d1 = null; - this.d2 = null; - this.d3 = null; - this.d4 = null; - } - - init() { - if (this.container.clientHeight === 0) return; - this.stage.setWidth(this.container.clientWidth); - this.stage.setHeight(this.container.clientWidth); - this.area_x = this.margin_left; - this.area_y = this.margin_top; - this.area_width = this.stage.getWidth() - this.margin_left; - this.area_height = this.stage.getHeight() - this.margin_top; - - this.drawCoor(); - - this.canvas.height = this.area_height; - this.canvas.width = this.area_width; - this.ctx_canvas.strokeStyle = this.wave_color; - this.ctx_canvas.lineWidth = 1; - - this.pointer = new Konva.Circle({ - x: 0, - y: 0, - radius: 1, - stroke: this.wave_color, - strokeWidth: 1, - }); - this.pointer.cache(); - } - - drawCoor() { - var layer = this.layer_coor; - layer.destroyChildren(); - - var len = this.area_width; - var rval = this.area_width / 2; - layer.add( - new Konva.Rect({ - x: this.area_x, - y: this.area_y, - width: this.area_width, - height: this.area_height, - stroke: this.border_color, - strokeWidth: 1, - }), - ); - - layer.add( - new Konva.Line({ - points: [0, 0, this.area_width, this.area_height], - stroke: this.border_color, - strokeWidth: 1, - lineJoin: 'round', - dash: [1, 1], - }), - ); - layer.add( - new Konva.Line({ - points: [this.area_width, 0, 0, this.area_height], - stroke: this.border_color, - strokeWidth: 1, - lineJoin: 'round', - dash: [1, 1], - }), - ); - - layer.add( - new Konva.Line({ - points: [0, rval, this.area_width, rval], - stroke: this.border_color, - strokeWidth: 1, - lineJoin: 'round', - dash: [1, 1], - }), - ); - layer.add( - new Konva.Line({ - points: [0, rval / 2, this.area_width, rval / 2], - stroke: this.border_color, - strokeWidth: 1, - lineJoin: 'round', - dash: [1, 1], - }), - ); - layer.add( - new Konva.Line({ - points: [0, (rval / 2) * 3, this.area_width, (rval / 2) * 3], - stroke: this.border_color, - strokeWidth: 1, - lineJoin: 'round', - dash: [1, 1], - }), - ); - - /// - layer.add( - new Konva.Line({ - points: [rval, 0, rval, len], - stroke: this.border_color, - strokeWidth: 1, - lineJoin: 'round', - dash: [1, 1], - }), - ); - layer.add( - new Konva.Line({ - points: [rval / 2, 0, rval / 2, len], - stroke: this.border_color, - strokeWidth: 1, - lineJoin: 'round', - dash: [1, 1], - }), - ); - layer.add( - new Konva.Line({ - points: [(rval / 2) * 3, 0, (rval / 2) * 3, len], - stroke: this.border_color, - strokeWidth: 1, - lineJoin: 'round', - dash: [1, 1], - }), - ); - layer.add( - new Konva.Circle({ - x: rval, - y: rval, - radius: rval, - stroke: this.border_color, - strokeWidth: 1, - }), - ); - layer.add( - new Konva.Circle({ - x: rval, - y: rval, - radius: rval / 2, - stroke: this.border_color, - strokeWidth: 1, - }), - ); - layer.batchDraw(); - } - - setViewMode(vm) { - if (vm == 3) { - //0=星座图,3=余晖图。2021.03.31李伟添加; - this.dAlpha = true; - vm = 0; - } else { - this.dAlpha = false; - } - this.viewmodel = vm; - - this.clear(); - } - //星座图 - feed(d, di, dq) { - if (!this.viewmodel || this.viewmodel == 0) { - this.drawWave_vector(d); - // this.drawWave_planis(d); - return; - } - } - //矢量图 - feedVector(d) { - if (!this.viewmodel || this.viewmodel == 0) { - this.drawWave_vector(d); - return; - } - } - //眼图 - feedIQ(di, dq) { - if (this.viewmodel == 1 && di != null) { - this.drawIQ(di); - } else if (this.viewmodel == 2 && dq != null) { - this.drawIQ(dq); - } - } - drawIQ(IQBuff) { - this.clear(); - for (var j = 0; j < IQBuff.length; j++) { - this.drawWave_eye(IQBuff[j]); - } - } - clear() { - this.imgData = null; - this.drawWave_planis([]); - this.drawWave_vector([]); - } - - drawWave_eye(d) { - // console.log("in drawWave_eye" + d.length); - var layer = this.layer_wave; - - var width = this.area_width; - var height = this.area_height; - var rwidth = width / 2; - var rHeight = height / 2; - - var ctx_canvas = layer.getContext(); - ctx_canvas.strokeStyle = this.wave_color; - ctx_canvas.lineWidth = 1; - ctx_canvas.beginPath(); - - for (var n = 0; n < d.length; n++) { - //var x = Math.floor(width*(1-1/1.4)/2+ n * width / d.length / 1.4); - var x = Math.floor((n * width) / d.length); - var y = Math.floor(rHeight + (d[n] * rHeight) / 1.4); - - if (n == 0) { - ctx_canvas.moveTo(x, y); - } else { - ctx_canvas.lineTo(x, y); - } - } - ctx_canvas.stroke(); - } - - drawWave_planis(d) { - //console.log("in plan" + d.length); - var layer = this.layer_wave; - - var width = this.getDrawWHByPixelRatio(this.area_width); - var height = this.getDrawWHByPixelRatio(this.area_height); - var rwidth = width / 2; - var rHeight = height / 2; - - //不显示的时候不报错 - if (!width || !height || width == 0 || height == 0) { - return; - } - - var context = layer.getContext(); - context.clearRect(0, 0, width, height); - - var imgData = context.createImageData(width, height); - var dlen = imgData.data.length; - //2021.03.31 李伟增加余晖效果 - if (this.dAlpha && d) { - this.drawWave_plainsD(rwidth, rHeight, width, imgData, dlen, this.d4, 32); - this.drawWave_plainsD(rwidth, rHeight, width, imgData, dlen, this.d3, 32); - this.drawWave_plainsD(rwidth, rHeight, width, imgData, dlen, this.d2, 64); - this.drawWave_plainsD(rwidth, rHeight, width, imgData, dlen, this.d1, 128); - this.d4 = this.d3; - this.d3 = this.d2; - this.d2 = this.d1; - this.d1 = d; - } - this.drawWave_plainsD(rwidth, rHeight, width, imgData, dlen, d, 255); - /* - for (var n = 0; n < d.length; n++) { - - //console.log(rwidth+d[n][0] * rwidth); - - var x = Math.floor(rwidth + d[n][0] * rwidth/1.4); - var y = Math.floor(rHeight+ d[n][1] * rHeight/1.4); - - var p = ( y * width + x )* 4; - - this.setWaveColor(imgData, p, dlen,width*4); - } - */ - context.putImageData(imgData, 0, 0); - } - drawWave_plainsD(rwidth, rHeight, width, imgData, dlen, d, a) { - if (!d) return; - for (var n = 0; n < d.length; n++) { - //console.log(rwidth+d[n][0] * rwidth); - - var x = Math.floor(rwidth + (d[n][0] * rwidth) / 1.4); - var y = Math.floor(rHeight + (d[n][1] * rHeight) / 1.4); - - var p = (y * width + x) * 4; - - this.setWaveColor(imgData, p, dlen, width * 4, a); - } - } - drawWave_vector(d) { - var maxLine = 100; - - var dlen = Math.min(maxLine, d.length); - - var layer = this.layer_wave; - - var width = this.area_width; - var height = this.area_height; - var rwidth = width / 2; - var rHeight = height / 2; - - //不显示的时候不报错 - if (!width || !height || width == 0 || height == 0) { - return; - } - - var context = layer.getContext(); - context.clearRect(0, 0, width, height); - - var ctx_canvas = layer.getContext(); - ctx_canvas.strokeStyle = this.wave_color; - ctx_canvas.lineWidth = 1; - ctx_canvas.beginPath(); - - for (var n = 0; n < dlen; n++) { - var x = Math.floor(rwidth + (d[n][0] * rwidth) / 1.2); - var y = Math.floor(rHeight + (d[n][1] * rHeight) / 1.2); - if (n == 0) { - ctx_canvas.moveTo(x, y); - } else { - ctx_canvas.lineTo(x, y); - } - } - ctx_canvas.stroke(); - } - - /*像素单位转css单位,该函数返回当前浏览器缩放比例所影响的 x y width height 的绘图位置 - 仅适用putImageData getImageData等函数*/ - getDrawWHByPixelRatio(xory) { - if (xory == 0) return 0; - if (!xory) return xory; - var ret = Math.ceil(window.devicePixelRatio * xory); - //console.log(`xory=${xory} ratio=${window.devicePixelRatio} ret=${ret}`); - return ret; - } - setWaveColor_thin(imgData, p, dlen, rowlen) { - var dp = p + rowlen; - if (p < 0) return; - if (dp + 11 >= dlen) return; - - imgData.data[p] = 33; - imgData.data[p + 1] = 129; - imgData.data[p + 2] = 247; - imgData.data[p + 3] = 255; - } - setWaveColor(imgData, p, dlen, rowlen, a = 255) { - //2021.03.31 李伟增加余晖效果 a=alpha - var dp = p + rowlen; - if (p < 0) return; - if (dp + 11 >= dlen) return; - - var r = 33; - var g = 129; - var b = 247; - if (a != 255) { - r = 0; - g = 255; - b = 0; - } - //console.log(a); - imgData.data[p] = r; - imgData.data[p + 1] = g; - imgData.data[p + 2] = b; - imgData.data[p + 3] = a; //255;//2021.03.31 李伟增加余晖效果 - - imgData.data[p + 4] = r; - imgData.data[p + 5] = g; - imgData.data[p + 6] = b; - imgData.data[p + 7] = a; //255; - - imgData.data[p + 8] = r; - imgData.data[p + 9] = g; - imgData.data[p + 10] = b; - imgData.data[p + 11] = a; //255; - - imgData.data[dp] = r; - imgData.data[dp + 1] = g; - imgData.data[dp + 2] = b; - imgData.data[dp + 3] = a; //255; - - imgData.data[dp + 4] = r; - imgData.data[dp + 5] = g; - imgData.data[dp + 6] = b; - imgData.data[dp + 7] = a; //255; - - imgData.data[dp + 8] = r; - imgData.data[dp + 9] = g; - imgData.data[dp + 10] = b; - imgData.data[dp + 11] = a; //255; - } - - destroy() { - this.imgData = null; - this.stage.destroy(); - this.color_map = null; - } - dispose() { - console.log('dispose wfmin'); - this.destroy(); - } - // initResize() { - // var _self = this; - // $(this.container).resize(function () { - // var target = this; - // if (target.resizeFlag) { - // clearTimeout(target.resizeFlag); - // } - // target.resizeFlag = setTimeout(function () { - // _self.init(); - // target.resizeFlag = null; - // }, 100); - // }); - // } -} diff --git a/src/pages/Page/canvas/Spectrogram/index.page.vue b/src/pages/Page/canvas/Spectrogram/index.page.vue deleted file mode 100644 index fa1bba0..0000000 --- a/src/pages/Page/canvas/Spectrogram/index.page.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/src/pages/Page/canvas/html-page/colormapwidget.js b/src/pages/Page/canvas/html-page/colormapwidget.js deleted file mode 100644 index 69b0202..0000000 --- a/src/pages/Page/canvas/html-page/colormapwidget.js +++ /dev/null @@ -1,153 +0,0 @@ -// @ts-nocheck -colormapwidget.names = ['default', 'blue', 'gray', 'cooledit']; - -colormapwidget.prototype.getGradientColors = function (name) { - if (name == 'blue') { - return ['#050525', '#000CFF', '#33FFFF', '#F9FFFF']; - } else if (name == 'gray') { - return ['#050525', '#FBFBFB']; - } else if (name == 'cooledit') { - return ['#010E19', '#720271', '#D7032C', '#FDBC5F', '#F8FFED']; - } else { - return ['#050525', '#0000CF', '#00FF20', '#EFFF00', '#FF007C']; - } -}; -// 将hex表示方式转换为rgb表示方式(这里返回rgb数组模式) -colormapwidget.prototype.colorRgb = function (sColor) { - var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; - var sColor = sColor.toLowerCase(); - if (sColor && reg.test(sColor)) { - if (sColor.length === 4) { - var sColorNew = '#'; - for (var i = 1; i < 4; i += 1) { - sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); - } - sColor = sColorNew; - } - //处理六位的颜色值 - var sColorChange = []; - for (var i = 1; i < 7; i += 2) { - sColorChange.push(parseInt('0x' + sColor.slice(i, i + 2))); - } - return sColorChange; - } else { - return sColor; - } -}; - -// 将rgb表示方式转换为hex表示方式 -colormapwidget.prototype.colorHex = function (rgb) { - var reg = /(\d{1,3}),(\d{1,3}),(\d{1,3})/; - var arr = reg.exec(rgb); - - function hex(x) { - return ('0' + parseInt(x).toString(16)).slice(-2); - } - var _hex = '#' + hex(arr[1]) + hex(arr[2]) + hex(arr[3]); - return _hex.toUpperCase(); -}; - -//计算两个颜色的step个阶梯色 -colormapwidget.prototype.gradientColor = function (startColor, endColor, step) { - var startRGB = this.colorRgb(startColor); //转换为rgb数组模式 - var startR = startRGB[0]; - var startG = startRGB[1]; - var startB = startRGB[2]; - - var endRGB = this.colorRgb(endColor); - var endR = endRGB[0]; - var endG = endRGB[1]; - var endB = endRGB[2]; - - var sR = (endR - startR) / step; //总差值 - var sG = (endG - startG) / step; - var sB = (endB - startB) / step; - - var colorArr = []; - for (var i = 0; i < step; i++) { - //计算每一步的hex值 - //var hex = this.colorHex('rgb('+parseInt((sR*i+startR))+','+parseInt((sG*i+startG))+','+parseInt((sB*i+startB))+')'); - //colorArr.push(hex); - colorArr.push([parseInt(sR * i + startR), parseInt(sG * i + startG), parseInt(sB * i + startB)]); - } - return colorArr; -}; - -colormapwidget.prototype.setDbRange = function (count) { - this.count = count; - this.mapCount = count; - this.calColors(); -}; - -colormapwidget.prototype.getColors = function () { - if ( - this.name === this.buff_name && - this.gravity === this.buff_gravity && - this.gravity_value === this.buff_gravity_value && - this.count === this.buff_count - ) - return this.buff_colors; - - return this.calColors(); -}; -colormapwidget.prototype.getMapColors = function () { - return this.buff_mapCountcolors; -}; - -colormapwidget.prototype.calColors = function () { - this.buff_name = this.name; - this.buff_gravity = this.gravity; - this.buff_gravity_value = this.gravity_value; - this.buff_count = this.count; - - this.buff_colors = this._calColorsByCount(this.count); - this.buff_mapCountcolors = this._calColorsByCount(this.mapCount); - - return this.buff_colors; -}; - -colormapwidget.prototype._calColorsByCount = function (count) { - //console.log("_calColorsByCount " + count) - var colors = this.getGradientColors(this.name); - var arr = []; - var stepSpan = colors.length - 1; - if (!this.gravity) { - var step = Math.ceil(count / stepSpan); - for (var i = 0; i < stepSpan; i++) { - var carr = this.gradientColor(colors[i], colors[i + 1], step); - arr = arr.concat(carr); - } - } else { - var pStart = this.gravity_value - 0.2; - pStart = pStart < 0 ? 0 : pStart; - var pEnd = this.gravity_value + 0.2; - pEnd = pEnd > 1 ? 1 : pEnd; - pStart = count * pStart; - pEnd = count * pEnd; - - for (var i = 0; i < pStart; i++) { - arr.push(this.colorRgb(colors[0])); - } - - var step = Math.ceil((pEnd - pStart + 1) / stepSpan); - for (var i = 0; i < stepSpan; i++) { - var carr = this.gradientColor(colors[i], colors[i + 1], step); - arr = arr.concat(carr); - } - - for (var i = pEnd; i < count; i++) { - arr.push(this.colorRgb(colors[colors.length - 1])); - } - } - return arr; -}; - -function colormapwidget(option) { - this.name = option && option.name ? option.name : 'default'; - this.gravity = option && option.gravity ? option.gravity : false; - this.gravity_value = option && option.gravity_value ? option.gravity_value : 0.5; - this.count = option && option.count ? option.count : 200; - this.mapCount = option && option.mapCount ? option.mapCount : 200; - - this.getColors(); -} diff --git a/src/pages/Page/canvas/html-page/html-page.md b/src/pages/Page/canvas/html-page/html-page.md deleted file mode 100644 index d7a6cb5..0000000 --- a/src/pages/Page/canvas/html-page/html-page.md +++ /dev/null @@ -1,3 +0,0 @@ -```bash -bunx http-server --port 8000 -``` \ No newline at end of file diff --git a/src/pages/Page/canvas/html-page/konva.2.4.2.min.js b/src/pages/Page/canvas/html-page/konva.2.4.2.min.js deleted file mode 100644 index 59bf059..0000000 --- a/src/pages/Page/canvas/html-page/konva.2.4.2.min.js +++ /dev/null @@ -1,7380 +0,0 @@ -// @ts-nocheck -/* - * Konva JavaScript Framework v2.4.2 - * http://konvajs.github.io/ - * Licensed under the MIT - * Date: Fri Oct 12 2018 - * - * Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS) - * Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva) - * - * @license - */ -!(function () { - 'use strict'; - var e = Math.PI / 180, - r = { - version: '2.4.2', - stages: [], - idCounter: 0, - ids: {}, - names: {}, - shapes: {}, - listenClickTap: !1, - inDblClickWindow: !1, - isBrowser: - 'undefined' != typeof window && - ('[object Window]' === {}.toString.call(window) || '[object global]' === {}.toString.call(window)), - isUnminified: /comment/.test(function () {}), - enableTrace: !1, - traceArrMax: 100, - dblClickWindow: 400, - pixelRatio: void 0, - dragDistance: 3, - angleDeg: !0, - showWarnings: !0, - Filters: {}, - isDragging: function () { - var t = r.DD; - return !!t && t.isDragging; - }, - isDragReady: function () { - var t = r.DD; - return !!t && !!t.node; - }, - _addId: function (t, e) { - e && (this.ids[e] = t); - }, - _removeId: function (t) { - void 0 !== t && delete this.ids[t]; - }, - _addName: function (t, e) { - e && (this.names[e] || (this.names[e] = []), this.names[e].push(t)); - }, - _removeName: function (t, e) { - if (t) { - var i = this.names[t]; - if (i) { - for (var n = 0; n < i.length; n++) { - i[n]._id === e && i.splice(n, 1); - } - 0 === i.length && delete this.names[t]; - } - } - }, - getAngle: function (t) { - return this.angleDeg ? t * e : t; - }, - _detectIE: function (t) { - var e = t.indexOf('msie '); - if (0 < e) return parseInt(t.substring(e + 5, t.indexOf('.', e)), 10); - if (0 < t.indexOf('trident/')) { - var i = t.indexOf('rv:'); - return parseInt(t.substring(i + 3, t.indexOf('.', i)), 10); - } - var n = t.indexOf('edge/'); - return 0 < n && parseInt(t.substring(n + 5, t.indexOf('.', n)), 10); - }, - _parseUA: function (t) { - var e = t.toLowerCase(), - i = - /(chrome)[ /]([\w.]+)/.exec(e) || - /(webkit)[ /]([\w.]+)/.exec(e) || - /(opera)(?:.*version|)[ /]([\w.]+)/.exec(e) || - /(msie) ([\w.]+)/.exec(e) || - (e.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)) || - [], - n = !!t.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i), - a = !!t.match(/IEMobile/i); - return { browser: i[1] || '', version: i[2] || '0', isIE: r._detectIE(e), mobile: n, ieMobile: a }; - }, - UA: void 0, - }, - t = - 'undefined' != typeof global - ? global - : 'undefined' != typeof window - ? window - : 'undefined' != typeof WorkerGlobalScope - ? self - : {}; - (r.UA = r._parseUA((t.navigator && t.navigator.userAgent) || '')), - t.Konva && console.error('Konva instance is already exist in current eviroment. Please use only one instance.'), - ((t.Konva = r).global = t), - (r.window = t), - (r.document = t.document), - 'object' == typeof exports - ? (module.exports = r) - : 'function' == typeof define && - define.amd && - define(function () { - return r; - }); -})(), - (function () { - 'use strict'; - (Konva.Collection = function () { - var t = [].slice.call(arguments), - e = t.length, - i = 0; - for (this.length = e; i < e; i++) this[i] = t[i]; - return this; - }), - (Konva.Collection.prototype = []), - (Konva.Collection.prototype.each = function (t) { - for (var e = 0; e < this.length; e++) t(this[e], e); - }), - (Konva.Collection.prototype.toArray = function () { - var t, - e = [], - i = this.length; - for (t = 0; t < i; t++) e.push(this[t]); - return e; - }), - (Konva.Collection.toCollection = function (t) { - var e, - i = new Konva.Collection(), - n = t.length; - for (e = 0; e < n; e++) i.push(t[e]); - return i; - }), - (Konva.Collection._mapMethod = function (n) { - Konva.Collection.prototype[n] = function () { - var t, - e = this.length, - i = [].slice.call(arguments); - for (t = 0; t < e; t++) this[t][n].apply(this[t], i); - return this; - }; - }), - (Konva.Collection.mapMethods = function (t) { - var e = t.prototype; - for (var i in e) Konva.Collection._mapMethod(i); - }), - (Konva.Transform = function (t) { - this.m = (t && t.slice()) || [1, 0, 0, 1, 0, 0]; - }), - (Konva.Transform.prototype = { - copy: function () { - return new Konva.Transform(this.m); - }, - point: function (t) { - var e = this.m; - return { x: e[0] * t.x + e[2] * t.y + e[4], y: e[1] * t.x + e[3] * t.y + e[5] }; - }, - translate: function (t, e) { - return (this.m[4] += this.m[0] * t + this.m[2] * e), (this.m[5] += this.m[1] * t + this.m[3] * e), this; - }, - scale: function (t, e) { - return (this.m[0] *= t), (this.m[1] *= t), (this.m[2] *= e), (this.m[3] *= e), this; - }, - rotate: function (t) { - var e = Math.cos(t), - i = Math.sin(t), - n = this.m[0] * e + this.m[2] * i, - a = this.m[1] * e + this.m[3] * i, - r = this.m[0] * -i + this.m[2] * e, - o = this.m[1] * -i + this.m[3] * e; - return (this.m[0] = n), (this.m[1] = a), (this.m[2] = r), (this.m[3] = o), this; - }, - getTranslation: function () { - return { x: this.m[4], y: this.m[5] }; - }, - skew: function (t, e) { - var i = this.m[0] + this.m[2] * e, - n = this.m[1] + this.m[3] * e, - a = this.m[2] + this.m[0] * t, - r = this.m[3] + this.m[1] * t; - return (this.m[0] = i), (this.m[1] = n), (this.m[2] = a), (this.m[3] = r), this; - }, - multiply: function (t) { - var e = this.m[0] * t.m[0] + this.m[2] * t.m[1], - i = this.m[1] * t.m[0] + this.m[3] * t.m[1], - n = this.m[0] * t.m[2] + this.m[2] * t.m[3], - a = this.m[1] * t.m[2] + this.m[3] * t.m[3], - r = this.m[0] * t.m[4] + this.m[2] * t.m[5] + this.m[4], - o = this.m[1] * t.m[4] + this.m[3] * t.m[5] + this.m[5]; - return ( - (this.m[0] = e), (this.m[1] = i), (this.m[2] = n), (this.m[3] = a), (this.m[4] = r), (this.m[5] = o), this - ); - }, - invert: function () { - var t = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]), - e = this.m[3] * t, - i = -this.m[1] * t, - n = -this.m[2] * t, - a = this.m[0] * t, - r = t * (this.m[2] * this.m[5] - this.m[3] * this.m[4]), - o = t * (this.m[1] * this.m[4] - this.m[0] * this.m[5]); - return ( - (this.m[0] = e), (this.m[1] = i), (this.m[2] = n), (this.m[3] = a), (this.m[4] = r), (this.m[5] = o), this - ); - }, - getMatrix: function () { - return this.m; - }, - setAbsolutePosition: function (t, e) { - var i = this.m[0], - n = this.m[1], - a = this.m[2], - r = this.m[3], - o = this.m[4], - s = (i * (e - this.m[5]) - n * (t - o)) / (i * r - n * a), - h = (t - o - a * s) / i; - return this.translate(h, s); - }, - }); - var e = Math.PI / 180, - i = 180 / Math.PI, - n = 'Konva error: ', - a = { - aliceblue: [240, 248, 255], - antiquewhite: [250, 235, 215], - aqua: [0, 255, 255], - aquamarine: [127, 255, 212], - azure: [240, 255, 255], - beige: [245, 245, 220], - bisque: [255, 228, 196], - black: [0, 0, 0], - blanchedalmond: [255, 235, 205], - blue: [0, 0, 255], - blueviolet: [138, 43, 226], - brown: [165, 42, 42], - burlywood: [222, 184, 135], - cadetblue: [95, 158, 160], - chartreuse: [127, 255, 0], - chocolate: [210, 105, 30], - coral: [255, 127, 80], - cornflowerblue: [100, 149, 237], - cornsilk: [255, 248, 220], - crimson: [220, 20, 60], - cyan: [0, 255, 255], - darkblue: [0, 0, 139], - darkcyan: [0, 139, 139], - darkgoldenrod: [184, 132, 11], - darkgray: [169, 169, 169], - darkgreen: [0, 100, 0], - darkgrey: [169, 169, 169], - darkkhaki: [189, 183, 107], - darkmagenta: [139, 0, 139], - darkolivegreen: [85, 107, 47], - darkorange: [255, 140, 0], - darkorchid: [153, 50, 204], - darkred: [139, 0, 0], - darksalmon: [233, 150, 122], - darkseagreen: [143, 188, 143], - darkslateblue: [72, 61, 139], - darkslategray: [47, 79, 79], - darkslategrey: [47, 79, 79], - darkturquoise: [0, 206, 209], - darkviolet: [148, 0, 211], - deeppink: [255, 20, 147], - deepskyblue: [0, 191, 255], - dimgray: [105, 105, 105], - dimgrey: [105, 105, 105], - dodgerblue: [30, 144, 255], - firebrick: [178, 34, 34], - floralwhite: [255, 255, 240], - forestgreen: [34, 139, 34], - fuchsia: [255, 0, 255], - gainsboro: [220, 220, 220], - ghostwhite: [248, 248, 255], - gold: [255, 215, 0], - goldenrod: [218, 165, 32], - gray: [128, 128, 128], - green: [0, 128, 0], - greenyellow: [173, 255, 47], - grey: [128, 128, 128], - honeydew: [240, 255, 240], - hotpink: [255, 105, 180], - indianred: [205, 92, 92], - indigo: [75, 0, 130], - ivory: [255, 255, 240], - khaki: [240, 230, 140], - lavender: [230, 230, 250], - lavenderblush: [255, 240, 245], - lawngreen: [124, 252, 0], - lemonchiffon: [255, 250, 205], - lightblue: [173, 216, 230], - lightcoral: [240, 128, 128], - lightcyan: [224, 255, 255], - lightgoldenrodyellow: [250, 250, 210], - lightgray: [211, 211, 211], - lightgreen: [144, 238, 144], - lightgrey: [211, 211, 211], - lightpink: [255, 182, 193], - lightsalmon: [255, 160, 122], - lightseagreen: [32, 178, 170], - lightskyblue: [135, 206, 250], - lightslategray: [119, 136, 153], - lightslategrey: [119, 136, 153], - lightsteelblue: [176, 196, 222], - lightyellow: [255, 255, 224], - lime: [0, 255, 0], - limegreen: [50, 205, 50], - linen: [250, 240, 230], - magenta: [255, 0, 255], - maroon: [128, 0, 0], - mediumaquamarine: [102, 205, 170], - mediumblue: [0, 0, 205], - mediumorchid: [186, 85, 211], - mediumpurple: [147, 112, 219], - mediumseagreen: [60, 179, 113], - mediumslateblue: [123, 104, 238], - mediumspringgreen: [0, 250, 154], - mediumturquoise: [72, 209, 204], - mediumvioletred: [199, 21, 133], - midnightblue: [25, 25, 112], - mintcream: [245, 255, 250], - mistyrose: [255, 228, 225], - moccasin: [255, 228, 181], - navajowhite: [255, 222, 173], - navy: [0, 0, 128], - oldlace: [253, 245, 230], - olive: [128, 128, 0], - olivedrab: [107, 142, 35], - orange: [255, 165, 0], - orangered: [255, 69, 0], - orchid: [218, 112, 214], - palegoldenrod: [238, 232, 170], - palegreen: [152, 251, 152], - paleturquoise: [175, 238, 238], - palevioletred: [219, 112, 147], - papayawhip: [255, 239, 213], - peachpuff: [255, 218, 185], - peru: [205, 133, 63], - pink: [255, 192, 203], - plum: [221, 160, 203], - powderblue: [176, 224, 230], - purple: [128, 0, 128], - rebeccapurple: [102, 51, 153], - red: [255, 0, 0], - rosybrown: [188, 143, 143], - royalblue: [65, 105, 225], - saddlebrown: [139, 69, 19], - salmon: [250, 128, 114], - sandybrown: [244, 164, 96], - seagreen: [46, 139, 87], - seashell: [255, 245, 238], - sienna: [160, 82, 45], - silver: [192, 192, 192], - skyblue: [135, 206, 235], - slateblue: [106, 90, 205], - slategray: [119, 128, 144], - slategrey: [119, 128, 144], - snow: [255, 255, 250], - springgreen: [0, 255, 127], - steelblue: [70, 130, 180], - tan: [210, 180, 140], - teal: [0, 128, 128], - thistle: [216, 191, 216], - transparent: [255, 255, 255, 0], - tomato: [255, 99, 71], - turquoise: [64, 224, 208], - violet: [238, 130, 238], - wheat: [245, 222, 179], - white: [255, 255, 255], - whitesmoke: [245, 245, 245], - yellow: [255, 255, 0], - yellowgreen: [154, 205, 5], - }, - r = /rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/; - Konva.Util = { - _isElement: function (t) { - return !(!t || 1 != t.nodeType); - }, - _isFunction: function (t) { - return !!(t && t.constructor && t.call && t.apply); - }, - _isObject: function (t) { - return !!t && t.constructor === Object; - }, - _isArray: function (t) { - return '[object Array]' === Object.prototype.toString.call(t); - }, - _isNumber: function (t) { - return '[object Number]' === Object.prototype.toString.call(t) && !isNaN(t) && isFinite(t); - }, - _isString: function (t) { - return '[object String]' === Object.prototype.toString.call(t); - }, - _isBoolean: function (t) { - return '[object Boolean]' === Object.prototype.toString.call(t); - }, - isObject: function (t) { - return t instanceof Object; - }, - isValidSelector: function (t) { - if ('string' != typeof t) return !1; - var e = t[0]; - return '#' === e || '.' === e || e === e.toUpperCase(); - }, - _sign: function (t) { - return 0 === t ? 0 : 0 < t ? 1 : -1; - }, - createCanvasElement: function () { - var t = Konva.isBrowser ? Konva.document.createElement('canvas') : new Konva._nodeCanvas(); - try { - t.style = t.style || {}; - } catch (t) {} - return t; - }, - _isInDocument: function (t) { - for (; (t = t.parentNode); ) if (t == Konva.document) return !0; - return !1; - }, - _simplifyArray: function (t) { - var e, - i, - n = [], - a = t.length, - r = Konva.Util; - for (e = 0; e < a; e++) - (i = t[e]), - r._isNumber(i) ? (i = Math.round(1e3 * i) / 1e3) : r._isString(i) || (i = i.toString()), - n.push(i); - return n; - }, - _getImage: function (t, e) { - var i, n; - if (t) - if (this._isElement(t)) e(t); - else if (this._isString(t)) - ((i = new Konva.window.Image()).onload = function () { - e(i); - }), - (i.src = t); - else if (t.data) { - ((n = Konva.Util.createCanvasElement()).width = t.width), - (n.height = t.height), - n.getContext('2d').putImageData(t, 0, 0), - this._getImage(n.toDataURL(), e); - } else e(null); - else e(null); - }, - _getRGBAString: function (t) { - return ['rgba(', t.red || 0, ',', t.green || 0, ',', t.blue || 0, ',', t.alpha || 1, ')'].join(''); - }, - _rgbToHex: function (t, e, i) { - return ((1 << 24) + (t << 16) + (e << 8) + i).toString(16).slice(1); - }, - _hexToRgb: function (t) { - t = t.replace('#', ''); - var e = parseInt(t, 16); - return { r: (e >> 16) & 255, g: (e >> 8) & 255, b: 255 & e }; - }, - getRandomColor: function () { - for (var t = ((16777215 * Math.random()) << 0).toString(16); t.length < 6; ) t = '0' + t; - return '#' + t; - }, - get: function (t, e) { - return void 0 === t ? e : t; - }, - getRGB: function (t) { - var e; - return t in a - ? { r: (e = a[t])[0], g: e[1], b: e[2] } - : '#' === t[0] - ? this._hexToRgb(t.substring(1)) - : 'rgb(' === t.substr(0, 4) - ? ((e = r.exec(t.replace(/ /g, ''))), - { r: parseInt(e[1], 10), g: parseInt(e[2], 10), b: parseInt(e[3], 10) }) - : { r: 0, g: 0, b: 0 }; - }, - colorToRGBA: function (t) { - return ( - (t = t || 'black'), - Konva.Util._namedColorToRBA(t) || - Konva.Util._hex3ColorToRGBA(t) || - Konva.Util._hex6ColorToRGBA(t) || - Konva.Util._rgbColorToRGBA(t) || - Konva.Util._rgbaColorToRGBA(t) - ); - }, - _namedColorToRBA: function (t) { - var e = a[t.toLowerCase()]; - return e ? { r: e[0], g: e[1], b: e[2], a: 1 } : null; - }, - _rgbColorToRGBA: function (t) { - if (0 === t.indexOf('rgb(')) { - var e = (t = t.match(/rgb\(([^)]+)\)/)[1]).split(/ *, */).map(Number); - return { r: e[0], g: e[1], b: e[2], a: 1 }; - } - }, - _rgbaColorToRGBA: function (t) { - if (0 === t.indexOf('rgba(')) { - var e = (t = t.match(/rgba\(([^)]+)\)/)[1]).split(/ *, */).map(Number); - return { r: e[0], g: e[1], b: e[2], a: e[3] }; - } - }, - _hex6ColorToRGBA: function (t) { - if ('#' === t[0] && 7 === t.length) - return { - r: parseInt(t.slice(1, 3), 16), - g: parseInt(t.slice(3, 5), 16), - b: parseInt(t.slice(5, 7), 16), - a: 1, - }; - }, - _hex3ColorToRGBA: function (t) { - if ('#' === t[0] && 4 === t.length) - return { r: parseInt(t[1] + t[1], 16), g: parseInt(t[2] + t[2], 16), b: parseInt(t[3] + t[3], 16), a: 1 }; - }, - _merge: function (t, e) { - var i = this._clone(e); - for (var n in t) this._isObject(t[n]) ? (i[n] = this._merge(t[n], i[n])) : (i[n] = t[n]); - return i; - }, - haveIntersection: function (t, e) { - return !(e.x > t.x + t.width || e.x + e.width < t.x || e.y > t.y + t.height || e.y + e.height < t.y); - }, - cloneObject: function (t) { - var e = {}; - for (var i in t) - this._isObject(t[i]) - ? (e[i] = this.cloneObject(t[i])) - : this._isArray(t[i]) - ? (e[i] = this.cloneArray(t[i])) - : (e[i] = t[i]); - return e; - }, - cloneArray: function (t) { - return t.slice(0); - }, - _degToRad: function (t) { - return t * e; - }, - _radToDeg: function (t) { - return t * i; - }, - _capitalize: function (t) { - return t.charAt(0).toUpperCase() + t.slice(1); - }, - throw: function (t) { - throw new Error(n + t); - }, - error: function (t) { - console.error(n + t); - }, - warn: function (t) { - Konva.global.console && console.warn && Konva.showWarnings && console.warn('Konva warning: ' + t); - }, - extend: function (t, e) { - function i() { - this.constructor = t; - } - i.prototype = e.prototype; - var n = t.prototype; - for (var a in ((t.prototype = new i()), n)) n.hasOwnProperty(a) && (t.prototype[a] = n[a]); - (t.__super__ = e.prototype), (t.super = e); - }, - addMethods: function (t, e) { - var i; - for (i in e) t.prototype[i] = e[i]; - }, - _getControlPoints: function (t, e, i, n, a, r, o) { - var s = Math.sqrt(Math.pow(i - t, 2) + Math.pow(n - e, 2)), - h = Math.sqrt(Math.pow(a - i, 2) + Math.pow(r - n, 2)), - l = (o * s) / (s + h), - c = (o * h) / (s + h); - return [i - l * (a - t), n - l * (r - e), i + c * (a - t), n + c * (r - e)]; - }, - _expandPoints: function (t, e) { - var i, - n, - a = t.length, - r = []; - for (i = 2; i < a - 2; i += 2) - (n = Konva.Util._getControlPoints(t[i - 2], t[i - 1], t[i], t[i + 1], t[i + 2], t[i + 3], e)), - r.push(n[0]), - r.push(n[1]), - r.push(t[i]), - r.push(t[i + 1]), - r.push(n[2]), - r.push(n[3]); - return r; - }, - _removeLastLetter: function (t) { - return t.substring(0, t.length - 1); - }, - each: function (t, e) { - for (var i in t) e(i, t[i]); - }, - _inRange: function (t, e, i) { - return e <= t && t < i; - }, - _getProjectionToSegment: function (t, e, i, n, a, r) { - var o, - s, - h, - l = (t - i) * (t - i) + (e - n) * (e - n); - if (0 == l) (o = t), (s = e), (h = (a - i) * (a - i) + (r - n) * (r - n)); - else { - var c = ((a - t) * (i - t) + (r - e) * (n - e)) / l; - h = - c < 0 - ? ((o = t) - a) * (t - a) + ((s = e) - r) * (e - r) - : 1 < c - ? ((o = i) - a) * (i - a) + ((s = n) - r) * (n - r) - : ((o = t + c * (i - t)) - a) * (o - a) + ((s = e + c * (n - e)) - r) * (s - r); - } - return [o, s, h]; - }, - _getProjectionToLine: function (s, h, l) { - var c = Konva.Util.cloneObject(s), - d = Number.MAX_VALUE; - return ( - h.forEach(function (t, e) { - if (l || e !== h.length - 1) { - var i = h[(e + 1) % h.length], - n = Konva.Util._getProjectionToSegment(t.x, t.y, i.x, i.y, s.x, s.y), - a = n[0], - r = n[1], - o = n[2]; - o < d && ((c.x = a), (c.y = r), (d = o)); - } - }), - c - ); - }, - _prepareArrayForTween: function (t, e, i) { - var n, - a = [], - r = []; - if (t.length > e.length) { - var o = e; - (e = t), (t = o); - } - for (n = 0; n < t.length; n += 2) a.push({ x: t[n], y: t[n + 1] }); - for (n = 0; n < e.length; n += 2) r.push({ x: e[n], y: e[n + 1] }); - var s = []; - return ( - r.forEach(function (t) { - var e = Konva.Util._getProjectionToLine(t, a, i); - s.push(e.x), s.push(e.y); - }), - s - ); - }, - _prepareToStringify: function (t) { - var e; - for (var i in ((t.visitedByCircularReferenceRemoval = !0), t)) - if (t.hasOwnProperty(i) && t[i] && 'object' == typeof t[i]) - if ( - ((e = Object.getOwnPropertyDescriptor(t, i)), - t[i].visitedByCircularReferenceRemoval || Konva.Util._isElement(t[i])) - ) { - if (!e.configurable) return null; - delete t[i]; - } else if (null === Konva.Util._prepareToStringify(t[i])) { - if (!e.configurable) return null; - delete t[i]; - } - return delete t.visitedByCircularReferenceRemoval, t; - }, - }; - })(), - (function () { - 'use strict'; - var i; - (Konva.Canvas = function (t) { - this.init(t); - }), - (Konva.Canvas.prototype = { - init: function (t) { - var e = - (t || {}).pixelRatio || - Konva.pixelRatio || - (function () { - if (i) return i; - var t = Konva.Util.createCanvasElement().getContext('2d'); - return (i = - (Konva.window.devicePixelRatio || 1) / - (t.webkitBackingStorePixelRatio || - t.mozBackingStorePixelRatio || - t.msBackingStorePixelRatio || - t.oBackingStorePixelRatio || - t.backingStorePixelRatio || - 1)); - })(); - (this.pixelRatio = e), - (this._canvas = Konva.Util.createCanvasElement()), - (this._canvas.style.padding = 0), - (this._canvas.style.margin = 0), - (this._canvas.style.border = 0), - (this._canvas.style.background = 'transparent'), - (this._canvas.style.position = 'absolute'), - (this._canvas.style.top = 0), - (this._canvas.style.left = 0); - }, - getContext: function () { - return this.context; - }, - getPixelRatio: function () { - return this.pixelRatio; - }, - setPixelRatio: function (t) { - var e = this.pixelRatio; - (this.pixelRatio = t), this.setSize(this.getWidth() / e, this.getHeight() / e); - }, - setWidth: function (t) { - (this.width = this._canvas.width = t * this.pixelRatio), (this._canvas.style.width = t + 'px'); - var e = this.pixelRatio; - this.getContext()._context.scale(e, e); - }, - setHeight: function (t) { - (this.height = this._canvas.height = t * this.pixelRatio), (this._canvas.style.height = t + 'px'); - var e = this.pixelRatio; - this.getContext()._context.scale(e, e); - }, - getWidth: function () { - return this.width; - }, - getHeight: function () { - return this.height; - }, - setSize: function (t, e) { - this.setWidth(t), this.setHeight(e); - }, - toDataURL: function (t, e) { - try { - return this._canvas.toDataURL(t, e); - } catch (t) { - try { - return this._canvas.toDataURL(); - } catch (t) { - return Konva.Util.warn('Unable to get data URL. ' + t.message), ''; - } - } - }, - }), - (Konva.SceneCanvas = function (t) { - var e = t || {}, - i = e.width || 0, - n = e.height || 0; - Konva.Canvas.call(this, e), (this.context = new Konva.SceneContext(this)), this.setSize(i, n); - }), - Konva.Util.extend(Konva.SceneCanvas, Konva.Canvas), - (Konva.HitCanvas = function (t) { - var e = t || {}, - i = e.width || 0, - n = e.height || 0; - Konva.Canvas.call(this, e), - (this.context = new Konva.HitContext(this)), - this.setSize(i, n), - (this.hitCanvas = !0); - }), - Konva.Util.extend(Konva.HitCanvas, Konva.Canvas); - })(), - (function () { - 'use strict'; - var s = [ - 'arc', - 'arcTo', - 'beginPath', - 'bezierCurveTo', - 'clearRect', - 'clip', - 'closePath', - 'createLinearGradient', - 'createPattern', - 'createRadialGradient', - 'drawImage', - 'fill', - 'fillText', - 'getImageData', - 'createImageData', - 'lineTo', - 'moveTo', - 'putImageData', - 'quadraticCurveTo', - 'rect', - 'restore', - 'rotate', - 'save', - 'scale', - 'setLineDash', - 'setTransform', - 'stroke', - 'strokeText', - 'transform', - 'translate', - ]; - (Konva.Context = function (t) { - this.init(t); - }), - (Konva.Context.prototype = { - init: function (t) { - (this.canvas = t), - (this._context = t._canvas.getContext('2d')), - Konva.enableTrace && ((this.traceArr = []), this._enableTrace()); - }, - fillShape: function (t) { - t.getFillEnabled() && this._fill(t); - }, - strokeShape: function (t) { - t.getStrokeEnabled() && this._stroke(t); - }, - fillStrokeShape: function (t) { - t.getFillEnabled() && this._fill(t), t.getStrokeEnabled() && this._stroke(t); - }, - getTrace: function (t) { - var e, - i, - n, - a, - r = this.traceArr, - o = r.length, - s = ''; - for (e = 0; e < o; e++) - (n = (i = r[e]).method) - ? ((a = i.args), - (s += n), - t - ? (s += '()') - : Konva.Util._isArray(a[0]) - ? (s += '([' + a.join(',') + '])') - : (s += '(' + a.join(',') + ')')) - : ((s += i.property), t || (s += '=' + i.val)), - (s += ';'); - return s; - }, - clearTrace: function () { - this.traceArr = []; - }, - _trace: function (t) { - var e = this.traceArr; - e.push(t), e.length >= Konva.traceArrMax && e.shift(); - }, - reset: function () { - var t = this.getCanvas().getPixelRatio(); - this.setTransform(1 * t, 0, 0, 1 * t, 0, 0); - }, - getCanvas: function () { - return this.canvas; - }, - clear: function (t) { - var e = this.getCanvas(); - t - ? this.clearRect(t.x || 0, t.y || 0, t.width || 0, t.height || 0) - : this.clearRect(0, 0, e.getWidth() / e.pixelRatio, e.getHeight() / e.pixelRatio); - }, - _applyLineCap: function (t) { - var e = t.getLineCap(); - e && this.setAttr('lineCap', e); - }, - _applyOpacity: function (t) { - var e = t.getAbsoluteOpacity(); - 1 !== e && this.setAttr('globalAlpha', e); - }, - _applyLineJoin: function (t) { - var e = t.getLineJoin(); - e && this.setAttr('lineJoin', e); - }, - setAttr: function (t, e) { - this._context[t] = e; - }, - arc: function () { - var t = arguments; - this._context.arc(t[0], t[1], t[2], t[3], t[4], t[5]); - }, - beginPath: function () { - this._context.beginPath(); - }, - bezierCurveTo: function () { - var t = arguments; - this._context.bezierCurveTo(t[0], t[1], t[2], t[3], t[4], t[5]); - }, - clearRect: function () { - var t = arguments; - this._context.clearRect(t[0], t[1], t[2], t[3]); - }, - clip: function () { - this._context.clip(); - }, - closePath: function () { - this._context.closePath(); - }, - createImageData: function () { - var t = arguments; - return 2 === t.length - ? this._context.createImageData(t[0], t[1]) - : 1 === t.length - ? this._context.createImageData(t[0]) - : void 0; - }, - createLinearGradient: function () { - var t = arguments; - return this._context.createLinearGradient(t[0], t[1], t[2], t[3]); - }, - createPattern: function () { - var t = arguments; - return this._context.createPattern(t[0], t[1]); - }, - createRadialGradient: function () { - var t = arguments; - return this._context.createRadialGradient(t[0], t[1], t[2], t[3], t[4], t[5]); - }, - drawImage: function () { - var t = arguments, - e = this._context; - 3 === t.length - ? e.drawImage(t[0], t[1], t[2]) - : 5 === t.length - ? e.drawImage(t[0], t[1], t[2], t[3], t[4]) - : 9 === t.length && e.drawImage(t[0], t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8]); - }, - isPointInPath: function (t, e) { - return this._context.isPointInPath(t, e); - }, - fill: function () { - this._context.fill(); - }, - fillRect: function (t, e, i, n) { - this._context.fillRect(t, e, i, n); - }, - strokeRect: function (t, e, i, n) { - this._context.strokeRect(t, e, i, n); - }, - fillText: function () { - var t = arguments; - this._context.fillText(t[0], t[1], t[2]); - }, - measureText: function (t) { - return this._context.measureText(t); - }, - getImageData: function () { - var t = arguments; - return this._context.getImageData(t[0], t[1], t[2], t[3]); - }, - lineTo: function () { - var t = arguments; - this._context.lineTo(t[0], t[1]); - }, - moveTo: function () { - var t = arguments; - this._context.moveTo(t[0], t[1]); - }, - rect: function () { - var t = arguments; - this._context.rect(t[0], t[1], t[2], t[3]); - }, - putImageData: function () { - var t = arguments; - this._context.putImageData(t[0], t[1], t[2]); - }, - quadraticCurveTo: function () { - var t = arguments; - this._context.quadraticCurveTo(t[0], t[1], t[2], t[3]); - }, - restore: function () { - this._context.restore(); - }, - rotate: function () { - var t = arguments; - this._context.rotate(t[0]); - }, - save: function () { - this._context.save(); - }, - scale: function () { - var t = arguments; - this._context.scale(t[0], t[1]); - }, - setLineDash: function () { - var t = arguments, - e = this._context; - this._context.setLineDash - ? e.setLineDash(t[0]) - : 'mozDash' in e - ? (e.mozDash = t[0]) - : 'webkitLineDash' in e && (e.webkitLineDash = t[0]); - }, - getLineDash: function () { - return this._context.getLineDash(); - }, - setTransform: function () { - var t = arguments; - this._context.setTransform(t[0], t[1], t[2], t[3], t[4], t[5]); - }, - stroke: function () { - this._context.stroke(); - }, - strokeText: function () { - var t = arguments; - this._context.strokeText(t[0], t[1], t[2]); - }, - transform: function () { - var t = arguments; - this._context.transform(t[0], t[1], t[2], t[3], t[4], t[5]); - }, - translate: function () { - var t = arguments; - this._context.translate(t[0], t[1]); - }, - _enableTrace: function () { - var t, - n, - a = this, - e = s.length, - r = Konva.Util._simplifyArray, - i = this.setAttr, - o = function (t) { - var e, - i = a[t]; - a[t] = function () { - return ( - (n = r(Array.prototype.slice.call(arguments, 0))), - (e = i.apply(a, arguments)), - a._trace({ method: t, args: n }), - e - ); - }; - }; - for (t = 0; t < e; t++) o(s[t]); - a.setAttr = function () { - i.apply(a, arguments); - var t = arguments[0], - e = arguments[1]; - ('shadowOffsetX' !== t && 'shadowOffsetY' !== t && 'shadowBlur' !== t) || - (e /= this.canvas.getPixelRatio()), - a._trace({ property: t, val: e }); - }; - }, - }), - [ - 'fillStyle', - 'strokeStyle', - 'shadowColor', - 'shadowBlur', - 'shadowOffsetX', - 'shadowOffsetY', - 'lineCap', - 'lineDashOffset', - 'lineJoin', - 'lineWidth', - 'miterLimit', - 'font', - 'textAlign', - 'textBaseline', - 'globalAlpha', - 'globalCompositeOperation', - ].forEach(function (e) { - Object.defineProperty(Konva.Context.prototype, e, { - get: function () { - return this._context[e]; - }, - set: function (t) { - this._context[e] = t; - }, - }); - }), - (Konva.SceneContext = function (t) { - Konva.Context.call(this, t); - }), - (Konva.SceneContext.prototype = { - _fillColor: function (t) { - var e = t.fill(); - this.setAttr('fillStyle', e), t._fillFunc(this); - }, - _fillPattern: function (t) { - var e = t.getFillPatternX(), - i = t.getFillPatternY(), - n = t.getFillPatternScale(), - a = Konva.getAngle(t.getFillPatternRotation()), - r = t.getFillPatternOffset(); - (e || i) && this.translate(e || 0, i || 0), - a && this.rotate(a), - n && this.scale(n.x, n.y), - r && this.translate(-1 * r.x, -1 * r.y), - this.setAttr( - 'fillStyle', - this.createPattern(t.getFillPatternImage(), t.getFillPatternRepeat() || 'repeat'), - ), - this.fill(); - }, - _fillLinearGradient: function (t) { - var e = t.getFillLinearGradientStartPoint(), - i = t.getFillLinearGradientEndPoint(), - n = t.getFillLinearGradientColorStops(), - a = this.createLinearGradient(e.x, e.y, i.x, i.y); - if (n) { - for (var r = 0; r < n.length; r += 2) a.addColorStop(n[r], n[r + 1]); - this.setAttr('fillStyle', a), t._fillFunc(this); - } - }, - _fillRadialGradient: function (t) { - for ( - var e = t.getFillRadialGradientStartPoint(), - i = t.getFillRadialGradientEndPoint(), - n = t.getFillRadialGradientStartRadius(), - a = t.getFillRadialGradientEndRadius(), - r = t.getFillRadialGradientColorStops(), - o = this.createRadialGradient(e.x, e.y, n, i.x, i.y, a), - s = 0; - s < r.length; - s += 2 - ) - o.addColorStop(r[s], r[s + 1]); - this.setAttr('fillStyle', o), this.fill(); - }, - _fill: function (t) { - var e = t.fill(), - i = t.getFillPriority(); - if (e && 'color' === i) this._fillColor(t); - else { - var n = t.getFillPatternImage(); - if (n && 'pattern' === i) this._fillPattern(t); - else { - var a = t.getFillLinearGradientColorStops(); - if (a && 'linear-gradient' === i) this._fillLinearGradient(t); - else { - var r = t.getFillRadialGradientColorStops(); - r && 'radial-gradient' === i - ? this._fillRadialGradient(t) - : e - ? this._fillColor(t) - : n - ? this._fillPattern(t) - : a - ? this._fillLinearGradient(t) - : r && this._fillRadialGradient(t); - } - } - } - }, - _strokeLinearGradient: function (t) { - var e = t.getStrokeLinearGradientStartPoint(), - i = t.getStrokeLinearGradientEndPoint(), - n = t.getStrokeLinearGradientColorStops(), - a = this.createLinearGradient(e.x, e.y, i.x, i.y); - if (n) { - for (var r = 0; r < n.length; r += 2) a.addColorStop(n[r], n[r + 1]); - this.setAttr('strokeStyle', a); - } - }, - _stroke: function (t) { - var e = t.dash(), - i = t.getStrokeScaleEnabled() || t instanceof Konva.Text; - t.hasStroke() && - (i || (this.save(), this.setTransform(1, 0, 0, 1, 0, 0)), - this._applyLineCap(t), - e && t.dashEnabled() && (this.setLineDash(e), this.setAttr('lineDashOffset', t.dashOffset())), - this.setAttr('lineWidth', t.strokeWidth()), - t.getShadowForStrokeEnabled() || this.setAttr('shadowColor', 'rgba(0,0,0,0)'), - t.getStrokeLinearGradientColorStops() - ? this._strokeLinearGradient(t) - : this.setAttr('strokeStyle', t.stroke()), - t._strokeFunc(this), - i || this.restore()); - }, - _applyShadow: function (t) { - var e = Konva.Util, - i = e.get(t.getShadowRGBA(), 'black'), - n = e.get(t.getShadowBlur(), 5), - a = e.get(t.getShadowOffset(), { x: 0, y: 0 }), - r = t.getAbsoluteScale(), - o = this.canvas.getPixelRatio(), - s = r.x * o, - h = r.y * o; - this.setAttr('shadowColor', i), - this.setAttr('shadowBlur', n * Math.min(Math.abs(s), Math.abs(h))), - this.setAttr('shadowOffsetX', a.x * s), - this.setAttr('shadowOffsetY', a.y * h); - }, - _applyGlobalCompositeOperation: function (t) { - var e = t.getGlobalCompositeOperation(); - 'source-over' !== e && this.setAttr('globalCompositeOperation', e); - }, - }), - Konva.Util.extend(Konva.SceneContext, Konva.Context), - (Konva.HitContext = function (t) { - Konva.Context.call(this, t); - }), - (Konva.HitContext.prototype = { - _fill: function (t) { - this.save(), this.setAttr('fillStyle', t.colorKey), t._fillFuncHit(this), this.restore(); - }, - _stroke: function (t) { - if (t.hasStroke() && t.strokeHitEnabled()) { - var e = t.getStrokeScaleEnabled() || t instanceof Konva.Text; - e || (this.save(), this.setTransform(1, 0, 0, 1, 0, 0)), - this._applyLineCap(t), - this.setAttr('lineWidth', t.strokeWidth()), - this.setAttr('strokeStyle', t.colorKey), - t._strokeFuncHit(this), - e || this.restore(); - } - }, - }), - Konva.Util.extend(Konva.HitContext, Konva.Context); - })(), - (function () { - 'use strict'; - var d = 'get', - u = 'set'; - (Konva.Factory = { - addGetterSetter: function (t, e, i, n, a) { - this.addGetter(t, e, i), this.addSetter(t, e, n, a), this.addOverloadedGetterSetter(t, e); - }, - addGetter: function (t, e, i) { - var n = d + Konva.Util._capitalize(e); - t.prototype[n] = function () { - var t = this.attrs[e]; - return void 0 === t ? i : t; - }; - }, - addSetter: function (t, e, i, n) { - var a = u + Konva.Util._capitalize(e); - t.prototype[a] = function (t) { - return i && null != t && (t = i.call(this, t, e)), this._setAttr(e, t), n && n.call(this), this; - }; - }, - addComponentsGetterSetter: function (t, n, e, a, r) { - var i, - o, - s = e.length, - h = Konva.Util._capitalize, - l = d + h(n), - c = u + h(n); - (t.prototype[l] = function () { - var t = {}; - for (i = 0; i < s; i++) t[(o = e[i])] = this.getAttr(n + h(o)); - return t; - }), - (t.prototype[c] = function (t) { - var e, - i = this.attrs[n]; - for (e in (a && (t = a.call(this, t)), t)) t.hasOwnProperty(e) && this._setAttr(n + h(e), t[e]); - return this._fireChangeEvent(n, i, t), r && r.call(this), this; - }), - this.addOverloadedGetterSetter(t, n); - }, - addOverloadedGetterSetter: function (t, e) { - var i = Konva.Util._capitalize(e), - n = u + i, - a = d + i; - t.prototype[e] = function () { - return arguments.length ? (this[n](arguments[0]), this) : this[a](); - }; - }, - addDeprecatedGetterSetter: function (t, e, i, n) { - Konva.Util.error('Adding deprecated ' + e); - var a = d + Konva.Util._capitalize(e), - r = e + ' property is deprecated and will be removed soon. Look at Konva change log for more information.'; - (t.prototype[a] = function () { - Konva.Util.error(r); - var t = this.attrs[e]; - return void 0 === t ? i : t; - }), - this.addSetter(t, e, n, function () { - Konva.Util.error(r); - }), - this.addOverloadedGetterSetter(t, e); - }, - backCompat: function (o, t) { - Konva.Util.each(t, function (t, e) { - var i = o.prototype[e], - n = d + Konva.Util._capitalize(t), - a = u + Konva.Util._capitalize(t); - function r() { - i.apply(this, arguments), - Konva.Util.error('"' + t + '" method is deprecated and will be removed soon. Use ""' + e + '" instead.'); - } - (o.prototype[t] = r), (o.prototype[n] = r), (o.prototype[a] = r); - }); - }, - afterSetFilter: function () { - this._filterUpToDate = !1; - }, - }), - (Konva.Validators = { - RGBComponent: function (t) { - return 255 < t ? 255 : t < 0 ? 0 : Math.round(t); - }, - alphaComponent: function (t) { - return 1 < t ? 1 : t < 1e-4 ? 1e-4 : t; - }, - _formatValue: function (t) { - return Konva.Util._isString(t) - ? '"' + t + '"' - : '[object Number]' === Object.prototype.toString.call(t) - ? t - : Konva.Util._isBoolean(t) - ? t - : Object.prototype.toString.call(t); - }, - getNumberValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - Konva.Util._isNumber(t) || - Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a number.', - ), - t - ); - }; - }, - getNumberOrAutoValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - Konva.Util._isNumber(t) || - 'auto' === t || - Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a number or "auto".', - ), - t - ); - }; - }, - getStringValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - Konva.Util._isString(t) || - Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a string.', - ), - t - ); - }; - }, - getFunctionValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - Konva.Util._isFunction(t) || - Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a function.', - ), - t - ); - }; - }, - getNumberArrayValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - Konva.Util._isArray(t) - ? t.forEach(function (t) { - Konva.Util._isNumber(t) || - Konva.Util.warn( - '"' + - e + - '" attribute has non numeric element ' + - t + - '. Make sure that all elements are numbers.', - ); - }) - : Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a array of numbers.', - ), - t - ); - }; - }, - getBooleanValidator: function () { - if (Konva.isUnminified) - return function (t, e) { - return ( - !0 === t || - !1 === t || - Konva.Util.warn( - Konva.Validators._formatValue(t) + - ' is a not valid value for "' + - e + - '" attribute. The value should be a boolean.', - ), - t - ); - }; - }, - }); - })(), - (function (v) { - 'use strict'; - var p = 'absoluteOpacity', - i = 'absoluteTransform', - m = 'absoluteScale', - e = 'listening', - r = 'mouseenter', - o = 'mouseleave', - l = 'Shape', - n = 'transform', - a = 'visible', - c = ['id'], - s = [ - 'xChange.konva', - 'yChange.konva', - 'scaleXChange.konva', - 'scaleYChange.konva', - 'skewXChange.konva', - 'skewYChange.konva', - 'rotationChange.konva', - 'offsetXChange.konva', - 'offsetYChange.konva', - 'transformsEnabledChange.konva', - ].join(' '), - h = ['scaleXChange.konva', 'scaleYChange.konva'].join(' '); - (v.Node = function (t) { - this._init(t); - }), - v.Util.addMethods(v.Node, { - _init: function (t) { - (this._id = v.idCounter++), - (this.eventListeners = {}), - (this.attrs = {}), - (this._cache = {}), - (this._filterUpToDate = !1), - (this._isUnderCache = !1), - this.setAttrs(t), - this.on(s, function () { - this._clearCache(n), this._clearSelfAndDescendantCache(i); - }), - this.on(h, function () { - this._clearSelfAndDescendantCache(m); - }), - this.on('visibleChange.konva', function () { - this._clearSelfAndDescendantCache(a); - }), - this.on('listeningChange.konva', function () { - this._clearSelfAndDescendantCache(e); - }), - this.on('opacityChange.konva', function () { - this._clearSelfAndDescendantCache(p); - }); - }, - _clearCache: function (t) { - t ? delete this._cache[t] : (this._cache = {}); - }, - _getCache: function (t, e) { - return void 0 === this._cache[t] && (this._cache[t] = e.call(this)), this._cache[t]; - }, - _clearSelfAndDescendantCache: function (e) { - this._clearCache(e), - this.children && - this.getChildren().each(function (t) { - t._clearSelfAndDescendantCache(e); - }); - }, - clearCache: function () { - return delete this._cache.canvas, (this._filterUpToDate = !1), this; - }, - cache: function (t) { - var e = t || {}, - i = this.getClientRect({ skipTransform: !0, relativeTo: this.getParent() }), - n = e.width || i.width, - a = e.height || i.height, - r = e.pixelRatio, - o = e.x || i.x, - s = e.y || i.y, - h = e.offset || 0, - l = e.drawBorder || !1; - if (n && a) { - (n += 2 * h), (a += 2 * h), (o -= h), (s -= h); - var c = new v.SceneCanvas({ pixelRatio: r, width: n, height: a }), - d = new v.SceneCanvas({ pixelRatio: r, width: n, height: a }), - u = new v.HitCanvas({ pixelRatio: 1, width: n, height: a }), - g = c.getContext(), - f = u.getContext(); - return ( - (u.isCache = !0), - this.clearCache(), - g.save(), - f.save(), - g.translate(-o, -s), - f.translate(-o, -s), - (this._isUnderCache = !0), - this._clearSelfAndDescendantCache(p), - this._clearSelfAndDescendantCache(m), - this.drawScene(c, this, !0), - this.drawHit(u, this, !0), - (this._isUnderCache = !1), - g.restore(), - f.restore(), - l && - (g.save(), - g.beginPath(), - g.rect(0, 0, n, a), - g.closePath(), - g.setAttr('strokeStyle', 'red'), - g.setAttr('lineWidth', 5), - g.stroke(), - g.restore()), - (this._cache.canvas = { scene: c, filter: d, hit: u, x: o, y: s }), - this - ); - } - v.Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.'); - }, - getClientRect: function () { - throw new Error('abstract "getClientRect" method call'); - }, - _transformedRect: function (t, e) { - var i, - n, - a, - r, - o = [ - { x: t.x, y: t.y }, - { x: t.x + t.width, y: t.y }, - { x: t.x + t.width, y: t.y + t.height }, - { x: t.x, y: t.y + t.height }, - ], - s = this.getAbsoluteTransform(e); - return ( - o.forEach(function (t) { - var e = s.point(t); - void 0 === i && ((i = a = e.x), (n = r = e.y)), - (i = Math.min(i, e.x)), - (n = Math.min(n, e.y)), - (a = Math.max(a, e.x)), - (r = Math.max(r, e.y)); - }), - { x: i, y: n, width: a - i, height: r - n } - ); - }, - _drawCachedSceneCanvas: function (t) { - t.save(), - t._applyOpacity(this), - t._applyGlobalCompositeOperation(this), - t.translate(this._cache.canvas.x, this._cache.canvas.y); - var e = this._getCachedSceneCanvas(), - i = e.pixelRatio; - t.drawImage(e._canvas, 0, 0, e.width / i, e.height / i), t.restore(); - }, - _drawCachedHitCanvas: function (t) { - var e = this._cache.canvas.hit; - t.save(), t.translate(this._cache.canvas.x, this._cache.canvas.y), t.drawImage(e._canvas, 0, 0), t.restore(); - }, - _getCachedSceneCanvas: function () { - var t, - e, - i, - n, - a = this.filters(), - r = this._cache.canvas, - o = r.scene, - s = r.filter, - h = s.getContext(); - if (a) { - if (!this._filterUpToDate) { - var l = o.pixelRatio; - try { - for ( - t = a.length, - h.clear(), - h.drawImage(o._canvas, 0, 0, o.getWidth() / l, o.getHeight() / l), - e = h.getImageData(0, 0, s.getWidth(), s.getHeight()), - i = 0; - i < t; - i++ - ) - 'function' == typeof (n = a[i]) - ? (n.call(this, e), h.putImageData(e, 0, 0)) - : v.Util.error( - 'Filter should be type of function, but got ' + - typeof n + - ' insted. Please check correct filters', - ); - } catch (t) { - v.Util.error('Unable to apply filter. ' + t.message); - } - this._filterUpToDate = !0; - } - return s; - } - return o; - }, - on: function (t, e) { - if (3 === arguments.length) return this._delegate.apply(this, arguments); - var i, - n, - a, - r, - o = t.split(' '), - s = o.length; - for (i = 0; i < s; i++) - (a = (n = o[i].split('.'))[0]), - (r = n[1] || ''), - this.eventListeners[a] || (this.eventListeners[a] = []), - this.eventListeners[a].push({ name: r, handler: e }); - return this; - }, - off: function (t, e) { - var i, - n, - a, - r, - o, - s = (t || '').split(' '), - h = s.length; - if (!t) for (n in this.eventListeners) this._off(n); - for (i = 0; i < h; i++) - if (((r = (a = s[i].split('.'))[0]), (o = a[1]), r)) this.eventListeners[r] && this._off(r, o, e); - else for (n in this.eventListeners) this._off(n, o, e); - return this; - }, - dispatchEvent: function (t) { - var e = { target: this, type: t.type, evt: t }; - return this.fire(t.type, e), this; - }, - addEventListener: function (t, e) { - return ( - this.on(t, function (t) { - e.call(this, t.evt); - }), - this - ); - }, - removeEventListener: function (t) { - return this.off(t), this; - }, - _delegate: function (t, n, a) { - var r = this; - this.on(t, function (t) { - for (var e = t.target.findAncestors(n, !0, r), i = 0; i < e.length; i++) - ((t = v.Util.cloneObject(t)).currentTarget = e[i]), a.call(e[i], t); - }); - }, - remove: function () { - var t = this.getParent(); - return ( - t && t.children && (t.children.splice(this.index, 1), t._setChildrenIndices(), delete this.parent), - this._clearSelfAndDescendantCache('stage'), - this._clearSelfAndDescendantCache(i), - this._clearSelfAndDescendantCache(a), - this._clearSelfAndDescendantCache(e), - this._clearSelfAndDescendantCache(p), - this - ); - }, - destroy: function () { - v._removeId(this.getId()); - for (var t = (this.getName() || '').split(/\s/g), e = 0; e < t.length; e++) { - var i = t[e]; - v._removeName(i, this._id); - } - return this.remove(), this; - }, - getAttr: function (t) { - var e = 'get' + v.Util._capitalize(t); - return v.Util._isFunction(this[e]) ? this[e]() : this.attrs[t]; - }, - getAncestors: function () { - for (var t = this.getParent(), e = new v.Collection(); t; ) e.push(t), (t = t.getParent()); - return e; - }, - getAttrs: function () { - return this.attrs || {}; - }, - setAttrs: function (t) { - var e, i; - if (!t) return this; - for (e in t) - 'children' !== e && - ((i = 'set' + v.Util._capitalize(e)), - v.Util._isFunction(this[i]) ? this[i](t[e]) : this._setAttr(e, t[e])); - return this; - }, - isListening: function () { - return this._getCache(e, this._isListening); - }, - _isListening: function () { - var t = this.getListening(), - e = this.getParent(); - return 'inherit' === t ? !e || e.isListening() : t; - }, - isVisible: function () { - return this._getCache(a, this._isVisible); - }, - _isVisible: function (t) { - var e = this.getVisible(), - i = this.getParent(); - return (t === i && 'inherit' === e) || (t === i ? e : 'inherit' === e ? !i || i._isVisible(t) : e); - }, - shouldDrawHit: function () { - var t = this.getLayer(); - return ( - (!t && this.isListening() && this.isVisible()) || - (t && t.hitGraphEnabled() && this.isListening() && this.isVisible()) - ); - }, - show: function () { - return this.setVisible(!0), this; - }, - hide: function () { - return this.setVisible(!1), this; - }, - getZIndex: function () { - return this.index || 0; - }, - getAbsoluteZIndex: function () { - var i, - n, - a, - r, - o = this.getDepth(), - s = this, - h = 0; - return ( - 'Stage' !== s.nodeType && - (function t(e) { - for (i = [], n = e.length, a = 0; a < n; a++) - (r = e[a]), - h++, - r.nodeType !== l && (i = i.concat(r.getChildren().toArray())), - r._id === s._id && (a = n); - 0 < i.length && i[0].getDepth() <= o && t(i); - })(s.getStage().getChildren()), - h - ); - }, - getDepth: function () { - for (var t = 0, e = this.parent; e; ) t++, (e = e.parent); - return t; - }, - setPosition: function (t) { - return this.setX(t.x), this.setY(t.y), this; - }, - getPosition: function () { - return { x: this.getX(), y: this.getY() }; - }, - getAbsolutePosition: function (t) { - var e = this.getAbsoluteTransform(t).getMatrix(), - i = new v.Transform(), - n = this.offset(); - return (i.m = e.slice()), i.translate(n.x, n.y), i.getTranslation(); - }, - setAbsolutePosition: function (t) { - var e, - i = this._clearTransform(); - return ( - (this.attrs.x = i.x), - (this.attrs.y = i.y), - delete i.x, - delete i.y, - (e = this.getAbsoluteTransform()).invert(), - e.translate(t.x, t.y), - (t = { x: this.attrs.x + e.getTranslation().x, y: this.attrs.y + e.getTranslation().y }), - this.setPosition({ x: t.x, y: t.y }), - this._setTransform(i), - this - ); - }, - _setTransform: function (t) { - var e; - for (e in t) this.attrs[e] = t[e]; - this._clearCache(n), this._clearSelfAndDescendantCache(i); - }, - _clearTransform: function () { - var t = { - x: this.getX(), - y: this.getY(), - rotation: this.getRotation(), - scaleX: this.getScaleX(), - scaleY: this.getScaleY(), - offsetX: this.getOffsetX(), - offsetY: this.getOffsetY(), - skewX: this.getSkewX(), - skewY: this.getSkewY(), - }; - return ( - (this.attrs.x = 0), - (this.attrs.y = 0), - (this.attrs.rotation = 0), - (this.attrs.scaleX = 1), - (this.attrs.scaleY = 1), - (this.attrs.offsetX = 0), - (this.attrs.offsetY = 0), - (this.attrs.skewX = 0), - (this.attrs.skewY = 0), - this._clearCache(n), - this._clearSelfAndDescendantCache(i), - t - ); - }, - move: function (t) { - var e = t.x, - i = t.y, - n = this.getX(), - a = this.getY(); - return void 0 !== e && (n += e), void 0 !== i && (a += i), this.setPosition({ x: n, y: a }), this; - }, - _eachAncestorReverse: function (t, e) { - var i, - n, - a = [], - r = this.getParent(); - if (e && e._id === this._id) t(this); - else { - for (a.unshift(this); r && (!e || r._id !== e._id); ) a.unshift(r), (r = r.parent); - for (i = a.length, n = 0; n < i; n++) t(a[n]); - } - }, - rotate: function (t) { - return this.setRotation(this.getRotation() + t), this; - }, - moveToTop: function () { - if (!this.parent) return v.Util.warn('Node has no parent. moveToTop function is ignored.'), !1; - var t = this.index; - return ( - this.parent.children.splice(t, 1), this.parent.children.push(this), this.parent._setChildrenIndices(), !0 - ); - }, - moveUp: function () { - if (!this.parent) return v.Util.warn('Node has no parent. moveUp function is ignored.'), !1; - var t = this.index; - return ( - t < this.parent.getChildren().length - 1 && - (this.parent.children.splice(t, 1), - this.parent.children.splice(t + 1, 0, this), - this.parent._setChildrenIndices(), - !0) - ); - }, - moveDown: function () { - if (!this.parent) return v.Util.warn('Node has no parent. moveDown function is ignored.'), !1; - var t = this.index; - return ( - 0 < t && - (this.parent.children.splice(t, 1), - this.parent.children.splice(t - 1, 0, this), - this.parent._setChildrenIndices(), - !0) - ); - }, - moveToBottom: function () { - if (!this.parent) return v.Util.warn('Node has no parent. moveToBottom function is ignored.'), !1; - var t = this.index; - return ( - 0 < t && - (this.parent.children.splice(t, 1), - this.parent.children.unshift(this), - this.parent._setChildrenIndices(), - !0) - ); - }, - setZIndex: function (t) { - if (!this.parent) return v.Util.warn('Node has no parent. zIndex parameter is ignored.'), !1; - var e = this.index; - return ( - this.parent.children.splice(e, 1), - this.parent.children.splice(t, 0, this), - this.parent._setChildrenIndices(), - this - ); - }, - getAbsoluteOpacity: function () { - return this._getCache(p, this._getAbsoluteOpacity); - }, - _getAbsoluteOpacity: function () { - var t = this.getOpacity(), - e = this.getParent(); - return e && !e._isUnderCache && (t *= this.getParent().getAbsoluteOpacity()), t; - }, - moveTo: function (t) { - return this.getParent() !== t && ((this.__originalRemove || this.remove).call(this), t.add(this)), this; - }, - toObject: function () { - var t, - e, - i, - n = {}, - a = this.getAttrs(); - for (t in ((n.attrs = {}), a)) - (e = a[t]), - (i = 'function' == typeof this[t] && this[t]), - delete a[t], - (i ? i.call(this) : null) !== (a[t] = e) && (n.attrs[t] = e); - return (n.className = this.getClassName()), v.Util._prepareToStringify(n); - }, - toJSON: function () { - return JSON.stringify(this.toObject()); - }, - getParent: function () { - return this.parent; - }, - findAncestors: function (t, e, i) { - var n = []; - e && this._isMatch(t) && n.push(this); - for (var a = this.parent; a; ) { - if (a === i) return n; - a._isMatch(t) && n.push(a), (a = a.parent); - } - return n; - }, - findAncestor: function (t, e, i) { - return this.findAncestors(t, e, i)[0]; - }, - _isMatch: function (t) { - if (!t) return !1; - var e, - i, - n = t.replace(/ /g, '').split(','), - a = n.length; - for (e = 0; e < a; e++) - if ( - ((i = n[e]), - v.Util.isValidSelector(i) || - (v.Util.warn( - 'Selector "' + i + '" is invalid. Allowed selectors examples are "#foo", ".bar" or "Group".', - ), - v.Util.warn( - 'If you have a custom shape with such className, please change it to start with upper letter like "Triangle".', - ), - v.Util.warn('Konva is awesome, right?')), - '#' === i.charAt(0)) - ) { - if (this.id() === i.slice(1)) return !0; - } else if ('.' === i.charAt(0)) { - if (this.hasName(i.slice(1))) return !0; - } else if (0 !== this._get(i).length) return !0; - return !1; - }, - getLayer: function () { - var t = this.getParent(); - return t ? t.getLayer() : null; - }, - getStage: function () { - return this._getCache('stage', this._getStage); - }, - _getStage: function () { - var t = this.getParent(); - return t ? t.getStage() : void 0; - }, - fire: function (t, e, i) { - return ((e = e || {}).target = e.target || this), i ? this._fireAndBubble(t, e) : this._fire(t, e), this; - }, - getAbsoluteTransform: function (t) { - return t ? this._getAbsoluteTransform(t) : this._getCache(i, this._getAbsoluteTransform); - }, - _getAbsoluteTransform: function (t) { - var i = new v.Transform(); - return ( - this._eachAncestorReverse(function (t) { - var e = t.transformsEnabled(); - 'all' === e - ? i.multiply(t.getTransform()) - : 'position' === e && i.translate(t.getX() - t.getOffsetX(), t.getY() - t.getOffsetY()); - }, t), - i - ); - }, - getAbsoluteScale: function (t) { - return t ? this._getAbsoluteScale(t) : this._getCache(m, this._getAbsoluteScale); - }, - _getAbsoluteScale: function (t) { - for (var e = this; e; ) e._isUnderCache && (t = e), (e = e.getParent()); - var i = 1, - n = 1; - return ( - this._eachAncestorReverse(function (t) { - (i *= t.scaleX()), (n *= t.scaleY()); - }, t), - { x: i, y: n } - ); - }, - getTransform: function () { - return this._getCache(n, this._getTransform); - }, - _getTransform: function () { - var t = new v.Transform(), - e = this.getX(), - i = this.getY(), - n = v.getAngle(this.getRotation()), - a = this.getScaleX(), - r = this.getScaleY(), - o = this.getSkewX(), - s = this.getSkewY(), - h = this.getOffsetX(), - l = this.getOffsetY(); - return ( - (0 === e && 0 === i) || t.translate(e, i), - 0 !== n && t.rotate(n), - (0 === o && 0 === s) || t.skew(o, s), - (1 === a && 1 === r) || t.scale(a, r), - (0 === h && 0 === l) || t.translate(-1 * h, -1 * l), - t - ); - }, - clone: function (t) { - var e, - i, - n, - a, - r, - o = v.Util.cloneObject(this.attrs); - for (var s in c) { - delete o[c[s]]; - } - for (e in t) o[e] = t[e]; - var h = new this.constructor(o); - for (e in this.eventListeners) - for (n = (i = this.eventListeners[e]).length, a = 0; a < n; a++) - (r = i[a]).name.indexOf('konva') < 0 && - (h.eventListeners[e] || (h.eventListeners[e] = []), h.eventListeners[e].push(r)); - return h; - }, - _toKonvaCanvas: function (t) { - t = t || {}; - var e = this.getClientRect(), - i = this.getStage(), - n = void 0 !== t.x ? t.x : e.x, - a = void 0 !== t.y ? t.y : e.y, - r = t.pixelRatio || 1, - o = new v.SceneCanvas({ - width: t.width || e.width || (i ? i.getWidth() : 0), - height: t.height || e.height || (i ? i.getHeight() : 0), - pixelRatio: r, - }), - s = o.getContext(); - return s.save(), (n || a) && s.translate(-1 * n, -1 * a), this.drawScene(o), s.restore(), o; - }, - toCanvas: function (t) { - return this._toKonvaCanvas(t)._canvas; - }, - toDataURL: function (t) { - var e = (t = t || {}).mimeType || null, - i = t.quality || null, - n = this._toKonvaCanvas(t).toDataURL(e, i); - return t.callback && t.callback(n), n; - }, - toImage: function (t) { - if (!t || !t.callback) throw 'callback required for toImage method config argument'; - var e = t.callback; - delete t.callback, - v.Util._getImage(this.toDataURL(t), function (t) { - e(t); - }); - }, - setSize: function (t) { - return this.setWidth(t.width), this.setHeight(t.height), this; - }, - getSize: function () { - return { width: this.getWidth(), height: this.getHeight() }; - }, - getWidth: function () { - return this.attrs.width || 0; - }, - getHeight: function () { - return this.attrs.height || 0; - }, - getClassName: function () { - return this.className || this.nodeType; - }, - getType: function () { - return this.nodeType; - }, - getDragDistance: function () { - return void 0 !== this.attrs.dragDistance - ? this.attrs.dragDistance - : this.parent - ? this.parent.getDragDistance() - : v.dragDistance; - }, - _get: function (t) { - return this.className === t || this.nodeType === t ? [this] : []; - }, - _off: function (t, e, i) { - var n, - a, - r, - o = this.eventListeners[t]; - for (n = 0; n < o.length; n++) - if ( - ((a = o[n].name), - (r = o[n].handler), - !(('konva' === a && 'konva' !== e) || (e && a !== e) || (i && i !== r))) - ) { - if ((o.splice(n, 1), 0 === o.length)) { - delete this.eventListeners[t]; - break; - } - n--; - } - }, - _fireChangeEvent: function (t, e, i) { - this._fire(t + 'Change', { oldVal: e, newVal: i }); - }, - setId: function (t) { - var e = this.getId(); - return v._removeId(e), v._addId(this, t), this._setAttr('id', t), this; - }, - setName: function (t) { - var e, - i, - n = (this.getName() || '').split(/\s/g), - a = (t || '').split(/\s/g); - for (i = 0; i < n.length; i++) (e = n[i]), -1 === a.indexOf(e) && e && v._removeName(e, this._id); - for (i = 0; i < a.length; i++) (e = a[i]), -1 === n.indexOf(e) && e && v._addName(this, e); - return this._setAttr('name', t), this; - }, - addName: function (t) { - if (!this.hasName(t)) { - var e = this.name(), - i = e ? e + ' ' + t : t; - this.setName(i); - } - return this; - }, - hasName: function (t) { - return -1 !== (this.name() || '').split(/\s/g).indexOf(t); - }, - removeName: function (t) { - var e = (this.name() || '').split(/\s/g), - i = e.indexOf(t); - return -1 !== i && (e.splice(i, 1), this.setName(e.join(' '))), this; - }, - setAttr: function (t, e) { - var i = this['set' + v.Util._capitalize(t)]; - return v.Util._isFunction(i) ? i.call(this, e) : this._setAttr(t, e), this; - }, - _setAttr: function (t, e) { - var i; - ((i = this.attrs[t]) === e && !v.Util.isObject(e)) || - (null == e ? delete this.attrs[t] : (this.attrs[t] = e), this._fireChangeEvent(t, i, e)); - }, - _setComponentAttr: function (t, e, i) { - var n; - void 0 !== i && - ((n = this.attrs[t]) || (this.attrs[t] = this.getAttr(t)), - (this.attrs[t][e] = i), - this._fireChangeEvent(t, n, i)); - }, - _fireAndBubble: function (t, e, i) { - var n = !0; - if ( - (e && this.nodeType === l && (e.target = this), - t === r && i && (this._id === i._id || (this.isAncestorOf && this.isAncestorOf(i))) - ? (n = !1) - : t === o && i && (this._id === i._id || (this.isAncestorOf && this.isAncestorOf(i))) && (n = !1), - n) - ) { - this._fire(t, e); - var a = (t === r || t === o) && i && i.isAncestorOf && i.isAncestorOf(this) && !i.isAncestorOf(this.parent); - ((e && !e.cancelBubble) || !e) && - this.parent && - this.parent.isListening() && - !a && - (i && i.parent - ? this._fireAndBubble.call(this.parent, t, e, i.parent) - : this._fireAndBubble.call(this.parent, t, e)); - } - }, - _fire: function (t, e) { - var i, - n = this.eventListeners[t]; - if ((((e = e || {}).currentTarget = this), (e.type = t), n)) - for (i = 0; i < n.length; i++) n[i].handler.call(this, e); - }, - draw: function () { - return this.drawScene(), this.drawHit(), this; - }, - }), - (v.Node.create = function (t, e) { - return v.Util._isString(t) && (t = JSON.parse(t)), this._createNode(t, e); - }), - (v.Node._createNode = function (t, e) { - var i, - n, - a, - r = v.Node.prototype.getClassName.call(t), - o = t.children; - if ((e && (t.attrs.container = e), (i = new v[r](t.attrs)), o)) - for (n = o.length, a = 0; a < n; a++) i.add(this._createNode(o[a])); - return i; - }), - v.Factory.addOverloadedGetterSetter(v.Node, 'position'), - v.Factory.addGetterSetter(v.Node, 'x', 0, v.Validators.getNumberValidator()), - v.Factory.addGetterSetter(v.Node, 'y', 0, v.Validators.getNumberValidator()), - v.Factory.addGetterSetter(v.Node, 'globalCompositeOperation', 'source-over', v.Validators.getStringValidator()), - v.Factory.addGetterSetter(v.Node, 'opacity', 1, v.Validators.getNumberValidator()), - v.Factory.addGetter(v.Node, 'name'), - v.Factory.addOverloadedGetterSetter(v.Node, 'name'), - v.Factory.addGetter(v.Node, 'id'), - v.Factory.addOverloadedGetterSetter(v.Node, 'id'), - v.Factory.addGetterSetter(v.Node, 'rotation', 0, v.Validators.getNumberValidator()), - v.Factory.addComponentsGetterSetter(v.Node, 'scale', ['x', 'y']), - v.Factory.addGetterSetter(v.Node, 'scaleX', 1, v.Validators.getNumberValidator()), - v.Factory.addGetterSetter(v.Node, 'scaleY', 1, v.Validators.getNumberValidator()), - v.Factory.addComponentsGetterSetter(v.Node, 'skew', ['x', 'y']), - v.Factory.addGetterSetter(v.Node, 'skewX', 0, v.Validators.getNumberValidator()), - v.Factory.addGetterSetter(v.Node, 'skewY', 0, v.Validators.getNumberValidator()), - v.Factory.addComponentsGetterSetter(v.Node, 'offset', ['x', 'y']), - v.Factory.addGetterSetter(v.Node, 'offsetX', 0, v.Validators.getNumberValidator()), - v.Factory.addGetterSetter(v.Node, 'offsetY', 0, v.Validators.getNumberValidator()), - v.Factory.addSetter(v.Node, 'dragDistance', v.Validators.getNumberValidator()), - v.Factory.addOverloadedGetterSetter(v.Node, 'dragDistance'), - v.Factory.addSetter(v.Node, 'width', v.Validators.getNumberValidator()), - v.Factory.addOverloadedGetterSetter(v.Node, 'width'), - v.Factory.addSetter(v.Node, 'height', v.Validators.getNumberValidator()), - v.Factory.addOverloadedGetterSetter(v.Node, 'height'), - v.Factory.addGetterSetter(v.Node, 'listening', 'inherit', function (t) { - return ( - !0 === t || - !1 === t || - 'inherit' === t || - v.Util.warn( - t + ' is a not valid value for "listening" attribute. The value may be true, false or "inherit".', - ), - t - ); - }), - v.Factory.addGetterSetter(v.Node, 'preventDefault', !0, v.Validators.getBooleanValidator()), - v.Factory.addGetterSetter(v.Node, 'filters', null, function (t) { - return (this._filterUpToDate = !1), t; - }), - v.Factory.addGetterSetter(v.Node, 'visible', 'inherit', function (t) { - return ( - !0 === t || - !1 === t || - 'inherit' === t || - v.Util.warn( - t + ' is a not valid value for "visible" attribute. The value may be true, false or "inherit".', - ), - t - ); - }), - v.Factory.addGetterSetter(v.Node, 'transformsEnabled', 'all', v.Validators.getStringValidator()), - v.Factory.addOverloadedGetterSetter(v.Node, 'size'), - v.Factory.backCompat(v.Node, { - rotateDeg: 'rotate', - setRotationDeg: 'setRotation', - getRotationDeg: 'getRotation', - }), - v.Collection.mapMethods(v.Node); - })(Konva), - (function () { - 'use strict'; - Konva.Filters.Grayscale = function (t) { - var e, - i, - n = t.data, - a = n.length; - for (e = 0; e < a; e += 4) - (i = 0.34 * n[e] + 0.5 * n[e + 1] + 0.16 * n[e + 2]), (n[e] = i), (n[e + 1] = i), (n[e + 2] = i); - }; - })(), - (function (t) { - 'use strict'; - (t.Filters.Brighten = function (t) { - var e, - i = 255 * this.brightness(), - n = t.data, - a = n.length; - for (e = 0; e < a; e += 4) (n[e] += i), (n[e + 1] += i), (n[e + 2] += i); - }), - t.Factory.addGetterSetter(t.Node, 'brightness', 0, t.Validators.getNumberValidator(), t.Factory.afterSetFilter); - })(Konva), - (function () { - 'use strict'; - Konva.Filters.Invert = function (t) { - var e, - i = t.data, - n = i.length; - for (e = 0; e < n; e += 4) (i[e] = 255 - i[e]), (i[e + 1] = 255 - i[e + 1]), (i[e + 2] = 255 - i[e + 2]); - }; - })(), - (function (t) { - 'use strict'; - function E() { - (this.r = 0), (this.g = 0), (this.b = 0), (this.a = 0), (this.next = null); - } - var B = [ - 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, - 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, - 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, - 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, - 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, - 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, - 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, - 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, - 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, - 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, - 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, - 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259, - ], - z = [ - 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, - ]; - (t.Filters.Blur = function (t) { - var e = Math.round(this.blurRadius()); - 0 < e && - (function (t, e) { - var i, - n, - a, - r, - o, - s, - h, - l, - c, - d, - u, - g, - f, - v, - p, - m, - _, - y, - K, - S, - b, - x, - C, - w, - F = t.data, - T = t.width, - P = t.height, - A = e + e + 1, - M = T - 1, - k = P - 1, - G = e + 1, - N = (G * (G + 1)) / 2, - R = new E(), - D = null, - L = R, - O = null, - V = null, - U = B[e], - I = z[e]; - for (a = 1; a < A; a++) (L = L.next = new E()), a === G && (D = L); - for (L.next = R, h = s = 0, n = 0; n < P; n++) { - for ( - m = _ = y = K = l = c = d = u = 0, - g = G * (S = F[s]), - f = G * (b = F[s + 1]), - v = G * (x = F[s + 2]), - p = G * (C = F[s + 3]), - l += N * S, - c += N * b, - d += N * x, - u += N * C, - L = R, - a = 0; - a < G; - a++ - ) - (L.r = S), (L.g = b), (L.b = x), (L.a = C), (L = L.next); - for (a = 1; a < G; a++) - (r = s + ((M < a ? M : a) << 2)), - (l += (L.r = S = F[r]) * (w = G - a)), - (c += (L.g = b = F[r + 1]) * w), - (d += (L.b = x = F[r + 2]) * w), - (u += (L.a = C = F[r + 3]) * w), - (m += S), - (_ += b), - (y += x), - (K += C), - (L = L.next); - for (O = R, V = D, i = 0; i < T; i++) - (F[s + 3] = C = (u * U) >> I), - 0 !== C - ? ((C = 255 / C), - (F[s] = ((l * U) >> I) * C), - (F[s + 1] = ((c * U) >> I) * C), - (F[s + 2] = ((d * U) >> I) * C)) - : (F[s] = F[s + 1] = F[s + 2] = 0), - (l -= g), - (c -= f), - (d -= v), - (u -= p), - (g -= O.r), - (f -= O.g), - (v -= O.b), - (p -= O.a), - (r = (h + ((r = i + e + 1) < M ? r : M)) << 2), - (l += m += O.r = F[r]), - (c += _ += O.g = F[r + 1]), - (d += y += O.b = F[r + 2]), - (u += K += O.a = F[r + 3]), - (O = O.next), - (g += S = V.r), - (f += b = V.g), - (v += x = V.b), - (p += C = V.a), - (m -= S), - (_ -= b), - (y -= x), - (K -= C), - (V = V.next), - (s += 4); - h += T; - } - for (i = 0; i < T; i++) { - for ( - _ = y = K = m = c = d = u = l = 0, - g = G * (S = F[(s = i << 2)]), - f = G * (b = F[s + 1]), - v = G * (x = F[s + 2]), - p = G * (C = F[s + 3]), - l += N * S, - c += N * b, - d += N * x, - u += N * C, - L = R, - a = 0; - a < G; - a++ - ) - (L.r = S), (L.g = b), (L.b = x), (L.a = C), (L = L.next); - for (o = T, a = 1; a <= e; a++) - (s = (o + i) << 2), - (l += (L.r = S = F[s]) * (w = G - a)), - (c += (L.g = b = F[s + 1]) * w), - (d += (L.b = x = F[s + 2]) * w), - (u += (L.a = C = F[s + 3]) * w), - (m += S), - (_ += b), - (y += x), - (K += C), - (L = L.next), - a < k && (o += T); - for (s = i, O = R, V = D, n = 0; n < P; n++) - (F[3 + (r = s << 2)] = C = (u * U) >> I), - 0 < C - ? ((C = 255 / C), - (F[r] = ((l * U) >> I) * C), - (F[r + 1] = ((c * U) >> I) * C), - (F[r + 2] = ((d * U) >> I) * C)) - : (F[r] = F[r + 1] = F[r + 2] = 0), - (l -= g), - (c -= f), - (d -= v), - (u -= p), - (g -= O.r), - (f -= O.g), - (v -= O.b), - (p -= O.a), - (r = (i + ((r = n + G) < k ? r : k) * T) << 2), - (l += m += O.r = F[r]), - (c += _ += O.g = F[r + 1]), - (d += y += O.b = F[r + 2]), - (u += K += O.a = F[r + 3]), - (O = O.next), - (g += S = V.r), - (f += b = V.g), - (v += x = V.b), - (p += C = V.a), - (m -= S), - (_ -= b), - (y -= x), - (K -= C), - (V = V.next), - (s += T); - } - })(t, e); - }), - t.Factory.addGetterSetter(t.Node, 'blurRadius', 0, t.Validators.getNumberValidator(), t.Factory.afterSetFilter); - })(Konva), - (function () { - 'use strict'; - function d(t, e, i) { - var n = 4 * (i * t.width + e), - a = []; - return a.push(t.data[n++], t.data[n++], t.data[n++], t.data[n++]), a; - } - function u(t, e) { - return Math.sqrt(Math.pow(t[0] - e[0], 2) + Math.pow(t[1] - e[1], 2) + Math.pow(t[2] - e[2], 2)); - } - (Konva.Filters.Mask = function (t) { - var e = (function (t, e) { - var i = d(t, 0, 0), - n = d(t, t.width - 1, 0), - a = d(t, 0, t.height - 1), - r = d(t, t.width - 1, t.height - 1), - o = e || 10; - if (u(i, n) < o && u(n, r) < o && u(r, a) < o && u(a, i) < o) { - for ( - var s = (function (t) { - for (var e = [0, 0, 0], i = 0; i < t.length; i++) - (e[0] += t[i][0]), (e[1] += t[i][1]), (e[2] += t[i][2]); - return (e[0] /= t.length), (e[1] /= t.length), (e[2] /= t.length), e; - })([n, i, r, a]), - h = [], - l = 0; - l < t.width * t.height; - l++ - ) { - var c = u(s, [t.data[4 * l], t.data[4 * l + 1], t.data[4 * l + 2]]); - h[l] = c < o ? 0 : 255; - } - return h; - } - })(t, this.threshold()); - return ( - e && - (function (t, e) { - for (var i = 0; i < t.width * t.height; i++) t.data[4 * i + 3] = e[i]; - })( - t, - (e = (function (t, e, i) { - for ( - var n = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9], - a = Math.round(Math.sqrt(n.length)), - r = Math.floor(a / 2), - o = [], - s = 0; - s < i; - s++ - ) - for (var h = 0; h < e; h++) { - for (var l = s * e + h, c = 0, d = 0; d < a; d++) - for (var u = 0; u < a; u++) { - var g = s + d - r, - f = h + u - r; - if (0 <= g && g < i && 0 <= f && f < e) { - var v = n[d * a + u]; - c += t[g * e + f] * v; - } - } - o[l] = c; - } - return o; - })( - (e = (function (t, e, i) { - for ( - var n = [1, 1, 1, 1, 1, 1, 1, 1, 1], - a = Math.round(Math.sqrt(n.length)), - r = Math.floor(a / 2), - o = [], - s = 0; - s < i; - s++ - ) - for (var h = 0; h < e; h++) { - for (var l = s * e + h, c = 0, d = 0; d < a; d++) - for (var u = 0; u < a; u++) { - var g = s + d - r, - f = h + u - r; - if (0 <= g && g < i && 0 <= f && f < e) { - var v = n[d * a + u]; - c += t[g * e + f] * v; - } - } - o[l] = 1020 <= c ? 255 : 0; - } - return o; - })( - (e = (function (t, e, i) { - for ( - var n = [1, 1, 1, 1, 0, 1, 1, 1, 1], - a = Math.round(Math.sqrt(n.length)), - r = Math.floor(a / 2), - o = [], - s = 0; - s < i; - s++ - ) - for (var h = 0; h < e; h++) { - for (var l = s * e + h, c = 0, d = 0; d < a; d++) - for (var u = 0; u < a; u++) { - var g = s + d - r, - f = h + u - r; - if (0 <= g && g < i && 0 <= f && f < e) { - var v = n[d * a + u]; - c += t[g * e + f] * v; - } - } - o[l] = 2040 === c ? 255 : 0; - } - return o; - })(e, t.width, t.height)), - t.width, - t.height, - )), - t.width, - t.height, - )), - ), - t - ); - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'threshold', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - (Konva.Filters.RGB = function (t) { - var e, - i, - n = t.data, - a = n.length, - r = this.red(), - o = this.green(), - s = this.blue(); - for (e = 0; e < a; e += 4) - (i = (0.34 * n[e] + 0.5 * n[e + 1] + 0.16 * n[e + 2]) / 255), - (n[e] = i * r), - (n[e + 1] = i * o), - (n[e + 2] = i * s), - (n[e + 3] = n[e + 3]); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'red', 0, function (t) { - return (this._filterUpToDate = !1), 255 < t ? 255 : t < 0 ? 0 : Math.round(t); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'green', 0, function (t) { - return (this._filterUpToDate = !1), 255 < t ? 255 : t < 0 ? 0 : Math.round(t); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'blue', 0, Konva.Validators.RGBComponent, Konva.Factory.afterSetFilter); - })(), - (function () { - 'use strict'; - (Konva.Filters.RGBA = function (t) { - var e, - i, - n = t.data, - a = n.length, - r = this.red(), - o = this.green(), - s = this.blue(), - h = this.alpha(); - for (e = 0; e < a; e += 4) - (i = 1 - h), (n[e] = r * h + n[e] * i), (n[e + 1] = o * h + n[e + 1] * i), (n[e + 2] = s * h + n[e + 2] * i); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'red', 0, function (t) { - return (this._filterUpToDate = !1), 255 < t ? 255 : t < 0 ? 0 : Math.round(t); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'green', 0, function (t) { - return (this._filterUpToDate = !1), 255 < t ? 255 : t < 0 ? 0 : Math.round(t); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'blue', 0, Konva.Validators.RGBComponent, Konva.Factory.afterSetFilter), - Konva.Factory.addGetterSetter(Konva.Node, 'alpha', 1, function (t) { - return (this._filterUpToDate = !1), 1 < t ? 1 : t < 0 ? 0 : t; - }); - })(), - (function () { - 'use strict'; - (Konva.Filters.HSV = function (t) { - var e, - i, - n, - a, - r, - o = t.data, - s = o.length, - h = Math.pow(2, this.value()), - l = Math.pow(2, this.saturation()), - c = Math.abs(this.hue() + 360) % 360, - d = h * l * Math.cos((c * Math.PI) / 180), - u = h * l * Math.sin((c * Math.PI) / 180), - g = 0.299 * h + 0.701 * d + 0.167 * u, - f = 0.587 * h - 0.587 * d + 0.33 * u, - v = 0.114 * h - 0.114 * d - 0.497 * u, - p = 0.299 * h - 0.299 * d - 0.328 * u, - m = 0.587 * h + 0.413 * d + 0.035 * u, - _ = 0.114 * h - 0.114 * d + 0.293 * u, - y = 0.299 * h - 0.3 * d + 1.25 * u, - K = 0.587 * h - 0.586 * d - 1.05 * u, - S = 0.114 * h + 0.886 * d - 0.2 * u; - for (e = 0; e < s; e += 4) - (i = o[e + 0]), - (n = o[e + 1]), - (a = o[e + 2]), - (r = o[e + 3]), - (o[e + 0] = g * i + f * n + v * a), - (o[e + 1] = p * i + m * n + _ * a), - (o[e + 2] = y * i + K * n + S * a), - (o[e + 3] = r); - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'hue', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'saturation', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'value', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - Konva.Factory.addGetterSetter( - Konva.Node, - 'hue', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'saturation', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'luminance', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - (Konva.Filters.HSL = function (t) { - var e, - i, - n, - a, - r, - o = t.data, - s = o.length, - h = Math.pow(2, this.saturation()), - l = Math.abs(this.hue() + 360) % 360, - c = 127 * this.luminance(), - d = 1 * h * Math.cos((l * Math.PI) / 180), - u = 1 * h * Math.sin((l * Math.PI) / 180), - g = 0.299 + 0.701 * d + 0.167 * u, - f = 0.587 - 0.587 * d + 0.33 * u, - v = 0.114 - 0.114 * d - 0.497 * u, - p = 0.299 - 0.299 * d - 0.328 * u, - m = 0.587 + 0.413 * d + 0.035 * u, - _ = 0.114 - 0.114 * d + 0.293 * u, - y = 0.299 - 0.3 * d + 1.25 * u, - K = 0.587 - 0.586 * d - 1.05 * u, - S = 0.114 + 0.886 * d - 0.2 * u; - for (e = 0; e < s; e += 4) - (i = o[e + 0]), - (n = o[e + 1]), - (a = o[e + 2]), - (r = o[e + 3]), - (o[e + 0] = g * i + f * n + v * a + c), - (o[e + 1] = p * i + m * n + _ * a + c), - (o[e + 2] = y * i + K * n + S * a + c), - (o[e + 3] = r); - }); - })(), - (function () { - 'use strict'; - (Konva.Filters.Emboss = function (t) { - var e = 10 * this.embossStrength(), - i = 255 * this.embossWhiteLevel(), - n = this.embossDirection(), - a = this.embossBlend(), - r = 0, - o = 0, - s = t.data, - h = t.width, - l = t.height, - c = 4 * h, - d = l; - switch (n) { - case 'top-left': - o = r = -1; - break; - case 'top': - (r = -1), (o = 0); - break; - case 'top-right': - (r = -1), (o = 1); - break; - case 'right': - (r = 0), (o = 1); - break; - case 'bottom-right': - o = r = 1; - break; - case 'bottom': - (r = 1), (o = 0); - break; - case 'bottom-left': - o = -(r = 1); - break; - case 'left': - (r = 0), (o = -1); - break; - default: - Konva.Util.error('Unknown emboss direction: ' + n); - } - do { - var u = (d - 1) * c, - g = r; - d + g < 1 && (g = 0), l < d + g && (g = 0); - var f = (d - 1 + g) * h * 4, - v = h; - do { - var p = u + 4 * (v - 1), - m = o; - v + m < 1 && (m = 0), h < v + m && (m = 0); - var _ = f + 4 * (v - 1 + m), - y = s[p] - s[_], - K = s[p + 1] - s[_ + 1], - S = s[p + 2] - s[_ + 2], - b = y, - x = 0 < b ? b : -b; - if ((x < (0 < K ? K : -K) && (b = K), x < (0 < S ? S : -S) && (b = S), (b *= e), a)) { - var C = s[p] + b, - w = s[p + 1] + b, - F = s[p + 2] + b; - (s[p] = 255 < C ? 255 : C < 0 ? 0 : C), - (s[p + 1] = 255 < w ? 255 : w < 0 ? 0 : w), - (s[p + 2] = 255 < F ? 255 : F < 0 ? 0 : F); - } else { - var T = i - b; - T < 0 ? (T = 0) : 255 < T && (T = 255), (s[p] = s[p + 1] = s[p + 2] = T); - } - } while (--v); - } while (--d); - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'embossStrength', - 0.5, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'embossWhiteLevel', - 0.5, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter(Konva.Node, 'embossDirection', 'top-left', null, Konva.Factory.afterSetFilter), - Konva.Factory.addGetterSetter(Konva.Node, 'embossBlend', !1, null, Konva.Factory.afterSetFilter); - })(), - (function () { - 'use strict'; - function x(t, e, i, n, a) { - var r = i - e, - o = a - n; - return 0 === r ? n + o / 2 : 0 === o ? n : o * ((t - e) / r) + n; - } - (Konva.Filters.Enhance = function (t) { - var e, - i, - n, - a, - r = t.data, - o = r.length, - s = r[0], - h = s, - l = r[1], - c = l, - d = r[2], - u = d, - g = this.enhance(); - if (0 !== g) { - for (a = 0; a < o; a += 4) - (e = r[a + 0]) < s ? (s = e) : h < e && (h = e), - (i = r[a + 1]) < l ? (l = i) : c < i && (c = i), - (n = r[a + 2]) < d ? (d = n) : u < n && (u = n); - var f, v, p, m, _, y, K, S, b; - for ( - h === s && ((h = 255), (s = 0)), - c === l && ((c = 255), (l = 0)), - u === d && ((u = 255), (d = 0)), - 0 < g - ? ((v = h + g * (255 - h)), - (p = s - g * (s - 0)), - (_ = c + g * (255 - c)), - (y = l - g * (l - 0)), - (S = u + g * (255 - u)), - (b = d - g * (d - 0))) - : ((v = h + g * (h - (f = 0.5 * (h + s)))), - (p = s + g * (s - f)), - (_ = c + g * (c - (m = 0.5 * (c + l)))), - (y = l + g * (l - m)), - (S = u + g * (u - (K = 0.5 * (u + d)))), - (b = d + g * (d - K))), - a = 0; - a < o; - a += 4 - ) - (r[a + 0] = x(r[a + 0], s, h, p, v)), - (r[a + 1] = x(r[a + 1], l, c, y, _)), - (r[a + 2] = x(r[a + 2], d, u, b, S)); - } - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'enhance', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - (Konva.Filters.Posterize = function (t) { - var e, - i = Math.round(254 * this.levels()) + 1, - n = t.data, - a = n.length, - r = 255 / i; - for (e = 0; e < a; e += 1) n[e] = Math.floor(n[e] / r) * r; - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'levels', - 0.5, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - (Konva.Filters.Noise = function (t) { - var e, - i = 255 * this.noise(), - n = t.data, - a = n.length, - r = i / 2; - for (e = 0; e < a; e += 4) - (n[e + 0] += r - 2 * r * Math.random()), - (n[e + 1] += r - 2 * r * Math.random()), - (n[e + 2] += r - 2 * r * Math.random()); - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'noise', - 0.2, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - (Konva.Filters.Pixelate = function (t) { - var e, - i, - n, - a, - r, - o, - s, - h, - l, - c, - d, - u, - g, - f, - v = Math.ceil(this.pixelSize()), - p = t.width, - m = t.height, - _ = Math.ceil(p / v), - y = Math.ceil(m / v); - if (((t = t.data), v <= 0)) Konva.Util.error('pixelSize value can not be <= 0'); - else - for (u = 0; u < _; u += 1) - for (g = 0; g < y; g += 1) { - for (l = (h = u * v) + v, d = (c = g * v) + v, f = s = o = r = a = 0, e = h; e < l; e += 1) - if (!(p <= e)) - for (i = c; i < d; i += 1) - m <= i || - ((a += t[(n = 4 * (p * i + e)) + 0]), (r += t[n + 1]), (o += t[n + 2]), (s += t[n + 3]), (f += 1)); - for (a /= f, r /= f, o /= f, s /= f, e = h; e < l; e += 1) - if (!(p <= e)) - for (i = c; i < d; i += 1) - m <= i || ((t[(n = 4 * (p * i + e)) + 0] = a), (t[n + 1] = r), (t[n + 2] = o), (t[n + 3] = s)); - } - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'pixelSize', - 8, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - (Konva.Filters.Threshold = function (t) { - var e, - i = 255 * this.threshold(), - n = t.data, - a = n.length; - for (e = 0; e < a; e += 1) n[e] = n[e] < i ? 0 : 255; - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'threshold', - 0.5, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function () { - 'use strict'; - /** - * Sepia Filter - * Based on: Pixastic Lib - Sepia filter - v0.1.0 - * Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.nihilogic.dk/ - * @function - * @name Sepia - * @memberof Konva.Filters - * @param {Object} imageData - * @author Jacob Seidelin - * @license MPL v1.1 [http://www.pixastic.com/lib/license.txt] - * @example - * node.cache(); - * node.filters([Konva.Filters.Sepia]); - */ Konva.Filters.Sepia = function (t) { - var e, - i, - n, - a, - r, - o, - s, - h, - l, - c = t.data, - d = t.width, - u = t.height, - g = 4 * d; - do { - for ( - e = (u - 1) * g, i = d; - (s = 0.393 * (a = c[(n = e + 4 * (i - 1))]) + 0.769 * (r = c[n + 1]) + 0.189 * (o = c[n + 2])), - (h = 0.349 * a + 0.686 * r + 0.168 * o), - (l = 0.272 * a + 0.534 * r + 0.131 * o), - (c[n] = 255 < s ? 255 : s), - (c[n + 1] = 255 < h ? 255 : h), - (c[n + 2] = 255 < l ? 255 : l), - (c[n + 3] = c[n + 3]), - --i; - - ); - } while (--u); - }; - })(), - (function () { - 'use strict'; - Konva.Filters.Solarize = function (t) { - var e = t.data, - i = t.width, - n = 4 * i, - a = t.height; - do { - var r = (a - 1) * n, - o = i; - do { - var s = r + 4 * (o - 1), - h = e[s], - l = e[s + 1], - c = e[s + 2]; - 127 < h && (h = 255 - h), - 127 < l && (l = 255 - l), - 127 < c && (c = 255 - c), - (e[s] = h), - (e[s + 1] = l), - (e[s + 2] = c); - } while (--o); - } while (--a); - }; - })(), - (function () { - 'use strict'; - (Konva.Filters.Kaleidoscope = function (t) { - var e, - i, - n, - a, - r, - o, - s, - h, - l, - c = t.width, - d = t.height, - u = Math.round(this.kaleidoscopePower()), - g = Math.round(this.kaleidoscopeAngle()), - f = Math.floor((c * (g % 360)) / 360); - if (!(u < 1)) { - var v = Konva.Util.createCanvasElement(); - (v.width = c), (v.height = d); - var p = v.getContext('2d').getImageData(0, 0, c, d); - !(function (t, e, i) { - var n, - a, - r, - o, - s = t.data, - h = e.data, - l = t.width, - c = t.height, - d = i.polarCenterX || l / 2, - u = i.polarCenterY || c / 2, - g = 0, - f = 0, - v = 0, - p = 0, - m = Math.sqrt(d * d + u * u); - (a = l - d), (r = c - u), (m = m < (o = Math.sqrt(a * a + r * r)) ? o : m); - var _, - y, - K, - S, - b = c, - x = l, - C = ((360 / x) * Math.PI) / 180; - for (y = 0; y < x; y += 1) - for (K = Math.sin(y * C), S = Math.cos(y * C), _ = 0; _ < b; _ += 1) - (a = Math.floor(d + ((m * _) / b) * S)), - (g = s[0 + (n = 4 * ((r = Math.floor(u + ((m * _) / b) * K)) * l + a))]), - (f = s[n + 1]), - (v = s[n + 2]), - (p = s[n + 3]), - (h[0 + (n = 4 * (y + _ * l))] = g), - (h[n + 1] = f), - (h[n + 2] = v), - (h[n + 3] = p); - })(t, p, { polarCenterX: c / 2, polarCenterY: d / 2 }); - for (var m = c / Math.pow(2, u); m <= 8; ) (m *= 2), (u -= 1); - var _ = (m = Math.ceil(m)), - y = 0, - K = _, - S = 1; - for (c < f + m && ((y = _), (K = 0), (S = -1)), i = 0; i < d; i += 1) - for (e = y; e !== K; e += S) - (h = 4 * (c * i + (Math.round(e + f) % c))), - (a = p.data[h + 0]), - (r = p.data[h + 1]), - (o = p.data[h + 2]), - (s = p.data[h + 3]), - (l = 4 * (c * i + e)), - (p.data[l + 0] = a), - (p.data[l + 1] = r), - (p.data[l + 2] = o), - (p.data[l + 3] = s); - for (i = 0; i < d; i += 1) - for (_ = Math.floor(m), n = 0; n < u; n += 1) { - for (e = 0; e < _ + 1; e += 1) - (h = 4 * (c * i + e)), - (a = p.data[h + 0]), - (r = p.data[h + 1]), - (o = p.data[h + 2]), - (s = p.data[h + 3]), - (l = 4 * (c * i + 2 * _ - e - 1)), - (p.data[l + 0] = a), - (p.data[l + 1] = r), - (p.data[l + 2] = o), - (p.data[l + 3] = s); - _ *= 2; - } - !(function (t, e, i) { - var n, - a, - r, - o, - s, - h, - l = t.data, - c = e.data, - d = t.width, - u = t.height, - g = i.polarCenterX || d / 2, - f = i.polarCenterY || u / 2, - v = 0, - p = 0, - m = 0, - _ = 0, - y = Math.sqrt(g * g + f * f); - (a = d - g), (r = u - f), (y = y < (h = Math.sqrt(a * a + r * r)) ? h : y); - var K, - S, - b, - x = u, - C = d, - w = i.polarRotation || 0; - for (a = 0; a < d; a += 1) - for (r = 0; r < u; r += 1) - (o = a - g), - (s = r - f), - (K = (Math.sqrt(o * o + s * s) * x) / y), - (S = ((S = ((180 * Math.atan2(s, o)) / Math.PI + 360 + w) % 360) * C) / 360), - (b = Math.floor(S)), - (v = l[0 + (n = 4 * (Math.floor(K) * d + b))]), - (p = l[n + 1]), - (m = l[n + 2]), - (_ = l[n + 3]), - (c[0 + (n = 4 * (r * d + a))] = v), - (c[n + 1] = p), - (c[n + 2] = m), - (c[n + 3] = _); - })(p, t, { polarRotation: 0 }); - } - }), - Konva.Factory.addGetterSetter( - Konva.Node, - 'kaleidoscopePower', - 2, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ), - Konva.Factory.addGetterSetter( - Konva.Node, - 'kaleidoscopeAngle', - 0, - Konva.Validators.getNumberValidator(), - Konva.Factory.afterSetFilter, - ); - })(), - (function (t) { - 'use strict'; - (t.Filters.Contrast = function (t) { - var e, - i = Math.pow((parseInt(this.contrast()) + 100) / 100, 2), - n = t.data, - a = n.length, - r = 150, - o = 150, - s = 150; - for (e = 0; e < a; e += 4) - (r = n[e]), - (o = n[e + 1]), - (s = n[e + 2]), - (r /= 255), - (r -= 0.5), - (r *= i), - (r += 0.5), - (o /= 255), - (o -= 0.5), - (o *= i), - (o += 0.5), - (s /= 255), - (s -= 0.5), - (s *= i), - (s += 0.5), - (r = (r *= 255) < 0 ? 0 : 255 < r ? 255 : r), - (o = (o *= 255) < 0 ? 0 : 255 < o ? 255 : o), - (s = (s *= 255) < 0 ? 0 : 255 < s ? 255 : s), - (n[e] = r), - (n[e + 1] = o), - (n[e + 2] = s); - }), - t.Factory.addGetterSetter(t.Node, 'contrast', 0, t.Validators.getNumberValidator(), t.Factory.afterSetFilter); - })(Konva), - (function () { - 'use strict'; - (Konva.Container = function (t) { - this.__init(t); - }), - Konva.Util.addMethods(Konva.Container, { - __init: function (t) { - (this.children = new Konva.Collection()), Konva.Node.call(this, t); - }, - getChildren: function (e) { - if (!e) return this.children; - var i = new Konva.Collection(); - return ( - this.children.each(function (t) { - e(t) && i.push(t); - }), - i - ); - }, - hasChildren: function () { - return 0 < this.getChildren().length; - }, - removeChildren: function () { - for (var t, e = Konva.Collection.toCollection(this.children), i = 0; i < e.length; i++) - delete (t = e[i]).parent, (t.index = 0), t.remove(); - return (e = null), (this.children = new Konva.Collection()), this; - }, - destroyChildren: function () { - for (var t, e = Konva.Collection.toCollection(this.children), i = 0; i < e.length; i++) - delete (t = e[i]).parent, (t.index = 0), t.destroy(); - return (e = null), (this.children = new Konva.Collection()), this; - }, - add: function (t) { - if (1 < arguments.length) { - for (var e = 0; e < arguments.length; e++) this.add(arguments[e]); - return this; - } - if (t.getParent()) return t.moveTo(this), this; - var i = this.children; - return ( - this._validateAdd(t), - (t.index = i.length), - (t.parent = this), - i.push(t), - this._fire('add', { child: t }), - Konva.DD && t.isDragging() && Konva.DD.anim.setLayers(t.getLayer()), - this - ); - }, - destroy: function () { - return this.hasChildren() && this.destroyChildren(), Konva.Node.prototype.destroy.call(this), this; - }, - find: function (t) { - return this._generalFind(t, !1); - }, - findOne: function (t) { - var e = this._generalFind(t, !0); - return 0 < e.length ? e[0] : void 0; - }, - _generalFind: function (t, e) { - var i = []; - return ( - 'string' == typeof t - ? (i = this._findByString(t, e)) - : 'function' == typeof t && (i = this._findByFunction(t, e)), - Konva.Collection.toCollection(i) - ); - }, - _findByString: function (t) { - var e, - i, - n, - a, - r, - o, - s, - h = [], - l = t.replace(/ /g, '').split(','), - c = l.length; - for (e = 0; e < c; e++) { - if (((n = l[e]), !Konva.Util.isValidSelector(n))) { - var d = - 'Selector "' + - n + - '" is invalid. Allowed selectors examples are "#foo", ".bar" or "Group".\nIf you have a custom shape with such className, please change it to start with upper letter like "Triangle".\nKonva is awesome, right?'; - Konva.Util.warn(d); - } - if ('#' === n.charAt(0)) (r = this._getNodeById(n.slice(1))) && h.push(r); - else if ('.' === n.charAt(0)) (a = this._getNodesByName(n.slice(1))), (h = h.concat(a)); - else for (s = (o = this.getChildren()).length, i = 0; i < s; i++) h = h.concat(o[i]._get(n)); - } - return h; - }, - _findByFunction: function (a, r) { - var o = [], - s = function (t) { - if (!(r && 0 < o.length)) { - var e = t.getChildren(), - i = e.length; - a(t) && (o = o.concat(t)); - for (var n = 0; n < i; n++) s(e[n]); - } - }; - return s(this), o; - }, - _getNodeById: function (t) { - var e = Konva.ids[t]; - return void 0 !== e && this.isAncestorOf(e) ? e : null; - }, - _getNodesByName: function (t) { - var e = Konva.names[t] || []; - return this._getDescendants(e); - }, - _get: function (t) { - for (var e = Konva.Node.prototype._get.call(this, t), i = this.getChildren(), n = i.length, a = 0; a < n; a++) - e = e.concat(i[a]._get(t)); - return e; - }, - toObject: function () { - var t = Konva.Node.prototype.toObject.call(this); - t.children = []; - for (var e = this.getChildren(), i = e.length, n = 0; n < i; n++) { - var a = e[n]; - t.children.push(a.toObject()); - } - return t; - }, - _getDescendants: function (t) { - for (var e = [], i = t.length, n = 0; n < i; n++) { - var a = t[n]; - this.isAncestorOf(a) && e.push(a); - } - return e; - }, - isAncestorOf: function (t) { - for (var e = t.getParent(); e; ) { - if (e._id === this._id) return !0; - e = e.getParent(); - } - return !1; - }, - clone: function (t) { - var e = Konva.Node.prototype.clone.call(this, t); - return ( - this.getChildren().each(function (t) { - e.add(t.clone()); - }), - e - ); - }, - getAllIntersections: function (e) { - var i = []; - return ( - this.find('Shape').each(function (t) { - t.isVisible() && t.intersects(e) && i.push(t); - }), - i - ); - }, - _setChildrenIndices: function () { - this.children.each(function (t, e) { - t.index = e; - }); - }, - drawScene: function (t, e, i) { - var n = this.getLayer(), - a = t || (n && n.getCanvas()), - r = a && a.getContext(), - o = this._cache.canvas, - s = o && o.scene; - return ( - (this.isVisible() || i) && - (!i && s - ? (r.save(), n._applyTransform(this, r, e), this._drawCachedSceneCanvas(r), r.restore()) - : this._drawChildren(a, 'drawScene', e, !1, i)), - this - ); - }, - drawHit: function (t, e, i) { - var n = this.getLayer(), - a = t || (n && n.hitCanvas), - r = a && a.getContext(), - o = this._cache.canvas, - s = o && o.hit; - return ( - (this.shouldDrawHit(a) || i) && - (n && n.clearHitCache(), - !i && s - ? (r.save(), n._applyTransform(this, r, e), this._drawCachedHitCanvas(r), r.restore()) - : this._drawChildren(a, 'drawHit', e)), - this - ); - }, - _drawChildren: function (e, i, n, a, r) { - var t, - o, - s = this.getLayer(), - h = e && e.getContext(), - l = this.getClipWidth(), - c = this.getClipHeight(), - d = this.getClipFunc(), - u = (l && c) || d; - if (u && s) { - h.save(); - var g = this.getAbsoluteTransform(n), - f = g.getMatrix(); - h.transform(f[0], f[1], f[2], f[3], f[4], f[5]), - h.beginPath(), - d ? d.call(this, h, this) : ((t = this.getClipX()), (o = this.getClipY()), h.rect(t, o, l, c)), - h.clip(), - (f = g.copy().invert().getMatrix()), - h.transform(f[0], f[1], f[2], f[3], f[4], f[5]); - } - this.children.each(function (t) { - t[i](e, n, a, r); - }), - u && h.restore(); - }, - shouldDrawHit: function (t) { - var e = this.getLayer(), - i = Konva.DD && Konva.isDragging() && -1 !== Konva.DD.anim.getLayers().indexOf(e); - return (t && t.isCache) || (e && e.hitGraphEnabled() && this.isVisible() && !i); - }, - getClientRect: function (t) { - var i, - n, - a, - r, - e = (t = t || {}).skipTransform, - o = t.relativeTo, - s = { x: 1 / 0, y: 1 / 0, width: 0, height: 0 }, - h = this; - this.children.each(function (t) { - if (t.getVisible()) { - var e = t.getClientRect({ relativeTo: h }); - (0 === e.width && 0 === e.height) || - (void 0 === i - ? ((i = e.x), (n = e.y), (a = e.x + e.width), (r = e.y + e.height)) - : ((i = Math.min(i, e.x)), - (n = Math.min(n, e.y)), - (a = Math.max(a, e.x + e.width)), - (r = Math.max(r, e.y + e.height)))); - } - }); - for (var l = this.find('Shape'), c = !1, d = 0; d < l.length; d++) { - if (l[d]._isVisible(this)) { - c = !0; - break; - } - } - return ( - (s = c ? { x: i, y: n, width: a - i, height: r - n } : { x: 0, y: 0, width: 0, height: 0 }), - e ? s : this._transformedRect(s, o) - ); - }, - }), - Konva.Util.extend(Konva.Container, Konva.Node), - (Konva.Container.prototype.get = Konva.Container.prototype.find), - Konva.Factory.addComponentsGetterSetter(Konva.Container, 'clip', ['x', 'y', 'width', 'height']), - Konva.Factory.addGetterSetter(Konva.Container, 'clipX', void 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Container, 'clipY', void 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Container, 'clipWidth', void 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Container, 'clipHeight', void 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Container, 'clipFunc'), - Konva.Collection.mapMethods(Konva.Container); - })(), - (function (g) { - 'use strict'; - var t = 'hasShadow', - e = 'shadowRGBA'; - function n(t) { - t.fill(); - } - function a(t) { - t.stroke(); - } - function r(t) { - t.fill(); - } - function o(t) { - t.stroke(); - } - function s() { - this._clearCache(t); - } - function h() { - this._clearCache(e); - } - (g.Shape = function (t) { - this.__init(t); - }), - g.Util.addMethods(g.Shape, { - __init: function (t) { - (this.nodeType = 'Shape'), - (this._fillFunc = n), - (this._strokeFunc = a), - (this._fillFuncHit = r), - (this._strokeFuncHit = o); - for (var e, i = g.shapes; !(e = g.Util.getRandomColor()) || e in i; ); - (i[(this.colorKey = e)] = this), - g.Node.call(this, t), - this.on( - 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', - s, - ), - this.on('shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', h); - }, - hasChildren: function () { - return !1; - }, - getChildren: function () { - return []; - }, - getContext: function () { - return this.getLayer().getContext(); - }, - getCanvas: function () { - return this.getLayer().getCanvas(); - }, - hasShadow: function () { - return this._getCache(t, this._hasShadow); - }, - _hasShadow: function () { - return ( - this.getShadowEnabled() && - 0 !== this.getShadowOpacity() && - !!(this.getShadowColor() || this.getShadowBlur() || this.getShadowOffsetX() || this.getShadowOffsetY()) - ); - }, - getShadowRGBA: function () { - return this._getCache(e, this._getShadowRGBA); - }, - _getShadowRGBA: function () { - if (this.hasShadow()) { - var t = g.Util.colorToRGBA(this.shadowColor()); - return 'rgba(' + t.r + ',' + t.g + ',' + t.b + ',' + t.a * (this.getShadowOpacity() || 1) + ')'; - } - }, - hasFill: function () { - return !!( - this.getFill() || - this.getFillPatternImage() || - this.getFillLinearGradientColorStops() || - this.getFillRadialGradientColorStops() - ); - }, - hasStroke: function () { - return this.strokeEnabled() && !(!this.stroke() && !this.getStrokeLinearGradientColorStops()); - }, - intersects: function (t) { - var e = this.getStage().bufferHitCanvas; - return ( - e.getContext().clear(), - this.drawHit(e), - 0 < e.context.getImageData(Math.round(t.x), Math.round(t.y), 1, 1).data[3] - ); - }, - destroy: function () { - return g.Node.prototype.destroy.call(this), delete g.shapes[this.colorKey], this; - }, - _useBufferCanvas: function (t) { - return ( - (!t && - this.perfectDrawEnabled() && - 1 !== this.getAbsoluteOpacity() && - this.hasFill() && - this.hasStroke() && - this.getStage()) || - (this.perfectDrawEnabled() && - this.hasShadow() && - 1 !== this.getAbsoluteOpacity() && - this.hasFill() && - this.hasStroke() && - this.getStage()) - ); - }, - getSelfRect: function () { - var t = this.getSize(); - return { - x: this._centroid ? Math.round(-t.width / 2) : 0, - y: this._centroid ? Math.round(-t.height / 2) : 0, - width: t.width, - height: t.height, - }; - }, - getClientRect: function (t) { - var e = (t = t || {}).skipTransform, - i = t.relativeTo, - n = this.getSelfRect(), - a = (this.hasStroke() && this.strokeWidth()) || 0, - r = n.width + a, - o = n.height + a, - s = this.hasShadow() ? this.shadowOffsetX() : 0, - h = this.hasShadow() ? this.shadowOffsetY() : 0, - l = r + Math.abs(s), - c = o + Math.abs(h), - d = (this.hasShadow() && this.shadowBlur()) || 0, - u = l + 2 * d, - g = c + 2 * d, - f = 0; - Math.round(a / 2) !== a / 2 && (f = 1); - var v = { - width: u + f, - height: g + f, - x: -Math.round(a / 2 + d) + Math.min(s, 0) + n.x, - y: -Math.round(a / 2 + d) + Math.min(h, 0) + n.y, - }; - return e ? v : this._transformedRect(v, i); - }, - drawScene: function (t, e, i, n) { - var a, - r, - o = this.getLayer(), - s = t || o.getCanvas(), - h = s.getContext(), - l = this._cache.canvas, - c = this.sceneFunc(), - d = this.hasShadow(), - u = this.hasStroke(); - if (!this.isVisible() && !i) return this; - if (l) return h.save(), o._applyTransform(this, h, e), this._drawCachedSceneCanvas(h), h.restore(), this; - if (!c) return this; - if ((h.save(), this._useBufferCanvas(i) && !n)) { - if (((r = (a = this.getStage().bufferCanvas).getContext()).clear(), r.save(), r._applyLineJoin(this), !i)) - if (o) o._applyTransform(this, r, e); - else { - var g = this.getAbsoluteTransform(e).getMatrix(); - h.transform(g[0], g[1], g[2], g[3], g[4], g[5]); - } - c.call(this, r, this), r.restore(); - var f = a.pixelRatio; - d && !s.hitCanvas - ? (h.save(), - h._applyShadow(this), - h._applyOpacity(this), - h._applyGlobalCompositeOperation(this), - h.drawImage(a._canvas, 0, 0, a.width / f, a.height / f), - h.restore()) - : (h._applyOpacity(this), - h._applyGlobalCompositeOperation(this), - h.drawImage(a._canvas, 0, 0, a.width / f, a.height / f)); - } else { - if ((h._applyLineJoin(this), !i)) - if (o) o._applyTransform(this, h, e); - else { - var v = this.getAbsoluteTransform(e).getMatrix(); - h.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - } - d && u && !s.hitCanvas - ? (h.save(), - i || (h._applyOpacity(this), h._applyGlobalCompositeOperation(this)), - h._applyShadow(this), - c.call(this, h, this), - h.restore(), - this.hasFill() && this.getShadowForStrokeEnabled() && c.call(this, h, this)) - : d && !s.hitCanvas - ? (h.save(), - i || (h._applyOpacity(this), h._applyGlobalCompositeOperation(this)), - h._applyShadow(this), - c.call(this, h, this), - h.restore()) - : (i || (h._applyOpacity(this), h._applyGlobalCompositeOperation(this)), c.call(this, h, this)); - } - return h.restore(), this; - }, - drawHit: function (t, e, i) { - var n = this.getLayer(), - a = t || n.hitCanvas, - r = a.getContext(), - o = this.hitFunc() || this.sceneFunc(), - s = this._cache.canvas, - h = s && s.hit; - if (!this.shouldDrawHit(a) && !i) return this; - if ((n && n.clearHitCache(), h)) - return r.save(), n._applyTransform(this, r, e), this._drawCachedHitCanvas(r), r.restore(), this; - if (!o) return this; - if ((r.save(), r._applyLineJoin(this), !i)) - if (n) n._applyTransform(this, r, e); - else { - var l = this.getAbsoluteTransform(e).getMatrix(); - r.transform(l[0], l[1], l[2], l[3], l[4], l[5]); - } - return o.call(this, r, this), r.restore(), this; - }, - drawHitFromCache: function (t) { - var e, - i, - n, - a, - r, - o = t || 0, - s = this._cache.canvas, - h = this._getCachedSceneCanvas(), - l = s.hit, - c = l.getContext(), - d = l.getWidth(), - u = l.getHeight(); - c.clear(), c.drawImage(h._canvas, 0, 0, d, u); - try { - for ( - n = (i = (e = c.getImageData(0, 0, d, u)).data).length, a = g.Util._hexToRgb(this.colorKey), r = 0; - r < n; - r += 4 - ) - o < i[r + 3] ? ((i[r] = a.r), (i[r + 1] = a.g), (i[r + 2] = a.b), (i[r + 3] = 255)) : (i[r + 3] = 0); - c.putImageData(e, 0, 0); - } catch (t) { - g.Util.error('Unable to draw hit graph from cached scene canvas. ' + t.message); - } - return this; - }, - }), - g.Util.extend(g.Shape, g.Node), - g.Factory.addGetterSetter(g.Shape, 'stroke', void 0, g.Validators.getStringValidator()), - g.Factory.addGetterSetter(g.Shape, 'strokeWidth', 2, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'strokeHitEnabled', !0, g.Validators.getBooleanValidator()), - g.Factory.addGetterSetter(g.Shape, 'perfectDrawEnabled', !0, g.Validators.getBooleanValidator()), - g.Factory.addGetterSetter(g.Shape, 'shadowForStrokeEnabled', !0, g.Validators.getBooleanValidator()), - g.Factory.addGetterSetter(g.Shape, 'lineJoin'), - g.Factory.addGetterSetter(g.Shape, 'lineCap'), - g.Factory.addGetterSetter(g.Shape, 'sceneFunc'), - g.Factory.addGetterSetter(g.Shape, 'hitFunc'), - g.Factory.addGetterSetter(g.Shape, 'dash'), - g.Factory.addGetterSetter(g.Shape, 'dashOffset', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'shadowColor', void 0, g.Validators.getStringValidator()), - g.Factory.addGetterSetter(g.Shape, 'shadowBlur', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'shadowOpacity', 1, g.Validators.getNumberValidator()), - g.Factory.addComponentsGetterSetter(g.Shape, 'shadowOffset', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'shadowOffsetX', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'shadowOffsetY', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillPatternImage'), - g.Factory.addGetterSetter(g.Shape, 'fill', void 0, g.Validators.getStringValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillPatternX', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillPatternY', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillLinearGradientColorStops'), - g.Factory.addGetterSetter(g.Shape, 'strokeLinearGradientColorStops'), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientStartRadius', 0), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientEndRadius', 0), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientColorStops'), - g.Factory.addGetterSetter(g.Shape, 'fillPatternRepeat', 'repeat'), - g.Factory.addGetterSetter(g.Shape, 'fillEnabled', !0), - g.Factory.addGetterSetter(g.Shape, 'strokeEnabled', !0), - g.Factory.addGetterSetter(g.Shape, 'shadowEnabled', !0), - g.Factory.addGetterSetter(g.Shape, 'dashEnabled', !0), - g.Factory.addGetterSetter(g.Shape, 'strokeScaleEnabled', !0), - g.Factory.addGetterSetter(g.Shape, 'fillPriority', 'color'), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillPatternOffset', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillPatternOffsetX', 0, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillPatternOffsetY', 0, g.Validators.getNumberValidator()), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillPatternScale', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillPatternScaleX', 1, g.Validators.getNumberValidator()), - g.Factory.addGetterSetter(g.Shape, 'fillPatternScaleY', 1, g.Validators.getNumberValidator()), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillLinearGradientStartPoint', ['x', 'y']), - g.Factory.addComponentsGetterSetter(g.Shape, 'strokeLinearGradientStartPoint', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillLinearGradientStartPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'strokeLinearGradientStartPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'fillLinearGradientStartPointY', 0), - g.Factory.addGetterSetter(g.Shape, 'strokeLinearGradientStartPointY', 0), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillLinearGradientEndPoint', ['x', 'y']), - g.Factory.addComponentsGetterSetter(g.Shape, 'strokeLinearGradientEndPoint', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillLinearGradientEndPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'strokeLinearGradientEndPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'fillLinearGradientEndPointY', 0), - g.Factory.addGetterSetter(g.Shape, 'strokeLinearGradientEndPointY', 0), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillRadialGradientStartPoint', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientStartPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientStartPointY', 0), - g.Factory.addComponentsGetterSetter(g.Shape, 'fillRadialGradientEndPoint', ['x', 'y']), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientEndPointX', 0), - g.Factory.addGetterSetter(g.Shape, 'fillRadialGradientEndPointY', 0), - g.Factory.addGetterSetter(g.Shape, 'fillPatternRotation', 0), - g.Factory.backCompat(g.Shape, { - dashArray: 'dash', - getDashArray: 'getDash', - setDashArray: 'getDash', - drawFunc: 'sceneFunc', - getDrawFunc: 'getSceneFunc', - setDrawFunc: 'setSceneFunc', - drawHitFunc: 'hitFunc', - getDrawHitFunc: 'getHitFunc', - setDrawHitFunc: 'setHitFunc', - }), - g.Collection.mapMethods(g.Shape); - })(Konva), - (function () { - 'use strict'; - var i = 'mouseout', - n = 'mouseleave', - a = 'mouseover', - r = 'mousemove', - o = 'mousedown', - s = 'mouseup', - h = 'contextmenu', - l = 'dblclick', - c = 'touchstart', - d = 'touchend', - u = 'touchmove', - g = 'wheel', - f = '_', - e = [o, r, s, i, c, u, d, a, g, h], - v = e.length; - function p(e, i) { - e.content.addEventListener( - i, - function (t) { - e[f + i](t); - }, - !1, - ); - } - (Konva.Stage = function (t) { - this.___init(t); - }), - Konva.Util.addMethods(Konva.Stage, { - ___init: function (t) { - (this.nodeType = 'Stage'), - Konva.Container.call(this, t), - (this._id = Konva.idCounter++), - this._buildDOM(), - this._bindContentEvents(), - (this._enableNestedTransforms = !1), - Konva.stages.push(this); - }, - _validateAdd: function (t) { - 'Layer' !== t.getType() && Konva.Util.throw('You may only add layers to the stage.'); - }, - setContainer: function (t) { - if ('string' == typeof t) { - if ('.' === t.charAt(0)) { - var e = t.slice(1); - t = Konva.document.getElementsByClassName(e)[0]; - } else { - var i; - (i = '#' !== t.charAt(0) ? t : t.slice(1)), (t = Konva.document.getElementById(i)); - } - if (!t) throw 'Can not find container in document with id ' + i; - } - return this._setAttr('container', t), this; - }, - shouldDrawHit: function () { - return !0; - }, - draw: function () { - return Konva.Node.prototype.draw.call(this), this; - }, - setHeight: function (t) { - return Konva.Node.prototype.setHeight.call(this, t), this._resizeDOM(), this; - }, - setWidth: function (t) { - return Konva.Node.prototype.setWidth.call(this, t), this._resizeDOM(), this; - }, - clear: function () { - var t, - e = this.children, - i = e.length; - for (t = 0; t < i; t++) e[t].clear(); - return this; - }, - clone: function (t) { - return ( - t || (t = {}), - (t.container = Konva.document.createElement('div')), - Konva.Container.prototype.clone.call(this, t) - ); - }, - destroy: function () { - var t = this.content; - Konva.Container.prototype.destroy.call(this), - t && Konva.Util._isInDocument(t) && this.getContainer().removeChild(t); - var e = Konva.stages.indexOf(this); - return -1 < e && Konva.stages.splice(e, 1), this; - }, - getPointerPosition: function () { - return this.pointerPos; - }, - getStage: function () { - return this; - }, - getContent: function () { - return this.content; - }, - _toKonvaCanvas: function (i) { - var n = (i = i || {}).x || 0, - a = i.y || 0, - t = new Konva.SceneCanvas({ - width: i.width || this.getWidth(), - height: i.height || this.getHeight(), - pixelRatio: i.pixelRatio || 1, - }), - r = t.getContext()._context, - e = this.children; - return ( - (n || a) && r.translate(-1 * n, -1 * a), - e.each(function (t) { - if (t.isVisible()) { - var e = t._toKonvaCanvas(i); - r.drawImage(e._canvas, n, a, e.getWidth() / e.getPixelRatio(), e.getHeight() / e.getPixelRatio()); - } - }), - t - ); - }, - toImage: function (t) { - var e = t.callback; - (t.callback = function (t) { - Konva.Util._getImage(t, function (t) { - e(t); - }); - }), - this.toDataURL(t); - }, - getIntersection: function (t, e) { - var i, - n, - a = this.getChildren(); - for (i = a.length - 1; 0 <= i; i--) if ((n = a[i].getIntersection(t, e))) return n; - return null; - }, - _resizeDOM: function () { - if (this.content) { - var t, - e, - i = this.getWidth(), - n = this.getHeight(), - a = this.getChildren(), - r = a.length; - for ( - this.content.style.width = i + 'px', - this.content.style.height = n + 'px', - this.bufferCanvas.setSize(i, n), - this.bufferHitCanvas.setSize(i, n), - t = 0; - t < r; - t++ - ) - (e = a[t]).setSize(i, n), e.draw(); - } - }, - add: function (t) { - if (1 < arguments.length) { - for (var e = 0; e < arguments.length; e++) this.add(arguments[e]); - return this; - } - return ( - Konva.Container.prototype.add.call(this, t), - t._setCanvasSize(this.width(), this.height()), - t.draw(), - Konva.isBrowser && this.content.appendChild(t.canvas._canvas), - this - ); - }, - getParent: function () { - return null; - }, - getLayer: function () { - return null; - }, - getLayers: function () { - return this.getChildren(); - }, - _bindContentEvents: function () { - if (Konva.isBrowser) for (var t = 0; t < v; t++) p(this, e[t]); - }, - _mouseover: function (t) { - Konva.UA.mobile || (this._setPointerPosition(t), this._fire('contentMouseover', { evt: t })); - }, - _mouseout: function (t) { - if (!Konva.UA.mobile) { - this._setPointerPosition(t); - var e = this.targetShape; - e && - !Konva.isDragging() && - (e._fireAndBubble(i, { evt: t }), e._fireAndBubble(n, { evt: t }), (this.targetShape = null)), - (this.pointerPos = void 0), - this._fire('contentMouseout', { evt: t }); - } - }, - _mousemove: function (t) { - return Konva.UA.ieMobile - ? this._touchmove(t) - : (void 0 === t.movementX && void 0 === t.movementY) || 0 !== t.movementY || 0 !== t.movementX - ? Konva.UA.mobile - ? null - : (this._setPointerPosition(t), - Konva.isDragging() || - ((e = this.getIntersection(this.getPointerPosition())) && e.isListening() - ? Konva.isDragging() || (this.targetShape && this.targetShape._id === e._id) - ? e._fireAndBubble(r, { evt: t }) - : (this.targetShape && - (this.targetShape._fireAndBubble(i, { evt: t }, e), - this.targetShape._fireAndBubble(n, { evt: t }, e)), - e._fireAndBubble(a, { evt: t }, this.targetShape), - e._fireAndBubble('mouseenter', { evt: t }, this.targetShape), - (this.targetShape = e)) - : (this.targetShape && - !Konva.isDragging() && - (this.targetShape._fireAndBubble(i, { evt: t }), - this.targetShape._fireAndBubble(n, { evt: t }), - (this.targetShape = null)), - this._fire(r, { evt: t, target: this, currentTarget: this })), - this._fire('contentMousemove', { evt: t })), - void (t.cancelable && t.preventDefault())) - : null; - var e; - }, - _mousedown: function (t) { - if (Konva.UA.ieMobile) return this._touchstart(t); - if (!Konva.UA.mobile) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()); - (Konva.listenClickTap = !0), - e && e.isListening() - ? (this.clickStartShape = e)._fireAndBubble(o, { evt: t }) - : this._fire(o, { evt: t, target: this, currentTarget: this }), - this._fire('contentMousedown', { evt: t }); - } - }, - _mouseup: function (t) { - if (Konva.UA.ieMobile) return this._touchend(t); - if (!Konva.UA.mobile) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()), - i = this.clickStartShape, - n = this.clickEndShape, - a = !1, - r = Konva.DD; - Konva.inDblClickWindow - ? ((a = !0), clearTimeout(this.dblTimeout)) - : r && r.justDragged - ? r && (r.justDragged = !1) - : ((Konva.inDblClickWindow = !0), clearTimeout(this.dblTimeout)), - (this.dblTimeout = setTimeout(function () { - Konva.inDblClickWindow = !1; - }, Konva.dblClickWindow)), - e && e.isListening() - ? ((this.clickEndShape = e)._fireAndBubble(s, { evt: t }), - Konva.listenClickTap && - i && - i._id === e._id && - (e._fireAndBubble('click', { evt: t }), - a && n && n._id === e._id && e._fireAndBubble(l, { evt: t }))) - : (this._fire(s, { evt: t, target: this, currentTarget: this }), - Konva.listenClickTap && this._fire('click', { evt: t, target: this, currentTarget: this }), - a && this._fire(l, { evt: t, target: this, currentTarget: this })), - this._fire('contentMouseup', { evt: t }), - Konva.listenClickTap && - (this._fire('contentClick', { evt: t }), a && this._fire('contentDblclick', { evt: t })), - (Konva.listenClickTap = !1); - } - t.cancelable && t.preventDefault(); - }, - _contextmenu: function (t) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()); - e && e.isListening() - ? e._fireAndBubble(h, { evt: t }) - : this._fire(h, { evt: t, target: this, currentTarget: this }), - this._fire('contentContextmenu', { evt: t }); - }, - _touchstart: function (t) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()); - (Konva.listenClickTap = !0), - e && e.isListening() - ? ((this.tapStartShape = e)._fireAndBubble(c, { evt: t }), - e.isListening() && e.preventDefault() && t.cancelable && t.preventDefault()) - : this._fire(c, { evt: t, target: this, currentTarget: this }), - this._fire('contentTouchstart', { evt: t }); - }, - _touchend: function (t) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()), - i = !1; - Konva.inDblClickWindow ? (i = !0) : (Konva.inDblClickWindow = !0), - clearTimeout(this.dblTimeout), - (this.dblTimeout = setTimeout(function () { - Konva.inDblClickWindow = !1; - }, Konva.dblClickWindow)), - e && e.isListening() - ? (e._fireAndBubble(d, { evt: t }), - Konva.listenClickTap && - this.tapStartShape && - e._id === this.tapStartShape._id && - (e._fireAndBubble('tap', { evt: t }), i && e._fireAndBubble('dbltap', { evt: t })), - e.isListening() && e.preventDefault() && t.cancelable && t.preventDefault()) - : (this._fire(d, { evt: t, target: this, currentTarget: this }), - Konva.listenClickTap && this._fire('tap', { evt: t, target: this, currentTarget: this }), - i && this._fire('dbltap', { evt: t, target: this, currentTarget: this })), - this._fire('contentTouchend', { evt: t }), - Konva.listenClickTap && - (this._fire('contentTap', { evt: t }), i && this._fire('contentDbltap', { evt: t })), - (Konva.listenClickTap = !1); - }, - _touchmove: function (t) { - this._setPointerPosition(t); - var e, - i = Konva.DD; - Konva.isDragging() || - ((e = this.getIntersection(this.getPointerPosition())) && e.isListening() - ? (e._fireAndBubble(u, { evt: t }), - e.isListening() && e.preventDefault() && t.cancelable && t.preventDefault()) - : this._fire(u, { evt: t, target: this, currentTarget: this }), - this._fire('contentTouchmove', { evt: t })), - i && Konva.isDragging() && Konva.DD.node.preventDefault() && t.cancelable && t.preventDefault(); - }, - _wheel: function (t) { - this._setPointerPosition(t); - var e = this.getIntersection(this.getPointerPosition()); - e && e.isListening() - ? e._fireAndBubble(g, { evt: t }) - : this._fire(g, { evt: t, target: this, currentTarget: this }), - this._fire('contentWheel', { evt: t }); - }, - _setPointerPosition: function (t) { - var e = this._getContentPosition(), - i = null, - n = null; - if (void 0 !== (t = t || window.event).touches) { - if (0 < t.touches.length) { - var a = t.touches[0]; - (i = a.clientX - e.left), (n = a.clientY - e.top); - } - } else (i = t.clientX - e.left), (n = t.clientY - e.top); - null !== i && null !== n && (this.pointerPos = { x: i, y: n }); - }, - _getContentPosition: function () { - var t = this.content.getBoundingClientRect ? this.content.getBoundingClientRect() : { top: 0, left: 0 }; - return { top: t.top, left: t.left }; - }, - _buildDOM: function () { - if ( - ((this.bufferCanvas = new Konva.SceneCanvas()), - (this.bufferHitCanvas = new Konva.HitCanvas({ pixelRatio: 1 })), - Konva.isBrowser) - ) { - var t = this.getContainer(); - if (!t) throw 'Stage has no container. A container is required.'; - (t.innerHTML = ''), - (this.content = Konva.document.createElement('div')), - (this.content.style.position = 'relative'), - (this.content.style.userSelect = 'none'), - (this.content.className = 'konvajs-content'), - this.content.setAttribute('role', 'presentation'), - t.appendChild(this.content), - this._resizeDOM(); - } - }, - _onContent: function (t, e) { - var i, - n, - a = t.split(' '), - r = a.length; - for (i = 0; i < r; i++) (n = a[i]), this.content.addEventListener(n, e, !1); - }, - cache: function () { - Konva.Util.warn( - 'Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.', - ); - }, - clearCache: function () {}, - }), - Konva.Util.extend(Konva.Stage, Konva.Container), - Konva.Factory.addGetter(Konva.Stage, 'container'), - Konva.Factory.addOverloadedGetterSetter(Konva.Stage, 'container'); - })(), - (function (i) { - 'use strict'; - (i.BaseLayer = function (t) { - this.___init(t); - }), - i.Util.addMethods(i.BaseLayer, { - ___init: function (t) { - (this.nodeType = 'Layer'), i.Container.call(this, t); - }, - createPNGStream: function () { - return this.canvas._canvas.createPNGStream(); - }, - getCanvas: function () { - return this.canvas; - }, - getHitCanvas: function () { - return this.hitCanvas; - }, - getContext: function () { - return this.getCanvas().getContext(); - }, - clear: function (t) { - return this.getContext().clear(t), this; - }, - clearHitCache: function () { - this._hitImageData = void 0; - }, - setZIndex: function (t) { - i.Node.prototype.setZIndex.call(this, t); - var e = this.getStage(); - return ( - e && - (e.content.removeChild(this.getCanvas()._canvas), - t < e.getChildren().length - 1 - ? e.content.insertBefore(this.getCanvas()._canvas, e.getChildren()[t + 1].getCanvas()._canvas) - : e.content.appendChild(this.getCanvas()._canvas)), - this - ); - }, - moveToTop: function () { - i.Node.prototype.moveToTop.call(this); - var t = this.getStage(); - return ( - t && (t.content.removeChild(this.getCanvas()._canvas), t.content.appendChild(this.getCanvas()._canvas)), - this - ); - }, - moveUp: function () { - if (!i.Node.prototype.moveUp.call(this)) return this; - var t = this.getStage(); - return ( - t && - (t.content.removeChild(this.getCanvas()._canvas), - this.index < t.getChildren().length - 1 - ? t.content.insertBefore(this.getCanvas()._canvas, t.getChildren()[this.index + 1].getCanvas()._canvas) - : t.content.appendChild(this.getCanvas()._canvas)), - this - ); - }, - moveDown: function () { - if (i.Node.prototype.moveDown.call(this)) { - var t = this.getStage(); - if (t) { - var e = t.getChildren(); - t.content.removeChild(this.getCanvas()._canvas), - t.content.insertBefore(this.getCanvas()._canvas, e[this.index + 1].getCanvas()._canvas); - } - } - return this; - }, - moveToBottom: function () { - if (i.Node.prototype.moveToBottom.call(this)) { - var t = this.getStage(); - if (t) { - var e = t.getChildren(); - t.content.removeChild(this.getCanvas()._canvas), - t.content.insertBefore(this.getCanvas()._canvas, e[1].getCanvas()._canvas); - } - } - return this; - }, - getLayer: function () { - return this; - }, - remove: function () { - var t = this.getCanvas()._canvas; - return ( - i.Node.prototype.remove.call(this), - t && t.parentNode && i.Util._isInDocument(t) && t.parentNode.removeChild(t), - this - ); - }, - getStage: function () { - return this.parent; - }, - setSize: function (t, e) { - return this.canvas.setSize(t, e), this; - }, - _toKonvaCanvas: function (t) { - return ( - ((t = t || {}).width = t.width || this.getWidth()), - (t.height = t.height || this.getHeight()), - (t.x = void 0 !== t.x ? t.x : this.getX()), - (t.y = void 0 !== t.y ? t.y : this.getY()), - i.Node.prototype._toKonvaCanvas.call(this, t) - ); - }, - getWidth: function () { - if (this.parent) return this.parent.getWidth(); - }, - setWidth: function () { - i.Util.warn('Can not change width of layer. Use "stage.width(value)" function instead.'); - }, - getHeight: function () { - if (this.parent) return this.parent.getHeight(); - }, - setHeight: function () { - i.Util.warn('Can not change height of layer. Use "stage.height(value)" function instead.'); - }, - _applyTransform: function (t, e, i) { - var n = t.getAbsoluteTransform(i).getMatrix(); - e.transform(n[0], n[1], n[2], n[3], n[4], n[5]); - }, - }), - i.Util.extend(i.BaseLayer, i.Container), - i.Factory.addGetterSetter(i.BaseLayer, 'clearBeforeDraw', !0), - i.Collection.mapMethods(i.BaseLayer); - })(Konva), - (function () { - 'use strict'; - var h = [ - { x: 0, y: 0 }, - { x: -1, y: -1 }, - { x: 1, y: -1 }, - { x: 1, y: 1 }, - { x: -1, y: 1 }, - ], - l = h.length; - (Konva.Layer = function (t) { - this.____init(t); - }), - Konva.Util.addMethods(Konva.Layer, { - ____init: function (t) { - (this.nodeType = 'Layer'), - (this.canvas = new Konva.SceneCanvas()), - (this.hitCanvas = new Konva.HitCanvas({ pixelRatio: 1 })), - Konva.BaseLayer.call(this, t); - }, - _setCanvasSize: function (t, e) { - this.canvas.setSize(t, e), this.hitCanvas.setSize(t, e); - }, - _validateAdd: function (t) { - var e = t.getType(); - 'Group' !== e && 'Shape' !== e && Konva.Util.throw('You may only add groups and shapes to a layer.'); - }, - getIntersection: function (t, e) { - var i, n, a, r; - if (!this.hitGraphEnabled() || !this.isVisible()) return null; - for (var o = 1, s = !1; ; ) { - for (n = 0; n < l; n++) { - if (((a = h[n]), (r = (i = this._getIntersection({ x: t.x + a.x * o, y: t.y + a.y * o })).shape) && e)) - return r.findAncestor(e, !0); - if (r) return r; - if (((s = !!i.antialiased), !i.antialiased)) break; - } - if (!s) return null; - o += 1; - } - }, - _getImageData: function (t, e) { - var i = this.hitCanvas.width || 1, - n = this.hitCanvas.height || 1, - a = Math.round(e) * i + Math.round(t); - return ( - this._hitImageData || (this._hitImageData = this.hitCanvas.context.getImageData(0, 0, i, n)), - [ - this._hitImageData.data[4 * a + 0], - this._hitImageData.data[4 * a + 1], - this._hitImageData.data[4 * a + 2], - this._hitImageData.data[4 * a + 3], - ] - ); - }, - _getIntersection: function (t) { - var e, - i, - n = this.hitCanvas.pixelRatio, - a = this.hitCanvas.context.getImageData(Math.round(t.x * n), Math.round(t.y * n), 1, 1).data, - r = a[3]; - return 255 === r - ? ((e = Konva.Util._rgbToHex(a[0], a[1], a[2])), - (i = Konva.shapes['#' + e]) ? { shape: i } : { antialiased: !0 }) - : 0 < r - ? { antialiased: !0 } - : {}; - }, - drawScene: function (t, e) { - var i = this.getLayer(), - n = t || (i && i.getCanvas()); - return ( - this._fire('beforeDraw', { node: this }), - this.getClearBeforeDraw() && n.getContext().clear(), - Konva.Container.prototype.drawScene.call(this, n, e), - this._fire('draw', { node: this }), - this - ); - }, - drawHit: function (t, e) { - var i = this.getLayer(), - n = t || (i && i.hitCanvas); - return ( - i && i.getClearBeforeDraw() && i.getHitCanvas().getContext().clear(), - Konva.Container.prototype.drawHit.call(this, n, e), - (this.imageData = null), - this - ); - }, - clear: function (t) { - return ( - Konva.BaseLayer.prototype.clear.call(this, t), - this.getHitCanvas().getContext().clear(t), - (this.imageData = null), - this - ); - }, - setVisible: function (t) { - return ( - Konva.Node.prototype.setVisible.call(this, t), - t - ? ((this.getCanvas()._canvas.style.display = 'block'), (this.hitCanvas._canvas.style.display = 'block')) - : ((this.getCanvas()._canvas.style.display = 'none'), (this.hitCanvas._canvas.style.display = 'none')), - this - ); - }, - enableHitGraph: function () { - return this.setHitGraphEnabled(!0), this; - }, - disableHitGraph: function () { - return this.setHitGraphEnabled(!1), this; - }, - setSize: function (t, e) { - return Konva.BaseLayer.prototype.setSize.call(this, t, e), this.hitCanvas.setSize(t, e), this; - }, - }), - Konva.Util.extend(Konva.Layer, Konva.BaseLayer), - Konva.Factory.addGetterSetter(Konva.Layer, 'hitGraphEnabled', !0), - Konva.Collection.mapMethods(Konva.Layer); - })(), - (function () { - 'use strict'; - (Konva.FastLayer = function (t) { - this.____init(t); - }), - Konva.Util.addMethods(Konva.FastLayer, { - ____init: function (t) { - (this.nodeType = 'Layer'), (this.canvas = new Konva.SceneCanvas()), Konva.BaseLayer.call(this, t); - }, - _validateAdd: function (t) { - 'Shape' !== t.getType() && Konva.Util.throw('You may only add shapes to a fast layer.'); - }, - _setCanvasSize: function (t, e) { - this.canvas.setSize(t, e); - }, - hitGraphEnabled: function () { - return !1; - }, - getIntersection: function () { - return null; - }, - drawScene: function (t) { - var e = this.getLayer(), - i = t || (e && e.getCanvas()); - return ( - this.getClearBeforeDraw() && i.getContext().clear(), Konva.Container.prototype.drawScene.call(this, i), this - ); - }, - draw: function () { - return this.drawScene(), this; - }, - setVisible: function (t) { - return ( - Konva.Node.prototype.setVisible.call(this, t), - (this.getCanvas()._canvas.style.display = t ? 'block' : 'none'), - this - ); - }, - }), - Konva.Util.extend(Konva.FastLayer, Konva.BaseLayer), - Konva.Collection.mapMethods(Konva.FastLayer); - })(), - (function () { - 'use strict'; - (Konva.Group = function (t) { - this.___init(t); - }), - Konva.Util.addMethods(Konva.Group, { - ___init: function (t) { - (this.nodeType = 'Group'), Konva.Container.call(this, t); - }, - _validateAdd: function (t) { - var e = t.getType(); - 'Group' !== e && 'Shape' !== e && Konva.Util.throw('You may only add groups and shapes to groups.'); - }, - }), - Konva.Util.extend(Konva.Group, Konva.Container), - Konva.Collection.mapMethods(Konva.Group); - })(), - (function (n) { - 'use strict'; - var c = - n.global.performance && n.global.performance.now - ? function () { - return n.global.performance.now(); - } - : function () { - return new Date().getTime(); - }; - function t(t) { - setTimeout(t, 1e3 / 60); - } - var e = - n.global.requestAnimationFrame || - n.global.webkitRequestAnimationFrame || - n.global.mozRequestAnimationFrame || - n.global.oRequestAnimationFrame || - n.global.msRequestAnimationFrame || - t; - function i() { - return e.apply(n.global, arguments); - } - (n.Animation = function (t, e) { - var i = n.Animation; - (this.func = t), - this.setLayers(e), - (this.id = i.animIdCounter++), - (this.frame = { time: 0, timeDiff: 0, lastTime: c() }); - }), - (n.Animation.prototype = { - setLayers: function (t) { - var e = []; - return (e = t ? (0 < t.length ? t : [t]) : []), (this.layers = e), this; - }, - getLayers: function () { - return this.layers; - }, - addLayer: function (t) { - var e, - i = this.layers, - n = i.length; - for (e = 0; e < n; e++) if (i[e]._id === t._id) return !1; - return this.layers.push(t), !0; - }, - isRunning: function () { - var t, - e = n.Animation.animations, - i = e.length; - for (t = 0; t < i; t++) if (e[t].id === this.id) return !0; - return !1; - }, - start: function () { - var t = n.Animation; - return this.stop(), (this.frame.timeDiff = 0), (this.frame.lastTime = c()), t._addAnimation(this), this; - }, - stop: function () { - return n.Animation._removeAnimation(this), this; - }, - _updateFrameObject: function (t) { - (this.frame.timeDiff = t - this.frame.lastTime), - (this.frame.lastTime = t), - (this.frame.time += this.frame.timeDiff), - (this.frame.frameRate = 1e3 / this.frame.timeDiff); - }, - }), - (n.Animation.animations = []), - (n.Animation.animIdCounter = 0), - (n.Animation.animRunning = !1), - (n.Animation._addAnimation = function (t) { - this.animations.push(t), this._handleAnimation(); - }), - (n.Animation._removeAnimation = function (t) { - var e, - i = t.id, - n = this.animations, - a = n.length; - for (e = 0; e < a; e++) - if (n[e].id === i) { - this.animations.splice(e, 1); - break; - } - }), - (n.Animation._runFrames = function () { - var t, - e, - i, - n, - a, - r, - o, - s, - h = {}, - l = this.animations; - for (n = 0; n < l.length; n++) - if ( - ((e = (t = l[n]).layers), - (i = t.func), - t._updateFrameObject(c()), - (r = e.length), - !i || !1 !== i.call(t, t.frame)) - ) - for (a = 0; a < r; a++) void 0 !== (o = e[a])._id && (h[o._id] = o); - for (s in h) h.hasOwnProperty(s) && h[s].draw(); - }), - (n.Animation._animationLoop = function () { - var t = n.Animation; - t.animations.length ? (t._runFrames(), i(t._animationLoop)) : (t.animRunning = !1); - }), - (n.Animation._handleAnimation = function () { - this.animRunning || ((this.animRunning = !0), i(this._animationLoop)); - }), - (n.BaseLayer.prototype.batchDraw = function () { - var t = this, - e = n.Animation; - return ( - this.batchAnim || - (this.batchAnim = new e(function () { - t.batchAnim.stop(); - }, this)), - this.batchAnim.isRunning() || this.batchAnim.start(), - this - ); - }), - (n.Stage.prototype.batchDraw = function () { - return ( - this.getChildren().each(function (t) { - t.batchDraw(); - }), - this - ); - }); - })(Konva), - (function () { - 'use strict'; - var l = { node: 1, duration: 1, easing: 1, onFinish: 1, yoyo: 1 }, - c = 0, - g = ['fill', 'stroke', 'shadowColor'], - d = function (t, e, i, n, a, r, o) { - (this.prop = t), - (this.propFunc = e), - (this.begin = n), - (this._pos = n), - (this.duration = r), - (this._change = 0), - (this.prevPos = 0), - (this.yoyo = o), - (this._time = 0), - (this._position = 0), - (this._startTime = 0), - (this._finish = 0), - (this.func = i), - (this._change = a - this.begin), - this.pause(); - }; - (d.prototype = { - fire: function (t) { - var e = this[t]; - e && e(); - }, - setTime: function (t) { - t > this.duration - ? this.yoyo - ? ((this._time = this.duration), this.reverse()) - : this.finish() - : t < 0 - ? this.yoyo - ? ((this._time = 0), this.play()) - : this.reset() - : ((this._time = t), this.update()); - }, - getTime: function () { - return this._time; - }, - setPosition: function (t) { - (this.prevPos = this._pos), this.propFunc(t), (this._pos = t); - }, - getPosition: function (t) { - return void 0 === t && (t = this._time), this.func(t, this.begin, this._change, this.duration); - }, - play: function () { - (this.state = 2), (this._startTime = this.getTimer() - this._time), this.onEnterFrame(), this.fire('onPlay'); - }, - reverse: function () { - (this.state = 3), - (this._time = this.duration - this._time), - (this._startTime = this.getTimer() - this._time), - this.onEnterFrame(), - this.fire('onReverse'); - }, - seek: function (t) { - this.pause(), (this._time = t), this.update(), this.fire('onSeek'); - }, - reset: function () { - this.pause(), (this._time = 0), this.update(), this.fire('onReset'); - }, - finish: function () { - this.pause(), (this._time = this.duration), this.update(), this.fire('onFinish'); - }, - update: function () { - this.setPosition(this.getPosition(this._time)); - }, - onEnterFrame: function () { - var t = this.getTimer() - this._startTime; - 2 === this.state ? this.setTime(t) : 3 === this.state && this.setTime(this.duration - t); - }, - pause: function () { - (this.state = 1), this.fire('onPause'); - }, - getTimer: function () { - return new Date().getTime(); - }, - }), - (Konva.Tween = function (t) { - var e, - i, - n = this, - a = t.node, - r = a._id, - o = t.easing || Konva.Easings.Linear, - s = !!t.yoyo; - (e = void 0 === t.duration ? 0.3 : 0 === t.duration ? 0.001 : t.duration), (this.node = a), (this._id = c++); - var h = a.getLayer() || (a instanceof Konva.Stage ? a.getLayers() : null); - for (i in (h || - Konva.Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.'), - (this.anim = new Konva.Animation(function () { - n.tween.onEnterFrame(); - }, h)), - (this.tween = new d( - i, - function (t) { - n._tweenFunc(t); - }, - o, - 0, - 1, - 1e3 * e, - s, - )), - this._addListeners(), - Konva.Tween.attrs[r] || (Konva.Tween.attrs[r] = {}), - Konva.Tween.attrs[r][this._id] || (Konva.Tween.attrs[r][this._id] = {}), - Konva.Tween.tweens[r] || (Konva.Tween.tweens[r] = {}), - t)) - void 0 === l[i] && this._addAttr(i, t[i]); - this.reset(), (this.onFinish = t.onFinish), (this.onReset = t.onReset); - }), - (Konva.Tween.attrs = {}), - (Konva.Tween.tweens = {}), - (Konva.Tween.prototype = { - _addAttr: function (t, e) { - var i, - n, - a, - r, - o, - s, - h, - l, - c = this.node, - d = c._id; - if ( - ((a = Konva.Tween.tweens[d][t]) && delete Konva.Tween.attrs[d][a][t], - (i = c.getAttr(t)), - Konva.Util._isArray(e)) - ) - if ( - ((n = []), - (o = Math.max(e.length, i.length)), - 'points' === t && - e.length !== i.length && - (e.length > i.length - ? ((h = i), (i = Konva.Util._prepareArrayForTween(i, e, c.closed()))) - : ((s = e), (e = Konva.Util._prepareArrayForTween(e, i, c.closed())))), - 0 === t.indexOf('fill')) - ) - for (r = 0; r < o; r++) - if (r % 2 == 0) n.push(e[r] - i[r]); - else { - var u = Konva.Util.colorToRGBA(i[r]); - (l = Konva.Util.colorToRGBA(e[r])), - (i[r] = u), - n.push({ r: l.r - u.r, g: l.g - u.g, b: l.b - u.b, a: l.a - u.a }); - } - else for (r = 0; r < o; r++) n.push(e[r] - i[r]); - else - -1 !== g.indexOf(t) - ? ((i = Konva.Util.colorToRGBA(i)), - (n = { r: (l = Konva.Util.colorToRGBA(e)).r - i.r, g: l.g - i.g, b: l.b - i.b, a: l.a - i.a })) - : (n = e - i); - (Konva.Tween.attrs[d][this._id][t] = { start: i, diff: n, end: e, trueEnd: s, trueStart: h }), - (Konva.Tween.tweens[d][t] = this._id); - }, - _tweenFunc: function (t) { - var e, - i, - n, - a, - r, - o, - s, - h, - l = this.node, - c = Konva.Tween.attrs[l._id][this._id]; - for (e in c) { - if (((n = (i = c[e]).start), (a = i.diff), (h = i.end), Konva.Util._isArray(n))) - if (((r = []), (s = Math.max(n.length, h.length)), 0 === e.indexOf('fill'))) - for (o = 0; o < s; o++) - o % 2 == 0 - ? r.push((n[o] || 0) + a[o] * t) - : r.push( - 'rgba(' + - Math.round(n[o].r + a[o].r * t) + - ',' + - Math.round(n[o].g + a[o].g * t) + - ',' + - Math.round(n[o].b + a[o].b * t) + - ',' + - (n[o].a + a[o].a * t) + - ')', - ); - else for (o = 0; o < s; o++) r.push((n[o] || 0) + a[o] * t); - else - r = - -1 !== g.indexOf(e) - ? 'rgba(' + - Math.round(n.r + a.r * t) + - ',' + - Math.round(n.g + a.g * t) + - ',' + - Math.round(n.b + a.b * t) + - ',' + - (n.a + a.a * t) + - ')' - : n + a * t; - l.setAttr(e, r); - } - }, - _addListeners: function () { - var i = this; - (this.tween.onPlay = function () { - i.anim.start(); - }), - (this.tween.onReverse = function () { - i.anim.start(); - }), - (this.tween.onPause = function () { - i.anim.stop(); - }), - (this.tween.onFinish = function () { - var t = i.node, - e = Konva.Tween.attrs[t._id][i._id]; - e.points && e.points.trueEnd && t.points(e.points.trueEnd), i.onFinish && i.onFinish.call(i); - }), - (this.tween.onReset = function () { - var t = i.node, - e = Konva.Tween.attrs[t._id][i._id]; - e.points && e.points.trueStart && t.points(e.points.trueStart), i.onReset && i.onReset(); - }); - }, - play: function () { - return this.tween.play(), this; - }, - reverse: function () { - return this.tween.reverse(), this; - }, - reset: function () { - return this.tween.reset(), this; - }, - seek: function (t) { - return this.tween.seek(1e3 * t), this; - }, - pause: function () { - return this.tween.pause(), this; - }, - finish: function () { - return this.tween.finish(), this; - }, - destroy: function () { - var t, - e = this.node._id, - i = this._id, - n = Konva.Tween.tweens[e]; - for (t in (this.pause(), n)) delete Konva.Tween.tweens[e][t]; - delete Konva.Tween.attrs[e][i]; - }, - }), - (Konva.Node.prototype.to = function (t) { - var e = t.onFinish; - (t.node = this), - (t.onFinish = function () { - this.destroy(), e && e(); - }), - new Konva.Tween(t).play(); - }), - (Konva.Easings = { - BackEaseIn: function (t, e, i, n) { - return i * (t /= n) * t * (2.70158 * t - 1.70158) + e; - }, - BackEaseOut: function (t, e, i, n) { - return i * ((t = t / n - 1) * t * (2.70158 * t + 1.70158) + 1) + e; - }, - BackEaseInOut: function (t, e, i, n) { - var a = 1.70158; - return (t /= n / 2) < 1 - ? (i / 2) * (t * t * ((1 + (a *= 1.525)) * t - a)) + e - : (i / 2) * ((t -= 2) * t * ((1 + (a *= 1.525)) * t + a) + 2) + e; - }, - ElasticEaseIn: function (t, e, i, n, a, r) { - var o = 0; - return 0 === t - ? e - : 1 == (t /= n) - ? e + i - : (r || (r = 0.3 * n), - !a || a < Math.abs(i) ? ((a = i), (o = r / 4)) : (o = (r / (2 * Math.PI)) * Math.asin(i / a)), - -a * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t * n - o) * (2 * Math.PI)) / r) + e); - }, - ElasticEaseOut: function (t, e, i, n, a, r) { - var o = 0; - return 0 === t - ? e - : 1 == (t /= n) - ? e + i - : (r || (r = 0.3 * n), - !a || a < Math.abs(i) ? ((a = i), (o = r / 4)) : (o = (r / (2 * Math.PI)) * Math.asin(i / a)), - a * Math.pow(2, -10 * t) * Math.sin(((t * n - o) * (2 * Math.PI)) / r) + i + e); - }, - ElasticEaseInOut: function (t, e, i, n, a, r) { - var o = 0; - return 0 === t - ? e - : 2 == (t /= n / 2) - ? e + i - : (r || (r = n * (0.3 * 1.5)), - !a || a < Math.abs(i) ? ((a = i), (o = r / 4)) : (o = (r / (2 * Math.PI)) * Math.asin(i / a)), - t < 1 - ? a * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t * n - o) * (2 * Math.PI)) / r) * -0.5 + e - : a * Math.pow(2, -10 * (t -= 1)) * Math.sin(((t * n - o) * (2 * Math.PI)) / r) * 0.5 + i + e); - }, - BounceEaseOut: function (t, e, i, n) { - return (t /= n) < 1 / 2.75 - ? i * (7.5625 * t * t) + e - : t < 2 / 2.75 - ? i * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + e - : t < 2.5 / 2.75 - ? i * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + e - : i * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + e; - }, - BounceEaseIn: function (t, e, i, n) { - return i - Konva.Easings.BounceEaseOut(n - t, 0, i, n) + e; - }, - BounceEaseInOut: function (t, e, i, n) { - return t < n / 2 - ? 0.5 * Konva.Easings.BounceEaseIn(2 * t, 0, i, n) + e - : 0.5 * Konva.Easings.BounceEaseOut(2 * t - n, 0, i, n) + 0.5 * i + e; - }, - EaseIn: function (t, e, i, n) { - return i * (t /= n) * t + e; - }, - EaseOut: function (t, e, i, n) { - return -i * (t /= n) * (t - 2) + e; - }, - EaseInOut: function (t, e, i, n) { - return (t /= n / 2) < 1 ? (i / 2) * t * t + e : (-i / 2) * (--t * (t - 2) - 1) + e; - }, - StrongEaseIn: function (t, e, i, n) { - return i * (t /= n) * t * t * t * t + e; - }, - StrongEaseOut: function (t, e, i, n) { - return i * ((t = t / n - 1) * t * t * t * t + 1) + e; - }, - StrongEaseInOut: function (t, e, i, n) { - return (t /= n / 2) < 1 ? (i / 2) * t * t * t * t * t + e : (i / 2) * ((t -= 2) * t * t * t * t + 2) + e; - }, - Linear: function (t, e, i, n) { - return (i * t) / n + e; - }, - }); - })(), - (function () { - 'use strict'; - (Konva.DD = { - anim: new Konva.Animation(function () { - var t = this.dirty; - return (this.dirty = !1), t; - }), - isDragging: !1, - justDragged: !1, - offset: { x: 0, y: 0 }, - node: null, - _drag: function (t) { - var e = Konva.DD, - i = e.node; - if (i) { - if (!e.isDragging) { - var n = i.getStage().getPointerPosition(); - n || (i.getStage()._setPointerPosition(t), (n = i.getStage().getPointerPosition())); - var a = i.dragDistance(); - if (Math.max(Math.abs(n.x - e.startPointerPos.x), Math.abs(n.y - e.startPointerPos.y)) < a) return; - } - i.getStage()._setPointerPosition(t), - i._setDragPosition(t), - e.isDragging || ((e.isDragging = !0), i.fire('dragstart', { type: 'dragstart', target: i, evt: t }, !0)), - i.fire('dragmove', { type: 'dragmove', target: i, evt: t }, !0); - } - }, - _endDragBefore: function (t) { - var e, - i = Konva.DD, - n = i.node; - n && - ((e = n.getLayer()), - i.anim.stop(), - i.isDragging && - ((i.isDragging = !1), (i.justDragged = !0), (Konva.listenClickTap = !1), t && (t.dragEndNode = n)), - delete i.node, - (n.getLayer() || e || n instanceof Konva.Stage) && (e || n).draw()); - }, - _endDragAfter: function (t) { - var e = (t = t || {}).dragEndNode; - t && e && e.fire('dragend', { type: 'dragend', target: e, evt: t }, !0); - }, - }), - (Konva.Node.prototype.startDrag = function () { - var t = Konva.DD, - e = this.getStage(), - i = this.getLayer(), - n = e.getPointerPosition(), - a = this.getAbsolutePosition(); - n && - (t.node && t.node.stopDrag(), - (t.node = this), - (t.startPointerPos = n), - (t.offset.x = n.x - a.x), - (t.offset.y = n.y - a.y), - t.anim.setLayers(i || this.getLayers()), - t.anim.start(), - this._setDragPosition()); - }), - (Konva.Node.prototype._setDragPosition = function (t) { - var e = Konva.DD, - i = this.getStage().getPointerPosition(), - n = this.getDragBoundFunc(); - if (i) { - var a = { x: i.x - e.offset.x, y: i.y - e.offset.y }; - void 0 !== n && (a = n.call(this, a, t)), - this.setAbsolutePosition(a), - (this._lastPos && this._lastPos.x === a.x && this._lastPos.y === a.y) || (e.anim.dirty = !0), - (this._lastPos = a); - } - }), - (Konva.Node.prototype.stopDrag = function () { - var t = Konva.DD, - e = {}; - t._endDragBefore(e), t._endDragAfter(e); - }), - (Konva.Node.prototype.setDraggable = function (t) { - this._setAttr('draggable', t), this._dragChange(); - }); - var e = Konva.Node.prototype.remove; - (Konva.Node.prototype.__originalRemove = e), - (Konva.Node.prototype.remove = function () { - var t = Konva.DD; - t.node && t.node._id === this._id && this.stopDrag(), e.call(this); - }), - (Konva.Node.prototype.isDragging = function () { - var t = Konva.DD; - return !(!t.node || t.node._id !== this._id || !t.isDragging); - }), - (Konva.Node.prototype._listenDrag = function () { - var e = this; - this._dragCleanup(), - 'Stage' === this.getClassName() - ? this.on('contentMousedown.konva contentTouchstart.konva', function (t) { - Konva.DD.node || e.startDrag(t); - }) - : this.on('mousedown.konva touchstart.konva', function (t) { - 1 !== t.evt.button && 2 !== t.evt.button && (Konva.DD.node || e.startDrag(t)); - }); - }), - (Konva.Node.prototype._dragChange = function () { - if (this.attrs.draggable) this._listenDrag(); - else { - this._dragCleanup(); - var t = this.getStage(), - e = Konva.DD; - t && e.node && e.node._id === this._id && e.node.stopDrag(); - } - }), - (Konva.Node.prototype._dragCleanup = function () { - 'Stage' === this.getClassName() - ? (this.off('contentMousedown.konva'), this.off('contentTouchstart.konva')) - : (this.off('mousedown.konva'), this.off('touchstart.konva')); - }), - Konva.Factory.addGetterSetter(Konva.Node, 'dragBoundFunc'), - Konva.Factory.addGetter(Konva.Node, 'draggable', !1), - Konva.Factory.addOverloadedGetterSetter(Konva.Node, 'draggable'), - Konva.isBrowser && - (window.addEventListener('mouseup', Konva.DD._endDragBefore, !0), - window.addEventListener('touchend', Konva.DD._endDragBefore, !0), - window.addEventListener('mousemove', Konva.DD._drag), - window.addEventListener('touchmove', Konva.DD._drag), - window.addEventListener('mouseup', Konva.DD._endDragAfter, !1), - window.addEventListener('touchend', Konva.DD._endDragAfter, !1)); - })(), - (function () { - 'use strict'; - (Konva.Rect = function (t) { - this.___init(t); - }), - (Konva.Rect.prototype = { - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Rect'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = this.getCornerRadius(), - i = this.getWidth(), - n = this.getHeight(); - t.beginPath(), - e - ? ((e = Math.min(e, i / 2, n / 2)), - t.moveTo(e, 0), - t.lineTo(i - e, 0), - t.arc(i - e, e, e, (3 * Math.PI) / 2, 0, !1), - t.lineTo(i, n - e), - t.arc(i - e, n - e, e, 0, Math.PI / 2, !1), - t.lineTo(e, n), - t.arc(e, n - e, e, Math.PI / 2, Math.PI, !1), - t.lineTo(0, e), - t.arc(e, e, e, Math.PI, (3 * Math.PI) / 2, !1)) - : t.rect(0, 0, i, n), - t.closePath(), - t.fillStrokeShape(this); - }, - }), - Konva.Util.extend(Konva.Rect, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Rect, 'cornerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.Rect); - })(), - (function (e) { - 'use strict'; - var i = 2 * Math.PI - 1e-4; - (e.Circle = function (t) { - this.___init(t); - }), - (e.Circle.prototype = { - _centroid: !0, - ___init: function (t) { - e.Shape.call(this, t), (this.className = 'Circle'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - t.beginPath(), t.arc(0, 0, this.getRadius(), 0, i, !1), t.closePath(), t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getRadius(); - }, - getHeight: function () { - return 2 * this.getRadius(); - }, - setWidth: function (t) { - e.Node.prototype.setWidth.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - setHeight: function (t) { - e.Node.prototype.setHeight.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - }), - e.Util.extend(e.Circle, e.Shape), - e.Factory.addGetterSetter(e.Circle, 'radius', 0, e.Validators.getNumberValidator()), - e.Factory.addOverloadedGetterSetter(e.Circle, 'radius'), - e.Collection.mapMethods(e.Circle); - })(Konva), - (function () { - 'use strict'; - var n = 2 * Math.PI - 1e-4; - (Konva.Ellipse = function (t) { - this.___init(t); - }), - (Konva.Ellipse.prototype = { - _centroid: !0, - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Ellipse'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = this.getRadiusX(), - i = this.getRadiusY(); - t.beginPath(), - t.save(), - e !== i && t.scale(1, i / e), - t.arc(0, 0, e, 0, n, !1), - t.restore(), - t.closePath(), - t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getRadiusX(); - }, - getHeight: function () { - return 2 * this.getRadiusY(); - }, - setWidth: function (t) { - Konva.Node.prototype.setWidth.call(this, t), this.setRadius({ x: t / 2 }); - }, - setHeight: function (t) { - Konva.Node.prototype.setHeight.call(this, t), this.setRadius({ y: t / 2 }); - }, - }), - Konva.Util.extend(Konva.Ellipse, Konva.Shape), - Konva.Factory.addComponentsGetterSetter(Konva.Ellipse, 'radius', ['x', 'y']), - Konva.Factory.addGetterSetter(Konva.Ellipse, 'radiusX', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Ellipse, 'radiusY', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.Ellipse); - })(), - (function () { - 'use strict'; - var e = 2 * Math.PI - 1e-4; - (Konva.Ring = function (t) { - this.___init(t); - }), - (Konva.Ring.prototype = { - _centroid: !0, - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Ring'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - t.beginPath(), - t.arc(0, 0, this.getInnerRadius(), 0, e, !1), - t.moveTo(this.getOuterRadius(), 0), - t.arc(0, 0, this.getOuterRadius(), e, 0, !0), - t.closePath(), - t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getOuterRadius(); - }, - getHeight: function () { - return 2 * this.getOuterRadius(); - }, - setWidth: function (t) { - Konva.Node.prototype.setWidth.call(this, t), this.outerRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - setHeight: function (t) { - Konva.Node.prototype.setHeight.call(this, t), this.outerRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - setOuterRadius: function (t) { - this._setAttr('outerRadius', t), this.setWidth(2 * t), this.setHeight(2 * t); - }, - }), - Konva.Util.extend(Konva.Ring, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Ring, 'innerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetter(Konva.Ring, 'outerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addOverloadedGetterSetter(Konva.Ring, 'outerRadius'), - Konva.Collection.mapMethods(Konva.Ring); - })(), - (function () { - 'use strict'; - (Konva.Wedge = function (t) { - this.___init(t); - }), - (Konva.Wedge.prototype = { - _centroid: !0, - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Wedge'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - t.beginPath(), - t.arc(0, 0, this.getRadius(), 0, Konva.getAngle(this.getAngle()), this.getClockwise()), - t.lineTo(0, 0), - t.closePath(), - t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getRadius(); - }, - getHeight: function () { - return 2 * this.getRadius(); - }, - setWidth: function (t) { - Konva.Node.prototype.setWidth.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - setHeight: function (t) { - Konva.Node.prototype.setHeight.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - }), - Konva.Util.extend(Konva.Wedge, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Wedge, 'radius', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Wedge, 'angle', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Wedge, 'clockwise', !1), - Konva.Factory.backCompat(Konva.Wedge, { angleDeg: 'angle', getAngleDeg: 'getAngle', setAngleDeg: 'setAngle' }), - Konva.Collection.mapMethods(Konva.Wedge); - })(), - (function (n) { - 'use strict'; - (n.Arc = function (t) { - this.___init(t); - }), - (n.Arc.prototype = { - _centroid: !0, - ___init: function (t) { - n.Shape.call(this, t), (this.className = 'Arc'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = n.getAngle(this.angle()), - i = this.clockwise(); - t.beginPath(), - t.arc(0, 0, this.getOuterRadius(), 0, e, i), - t.arc(0, 0, this.getInnerRadius(), e, 0, !i), - t.closePath(), - t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getOuterRadius(); - }, - getHeight: function () { - return 2 * this.getOuterRadius(); - }, - setWidth: function (t) { - n.Node.prototype.setWidth.call(this, t), this.getOuterRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - setHeight: function (t) { - n.Node.prototype.setHeight.call(this, t), this.getOuterRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - }), - n.Util.extend(n.Arc, n.Shape), - n.Factory.addGetterSetter(n.Arc, 'innerRadius', 0, n.Validators.getNumberValidator()), - n.Factory.addGetterSetter(n.Arc, 'outerRadius', 0, n.Validators.getNumberValidator()), - n.Factory.addGetterSetter(n.Arc, 'angle', 0, n.Validators.getNumberValidator()), - n.Factory.addGetterSetter(n.Arc, 'clockwise', !1), - n.Collection.mapMethods(n.Arc); - })(Konva), - (function () { - 'use strict'; - (Konva.Image = function (t) { - this.___init(t); - }), - (Konva.Image.prototype = { - ___init: function (t) { - Konva.Shape.call(this, t), - (this.className = 'Image'), - this.sceneFunc(this._sceneFunc), - this.hitFunc(this._hitFunc); - }, - _useBufferCanvas: function () { - return (this.hasShadow() || 1 !== this.getAbsoluteOpacity()) && this.hasStroke() && this.getStage(); - }, - _sceneFunc: function (t) { - var e, - i, - n, - a = this.getWidth(), - r = this.getHeight(), - o = this.getImage(); - o && - ((e = this.getCropWidth()), - (i = this.getCropHeight()), - (n = e && i ? [o, this.getCropX(), this.getCropY(), e, i, 0, 0, a, r] : [o, 0, 0, a, r])), - (this.hasFill() || this.hasStroke()) && - (t.beginPath(), t.rect(0, 0, a, r), t.closePath(), t.fillStrokeShape(this)), - o && t.drawImage.apply(t, n); - }, - _hitFunc: function (t) { - var e = this.getWidth(), - i = this.getHeight(); - t.beginPath(), t.rect(0, 0, e, i), t.closePath(), t.fillStrokeShape(this); - }, - getWidth: function () { - var t = this.getImage(); - return this.attrs.width || (t ? t.width : 0); - }, - getHeight: function () { - var t = this.getImage(); - return this.attrs.height || (t ? t.height : 0); - }, - }), - Konva.Util.extend(Konva.Image, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Image, 'image'), - Konva.Factory.addComponentsGetterSetter(Konva.Image, 'crop', ['x', 'y', 'width', 'height']), - Konva.Factory.addGetterSetter(Konva.Image, 'cropX', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Image, 'cropY', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Image, 'cropWidth', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Image, 'cropHeight', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.Image), - (Konva.Image.fromURL = function (t, e) { - var i = new Image(); - (i.onload = function () { - var t = new Konva.Image({ image: i }); - e(t); - }), - (i.crossOrigin = 'Anonymous'), - (i.src = t); - }); - })(), - (function () { - 'use strict'; - var t, - M = 'auto', - C = 'justify', - e = '2d', - i = [ - 'fontFamily', - 'fontSize', - 'fontStyle', - 'fontVariant', - 'padding', - 'align', - 'verticalAlign', - 'lineHeight', - 'text', - 'width', - 'height', - 'wrap', - 'ellipsis', - 'letterSpacing', - ], - n = i.length; - function k() { - return t || (t = Konva.Util.createCanvasElement().getContext(e)); - } - function a(t) { - t.fillText(this.partialText, 0, 0); - } - function r(t) { - t.strokeText(this.partialText, 0, 0); - } - (Konva.Text = function (t) { - this.___init(t); - }), - (Konva.Text.prototype = { - ___init: function (t) { - (t = t || {}).fillLinearGradientColorStops || t.fillRadialGradientColorStops || (t.fill = t.fill || 'black'), - Konva.Shape.call(this, t), - (this._fillFunc = a), - (this._strokeFunc = r), - (this.className = 'Text'); - for (var e = 0; e < n; e++) this.on(i[e] + 'Change.konva', this._setTextData); - this._setTextData(), this.sceneFunc(this._sceneFunc), this.hitFunc(this._hitFunc); - }, - _sceneFunc: function (t) { - var e, - i = this.getPadding(), - n = this.getTextHeight(), - a = this.getLineHeight() * n, - r = this.textArr, - o = r.length, - s = this.getVerticalAlign(), - h = 0, - l = this.getAlign(), - c = this.getWidth(), - d = this.getLetterSpacing(), - u = this.textDecoration(), - g = this.fill(), - f = this.fontSize(); - for ( - t.setAttr('font', this._getContextFont()), - t.setAttr('textBaseline', 'middle'), - t.setAttr('textAlign', 'left'), - 'middle' === s - ? (h = (this.getHeight() - o * a - 2 * i) / 2) - : 'bottom' === s && (h = this.getHeight() - o * a - 2 * i), - i ? (t.translate(i, 0), t.translate(0, h + i + a / 2)) : t.translate(0, h + a / 2), - e = 0; - e < o; - e++ - ) { - var v, - p, - m, - _ = r[e], - y = _.text, - K = _.width, - S = e !== o - 1; - if ( - (t.save(), - 'right' === l ? t.translate(c - K - 2 * i, 0) : 'center' === l && t.translate((c - K - 2 * i) / 2, 0), - -1 !== u.indexOf('underline') && - (t.save(), - t.beginPath(), - t.moveTo(0, Math.round(a / 2)), - (p = 0 === (v = y.split(' ').length - 1)), - (m = l === C && S && !p ? c - 2 * i : K), - t.lineTo(Math.round(m), Math.round(a / 2)), - (t.lineWidth = f / 15), - (t.strokeStyle = g), - t.stroke(), - t.restore()), - -1 !== u.indexOf('line-through') && - (t.save(), - t.beginPath(), - t.moveTo(0, 0), - (p = 0 === (v = y.split(' ').length - 1)), - (m = l === C && S && !p ? c - 2 * i : K), - t.lineTo(Math.round(m), 0), - (t.lineWidth = f / 15), - (t.strokeStyle = g), - t.stroke(), - t.restore()), - 0 !== d || l === C) - ) { - v = y.split(' ').length - 1; - for (var b = 0; b < y.length; b++) { - var x = y[b]; - ' ' === x && e !== o - 1 && l === C && t.translate(Math.floor((c - 2 * i - K) / v), 0), - (this.partialText = x), - t.fillStrokeShape(this), - t.translate(Math.round(this._getTextSize(x).width) + d, 0); - } - } else (this.partialText = y), t.fillStrokeShape(this); - t.restore(), 1 < o && t.translate(0, a); - } - }, - _hitFunc: function (t) { - var e = this.getWidth(), - i = this.getHeight(); - t.beginPath(), t.rect(0, 0, e, i), t.closePath(), t.fillStrokeShape(this); - }, - setText: function (t) { - var e = Konva.Util._isString(t) ? t : (t || '').toString(); - return this._setAttr('text', e), this; - }, - getWidth: function () { - return this.attrs.width === M || void 0 === this.attrs.width - ? this.getTextWidth() + 2 * this.getPadding() - : this.attrs.width; - }, - getHeight: function () { - return this.attrs.height === M || void 0 === this.attrs.height - ? this.getTextHeight() * this.textArr.length * this.getLineHeight() + 2 * this.getPadding() - : this.attrs.height; - }, - getTextWidth: function () { - return this.textWidth; - }, - getTextHeight: function () { - return this.textHeight; - }, - _getTextSize: function (t) { - var e, - i = k(), - n = this.getFontSize(); - return ( - i.save(), - (i.font = this._getContextFont()), - (e = i.measureText(t)), - i.restore(), - { width: e.width, height: parseInt(n, 10) } - ); - }, - _getContextFont: function () { - return Konva.UA.isIE - ? this.getFontStyle() + ' ' + this.getFontSize() + 'px ' + this.getFontFamily() - : this.getFontStyle() + - ' ' + - this.getFontVariant() + - ' ' + - this.getFontSize() + - 'px ' + - this.getFontFamily(); - }, - _addTextLine: function (t) { - this.align() === C && (t = t.trim()); - var e = this._getTextWidth(t); - return this.textArr.push({ text: t, width: e }); - }, - _getTextWidth: function (t) { - var e = this.getLetterSpacing(), - i = t.length; - return k().measureText(t).width + (i ? e * (i - 1) : 0); - }, - _setTextData: function () { - var t = this.getText().split('\n'), - e = +this.getFontSize(), - i = 0, - n = this.getLineHeight() * e, - a = this.attrs.width, - r = this.attrs.height, - o = a !== M, - s = r !== M, - h = this.getPadding(), - l = a - 2 * h, - c = r - 2 * h, - d = 0, - u = this.getWrap(), - g = 'none' !== u, - f = 'char' !== u && g, - v = this.getEllipsis() && !g; - (this.textArr = []), (k().font = this._getContextFont()); - for (var p = 0, m = t.length; p < m; ++p) { - var _ = t[p], - y = v ? this._getTextWidth('…') : 0, - K = this._getTextWidth(_); - if (o && l < K) - for (; 0 < _.length; ) { - for (var S = 0, b = _.length, x = '', C = 0; S < b; ) { - var w = (S + b) >>> 1, - F = _.slice(0, w + 1), - T = this._getTextWidth(F) + y; - T <= l ? ((S = w + 1), (x = F + (v ? '…' : '')), (C = T)) : (b = w); - } - if (!x) break; - if (f) { - var P, - A = _[x.length]; - 0 < - (P = - (' ' === A || '-' === A) && C <= l - ? x.length - : Math.max(x.lastIndexOf(' '), x.lastIndexOf('-')) + 1) && - ((S = P), (x = x.slice(0, S)), (C = this._getTextWidth(x))); - } - if (((x = x.trimRight()), this._addTextLine(x), (i = Math.max(i, C)), (d += n), !g || (s && c < d + n))) - break; - if (0 < (_ = (_ = _.slice(S)).trimLeft()).length && (K = this._getTextWidth(_)) <= l) { - this._addTextLine(_), (d += n), (i = Math.max(i, K)); - break; - } - } - else this._addTextLine(_), (d += n), (i = Math.max(i, K)); - if (s && c < d + n) break; - } - (this.textHeight = e), (this.textWidth = i); - }, - }), - Konva.Util.extend(Konva.Text, Konva.Shape), - Konva.Factory.addSetter(Konva.Node, 'width', Konva.Validators.getNumberOrAutoValidator()), - Konva.Factory.addSetter(Konva.Node, 'height', Konva.Validators.getNumberOrAutoValidator()), - Konva.Factory.addGetterSetter(Konva.Text, 'fontFamily', 'Arial'), - Konva.Factory.addGetterSetter(Konva.Text, 'fontSize', 12, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Text, 'fontStyle', 'normal'), - Konva.Factory.addGetterSetter(Konva.Text, 'fontVariant', 'normal'), - Konva.Factory.addGetterSetter(Konva.Text, 'padding', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Text, 'align', 'left'), - Konva.Factory.addGetterSetter(Konva.Text, 'verticalAlign', 'top'), - Konva.Factory.addGetterSetter(Konva.Text, 'lineHeight', 1, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Text, 'wrap', 'word'), - Konva.Factory.addGetterSetter(Konva.Text, 'ellipsis', !1), - Konva.Factory.addGetterSetter(Konva.Text, 'letterSpacing', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetter(Konva.Text, 'text', ''), - Konva.Factory.addOverloadedGetterSetter(Konva.Text, 'text'), - Konva.Factory.addGetterSetter(Konva.Text, 'textDecoration', ''), - Konva.Collection.mapMethods(Konva.Text); - })(), - (function () { - 'use strict'; - (Konva.Line = function (t) { - this.___init(t); - }), - (Konva.Line.prototype = { - ___init: function (t) { - Konva.Shape.call(this, t), - (this.className = 'Line'), - this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () { - this._clearCache('tensionPoints'); - }), - this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e, - i, - n, - a = this.getPoints(), - r = a.length, - o = this.getTension(), - s = this.getClosed(), - h = this.getBezier(); - if (r) { - if ((t.beginPath(), t.moveTo(a[0], a[1]), 0 !== o && 4 < r)) { - for ( - i = (e = this.getTensionPoints()).length, - n = s ? 0 : 4, - s || t.quadraticCurveTo(e[0], e[1], e[2], e[3]); - n < i - 2; - - ) - t.bezierCurveTo(e[n++], e[n++], e[n++], e[n++], e[n++], e[n++]); - s || t.quadraticCurveTo(e[i - 2], e[i - 1], a[r - 2], a[r - 1]); - } else if (h) for (n = 2; n < r; ) t.bezierCurveTo(a[n++], a[n++], a[n++], a[n++], a[n++], a[n++]); - else for (n = 2; n < r; n += 2) t.lineTo(a[n], a[n + 1]); - s ? (t.closePath(), t.fillStrokeShape(this)) : t.strokeShape(this); - } - }, - getTensionPoints: function () { - return this._getCache('tensionPoints', this._getTensionPoints); - }, - _getTensionPoints: function () { - return this.getClosed() - ? this._getTensionPointsClosed() - : Konva.Util._expandPoints(this.getPoints(), this.getTension()); - }, - _getTensionPointsClosed: function () { - var t = this.getPoints(), - e = t.length, - i = this.getTension(), - n = Konva.Util, - a = n._getControlPoints(t[e - 2], t[e - 1], t[0], t[1], t[2], t[3], i), - r = n._getControlPoints(t[e - 4], t[e - 3], t[e - 2], t[e - 1], t[0], t[1], i), - o = Konva.Util._expandPoints(t, i); - return [a[2], a[3]].concat(o).concat([r[0], r[1], t[e - 2], t[e - 1], r[2], r[3], a[0], a[1], t[0], t[1]]); - }, - getWidth: function () { - return this.getSelfRect().width; - }, - getHeight: function () { - return this.getSelfRect().height; - }, - getSelfRect: function () { - for ( - var t, - e, - i, - n = (t = 0 !== this.getTension() ? this._getTensionPoints() : this.getPoints())[0], - a = t[0], - r = t[1], - o = t[1], - s = 0; - s < t.length / 2; - s++ - ) - (e = t[2 * s]), - (i = t[2 * s + 1]), - (n = Math.min(n, e)), - (a = Math.max(a, e)), - (r = Math.min(r, i)), - (o = Math.max(o, i)); - return { x: Math.round(n), y: Math.round(r), width: Math.round(a - n), height: Math.round(o - r) }; - }, - }), - Konva.Util.extend(Konva.Line, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Line, 'closed', !1), - Konva.Factory.addGetterSetter(Konva.Line, 'bezier', !1), - Konva.Factory.addGetterSetter(Konva.Line, 'tension', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Line, 'points', [], Konva.Validators.getNumberArrayValidator()), - Konva.Collection.mapMethods(Konva.Line); - })(), - (function () { - 'use strict'; - (Konva.Sprite = function (t) { - this.___init(t); - }), - (Konva.Sprite.prototype = { - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Sprite'), (this._updated = !0); - var e = this; - (this.anim = new Konva.Animation(function () { - var t = e._updated; - return (e._updated = !1), t; - })), - this.on('animationChange.konva', function () { - this.frameIndex(0); - }), - this.on('frameIndexChange.konva', function () { - this._updated = !0; - }), - this.on('frameRateChange.konva', function () { - this.anim.isRunning() && (clearInterval(this.interval), this._setInterval()); - }), - this.sceneFunc(this._sceneFunc), - this.hitFunc(this._hitFunc); - }, - _sceneFunc: function (t) { - var e = this.getAnimation(), - i = this.frameIndex(), - n = 4 * i, - a = this.getAnimations()[e], - r = this.frameOffsets(), - o = a[n + 0], - s = a[n + 1], - h = a[n + 2], - l = a[n + 3], - c = this.getImage(); - if ( - ((this.hasFill() || this.hasStroke()) && - (t.beginPath(), t.rect(0, 0, h, l), t.closePath(), t.fillStrokeShape(this)), - c) - ) - if (r) { - var d = r[e], - u = 2 * i; - t.drawImage(c, o, s, h, l, d[u + 0], d[u + 1], h, l); - } else t.drawImage(c, o, s, h, l, 0, 0, h, l); - }, - _hitFunc: function (t) { - var e = this.getAnimation(), - i = this.frameIndex(), - n = 4 * i, - a = this.getAnimations()[e], - r = this.frameOffsets(), - o = a[n + 2], - s = a[n + 3]; - if ((t.beginPath(), r)) { - var h = r[e], - l = 2 * i; - t.rect(h[l + 0], h[l + 1], o, s); - } else t.rect(0, 0, o, s); - t.closePath(), t.fillShape(this); - }, - _useBufferCanvas: function () { - return (this.hasShadow() || 1 !== this.getAbsoluteOpacity()) && this.hasStroke(); - }, - _setInterval: function () { - var t = this; - this.interval = setInterval(function () { - t._updateIndex(); - }, 1e3 / this.getFrameRate()); - }, - start: function () { - if (!this.isRunning()) { - var t = this.getLayer(); - this.anim.setLayers(t), this._setInterval(), this.anim.start(); - } - }, - stop: function () { - this.anim.stop(), clearInterval(this.interval); - }, - isRunning: function () { - return this.anim.isRunning(); - }, - _updateIndex: function () { - var t = this.frameIndex(), - e = this.getAnimation(); - t < this.getAnimations()[e].length / 4 - 1 ? this.frameIndex(t + 1) : this.frameIndex(0); - }, - }), - Konva.Util.extend(Konva.Sprite, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Sprite, 'animation'), - Konva.Factory.addGetterSetter(Konva.Sprite, 'animations'), - Konva.Factory.addGetterSetter(Konva.Sprite, 'frameOffsets'), - Konva.Factory.addGetterSetter(Konva.Sprite, 'image'), - Konva.Factory.addGetterSetter(Konva.Sprite, 'frameIndex', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Sprite, 'frameRate', 17, Konva.Validators.getNumberValidator()), - Konva.Factory.backCompat(Konva.Sprite, { - index: 'frameIndex', - getIndex: 'getFrameIndex', - setIndex: 'setFrameIndex', - }), - Konva.Collection.mapMethods(Konva.Sprite); - })(), - (function () { - 'use strict'; - (Konva.Path = function (t) { - this.___init(t); - }), - (Konva.Path.prototype = { - ___init: function (t) { - this.dataArray = []; - var e = this; - Konva.Shape.call(this, t), - (this.className = 'Path'), - (this.dataArray = Konva.Path.parsePathData(this.getData())); - for (var i = (this.pathLength = 0); i < this.dataArray.length; ++i) - this.pathLength += this.dataArray[i].pathLength; - this.on('dataChange.konva', function () { - e.dataArray = Konva.Path.parsePathData(this.getData()); - for (var t = (this.pathLength = 0); t < this.dataArray.length; ++t) - this.pathLength += this.dataArray[t].pathLength; - }), - this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = this.dataArray; - t.beginPath(); - for (var i = 0; i < e.length; i++) { - var n = e[i].command, - a = e[i].points; - switch (n) { - case 'L': - t.lineTo(a[0], a[1]); - break; - case 'M': - t.moveTo(a[0], a[1]); - break; - case 'C': - t.bezierCurveTo(a[0], a[1], a[2], a[3], a[4], a[5]); - break; - case 'Q': - t.quadraticCurveTo(a[0], a[1], a[2], a[3]); - break; - case 'A': - var r = a[0], - o = a[1], - s = a[2], - h = a[3], - l = a[4], - c = a[5], - d = a[6], - u = a[7], - g = h < s ? s : h, - f = h < s ? 1 : s / h, - v = h < s ? h / s : 1; - t.translate(r, o), - t.rotate(d), - t.scale(f, v), - t.arc(0, 0, g, l, l + c, 1 - u), - t.scale(1 / f, 1 / v), - t.rotate(-d), - t.translate(-r, -o); - break; - case 'z': - t.closePath(); - } - } - t.fillStrokeShape(this); - }, - getSelfRect: function () { - var e = []; - this.dataArray.forEach(function (t) { - e = e.concat(t.points); - }); - for (var t, i, n = e[0], a = e[0], r = e[1], o = e[1], s = 0; s < e.length / 2; s++) - (t = e[2 * s]), - (i = e[2 * s + 1]), - isNaN(t) || ((n = Math.min(n, t)), (a = Math.max(a, t))), - isNaN(i) || ((r = Math.min(r, i)), (o = Math.max(o, i))); - return { x: Math.round(n), y: Math.round(r), width: Math.round(a - n), height: Math.round(o - r) }; - }, - getLength: function () { - return this.pathLength; - }, - getPointAtLength: function (t) { - var e, - i = 0, - n = this.dataArray.length; - if (!n) return null; - for (; i < n && t > this.dataArray[i].pathLength; ) (t -= this.dataArray[i].pathLength), ++i; - if (i === n) return { x: (e = this.dataArray[i - 1].points.slice(-2))[0], y: e[1] }; - if (t < 0.01) return { x: (e = this.dataArray[i].points.slice(0, 2))[0], y: e[1] }; - var a = this.dataArray[i], - r = a.points; - switch (a.command) { - case 'L': - return Konva.Path.getPointOnLine(t, a.start.x, a.start.y, r[0], r[1]); - case 'C': - return Konva.Path.getPointOnCubicBezier( - t / a.pathLength, - a.start.x, - a.start.y, - r[0], - r[1], - r[2], - r[3], - r[4], - r[5], - ); - case 'Q': - return Konva.Path.getPointOnQuadraticBezier( - t / a.pathLength, - a.start.x, - a.start.y, - r[0], - r[1], - r[2], - r[3], - ); - case 'A': - var o = r[0], - s = r[1], - h = r[2], - l = r[3], - c = r[4], - d = r[5], - u = r[6]; - return (c += (d * t) / a.pathLength), Konva.Path.getPointOnEllipticalArc(o, s, h, l, c, u); - } - return null; - }, - }), - Konva.Util.extend(Konva.Path, Konva.Shape), - (Konva.Path.getLineLength = function (t, e, i, n) { - return Math.sqrt((i - t) * (i - t) + (n - e) * (n - e)); - }), - (Konva.Path.getPointOnLine = function (t, e, i, n, a, r, o) { - void 0 === r && (r = e), void 0 === o && (o = i); - var s = (a - i) / (n - e + 1e-8), - h = Math.sqrt((t * t) / (1 + s * s)); - n < e && (h *= -1); - var l, - c = s * h; - if (n === e) l = { x: r, y: o + c }; - else if ((o - i) / (r - e + 1e-8) === s) l = { x: r + h, y: o + c }; - else { - var d, - u, - g = this.getLineLength(e, i, n, a); - if (g < 1e-8) return; - var f = (r - e) * (n - e) + (o - i) * (a - i); - (d = e + (f /= g * g) * (n - e)), (u = i + f * (a - i)); - var v = this.getLineLength(r, o, d, u), - p = Math.sqrt(t * t - v * v); - (h = Math.sqrt((p * p) / (1 + s * s))), n < e && (h *= -1), (l = { x: d + h, y: u + (c = s * h) }); - } - return l; - }), - (Konva.Path.getPointOnCubicBezier = function (t, e, i, n, a, r, o, s, h) { - function l(t) { - return t * t * t; - } - function c(t) { - return 3 * t * t * (1 - t); - } - function d(t) { - return 3 * t * (1 - t) * (1 - t); - } - function u(t) { - return (1 - t) * (1 - t) * (1 - t); - } - return { x: s * l(t) + r * c(t) + n * d(t) + e * u(t), y: h * l(t) + o * c(t) + a * d(t) + i * u(t) }; - }), - (Konva.Path.getPointOnQuadraticBezier = function (t, e, i, n, a, r, o) { - function s(t) { - return t * t; - } - function h(t) { - return 2 * t * (1 - t); - } - function l(t) { - return (1 - t) * (1 - t); - } - return { x: r * s(t) + n * h(t) + e * l(t), y: o * s(t) + a * h(t) + i * l(t) }; - }), - (Konva.Path.getPointOnEllipticalArc = function (t, e, i, n, a, r) { - var o = Math.cos(r), - s = Math.sin(r), - h = i * Math.cos(a), - l = n * Math.sin(a); - return { x: t + (h * o - l * s), y: e + (h * s + l * o) }; - }), - (Konva.Path.parsePathData = function (t) { - if (!t) return []; - var e = t, - i = ['m', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z', 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A']; - e = e.replace(new RegExp(' ', 'g'), ','); - for (var n = 0; n < i.length; n++) e = e.replace(new RegExp(i[n], 'g'), '|' + i[n]); - var a, - r = e.split('|'), - o = [], - s = [], - h = 0, - l = 0, - c = /([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/gi; - for (n = 1; n < r.length; n++) { - var d = r[n], - u = d.charAt(0); - for (d = d.slice(1), s.length = 0; (a = c.exec(d)); ) s.push(a[0]); - for (var g = [], f = 0, v = s.length; f < v; f++) { - var p = parseFloat(s[f]); - isNaN(p) ? g.push(0) : g.push(p); - } - for (; 0 < g.length && !isNaN(g[0]); ) { - var m, - _, - y, - K, - S, - b, - x, - C, - w, - F, - T = null, - P = [], - A = h, - M = l; - switch (u) { - case 'l': - (h += g.shift()), (l += g.shift()), (T = 'L'), P.push(h, l); - break; - case 'L': - (h = g.shift()), (l = g.shift()), P.push(h, l); - break; - case 'm': - var k = g.shift(), - G = g.shift(); - if (((h += k), (l += G), (T = 'M'), 2 < o.length && 'z' === o[o.length - 1].command)) - for (var N = o.length - 2; 0 <= N; N--) - if ('M' === o[N].command) { - (h = o[N].points[0] + k), (l = o[N].points[1] + G); - break; - } - P.push(h, l), (u = 'l'); - break; - case 'M': - (h = g.shift()), (l = g.shift()), (T = 'M'), P.push(h, l), (u = 'L'); - break; - case 'h': - (h += g.shift()), (T = 'L'), P.push(h, l); - break; - case 'H': - (h = g.shift()), (T = 'L'), P.push(h, l); - break; - case 'v': - (l += g.shift()), (T = 'L'), P.push(h, l); - break; - case 'V': - (l = g.shift()), (T = 'L'), P.push(h, l); - break; - case 'C': - P.push(g.shift(), g.shift(), g.shift(), g.shift()), (h = g.shift()), (l = g.shift()), P.push(h, l); - break; - case 'c': - P.push(h + g.shift(), l + g.shift(), h + g.shift(), l + g.shift()), - (h += g.shift()), - (l += g.shift()), - (T = 'C'), - P.push(h, l); - break; - case 'S': - (_ = h), - (y = l), - 'C' === (m = o[o.length - 1]).command && ((_ = h + (h - m.points[2])), (y = l + (l - m.points[3]))), - P.push(_, y, g.shift(), g.shift()), - (h = g.shift()), - (l = g.shift()), - (T = 'C'), - P.push(h, l); - break; - case 's': - (_ = h), - (y = l), - 'C' === (m = o[o.length - 1]).command && ((_ = h + (h - m.points[2])), (y = l + (l - m.points[3]))), - P.push(_, y, h + g.shift(), l + g.shift()), - (h += g.shift()), - (l += g.shift()), - (T = 'C'), - P.push(h, l); - break; - case 'Q': - P.push(g.shift(), g.shift()), (h = g.shift()), (l = g.shift()), P.push(h, l); - break; - case 'q': - P.push(h + g.shift(), l + g.shift()), (h += g.shift()), (l += g.shift()), (T = 'Q'), P.push(h, l); - break; - case 'T': - (_ = h), - (y = l), - 'Q' === (m = o[o.length - 1]).command && ((_ = h + (h - m.points[0])), (y = l + (l - m.points[1]))), - (h = g.shift()), - (l = g.shift()), - (T = 'Q'), - P.push(_, y, h, l); - break; - case 't': - (_ = h), - (y = l), - 'Q' === (m = o[o.length - 1]).command && ((_ = h + (h - m.points[0])), (y = l + (l - m.points[1]))), - (h += g.shift()), - (l += g.shift()), - (T = 'Q'), - P.push(_, y, h, l); - break; - case 'A': - (K = g.shift()), - (S = g.shift()), - (b = g.shift()), - (x = g.shift()), - (C = g.shift()), - (w = h), - (F = l), - (h = g.shift()), - (l = g.shift()), - (T = 'A'), - (P = this.convertEndpointToCenterParameterization(w, F, h, l, x, C, K, S, b)); - break; - case 'a': - (K = g.shift()), - (S = g.shift()), - (b = g.shift()), - (x = g.shift()), - (C = g.shift()), - (w = h), - (F = l), - (h += g.shift()), - (l += g.shift()), - (T = 'A'), - (P = this.convertEndpointToCenterParameterization(w, F, h, l, x, C, K, S, b)); - } - o.push({ command: T || u, points: P, start: { x: A, y: M }, pathLength: this.calcLength(A, M, T || u, P) }); - } - ('z' !== u && 'Z' !== u) || o.push({ command: 'z', points: [], start: void 0, pathLength: 0 }); - } - return o; - }), - (Konva.Path.calcLength = function (t, e, i, n) { - var a, - r, - o, - s, - h = Konva.Path; - switch (i) { - case 'L': - return h.getLineLength(t, e, n[0], n[1]); - case 'C': - for ( - a = 0, r = h.getPointOnCubicBezier(0, t, e, n[0], n[1], n[2], n[3], n[4], n[5]), s = 0.01; - s <= 1; - s += 0.01 - ) - (o = h.getPointOnCubicBezier(s, t, e, n[0], n[1], n[2], n[3], n[4], n[5])), - (a += h.getLineLength(r.x, r.y, o.x, o.y)), - (r = o); - return a; - case 'Q': - for (a = 0, r = h.getPointOnQuadraticBezier(0, t, e, n[0], n[1], n[2], n[3]), s = 0.01; s <= 1; s += 0.01) - (o = h.getPointOnQuadraticBezier(s, t, e, n[0], n[1], n[2], n[3])), - (a += h.getLineLength(r.x, r.y, o.x, o.y)), - (r = o); - return a; - case 'A': - a = 0; - var l = n[4], - c = n[5], - d = n[4] + c, - u = Math.PI / 180; - if ( - (Math.abs(l - d) < u && (u = Math.abs(l - d)), - (r = h.getPointOnEllipticalArc(n[0], n[1], n[2], n[3], l, 0)), - c < 0) - ) - for (s = l - u; d < s; s -= u) - (o = h.getPointOnEllipticalArc(n[0], n[1], n[2], n[3], s, 0)), - (a += h.getLineLength(r.x, r.y, o.x, o.y)), - (r = o); - else - for (s = l + u; s < d; s += u) - (o = h.getPointOnEllipticalArc(n[0], n[1], n[2], n[3], s, 0)), - (a += h.getLineLength(r.x, r.y, o.x, o.y)), - (r = o); - return ( - (o = h.getPointOnEllipticalArc(n[0], n[1], n[2], n[3], d, 0)), (a += h.getLineLength(r.x, r.y, o.x, o.y)) - ); - } - return 0; - }), - (Konva.Path.convertEndpointToCenterParameterization = function (t, e, i, n, a, r, o, s, h) { - var l = h * (Math.PI / 180), - c = (Math.cos(l) * (t - i)) / 2 + (Math.sin(l) * (e - n)) / 2, - d = (-1 * Math.sin(l) * (t - i)) / 2 + (Math.cos(l) * (e - n)) / 2, - u = (c * c) / (o * o) + (d * d) / (s * s); - 1 < u && ((o *= Math.sqrt(u)), (s *= Math.sqrt(u))); - var g = Math.sqrt((o * o * (s * s) - o * o * (d * d) - s * s * (c * c)) / (o * o * (d * d) + s * s * (c * c))); - a === r && (g *= -1), isNaN(g) && (g = 0); - var f = (g * o * d) / s, - v = (g * -s * c) / o, - p = (t + i) / 2 + Math.cos(l) * f - Math.sin(l) * v, - m = (e + n) / 2 + Math.sin(l) * f + Math.cos(l) * v, - _ = function (t) { - return Math.sqrt(t[0] * t[0] + t[1] * t[1]); - }, - y = function (t, e) { - return (t[0] * e[0] + t[1] * e[1]) / (_(t) * _(e)); - }, - K = function (t, e) { - return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(y(t, e)); - }, - S = K([1, 0], [(c - f) / o, (d - v) / s]), - b = [(c - f) / o, (d - v) / s], - x = [(-1 * c - f) / o, (-1 * d - v) / s], - C = K(b, x); - return ( - y(b, x) <= -1 && (C = Math.PI), - 1 <= y(b, x) && (C = 0), - 0 === r && 0 < C && (C -= 2 * Math.PI), - 1 === r && C < 0 && (C += 2 * Math.PI), - [p, m, o, s, S, C, l, r] - ); - }), - Konva.Factory.addGetterSetter(Konva.Path, 'data'), - Konva.Collection.mapMethods(Konva.Path); - })(), - (function () { - 'use strict'; - function i(t) { - t.fillText(this.partialText, 0, 0); - } - function n(t) { - t.strokeText(this.partialText, 0, 0); - } - (Konva.TextPath = function (t) { - this.___init(t); - }), - (Konva.TextPath.prototype = { - ___init: function (t) { - var e = this; - (this.dummyCanvas = Konva.Util.createCanvasElement()), - (this.dataArray = []), - (this.getKerning = t && t.getKerning), - Konva.Shape.call(this, t), - (this._fillFunc = i), - (this._strokeFunc = n), - (this._fillFuncHit = i), - (this._strokeFuncHit = n), - (this.className = 'TextPath'), - (this.dataArray = Konva.Path.parsePathData(this.attrs.data)), - this.on('dataChange.konva', function () { - (e.dataArray = Konva.Path.parsePathData(this.attrs.data)), e._setTextData(); - }), - this.on('textChange.konva alignChange.konva letterSpacingChange.konva', e._setTextData), - e._setTextData(), - this.sceneFunc(this._sceneFunc), - this.hitFunc(this._hitFunc); - }, - _sceneFunc: function (t) { - t.setAttr('font', this._getContextFont()), - t.setAttr('textBaseline', this.getTextBaseline()), - t.setAttr('textAlign', 'left'), - t.save(); - var e = this.textDecoration(), - i = this.fill(), - n = this.fontSize(), - a = this.glyphInfo; - 'underline' === e && t.beginPath(); - for (var r = 0; r < a.length; r++) { - t.save(); - var o = a[r].p0; - t.translate(o.x, o.y), - t.rotate(a[r].rotation), - (this.partialText = a[r].text), - t.fillStrokeShape(this), - 'underline' === e && (0 === r && t.moveTo(0, n / 2 + 1), t.lineTo(n, n / 2 + 1)), - t.restore(); - } - 'underline' === e && ((t.strokeStyle = i), (t.lineWidth = n / 20), t.stroke()), t.restore(); - }, - _hitFunc: function (t) { - t.beginPath(); - var e = this.glyphInfo; - if (1 <= e.length) { - var i = e[0].p0; - t.moveTo(i.x, i.y); - } - for (var n = 0; n < e.length; n++) { - var a = e[n].p1; - t.lineTo(a.x, a.y); - } - t.setAttr('lineWidth', this.getFontSize()), t.setAttr('strokeStyle', this.colorKey), t.stroke(); - }, - getTextWidth: function () { - return this.textWidth; - }, - getTextHeight: function () { - return this.textHeight; - }, - setText: function (t) { - Konva.Text.prototype.setText.call(this, t); - }, - _getTextSize: function (t) { - var e = this.dummyCanvas.getContext('2d'); - e.save(), (e.font = this._getContextFont()); - var i = e.measureText(t); - return e.restore(), { width: i.width, height: parseInt(this.attrs.fontSize, 10) }; - }, - _setTextData: function () { - var l = this, - t = this._getTextSize(this.attrs.text), - c = this.getLetterSpacing(), - d = this.align(); - (this.textWidth = t.width), (this.textHeight = t.height); - var u = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * c, 0); - this.glyphInfo = []; - for (var g = 0, e = 0; e < l.dataArray.length; e++) - 0 < l.dataArray[e].pathLength && (g += l.dataArray[e].pathLength); - var i = 0; - 'center' === d && (i = Math.max(0, g / 2 - u / 2)), 'right' === d && (i = Math.max(0, g - u)); - for ( - var f, - v, - p, - n = this.getText().split(''), - m = this.getText().split(' ').length - 1, - a = -1, - _ = 0, - y = function () { - _ = 0; - for (var t = l.dataArray, e = a + 1; e < t.length; e++) { - if (0 < t[e].pathLength) return t[(a = e)]; - 'M' === t[e].command && (f = { x: t[e].points[0], y: t[e].points[1] }); - } - return {}; - }, - r = function (t) { - var e = l._getTextSize(t).width + c; - ' ' === t && 'justify' === d && (e += (g - u) / m); - var i = 0, - n = 0; - for (v = void 0; 0.01 < Math.abs(e - i) / e && n < 25; ) { - n++; - for (var a = i; void 0 === p; ) - (p = y()) && a + p.pathLength < e && ((a += p.pathLength), (p = void 0)); - if (p === {} || void 0 === f) return; - var r = !1; - switch (p.command) { - case 'L': - Konva.Path.getLineLength(f.x, f.y, p.points[0], p.points[1]) > e - ? (v = Konva.Path.getPointOnLine(e, f.x, f.y, p.points[0], p.points[1], f.x, f.y)) - : (p = void 0); - break; - case 'A': - var o = p.points[4], - s = p.points[5], - h = p.points[4] + s; - 0 === _ - ? (_ = o + 1e-8) - : i < e - ? (_ += ((Math.PI / 180) * s) / Math.abs(s)) - : (_ -= ((Math.PI / 360) * s) / Math.abs(s)), - ((s < 0 && _ < h) || (0 <= s && h < _)) && ((_ = h), (r = !0)), - (v = Konva.Path.getPointOnEllipticalArc( - p.points[0], - p.points[1], - p.points[2], - p.points[3], - _, - p.points[6], - )); - break; - case 'C': - 0 === _ - ? (_ = e > p.pathLength ? 1e-8 : e / p.pathLength) - : i < e - ? (_ += (e - i) / p.pathLength) - : (_ -= (i - e) / p.pathLength), - 1 < _ && ((_ = 1), (r = !0)), - (v = Konva.Path.getPointOnCubicBezier( - _, - p.start.x, - p.start.y, - p.points[0], - p.points[1], - p.points[2], - p.points[3], - p.points[4], - p.points[5], - )); - break; - case 'Q': - 0 === _ - ? (_ = e / p.pathLength) - : i < e - ? (_ += (e - i) / p.pathLength) - : (_ -= (i - e) / p.pathLength), - 1 < _ && ((_ = 1), (r = !0)), - (v = Konva.Path.getPointOnQuadraticBezier( - _, - p.start.x, - p.start.y, - p.points[0], - p.points[1], - p.points[2], - p.points[3], - )); - } - void 0 !== v && (i = Konva.Path.getLineLength(f.x, f.y, v.x, v.y)), r && ((r = !1), (p = void 0)); - } - }, - o = l._getTextSize('C').width + c, - s = 0; - s < i / o && (r('C'), void 0 !== f && void 0 !== v); - s++ - ) - f = v; - for (var h = 0; h < n.length && (r(n[h]), void 0 !== f && void 0 !== v); h++) { - var K = Konva.Path.getLineLength(f.x, f.y, v.x, v.y), - S = 0; - if (this.getKerning) - try { - S = this.getKerning(n[h - 1], n[h]) * this.fontSize(); - } catch (t) { - S = 0; - } - (f.x += S), (v.x += S), (this.textWidth += S); - var b = Konva.Path.getPointOnLine(S + K / 2, f.x, f.y, v.x, v.y), - x = Math.atan2(v.y - f.y, v.x - f.x); - this.glyphInfo.push({ transposeX: b.x, transposeY: b.y, text: n[h], rotation: x, p0: f, p1: v }), (f = v); - } - }, - getSelfRect: function () { - var e = []; - this.glyphInfo.forEach(function (t) { - e.push(t.p0.x), e.push(t.p0.y), e.push(t.p1.x), e.push(t.p1.y); - }); - for (var t, i, n = e[0], a = e[0], r = e[0], o = e[0], s = 0; s < e.length / 2; s++) - (t = e[2 * s]), - (i = e[2 * s + 1]), - (n = Math.min(n, t)), - (a = Math.max(a, t)), - (r = Math.min(r, i)), - (o = Math.max(o, i)); - var h = this.fontSize(); - return { - x: Math.round(n) - h / 2, - y: Math.round(r) - h / 2, - width: Math.round(a - n) + h, - height: Math.round(o - r) + h, - }; - }, - }), - (Konva.TextPath.prototype._getContextFont = Konva.Text.prototype._getContextFont), - Konva.Util.extend(Konva.TextPath, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.TextPath, 'data'), - Konva.Factory.addGetterSetter(Konva.TextPath, 'fontFamily', 'Arial'), - Konva.Factory.addGetterSetter(Konva.TextPath, 'fontSize', 12, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.TextPath, 'fontStyle', 'normal'), - Konva.Factory.addGetterSetter(Konva.TextPath, 'align', 'left'), - Konva.Factory.addGetterSetter(Konva.TextPath, 'letterSpacing', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.TextPath, 'textBaseline', 'middle'), - Konva.Factory.addGetterSetter(Konva.TextPath, 'fontVariant', 'normal'), - Konva.Factory.addGetter(Konva.TextPath, 'text', ''), - Konva.Factory.addGetterSetter(Konva.TextPath, 'textDecoration', null), - Konva.Collection.mapMethods(Konva.TextPath); - })(), - (function () { - 'use strict'; - (Konva.RegularPolygon = function (t) { - this.___init(t); - }), - (Konva.RegularPolygon.prototype = { - _centroid: !0, - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'RegularPolygon'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e, - i, - n, - a = this.attrs.sides, - r = this.attrs.radius; - for (t.beginPath(), t.moveTo(0, 0 - r), e = 1; e < a; e++) - (i = r * Math.sin((2 * e * Math.PI) / a)), (n = -1 * r * Math.cos((2 * e * Math.PI) / a)), t.lineTo(i, n); - t.closePath(), t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getRadius(); - }, - getHeight: function () { - return 2 * this.getRadius(); - }, - setWidth: function (t) { - Konva.Node.prototype.setWidth.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - setHeight: function (t) { - Konva.Node.prototype.setHeight.call(this, t), this.radius() !== t / 2 && this.setRadius(t / 2); - }, - }), - Konva.Util.extend(Konva.RegularPolygon, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.RegularPolygon, 'radius', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.RegularPolygon, 'sides', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.RegularPolygon); - })(), - (function () { - 'use strict'; - (Konva.Star = function (t) { - this.___init(t); - }), - (Konva.Star.prototype = { - _centroid: !0, - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Star'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = this.innerRadius(), - i = this.outerRadius(), - n = this.numPoints(); - t.beginPath(), t.moveTo(0, 0 - i); - for (var a = 1; a < 2 * n; a++) { - var r = a % 2 == 0 ? i : e, - o = r * Math.sin((a * Math.PI) / n), - s = -1 * r * Math.cos((a * Math.PI) / n); - t.lineTo(o, s); - } - t.closePath(), t.fillStrokeShape(this); - }, - getWidth: function () { - return 2 * this.getOuterRadius(); - }, - getHeight: function () { - return 2 * this.getOuterRadius(); - }, - setWidth: function (t) { - Konva.Node.prototype.setWidth.call(this, t), this.outerRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - setHeight: function (t) { - Konva.Node.prototype.setHeight.call(this, t), this.outerRadius() !== t / 2 && this.setOuterRadius(t / 2); - }, - }), - Konva.Util.extend(Konva.Star, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Star, 'numPoints', 5, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Star, 'innerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Star, 'outerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.Star); - })(), - (function () { - 'use strict'; - var a = ['fontFamily', 'fontSize', 'fontStyle', 'padding', 'lineHeight', 'text', 'width'], - l = 'right', - c = 'down', - d = 'left', - r = a.length; - (Konva.Label = function (t) { - this.____init(t); - }), - (Konva.Label.prototype = { - ____init: function (t) { - var e = this; - Konva.Group.call(this, t), - (this.className = 'Label'), - this.on('add.konva', function (t) { - e._addListeners(t.child), e._sync(); - }); - }, - getText: function () { - return this.find('Text')[0]; - }, - getTag: function () { - return this.find('Tag')[0]; - }, - _addListeners: function (t) { - var e, - i = this, - n = function () { - i._sync(); - }; - for (e = 0; e < r; e++) t.on(a[e] + 'Change.konva', n); - }, - getWidth: function () { - return this.getText().getWidth(); - }, - getHeight: function () { - return this.getText().getHeight(); - }, - _sync: function () { - var t, - e, - i, - n, - a, - r, - o, - s = this.getText(), - h = this.getTag(); - if (s && h) { - switch ( - ((t = s.getWidth()), - (e = s.getHeight()), - (i = h.getPointerDirection()), - (n = h.getPointerWidth()), - (o = h.getPointerHeight()), - (r = a = 0), - i) - ) { - case 'up': - (a = t / 2), (r = -1 * o); - break; - case l: - (a = t + n), (r = e / 2); - break; - case c: - (a = t / 2), (r = e + o); - break; - case d: - (a = -1 * n), (r = e / 2); - } - h.setAttrs({ x: -1 * a, y: -1 * r, width: t, height: e }), s.setAttrs({ x: -1 * a, y: -1 * r }); - } - }, - }), - Konva.Util.extend(Konva.Label, Konva.Group), - Konva.Collection.mapMethods(Konva.Label), - (Konva.Tag = function (t) { - this.___init(t); - }), - (Konva.Tag.prototype = { - ___init: function (t) { - Konva.Shape.call(this, t), (this.className = 'Tag'), this.sceneFunc(this._sceneFunc); - }, - _sceneFunc: function (t) { - var e = this.getWidth(), - i = this.getHeight(), - n = this.getPointerDirection(), - a = this.getPointerWidth(), - r = this.getPointerHeight(), - o = Math.min(this.getCornerRadius(), e / 2, i / 2); - t.beginPath(), - o ? t.moveTo(o, 0) : t.moveTo(0, 0), - 'up' === n && (t.lineTo((e - a) / 2, 0), t.lineTo(e / 2, -1 * r), t.lineTo((e + a) / 2, 0)), - o ? (t.lineTo(e - o, 0), t.arc(e - o, o, o, (3 * Math.PI) / 2, 0, !1)) : t.lineTo(e, 0), - n === l && (t.lineTo(e, (i - r) / 2), t.lineTo(e + a, i / 2), t.lineTo(e, (i + r) / 2)), - o ? (t.lineTo(e, i - o), t.arc(e - o, i - o, o, 0, Math.PI / 2, !1)) : t.lineTo(e, i), - n === c && (t.lineTo((e + a) / 2, i), t.lineTo(e / 2, i + r), t.lineTo((e - a) / 2, i)), - o ? (t.lineTo(o, i), t.arc(o, i - o, o, Math.PI / 2, Math.PI, !1)) : t.lineTo(0, i), - n === d && (t.lineTo(0, (i + r) / 2), t.lineTo(-1 * a, i / 2), t.lineTo(0, (i - r) / 2)), - o && (t.lineTo(0, o), t.arc(o, o, o, Math.PI, (3 * Math.PI) / 2, !1)), - t.closePath(), - t.fillStrokeShape(this); - }, - getSelfRect: function () { - var t = 0, - e = 0, - i = this.getPointerWidth(), - n = this.getPointerHeight(), - a = this.pointerDirection(), - r = this.getWidth(), - o = this.getHeight(); - return ( - 'up' === a - ? ((e -= n), (o += n)) - : a === c - ? (o += n) - : a === d - ? ((t -= 1.5 * i), (r += i)) - : a === l && (r += 1.5 * i), - { x: t, y: e, width: r, height: o } - ); - }, - }), - Konva.Util.extend(Konva.Tag, Konva.Shape), - Konva.Factory.addGetterSetter(Konva.Tag, 'pointerDirection', 'none'), - Konva.Factory.addGetterSetter(Konva.Tag, 'pointerWidth', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Tag, 'pointerHeight', 0, Konva.Validators.getNumberValidator()), - Konva.Factory.addGetterSetter(Konva.Tag, 'cornerRadius', 0, Konva.Validators.getNumberValidator()), - Konva.Collection.mapMethods(Konva.Tag); - })(), - (function (u) { - 'use strict'; - (u.Arrow = function (t) { - this.____init(t); - }), - (u.Arrow.prototype = { - ____init: function (t) { - u.Line.call(this, t), (this.className = 'Arrow'); - }, - _sceneFunc: function (t) { - u.Line.prototype._sceneFunc.apply(this, arguments); - var e = 2 * Math.PI, - i = this.points(), - n = i, - a = 0 !== this.getTension() && 4 < i.length; - a && (n = this.getTensionPoints()); - var r, - o, - s = i.length; - a - ? ((r = i[s - 2] - n[s - 2]), (o = i[s - 1] - n[s - 1])) - : ((r = i[s - 2] - i[s - 4]), (o = i[s - 1] - i[s - 3])); - var h = (Math.atan2(o, r) + e) % e, - l = this.pointerLength(), - c = this.pointerWidth(); - t.save(), - t.beginPath(), - t.translate(i[s - 2], i[s - 1]), - t.rotate(h), - t.moveTo(0, 0), - t.lineTo(-l, c / 2), - t.lineTo(-l, -c / 2), - t.closePath(), - t.restore(), - this.pointerAtBeginning() && - (t.save(), - t.translate(i[0], i[1]), - a ? ((r = n[0] - i[0]), (o = n[1] - i[1])) : ((r = i[2] - i[0]), (o = i[3] - i[1])), - t.rotate((Math.atan2(-o, -r) + e) % e), - t.moveTo(0, 0), - t.lineTo(-l, c / 2), - t.lineTo(-l, -c / 2), - t.closePath(), - t.restore()); - var d = this.dashEnabled(); - d && ((this.attrs.dashEnabled = !1), t.setLineDash([])), - t.fillStrokeShape(this), - d && (this.attrs.dashEnabled = !0); - }, - }), - u.Util.extend(u.Arrow, u.Line), - u.Factory.addGetterSetter(u.Arrow, 'pointerLength', 10, u.Validators.getNumberValidator()), - u.Factory.addGetterSetter(u.Arrow, 'pointerWidth', 10, u.Validators.getNumberValidator()), - u.Factory.addGetterSetter(u.Arrow, 'pointerAtBeginning', !1), - u.Collection.mapMethods(u.Arrow); - })(Konva), - (function (G) { - 'use strict'; - var e = [ - 'resizeEnabledChange', - 'rotateAnchorOffsetChange', - 'rotateEnabledChange', - 'enabledAnchorsChange', - 'anchorSizeChange', - 'borderEnabledChange', - 'borderStrokeChange', - 'borderStrokeWidthChange', - 'anchorStrokeChange', - 'anchorStrokeWidthChange', - 'anchorFillChange', - ].join(' '), - t = 'nodeRect', - i = [ - 'xChange.resizer', - 'yChange.resizer', - 'widthChange.resizer', - 'heightChange.resizer', - 'scaleXChange.resizer', - 'scaleYChange.resizer', - 'skewXChange.resizer', - 'skewYChange.resizer', - 'rotationChange.resizer', - 'offsetXChange.resizer', - 'offsetYChange.resizer', - 'transformsEnabledChange.resizer', - ].join(' '), - n = [ - 'widthChange.resizer', - 'heightChange.resizer', - 'scaleXChange.resizer', - 'scaleYChange.resizer', - 'skewXChange.resizer', - 'skewYChange.resizer', - 'rotationChange.resizer', - 'offsetXChange.resizer', - 'offsetYChange.resizer', - ].join(' '), - s = { - 'top-left': -45, - 'top-center': 0, - 'top-right': 45, - 'middle-right': -90, - 'middle-left': 90, - 'bottom-left': -135, - 'bottom-center': 180, - 'bottom-right': 135, - }; - G.Transformer = function (t) { - this.____init(t); - }; - var a = [ - 'top-left', - 'top-center', - 'top-right', - 'middle-right', - 'middle-left', - 'bottom-left', - 'bottom-center', - 'bottom-right', - ]; - (G.Transformer.prototype = { - _centroid: !1, - ____init: function (t) { - G.Group.call(this, t), - (this.className = 'Transformer'), - this._createElements(), - (this._handleMouseMove = this._handleMouseMove.bind(this)), - (this._handleMouseUp = this._handleMouseUp.bind(this)), - (this.update = this.update.bind(this)), - this.on(e, this.update), - this.getNode() && this.update(); - }, - attachTo: function (t) { - this.setNode(t); - }, - setNode: function (t) { - return ( - this._node && this.detach(), - (this._node = t), - this._resetTransformCache(), - t.on(i, this._resetTransformCache.bind(this)), - t.on( - n, - function () { - this._transforming || this.update(); - }.bind(this), - ), - !!this.findOne('.top-left') && this.update(), - this - ); - }, - getNode: function () { - return this._node; - }, - detach: function () { - this.getNode() && (this.getNode().off('.resizer'), (this._node = void 0)), this._resetTransformCache(); - }, - _resetTransformCache: function () { - this._clearCache(t), this._clearCache('transform'), this._clearSelfAndDescendantCache('absoluteTransform'); - }, - _getNodeRect: function () { - return this._getCache(t, this.__getNodeRect); - }, - __getNodeRect: function () { - var t = this.getNode(); - if (!t) return { x: -Number.MAX_SAFE_INTEGER, y: -Number.MAX_SAFE_INTEGER, width: 0, height: 0, rotation: 0 }; - var e = t.getClientRect({ skipTransform: !0 }), - i = G.getAngle(t.rotation()), - n = e.x * t.scaleX() - t.offsetX() * t.scaleX(), - a = e.y * t.scaleY() - t.offsetY() * t.scaleY(); - return { - x: t.x() + n * Math.cos(i) + a * Math.sin(-i), - y: t.y() + a * Math.cos(i) + n * Math.sin(i), - width: e.width * t.scaleX(), - height: e.height * t.scaleY(), - rotation: t.rotation(), - }; - }, - getX: function () { - return this._getNodeRect().x; - }, - getY: function () { - return this._getNodeRect().y; - }, - getRotation: function () { - return this._getNodeRect().rotation; - }, - getWidth: function () { - return this._getNodeRect().width; - }, - getHeight: function () { - return this._getNodeRect().height; - }, - _createElements: function () { - this._createBack(), - a.forEach( - function (t) { - this._createAnchor(t); - }.bind(this), - ), - this._createAnchor('rotater'); - }, - _createAnchor: function (r) { - var o = new G.Rect({ - stroke: 'rgb(0, 161, 255)', - fill: 'white', - strokeWidth: 1, - name: r + ' _anchor', - dragDistance: 0, - draggable: !0, - }), - e = this; - o.on('mousedown touchstart', function (t) { - e._handleMouseDown(t); - }), - o.on('dragstart', function (t) { - t.cancelBubble = !0; - }), - o.on('dragmove', function (t) { - t.cancelBubble = !0; - }), - o.on('dragend', function (t) { - t.cancelBubble = !0; - }), - o.on('mouseenter', function () { - var t = this.getParent(), - e = G.getAngle(t.rotation()), - i = t.getNode().getAbsoluteScale(), - n = i.y * i.x < 0, - a = (function (t, e, i) { - if ('rotater' === t) return 'crosshair'; - (e += G.Util._degToRad(s[t] || 0)), i && (e *= -1); - var n = ((G.Util._radToDeg(e) % 360) + 360) % 360; - return G.Util._inRange(n, 337.5, 360) || G.Util._inRange(n, 0, 22.5) - ? 'ns-resize' - : G.Util._inRange(n, 22.5, 67.5) - ? 'nesw-resize' - : G.Util._inRange(n, 67.5, 112.5) - ? 'ew-resize' - : G.Util._inRange(n, 112.5, 157.5) - ? 'nwse-resize' - : G.Util._inRange(n, 157.5, 202.5) - ? 'ns-resize' - : G.Util._inRange(n, 202.5, 247.5) - ? 'nesw-resize' - : G.Util._inRange(n, 247.5, 292.5) - ? 'ew-resize' - : G.Util._inRange(n, 292.5, 337.5) - ? 'nwse-resize' - : (G.Util.error('Transformer has unknown angle for cursor detection: ' + n), 'pointer'); - })(r, e, n); - (o.getStage().content.style.cursor = a), (t._cursorChange = !0); - }), - o.on('mouseout', function () { - o.getStage() && - this.getParent() && - ((o.getStage().content.style.cursor = ''), (this.getParent()._cursorChange = !1)); - }), - this.add(o); - }, - _createBack: function () { - var t = new G.Shape({ - name: 'back', - width: 0, - height: 0, - listening: !1, - sceneFunc: function (t) { - var e = this.getParent(), - i = e.getPadding(); - t.beginPath(), - t.rect(-i, -i, this.width() + 2 * i, this.height() + 2 * i), - t.moveTo(this.width() / 2, -i), - e.rotateEnabled() && t.lineTo(this.width() / 2, -e.rotateAnchorOffset() * G.Util._sign(this.height())), - t.fillStrokeShape(this); - }, - }); - this.add(t); - }, - _handleMouseDown: function (t) { - this.movingResizer = t.target.name().split(' ')[0]; - var e = this._getNodeRect(), - i = e.width, - n = e.height, - a = Math.sqrt(Math.pow(i, 2) + Math.pow(n, 2)); - (this.sin = n / a), - (this.cos = i / a), - window.addEventListener('mousemove', this._handleMouseMove), - window.addEventListener('touchmove', this._handleMouseMove), - window.addEventListener('mouseup', this._handleMouseUp, !0), - window.addEventListener('touchend', this._handleMouseUp, !0), - (this._transforming = !0), - this._fire('transformstart', { evt: t }), - this.getNode()._fire('transformstart', { evt: t }); - }, - _handleMouseMove: function (t) { - var e, - i, - n, - a = this.findOne('.' + this.movingResizer), - r = a.getStage().getContent().getBoundingClientRect(), - o = r.left, - s = r.top, - h = { - x: (void 0 !== t.clientX ? t.clientX : t.touches[0].clientX) - o, - y: (void 0 !== t.clientX ? t.clientY : t.touches[0].clientY) - s, - }; - a.setAbsolutePosition(h); - var l = this.keepRatio() || t.shiftKey; - if ('top-left' === this.movingResizer) - l && - ((e = - (n = Math.sqrt( - Math.pow(this.findOne('.bottom-right').x() - a.x(), 2) + - Math.pow(this.findOne('.bottom-right').y() - a.y(), 2), - )) * this.cos), - (i = n * this.sin), - this.findOne('.top-left').x(this.findOne('.bottom-right').x() - e), - this.findOne('.top-left').y(this.findOne('.bottom-right').y() - i)); - else if ('top-center' === this.movingResizer) this.findOne('.top-left').y(a.y()); - else if ('top-right' === this.movingResizer) { - l && - ((e = - (n = Math.sqrt( - Math.pow(this.findOne('.bottom-left').x() - a.x(), 2) + - Math.pow(this.findOne('.bottom-left').y() - a.y(), 2), - )) * this.cos), - (i = n * this.sin), - this.findOne('.top-right').x(e), - this.findOne('.top-right').y(this.findOne('.bottom-left').y() - i)); - var c = a.position(); - this.findOne('.top-left').y(c.y), this.findOne('.bottom-right').x(c.x); - } else if ('middle-left' === this.movingResizer) this.findOne('.top-left').x(a.x()); - else if ('middle-right' === this.movingResizer) this.findOne('.bottom-right').x(a.x()); - else if ('bottom-left' === this.movingResizer) - l && - ((e = - (n = Math.sqrt( - Math.pow(this.findOne('.top-right').x() - a.x(), 2) + - Math.pow(this.findOne('.top-right').y() - a.y(), 2), - )) * this.cos), - (i = n * this.sin), - this.findOne('.bottom-left').x(this.findOne('.top-right').x() - e), - this.findOne('.bottom-left').y(i)), - (c = a.position()), - this.findOne('.top-left').x(c.x), - this.findOne('.bottom-right').y(c.y); - else if ('bottom-center' === this.movingResizer) this.findOne('.bottom-right').y(a.y()); - else if ('bottom-right' === this.movingResizer) - l && - ((e = - (n = Math.sqrt( - Math.pow(this.findOne('.bottom-right').x(), 2) + Math.pow(this.findOne('.bottom-right').y(), 2), - )) * this.cos), - (i = n * this.sin), - this.findOne('.bottom-right').x(e), - this.findOne('.bottom-right').y(i)); - else if ('rotater' === this.movingResizer) { - var d = this.getPadding(), - u = this._getNodeRect(); - (e = a.x() - u.width / 2), (i = -a.y() + u.height / 2); - var g = Math.atan2(-i, e) + Math.PI / 2; - u.height < 0 && (g -= Math.PI); - for ( - var f = G.getAngle(this.rotation()), - v = G.Util._radToDeg(f) + G.Util._radToDeg(g), - p = G.getAngle(this.getNode().rotation()), - m = G.Util._degToRad(v), - _ = this.rotationSnaps(), - y = 0; - y < _.length; - y++ - ) { - var K = G.getAngle(_[y]); - Math.abs(K - G.Util._degToRad(v)) % (2 * Math.PI) < 0.1 && - ((v = G.Util._radToDeg(K)), (m = G.Util._degToRad(v))); - } - var S = d, - b = d; - this._fitNodeInto( - { - rotation: G.angleDeg ? v : G.Util._degToRad(v), - x: - u.x + - (u.width / 2 + d) * (Math.cos(p) - Math.cos(m)) + - (u.height / 2 + d) * (Math.sin(-p) - Math.sin(-m)) - - (S * Math.cos(f) + b * Math.sin(-f)), - y: - u.y + - (u.height / 2 + d) * (Math.cos(p) - Math.cos(m)) + - (u.width / 2 + d) * (Math.sin(p) - Math.sin(m)) - - (b * Math.cos(f) + S * Math.sin(f)), - width: u.width + 2 * d, - height: u.height + 2 * d, - }, - t, - ); - } else console.error(new Error('Wrong position argument of selection resizer: ', this.movingResizer)); - if ('rotater' !== this.movingResizer) { - var x = this.findOne('.top-left').getAbsolutePosition(this.getParent()); - if (this.getCenteredScaling() || t.altKey) { - var C = this.findOne('.top-left'), - w = this.findOne('.bottom-right'), - F = C.x(), - T = C.y(), - P = this.getWidth() - w.x(), - A = this.getHeight() - w.y(); - console.log(F, T, P, A), - w.move({ x: -F, y: -T }), - C.move({ x: P, y: A }), - (x = C.getAbsolutePosition(this.getParent())); - } - (e = x.x), (i = x.y); - var M = this.findOne('.bottom-right').x() - this.findOne('.top-left').x(), - k = this.findOne('.bottom-right').y() - this.findOne('.top-left').y(); - this._fitNodeInto({ x: e + this.offsetX(), y: i + this.offsetY(), width: M, height: k }, t); - } - }, - _handleMouseUp: function (t) { - this._removeEvents(t); - }, - _removeEvents: function (t) { - if (this._transforming) { - (this._transforming = !1), - window.removeEventListener('mousemove', this._handleMouseMove), - window.removeEventListener('touchmove', this._handleMouseMove), - window.removeEventListener('mouseup', this._handleMouseUp, !0), - window.removeEventListener('touchend', this._handleMouseUp, !0), - this._fire('transformend', { evt: t }); - var e = this.getNode(); - e && e.fire('transformend', { evt: t }); - } - }, - _fitNodeInto: function (t, e) { - var i = this.getBoundBoxFunc(); - if (i) { - var n = this._getNodeRect(); - t = i.call(this, n, t); - } - this._settings = !0; - var a = this.getNode(); - void 0 !== t.rotation && this.getNode().rotation(t.rotation); - var r = a.getClientRect({ skipTransform: !0 }), - o = this.getPadding(), - s = (t.width - 2 * o) / r.width, - h = (t.height - 2 * o) / r.height, - l = G.getAngle(a.getRotation()), - c = r.x * s - o - a.offsetX() * s, - d = r.y * h - o - a.offsetY() * h; - this.getNode().setAttrs({ - scaleX: s, - scaleY: h, - x: t.x - (c * Math.cos(l) + d * Math.sin(-l)), - y: t.y - (d * Math.cos(l) + c * Math.sin(l)), - }), - (this._settings = !1), - this._fire('transform', { evt: e }), - this.getNode()._fire('transform', { evt: e }), - this.update(), - this.getLayer().batchDraw(); - }, - forceUpdate: function () { - this._resetTransformCache(), this.update(); - }, - update: function () { - var t = this._getNodeRect(), - e = this.getNode(), - i = { x: 1, y: 1 }; - e && e.getParent() && (i = e.getParent().getAbsoluteScale()); - var n = { x: 1 / i.x, y: 1 / i.y }, - a = t.width, - r = t.height, - o = this.enabledAnchors(), - s = this.resizeEnabled(), - h = this.getPadding(), - l = this.getAnchorSize(); - this.find('._anchor').setAttrs({ - width: l, - height: l, - offsetX: l / 2, - offsetY: l / 2, - stroke: this.getAnchorStroke(), - strokeWidth: this.getAnchorStrokeWidth(), - fill: this.getAnchorFill(), - }), - this.findOne('.top-left').setAttrs({ x: -h, y: -h, scale: n, visible: s && 0 <= o.indexOf('top-left') }), - this.findOne('.top-center').setAttrs({ - x: a / 2, - y: -h, - scale: n, - visible: s && 0 <= o.indexOf('top-center'), - }), - this.findOne('.top-right').setAttrs({ x: a + h, y: -h, scale: n, visible: s && 0 <= o.indexOf('top-right') }), - this.findOne('.middle-left').setAttrs({ - x: -h, - y: r / 2, - scale: n, - visible: s && 0 <= o.indexOf('middle-left'), - }), - this.findOne('.middle-right').setAttrs({ - x: a + h, - y: r / 2, - scale: n, - visible: s && 0 <= o.indexOf('middle-right'), - }), - this.findOne('.bottom-left').setAttrs({ - x: -h, - y: r + h, - scale: n, - visible: s && 0 <= o.indexOf('bottom-left'), - }), - this.findOne('.bottom-center').setAttrs({ - x: a / 2, - y: r + h, - scale: n, - visible: s && 0 <= o.indexOf('bottom-center'), - }), - this.findOne('.bottom-right').setAttrs({ - x: a + h, - y: r + h, - scale: n, - visible: s && 0 <= o.indexOf('bottom-right'), - }); - var c = -this.rotateAnchorOffset() * Math.abs(n.y); - this.findOne('.rotater').setAttrs({ - x: a / 2, - y: c * G.Util._sign(r), - scale: n, - visible: this.rotateEnabled(), - }), - this.findOne('.back').setAttrs({ - width: a * i.x, - height: r * i.y, - scale: n, - visible: this.borderEnabled(), - stroke: this.getBorderStroke(), - strokeWidth: this.getBorderStrokeWidth(), - dash: this.getBorderDash(), - }); - }, - isTransforming: function () { - return this._transforming; - }, - stopTransform: function () { - if (this._transforming) { - this._removeEvents(); - var t = this.findOne('.' + this.movingResizer); - t && t.stopDrag(); - } - }, - destroy: function () { - this.getStage() && this._cursorChange && (this.getStage().content.style.cursor = ''), - G.Group.prototype.destroy.call(this), - this.detach(), - this._removeEvents(); - }, - toObject: function () { - return G.Node.prototype.toObject.call(this); - }, - }), - G.Util.extend(G.Transformer, G.Group), - G.Factory.addGetterSetter(G.Transformer, 'enabledAnchors', a, function (t) { - return ( - t instanceof Array || G.Util.warn('enabledAnchors value should be an array'), - t instanceof Array && - t.forEach(function (t) { - -1 === a.indexOf(t) && - G.Util.warn('Unknown anchor name: ' + t + '. Available names are: ' + a.join(', ')); - }), - t || [] - ); - }), - G.Factory.addGetterSetter(G.Transformer, 'resizeEnabled', !0), - G.Factory.addGetterSetter(G.Transformer, 'anchorSize', 10, G.Validators.getNumberValidator()), - G.Factory.addGetterSetter(G.Transformer, 'rotateEnabled', !0), - G.Factory.addGetterSetter(G.Transformer, 'rotationSnaps', []), - G.Factory.addGetterSetter(G.Transformer, 'rotateAnchorOffset', 50, G.Validators.getNumberValidator()), - G.Factory.addGetterSetter(G.Transformer, 'borderEnabled', !0), - G.Factory.addGetterSetter(G.Transformer, 'anchorStroke', 'rgb(0, 161, 255)'), - G.Factory.addGetterSetter(G.Transformer, 'anchorStrokeWidth', 1, G.Validators.getNumberValidator()), - G.Factory.addGetterSetter(G.Transformer, 'anchorFill', 'white'), - G.Factory.addGetterSetter(G.Transformer, 'borderStroke', 'rgb(0, 161, 255)'), - G.Factory.addGetterSetter(G.Transformer, 'borderStrokeWidth', 1, G.Validators.getNumberValidator()), - G.Factory.addGetterSetter(G.Transformer, 'borderDash'), - G.Factory.addGetterSetter(G.Transformer, 'keepRatio', !0), - G.Factory.addGetterSetter(G.Transformer, 'centeredScaling', !1), - G.Factory.addGetterSetter(G.Transformer, 'padding', 0, G.Validators.getNumberValidator()), - G.Factory.addOverloadedGetterSetter(G.Transformer, 'node'), - G.Factory.addGetterSetter(G.Transformer, 'boundBoxFunc'), - G.Factory.backCompat(G.Transformer, { - lineEnabled: 'borderEnabled', - rotateHandlerOffset: 'rotateAnchorOffset', - enabledHandlers: 'enabledAnchors', - }), - G.Collection.mapMethods(G.Transformer); - })(Konva); diff --git a/src/pages/Page/canvas/ConstellationDiagram/_星座图示例数据_100.ts b/src/pages/Page/iframe-page/_星座图示例数据_100.ts similarity index 100% rename from src/pages/Page/canvas/ConstellationDiagram/_星座图示例数据_100.ts rename to src/pages/Page/iframe-page/_星座图示例数据_100.ts diff --git a/src/pages/Page/canvas/ConstellationDiagram/_星座图示例数据_50.ts b/src/pages/Page/iframe-page/_星座图示例数据_50.ts similarity index 100% rename from src/pages/Page/canvas/ConstellationDiagram/_星座图示例数据_50.ts rename to src/pages/Page/iframe-page/_星座图示例数据_50.ts diff --git a/typed-router.d.ts b/typed-router.d.ts index ecaf834..c89c109 100644 --- a/typed-router.d.ts +++ b/typed-router.d.ts @@ -26,8 +26,6 @@ declare module 'vue-router/auto-routes' { 'FlowbiteSidebar': RouteRecordInfo<'FlowbiteSidebar', '/FlowbiteSidebar', Record, Record>, 'Home': RouteRecordInfo<'Home', '/Home', Record, Record>, 'PageAPI': RouteRecordInfo<'PageAPI', '/Page/API', Record, Record>, - 'PageCanvasConstellationDiagram': RouteRecordInfo<'PageCanvasConstellationDiagram', '/Page/canvas/ConstellationDiagram', Record, Record>, - 'PageCanvasSpectrogram': RouteRecordInfo<'PageCanvasSpectrogram', '/Page/canvas/Spectrogram', Record, Record>, 'PageFonts': RouteRecordInfo<'PageFonts', '/Page/fonts', Record, Record>, 'PageIcons': RouteRecordInfo<'PageIcons', '/Page/Icons', Record, Record>, 'PageIframePageIframeConstellationDiagram': RouteRecordInfo<'PageIframePageIframeConstellationDiagram', '/Page/iframe-page/IframeConstellationDiagram', Record, Record>,