kritzel-stencil 0.0.112 → 0.0.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
- package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
- package/dist/cjs/index-C2M4eyxF.js +652 -0
- package/dist/cjs/index-C2M4eyxF.js.map +1 -0
- package/dist/cjs/{index-D62tBCuq.js → index-CXT94beA.js} +111 -109
- package/dist/cjs/index-CXT94beA.js.map +1 -0
- package/dist/cjs/index.cjs.js +5 -0
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +131 -734
- package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +4 -3
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/stencil.cjs.js +5 -4
- package/dist/cjs/stencil.cjs.js.map +1 -1
- package/dist/collection/classes/handlers/key.handler.js +8 -5
- package/dist/collection/classes/handlers/key.handler.js.map +1 -1
- package/dist/collection/classes/store.class.js +12 -8
- package/dist/collection/classes/store.class.js.map +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +217 -4
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +96 -20
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +4 -5
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -1
- package/dist/collection/index.js +10 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/components/index.js +2 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/kritzel-brush-style.js +1 -1
- package/dist/components/kritzel-color-palette.js +1 -1
- package/dist/components/kritzel-color.js +1 -1
- package/dist/components/kritzel-context-menu.js +1 -1
- package/dist/components/kritzel-control-brush-config.js +1 -1
- package/dist/components/kritzel-control-text-config.js +1 -1
- package/dist/components/kritzel-controls.js +1 -1
- package/dist/components/kritzel-cursor-trail.js +1 -1
- package/dist/components/kritzel-dropdown.js +1 -1
- package/dist/components/kritzel-editor.js +52 -24
- package/dist/components/kritzel-editor.js.map +1 -1
- package/dist/components/kritzel-engine.js +1 -1
- package/dist/components/kritzel-font-family.js +1 -1
- package/dist/components/kritzel-font-size.js +1 -1
- package/dist/components/kritzel-font.js +1 -1
- package/dist/components/kritzel-icon.js +1 -1
- package/dist/components/kritzel-stroke-size.js +1 -1
- package/dist/components/kritzel-tooltip.js +1 -1
- package/dist/components/kritzel-utility-panel.js +1 -1
- package/dist/components/{p-CmckGlXt.js → p-B57pFHwJ.js} +3 -3
- package/dist/components/{p-CmckGlXt.js.map → p-B57pFHwJ.js.map} +1 -1
- package/dist/components/{p-Ddfewfv9.js → p-B94Na1ee.js} +4 -4
- package/dist/components/{p-Ddfewfv9.js.map → p-B94Na1ee.js.map} +1 -1
- package/dist/components/{p-Ck2d5Wd1.js → p-BH1Tkwyh.js} +5 -5
- package/dist/components/{p-Ck2d5Wd1.js.map → p-BH1Tkwyh.js.map} +1 -1
- package/dist/components/{p-DqZOaMbq.js → p-BIlVkMTU.js} +378 -378
- package/dist/components/p-BIlVkMTU.js.map +1 -0
- package/dist/components/{p-BXJ8s30N.js → p-BtjtAfGW.js} +10 -10
- package/dist/components/{p-BXJ8s30N.js.map → p-BtjtAfGW.js.map} +1 -1
- package/dist/components/{p-DInF8Iby.js → p-C9FTWNZY.js} +3 -3
- package/dist/components/{p-DInF8Iby.js.map → p-C9FTWNZY.js.map} +1 -1
- package/dist/components/{p-B7P9QBiE.js → p-C9ZagG9K.js} +4 -4
- package/dist/components/{p-B7P9QBiE.js.map → p-C9ZagG9K.js.map} +1 -1
- package/dist/components/{p-BmAloSfd.js → p-CRiUM-tD.js} +4 -4
- package/dist/components/{p-BmAloSfd.js.map → p-CRiUM-tD.js.map} +1 -1
- package/dist/components/{p-BvPTbq7F.js → p-CSSrNLad.js} +3 -3
- package/dist/components/{p-BvPTbq7F.js.map → p-CSSrNLad.js.map} +1 -1
- package/dist/components/{p-DFhbw-Fr.js → p-CaQ7Iei7.js} +3 -3
- package/dist/components/{p-DFhbw-Fr.js.map → p-CaQ7Iei7.js.map} +1 -1
- package/dist/components/{p-CPjl7Inl.js → p-D04aTZsR.js} +4 -4
- package/dist/components/{p-CPjl7Inl.js.map → p-D04aTZsR.js.map} +1 -1
- package/dist/components/{p-maiDeBe9.js → p-DLV-5gE_.js} +9 -9
- package/dist/components/{p-maiDeBe9.js.map → p-DLV-5gE_.js.map} +1 -1
- package/dist/components/{p-DC8SDK2U.js → p-DoQOtXjT.js} +111 -107
- package/dist/components/p-DoQOtXjT.js.map +1 -0
- package/dist/components/{p--2WHhuBI.js → p-aZgXbW1r.js} +51 -36
- package/dist/components/{p--2WHhuBI.js.map → p-aZgXbW1r.js.map} +1 -1
- package/dist/components/{p-DfMdBA8L.js → p-fmNiA3Yr.js} +4 -4
- package/dist/components/{p-DfMdBA8L.js.map → p-fmNiA3Yr.js.map} +1 -1
- package/dist/components/{p-c6tIpE_t.js → p-h3bqYufZ.js} +3 -3
- package/dist/components/{p-c6tIpE_t.js.map → p-h3bqYufZ.js.map} +1 -1
- package/dist/components/{p-CZkSABuJ.js → p-ksTCzgsY.js} +3 -3
- package/dist/components/{p-CZkSABuJ.js.map → p-ksTCzgsY.js.map} +1 -1
- package/dist/components/{p-BnsTGnvc.js → p-mz1ayKXG.js} +21 -22
- package/dist/components/p-mz1ayKXG.js.map +1 -0
- package/dist/components/{p-DHT5gK0E.js → p-yBnfPxIa.js} +4 -4
- package/dist/components/{p-DHT5gK0E.js.map → p-yBnfPxIa.js.map} +1 -1
- package/dist/esm/app-globals-DQuL1Twl.js +6 -0
- package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
- package/dist/esm/{index-BOJOOWaP.js → index-CGHvfMWF.js} +112 -109
- package/dist/esm/index-CGHvfMWF.js.map +1 -0
- package/dist/esm/index-rckCSz7Y.js +641 -0
- package/dist/esm/index-rckCSz7Y.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/kritzel-brush-style_18.entry.js +73 -676
- package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -1
- package/dist/esm/loader.js +4 -3
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/stencil.js +5 -4
- package/dist/esm/stencil.js.map +1 -1
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/loader.esm.js.map +1 -1
- package/dist/stencil/p-9394d74e.entry.js +2 -0
- package/dist/stencil/p-9394d74e.entry.js.map +1 -0
- package/dist/stencil/p-CGHvfMWF.js +3 -0
- package/dist/stencil/p-CGHvfMWF.js.map +1 -0
- package/dist/stencil/p-DQuL1Twl.js +2 -0
- package/dist/stencil/p-DQuL1Twl.js.map +1 -0
- package/dist/stencil/p-rckCSz7Y.js +2 -0
- package/dist/stencil/p-rckCSz7Y.js.map +1 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/stencil/stencil.esm.js.map +1 -1
- package/dist/types/classes/store.class.d.ts +4 -4
- package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +10 -2
- package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +4 -2
- package/dist/types/components.d.ts +13 -4
- package/dist/types/index.d.ts +1 -0
- package/dist/types/stencil-public-runtime.d.ts +12 -5
- package/package.json +1 -1
- package/dist/cjs/index-D62tBCuq.js.map +0 -1
- package/dist/components/p-BnsTGnvc.js.map +0 -1
- package/dist/components/p-DC8SDK2U.js.map +0 -1
- package/dist/components/p-DqZOaMbq.js.map +0 -1
- package/dist/esm/index-BOJOOWaP.js.map +0 -1
- package/dist/stencil/p-65e86254.entry.js +0 -2
- package/dist/stencil/p-65e86254.entry.js.map +0 -1
- package/dist/stencil/p-BOJOOWaP.js +0 -3
- package/dist/stencil/p-BOJOOWaP.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-CXT94beA.js');
|
|
4
|
+
var index$1 = require('./index-C2M4eyxF.js');
|
|
4
5
|
|
|
5
6
|
const kritzelBrushStyleCss = ":host{display:flex;align-items:flex-start;gap:8px;padding:8px;box-sizing:border-box;width:100%}.brush-style-button{display:flex;justify-content:center;align-items:center;width:42px;height:32px;padding:0;border:none;outline:none;background:none;cursor:default;border-radius:0;color:var(--control-text-color);font-weight:bold;-webkit-tap-highlight-color:transparent}.font-style-button:not(:last-child){border-right:1px solid #333333}.font-style-button:hover{background-color:var(--control-hover-bg)}.font-style-button:active{background-color:var(--control-active-bg)}.font-style-button.selected,.font-style-button.selected:hover,.font-style-button.selected:active{background-color:var(--control-selected-bg);color:var(--control-selected-color)}";
|
|
6
7
|
|
|
@@ -225,98 +226,6 @@ const KritzelControlTextConfig = class {
|
|
|
225
226
|
};
|
|
226
227
|
KritzelControlTextConfig.style = kritzelControlTextConfigCss;
|
|
227
228
|
|
|
228
|
-
var KritzelMouseButton;
|
|
229
|
-
(function (KritzelMouseButton) {
|
|
230
|
-
KritzelMouseButton[KritzelMouseButton["Left"] = 0] = "Left";
|
|
231
|
-
KritzelMouseButton[KritzelMouseButton["Middle"] = 1] = "Middle";
|
|
232
|
-
KritzelMouseButton[KritzelMouseButton["Right"] = 2] = "Right";
|
|
233
|
-
})(KritzelMouseButton || (KritzelMouseButton = {}));
|
|
234
|
-
|
|
235
|
-
class KritzelEventHelper {
|
|
236
|
-
static isRightClick(ev) {
|
|
237
|
-
return ev.button === KritzelMouseButton.Right;
|
|
238
|
-
}
|
|
239
|
-
static isLeftClick(ev) {
|
|
240
|
-
return ev.button === KritzelMouseButton.Left;
|
|
241
|
-
}
|
|
242
|
-
static isMainMouseWheel(event) {
|
|
243
|
-
return Math.abs(event.deltaY) > 0 && Math.abs(event.deltaX) === 0 && Number.isInteger(event.deltaY);
|
|
244
|
-
}
|
|
245
|
-
static isPointerEventOnContextMenu(event) {
|
|
246
|
-
const path = event.composedPath();
|
|
247
|
-
const contextMenu = path.find(element => element.classList && element.classList.contains('context-menu'));
|
|
248
|
-
return !!contextMenu;
|
|
249
|
-
}
|
|
250
|
-
static onLongTouchPress(event, onSuccess, onCancel) {
|
|
251
|
-
if (event.pointerType !== 'touch') {
|
|
252
|
-
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
253
|
-
return () => { };
|
|
254
|
-
}
|
|
255
|
-
const longPressTimeout = 400;
|
|
256
|
-
const moveThreshold = 10;
|
|
257
|
-
const startX = event.clientX;
|
|
258
|
-
const startY = event.clientY;
|
|
259
|
-
const target = event.target;
|
|
260
|
-
const timer = setTimeout(() => {
|
|
261
|
-
removeListeners();
|
|
262
|
-
onSuccess(event);
|
|
263
|
-
}, longPressTimeout);
|
|
264
|
-
const cancel = () => {
|
|
265
|
-
clearTimeout(timer);
|
|
266
|
-
removeListeners();
|
|
267
|
-
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
268
|
-
};
|
|
269
|
-
const onPointerMove = (e) => {
|
|
270
|
-
if (Math.abs(e.clientX - startX) > moveThreshold || Math.abs(e.clientY - startY) > moveThreshold) {
|
|
271
|
-
cancel();
|
|
272
|
-
}
|
|
273
|
-
};
|
|
274
|
-
const onPointerUp = () => {
|
|
275
|
-
cancel();
|
|
276
|
-
};
|
|
277
|
-
const onPointerCancel = () => {
|
|
278
|
-
cancel();
|
|
279
|
-
};
|
|
280
|
-
const removeListeners = () => {
|
|
281
|
-
target.removeEventListener('pointermove', onPointerMove);
|
|
282
|
-
target.removeEventListener('pointerup', onPointerUp);
|
|
283
|
-
target.removeEventListener('pointercancel', onPointerCancel);
|
|
284
|
-
};
|
|
285
|
-
target.addEventListener('pointermove', onPointerMove, { passive: true });
|
|
286
|
-
target.addEventListener('pointerup', onPointerUp, { once: true });
|
|
287
|
-
target.addEventListener('pointercancel', onPointerCancel, { once: true });
|
|
288
|
-
return cancel;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
class KritzelBaseCommand {
|
|
293
|
-
constructor(store, initiator) {
|
|
294
|
-
var _a, _b;
|
|
295
|
-
this._store = store;
|
|
296
|
-
this.initiator = (_b = (_a = initiator === null || initiator === void 0 ? void 0 : initiator.constructor) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'Unknown';
|
|
297
|
-
this.isUndoable = true;
|
|
298
|
-
}
|
|
299
|
-
execute() {
|
|
300
|
-
throw new Error('Method not implemented.');
|
|
301
|
-
}
|
|
302
|
-
undo() {
|
|
303
|
-
throw new Error('Method not implemented.');
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
class AddObjectCommand extends KritzelBaseCommand {
|
|
308
|
-
constructor(store, initiator, object) {
|
|
309
|
-
super(store, initiator);
|
|
310
|
-
this.object = object;
|
|
311
|
-
}
|
|
312
|
-
execute() {
|
|
313
|
-
this._store.state.objectsOctree.insert(this.object);
|
|
314
|
-
}
|
|
315
|
-
undo() {
|
|
316
|
-
this._store.state.objectsOctree.remove(object => object.id === this.object.id);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
|
|
320
229
|
var cjs = {};
|
|
321
230
|
|
|
322
231
|
var hasRequiredCjs;
|
|
@@ -338,226 +247,7 @@ class KritzelMathHelper {
|
|
|
338
247
|
}
|
|
339
248
|
}
|
|
340
249
|
|
|
341
|
-
|
|
342
|
-
var t = {};
|
|
343
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
344
|
-
t[p] = s[p];
|
|
345
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
346
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
347
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
348
|
-
t[p[i]] = s[p[i]];
|
|
349
|
-
}
|
|
350
|
-
return t;
|
|
351
|
-
};
|
|
352
|
-
class ObjectHelper {
|
|
353
|
-
static generateUUID() {
|
|
354
|
-
return Math.random().toString(36).substr(2, 9);
|
|
355
|
-
}
|
|
356
|
-
static clone(objOrObjs) {
|
|
357
|
-
const cloneObject = (obj) => {
|
|
358
|
-
const remainingProps = __rest(obj, ["_store", "_elementRef", "totalWidth", "totalHeight"]);
|
|
359
|
-
return structuredClone(remainingProps);
|
|
360
|
-
};
|
|
361
|
-
if (Array.isArray(objOrObjs)) {
|
|
362
|
-
return objOrObjs.map(cloneObject);
|
|
363
|
-
}
|
|
364
|
-
return cloneObject(objOrObjs);
|
|
365
|
-
}
|
|
366
|
-
static isEmpty(obj) {
|
|
367
|
-
if (obj === null || obj === undefined) {
|
|
368
|
-
return true;
|
|
369
|
-
}
|
|
370
|
-
return (Object === null || Object === void 0 ? void 0 : Object.keys(obj).length) === 0 && (obj === null || obj === void 0 ? void 0 : obj.constructor) === Object;
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
class KritzelBaseObject {
|
|
375
|
-
get totalWidth() {
|
|
376
|
-
return this.width + this.padding * 2;
|
|
377
|
-
}
|
|
378
|
-
get totalHeight() {
|
|
379
|
-
return this.height + this.padding * 2;
|
|
380
|
-
}
|
|
381
|
-
set elementRef(element) {
|
|
382
|
-
this._elementRef = element;
|
|
383
|
-
}
|
|
384
|
-
get elementRef() {
|
|
385
|
-
return this._elementRef;
|
|
386
|
-
}
|
|
387
|
-
get boundingBox() {
|
|
388
|
-
return {
|
|
389
|
-
x: this.translateX,
|
|
390
|
-
y: this.translateY,
|
|
391
|
-
z: this.scale,
|
|
392
|
-
width: this.totalWidth / this.scale,
|
|
393
|
-
height: this.totalHeight / this.scale,
|
|
394
|
-
depth: 0,
|
|
395
|
-
};
|
|
396
|
-
}
|
|
397
|
-
get rotatedBoundingBox() {
|
|
398
|
-
return {
|
|
399
|
-
x: this.minXRotated,
|
|
400
|
-
y: this.minYRotated,
|
|
401
|
-
z: this.scale,
|
|
402
|
-
width: this.maxXRotated - this.minXRotated,
|
|
403
|
-
height: this.maxYRotated - this.minYRotated,
|
|
404
|
-
depth: 0,
|
|
405
|
-
};
|
|
406
|
-
}
|
|
407
|
-
get rotatedPolygon() {
|
|
408
|
-
const cx = (this.translateX + this.totalWidth / 2 / this.scale);
|
|
409
|
-
const cy = (this.translateY + this.totalHeight / 2 / this.scale);
|
|
410
|
-
const angle = this.rotation;
|
|
411
|
-
const adjustedWidth = this.totalWidth / this.scale;
|
|
412
|
-
const adjustedHeight = this.totalHeight / this.scale;
|
|
413
|
-
const corners = {
|
|
414
|
-
topLeft: { x: this.translateX, y: this.translateY },
|
|
415
|
-
topRight: { x: this.translateX + adjustedWidth, y: this.translateY },
|
|
416
|
-
bottomRight: { x: this.translateX + adjustedWidth, y: this.translateY + adjustedHeight },
|
|
417
|
-
bottomLeft: { x: this.translateX, y: this.translateY + adjustedHeight },
|
|
418
|
-
};
|
|
419
|
-
const rotatedCorners = Object.keys(corners).reduce((acc, key) => {
|
|
420
|
-
const corner = corners[key];
|
|
421
|
-
const rotatedX = Math.cos(angle) * (corner.x - cx) - Math.sin(angle) * (corner.y - cy) + cx;
|
|
422
|
-
const rotatedY = Math.sin(angle) * (corner.x - cx) + Math.cos(angle) * (corner.y - cy) + cy;
|
|
423
|
-
acc[key] = { x: rotatedX, y: rotatedY };
|
|
424
|
-
return acc;
|
|
425
|
-
}, {});
|
|
426
|
-
return rotatedCorners;
|
|
427
|
-
}
|
|
428
|
-
get minXRotated() {
|
|
429
|
-
const corners = [
|
|
430
|
-
this.rotatedPolygon.topLeft.x,
|
|
431
|
-
this.rotatedPolygon.topRight.x,
|
|
432
|
-
this.rotatedPolygon.bottomRight.x,
|
|
433
|
-
this.rotatedPolygon.bottomLeft.x,
|
|
434
|
-
];
|
|
435
|
-
return Math.min(...corners);
|
|
436
|
-
}
|
|
437
|
-
get minYRotated() {
|
|
438
|
-
const corners = [
|
|
439
|
-
this.rotatedPolygon.topLeft.y,
|
|
440
|
-
this.rotatedPolygon.topRight.y,
|
|
441
|
-
this.rotatedPolygon.bottomRight.y,
|
|
442
|
-
this.rotatedPolygon.bottomLeft.y,
|
|
443
|
-
];
|
|
444
|
-
return Math.min(...corners);
|
|
445
|
-
}
|
|
446
|
-
get maxXRotated() {
|
|
447
|
-
const corners = [
|
|
448
|
-
this.rotatedPolygon.topLeft.x,
|
|
449
|
-
this.rotatedPolygon.topRight.x,
|
|
450
|
-
this.rotatedPolygon.bottomRight.x,
|
|
451
|
-
this.rotatedPolygon.bottomLeft.x,
|
|
452
|
-
];
|
|
453
|
-
return Math.max(...corners);
|
|
454
|
-
}
|
|
455
|
-
get maxYRotated() {
|
|
456
|
-
const corners = [
|
|
457
|
-
this.rotatedPolygon.topLeft.y,
|
|
458
|
-
this.rotatedPolygon.topRight.y,
|
|
459
|
-
this.rotatedPolygon.bottomRight.y,
|
|
460
|
-
this.rotatedPolygon.bottomLeft.y,
|
|
461
|
-
];
|
|
462
|
-
return Math.max(...corners);
|
|
463
|
-
}
|
|
464
|
-
get transformationMatrix() {
|
|
465
|
-
const scale = 1 / this.scale;
|
|
466
|
-
const translateX = this.translateX;
|
|
467
|
-
const translateY = this.translateY;
|
|
468
|
-
return `matrix(${scale}, 0, 0, ${scale}, ${translateX}, ${translateY})`;
|
|
469
|
-
}
|
|
470
|
-
get rotationDegrees() {
|
|
471
|
-
return this.rotation * (180 / Math.PI);
|
|
472
|
-
}
|
|
473
|
-
get centerX() {
|
|
474
|
-
return this.translateX + this.totalWidth / 2;
|
|
475
|
-
}
|
|
476
|
-
get centerY() {
|
|
477
|
-
return this.translateY + this.totalHeight / 2;
|
|
478
|
-
}
|
|
479
|
-
constructor() {
|
|
480
|
-
this.__class__ = 'KritzelBaseObject';
|
|
481
|
-
this.visible = true;
|
|
482
|
-
this.borderWidth = 0;
|
|
483
|
-
this.opacity = 1;
|
|
484
|
-
this.padding = 0;
|
|
485
|
-
this.selected = false;
|
|
486
|
-
this.resizing = false;
|
|
487
|
-
this.rotation = 0;
|
|
488
|
-
this.markedForRemoval = false;
|
|
489
|
-
this.isMounted = false;
|
|
490
|
-
this.zIndex = 0;
|
|
491
|
-
this.debugInfoVisible = false;
|
|
492
|
-
this.id = this.generateId();
|
|
493
|
-
}
|
|
494
|
-
static create(store) {
|
|
495
|
-
const object = new KritzelBaseObject();
|
|
496
|
-
object._store = store;
|
|
497
|
-
object.zIndex = store.currentZIndex;
|
|
498
|
-
return object;
|
|
499
|
-
}
|
|
500
|
-
mount(element) {
|
|
501
|
-
if (this.isMounted) {
|
|
502
|
-
return;
|
|
503
|
-
}
|
|
504
|
-
this.elementRef = element;
|
|
505
|
-
this.isMounted = true;
|
|
506
|
-
}
|
|
507
|
-
generateId() {
|
|
508
|
-
return ObjectHelper.generateUUID();
|
|
509
|
-
}
|
|
510
|
-
isInViewport() {
|
|
511
|
-
const viewportBounds = {
|
|
512
|
-
x: -this._store.state.translateX / this._store.state.scale,
|
|
513
|
-
y: -this._store.state.translateY / this._store.state.scale,
|
|
514
|
-
width: this._store.state.viewportWidth / this._store.state.scale,
|
|
515
|
-
height: this._store.state.viewportHeight / this._store.state.scale};
|
|
516
|
-
return this.boundingBox.x < viewportBounds.x + viewportBounds.width &&
|
|
517
|
-
this.boundingBox.x + this.boundingBox.width > viewportBounds.x &&
|
|
518
|
-
this.boundingBox.y < viewportBounds.y + viewportBounds.height &&
|
|
519
|
-
this.boundingBox.y + this.boundingBox.height > viewportBounds.y;
|
|
520
|
-
}
|
|
521
|
-
centerInViewport() {
|
|
522
|
-
const scale = this._store.state.scale;
|
|
523
|
-
this.translateX = (this._store.state.viewportWidth / 2 - this.totalWidth / 2 - this._store.state.translateX) / scale;
|
|
524
|
-
this.translateY = (this._store.state.viewportHeight / 2 - this.totalHeight / 2 - this._store.state.translateY) / scale;
|
|
525
|
-
}
|
|
526
|
-
move(startX, startY, endX, endY) {
|
|
527
|
-
const deltaX = (startX - endX) / this._store.state.scale;
|
|
528
|
-
const deltaY = (startY - endY) / this._store.state.scale;
|
|
529
|
-
this.translateX += deltaX;
|
|
530
|
-
this.translateY += deltaY;
|
|
531
|
-
}
|
|
532
|
-
resize(x, y, width, height) {
|
|
533
|
-
if (width <= 1 || height <= 1) {
|
|
534
|
-
return;
|
|
535
|
-
}
|
|
536
|
-
this.width = width;
|
|
537
|
-
this.height = height;
|
|
538
|
-
this.translateX = x;
|
|
539
|
-
this.translateY = y;
|
|
540
|
-
}
|
|
541
|
-
rotate(value) {
|
|
542
|
-
this.rotation = value;
|
|
543
|
-
}
|
|
544
|
-
copy() {
|
|
545
|
-
const copiedObject = Object.create(Object.getPrototypeOf(this));
|
|
546
|
-
Object.assign(copiedObject, this);
|
|
547
|
-
copiedObject.id = this.generateId();
|
|
548
|
-
copiedObject.isMounted = false;
|
|
549
|
-
return copiedObject;
|
|
550
|
-
}
|
|
551
|
-
onSelectedClick() {
|
|
552
|
-
// This method can be overridden by subclasses to handle click events when the object is selected.
|
|
553
|
-
}
|
|
554
|
-
revive(object) {
|
|
555
|
-
Object.assign(this, object);
|
|
556
|
-
return this;
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
class KritzelPath extends KritzelBaseObject {
|
|
250
|
+
class KritzelPath extends index$1.KritzelBaseObject {
|
|
561
251
|
constructor() {
|
|
562
252
|
super(...arguments);
|
|
563
253
|
this.__class__ = 'KritzelPath';
|
|
@@ -675,37 +365,7 @@ class KritzelPath extends KritzelBaseObject {
|
|
|
675
365
|
}
|
|
676
366
|
}
|
|
677
367
|
|
|
678
|
-
class KritzelBaseTool {
|
|
679
|
-
constructor(store) {
|
|
680
|
-
this.__class__ = this.constructor.name;
|
|
681
|
-
this.name = 'base-tool';
|
|
682
|
-
this._store = store;
|
|
683
|
-
}
|
|
684
|
-
onActivate() {
|
|
685
|
-
// default implementation
|
|
686
|
-
}
|
|
687
|
-
onDeactivate() {
|
|
688
|
-
// default implementation
|
|
689
|
-
}
|
|
690
|
-
handlePointerDown(_event) {
|
|
691
|
-
// default implementation
|
|
692
|
-
}
|
|
693
|
-
handlePointerMove(_event) {
|
|
694
|
-
// default implementation
|
|
695
|
-
}
|
|
696
|
-
handlePointerUp(_event) {
|
|
697
|
-
// default implementation
|
|
698
|
-
}
|
|
699
|
-
handleWheel(_event) {
|
|
700
|
-
// default implementation
|
|
701
|
-
}
|
|
702
|
-
revive(object) {
|
|
703
|
-
Object.assign(this, object);
|
|
704
|
-
return this;
|
|
705
|
-
}
|
|
706
|
-
}
|
|
707
|
-
|
|
708
|
-
class KritzelBrushTool extends KritzelBaseTool {
|
|
368
|
+
class KritzelBrushTool extends index$1.KritzelBaseTool {
|
|
709
369
|
constructor(store) {
|
|
710
370
|
super(store);
|
|
711
371
|
this.type = 'pen';
|
|
@@ -721,7 +381,7 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
721
381
|
event.preventDefault();
|
|
722
382
|
}
|
|
723
383
|
if (event.pointerType === 'mouse') {
|
|
724
|
-
if (KritzelEventHelper.isLeftClick(event)) {
|
|
384
|
+
if (index$1.KritzelEventHelper.isLeftClick(event)) {
|
|
725
385
|
this._store.state.isDrawing = true;
|
|
726
386
|
const x = event.clientX - this._store.offsetX;
|
|
727
387
|
const y = event.clientY - this._store.offsetY;
|
|
@@ -798,7 +458,7 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
798
458
|
this._store.state.isDrawing = false;
|
|
799
459
|
if (this._store.state.currentPath) {
|
|
800
460
|
this._store.state.currentPath.zIndex = this._store.currentZIndex;
|
|
801
|
-
this._store.history.executeCommand(new AddObjectCommand(this._store, this, this._store.state.currentPath));
|
|
461
|
+
this._store.history.executeCommand(new index$1.AddObjectCommand(this._store, this, this._store.state.currentPath));
|
|
802
462
|
}
|
|
803
463
|
this._store.state.currentPath = undefined;
|
|
804
464
|
}
|
|
@@ -808,7 +468,7 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
808
468
|
this._store.state.isDrawing = false;
|
|
809
469
|
if (this._store.state.currentPath) {
|
|
810
470
|
this._store.state.currentPath.zIndex = this._store.currentZIndex;
|
|
811
|
-
this._store.history.executeCommand(new AddObjectCommand(this._store, this, this._store.state.currentPath));
|
|
471
|
+
this._store.history.executeCommand(new index$1.AddObjectCommand(this._store, this, this._store.state.currentPath));
|
|
812
472
|
}
|
|
813
473
|
this._store.state.currentPath = undefined;
|
|
814
474
|
this._store.rerender();
|
|
@@ -817,302 +477,6 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
817
477
|
}
|
|
818
478
|
}
|
|
819
479
|
|
|
820
|
-
class KritzelToolRegistry {
|
|
821
|
-
static registerTool(toolName, constructor, store) {
|
|
822
|
-
const toolInstance = new constructor(store);
|
|
823
|
-
toolInstance.name = toolName;
|
|
824
|
-
this.registry[toolName] = toolInstance;
|
|
825
|
-
return toolInstance;
|
|
826
|
-
}
|
|
827
|
-
static getTool(toolName) {
|
|
828
|
-
const toolInstance = this.registry[toolName];
|
|
829
|
-
if (!toolInstance) {
|
|
830
|
-
console.warn(`Unknown tool: ${toolName}`);
|
|
831
|
-
return null;
|
|
832
|
-
}
|
|
833
|
-
return toolInstance;
|
|
834
|
-
}
|
|
835
|
-
}
|
|
836
|
-
KritzelToolRegistry.registry = {};
|
|
837
|
-
|
|
838
|
-
class KritzelText extends KritzelBaseObject {
|
|
839
|
-
get isReadonly() {
|
|
840
|
-
return !(this._store.state.activeTool instanceof KritzelTextTool);
|
|
841
|
-
}
|
|
842
|
-
constructor(config) {
|
|
843
|
-
super();
|
|
844
|
-
this.__class__ = 'KritzelText';
|
|
845
|
-
this.value = '';
|
|
846
|
-
this.fontFamily = 'Arial';
|
|
847
|
-
this.fontSize = 8;
|
|
848
|
-
this.fontColor = '#000000';
|
|
849
|
-
this.initialWidth = 3;
|
|
850
|
-
this.isNew = true;
|
|
851
|
-
this.debugInfoVisible = true;
|
|
852
|
-
this.rows = 1;
|
|
853
|
-
if (config) {
|
|
854
|
-
this.value = config.value || ' ';
|
|
855
|
-
this.translateX = config.translateX || 0;
|
|
856
|
-
this.translateY = config.translateY || 0;
|
|
857
|
-
this.fontSize = config.fontSize || 8;
|
|
858
|
-
this.fontFamily = config.fontFamily || 'Arial';
|
|
859
|
-
this.fontColor = config.fontColor || '#000000';
|
|
860
|
-
this.height = config.height || this.fontSize * 1.2;
|
|
861
|
-
this.width = config.width || 0;
|
|
862
|
-
this.scale = config.scale || 1;
|
|
863
|
-
}
|
|
864
|
-
}
|
|
865
|
-
static create(store, fontSize, fontFamily) {
|
|
866
|
-
const object = new KritzelText();
|
|
867
|
-
object._store = store;
|
|
868
|
-
object.fontSize = fontSize;
|
|
869
|
-
object.fontFamily = fontFamily;
|
|
870
|
-
object.translateX = 0;
|
|
871
|
-
object.translateY = 0;
|
|
872
|
-
object.width = object.initialWidth / (object._store.state.scale < 0 ? object._store.state.scale : 1);
|
|
873
|
-
object.height = (object.fontSize * 1.2) / (object._store.state.scale < 0 ? object._store.state.scale : 1);
|
|
874
|
-
object.padding = 5;
|
|
875
|
-
object.backgroundColor = 'transparent';
|
|
876
|
-
object.scale = object._store.state.scale;
|
|
877
|
-
object.value = ' ';
|
|
878
|
-
object.zIndex = store.currentZIndex;
|
|
879
|
-
return object;
|
|
880
|
-
}
|
|
881
|
-
mount(element) {
|
|
882
|
-
if ((this.isMounted && this.elementRef === element) || this.isInViewport() === false) {
|
|
883
|
-
return;
|
|
884
|
-
}
|
|
885
|
-
this.elementRef = element;
|
|
886
|
-
this.isMounted = true;
|
|
887
|
-
}
|
|
888
|
-
resize(x, y, width, height) {
|
|
889
|
-
if (width <= 1 || height <= 1) {
|
|
890
|
-
return;
|
|
891
|
-
}
|
|
892
|
-
const scaleFactor = height / this.height;
|
|
893
|
-
this.fontSize = this.fontSize * scaleFactor;
|
|
894
|
-
this.width = this.width * scaleFactor;
|
|
895
|
-
this.height = height;
|
|
896
|
-
this.translateX = x;
|
|
897
|
-
this.translateY = y;
|
|
898
|
-
}
|
|
899
|
-
handleKeyDown(event) {
|
|
900
|
-
if (this.isReadonly) {
|
|
901
|
-
event.preventDefault();
|
|
902
|
-
event.stopPropagation();
|
|
903
|
-
}
|
|
904
|
-
}
|
|
905
|
-
handleInput(event) {
|
|
906
|
-
const target = event.target;
|
|
907
|
-
if (target.value === '') {
|
|
908
|
-
this.value = ' ';
|
|
909
|
-
target.value = ' ';
|
|
910
|
-
target.selectionStart = target.selectionEnd = target.value.length;
|
|
911
|
-
}
|
|
912
|
-
else {
|
|
913
|
-
this.value = target.value.trim();
|
|
914
|
-
}
|
|
915
|
-
this.adjustTextareaSize();
|
|
916
|
-
}
|
|
917
|
-
adjustTextareaSize() {
|
|
918
|
-
if (this.elementRef) {
|
|
919
|
-
const span = document.createElement('span');
|
|
920
|
-
span.style.position = 'absolute';
|
|
921
|
-
span.style.whiteSpace = 'pre-wrap';
|
|
922
|
-
span.style.visibility = 'hidden';
|
|
923
|
-
span.style.fontSize = window.getComputedStyle(this.elementRef).fontSize;
|
|
924
|
-
span.style.fontFamily = window.getComputedStyle(this.elementRef).fontFamily;
|
|
925
|
-
span.innerHTML = this.elementRef.value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\n/g, '<br>') + '<br>';
|
|
926
|
-
document.body.appendChild(span);
|
|
927
|
-
const textWidth = span.offsetWidth;
|
|
928
|
-
const textHeight = span.offsetHeight;
|
|
929
|
-
document.body.removeChild(span);
|
|
930
|
-
this.width = textWidth;
|
|
931
|
-
this.height = textHeight;
|
|
932
|
-
this._store.rerender();
|
|
933
|
-
}
|
|
934
|
-
}
|
|
935
|
-
focus() {
|
|
936
|
-
if (this.elementRef) {
|
|
937
|
-
this.elementRef.focus();
|
|
938
|
-
}
|
|
939
|
-
}
|
|
940
|
-
selectAll() {
|
|
941
|
-
if (this.elementRef) {
|
|
942
|
-
this.elementRef.select();
|
|
943
|
-
}
|
|
944
|
-
}
|
|
945
|
-
insertFromClipboard() {
|
|
946
|
-
if (this.elementRef) {
|
|
947
|
-
this.elementRef.focus();
|
|
948
|
-
try {
|
|
949
|
-
navigator.clipboard.readText().then(text => {
|
|
950
|
-
const start = this.elementRef.selectionStart;
|
|
951
|
-
const end = this.elementRef.selectionEnd;
|
|
952
|
-
const value = this.elementRef.value;
|
|
953
|
-
this.elementRef.value = value.substring(0, start) + text + value.substring(end);
|
|
954
|
-
this.elementRef.selectionStart = this.elementRef.selectionEnd = start + text.length;
|
|
955
|
-
this.value = this.elementRef.value;
|
|
956
|
-
this.adjustTextareaSize();
|
|
957
|
-
});
|
|
958
|
-
}
|
|
959
|
-
catch (err) {
|
|
960
|
-
console.error('Failed to read clipboard contents:', err);
|
|
961
|
-
}
|
|
962
|
-
}
|
|
963
|
-
}
|
|
964
|
-
onSelectedClick() {
|
|
965
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));
|
|
966
|
-
this._store.state.selectionGroup = null;
|
|
967
|
-
this._store.state.selectionBox = null;
|
|
968
|
-
this._store.state.activeText = this;
|
|
969
|
-
setTimeout(() => {
|
|
970
|
-
this.focus();
|
|
971
|
-
}, 300);
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
class KritzelKeyboardHelper {
|
|
976
|
-
static forceHideKeyboard() {
|
|
977
|
-
if (document.activeElement instanceof HTMLElement) {
|
|
978
|
-
document.activeElement.blur();
|
|
979
|
-
}
|
|
980
|
-
}
|
|
981
|
-
static enableInteractiveWidget() {
|
|
982
|
-
const meta = document.querySelector('meta[name="viewport"][content*="interactive-widget=resizes-content"]');
|
|
983
|
-
if (meta) {
|
|
984
|
-
let currentContent = meta.getAttribute('content');
|
|
985
|
-
if (!currentContent.includes('interactive-widget=resizes-content')) {
|
|
986
|
-
currentContent += ', interactive-widget=resizes-content';
|
|
987
|
-
}
|
|
988
|
-
meta.setAttribute('content', currentContent);
|
|
989
|
-
}
|
|
990
|
-
}
|
|
991
|
-
static disableInteractiveWidget() {
|
|
992
|
-
const meta = document.querySelector('meta[name="viewport"][content*="interactive-widget=resizes-content"]');
|
|
993
|
-
if (meta) {
|
|
994
|
-
let currentContent = meta.getAttribute('content');
|
|
995
|
-
let newContent = currentContent.replace(/\s*interactive-widget=resizes-content\s*[,;]?/g, '');
|
|
996
|
-
newContent = newContent
|
|
997
|
-
.replace(/,(\s*,)+/g, ',')
|
|
998
|
-
.replace(/^,/, '')
|
|
999
|
-
.replace(/,$/, '')
|
|
1000
|
-
.trim();
|
|
1001
|
-
meta.setAttribute('content', newContent);
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1004
|
-
}
|
|
1005
|
-
|
|
1006
|
-
class KritzelTextTool extends KritzelBaseTool {
|
|
1007
|
-
constructor(store) {
|
|
1008
|
-
super(store);
|
|
1009
|
-
this.fontFamily = 'Arial';
|
|
1010
|
-
this.fontSize = 16;
|
|
1011
|
-
this.fontColor = '#000000';
|
|
1012
|
-
this.palette = [
|
|
1013
|
-
'#000000',
|
|
1014
|
-
'#FFFFFF',
|
|
1015
|
-
'#FF0000',
|
|
1016
|
-
'#00FF00',
|
|
1017
|
-
'#0000FF',
|
|
1018
|
-
'#FFFF00',
|
|
1019
|
-
'#FF00FF',
|
|
1020
|
-
'#00FFFF',
|
|
1021
|
-
'#808080',
|
|
1022
|
-
'#C0C0C0',
|
|
1023
|
-
'#800000',
|
|
1024
|
-
'#008000',
|
|
1025
|
-
'#000080',
|
|
1026
|
-
'#808000',
|
|
1027
|
-
'#800080',
|
|
1028
|
-
];
|
|
1029
|
-
}
|
|
1030
|
-
handlePointerDown(event) {
|
|
1031
|
-
if (event.cancelable) {
|
|
1032
|
-
event.preventDefault();
|
|
1033
|
-
}
|
|
1034
|
-
if (event.pointerType === 'mouse') {
|
|
1035
|
-
const path = event.composedPath().slice(1);
|
|
1036
|
-
const objectElement = path.find(element => element.classList && element.classList.contains('object'));
|
|
1037
|
-
const object = this._store.findObjectById(objectElement === null || objectElement === void 0 ? void 0 : objectElement.id);
|
|
1038
|
-
if (this._store.state.activeText === null && object && object instanceof KritzelText) {
|
|
1039
|
-
this._store.state.activeText = object;
|
|
1040
|
-
object.focus();
|
|
1041
|
-
return;
|
|
1042
|
-
}
|
|
1043
|
-
if (this._store.state.activeText !== null && object instanceof KritzelText) {
|
|
1044
|
-
object.focus();
|
|
1045
|
-
return;
|
|
1046
|
-
}
|
|
1047
|
-
if (this._store.state.activeText !== null) {
|
|
1048
|
-
this._store.resetActiveText();
|
|
1049
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
1050
|
-
return;
|
|
1051
|
-
}
|
|
1052
|
-
if (KritzelEventHelper.isLeftClick(event) === false) {
|
|
1053
|
-
return;
|
|
1054
|
-
}
|
|
1055
|
-
const clientX = event.clientX - this._store.offsetX;
|
|
1056
|
-
const clientY = event.clientY - this._store.offsetY;
|
|
1057
|
-
const text = KritzelText.create(this._store, this.fontSize, this.fontFamily);
|
|
1058
|
-
text.fontColor = this.fontColor;
|
|
1059
|
-
text.translateX = (clientX - this._store.state.translateX) / this._store.state.scale;
|
|
1060
|
-
text.translateY = (clientY - this._store.state.translateY) / this._store.state.scale;
|
|
1061
|
-
text.zIndex = this._store.currentZIndex;
|
|
1062
|
-
this._store.state.activeText = text;
|
|
1063
|
-
this._store.history.executeCommand(new AddObjectCommand(this._store, this, text));
|
|
1064
|
-
}
|
|
1065
|
-
if (event.pointerType === 'touch') {
|
|
1066
|
-
const activePointers = Array.from(this._store.state.pointers.values());
|
|
1067
|
-
const path = event.composedPath().slice(1);
|
|
1068
|
-
const objectElement = path.find(element => element.classList && element.classList.contains('object'));
|
|
1069
|
-
const object = this._store.findObjectById(objectElement === null || objectElement === void 0 ? void 0 : objectElement.id);
|
|
1070
|
-
if (this._store.state.activeText === null && object && object instanceof KritzelText) {
|
|
1071
|
-
this._store.state.activeText = object;
|
|
1072
|
-
object.focus();
|
|
1073
|
-
return;
|
|
1074
|
-
}
|
|
1075
|
-
if (this._store.state.activeText !== null && object instanceof KritzelText) {
|
|
1076
|
-
object.focus();
|
|
1077
|
-
return;
|
|
1078
|
-
}
|
|
1079
|
-
if (this._store.state.activeText !== null) {
|
|
1080
|
-
this._store.resetActiveText();
|
|
1081
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
1082
|
-
return;
|
|
1083
|
-
}
|
|
1084
|
-
if (activePointers.length > 1) {
|
|
1085
|
-
return;
|
|
1086
|
-
}
|
|
1087
|
-
KritzelKeyboardHelper.disableInteractiveWidget();
|
|
1088
|
-
const clientX = Math.round(activePointers[0].clientX - this._store.offsetX);
|
|
1089
|
-
const clientY = Math.round(activePointers[0].clientY - this._store.offsetY);
|
|
1090
|
-
const text = KritzelText.create(this._store, this.fontSize, this.fontFamily);
|
|
1091
|
-
text.fontColor = this.fontColor;
|
|
1092
|
-
text.translateX = (clientX - this._store.state.translateX) / this._store.state.scale;
|
|
1093
|
-
text.translateY = (clientY - this._store.state.translateY) / this._store.state.scale;
|
|
1094
|
-
text.zIndex = this._store.currentZIndex;
|
|
1095
|
-
this._store.state.activeText = text;
|
|
1096
|
-
this._store.history.executeCommand(new AddObjectCommand(this._store, this, text));
|
|
1097
|
-
}
|
|
1098
|
-
}
|
|
1099
|
-
handlePointerUp(event) {
|
|
1100
|
-
var _a, _b, _c, _d;
|
|
1101
|
-
if (event.cancelable) {
|
|
1102
|
-
event.preventDefault();
|
|
1103
|
-
}
|
|
1104
|
-
if (event.pointerType === 'mouse') {
|
|
1105
|
-
(_a = this._store.state.activeText) === null || _a === void 0 ? void 0 : _a.adjustTextareaSize();
|
|
1106
|
-
(_b = this._store.state.activeText) === null || _b === void 0 ? void 0 : _b.focus();
|
|
1107
|
-
}
|
|
1108
|
-
if (event.pointerType === 'touch') {
|
|
1109
|
-
(_c = this._store.state.activeText) === null || _c === void 0 ? void 0 : _c.adjustTextareaSize();
|
|
1110
|
-
(_d = this._store.state.activeText) === null || _d === void 0 ? void 0 : _d.focus();
|
|
1111
|
-
KritzelKeyboardHelper.enableInteractiveWidget();
|
|
1112
|
-
}
|
|
1113
|
-
}
|
|
1114
|
-
}
|
|
1115
|
-
|
|
1116
480
|
class KritzelDevicesHelper {
|
|
1117
481
|
static isTouchDevice() {
|
|
1118
482
|
return window.matchMedia('(any-pointer: coarse)').matches;
|
|
@@ -1146,10 +510,9 @@ const KritzelControls = class {
|
|
|
1146
510
|
this.kritzelEngine.enable();
|
|
1147
511
|
}
|
|
1148
512
|
async closeTooltip() {
|
|
1149
|
-
var _a
|
|
513
|
+
var _a;
|
|
1150
514
|
this.tooltipVisible = false;
|
|
1151
515
|
(_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.enable();
|
|
1152
|
-
(_b = this.kritzelEngine) === null || _b === void 0 ? void 0 : _b.setFocus();
|
|
1153
516
|
}
|
|
1154
517
|
get activeToolAsTextTool() {
|
|
1155
518
|
var _a;
|
|
@@ -1210,13 +573,13 @@ const KritzelControls = class {
|
|
|
1210
573
|
render() {
|
|
1211
574
|
var _a, _b;
|
|
1212
575
|
const hasNoConfig = ((_a = this.activeControl) === null || _a === void 0 ? void 0 : _a.config) === undefined || ((_b = this.activeControl) === null || _b === void 0 ? void 0 : _b.config) === null;
|
|
1213
|
-
return (index.h(index.Host, { key: '
|
|
576
|
+
return (index.h(index.Host, { key: 'c20b7cbc7228f1b13a7e17f7ea94c96151e11608', class: {
|
|
1214
577
|
mobile: this.isTouchDevice,
|
|
1215
|
-
} }, index.h("kritzel-utility-panel", { key: '
|
|
578
|
+
} }, index.h("kritzel-utility-panel", { key: '0e56c27c57d5cd7302ec80f6809fe4673afddae5', style: {
|
|
1216
579
|
position: 'absolute',
|
|
1217
580
|
bottom: '56px',
|
|
1218
581
|
left: '12px',
|
|
1219
|
-
}, onUndo: () => { var _a; return (_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.undo(); }, onRedo: () => { var _a; return (_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.redo(); }, onDelete: () => { var _a; return (_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.delete(); } }), index.h("div", { key: '
|
|
582
|
+
}, onUndo: () => { var _a; return (_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.undo(); }, onRedo: () => { var _a; return (_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.redo(); }, onDelete: () => { var _a; return (_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.delete(); } }), index.h("div", { key: '6454509e3c524a42345e383270e3c1220f87dab6', class: "kritzel-controls" }, this.controls.map(control => {
|
|
1220
583
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
1221
584
|
if (control.type === 'tool') {
|
|
1222
585
|
return (index.h("button", { class: {
|
|
@@ -1234,7 +597,7 @@ const KritzelControls = class {
|
|
|
1234
597
|
} }, this.activeControl.tool instanceof KritzelBrushTool && (index.h("div", { class: "color-container" }, index.h("kritzel-color", { value: (_d = this.activeToolAsBrushTool) === null || _d === void 0 ? void 0 : _d.color, size: (_e = this.activeToolAsBrushTool) === null || _e === void 0 ? void 0 : _e.size, style: {
|
|
1235
598
|
borderRadius: '50%',
|
|
1236
599
|
border: 'none',
|
|
1237
|
-
} }))), this.activeControl.tool instanceof KritzelTextTool && (index.h("div", { class: "font-container" }, index.h("kritzel-font", { fontFamily: (_f = this.activeToolAsTextTool) === null || _f === void 0 ? void 0 : _f.fontFamily, size: (_g = this.activeToolAsTextTool) === null || _g === void 0 ? void 0 : _g.fontSize, color: (_h = this.activeToolAsTextTool) === null || _h === void 0 ? void 0 : _h.fontColor }))), hasNoConfig && index.h("div", { class: "no-config" }))));
|
|
600
|
+
} }))), this.activeControl.tool instanceof index$1.KritzelTextTool && (index.h("div", { class: "font-container" }, index.h("kritzel-font", { fontFamily: (_f = this.activeToolAsTextTool) === null || _f === void 0 ? void 0 : _f.fontFamily, size: (_g = this.activeToolAsTextTool) === null || _g === void 0 ? void 0 : _g.fontSize, color: (_h = this.activeToolAsTextTool) === null || _h === void 0 ? void 0 : _h.fontColor }))), hasNoConfig && index.h("div", { class: "no-config" }))));
|
|
1238
601
|
}
|
|
1239
602
|
}))));
|
|
1240
603
|
}
|
|
@@ -1269,7 +632,7 @@ const KritzelCursorTrail = class {
|
|
|
1269
632
|
}
|
|
1270
633
|
handleMouseDown(ev) {
|
|
1271
634
|
if (ev.pointerType === 'mouse') {
|
|
1272
|
-
if (ev.button === KritzelMouseButton.Left) {
|
|
635
|
+
if (ev.button === index$1.KritzelMouseButton.Left) {
|
|
1273
636
|
this.isLeftButtonDown = true;
|
|
1274
637
|
this.cursorTrailPoints = [];
|
|
1275
638
|
}
|
|
@@ -1296,7 +659,7 @@ const KritzelCursorTrail = class {
|
|
|
1296
659
|
}
|
|
1297
660
|
handlePointerUp(ev) {
|
|
1298
661
|
if (ev.pointerType === 'mouse') {
|
|
1299
|
-
if (ev.button === KritzelMouseButton.Left) {
|
|
662
|
+
if (ev.button === index$1.KritzelMouseButton.Left) {
|
|
1300
663
|
this.isLeftButtonDown = false;
|
|
1301
664
|
this.cursorTrailPoints = [];
|
|
1302
665
|
}
|
|
@@ -1465,7 +828,7 @@ KritzelIconRegistry.registerIcons({
|
|
|
1465
828
|
'redo': '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-redo-icon lucide-redo"><path d="M21 7v6h-6"/><path d="M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7"/></svg>'
|
|
1466
829
|
});
|
|
1467
830
|
|
|
1468
|
-
class BatchCommand extends KritzelBaseCommand {
|
|
831
|
+
class BatchCommand extends index$1.KritzelBaseCommand {
|
|
1469
832
|
constructor(store, initiator, commands) {
|
|
1470
833
|
super(store, initiator);
|
|
1471
834
|
this.commands = commands;
|
|
@@ -1478,7 +841,7 @@ class BatchCommand extends KritzelBaseCommand {
|
|
|
1478
841
|
}
|
|
1479
842
|
}
|
|
1480
843
|
|
|
1481
|
-
class RemoveObjectCommand extends KritzelBaseCommand {
|
|
844
|
+
class RemoveObjectCommand extends index$1.KritzelBaseCommand {
|
|
1482
845
|
constructor(store, initiator, object) {
|
|
1483
846
|
super(store, initiator);
|
|
1484
847
|
this.object = object;
|
|
@@ -1491,14 +854,14 @@ class RemoveObjectCommand extends KritzelBaseCommand {
|
|
|
1491
854
|
}
|
|
1492
855
|
}
|
|
1493
856
|
|
|
1494
|
-
class KritzelEraserTool extends KritzelBaseTool {
|
|
857
|
+
class KritzelEraserTool extends index$1.KritzelBaseTool {
|
|
1495
858
|
constructor(store) {
|
|
1496
859
|
super(store);
|
|
1497
860
|
this.touchStartTimeout = null;
|
|
1498
861
|
}
|
|
1499
862
|
handlePointerDown(event) {
|
|
1500
863
|
if (event.pointerType === 'mouse') {
|
|
1501
|
-
if (KritzelEventHelper.isLeftClick(event)) {
|
|
864
|
+
if (index$1.KritzelEventHelper.isLeftClick(event)) {
|
|
1502
865
|
this._store.state.isErasing = true;
|
|
1503
866
|
}
|
|
1504
867
|
}
|
|
@@ -1570,7 +933,7 @@ class KritzelEraserTool extends KritzelBaseTool {
|
|
|
1570
933
|
}
|
|
1571
934
|
}
|
|
1572
935
|
|
|
1573
|
-
class KritzelImage extends KritzelBaseObject {
|
|
936
|
+
class KritzelImage extends index$1.KritzelBaseObject {
|
|
1574
937
|
constructor() {
|
|
1575
938
|
super(...arguments);
|
|
1576
939
|
this.__class__ = 'KritzelImage';
|
|
@@ -1601,7 +964,7 @@ class KritzelImage extends KritzelBaseObject {
|
|
|
1601
964
|
}
|
|
1602
965
|
}
|
|
1603
966
|
|
|
1604
|
-
class RemoveSelectionGroupCommand extends KritzelBaseCommand {
|
|
967
|
+
class RemoveSelectionGroupCommand extends index$1.KritzelBaseCommand {
|
|
1605
968
|
constructor(store, initiator) {
|
|
1606
969
|
super(store, initiator);
|
|
1607
970
|
this.previousSelectionGroup = this._store.state.selectionGroup;
|
|
@@ -1618,7 +981,7 @@ class RemoveSelectionGroupCommand extends KritzelBaseCommand {
|
|
|
1618
981
|
}
|
|
1619
982
|
}
|
|
1620
983
|
|
|
1621
|
-
class MoveSelectionGroupCommand extends KritzelBaseCommand {
|
|
984
|
+
class MoveSelectionGroupCommand extends index$1.KritzelBaseCommand {
|
|
1622
985
|
constructor(store, initiator, startX, startY, endX, endY, skipFirstExecution = false) {
|
|
1623
986
|
super(store, initiator);
|
|
1624
987
|
this.startX = startX;
|
|
@@ -1655,7 +1018,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
|
|
|
1655
1018
|
handlePointerDown(event) {
|
|
1656
1019
|
var _a, _b;
|
|
1657
1020
|
if (event.pointerType === 'mouse') {
|
|
1658
|
-
if (KritzelEventHelper.isLeftClick(event)) {
|
|
1021
|
+
if (index$1.KritzelEventHelper.isLeftClick(event)) {
|
|
1659
1022
|
if (((_a = this._store.state.selectionGroup) === null || _a === void 0 ? void 0 : _a.selected) && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
|
|
1660
1023
|
const clientX = event.clientX - this._store.offsetX;
|
|
1661
1024
|
const clientY = event.clientY - this._store.offsetY;
|
|
@@ -1737,7 +1100,7 @@ var KritzelHandleType;
|
|
|
1737
1100
|
KritzelHandleType["BottomRight"] = "bottom-right";
|
|
1738
1101
|
})(KritzelHandleType || (KritzelHandleType = {}));
|
|
1739
1102
|
|
|
1740
|
-
class ResizeSelectionGroupCommand extends KritzelBaseCommand {
|
|
1103
|
+
class ResizeSelectionGroupCommand extends index$1.KritzelBaseCommand {
|
|
1741
1104
|
constructor(store, initiator, previousSize, newSize) {
|
|
1742
1105
|
super(store, initiator);
|
|
1743
1106
|
this.previousSize = previousSize;
|
|
@@ -1764,7 +1127,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
|
|
|
1764
1127
|
}
|
|
1765
1128
|
handlePointerDown(event) {
|
|
1766
1129
|
if (event.pointerType === 'mouse') {
|
|
1767
|
-
if (KritzelEventHelper.isLeftClick(event)) {
|
|
1130
|
+
if (index$1.KritzelEventHelper.isLeftClick(event)) {
|
|
1768
1131
|
if (this._store.state.selectionGroup && this._store.state.isResizeHandleSelected) {
|
|
1769
1132
|
const clientX = event.clientX - this._store.offsetX;
|
|
1770
1133
|
const clientY = event.clientY - this._store.offsetY;
|
|
@@ -1900,7 +1263,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
|
|
|
1900
1263
|
}
|
|
1901
1264
|
}
|
|
1902
1265
|
|
|
1903
|
-
class RotateSelectionGroupCommand extends KritzelBaseCommand {
|
|
1266
|
+
class RotateSelectionGroupCommand extends index$1.KritzelBaseCommand {
|
|
1904
1267
|
constructor(store, initiator, rotation) {
|
|
1905
1268
|
super(store, initiator);
|
|
1906
1269
|
this.rotation = rotation;
|
|
@@ -1931,7 +1294,7 @@ class KritzelRotationHandler extends KritzelBaseHandler {
|
|
|
1931
1294
|
}
|
|
1932
1295
|
handlePointerDown(event) {
|
|
1933
1296
|
if (event.pointerType === 'mouse') {
|
|
1934
|
-
if (KritzelEventHelper.isLeftClick(event)) {
|
|
1297
|
+
if (index$1.KritzelEventHelper.isLeftClick(event)) {
|
|
1935
1298
|
if (this._store.state.selectionGroup && this._store.state.isRotationHandleSelected) {
|
|
1936
1299
|
const clientX = event.clientX - this._store.offsetX;
|
|
1937
1300
|
const clientY = event.clientY - this._store.offsetY;
|
|
@@ -2075,7 +1438,7 @@ class KritzelGeometryHelper {
|
|
|
2075
1438
|
}
|
|
2076
1439
|
}
|
|
2077
1440
|
|
|
2078
|
-
class KrtizelSelectionBox extends KritzelBaseObject {
|
|
1441
|
+
class KrtizelSelectionBox extends index$1.KritzelBaseObject {
|
|
2079
1442
|
constructor() {
|
|
2080
1443
|
super(...arguments);
|
|
2081
1444
|
this.__class__ = 'KrtizelSelectionBox';
|
|
@@ -2096,7 +1459,7 @@ class KrtizelSelectionBox extends KritzelBaseObject {
|
|
|
2096
1459
|
}
|
|
2097
1460
|
}
|
|
2098
1461
|
|
|
2099
|
-
class AddSelectionGroupCommand extends KritzelBaseCommand {
|
|
1462
|
+
class AddSelectionGroupCommand extends index$1.KritzelBaseCommand {
|
|
2100
1463
|
constructor(store, initiator, selectionGroup) {
|
|
2101
1464
|
super(store, initiator);
|
|
2102
1465
|
this.selectionGroup = selectionGroup;
|
|
@@ -2127,7 +1490,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
|
2127
1490
|
}
|
|
2128
1491
|
handlePointerDown(event) {
|
|
2129
1492
|
if (event.pointerType === 'mouse') {
|
|
2130
|
-
if (KritzelEventHelper.isLeftClick(event) && !this._store.state.selectionGroup) {
|
|
1493
|
+
if (index$1.KritzelEventHelper.isLeftClick(event) && !this._store.state.selectionGroup) {
|
|
2131
1494
|
this.startMouseSelection(event);
|
|
2132
1495
|
}
|
|
2133
1496
|
}
|
|
@@ -2161,7 +1524,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
|
2161
1524
|
}
|
|
2162
1525
|
handlePointerUp(event) {
|
|
2163
1526
|
if (event.pointerType === 'mouse') {
|
|
2164
|
-
if (KritzelEventHelper.isLeftClick(event) && this._store.state.isSelecting) {
|
|
1527
|
+
if (index$1.KritzelEventHelper.isLeftClick(event) && this._store.state.isSelecting) {
|
|
2165
1528
|
if (this.isSelectionClick) {
|
|
2166
1529
|
this.updateMouseSelection(event);
|
|
2167
1530
|
this.addSelectedObjectAtIndexToSelectionGroup(0);
|
|
@@ -2310,7 +1673,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
|
2310
1673
|
}
|
|
2311
1674
|
}
|
|
2312
1675
|
|
|
2313
|
-
class KritzelSelectionTool extends KritzelBaseTool {
|
|
1676
|
+
class KritzelSelectionTool extends index$1.KritzelBaseTool {
|
|
2314
1677
|
constructor(store) {
|
|
2315
1678
|
super(store);
|
|
2316
1679
|
this.selectionHandler = new KritzelSelectionHandler(this._store);
|
|
@@ -2323,7 +1686,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
|
|
|
2323
1686
|
event.preventDefault();
|
|
2324
1687
|
}
|
|
2325
1688
|
if (event.pointerType === 'mouse') {
|
|
2326
|
-
if (KritzelEventHelper.isLeftClick(event)) {
|
|
1689
|
+
if (index$1.KritzelEventHelper.isLeftClick(event)) {
|
|
2327
1690
|
this._store.state.isResizeHandleSelected = this.isHandleSelected(event);
|
|
2328
1691
|
this._store.state.isRotationHandleSelected = this.isRotationHandleSelected(event);
|
|
2329
1692
|
this._store.state.resizeHandleType = this.getHandleType(event);
|
|
@@ -2481,7 +1844,7 @@ class KritzelReviver {
|
|
|
2481
1844
|
revivedObj = KritzelPath.create(this._store).revive(obj);
|
|
2482
1845
|
break;
|
|
2483
1846
|
case 'KritzelText':
|
|
2484
|
-
revivedObj = KritzelText.create(this._store, obj.fontSize, obj.fontFamily).revive(obj);
|
|
1847
|
+
revivedObj = index$1.KritzelText.create(this._store, obj.fontSize, obj.fontFamily).revive(obj);
|
|
2485
1848
|
break;
|
|
2486
1849
|
case 'KritzelImage':
|
|
2487
1850
|
revivedObj = KritzelImage.create(this._store).revive(obj);
|
|
@@ -2502,7 +1865,7 @@ class KritzelReviver {
|
|
|
2502
1865
|
revivedObj = new KritzelSelectionTool(this._store);
|
|
2503
1866
|
break;
|
|
2504
1867
|
case 'KritzelTextTool':
|
|
2505
|
-
revivedObj = new KritzelTextTool(this._store);
|
|
1868
|
+
revivedObj = new index$1.KritzelTextTool(this._store);
|
|
2506
1869
|
break;
|
|
2507
1870
|
default:
|
|
2508
1871
|
revivedObj = obj;
|
|
@@ -2521,7 +1884,7 @@ class KritzelReviver {
|
|
|
2521
1884
|
}
|
|
2522
1885
|
}
|
|
2523
1886
|
|
|
2524
|
-
class KritzelSelectionGroup extends KritzelBaseObject {
|
|
1887
|
+
class KritzelSelectionGroup extends index$1.KritzelBaseObject {
|
|
2525
1888
|
constructor() {
|
|
2526
1889
|
super(...arguments);
|
|
2527
1890
|
this.__class__ = 'KritzelSelectionGroup';
|
|
@@ -2547,7 +1910,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
2547
1910
|
else {
|
|
2548
1911
|
this.objects.splice(index, 1);
|
|
2549
1912
|
}
|
|
2550
|
-
this.unchangedObjects = ObjectHelper.clone(this.objects);
|
|
1913
|
+
this.unchangedObjects = index$1.ObjectHelper.clone(this.objects);
|
|
2551
1914
|
this.refreshObjectDimensions();
|
|
2552
1915
|
}
|
|
2553
1916
|
deselectAllChildren() {
|
|
@@ -2601,7 +1964,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
2601
1964
|
this._store.state.objectsOctree.update(child);
|
|
2602
1965
|
});
|
|
2603
1966
|
this.refreshObjectDimensions();
|
|
2604
|
-
this.unchangedObjects = ObjectHelper.clone(this.objects);
|
|
1967
|
+
this.unchangedObjects = index$1.ObjectHelper.clone(this.objects);
|
|
2605
1968
|
}
|
|
2606
1969
|
rotate(value) {
|
|
2607
1970
|
this.rotation = value;
|
|
@@ -2631,7 +1994,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
2631
1994
|
selectionGroup.addOrRemove(copiedObject);
|
|
2632
1995
|
currentZIndex++;
|
|
2633
1996
|
});
|
|
2634
|
-
selectionGroup.unchangedObjects = ObjectHelper.clone(selectionGroup.objects);
|
|
1997
|
+
selectionGroup.unchangedObjects = index$1.ObjectHelper.clone(selectionGroup.objects);
|
|
2635
1998
|
if (this.objects.length === 1) {
|
|
2636
1999
|
selectionGroup.rotation = this.objects[0].rotation;
|
|
2637
2000
|
}
|
|
@@ -2687,7 +2050,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
2687
2050
|
|
|
2688
2051
|
function _mergeNamespaces$1(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(r){if("default"!==r&&!(r in e)){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:true,get:function(){return t[r]}});}}));})),Object.freeze(e)}function copyExifWithoutOrientation(e,t){return new Promise((function(r,i){let o;return getApp1Segment(e).then((function(e){try{return o=e,r(new Blob([t.slice(0,2),o,t.slice(2)],{type:"image/jpeg"}))}catch(e){return i(e)}}),i)}))}const getApp1Segment=e=>new Promise(((t,r)=>{const i=new FileReader;i.addEventListener("load",(({target:{result:e}})=>{const i=new DataView(e);let o=0;if(65496!==i.getUint16(o))return r("not a valid JPEG");for(o+=2;;){const a=i.getUint16(o);if(65498===a)break;const s=i.getUint16(o+2);if(65505===a&&1165519206===i.getUint32(o+4)){const a=o+10;let f;switch(i.getUint16(a)){case 18761:f=true;break;case 19789:f=false;break;default:return r("TIFF header contains invalid endian")}if(42!==i.getUint16(a+2,f))return r("TIFF header contains invalid version");const l=i.getUint32(a+4,f),c=a+l+2+12*i.getUint16(a+l,f);for(let e=a+l+2;e<c;e+=12){if(274==i.getUint16(e,f)){if(3!==i.getUint16(e+2,f))return r("Orientation data type is invalid");if(1!==i.getUint32(e+4,f))return r("Orientation data count is invalid");i.setUint16(e+8,1,f);break}}return t(e.slice(o,o+2+s))}o+=2+s;}return t(new Blob)})),i.readAsArrayBuffer(e);}));var e={},t={get exports(){return e},set exports(t){e=t;}};!function(e){var r,i,UZIP={};t.exports=UZIP,UZIP.parse=function(e,t){for(var r=UZIP.bin.readUshort,i=UZIP.bin.readUint,o=0,a={},s=new Uint8Array(e),f=s.length-4;101010256!=i(s,f);)f--;o=f;o+=4;var l=r(s,o+=4);r(s,o+=2);var c=i(s,o+=2),u=i(s,o+=4);o+=4,o=u;for(var h=0;h<l;h++){i(s,o),o+=4,o+=4,o+=4,i(s,o+=4);c=i(s,o+=4);var d=i(s,o+=4),A=r(s,o+=4),g=r(s,o+2),p=r(s,o+4);o+=6;var m=i(s,o+=8);o+=4,o+=A+g+p,UZIP._readLocal(s,m,a,c,d,t);}return a},UZIP._readLocal=function(e,t,r,i,o,a){var s=UZIP.bin.readUshort,f=UZIP.bin.readUint;f(e,t),s(e,t+=4),s(e,t+=2);var l=s(e,t+=2);f(e,t+=2),f(e,t+=4),t+=4;var c=s(e,t+=8),u=s(e,t+=2);t+=2;var h=UZIP.bin.readUTF8(e,t,c);if(t+=c,t+=u,a)r[h]={size:o,csize:i};else {var d=new Uint8Array(e.buffer,t);if(0==l)r[h]=new Uint8Array(d.buffer.slice(t,t+i));else {if(8!=l)throw "unknown compression method: "+l;var A=new Uint8Array(o);UZIP.inflateRaw(d,A),r[h]=A;}}},UZIP.inflateRaw=function(e,t){return UZIP.F.inflate(e,t)},UZIP.inflate=function(e,t){return UZIP.inflateRaw(new Uint8Array(e.buffer,e.byteOffset+2,e.length-6),t)},UZIP.deflate=function(e,t){null==t&&(t={level:6});var r=0,i=new Uint8Array(50+Math.floor(1.1*e.length));i[r]=120,i[r+1]=156,r+=2,r=UZIP.F.deflateRaw(e,i,r,t.level);var o=UZIP.adler(e,0,e.length);return i[r+0]=o>>>24&255,i[r+1]=o>>>16&255,i[r+2]=o>>>8&255,i[r+3]=o>>>0&255,new Uint8Array(i.buffer,0,r+4)},UZIP.deflateRaw=function(e,t){null==t&&(t={level:6});var r=new Uint8Array(50+Math.floor(1.1*e.length)),i=UZIP.F.deflateRaw(e,r,i,t.level);return new Uint8Array(r.buffer,0,i)},UZIP.encode=function(e,t){null==t&&(t=false);var r=0,i=UZIP.bin.writeUint,o=UZIP.bin.writeUshort,a={};for(var s in e){var f=!UZIP._noNeed(s)&&!t,l=e[s],c=UZIP.crc.crc(l,0,l.length);a[s]={cpr:f,usize:l.length,crc:c,file:f?UZIP.deflateRaw(l):l};}for(var s in a)r+=a[s].file.length+30+46+2*UZIP.bin.sizeUTF8(s);r+=22;var u=new Uint8Array(r),h=0,d=[];for(var s in a){var A=a[s];d.push(h),h=UZIP._writeHeader(u,h,s,A,0);}var g=0,p=h;for(var s in a){A=a[s];d.push(h),h=UZIP._writeHeader(u,h,s,A,1,d[g++]);}var m=h-p;return i(u,h,101010256),h+=4,o(u,h+=4,g),o(u,h+=2,g),i(u,h+=2,m),i(u,h+=4,p),h+=4,h+=2,u.buffer},UZIP._noNeed=function(e){var t=e.split(".").pop().toLowerCase();return -1!="png,jpg,jpeg,zip".indexOf(t)},UZIP._writeHeader=function(e,t,r,i,o,a){var s=UZIP.bin.writeUint,f=UZIP.bin.writeUshort,l=i.file;return s(e,t,0==o?67324752:33639248),t+=4,1==o&&(t+=2),f(e,t,20),f(e,t+=2,0),f(e,t+=2,i.cpr?8:0),s(e,t+=2,0),s(e,t+=4,i.crc),s(e,t+=4,l.length),s(e,t+=4,i.usize),f(e,t+=4,UZIP.bin.sizeUTF8(r)),f(e,t+=2,0),t+=2,1==o&&(t+=2,t+=2,s(e,t+=6,a),t+=4),t+=UZIP.bin.writeUTF8(e,t,r),0==o&&(e.set(l,t),t+=l.length),t},UZIP.crc={table:function(){for(var e=new Uint32Array(256),t=0;t<256;t++){for(var r=t,i=0;i<8;i++)1&r?r=3988292384^r>>>1:r>>>=1;e[t]=r;}return e}(),update:function(e,t,r,i){for(var o=0;o<i;o++)e=UZIP.crc.table[255&(e^t[r+o])]^e>>>8;return e},crc:function(e,t,r){return 4294967295^UZIP.crc.update(4294967295,e,t,r)}},UZIP.adler=function(e,t,r){for(var i=1,o=0,a=t,s=t+r;a<s;){for(var f=Math.min(a+5552,s);a<f;)o+=i+=e[a++];i%=65521,o%=65521;}return o<<16|i},UZIP.bin={readUshort:function(e,t){return e[t]|e[t+1]<<8},writeUshort:function(e,t,r){e[t]=255&r,e[t+1]=r>>8&255;},readUint:function(e,t){return 16777216*e[t+3]+(e[t+2]<<16|e[t+1]<<8|e[t])},writeUint:function(e,t,r){e[t]=255&r,e[t+1]=r>>8&255,e[t+2]=r>>16&255,e[t+3]=r>>24&255;},readASCII:function(e,t,r){for(var i="",o=0;o<r;o++)i+=String.fromCharCode(e[t+o]);return i},writeASCII:function(e,t,r){for(var i=0;i<r.length;i++)e[t+i]=r.charCodeAt(i);},pad:function(e){return e.length<2?"0"+e:e},readUTF8:function(e,t,r){for(var i,o="",a=0;a<r;a++)o+="%"+UZIP.bin.pad(e[t+a].toString(16));try{i=decodeURIComponent(o);}catch(i){return UZIP.bin.readASCII(e,t,r)}return i},writeUTF8:function(e,t,r){for(var i=r.length,o=0,a=0;a<i;a++){var s=r.charCodeAt(a);if(0==(4294967168&s))e[t+o]=s,o++;else if(0==(4294965248&s))e[t+o]=192|s>>6,e[t+o+1]=128|s>>0&63,o+=2;else if(0==(4294901760&s))e[t+o]=224|s>>12,e[t+o+1]=128|s>>6&63,e[t+o+2]=128|s>>0&63,o+=3;else {if(0!=(4292870144&s))throw "e";e[t+o]=240|s>>18,e[t+o+1]=128|s>>12&63,e[t+o+2]=128|s>>6&63,e[t+o+3]=128|s>>0&63,o+=4;}}return o},sizeUTF8:function(e){for(var t=e.length,r=0,i=0;i<t;i++){var o=e.charCodeAt(i);if(0==(4294967168&o))r++;else if(0==(4294965248&o))r+=2;else if(0==(4294901760&o))r+=3;else {if(0!=(4292870144&o))throw "e";r+=4;}}return r}},UZIP.F={},UZIP.F.deflateRaw=function(e,t,r,i){var o=[[0,0,0,0,0],[4,4,8,4,0],[4,5,16,8,0],[4,6,16,16,0],[4,10,16,32,0],[8,16,32,32,0],[8,16,128,128,0],[8,32,128,256,0],[32,128,258,1024,1],[32,258,258,4096,1]][i],a=UZIP.F.U,s=UZIP.F._goodIndex;var f=UZIP.F._putsE,l=0,c=r<<3,u=0,h=e.length;if(0==i){for(;l<h;){f(t,c,l+(_=Math.min(65535,h-l))==h?1:0),c=UZIP.F._copyExact(e,l,_,t,c+8),l+=_;}return c>>>3}var d=a.lits,A=a.strt,g=a.prev,p=0,m=0,w=0,v=0,b=0,y=0;for(h>2&&(A[y=UZIP.F._hash(e,0)]=0),l=0;l<h;l++){if(b=y,l+1<h-2){y=UZIP.F._hash(e,l+1);var E=l+1&32767;g[E]=A[y],A[y]=E;}if(u<=l){(p>14e3||m>26697)&&h-l>100&&(u<l&&(d[p]=l-u,p+=2,u=l),c=UZIP.F._writeBlock(l==h-1||u==h?1:0,d,p,v,e,w,l-w,t,c),p=m=v=0,w=l);var F=0;l<h-2&&(F=UZIP.F._bestMatch(e,l,g,b,Math.min(o[2],h-l),o[3]));var _=F>>>16,B=65535&F;if(0!=F){B=65535&F;var U=s(_=F>>>16,a.of0);a.lhst[257+U]++;var C=s(B,a.df0);a.dhst[C]++,v+=a.exb[U]+a.dxb[C],d[p]=_<<23|l-u,d[p+1]=B<<16|U<<8|C,p+=2,u=l+_;}else a.lhst[e[l]]++;m++;}}for(w==l&&0!=e.length||(u<l&&(d[p]=l-u,p+=2,u=l),c=UZIP.F._writeBlock(1,d,p,v,e,w,l-w,t,c),p=0,m=0,p=m=v=0,w=l);0!=(7&c);)c++;return c>>>3},UZIP.F._bestMatch=function(e,t,r,i,o,a){var s=32767&t,f=r[s],l=s-f+32768&32767;if(f==s||i!=UZIP.F._hash(e,t-l))return 0;for(var c=0,u=0,h=Math.min(32767,t);l<=h&&0!=--a&&f!=s;){if(0==c||e[t+c]==e[t+c-l]){var d=UZIP.F._howLong(e,t,l);if(d>c){if(u=l,(c=d)>=o)break;l+2<d&&(d=l+2);for(var A=0,g=0;g<d-2;g++){var p=t-l+g+32768&32767,m=p-r[p]+32768&32767;m>A&&(A=m,f=p);}}}l+=(s=f)-(f=r[s])+32768&32767;}return c<<16|u},UZIP.F._howLong=function(e,t,r){if(e[t]!=e[t-r]||e[t+1]!=e[t+1-r]||e[t+2]!=e[t+2-r])return 0;var i=t,o=Math.min(e.length,t+258);for(t+=3;t<o&&e[t]==e[t-r];)t++;return t-i},UZIP.F._hash=function(e,t){return (e[t]<<8|e[t+1])+(e[t+2]<<4)&65535},UZIP.saved=0,UZIP.F._writeBlock=function(e,t,r,i,o,a,s,f,l){var c,u,h,d,A,g,p,m,w,v=UZIP.F.U,b=UZIP.F._putsF,y=UZIP.F._putsE;v.lhst[256]++,u=(c=UZIP.F.getTrees())[0],h=c[1],d=c[2],A=c[3],g=c[4],p=c[5],m=c[6],w=c[7];var E=32+(0==(l+3&7)?0:8-(l+3&7))+(s<<3),F=i+UZIP.F.contSize(v.fltree,v.lhst)+UZIP.F.contSize(v.fdtree,v.dhst),_=i+UZIP.F.contSize(v.ltree,v.lhst)+UZIP.F.contSize(v.dtree,v.dhst);_+=14+3*p+UZIP.F.contSize(v.itree,v.ihst)+(2*v.ihst[16]+3*v.ihst[17]+7*v.ihst[18]);for(var B=0;B<286;B++)v.lhst[B]=0;for(B=0;B<30;B++)v.dhst[B]=0;for(B=0;B<19;B++)v.ihst[B]=0;var U=E<F&&E<_?0:F<_?1:2;if(b(f,l,e),b(f,l+1,U),l+=3,0==U){for(;0!=(7&l);)l++;l=UZIP.F._copyExact(o,a,s,f,l);}else {var C,I;if(1==U&&(C=v.fltree,I=v.fdtree),2==U){UZIP.F.makeCodes(v.ltree,u),UZIP.F.revCodes(v.ltree,u),UZIP.F.makeCodes(v.dtree,h),UZIP.F.revCodes(v.dtree,h),UZIP.F.makeCodes(v.itree,d),UZIP.F.revCodes(v.itree,d),C=v.ltree,I=v.dtree,y(f,l,A-257),y(f,l+=5,g-1),y(f,l+=5,p-4),l+=4;for(var Q=0;Q<p;Q++)y(f,l+3*Q,v.itree[1+(v.ordr[Q]<<1)]);l+=3*p,l=UZIP.F._codeTiny(m,v.itree,f,l),l=UZIP.F._codeTiny(w,v.itree,f,l);}for(var M=a,x=0;x<r;x+=2){for(var S=t[x],R=S>>>23,T=M+(8388607&S);M<T;)l=UZIP.F._writeLit(o[M++],C,f,l);if(0!=R){var O=t[x+1],P=O>>16,H=O>>8&255,L=255&O;y(f,l=UZIP.F._writeLit(257+H,C,f,l),R-v.of0[H]),l+=v.exb[H],b(f,l=UZIP.F._writeLit(L,I,f,l),P-v.df0[L]),l+=v.dxb[L],M+=R;}}l=UZIP.F._writeLit(256,C,f,l);}return l},UZIP.F._copyExact=function(e,t,r,i,o){var a=o>>>3;return i[a]=r,i[a+1]=r>>>8,i[a+2]=255-i[a],i[a+3]=255-i[a+1],a+=4,i.set(new Uint8Array(e.buffer,t,r),a),o+(r+4<<3)},UZIP.F.getTrees=function(){for(var e=UZIP.F.U,t=UZIP.F._hufTree(e.lhst,e.ltree,15),r=UZIP.F._hufTree(e.dhst,e.dtree,15),i=[],o=UZIP.F._lenCodes(e.ltree,i),a=[],s=UZIP.F._lenCodes(e.dtree,a),f=0;f<i.length;f+=2)e.ihst[i[f]]++;for(f=0;f<a.length;f+=2)e.ihst[a[f]]++;for(var l=UZIP.F._hufTree(e.ihst,e.itree,7),c=19;c>4&&0==e.itree[1+(e.ordr[c-1]<<1)];)c--;return [t,r,l,o,s,c,i,a]},UZIP.F.getSecond=function(e){for(var t=[],r=0;r<e.length;r+=2)t.push(e[r+1]);return t},UZIP.F.nonZero=function(e){for(var t="",r=0;r<e.length;r+=2)0!=e[r+1]&&(t+=(r>>1)+",");return t},UZIP.F.contSize=function(e,t){for(var r=0,i=0;i<t.length;i++)r+=t[i]*e[1+(i<<1)];return r},UZIP.F._codeTiny=function(e,t,r,i){for(var o=0;o<e.length;o+=2){var a=e[o],s=e[o+1];i=UZIP.F._writeLit(a,t,r,i);var f=16==a?2:17==a?3:7;a>15&&(UZIP.F._putsE(r,i,s,f),i+=f);}return i},UZIP.F._lenCodes=function(e,t){for(var r=e.length;2!=r&&0==e[r-1];)r-=2;for(var i=0;i<r;i+=2){var o=e[i+1],a=i+3<r?e[i+3]:-1,s=i+5<r?e[i+5]:-1,f=0==i?-1:e[i-1];if(0==o&&a==o&&s==o){for(var l=i+5;l+2<r&&e[l+2]==o;)l+=2;(c=Math.min(l+1-i>>>1,138))<11?t.push(17,c-3):t.push(18,c-11),i+=2*c-2;}else if(o==f&&a==o&&s==o){for(l=i+5;l+2<r&&e[l+2]==o;)l+=2;var c=Math.min(l+1-i>>>1,6);t.push(16,c-3),i+=2*c-2;}else t.push(o,0);}return r>>>1},UZIP.F._hufTree=function(e,t,r){var i=[],o=e.length,a=t.length,s=0;for(s=0;s<a;s+=2)t[s]=0,t[s+1]=0;for(s=0;s<o;s++)0!=e[s]&&i.push({lit:s,f:e[s]});var f=i.length,l=i.slice(0);if(0==f)return 0;if(1==f){var c=i[0].lit;l=0==c?1:0;return t[1+(c<<1)]=1,t[1+(l<<1)]=1,1}i.sort((function(e,t){return e.f-t.f}));var u=i[0],h=i[1],d=0,A=1,g=2;for(i[0]={lit:-1,f:u.f+h.f,l:u,r:h,d:0};A!=f-1;)u=d!=A&&(g==f||i[d].f<i[g].f)?i[d++]:i[g++],h=d!=A&&(g==f||i[d].f<i[g].f)?i[d++]:i[g++],i[A++]={lit:-1,f:u.f+h.f,l:u,r:h};var p=UZIP.F.setDepth(i[A-1],0);for(p>r&&(UZIP.F.restrictDepth(l,r,p),p=r),s=0;s<f;s++)t[1+(l[s].lit<<1)]=l[s].d;return p},UZIP.F.setDepth=function(e,t){return -1!=e.lit?(e.d=t,t):Math.max(UZIP.F.setDepth(e.l,t+1),UZIP.F.setDepth(e.r,t+1))},UZIP.F.restrictDepth=function(e,t,r){var i=0,o=1<<r-t,a=0;for(e.sort((function(e,t){return t.d==e.d?e.f-t.f:t.d-e.d})),i=0;i<e.length&&e[i].d>t;i++){var s=e[i].d;e[i].d=t,a+=o-(1<<r-s);}for(a>>>=r-t;a>0;){(s=e[i].d)<t?(e[i].d++,a-=1<<t-s-1):i++;}for(;i>=0;i--)e[i].d==t&&a<0&&(e[i].d--,a++);0!=a&&console.log("debt left");},UZIP.F._goodIndex=function(e,t){var r=0;return t[16|r]<=e&&(r|=16),t[8|r]<=e&&(r|=8),t[4|r]<=e&&(r|=4),t[2|r]<=e&&(r|=2),t[1|r]<=e&&(r|=1),r},UZIP.F._writeLit=function(e,t,r,i){return UZIP.F._putsF(r,i,t[e<<1]),i+t[1+(e<<1)]},UZIP.F.inflate=function(e,t){var r=Uint8Array;if(3==e[0]&&0==e[1])return t||new r(0);var i=UZIP.F,o=i._bitsF,a=i._bitsE,s=i._decodeTiny,f=i.makeCodes,l=i.codes2map,c=i._get17,u=i.U,h=null==t;h&&(t=new r(e.length>>>2<<3));for(var d,A,g=0,p=0,m=0,w=0,v=0,b=0,y=0,E=0,F=0;0==g;)if(g=o(e,F,1),p=o(e,F+1,2),F+=3,0!=p){if(h&&(t=UZIP.F._check(t,E+(1<<17))),1==p&&(d=u.flmap,A=u.fdmap,b=511,y=31),2==p){m=a(e,F,5)+257,w=a(e,F+5,5)+1,v=a(e,F+10,4)+4,F+=14;for(var _=0;_<38;_+=2)u.itree[_]=0,u.itree[_+1]=0;var B=1;for(_=0;_<v;_++){var U=a(e,F+3*_,3);u.itree[1+(u.ordr[_]<<1)]=U,U>B&&(B=U);}F+=3*v,f(u.itree,B),l(u.itree,B,u.imap),d=u.lmap,A=u.dmap,F=s(u.imap,(1<<B)-1,m+w,e,F,u.ttree);var C=i._copyOut(u.ttree,0,m,u.ltree);b=(1<<C)-1;var I=i._copyOut(u.ttree,m,w,u.dtree);y=(1<<I)-1,f(u.ltree,C),l(u.ltree,C,d),f(u.dtree,I),l(u.dtree,I,A);}for(;;){var Q=d[c(e,F)&b];F+=15&Q;var M=Q>>>4;if(M>>>8==0)t[E++]=M;else {if(256==M)break;var x=E+M-254;if(M>264){var S=u.ldef[M-257];x=E+(S>>>3)+a(e,F,7&S),F+=7&S;}var R=A[c(e,F)&y];F+=15&R;var T=R>>>4,O=u.ddef[T],P=(O>>>4)+o(e,F,15&O);for(F+=15&O,h&&(t=UZIP.F._check(t,E+(1<<17)));E<x;)t[E]=t[E++-P],t[E]=t[E++-P],t[E]=t[E++-P],t[E]=t[E++-P];E=x;}}}else {0!=(7&F)&&(F+=8-(7&F));var H=4+(F>>>3),L=e[H-4]|e[H-3]<<8;h&&(t=UZIP.F._check(t,E+L)),t.set(new r(e.buffer,e.byteOffset+H,L),E),F=H+L<<3,E+=L;}return t.length==E?t:t.slice(0,E)},UZIP.F._check=function(e,t){var r=e.length;if(t<=r)return e;var i=new Uint8Array(Math.max(r<<1,t));return i.set(e,0),i},UZIP.F._decodeTiny=function(e,t,r,i,o,a){for(var s=UZIP.F._bitsE,f=UZIP.F._get17,l=0;l<r;){var c=e[f(i,o)&t];o+=15&c;var u=c>>>4;if(u<=15)a[l]=u,l++;else {var h=0,d=0;16==u?(d=3+s(i,o,2),o+=2,h=a[l-1]):17==u?(d=3+s(i,o,3),o+=3):18==u&&(d=11+s(i,o,7),o+=7);for(var A=l+d;l<A;)a[l]=h,l++;}}return o},UZIP.F._copyOut=function(e,t,r,i){for(var o=0,a=0,s=i.length>>>1;a<r;){var f=e[a+t];i[a<<1]=0,i[1+(a<<1)]=f,f>o&&(o=f),a++;}for(;a<s;)i[a<<1]=0,i[1+(a<<1)]=0,a++;return o},UZIP.F.makeCodes=function(e,t){for(var r,i,o,a,s=UZIP.F.U,f=e.length,l=s.bl_count,c=0;c<=t;c++)l[c]=0;for(c=1;c<f;c+=2)l[e[c]]++;var u=s.next_code;for(r=0,l[0]=0,i=1;i<=t;i++)r=r+l[i-1]<<1,u[i]=r;for(o=0;o<f;o+=2)0!=(a=e[o+1])&&(e[o]=u[a],u[a]++);},UZIP.F.codes2map=function(e,t,r){for(var i=e.length,o=UZIP.F.U.rev15,a=0;a<i;a+=2)if(0!=e[a+1])for(var s=a>>1,f=e[a+1],l=s<<4|f,c=t-f,u=e[a]<<c,h=u+(1<<c);u!=h;){r[o[u]>>>15-t]=l,u++;}},UZIP.F.revCodes=function(e,t){for(var r=UZIP.F.U.rev15,i=15-t,o=0;o<e.length;o+=2){var a=e[o]<<t-e[o+1];e[o]=r[a]>>>i;}},UZIP.F._putsE=function(e,t,r){r<<=7&t;var i=t>>>3;e[i]|=r,e[i+1]|=r>>>8;},UZIP.F._putsF=function(e,t,r){r<<=7&t;var i=t>>>3;e[i]|=r,e[i+1]|=r>>>8,e[i+2]|=r>>>16;},UZIP.F._bitsE=function(e,t,r){return (e[t>>>3]|e[1+(t>>>3)]<<8)>>>(7&t)&(1<<r)-1},UZIP.F._bitsF=function(e,t,r){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)&(1<<r)-1},UZIP.F._get17=function(e,t){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)},UZIP.F._get25=function(e,t){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16|e[3+(t>>>3)]<<24)>>>(7&t)},UZIP.F.U=(r=Uint16Array,i=Uint32Array,{next_code:new r(16),bl_count:new r(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],exb:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],ldef:new r(32),df0:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],dxb:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],ddef:new i(32),flmap:new r(512),fltree:[],fdmap:new r(32),fdtree:[],lmap:new r(32768),ltree:[],ttree:[],dmap:new r(32768),dtree:[],imap:new r(512),itree:[],rev15:new r(32768),lhst:new i(286),dhst:new i(30),ihst:new i(19),lits:new i(15e3),strt:new r(65536),prev:new r(32768)}),function(){for(var e=UZIP.F.U,t=0;t<32768;t++){var r=t;r=(4278255360&(r=(4042322160&(r=(3435973836&(r=(2863311530&r)>>>1|(1431655765&r)<<1))>>>2|(858993459&r)<<2))>>>4|(252645135&r)<<4))>>>8|(16711935&r)<<8,e.rev15[t]=(r>>>16|r<<16)>>>17;}function pushV(e,t,r){for(;0!=t--;)e.push(0,r);}for(t=0;t<32;t++)e.ldef[t]=e.of0[t]<<3|e.exb[t],e.ddef[t]=e.df0[t]<<4|e.dxb[t];pushV(e.fltree,144,8),pushV(e.fltree,112,9),pushV(e.fltree,24,7),pushV(e.fltree,8,8),UZIP.F.makeCodes(e.fltree,9),UZIP.F.codes2map(e.fltree,9,e.flmap),UZIP.F.revCodes(e.fltree,9),pushV(e.fdtree,32,5),UZIP.F.makeCodes(e.fdtree,5),UZIP.F.codes2map(e.fdtree,5,e.fdmap),UZIP.F.revCodes(e.fdtree,5),pushV(e.itree,19,0),pushV(e.ltree,286,0),pushV(e.dtree,30,0),pushV(e.ttree,320,0);}();}();var UZIP=_mergeNamespaces$1({__proto__:null,default:e},[e]);const UPNG=function(){var e={nextZero(e,t){for(;0!=e[t];)t++;return t},readUshort:(e,t)=>e[t]<<8|e[t+1],writeUshort(e,t,r){e[t]=r>>8&255,e[t+1]=255&r;},readUint:(e,t)=>16777216*e[t]+(e[t+1]<<16|e[t+2]<<8|e[t+3]),writeUint(e,t,r){e[t]=r>>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r;},readASCII(e,t,r){let i="";for(let o=0;o<r;o++)i+=String.fromCharCode(e[t+o]);return i},writeASCII(e,t,r){for(let i=0;i<r.length;i++)e[t+i]=r.charCodeAt(i);},readBytes(e,t,r){const i=[];for(let o=0;o<r;o++)i.push(e[t+o]);return i},pad:e=>e.length<2?`0${e}`:e,readUTF8(t,r,i){let o,a="";for(let o=0;o<i;o++)a+=`%${e.pad(t[r+o].toString(16))}`;try{o=decodeURIComponent(a);}catch(o){return e.readASCII(t,r,i)}return o}};function decodeImage(t,r,i,o){const a=r*i,s=_getBPP(o),f=Math.ceil(r*s/8),l=new Uint8Array(4*a),c=new Uint32Array(l.buffer),{ctype:u}=o,{depth:h}=o,d=e.readUshort;if(6==u){const e=a<<2;if(8==h)for(var A=0;A<e;A+=4)l[A]=t[A],l[A+1]=t[A+1],l[A+2]=t[A+2],l[A+3]=t[A+3];if(16==h)for(A=0;A<e;A++)l[A]=t[A<<1];}else if(2==u){const e=o.tabs.tRNS;if(null==e){if(8==h)for(A=0;A<a;A++){var g=3*A;c[A]=255<<24|t[g+2]<<16|t[g+1]<<8|t[g];}if(16==h)for(A=0;A<a;A++){g=6*A;c[A]=255<<24|t[g+4]<<16|t[g+2]<<8|t[g];}}else {var p=e[0];const r=e[1],i=e[2];if(8==h)for(A=0;A<a;A++){var m=A<<2;g=3*A;c[A]=255<<24|t[g+2]<<16|t[g+1]<<8|t[g],t[g]==p&&t[g+1]==r&&t[g+2]==i&&(l[m+3]=0);}if(16==h)for(A=0;A<a;A++){m=A<<2,g=6*A;c[A]=255<<24|t[g+4]<<16|t[g+2]<<8|t[g],d(t,g)==p&&d(t,g+2)==r&&d(t,g+4)==i&&(l[m+3]=0);}}}else if(3==u){const e=o.tabs.PLTE,s=o.tabs.tRNS,c=s?s.length:0;if(1==h)for(var w=0;w<i;w++){var v=w*f,b=w*r;for(A=0;A<r;A++){m=b+A<<2;var y=3*(E=t[v+(A>>3)]>>7-((7&A)<<0)&1);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255;}}if(2==h)for(w=0;w<i;w++)for(v=w*f,b=w*r,A=0;A<r;A++){m=b+A<<2,y=3*(E=t[v+(A>>2)]>>6-((3&A)<<1)&3);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255;}if(4==h)for(w=0;w<i;w++)for(v=w*f,b=w*r,A=0;A<r;A++){m=b+A<<2,y=3*(E=t[v+(A>>1)]>>4-((1&A)<<2)&15);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255;}if(8==h)for(A=0;A<a;A++){var E;m=A<<2,y=3*(E=t[A]);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255;}}else if(4==u){if(8==h)for(A=0;A<a;A++){m=A<<2;var F=t[_=A<<1];l[m]=F,l[m+1]=F,l[m+2]=F,l[m+3]=t[_+1];}if(16==h)for(A=0;A<a;A++){var _;m=A<<2,F=t[_=A<<2];l[m]=F,l[m+1]=F,l[m+2]=F,l[m+3]=t[_+2];}}else if(0==u)for(p=o.tabs.tRNS?o.tabs.tRNS:-1,w=0;w<i;w++){const e=w*f,i=w*r;if(1==h)for(var B=0;B<r;B++){var U=(F=255*(t[e+(B>>>3)]>>>7-(7&B)&1))==255*p?0:255;c[i+B]=U<<24|F<<16|F<<8|F;}else if(2==h)for(B=0;B<r;B++){U=(F=85*(t[e+(B>>>2)]>>>6-((3&B)<<1)&3))==85*p?0:255;c[i+B]=U<<24|F<<16|F<<8|F;}else if(4==h)for(B=0;B<r;B++){U=(F=17*(t[e+(B>>>1)]>>>4-((1&B)<<2)&15))==17*p?0:255;c[i+B]=U<<24|F<<16|F<<8|F;}else if(8==h)for(B=0;B<r;B++){U=(F=t[e+B])==p?0:255;c[i+B]=U<<24|F<<16|F<<8|F;}else if(16==h)for(B=0;B<r;B++){F=t[e+(B<<1)],U=d(t,e+(B<<1))==p?0:255;c[i+B]=U<<24|F<<16|F<<8|F;}}return l}function _decompress(e,r,i,o){const a=_getBPP(e),s=Math.ceil(i*a/8),f=new Uint8Array((s+1+e.interlace)*o);return r=e.tabs.CgBI?t(r,f):_inflate(r,f),0==e.interlace?r=_filterZero(r,e,0,i,o):1==e.interlace&&(r=function _readInterlace(e,t){const r=t.width,i=t.height,o=_getBPP(t),a=o>>3,s=Math.ceil(r*o/8),f=new Uint8Array(i*s);let l=0;const c=[0,0,4,0,2,0,1],u=[0,4,0,2,0,1,0],h=[8,8,8,4,4,2,2],d=[8,8,4,4,2,2,1];let A=0;for(;A<7;){const p=h[A],m=d[A];let w=0,v=0,b=c[A];for(;b<i;)b+=p,v++;let y=u[A];for(;y<r;)y+=m,w++;const E=Math.ceil(w*o/8);_filterZero(e,t,l,w,v);let F=0,_=c[A];for(;_<i;){let t=u[A],i=l+F*E<<3;for(;t<r;){var g;if(1==o)g=(g=e[i>>3])>>7-(7&i)&1,f[_*s+(t>>3)]|=g<<7-((7&t)<<0);if(2==o)g=(g=e[i>>3])>>6-(7&i)&3,f[_*s+(t>>2)]|=g<<6-((3&t)<<1);if(4==o)g=(g=e[i>>3])>>4-(7&i)&15,f[_*s+(t>>1)]|=g<<4-((1&t)<<2);if(o>=8){const r=_*s+t*a;for(let t=0;t<a;t++)f[r+t]=e[(i>>3)+t];}i+=o,t+=m;}F++,_+=p;}w*v!=0&&(l+=v*(1+E)),A+=1;}return f}(r,e)),r}function _inflate(e,r){return t(new Uint8Array(e.buffer,2,e.length-6),r)}var t=function(){const e={H:{}};return e.H.N=function(t,r){const i=Uint8Array;let o,a,s=0,f=0,l=0,c=0,u=0,h=0,d=0,A=0,g=0;if(3==t[0]&&0==t[1])return r||new i(0);const p=e.H,m=p.b,w=p.e,v=p.R,b=p.n,y=p.A,E=p.Z,F=p.m,_=null==r;for(_&&(r=new i(t.length>>>2<<5));0==s;)if(s=m(t,g,1),f=m(t,g+1,2),g+=3,0!=f){if(_&&(r=e.H.W(r,A+(1<<17))),1==f&&(o=F.J,a=F.h,h=511,d=31),2==f){l=w(t,g,5)+257,c=w(t,g+5,5)+1,u=w(t,g+10,4)+4,g+=14;let e=1;for(var B=0;B<38;B+=2)F.Q[B]=0,F.Q[B+1]=0;for(B=0;B<u;B++){const r=w(t,g+3*B,3);F.Q[1+(F.X[B]<<1)]=r,r>e&&(e=r);}g+=3*u,b(F.Q,e),y(F.Q,e,F.u),o=F.w,a=F.d,g=v(F.u,(1<<e)-1,l+c,t,g,F.v);const r=p.V(F.v,0,l,F.C);h=(1<<r)-1;const i=p.V(F.v,l,c,F.D);d=(1<<i)-1,b(F.C,r),y(F.C,r,o),b(F.D,i),y(F.D,i,a);}for(;;){const e=o[E(t,g)&h];g+=15&e;const i=e>>>4;if(i>>>8==0)r[A++]=i;else {if(256==i)break;{let e=A+i-254;if(i>264){const r=F.q[i-257];e=A+(r>>>3)+w(t,g,7&r),g+=7&r;}const o=a[E(t,g)&d];g+=15&o;const s=o>>>4,f=F.c[s],l=(f>>>4)+m(t,g,15&f);for(g+=15&f;A<e;)r[A]=r[A++-l],r[A]=r[A++-l],r[A]=r[A++-l],r[A]=r[A++-l];A=e;}}}}else {0!=(7&g)&&(g+=8-(7&g));const o=4+(g>>>3),a=t[o-4]|t[o-3]<<8;_&&(r=e.H.W(r,A+a)),r.set(new i(t.buffer,t.byteOffset+o,a),A),g=o+a<<3,A+=a;}return r.length==A?r:r.slice(0,A)},e.H.W=function(e,t){const r=e.length;if(t<=r)return e;const i=new Uint8Array(r<<1);return i.set(e,0),i},e.H.R=function(t,r,i,o,a,s){const f=e.H.e,l=e.H.Z;let c=0;for(;c<i;){const e=t[l(o,a)&r];a+=15&e;const i=e>>>4;if(i<=15)s[c]=i,c++;else {let e=0,t=0;16==i?(t=3+f(o,a,2),a+=2,e=s[c-1]):17==i?(t=3+f(o,a,3),a+=3):18==i&&(t=11+f(o,a,7),a+=7);const r=c+t;for(;c<r;)s[c]=e,c++;}}return a},e.H.V=function(e,t,r,i){let o=0,a=0;const s=i.length>>>1;for(;a<r;){const r=e[a+t];i[a<<1]=0,i[1+(a<<1)]=r,r>o&&(o=r),a++;}for(;a<s;)i[a<<1]=0,i[1+(a<<1)]=0,a++;return o},e.H.n=function(t,r){const i=e.H.m,o=t.length;let a,s,f;let l;const c=i.j;for(var u=0;u<=r;u++)c[u]=0;for(u=1;u<o;u+=2)c[t[u]]++;const h=i.K;for(a=0,c[0]=0,s=1;s<=r;s++)a=a+c[s-1]<<1,h[s]=a;for(f=0;f<o;f+=2)l=t[f+1],0!=l&&(t[f]=h[l],h[l]++);},e.H.A=function(t,r,i){const o=t.length,a=e.H.m.r;for(let e=0;e<o;e+=2)if(0!=t[e+1]){const o=e>>1,s=t[e+1],f=o<<4|s,l=r-s;let c=t[e]<<l;const u=c+(1<<l);for(;c!=u;){i[a[c]>>>15-r]=f,c++;}}},e.H.l=function(t,r){const i=e.H.m.r,o=15-r;for(let e=0;e<t.length;e+=2){const a=t[e]<<r-t[e+1];t[e]=i[a]>>>o;}},e.H.M=function(e,t,r){r<<=7&t;const i=t>>>3;e[i]|=r,e[i+1]|=r>>>8;},e.H.I=function(e,t,r){r<<=7&t;const i=t>>>3;e[i]|=r,e[i+1]|=r>>>8,e[i+2]|=r>>>16;},e.H.e=function(e,t,r){return (e[t>>>3]|e[1+(t>>>3)]<<8)>>>(7&t)&(1<<r)-1},e.H.b=function(e,t,r){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)&(1<<r)-1},e.H.Z=function(e,t){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)},e.H.i=function(e,t){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16|e[3+(t>>>3)]<<24)>>>(7&t)},e.H.m=function(){const e=Uint16Array,t=Uint32Array;return {K:new e(16),j:new e(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new e(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new t(32),J:new e(512),_:[],h:new e(32),$:[],w:new e(32768),C:[],v:[],d:new e(32768),D:[],u:new e(512),Q:[],r:new e(32768),s:new t(286),Y:new t(30),a:new t(19),t:new t(15e3),k:new e(65536),g:new e(32768)}}(),function(){const t=e.H.m;for(var r=0;r<32768;r++){let e=r;e=(2863311530&e)>>>1|(1431655765&e)<<1,e=(3435973836&e)>>>2|(858993459&e)<<2,e=(4042322160&e)>>>4|(252645135&e)<<4,e=(4278255360&e)>>>8|(16711935&e)<<8,t.r[r]=(e>>>16|e<<16)>>>17;}function n(e,t,r){for(;0!=t--;)e.push(0,r);}for(r=0;r<32;r++)t.q[r]=t.S[r]<<3|t.T[r],t.c[r]=t.p[r]<<4|t.z[r];n(t._,144,8),n(t._,112,9),n(t._,24,7),n(t._,8,8),e.H.n(t._,9),e.H.A(t._,9,t.J),e.H.l(t._,9),n(t.$,32,5),e.H.n(t.$,5),e.H.A(t.$,5,t.h),e.H.l(t.$,5),n(t.Q,19,0),n(t.C,286,0),n(t.D,30,0),n(t.v,320,0);}(),e.H.N}();function _getBPP(e){return [1,null,3,1,2,null,4][e.ctype]*e.depth}function _filterZero(e,t,r,i,o){let a=_getBPP(t);const s=Math.ceil(i*a/8);let f,l;a=Math.ceil(a/8);let c=e[r],u=0;if(c>1&&(e[r]=[0,0,1][c-2]),3==c)for(u=a;u<s;u++)e[u+1]=e[u+1]+(e[u+1-a]>>>1)&255;for(let t=0;t<o;t++)if(f=r+t*s,l=f+t+1,c=e[l-1],u=0,0==c)for(;u<s;u++)e[f+u]=e[l+u];else if(1==c){for(;u<a;u++)e[f+u]=e[l+u];for(;u<s;u++)e[f+u]=e[l+u]+e[f+u-a];}else if(2==c)for(;u<s;u++)e[f+u]=e[l+u]+e[f+u-s];else if(3==c){for(;u<a;u++)e[f+u]=e[l+u]+(e[f+u-s]>>>1);for(;u<s;u++)e[f+u]=e[l+u]+(e[f+u-s]+e[f+u-a]>>>1);}else {for(;u<a;u++)e[f+u]=e[l+u]+_paeth(0,e[f+u-s],0);for(;u<s;u++)e[f+u]=e[l+u]+_paeth(e[f+u-a],e[f+u-s],e[f+u-a-s]);}return e}function _paeth(e,t,r){const i=e+t-r,o=i-e,a=i-t,s=i-r;return o*o<=a*a&&o*o<=s*s?e:a*a<=s*s?t:r}function _IHDR(t,r,i){i.width=e.readUint(t,r),r+=4,i.height=e.readUint(t,r),r+=4,i.depth=t[r],r++,i.ctype=t[r],r++,i.compress=t[r],r++,i.filter=t[r],r++,i.interlace=t[r],r++;}function _copyTile(e,t,r,i,o,a,s,f,l){const c=Math.min(t,o),u=Math.min(r,a);let h=0,d=0;for(let r=0;r<u;r++)for(let a=0;a<c;a++)if(s>=0&&f>=0?(h=r*t+a<<2,d=(f+r)*o+s+a<<2):(h=(-f+r)*t-s+a<<2,d=r*o+a<<2),0==l)i[d]=e[h],i[d+1]=e[h+1],i[d+2]=e[h+2],i[d+3]=e[h+3];else if(1==l){var A=e[h+3]*(1/255),g=e[h]*A,p=e[h+1]*A,m=e[h+2]*A,w=i[d+3]*(1/255),v=i[d]*w,b=i[d+1]*w,y=i[d+2]*w;const t=1-A,r=A+w*t,o=0==r?0:1/r;i[d+3]=255*r,i[d+0]=(g+v*t)*o,i[d+1]=(p+b*t)*o,i[d+2]=(m+y*t)*o;}else if(2==l){A=e[h+3],g=e[h],p=e[h+1],m=e[h+2],w=i[d+3],v=i[d],b=i[d+1],y=i[d+2];A==w&&g==v&&p==b&&m==y?(i[d]=0,i[d+1]=0,i[d+2]=0,i[d+3]=0):(i[d]=g,i[d+1]=p,i[d+2]=m,i[d+3]=A);}else if(3==l){A=e[h+3],g=e[h],p=e[h+1],m=e[h+2],w=i[d+3],v=i[d],b=i[d+1],y=i[d+2];if(A==w&&g==v&&p==b&&m==y)continue;if(A<220&&w>20)return false}return true}return {decode:function decode(r){const i=new Uint8Array(r);let o=8;const a=e,s=a.readUshort,f=a.readUint,l={tabs:{},frames:[]},c=new Uint8Array(i.length);let u,h=0,d=0;const A=[137,80,78,71,13,10,26,10];for(var g=0;g<8;g++)if(i[g]!=A[g])throw "The input is not a PNG file!";for(;o<i.length;){const e=a.readUint(i,o);o+=4;const r=a.readASCII(i,o,4);if(o+=4,"IHDR"==r)_IHDR(i,o,l);else if("iCCP"==r){for(var p=o;0!=i[p];)p++;a.readASCII(i,o,p-o);const s=i.slice(p+2,o+e);let f=null;try{f=_inflate(s);}catch(e){f=t(s);}l.tabs[r]=f;}else if("CgBI"==r)l.tabs[r]=i.slice(o,o+4);else if("IDAT"==r){for(g=0;g<e;g++)c[h+g]=i[o+g];h+=e;}else if("acTL"==r)l.tabs[r]={num_frames:f(i,o),num_plays:f(i,o+4)},u=new Uint8Array(i.length);else if("fcTL"==r){if(0!=d)(E=l.frames[l.frames.length-1]).data=_decompress(l,u.slice(0,d),E.rect.width,E.rect.height),d=0;const e={x:f(i,o+12),y:f(i,o+16),width:f(i,o+4),height:f(i,o+8)};let t=s(i,o+22);t=s(i,o+20)/(0==t?100:t);const r={rect:e,delay:Math.round(1e3*t),dispose:i[o+24],blend:i[o+25]};l.frames.push(r);}else if("fdAT"==r){for(g=0;g<e-4;g++)u[d+g]=i[o+g+4];d+=e-4;}else if("pHYs"==r)l.tabs[r]=[a.readUint(i,o),a.readUint(i,o+4),i[o+8]];else if("cHRM"==r){l.tabs[r]=[];for(g=0;g<8;g++)l.tabs[r].push(a.readUint(i,o+4*g));}else if("tEXt"==r||"zTXt"==r){null==l.tabs[r]&&(l.tabs[r]={});var m=a.nextZero(i,o),w=a.readASCII(i,o,m-o),v=o+e-m-1;if("tEXt"==r)y=a.readASCII(i,m+1,v);else {var b=_inflate(i.slice(m+2,m+2+v));y=a.readUTF8(b,0,b.length);}l.tabs[r][w]=y;}else if("iTXt"==r){null==l.tabs[r]&&(l.tabs[r]={});m=0,p=o;m=a.nextZero(i,p);w=a.readASCII(i,p,m-p);const t=i[p=m+1];var y;p+=2,m=a.nextZero(i,p),a.readASCII(i,p,m-p),p=m+1,m=a.nextZero(i,p),a.readUTF8(i,p,m-p);v=e-((p=m+1)-o);if(0==t)y=a.readUTF8(i,p,v);else {b=_inflate(i.slice(p,p+v));y=a.readUTF8(b,0,b.length);}l.tabs[r][w]=y;}else if("PLTE"==r)l.tabs[r]=a.readBytes(i,o,e);else if("hIST"==r){const e=l.tabs.PLTE.length/3;l.tabs[r]=[];for(g=0;g<e;g++)l.tabs[r].push(s(i,o+2*g));}else if("tRNS"==r)3==l.ctype?l.tabs[r]=a.readBytes(i,o,e):0==l.ctype?l.tabs[r]=s(i,o):2==l.ctype&&(l.tabs[r]=[s(i,o),s(i,o+2),s(i,o+4)]);else if("gAMA"==r)l.tabs[r]=a.readUint(i,o)/1e5;else if("sRGB"==r)l.tabs[r]=i[o];else if("bKGD"==r)0==l.ctype||4==l.ctype?l.tabs[r]=[s(i,o)]:2==l.ctype||6==l.ctype?l.tabs[r]=[s(i,o),s(i,o+2),s(i,o+4)]:3==l.ctype&&(l.tabs[r]=i[o]);else if("IEND"==r)break;o+=e,a.readUint(i,o),o+=4;}var E;return 0!=d&&((E=l.frames[l.frames.length-1]).data=_decompress(l,u.slice(0,d),E.rect.width,E.rect.height)),l.data=_decompress(l,c,l.width,l.height),delete l.compress,delete l.interlace,delete l.filter,l},toRGBA8:function toRGBA8(e){const t=e.width,r=e.height;if(null==e.tabs.acTL)return [decodeImage(e.data,t,r,e).buffer];const i=[];null==e.frames[0].data&&(e.frames[0].data=e.data);const o=t*r*4,a=new Uint8Array(o),s=new Uint8Array(o),f=new Uint8Array(o);for(let c=0;c<e.frames.length;c++){const u=e.frames[c],h=u.rect.x,d=u.rect.y,A=u.rect.width,g=u.rect.height,p=decodeImage(u.data,A,g,e);if(0!=c)for(var l=0;l<o;l++)f[l]=a[l];if(0==u.blend?_copyTile(p,A,g,a,t,r,h,d,0):1==u.blend&&_copyTile(p,A,g,a,t,r,h,d,1),i.push(a.buffer.slice(0)),0==u.dispose);else if(1==u.dispose)_copyTile(s,A,g,a,t,r,h,d,0);else if(2==u.dispose)for(l=0;l<o;l++)a[l]=f[l];}return i},_paeth:_paeth,_copyTile:_copyTile,_bin:e}}();!function(){const{_copyTile:e}=UPNG,{_bin:t}=UPNG,r=UPNG._paeth;var i={table:function(){const e=new Uint32Array(256);for(let t=0;t<256;t++){let r=t;for(let e=0;e<8;e++)1&r?r=3988292384^r>>>1:r>>>=1;e[t]=r;}return e}(),update(e,t,r,o){for(let a=0;a<o;a++)e=i.table[255&(e^t[r+a])]^e>>>8;return e},crc:(e,t,r)=>4294967295^i.update(4294967295,e,t,r)};function addErr(e,t,r,i){t[r]+=e[0]*i>>4,t[r+1]+=e[1]*i>>4,t[r+2]+=e[2]*i>>4,t[r+3]+=e[3]*i>>4;}function N(e){return Math.max(0,Math.min(255,e))}function D(e,t){const r=e[0]-t[0],i=e[1]-t[1],o=e[2]-t[2],a=e[3]-t[3];return r*r+i*i+o*o+a*a}function dither(e,t,r,i,o,a,s){null==s&&(s=1);const f=i.length,l=[];for(var c=0;c<f;c++){const e=i[c];l.push([e>>>0&255,e>>>8&255,e>>>16&255,e>>>24&255]);}for(c=0;c<f;c++){let e=4294967295;for(var u=0,h=0;h<f;h++){var d=D(l[c],l[h]);h!=c&&d<e&&(e=d,u=h);}}const A=new Uint32Array(o.buffer),g=new Int16Array(t*r*4),p=[0,8,2,10,12,4,14,6,3,11,1,9,15,7,13,5];for(c=0;c<p.length;c++)p[c]=255*((p[c]+.5)/16-.5);for(let o=0;o<r;o++)for(let w=0;w<t;w++){var m;c=4*(o*t+w);if(2!=s)m=[N(e[c]+g[c]),N(e[c+1]+g[c+1]),N(e[c+2]+g[c+2]),N(e[c+3]+g[c+3])];else {d=p[4*(3&o)+(3&w)];m=[N(e[c]+d),N(e[c+1]+d),N(e[c+2]+d),N(e[c+3]+d)];}u=0;let v=16777215;for(h=0;h<f;h++){const e=D(m,l[h]);e<v&&(v=e,u=h);}const b=l[u],y=[m[0]-b[0],m[1]-b[1],m[2]-b[2],m[3]-b[3]];1==s&&(w!=t-1&&addErr(y,g,c+4,7),o!=r-1&&(0!=w&&addErr(y,g,c+4*t-4,3),addErr(y,g,c+4*t,5),w!=t-1&&addErr(y,g,c+4*t+4,1))),a[c>>2]=u,A[c>>2]=i[u];}}function _main(e,r,o,a,s){null==s&&(s={});const{crc:f}=i,l=t.writeUint,c=t.writeUshort,u=t.writeASCII;let h=8;const d=e.frames.length>1;let A,g=false,p=33+(d?20:0);if(null!=s.sRGB&&(p+=13),null!=s.pHYs&&(p+=21),null!=s.iCCP&&(A=pako.deflate(s.iCCP),p+=21+A.length+4),3==e.ctype){for(var m=e.plte.length,w=0;w<m;w++)e.plte[w]>>>24!=255&&(g=true);p+=8+3*m+4+(g?8+1*m+4:0);}for(var v=0;v<e.frames.length;v++){d&&(p+=38),p+=(F=e.frames[v]).cimg.length+12,0!=v&&(p+=4);}p+=12;const b=new Uint8Array(p),y=[137,80,78,71,13,10,26,10];for(w=0;w<8;w++)b[w]=y[w];if(l(b,h,13),h+=4,u(b,h,"IHDR"),h+=4,l(b,h,r),h+=4,l(b,h,o),h+=4,b[h]=e.depth,h++,b[h]=e.ctype,h++,b[h]=0,h++,b[h]=0,h++,b[h]=0,h++,l(b,h,f(b,h-17,17)),h+=4,null!=s.sRGB&&(l(b,h,1),h+=4,u(b,h,"sRGB"),h+=4,b[h]=s.sRGB,h++,l(b,h,f(b,h-5,5)),h+=4),null!=s.iCCP){const e=13+A.length;l(b,h,e),h+=4,u(b,h,"iCCP"),h+=4,u(b,h,"ICC profile"),h+=11,h+=2,b.set(A,h),h+=A.length,l(b,h,f(b,h-(e+4),e+4)),h+=4;}if(null!=s.pHYs&&(l(b,h,9),h+=4,u(b,h,"pHYs"),h+=4,l(b,h,s.pHYs[0]),h+=4,l(b,h,s.pHYs[1]),h+=4,b[h]=s.pHYs[2],h++,l(b,h,f(b,h-13,13)),h+=4),d&&(l(b,h,8),h+=4,u(b,h,"acTL"),h+=4,l(b,h,e.frames.length),h+=4,l(b,h,null!=s.loop?s.loop:0),h+=4,l(b,h,f(b,h-12,12)),h+=4),3==e.ctype){l(b,h,3*(m=e.plte.length)),h+=4,u(b,h,"PLTE"),h+=4;for(w=0;w<m;w++){const t=3*w,r=e.plte[w],i=255&r,o=r>>>8&255,a=r>>>16&255;b[h+t+0]=i,b[h+t+1]=o,b[h+t+2]=a;}if(h+=3*m,l(b,h,f(b,h-3*m-4,3*m+4)),h+=4,g){l(b,h,m),h+=4,u(b,h,"tRNS"),h+=4;for(w=0;w<m;w++)b[h+w]=e.plte[w]>>>24&255;h+=m,l(b,h,f(b,h-m-4,m+4)),h+=4;}}let E=0;for(v=0;v<e.frames.length;v++){var F=e.frames[v];d&&(l(b,h,26),h+=4,u(b,h,"fcTL"),h+=4,l(b,h,E++),h+=4,l(b,h,F.rect.width),h+=4,l(b,h,F.rect.height),h+=4,l(b,h,F.rect.x),h+=4,l(b,h,F.rect.y),h+=4,c(b,h,a[v]),h+=2,c(b,h,1e3),h+=2,b[h]=F.dispose,h++,b[h]=F.blend,h++,l(b,h,f(b,h-30,30)),h+=4);const t=F.cimg;l(b,h,(m=t.length)+(0==v?0:4)),h+=4;const r=h;u(b,h,0==v?"IDAT":"fdAT"),h+=4,0!=v&&(l(b,h,E++),h+=4),b.set(t,h),h+=m,l(b,h,f(b,r,h-r)),h+=4;}return l(b,h,0),h+=4,u(b,h,"IEND"),h+=4,l(b,h,f(b,h-4,4)),h+=4,b.buffer}function compressPNG(e,t,r){for(let i=0;i<e.frames.length;i++){const o=e.frames[i];const a=o.rect.height,s=new Uint8Array(a*o.bpl+a);o.cimg=_filterZero(o.img,a,o.bpp,o.bpl,s,t,r);}}function compress(t,r,i,o,a){const s=a[0],f=a[1],l=a[2],c=a[3],u=a[4],h=a[5];let d=6,A=8,g=255;for(var p=0;p<t.length;p++){const e=new Uint8Array(t[p]);for(var m=e.length,w=0;w<m;w+=4)g&=e[w+3];}const v=255!=g,b=function framize(t,r,i,o,a,s){const f=[];for(var l=0;l<t.length;l++){const h=new Uint8Array(t[l]),A=new Uint32Array(h.buffer);var c;let g=0,p=0,m=r,w=i,v=o?1:0;if(0!=l){const b=s||o||1==l||0!=f[l-2].dispose?1:2;let y=0,E=1e9;for(let e=0;e<b;e++){var u=new Uint8Array(t[l-1-e]);const o=new Uint32Array(t[l-1-e]);let s=r,f=i,c=-1,h=-1;for(let e=0;e<i;e++)for(let t=0;t<r;t++){A[d=e*r+t]!=o[d]&&(t<s&&(s=t),t>c&&(c=t),e<f&&(f=e),e>h&&(h=e));} -1==c&&(s=f=c=h=0),a&&(1==(1&s)&&s--,1==(1&f)&&f--);const v=(c-s+1)*(h-f+1);v<E&&(E=v,y=e,g=s,p=f,m=c-s+1,w=h-f+1);}u=new Uint8Array(t[l-1-y]);1==y&&(f[l-1].dispose=2),c=new Uint8Array(m*w*4),e(u,r,i,c,m,w,-g,-p,0),v=e(h,r,i,c,m,w,-g,-p,3)?1:0,1==v?_prepareDiff(h,r,i,c,{x:g,y:p,width:m,height:w}):e(h,r,i,c,m,w,-g,-p,0);}else c=h.slice(0);f.push({rect:{x:g,y:p,width:m,height:w},img:c,blend:v,dispose:0});}if(o)for(l=0;l<f.length;l++){if(1==(A=f[l]).blend)continue;const e=A.rect,o=f[l-1].rect,s=Math.min(e.x,o.x),c=Math.min(e.y,o.y),u={x:s,y:c,width:Math.max(e.x+e.width,o.x+o.width)-s,height:Math.max(e.y+e.height,o.y+o.height)-c};f[l-1].dispose=1,l-1!=0&&_updateFrame(t,r,i,f,l-1,u,a),_updateFrame(t,r,i,f,l,u,a);}let h=0;if(1!=t.length)for(var d=0;d<f.length;d++){var A;h+=(A=f[d]).rect.width*A.rect.height;}return f}(t,r,i,s,f,l),y={},E=[],F=[];if(0!=o){const e=[];for(w=0;w<b.length;w++)e.push(b[w].img.buffer);const t=function concatRGBA(e){let t=0;for(var r=0;r<e.length;r++)t+=e[r].byteLength;const i=new Uint8Array(t);let o=0;for(r=0;r<e.length;r++){const t=new Uint8Array(e[r]),a=t.length;for(let e=0;e<a;e+=4){let r=t[e],a=t[e+1],s=t[e+2];const f=t[e+3];0==f&&(r=a=s=0),i[o+e]=r,i[o+e+1]=a,i[o+e+2]=s,i[o+e+3]=f;}o+=a;}return i.buffer}(e),r=quantize(t,o);for(w=0;w<r.plte.length;w++)E.push(r.plte[w].est.rgba);let i=0;for(w=0;w<b.length;w++){const e=(B=b[w]).img.length;var _=new Uint8Array(r.inds.buffer,i>>2,e>>2);F.push(_);const t=new Uint8Array(r.abuf,i,e);h&&dither(B.img,B.rect.width,B.rect.height,E,t,_),B.img.set(t),i+=e;}}else for(p=0;p<b.length;p++){var B=b[p];const e=new Uint32Array(B.img.buffer);var U=B.rect.width;m=e.length,_=new Uint8Array(m);F.push(_);for(w=0;w<m;w++){const t=e[w];if(0!=w&&t==e[w-1])_[w]=_[w-1];else if(w>U&&t==e[w-U])_[w]=_[w-U];else {let e=y[t];if(null==e&&(y[t]=e=E.length,E.push(t),E.length>=300))break;_[w]=e;}}}const C=E.length;C<=256&&0==u&&(A=C<=2?1:C<=4?2:C<=16?4:8,A=Math.max(A,c));for(p=0;p<b.length;p++){(B=b[p]).rect.x;U=B.rect.width;const e=B.rect.height;let t=B.img;let r=4*U,i=4;if(C<=256&&0==u){r=Math.ceil(A*U/8);var I=new Uint8Array(r*e);const o=F[p];for(let t=0;t<e;t++){w=t*r;const e=t*U;if(8==A)for(var Q=0;Q<U;Q++)I[w+Q]=o[e+Q];else if(4==A)for(Q=0;Q<U;Q++)I[w+(Q>>1)]|=o[e+Q]<<4-4*(1&Q);else if(2==A)for(Q=0;Q<U;Q++)I[w+(Q>>2)]|=o[e+Q]<<6-2*(3&Q);else if(1==A)for(Q=0;Q<U;Q++)I[w+(Q>>3)]|=o[e+Q]<<7-1*(7&Q);}t=I,d=3,i=1;}else if(0==v&&1==b.length){I=new Uint8Array(U*e*3);const o=U*e;for(w=0;w<o;w++){const e=3*w,r=4*w;I[e]=t[r],I[e+1]=t[r+1],I[e+2]=t[r+2];}t=I,d=2,i=3,r=3*U;}B.img=t,B.bpl=r,B.bpp=i;}return {ctype:d,depth:A,plte:E,frames:b}}function _updateFrame(t,r,i,o,a,s,f){const l=Uint8Array,c=Uint32Array,u=new l(t[a-1]),h=new c(t[a-1]),d=a+1<t.length?new l(t[a+1]):null,A=new l(t[a]),g=new c(A.buffer);let p=r,m=i,w=-1,v=-1;for(let e=0;e<s.height;e++)for(let t=0;t<s.width;t++){const i=s.x+t,f=s.y+e,l=f*r+i,c=g[l];0==c||0==o[a-1].dispose&&h[l]==c&&(null==d||0!=d[4*l+3])||(i<p&&(p=i),i>w&&(w=i),f<m&&(m=f),f>v&&(v=f));} -1==w&&(p=m=w=v=0),f&&(1==(1&p)&&p--,1==(1&m)&&m--),s={x:p,y:m,width:w-p+1,height:v-m+1};const b=o[a];b.rect=s,b.blend=1,b.img=new Uint8Array(s.width*s.height*4),0==o[a-1].dispose?(e(u,r,i,b.img,s.width,s.height,-s.x,-s.y,0),_prepareDiff(A,r,i,b.img,s)):e(A,r,i,b.img,s.width,s.height,-s.x,-s.y,0);}function _prepareDiff(t,r,i,o,a){e(t,r,i,o,a.width,a.height,-a.x,-a.y,2);}function _filterZero(e,t,r,i,o,a,s){const f=[];let l,c=[0,1,2,3,4];-1!=a?c=[a]:(t*i>5e5||1==r)&&(c=[0]),s&&(l={level:0});const u=UZIP;for(var h=0;h<c.length;h++){for(let a=0;a<t;a++)_filterLine(o,e,a,i,r,c[h]);f.push(u.deflate(o,l));}let d,A=1e9;for(h=0;h<f.length;h++)f[h].length<A&&(d=h,A=f[h].length);return f[d]}function _filterLine(e,t,i,o,a,s){const f=i*o;let l=f+i;if(e[l]=s,l++,0==s)if(o<500)for(var c=0;c<o;c++)e[l+c]=t[f+c];else e.set(new Uint8Array(t.buffer,f,o),l);else if(1==s){for(c=0;c<a;c++)e[l+c]=t[f+c];for(c=a;c<o;c++)e[l+c]=t[f+c]-t[f+c-a]+256&255;}else if(0==i){for(c=0;c<a;c++)e[l+c]=t[f+c];if(2==s)for(c=a;c<o;c++)e[l+c]=t[f+c];if(3==s)for(c=a;c<o;c++)e[l+c]=t[f+c]-(t[f+c-a]>>1)+256&255;if(4==s)for(c=a;c<o;c++)e[l+c]=t[f+c]-r(t[f+c-a],0,0)+256&255;}else {if(2==s)for(c=0;c<o;c++)e[l+c]=t[f+c]+256-t[f+c-o]&255;if(3==s){for(c=0;c<a;c++)e[l+c]=t[f+c]+256-(t[f+c-o]>>1)&255;for(c=a;c<o;c++)e[l+c]=t[f+c]+256-(t[f+c-o]+t[f+c-a]>>1)&255;}if(4==s){for(c=0;c<a;c++)e[l+c]=t[f+c]+256-r(0,t[f+c-o],0)&255;for(c=a;c<o;c++)e[l+c]=t[f+c]+256-r(t[f+c-a],t[f+c-o],t[f+c-a-o])&255;}}}function quantize(e,t){const r=new Uint8Array(e),i=r.slice(0),o=new Uint32Array(i.buffer),a=getKDtree(i,t),s=a[0],f=a[1],l=r.length,c=new Uint8Array(l>>2);let u;if(r.length<2e7)for(var h=0;h<l;h+=4){u=getNearest(s,d=r[h]*(1/255),A=r[h+1]*(1/255),g=r[h+2]*(1/255),p=r[h+3]*(1/255)),c[h>>2]=u.ind,o[h>>2]=u.est.rgba;}else for(h=0;h<l;h+=4){var d=r[h]*(1/255),A=r[h+1]*(1/255),g=r[h+2]*(1/255),p=r[h+3]*(1/255);for(u=s;u.left;)u=planeDst(u.est,d,A,g,p)<=0?u.left:u.right;c[h>>2]=u.ind,o[h>>2]=u.est.rgba;}return {abuf:i.buffer,inds:c,plte:f}}function getKDtree(e,t,r){null==r&&(r=1e-4);const i=new Uint32Array(e.buffer),o={i0:0,i1:e.length,bst:null,est:null,tdst:0,left:null,right:null};o.bst=stats(e,o.i0,o.i1),o.est=estats(o.bst);const a=[o];for(;a.length<t;){let t=0,o=0;for(var s=0;s<a.length;s++)a[s].est.L>t&&(t=a[s].est.L,o=s);if(t<r)break;const f=a[o],l=splitPixels(e,i,f.i0,f.i1,f.est.e,f.est.eMq255);if(f.i0>=l||f.i1<=l){f.est.L=0;continue}const c={i0:f.i0,i1:l,bst:null,est:null,tdst:0,left:null,right:null};c.bst=stats(e,c.i0,c.i1),c.est=estats(c.bst);const u={i0:l,i1:f.i1,bst:null,est:null,tdst:0,left:null,right:null};u.bst={R:[],m:[],N:f.bst.N-c.bst.N};for(s=0;s<16;s++)u.bst.R[s]=f.bst.R[s]-c.bst.R[s];for(s=0;s<4;s++)u.bst.m[s]=f.bst.m[s]-c.bst.m[s];u.est=estats(u.bst),f.left=c,f.right=u,a[o]=c,a.push(u);}a.sort(((e,t)=>t.bst.N-e.bst.N));for(s=0;s<a.length;s++)a[s].ind=s;return [o,a]}function getNearest(e,t,r,i,o){if(null==e.left)return e.tdst=function dist(e,t,r,i,o){const a=t-e[0],s=r-e[1],f=i-e[2],l=o-e[3];return a*a+s*s+f*f+l*l}(e.est.q,t,r,i,o),e;const a=planeDst(e.est,t,r,i,o);let s=e.left,f=e.right;a>0&&(s=e.right,f=e.left);const l=getNearest(s,t,r,i,o);if(l.tdst<=a*a)return l;const c=getNearest(f,t,r,i,o);return c.tdst<l.tdst?c:l}function planeDst(e,t,r,i,o){const{e:a}=e;return a[0]*t+a[1]*r+a[2]*i+a[3]*o-e.eMq}function splitPixels(e,t,r,i,o,a){for(i-=4;r<i;){for(;vecDot(e,r,o)<=a;)r+=4;for(;vecDot(e,i,o)>a;)i-=4;if(r>=i)break;const s=t[r>>2];t[r>>2]=t[i>>2],t[i>>2]=s,r+=4,i-=4;}for(;vecDot(e,r,o)>a;)r-=4;return r+4}function vecDot(e,t,r){return e[t]*r[0]+e[t+1]*r[1]+e[t+2]*r[2]+e[t+3]*r[3]}function stats(e,t,r){const i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],o=[0,0,0,0],a=r-t>>2;for(let a=t;a<r;a+=4){const t=e[a]*(1/255),r=e[a+1]*(1/255),s=e[a+2]*(1/255),f=e[a+3]*(1/255);o[0]+=t,o[1]+=r,o[2]+=s,o[3]+=f,i[0]+=t*t,i[1]+=t*r,i[2]+=t*s,i[3]+=t*f,i[5]+=r*r,i[6]+=r*s,i[7]+=r*f,i[10]+=s*s,i[11]+=s*f,i[15]+=f*f;}return i[4]=i[1],i[8]=i[2],i[9]=i[6],i[12]=i[3],i[13]=i[7],i[14]=i[11],{R:i,m:o,N:a}}function estats(e){const{R:t}=e,{m:r}=e,{N:i}=e,a=r[0],s=r[1],f=r[2],l=r[3],c=0==i?0:1/i,u=[t[0]-a*a*c,t[1]-a*s*c,t[2]-a*f*c,t[3]-a*l*c,t[4]-s*a*c,t[5]-s*s*c,t[6]-s*f*c,t[7]-s*l*c,t[8]-f*a*c,t[9]-f*s*c,t[10]-f*f*c,t[11]-f*l*c,t[12]-l*a*c,t[13]-l*s*c,t[14]-l*f*c,t[15]-l*l*c],h=u,d=o;let A=[Math.random(),Math.random(),Math.random(),Math.random()],g=0,p=0;if(0!=i)for(let e=0;e<16&&(A=d.multVec(h,A),p=Math.sqrt(d.dot(A,A)),A=d.sml(1/p,A),!(0!=e&&Math.abs(p-g)<1e-9));e++)g=p;const m=[a*c,s*c,f*c,l*c];return {Cov:u,q:m,e:A,L:g,eMq255:d.dot(d.sml(255,m),A),eMq:d.dot(A,m),rgba:(Math.round(255*m[3])<<24|Math.round(255*m[2])<<16|Math.round(255*m[1])<<8|Math.round(255*m[0])<<0)>>>0}}var o={multVec:(e,t)=>[e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7]*t[3],e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11]*t[3],e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]*t[3]],dot:(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],sml:(e,t)=>[e*t[0],e*t[1],e*t[2],e*t[3]]};UPNG.encode=function encode(e,t,r,i,o,a,s){null==i&&(i=0),null==s&&(s=false);const f=compress(e,t,r,i,[false,false,false,0,s,false]);return compressPNG(f,-1),_main(f,t,r,o,a)},UPNG.encodeLL=function encodeLL(e,t,r,i,o,a,s,f){const l={ctype:0+(1==i?0:2)+(0==o?0:4),depth:a,frames:[]},c=(i+o)*a,u=c*t;for(let i=0;i<e.length;i++)l.frames.push({rect:{x:0,y:0,width:t,height:r},img:new Uint8Array(e[i]),blend:0,dispose:1,bpp:Math.ceil(c/8),bpl:Math.ceil(u/8)});return compressPNG(l,0,true),_main(l,t,r,s,f)},UPNG.encode.compress=compress,UPNG.encode.dither=dither,UPNG.quantize=quantize,UPNG.quantize.getKDtree=getKDtree,UPNG.quantize.getNearest=getNearest;}();const r={toArrayBuffer(e,t){const i=e.width,o=e.height,a=i<<2,s=e.getContext("2d").getImageData(0,0,i,o),f=new Uint32Array(s.data.buffer),l=(32*i+31)/32<<2,c=l*o,u=122+c,h=new ArrayBuffer(u),d=new DataView(h),A=1<<20;let g,p,m,w,v=A,b=0,y=0,E=0;function set16(e){d.setUint16(y,e,true),y+=2;}function set32(e){d.setUint32(y,e,true),y+=4;}function seek(e){y+=e;}set16(19778),set32(u),seek(4),set32(122),set32(108),set32(i),set32(-o>>>0),set16(1),set16(32),set32(3),set32(c),set32(2835),set32(2835),seek(8),set32(16711680),set32(65280),set32(255),set32(4278190080),set32(1466527264),function convert(){for(;b<o&&v>0;){for(w=122+b*l,g=0;g<a;)v--,p=f[E++],m=p>>>24,d.setUint32(w+g,p<<8|m),g+=4;b++;}E<f.length?(v=A,setTimeout(convert,r._dly)):t(h);}();},toBlob(e,t){this.toArrayBuffer(e,(e=>{t(new Blob([e],{type:"image/bmp"}));}));},_dly:9};var i={CHROME:"CHROME",FIREFOX:"FIREFOX",DESKTOP_SAFARI:"DESKTOP_SAFARI",IE:"IE",IOS:"IOS",ETC:"ETC"},o={[i.CHROME]:16384,[i.FIREFOX]:11180,[i.DESKTOP_SAFARI]:16384,[i.IE]:8192,[i.IOS]:4096,[i.ETC]:8192};const a="undefined"!=typeof window,s="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,f=a&&window.cordova&&window.cordova.require&&window.cordova.require("cordova/modulemapper"),CustomFile=(a||s)&&(f&&f.getOriginalSymbol(window,"File")||"undefined"!=typeof File&&File),CustomFileReader=(a||s)&&(f&&f.getOriginalSymbol(window,"FileReader")||"undefined"!=typeof FileReader&&FileReader);function getFilefromDataUrl(e,t,r=Date.now()){return new Promise((i=>{const o=e.split(","),a=o[0].match(/:(.*?);/)[1],s=globalThis.atob(o[1]);let f=s.length;const l=new Uint8Array(f);for(;f--;)l[f]=s.charCodeAt(f);const c=new Blob([l],{type:a});c.name=t,c.lastModified=r,i(c);}))}function getDataUrlFromFile(e){return new Promise(((t,r)=>{const i=new CustomFileReader;i.onload=()=>t(i.result),i.onerror=e=>r(e),i.readAsDataURL(e);}))}function loadImage(e){return new Promise(((t,r)=>{const i=new Image;i.onload=()=>t(i),i.onerror=e=>r(e),i.src=e;}))}function getBrowserName(){if(void 0!==getBrowserName.cachedResult)return getBrowserName.cachedResult;let e=i.ETC;const{userAgent:t}=navigator;return /Chrom(e|ium)/i.test(t)?e=i.CHROME:/iP(ad|od|hone)/i.test(t)&&/WebKit/i.test(t)?e=i.IOS:/Safari/i.test(t)?e=i.DESKTOP_SAFARI:/Firefox/i.test(t)?e=i.FIREFOX:(/MSIE/i.test(t)||true==!!document.documentMode)&&(e=i.IE),getBrowserName.cachedResult=e,getBrowserName.cachedResult}function approximateBelowMaximumCanvasSizeOfBrowser(e,t){const r=getBrowserName(),i=o[r];let a=e,s=t,f=a*s;const l=a>s?s/a:a/s;for(;f>i*i;){const e=(i+a)/2,t=(i+s)/2;e<t?(s=t,a=t*l):(s=e*l,a=e),f=a*s;}return {width:a,height:s}}function getNewCanvasAndCtx(e,t){let r,i;try{if(r=new OffscreenCanvas(e,t),i=r.getContext("2d"),null===i)throw new Error("getContext of OffscreenCanvas returns null")}catch(e){r=document.createElement("canvas"),i=r.getContext("2d");}return r.width=e,r.height=t,[r,i]}function drawImageInCanvas(e,t){const{width:r,height:i}=approximateBelowMaximumCanvasSizeOfBrowser(e.width,e.height),[o,a]=getNewCanvasAndCtx(r,i);return t&&/jpe?g/.test(t)&&(a.fillStyle="white",a.fillRect(0,0,o.width,o.height)),a.drawImage(e,0,0,o.width,o.height),o}function isIOS(){return void 0!==isIOS.cachedResult||(isIOS.cachedResult=["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"undefined"!=typeof document&&"ontouchend"in document),isIOS.cachedResult}function drawFileInCanvas(e,t={}){return new Promise((function(r,o){let a,s;var $Try_2_Post=function(){try{return s=drawImageInCanvas(a,t.fileType||e.type),r([a,s])}catch(e){return o(e)}},$Try_2_Catch=function(t){try{var $Try_3_Catch=function(e){try{throw e}catch(e){return o(e)}};try{let t;return getDataUrlFromFile(e).then((function(e){try{return t=e,loadImage(t).then((function(e){try{return a=e,function(){try{return $Try_2_Post()}catch(e){return o(e)}}()}catch(e){return $Try_3_Catch(e)}}),$Try_3_Catch)}catch(e){return $Try_3_Catch(e)}}),$Try_3_Catch)}catch(e){$Try_3_Catch(e);}}catch(e){return o(e)}};try{if(isIOS()||[i.DESKTOP_SAFARI,i.MOBILE_SAFARI].includes(getBrowserName()))throw new Error("Skip createImageBitmap on IOS and Safari");return createImageBitmap(e).then((function(e){try{return a=e,$Try_2_Post()}catch(e){return $Try_2_Catch()}}),$Try_2_Catch)}catch(e){$Try_2_Catch();}}))}function canvasToFile(e,t,i,o,a=1){return new Promise((function(s,f){let l;if("image/png"===t){let c,u,h;return c=e.getContext("2d"),({data:u}=c.getImageData(0,0,e.width,e.height)),h=UPNG.encode([u.buffer],e.width,e.height,4096*a),l=new Blob([h],{type:t}),l.name=i,l.lastModified=o,$If_4.call(this)}{if("image/bmp"===t)return new Promise((t=>r.toBlob(e,t))).then(function(e){try{return l=e,l.name=i,l.lastModified=o,$If_5.call(this)}catch(e){return f(e)}}.bind(this),f);{if("function"==typeof OffscreenCanvas&&e instanceof OffscreenCanvas)return e.convertToBlob({type:t,quality:a}).then(function(e){try{return l=e,l.name=i,l.lastModified=o,$If_6.call(this)}catch(e){return f(e)}}.bind(this),f);{let d;return d=e.toDataURL(t,a),getFilefromDataUrl(d,i,o).then(function(e){try{return l=e,$If_6.call(this)}catch(e){return f(e)}}.bind(this),f)}function $If_6(){return $If_5.call(this)}}function $If_5(){return $If_4.call(this)}}function $If_4(){return s(l)}}))}function cleanupCanvasMemory(e){e.width=0,e.height=0;}function isAutoOrientationInBrowser(){return new Promise((function(e,t){let i,o,a,s;return void 0!==isAutoOrientationInBrowser.cachedResult?e(isAutoOrientationInBrowser.cachedResult):(getFilefromDataUrl("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/xABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==","test.jpg",Date.now()).then((function(r){try{return i=r,drawFileInCanvas(i).then((function(r){try{return o=r[1],canvasToFile(o,i.type,i.name,i.lastModified).then((function(r){try{return a=r,cleanupCanvasMemory(o),drawFileInCanvas(a).then((function(r){try{return s=r[0],isAutoOrientationInBrowser.cachedResult=1===s.width&&2===s.height,e(isAutoOrientationInBrowser.cachedResult)}catch(e){return t(e)}}),t)}catch(e){return t(e)}}),t)}catch(e){return t(e)}}),t)}catch(e){return t(e)}}),t))}))}function getExifOrientation(e){return new Promise(((t,r)=>{const i=new CustomFileReader;i.onload=e=>{const r=new DataView(e.target.result);if(65496!=r.getUint16(0,false))return t(-2);const i=r.byteLength;let o=2;for(;o<i;){if(r.getUint16(o+2,false)<=8)return t(-1);const e=r.getUint16(o,false);if(o+=2,65505==e){if(1165519206!=r.getUint32(o+=2,false))return t(-1);const e=18761==r.getUint16(o+=6,false);o+=r.getUint32(o+4,e);const i=r.getUint16(o,e);o+=2;for(let a=0;a<i;a++)if(274==r.getUint16(o+12*a,e))return t(r.getUint16(o+12*a+8,e))}else {if(65280!=(65280&e))break;o+=r.getUint16(o,false);}}return t(-1)},i.onerror=e=>r(e),i.readAsArrayBuffer(e);}))}function handleMaxWidthOrHeight(e,t){const{width:r}=e,{height:i}=e,{maxWidthOrHeight:o}=t;let a,s=e;return isFinite(o)&&(r>o||i>o)&&([s,a]=getNewCanvasAndCtx(r,i),r>i?(s.width=o,s.height=i/r*o):(s.width=r/i*o,s.height=o),a.drawImage(e,0,0,s.width,s.height),cleanupCanvasMemory(e)),s}function followExifOrientation(e,t){const{width:r}=e,{height:i}=e,[o,a]=getNewCanvasAndCtx(r,i);switch(t>4&&t<9?(o.width=i,o.height=r):(o.width=r,o.height=i),t){case 2:a.transform(-1,0,0,1,r,0);break;case 3:a.transform(-1,0,0,-1,r,i);break;case 4:a.transform(1,0,0,-1,0,i);break;case 5:a.transform(0,1,1,0,0,0);break;case 6:a.transform(0,1,-1,0,i,0);break;case 7:a.transform(0,-1,-1,0,i,r);break;case 8:a.transform(0,-1,1,0,0,r);}return a.drawImage(e,0,0,r,i),cleanupCanvasMemory(e),o}function compress(e,t,r=0){return new Promise((function(i,o){let a,s,f,l,c,u,h,d,A,g,p,m,w,v,b,y,E,F,_,B;function incProgress(e=5){if(t.signal&&t.signal.aborted)throw t.signal.reason;a+=e,t.onProgress(Math.min(a,100));}function setProgress(e){if(t.signal&&t.signal.aborted)throw t.signal.reason;a=Math.min(Math.max(e,a),100),t.onProgress(a);}return a=r,s=t.maxIteration||10,f=1024*t.maxSizeMB*1024,incProgress(),drawFileInCanvas(e,t).then(function(r){try{return [,l]=r,incProgress(),c=handleMaxWidthOrHeight(l,t),incProgress(),new Promise((function(r,i){var o;if(!(o=t.exifOrientation))return getExifOrientation(e).then(function(e){try{return o=e,$If_2.call(this)}catch(e){return i(e)}}.bind(this),i);function $If_2(){return r(o)}return $If_2.call(this)})).then(function(r){try{return u=r,incProgress(),isAutoOrientationInBrowser().then(function(r){try{return h=r?c:followExifOrientation(c,u),incProgress(),d=t.initialQuality||1,A=t.fileType||e.type,canvasToFile(h,A,e.name,e.lastModified,d).then(function(r){try{{if(g=r,incProgress(),p=g.size>f,m=g.size>e.size,!p&&!m)return setProgress(100),i(g);var a;function $Loop_3(){if(s--&&(b>f||b>w)){let t,r;return t=B?.95*_.width:_.width,r=B?.95*_.height:_.height,[E,F]=getNewCanvasAndCtx(t,r),F.drawImage(_,0,0,t,r),d*="image/png"===A?.85:.95,canvasToFile(E,A,e.name,e.lastModified,d).then((function(e){try{return y=e,cleanupCanvasMemory(_),_=E,b=y.size,setProgress(Math.min(99,Math.floor((v-b)/(v-f)*100))),$Loop_3}catch(e){return o(e)}}),o)}return [1]}return w=e.size,v=g.size,b=v,_=h,B=!t.alwaysKeepResolution&&p,(a=function(e){for(;e;){if(e.then)return void e.then(a,o);try{if(e.pop){if(e.length)return e.pop()?$Loop_3_exit.call(this):e;e=$Loop_3;}else e=e.call(this);}catch(e){return o(e)}}}.bind(this))($Loop_3);function $Loop_3_exit(){return cleanupCanvasMemory(_),cleanupCanvasMemory(E),cleanupCanvasMemory(c),cleanupCanvasMemory(h),cleanupCanvasMemory(l),setProgress(100),i(y)}}}catch(u){return o(u)}}.bind(this),o)}catch(e){return o(e)}}.bind(this),o)}catch(e){return o(e)}}.bind(this),o)}catch(e){return o(e)}}.bind(this),o)}))}const l="\nlet scriptImported = false\nself.addEventListener('message', async (e) => {\n const { file, id, imageCompressionLibUrl, options } = e.data\n options.onProgress = (progress) => self.postMessage({ progress, id })\n try {\n if (!scriptImported) {\n // console.log('[worker] importScripts', imageCompressionLibUrl)\n self.importScripts(imageCompressionLibUrl)\n scriptImported = true\n }\n // console.log('[worker] self', self)\n const compressedFile = await imageCompression(file, options)\n self.postMessage({ file: compressedFile, id })\n } catch (e) {\n // console.error('[worker] error', e)\n self.postMessage({ error: e.message + '\\n' + e.stack, id })\n }\n})\n";let c;function compressOnWebWorker(e,t){return new Promise(((r,i)=>{c||(c=function createWorkerScriptURL(e){const t=[];return t.push(e),URL.createObjectURL(new Blob(t))}(l));const o=new Worker(c);o.addEventListener("message",(function handler(e){if(t.signal&&t.signal.aborted)o.terminate();else if(void 0===e.data.progress){if(e.data.error)return i(new Error(e.data.error)),void o.terminate();r(e.data.file),o.terminate();}else t.onProgress(e.data.progress);})),o.addEventListener("error",i),t.signal&&t.signal.addEventListener("abort",(()=>{i(t.signal.reason),o.terminate();})),o.postMessage({file:e,imageCompressionLibUrl:t.libURL,options:{...t,onProgress:void 0,signal:void 0}});}))}function imageCompression(e,t){return new Promise((function(r,i){let o,a,s,f,l,c;if(o={...t},s=0,({onProgress:f}=o),o.maxSizeMB=o.maxSizeMB||Number.POSITIVE_INFINITY,l="boolean"!=typeof o.useWebWorker||o.useWebWorker,delete o.useWebWorker,o.onProgress=e=>{s=e,"function"==typeof f&&f(s);},!(e instanceof Blob||e instanceof CustomFile))return i(new Error("The file given is not an instance of Blob or File"));if(!/^image/.test(e.type))return i(new Error("The file given is not an image"));if(c="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,!l||"function"!=typeof Worker||c)return compress(e,o).then(function(e){try{return a=e,$If_4.call(this)}catch(e){return i(e)}}.bind(this),i);var u=function(){try{return $If_4.call(this)}catch(e){return i(e)}}.bind(this),$Try_1_Catch=function(t){try{return compress(e,o).then((function(e){try{return a=e,u()}catch(e){return i(e)}}),i)}catch(e){return i(e)}};try{return o.libURL=o.libURL||"https://cdn.jsdelivr.net/npm/browser-image-compression@2.0.2/dist/browser-image-compression.js",compressOnWebWorker(e,o).then((function(e){try{return a=e,u()}catch(e){return $Try_1_Catch()}}),$Try_1_Catch)}catch(e){$Try_1_Catch();}function $If_4(){try{a.name=e.name,a.lastModified=e.lastModified;}catch(e){}try{o.preserveExif&&"image/jpeg"===e.type&&(!o.fileType||o.fileType&&o.fileType===e.type)&&(a=copyExifWithoutOrientation(e,a));}catch(e){}return r(a)}}))}imageCompression.getDataUrlFromFile=getDataUrlFromFile,imageCompression.getFilefromDataUrl=getFilefromDataUrl,imageCompression.loadImage=loadImage,imageCompression.drawImageInCanvas=drawImageInCanvas,imageCompression.drawFileInCanvas=drawFileInCanvas,imageCompression.canvasToFile=canvasToFile,imageCompression.getExifOrientation=getExifOrientation,imageCompression.handleMaxWidthOrHeight=handleMaxWidthOrHeight,imageCompression.followExifOrientation=followExifOrientation,imageCompression.cleanupCanvasMemory=cleanupCanvasMemory,imageCompression.isAutoOrientationInBrowser=isAutoOrientationInBrowser,imageCompression.approximateBelowMaximumCanvasSizeOfBrowser=approximateBelowMaximumCanvasSizeOfBrowser,imageCompression.copyExifWithoutOrientation=copyExifWithoutOrientation,imageCompression.getBrowserName=getBrowserName,imageCompression.version="2.0.2";
|
|
2689
2052
|
|
|
2690
|
-
class KritzelImageTool extends KritzelBaseTool {
|
|
2053
|
+
class KritzelImageTool extends index$1.KritzelBaseTool {
|
|
2691
2054
|
constructor(store) {
|
|
2692
2055
|
super(store);
|
|
2693
2056
|
this.fileInput = null;
|
|
@@ -2774,13 +2137,13 @@ class KritzelImageTool extends KritzelBaseTool {
|
|
|
2774
2137
|
const selectionGroup = KritzelSelectionGroup.create(this._store);
|
|
2775
2138
|
selectionGroup.addOrRemove(image);
|
|
2776
2139
|
selectionGroup.selected = true;
|
|
2777
|
-
const addImageCommand = new AddObjectCommand(this._store, this, image);
|
|
2140
|
+
const addImageCommand = new index$1.AddObjectCommand(this._store, this, image);
|
|
2778
2141
|
const addSelectionGroupCommand = new AddSelectionGroupCommand(this._store, this, selectionGroup);
|
|
2779
2142
|
this._store.history.executeCommand(new BatchCommand(this._store, this, [addImageCommand, addSelectionGroupCommand]));
|
|
2780
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
2143
|
+
this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
|
|
2781
2144
|
}
|
|
2782
2145
|
handleCancel() {
|
|
2783
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
2146
|
+
this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
|
|
2784
2147
|
}
|
|
2785
2148
|
}
|
|
2786
2149
|
|
|
@@ -2898,7 +2261,7 @@ const DEFAULT_KRITZEL_CONTROLS = [
|
|
|
2898
2261
|
{
|
|
2899
2262
|
name: 'text',
|
|
2900
2263
|
type: 'tool',
|
|
2901
|
-
tool: KritzelTextTool,
|
|
2264
|
+
tool: index$1.KritzelTextTool,
|
|
2902
2265
|
icon: 'type',
|
|
2903
2266
|
config: DEFAULT_TEXT_CONFIG,
|
|
2904
2267
|
},
|
|
@@ -2927,15 +2290,36 @@ const KritzelEditor = class {
|
|
|
2927
2290
|
this.customSvgIcons = {};
|
|
2928
2291
|
this.hideControls = false;
|
|
2929
2292
|
}
|
|
2293
|
+
async getObjectById(id) {
|
|
2294
|
+
return this.engineRef.getObjectById(id);
|
|
2295
|
+
}
|
|
2296
|
+
async addObject(object) {
|
|
2297
|
+
return this.engineRef.addObject(object);
|
|
2298
|
+
}
|
|
2299
|
+
async updateObject(object, updatedProperties) {
|
|
2300
|
+
return this.engineRef.updateObject(object, updatedProperties);
|
|
2301
|
+
}
|
|
2302
|
+
async removeObject(object) {
|
|
2303
|
+
return this.engineRef.removeObject(object);
|
|
2304
|
+
}
|
|
2305
|
+
async selectObjects(objects) {
|
|
2306
|
+
return this.engineRef.selectObjects(objects);
|
|
2307
|
+
}
|
|
2308
|
+
async selectAllObjectsInViewport() {
|
|
2309
|
+
return this.engineRef.selectAllObjectsInViewport();
|
|
2310
|
+
}
|
|
2311
|
+
async clearSelection() {
|
|
2312
|
+
this.engineRef.clearSelection();
|
|
2313
|
+
}
|
|
2930
2314
|
handleTouchStart(event) {
|
|
2931
2315
|
if (event.cancelable) {
|
|
2932
2316
|
event.preventDefault();
|
|
2933
2317
|
}
|
|
2934
2318
|
}
|
|
2935
|
-
handleKeyDown(
|
|
2319
|
+
handleKeyDown(event) {
|
|
2936
2320
|
var _a;
|
|
2937
|
-
|
|
2938
|
-
|
|
2321
|
+
if (event.key === 'Escape') {
|
|
2322
|
+
event.preventDefault();
|
|
2939
2323
|
(_a = this.controlsRef) === null || _a === void 0 ? void 0 : _a.closeTooltip();
|
|
2940
2324
|
}
|
|
2941
2325
|
}
|
|
@@ -2948,7 +2332,7 @@ const KritzelEditor = class {
|
|
|
2948
2332
|
}
|
|
2949
2333
|
}
|
|
2950
2334
|
render() {
|
|
2951
|
-
return (index.h(index.Host, { key: '
|
|
2335
|
+
return (index.h(index.Host, { key: '5192399124222f7bd8a8d66054e6053befdebdfb' }, index.h("kritzel-engine", { key: '5fe3019675f579dfd14bb0072422de1e97f4fe18', ref: el => (this.engineRef = el) }), index.h("kritzel-controls", { key: '99f382d75380d770a634cbdbe873c29bf95a7b08', ref: el => (this.controlsRef = el), controls: this.controls, style: this.hideControls ? { display: 'none' } : { display: 'flex' } })));
|
|
2952
2336
|
}
|
|
2953
2337
|
get host() { return index.getElement(this); }
|
|
2954
2338
|
};
|
|
@@ -2978,7 +2362,7 @@ class KritzelViewport {
|
|
|
2978
2362
|
if (event.pointerType === 'mouse') {
|
|
2979
2363
|
const adjustedClientX = event.clientX - this._store.offsetX;
|
|
2980
2364
|
const adjustedClientY = event.clientY - this._store.offsetY;
|
|
2981
|
-
if (event.button === KritzelMouseButton.Right) {
|
|
2365
|
+
if (event.button === index$1.KritzelMouseButton.Right) {
|
|
2982
2366
|
this._store.state.isPanning = true;
|
|
2983
2367
|
this._store.state.startX = adjustedClientX;
|
|
2984
2368
|
this._store.state.startY = adjustedClientY;
|
|
@@ -3061,7 +2445,7 @@ class KritzelViewport {
|
|
|
3061
2445
|
}
|
|
3062
2446
|
handleWheel(event) {
|
|
3063
2447
|
event.preventDefault();
|
|
3064
|
-
if (event.ctrlKey === true && KritzelEventHelper.isMainMouseWheel(event)) {
|
|
2448
|
+
if (event.ctrlKey === true && index$1.KritzelEventHelper.isMainMouseWheel(event)) {
|
|
3065
2449
|
this.handleZoom(event);
|
|
3066
2450
|
}
|
|
3067
2451
|
if (!event.ctrlKey) {
|
|
@@ -3092,7 +2476,7 @@ class KritzelViewport {
|
|
|
3092
2476
|
}
|
|
3093
2477
|
}
|
|
3094
2478
|
|
|
3095
|
-
class UpdateViewportCommand extends KritzelBaseCommand {
|
|
2479
|
+
class UpdateViewportCommand extends index$1.KritzelBaseCommand {
|
|
3096
2480
|
constructor(store, initiator, previousViewport) {
|
|
3097
2481
|
super(store, initiator);
|
|
3098
2482
|
this.previousViewport = previousViewport;
|
|
@@ -3337,7 +2721,7 @@ class KritzelOctree {
|
|
|
3337
2721
|
}
|
|
3338
2722
|
}
|
|
3339
2723
|
|
|
3340
|
-
class UpdateObjectCommand extends KritzelBaseCommand {
|
|
2724
|
+
class UpdateObjectCommand extends index$1.KritzelBaseCommand {
|
|
3341
2725
|
constructor(store, initiator, object, updatedProperties) {
|
|
3342
2726
|
super(store, initiator);
|
|
3343
2727
|
this.object = object;
|
|
@@ -3531,17 +2915,18 @@ class KritzelStore {
|
|
|
3531
2915
|
if (this.state.selectionGroup !== null) {
|
|
3532
2916
|
commands.push(new RemoveSelectionGroupCommand(this, this.state.selectionGroup));
|
|
3533
2917
|
}
|
|
3534
|
-
const addCopiedObjectsCommands = this.state.copiedObjects.objects.map(obj => new AddObjectCommand(this, this, obj));
|
|
2918
|
+
const addCopiedObjectsCommands = this.state.copiedObjects.objects.map(obj => new index$1.AddObjectCommand(this, this, obj));
|
|
3535
2919
|
const addCopiedObjectsAsSelectionGroupCommand = new AddSelectionGroupCommand(this, this, this.state.copiedObjects);
|
|
3536
2920
|
commands.push(...addCopiedObjectsCommands, addCopiedObjectsAsSelectionGroupCommand);
|
|
3537
2921
|
this.history.executeCommand(new BatchCommand(this, this, commands));
|
|
3538
2922
|
this.state.isSelecting = false;
|
|
3539
2923
|
this.state.copiedObjects = this.state.selectionGroup.copy();
|
|
3540
|
-
this.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
2924
|
+
this.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
|
|
3541
2925
|
}
|
|
3542
|
-
|
|
2926
|
+
bringForward(object) {
|
|
3543
2927
|
const max = this.allObjects.length + 1;
|
|
3544
|
-
const
|
|
2928
|
+
const objects = object ? [object] : this.state.selectionGroup.objects;
|
|
2929
|
+
const increaseZIndexCommands = objects.map(obj => {
|
|
3545
2930
|
if (obj.zIndex === max) {
|
|
3546
2931
|
return;
|
|
3547
2932
|
}
|
|
@@ -3549,9 +2934,10 @@ class KritzelStore {
|
|
|
3549
2934
|
});
|
|
3550
2935
|
this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));
|
|
3551
2936
|
}
|
|
3552
|
-
|
|
2937
|
+
sendBackward(object) {
|
|
3553
2938
|
const min = 0;
|
|
3554
|
-
const
|
|
2939
|
+
const objects = object ? [object] : this.state.selectionGroup.objects;
|
|
2940
|
+
const decreaseZIndexCommands = objects.map(obj => {
|
|
3555
2941
|
if (obj.zIndex === min) {
|
|
3556
2942
|
return;
|
|
3557
2943
|
}
|
|
@@ -3559,16 +2945,18 @@ class KritzelStore {
|
|
|
3559
2945
|
});
|
|
3560
2946
|
this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));
|
|
3561
2947
|
}
|
|
3562
|
-
|
|
2948
|
+
bringToFront(object) {
|
|
3563
2949
|
const max = this.allObjects.length + 1;
|
|
3564
|
-
const
|
|
2950
|
+
const objects = object ? [object] : this.state.selectionGroup.objects;
|
|
2951
|
+
const increaseZIndexCommands = objects.map(obj => {
|
|
3565
2952
|
return new UpdateObjectCommand(this, this, obj, { zIndex: max });
|
|
3566
2953
|
});
|
|
3567
2954
|
this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));
|
|
3568
2955
|
}
|
|
3569
|
-
|
|
2956
|
+
sendToBack(object) {
|
|
3570
2957
|
const min = -1;
|
|
3571
|
-
const
|
|
2958
|
+
const objects = object ? [object] : this.state.selectionGroup.objects;
|
|
2959
|
+
const decreaseZIndexCommands = objects.map(obj => {
|
|
3572
2960
|
return new UpdateObjectCommand(this, this, obj, { zIndex: min });
|
|
3573
2961
|
});
|
|
3574
2962
|
this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));
|
|
@@ -3612,7 +3000,7 @@ class KritzelStore {
|
|
|
3612
3000
|
selectionGroup.rotation = selectionGroup.objects[0].rotation;
|
|
3613
3001
|
}
|
|
3614
3002
|
this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));
|
|
3615
|
-
this.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
3003
|
+
this.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
|
|
3616
3004
|
}
|
|
3617
3005
|
}
|
|
3618
3006
|
clearSelection() {
|
|
@@ -3666,10 +3054,13 @@ class KritzelKeyHandler extends KritzelBaseHandler {
|
|
|
3666
3054
|
}
|
|
3667
3055
|
handleKeyDown(event) {
|
|
3668
3056
|
if (this._store.state.isFocused === false) {
|
|
3057
|
+
event.preventDefault();
|
|
3669
3058
|
return;
|
|
3670
3059
|
}
|
|
3671
|
-
event.preventDefault();
|
|
3672
3060
|
this._store.state.isCtrlKeyPressed = event.ctrlKey;
|
|
3061
|
+
if (this._store.state.isCtrlKeyPressed) {
|
|
3062
|
+
event.preventDefault();
|
|
3063
|
+
}
|
|
3673
3064
|
if (event.key === 'Escape' && this._store.state.selectionGroup) {
|
|
3674
3065
|
this._store.clearSelection();
|
|
3675
3066
|
}
|
|
@@ -3683,23 +3074,23 @@ class KritzelKeyHandler extends KritzelBaseHandler {
|
|
|
3683
3074
|
this._store.history.redo();
|
|
3684
3075
|
}
|
|
3685
3076
|
if (event.key === 's' && event.ctrlKey) {
|
|
3686
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
3077
|
+
this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
|
|
3687
3078
|
this._store.deselectAllObjects();
|
|
3688
3079
|
}
|
|
3689
3080
|
if (event.key === 'b' && event.ctrlKey) {
|
|
3690
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('brush'));
|
|
3081
|
+
this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('brush'));
|
|
3691
3082
|
this._store.deselectAllObjects();
|
|
3692
3083
|
}
|
|
3693
3084
|
if (event.key === 'e' && event.ctrlKey) {
|
|
3694
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('eraser'));
|
|
3085
|
+
this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('eraser'));
|
|
3695
3086
|
this._store.deselectAllObjects();
|
|
3696
3087
|
}
|
|
3697
3088
|
if (event.key === 'i' && event.ctrlKey) {
|
|
3698
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('image'));
|
|
3089
|
+
this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('image'));
|
|
3699
3090
|
this._store.deselectAllObjects();
|
|
3700
3091
|
}
|
|
3701
3092
|
if (event.key === 'x' && event.ctrlKey) {
|
|
3702
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));
|
|
3093
|
+
this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('text'));
|
|
3703
3094
|
this._store.deselectAllObjects();
|
|
3704
3095
|
}
|
|
3705
3096
|
if (event.key === 'c' && event.ctrlKey && this._store.state.selectionGroup) {
|
|
@@ -3710,16 +3101,16 @@ class KritzelKeyHandler extends KritzelBaseHandler {
|
|
|
3710
3101
|
this._store.paste();
|
|
3711
3102
|
}
|
|
3712
3103
|
if (event.key === '+' && event.ctrlKey && this._store.state.selectionGroup) {
|
|
3713
|
-
this._store.
|
|
3104
|
+
this._store.bringForward();
|
|
3714
3105
|
}
|
|
3715
3106
|
if (event.key === '-' && event.ctrlKey && this._store.state.selectionGroup) {
|
|
3716
|
-
this._store.
|
|
3107
|
+
this._store.sendBackward();
|
|
3717
3108
|
}
|
|
3718
3109
|
if (event.key === '*' && event.shiftKey && this._store.state.selectionGroup) {
|
|
3719
|
-
this._store.
|
|
3110
|
+
this._store.bringToFront();
|
|
3720
3111
|
}
|
|
3721
3112
|
if (event.key === '_' && event.shiftKey && this._store.state.selectionGroup) {
|
|
3722
|
-
this._store.
|
|
3113
|
+
this._store.sendToBack();
|
|
3723
3114
|
}
|
|
3724
3115
|
if (event.key === 'a' && event.ctrlKey && this._store.state.activeText) {
|
|
3725
3116
|
this._store.state.activeText.selectAll();
|
|
@@ -3833,7 +3224,7 @@ const KritzelEngine = class {
|
|
|
3833
3224
|
}
|
|
3834
3225
|
this.store.state.skipContextMenu = false;
|
|
3835
3226
|
this.activeToolChange.emit(activeTool);
|
|
3836
|
-
KritzelKeyboardHelper.forceHideKeyboard();
|
|
3227
|
+
index$1.KritzelKeyboardHelper.forceHideKeyboard();
|
|
3837
3228
|
});
|
|
3838
3229
|
this.store.onStateChange('isFocused', (isFocused) => {
|
|
3839
3230
|
if (!isFocused) {
|
|
@@ -3855,14 +3246,14 @@ const KritzelEngine = class {
|
|
|
3855
3246
|
}
|
|
3856
3247
|
handlePointerDown(ev) {
|
|
3857
3248
|
var _a, _b;
|
|
3858
|
-
if (KritzelEventHelper.isPointerEventOnContextMenu(ev) === false && this.store.state.isContextMenuVisible) {
|
|
3249
|
+
if (index$1.KritzelEventHelper.isPointerEventOnContextMenu(ev) === false && this.store.state.isContextMenuVisible) {
|
|
3859
3250
|
this.hideContextMenu();
|
|
3860
3251
|
return;
|
|
3861
3252
|
}
|
|
3862
3253
|
if (this.store.state.isEnabled === false) {
|
|
3863
3254
|
return;
|
|
3864
3255
|
}
|
|
3865
|
-
KritzelEventHelper.onLongTouchPress(ev, (event) => {
|
|
3256
|
+
index$1.KritzelEventHelper.onLongTouchPress(ev, (event) => {
|
|
3866
3257
|
if (!(this.store.state.activeTool instanceof KritzelSelectionTool)) {
|
|
3867
3258
|
return;
|
|
3868
3259
|
}
|
|
@@ -3934,11 +3325,11 @@ const KritzelEngine = class {
|
|
|
3934
3325
|
this.hideContextMenu();
|
|
3935
3326
|
}
|
|
3936
3327
|
async registerTool(toolName, toolClass, toolConfig) {
|
|
3937
|
-
if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof KritzelBaseTool)) {
|
|
3328
|
+
if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof index$1.KritzelBaseTool)) {
|
|
3938
3329
|
console.error(`Failed to register tool "${toolName}": Tool class must be a constructor function`);
|
|
3939
3330
|
return null;
|
|
3940
3331
|
}
|
|
3941
|
-
const registeredTool = KritzelToolRegistry.registerTool(toolName, toolClass, this.store);
|
|
3332
|
+
const registeredTool = index$1.KritzelToolRegistry.registerTool(toolName, toolClass, this.store);
|
|
3942
3333
|
if (toolConfig) {
|
|
3943
3334
|
Object.entries(toolConfig).forEach(([key, value]) => {
|
|
3944
3335
|
registeredTool[key] = value;
|
|
@@ -3974,11 +3365,17 @@ const KritzelEngine = class {
|
|
|
3974
3365
|
async paste(x, y) {
|
|
3975
3366
|
this.store.paste(x, y);
|
|
3976
3367
|
}
|
|
3977
|
-
async
|
|
3978
|
-
this.store.
|
|
3368
|
+
async bringForward(object) {
|
|
3369
|
+
this.store.bringForward(object);
|
|
3370
|
+
}
|
|
3371
|
+
async sendBackward(object) {
|
|
3372
|
+
this.store.sendBackward(object);
|
|
3373
|
+
}
|
|
3374
|
+
async moveToTop(object) {
|
|
3375
|
+
this.store.bringToFront(object);
|
|
3979
3376
|
}
|
|
3980
|
-
async moveToBottom() {
|
|
3981
|
-
this.store.
|
|
3377
|
+
async moveToBottom(object) {
|
|
3378
|
+
this.store.sendToBack(object);
|
|
3982
3379
|
}
|
|
3983
3380
|
async undo() {
|
|
3984
3381
|
this.store.history.undo();
|
|
@@ -4001,7 +3398,7 @@ const KritzelEngine = class {
|
|
|
4001
3398
|
object.id = object.generateId();
|
|
4002
3399
|
object._store = this.store;
|
|
4003
3400
|
object.zIndex = this.store.currentZIndex;
|
|
4004
|
-
const command = new AddObjectCommand(this.store, this, object);
|
|
3401
|
+
const command = new index$1.AddObjectCommand(this.store, this, object);
|
|
4005
3402
|
this.store.history.executeCommand(command);
|
|
4006
3403
|
return object;
|
|
4007
3404
|
}
|
|
@@ -4020,14 +3417,14 @@ const KritzelEngine = class {
|
|
|
4020
3417
|
async selectObjects(objects) {
|
|
4021
3418
|
var _a;
|
|
4022
3419
|
(_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
|
|
4023
|
-
this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
3420
|
+
this.store.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
|
|
4024
3421
|
this.store.deselectAllObjects();
|
|
4025
3422
|
this.store.selectObjects(objects);
|
|
4026
3423
|
}
|
|
4027
3424
|
async selectAllObjectsInViewport() {
|
|
4028
3425
|
var _a;
|
|
4029
3426
|
(_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
|
|
4030
|
-
this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
3427
|
+
this.store.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
|
|
4031
3428
|
this.store.deselectAllObjects();
|
|
4032
3429
|
this.store.selectAllObjectsInViewport();
|
|
4033
3430
|
}
|
|
@@ -4040,15 +3437,15 @@ const KritzelEngine = class {
|
|
|
4040
3437
|
const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
|
|
4041
3438
|
const baseHandleSize = parseFloat(baseHandleSizePx);
|
|
4042
3439
|
const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
|
|
4043
|
-
return (index.h(index.Host, { key: '
|
|
4044
|
-
_a.translateX), index.h("div", { key: '
|
|
4045
|
-
_b.translateY), index.h("div", { key: '
|
|
4046
|
-
_c.viewportWidth), index.h("div", { key: '
|
|
4047
|
-
_d.viewportHeight), index.h("div", { key: '
|
|
4048
|
-
_e.scale), index.h("div", { key: '
|
|
4049
|
-
_g.name), index.h("div", { key: '
|
|
4050
|
-
_m.cursorX), index.h("div", { key: '
|
|
4051
|
-
_o.cursorY)), index.h("div", { key: '
|
|
3440
|
+
return (index.h(index.Host, { key: '46b1c0d4000229b7881636625af38db319ff49ae' }, index.h("div", { key: '7b91f710711ff1fefd395c38f79004c84a3df74d', class: "debug-panel", style: { display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, index.h("div", { key: '63568d0cceef92262bbf40f54f84d5003302f7c1' }, "TranslateX: ", (_a = this.store.state) === null || _a === void 0 ? void 0 :
|
|
3441
|
+
_a.translateX), index.h("div", { key: 'cd7a9f6bf33d547b23814468c1d2ae726f5d5576' }, "TranslateY: ", (_b = this.store.state) === null || _b === void 0 ? void 0 :
|
|
3442
|
+
_b.translateY), index.h("div", { key: '42788d635e64f1e1f1da2f6b0ec8cf0fec988769' }, "ViewportWidth: ", (_c = this.store.state) === null || _c === void 0 ? void 0 :
|
|
3443
|
+
_c.viewportWidth), index.h("div", { key: 'bd674b2a6b13b22ad177d2bc0527a6b2d41d523f' }, "ViewportHeight: ", (_d = this.store.state) === null || _d === void 0 ? void 0 :
|
|
3444
|
+
_d.viewportHeight), index.h("div", { key: 'faa9581a80b8020ebe4f48cfbea4b0a91a17b1d0' }, "ObjectsInViewport. ", this.store.objects.length), index.h("div", { key: '74e9671f7f546debca0884e74e7b5cdbba0810de' }, "Scale: ", (_e = this.store.state) === null || _e === void 0 ? void 0 :
|
|
3445
|
+
_e.scale), index.h("div", { key: '7f14af283874e226cfdcdf5bf17c0c4f6935f154' }, "ActiveTool: ", (_g = (_f = this.store.state) === null || _f === void 0 ? void 0 : _f.activeTool) === null || _g === void 0 ? void 0 :
|
|
3446
|
+
_g.name), index.h("div", { key: '5d9bb07762326387a04d99d9d1f0487c809a8d13' }, "HasViewportChanged: ", ((_h = this.store.state) === null || _h === void 0 ? void 0 : _h.hasViewportChanged) ? 'true' : 'false'), index.h("div", { key: '65b54f060f162e328d8756845a991b84cd377fa8' }, "IsEnabled: ", ((_j = this.store.state) === null || _j === void 0 ? void 0 : _j.isEnabled) ? 'true' : 'false'), index.h("div", { key: '0593106ef382e3a4b4368f503d435550ee52b686' }, "IsScaling: ", ((_k = this.store.state) === null || _k === void 0 ? void 0 : _k.isScaling) ? 'true' : 'false'), index.h("div", { key: '2d9102c016bbc89bd3f61b46c364663d822ae773' }, "IsPanning: ", ((_l = this.store.state) === null || _l === void 0 ? void 0 : _l.isPanning) ? 'true' : 'false'), index.h("div", { key: '5393b7974bf7e8c391ec67945610b0051d155393' }, "IsFocused: ", this.store.state.isFocused ? 'true' : 'false'), index.h("div", { key: '3591db55fdf4b92162f4d516d307b9f42a6f996a' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), index.h("div", { key: '2fef15767414c841b320705638328f45ab6e01b7' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), index.h("div", { key: '20cf1b12790c3f7112484de2343ed157536f072f' }, "IsResizeHandleSelected: ", this.store.state.isResizeHandleSelected ? 'true' : 'false'), index.h("div", { key: 'b23da45c9f13deb827f837651ab4e09cdb435aa9' }, "IsRotationHandleSelected: ", this.store.state.isRotationHandleSelected ? 'true' : 'false'), index.h("div", { key: '6c3d8cf2aeacf3c9e7930eca83676bfa59f3d2cb' }, "IsDrawing: ", this.store.state.isDrawing ? 'true' : 'false'), index.h("div", { key: 'c87abe35d1aa55d11d321cec3d78f6722a04d114' }, "IsWriting: ", this.store.state.isWriting ? 'true' : 'false'), index.h("div", { key: '3d371da3b1075c5b116ae0db50ae5b8d22e6c2eb' }, "CursorX: ", (_m = this.store.state) === null || _m === void 0 ? void 0 :
|
|
3447
|
+
_m.cursorX), index.h("div", { key: '1a426883cfbfd742aa127d7fff92080586f4af62' }, "CursorY: ", (_o = this.store.state) === null || _o === void 0 ? void 0 :
|
|
3448
|
+
_o.cursorY)), index.h("div", { key: '5de09bb5222a271a3163d7226e012cb86c722a7e', class: "origin", style: {
|
|
4052
3449
|
transform: `matrix(${(_p = this.store.state) === null || _p === void 0 ? void 0 : _p.scale}, 0, 0, ${(_q = this.store.state) === null || _q === void 0 ? void 0 : _q.scale}, ${(_r = this.store.state) === null || _r === void 0 ? void 0 : _r.translateX}, ${(_s = this.store.state) === null || _s === void 0 ? void 0 : _s.translateY})`,
|
|
4053
3450
|
} }, (_t = this.store.objects) === null || _t === void 0 ? void 0 :
|
|
4054
3451
|
_t.map(object => {
|
|
@@ -4082,7 +3479,7 @@ const KritzelEngine = class {
|
|
|
4082
3479
|
height: '100%',
|
|
4083
3480
|
userSelect: 'none',
|
|
4084
3481
|
pointerEvents: 'none',
|
|
4085
|
-
}, draggable: false, onDragStart: e => e.preventDefault() })), object instanceof KritzelText && (index.h("textarea", { ref: el => object.mount(el), value: object.value, onKeyDown: event => object.handleKeyDown(event), onInput: event => object.handleInput(event), rows: object.rows, style: {
|
|
3482
|
+
}, draggable: false, onDragStart: e => e.preventDefault() })), object instanceof index$1.KritzelText && (index.h("textarea", { ref: el => object.mount(el), value: object.value, onKeyDown: event => object.handleKeyDown(event), onInput: event => object.handleInput(event), rows: object.rows, style: {
|
|
4086
3483
|
width: '100%',
|
|
4087
3484
|
height: '100%',
|
|
4088
3485
|
color: object.fontColor,
|
|
@@ -4145,7 +3542,7 @@ const KritzelEngine = class {
|
|
|
4145
3542
|
fill: 'transparent',
|
|
4146
3543
|
cursor: 'grab',
|
|
4147
3544
|
}, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), index.h("g", { style: { display: this.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' } }, index.h("foreignObject", { x: object.totalWidth.toString(), y: "0", width: "400px", height: "160px", style: { minHeight: '0', minWidth: '0', display: object.debugInfoVisible ? 'block' : 'none' } }, index.h("div", { style: { width: '100%', height: '100%' } }, index.h("div", { style: { whiteSpace: 'nowrap' } }, "zIndex: ", object.zIndex), index.h("div", { style: { whiteSpace: 'nowrap' } }, "translateX: ", object.translateX), index.h("div", { style: { whiteSpace: 'nowrap' } }, "translateY: ", object.translateY), index.h("div", { style: { whiteSpace: 'nowrap' } }, "width: ", object.width), index.h("div", { style: { whiteSpace: 'nowrap' } }, "height: ", object.height), index.h("div", { style: { whiteSpace: 'nowrap' } }, "scale: ", object.scale), index.h("div", { style: { whiteSpace: 'nowrap' } }, "rotation: ", object.rotation)))))));
|
|
4148
|
-
}), index.h("svg", { key: '
|
|
3545
|
+
}), index.h("svg", { key: '684971a4c93f5d8cdf52497d0f3f81dc21ece397', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
|
|
4149
3546
|
height: (_u = this.store.state.currentPath) === null || _u === void 0 ? void 0 : _u.height.toString(),
|
|
4150
3547
|
width: (_v = this.store.state.currentPath) === null || _v === void 0 ? void 0 : _v.width.toString(),
|
|
4151
3548
|
left: '0',
|
|
@@ -4155,12 +3552,12 @@ const KritzelEngine = class {
|
|
|
4155
3552
|
transform: (_x = this.store.state.currentPath) === null || _x === void 0 ? void 0 : _x.transformationMatrix,
|
|
4156
3553
|
transformOrigin: 'top left',
|
|
4157
3554
|
overflow: 'visible',
|
|
4158
|
-
}, viewBox: (_y = this.store.state.currentPath) === null || _y === void 0 ? void 0 : _y.viewBox }, index.h("path", { key: '
|
|
3555
|
+
}, viewBox: (_y = this.store.state.currentPath) === null || _y === void 0 ? void 0 : _y.viewBox }, index.h("path", { key: 'e29e0b110612e569a8fada121d749f66ab5e2aae', d: (_z = this.store.state.currentPath) === null || _z === void 0 ? void 0 : _z.d, fill: (_0 = this.store.state.currentPath) === null || _0 === void 0 ? void 0 : _0.fill, stroke: (_1 = this.store.state.currentPath) === null || _1 === void 0 ? void 0 : _1.stroke }))), this.store.state.isContextMenuVisible && (index.h("kritzel-context-menu", { key: '81b88db00390e6ba768b7432e941a87ba56e54e5', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, style: {
|
|
4159
3556
|
position: 'fixed',
|
|
4160
3557
|
left: `${this.store.state.contextMenuX}px`,
|
|
4161
3558
|
top: `${this.store.state.contextMenuY}px`,
|
|
4162
3559
|
zIndex: '10000',
|
|
4163
|
-
}, onActionSelected: event => this.handleContextMenuAction(event) })), ((_2 = this.store.state) === null || _2 === void 0 ? void 0 : _2.activeTool) instanceof KritzelEraserTool && !this.store.state.isScaling && index.h("kritzel-cursor-trail", { key: '
|
|
3560
|
+
}, onActionSelected: event => this.handleContextMenuAction(event) })), ((_2 = this.store.state) === null || _2 === void 0 ? void 0 : _2.activeTool) instanceof KritzelEraserTool && !this.store.state.isScaling && index.h("kritzel-cursor-trail", { key: '700ef43b524157ef757973fc039b2d74e7920578', store: this.store })));
|
|
4164
3561
|
}
|
|
4165
3562
|
get host() { return index.getElement(this); }
|
|
4166
3563
|
};
|