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.
Files changed (127) hide show
  1. package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
  2. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
  3. package/dist/cjs/index-C2M4eyxF.js +652 -0
  4. package/dist/cjs/index-C2M4eyxF.js.map +1 -0
  5. package/dist/cjs/{index-D62tBCuq.js → index-CXT94beA.js} +111 -109
  6. package/dist/cjs/index-CXT94beA.js.map +1 -0
  7. package/dist/cjs/index.cjs.js +5 -0
  8. package/dist/cjs/index.cjs.js.map +1 -1
  9. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +131 -734
  10. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +1 -1
  11. package/dist/cjs/loader.cjs.js +4 -3
  12. package/dist/cjs/loader.cjs.js.map +1 -1
  13. package/dist/cjs/stencil.cjs.js +5 -4
  14. package/dist/cjs/stencil.cjs.js.map +1 -1
  15. package/dist/collection/classes/handlers/key.handler.js +8 -5
  16. package/dist/collection/classes/handlers/key.handler.js.map +1 -1
  17. package/dist/collection/classes/store.class.js +12 -8
  18. package/dist/collection/classes/store.class.js.map +1 -1
  19. package/dist/collection/collection-manifest.json +1 -1
  20. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +217 -4
  21. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  22. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +96 -20
  23. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  24. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +4 -5
  25. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -1
  26. package/dist/collection/index.js +10 -1
  27. package/dist/collection/index.js.map +1 -1
  28. package/dist/components/index.js +2 -1
  29. package/dist/components/index.js.map +1 -1
  30. package/dist/components/kritzel-brush-style.js +1 -1
  31. package/dist/components/kritzel-color-palette.js +1 -1
  32. package/dist/components/kritzel-color.js +1 -1
  33. package/dist/components/kritzel-context-menu.js +1 -1
  34. package/dist/components/kritzel-control-brush-config.js +1 -1
  35. package/dist/components/kritzel-control-text-config.js +1 -1
  36. package/dist/components/kritzel-controls.js +1 -1
  37. package/dist/components/kritzel-cursor-trail.js +1 -1
  38. package/dist/components/kritzel-dropdown.js +1 -1
  39. package/dist/components/kritzel-editor.js +52 -24
  40. package/dist/components/kritzel-editor.js.map +1 -1
  41. package/dist/components/kritzel-engine.js +1 -1
  42. package/dist/components/kritzel-font-family.js +1 -1
  43. package/dist/components/kritzel-font-size.js +1 -1
  44. package/dist/components/kritzel-font.js +1 -1
  45. package/dist/components/kritzel-icon.js +1 -1
  46. package/dist/components/kritzel-stroke-size.js +1 -1
  47. package/dist/components/kritzel-tooltip.js +1 -1
  48. package/dist/components/kritzel-utility-panel.js +1 -1
  49. package/dist/components/{p-CmckGlXt.js → p-B57pFHwJ.js} +3 -3
  50. package/dist/components/{p-CmckGlXt.js.map → p-B57pFHwJ.js.map} +1 -1
  51. package/dist/components/{p-Ddfewfv9.js → p-B94Na1ee.js} +4 -4
  52. package/dist/components/{p-Ddfewfv9.js.map → p-B94Na1ee.js.map} +1 -1
  53. package/dist/components/{p-Ck2d5Wd1.js → p-BH1Tkwyh.js} +5 -5
  54. package/dist/components/{p-Ck2d5Wd1.js.map → p-BH1Tkwyh.js.map} +1 -1
  55. package/dist/components/{p-DqZOaMbq.js → p-BIlVkMTU.js} +378 -378
  56. package/dist/components/p-BIlVkMTU.js.map +1 -0
  57. package/dist/components/{p-BXJ8s30N.js → p-BtjtAfGW.js} +10 -10
  58. package/dist/components/{p-BXJ8s30N.js.map → p-BtjtAfGW.js.map} +1 -1
  59. package/dist/components/{p-DInF8Iby.js → p-C9FTWNZY.js} +3 -3
  60. package/dist/components/{p-DInF8Iby.js.map → p-C9FTWNZY.js.map} +1 -1
  61. package/dist/components/{p-B7P9QBiE.js → p-C9ZagG9K.js} +4 -4
  62. package/dist/components/{p-B7P9QBiE.js.map → p-C9ZagG9K.js.map} +1 -1
  63. package/dist/components/{p-BmAloSfd.js → p-CRiUM-tD.js} +4 -4
  64. package/dist/components/{p-BmAloSfd.js.map → p-CRiUM-tD.js.map} +1 -1
  65. package/dist/components/{p-BvPTbq7F.js → p-CSSrNLad.js} +3 -3
  66. package/dist/components/{p-BvPTbq7F.js.map → p-CSSrNLad.js.map} +1 -1
  67. package/dist/components/{p-DFhbw-Fr.js → p-CaQ7Iei7.js} +3 -3
  68. package/dist/components/{p-DFhbw-Fr.js.map → p-CaQ7Iei7.js.map} +1 -1
  69. package/dist/components/{p-CPjl7Inl.js → p-D04aTZsR.js} +4 -4
  70. package/dist/components/{p-CPjl7Inl.js.map → p-D04aTZsR.js.map} +1 -1
  71. package/dist/components/{p-maiDeBe9.js → p-DLV-5gE_.js} +9 -9
  72. package/dist/components/{p-maiDeBe9.js.map → p-DLV-5gE_.js.map} +1 -1
  73. package/dist/components/{p-DC8SDK2U.js → p-DoQOtXjT.js} +111 -107
  74. package/dist/components/p-DoQOtXjT.js.map +1 -0
  75. package/dist/components/{p--2WHhuBI.js → p-aZgXbW1r.js} +51 -36
  76. package/dist/components/{p--2WHhuBI.js.map → p-aZgXbW1r.js.map} +1 -1
  77. package/dist/components/{p-DfMdBA8L.js → p-fmNiA3Yr.js} +4 -4
  78. package/dist/components/{p-DfMdBA8L.js.map → p-fmNiA3Yr.js.map} +1 -1
  79. package/dist/components/{p-c6tIpE_t.js → p-h3bqYufZ.js} +3 -3
  80. package/dist/components/{p-c6tIpE_t.js.map → p-h3bqYufZ.js.map} +1 -1
  81. package/dist/components/{p-CZkSABuJ.js → p-ksTCzgsY.js} +3 -3
  82. package/dist/components/{p-CZkSABuJ.js.map → p-ksTCzgsY.js.map} +1 -1
  83. package/dist/components/{p-BnsTGnvc.js → p-mz1ayKXG.js} +21 -22
  84. package/dist/components/p-mz1ayKXG.js.map +1 -0
  85. package/dist/components/{p-DHT5gK0E.js → p-yBnfPxIa.js} +4 -4
  86. package/dist/components/{p-DHT5gK0E.js.map → p-yBnfPxIa.js.map} +1 -1
  87. package/dist/esm/app-globals-DQuL1Twl.js +6 -0
  88. package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
  89. package/dist/esm/{index-BOJOOWaP.js → index-CGHvfMWF.js} +112 -109
  90. package/dist/esm/index-CGHvfMWF.js.map +1 -0
  91. package/dist/esm/index-rckCSz7Y.js +641 -0
  92. package/dist/esm/index-rckCSz7Y.js.map +1 -0
  93. package/dist/esm/index.js +1 -1
  94. package/dist/esm/kritzel-brush-style_18.entry.js +73 -676
  95. package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -1
  96. package/dist/esm/loader.js +4 -3
  97. package/dist/esm/loader.js.map +1 -1
  98. package/dist/esm/stencil.js +5 -4
  99. package/dist/esm/stencil.js.map +1 -1
  100. package/dist/stencil/index.esm.js +1 -1
  101. package/dist/stencil/loader.esm.js.map +1 -1
  102. package/dist/stencil/p-9394d74e.entry.js +2 -0
  103. package/dist/stencil/p-9394d74e.entry.js.map +1 -0
  104. package/dist/stencil/p-CGHvfMWF.js +3 -0
  105. package/dist/stencil/p-CGHvfMWF.js.map +1 -0
  106. package/dist/stencil/p-DQuL1Twl.js +2 -0
  107. package/dist/stencil/p-DQuL1Twl.js.map +1 -0
  108. package/dist/stencil/p-rckCSz7Y.js +2 -0
  109. package/dist/stencil/p-rckCSz7Y.js.map +1 -0
  110. package/dist/stencil/stencil.esm.js +1 -1
  111. package/dist/stencil/stencil.esm.js.map +1 -1
  112. package/dist/types/classes/store.class.d.ts +4 -4
  113. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +10 -2
  114. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +4 -2
  115. package/dist/types/components.d.ts +13 -4
  116. package/dist/types/index.d.ts +1 -0
  117. package/dist/types/stencil-public-runtime.d.ts +12 -5
  118. package/package.json +1 -1
  119. package/dist/cjs/index-D62tBCuq.js.map +0 -1
  120. package/dist/components/p-BnsTGnvc.js.map +0 -1
  121. package/dist/components/p-DC8SDK2U.js.map +0 -1
  122. package/dist/components/p-DqZOaMbq.js.map +0 -1
  123. package/dist/esm/index-BOJOOWaP.js.map +0 -1
  124. package/dist/stencil/p-65e86254.entry.js +0 -2
  125. package/dist/stencil/p-65e86254.entry.js.map +0 -1
  126. package/dist/stencil/p-BOJOOWaP.js +0 -3
  127. package/dist/stencil/p-BOJOOWaP.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-D62tBCuq.js');
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
- var __rest = (undefined && undefined.__rest) || function (s, e) {
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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').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, _b;
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: 'b0ed601253a0f6187e601afd2fb56bdbc7d5a9cd', class: {
576
+ return (index.h(index.Host, { key: 'c20b7cbc7228f1b13a7e17f7ea94c96151e11608', class: {
1214
577
  mobile: this.isTouchDevice,
1215
- } }, index.h("kritzel-utility-panel", { key: 'a8621ccdc3186a3f6ac6d9b5aa9ee6d92401e5d9', style: {
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: 'ade9f5ee7b854eac1d4497c4f3e5e3cd6a2f1f7f', class: "kritzel-controls" }, this.controls.map(control => {
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(ev) {
2319
+ handleKeyDown(event) {
2936
2320
  var _a;
2937
- ev.preventDefault();
2938
- if (ev.key === 'Escape') {
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: 'b861ac259f78cf3a4a7070ce2e54a731414a8c08' }, index.h("kritzel-engine", { key: '026f2caba18bce0b0453b904616d9baa455592d9', ref: el => (this.engineRef = el) }), index.h("kritzel-controls", { key: 'afc78be61bfddeafd3650f7a383ad4a1847fa3b5', ref: el => (this.controlsRef = el), controls: this.controls, style: this.hideControls ? { display: 'none' } : { display: 'flex' } })));
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
- moveUp() {
2926
+ bringForward(object) {
3543
2927
  const max = this.allObjects.length + 1;
3544
- const increaseZIndexCommands = this.state.selectionGroup.objects.map(obj => {
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
- moveDown() {
2937
+ sendBackward(object) {
3553
2938
  const min = 0;
3554
- const decreaseZIndexCommands = this.state.selectionGroup.objects.map(obj => {
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
- moveToTop() {
2948
+ bringToFront(object) {
3563
2949
  const max = this.allObjects.length + 1;
3564
- const increaseZIndexCommands = this.state.selectionGroup.objects.map(obj => {
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
- moveToBottom() {
2956
+ sendToBack(object) {
3570
2957
  const min = -1;
3571
- const decreaseZIndexCommands = this.state.selectionGroup.objects.map(obj => {
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.moveUp();
3104
+ this._store.bringForward();
3714
3105
  }
3715
3106
  if (event.key === '-' && event.ctrlKey && this._store.state.selectionGroup) {
3716
- this._store.moveDown();
3107
+ this._store.sendBackward();
3717
3108
  }
3718
3109
  if (event.key === '*' && event.shiftKey && this._store.state.selectionGroup) {
3719
- this._store.moveToTop();
3110
+ this._store.bringToFront();
3720
3111
  }
3721
3112
  if (event.key === '_' && event.shiftKey && this._store.state.selectionGroup) {
3722
- this._store.moveToBottom();
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 moveToTop() {
3978
- this.store.moveToTop();
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.moveToBottom();
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: '632d8633bd27520dedda2e6eb84862d280fa6714' }, index.h("div", { key: 'fda3cdc033d97e1f17ae8fcede94933ae73458b3', class: "debug-panel", style: { display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, index.h("div", { key: '823aac3e9b58615e7c499163bd9101675a62ff70' }, "TranslateX: ", (_a = this.store.state) === null || _a === void 0 ? void 0 :
4044
- _a.translateX), index.h("div", { key: '5d138212f0fefcaea7dc839f6d5f3e9c68c19681' }, "TranslateY: ", (_b = this.store.state) === null || _b === void 0 ? void 0 :
4045
- _b.translateY), index.h("div", { key: '8342eabd22ba71b58fe8346a182904cf5f4ccbb9' }, "ViewportWidth: ", (_c = this.store.state) === null || _c === void 0 ? void 0 :
4046
- _c.viewportWidth), index.h("div", { key: '325546fc07c2cfec7808e661d82f21db06d53aea' }, "ViewportHeight: ", (_d = this.store.state) === null || _d === void 0 ? void 0 :
4047
- _d.viewportHeight), index.h("div", { key: '2b1826604f561c58ad573d5545a0913498345b1f' }, "ObjectsInViewport. ", this.store.objects.length), index.h("div", { key: '749b56a6bfd63c838c89c55595bedd6749ee89ad' }, "Scale: ", (_e = this.store.state) === null || _e === void 0 ? void 0 :
4048
- _e.scale), index.h("div", { key: '0ee63c810198cb583c4e419f14503f5fb8d71d32' }, "ActiveTool: ", (_g = (_f = this.store.state) === null || _f === void 0 ? void 0 : _f.activeTool) === null || _g === void 0 ? void 0 :
4049
- _g.name), index.h("div", { key: '5facf47db6f093db24b12fa4b4453d20af1b1f57' }, "HasViewportChanged: ", ((_h = this.store.state) === null || _h === void 0 ? void 0 : _h.hasViewportChanged) ? 'true' : 'false'), index.h("div", { key: '948069683ac1568257dab4dbd5d1b3e9926ac501' }, "IsEnabled: ", ((_j = this.store.state) === null || _j === void 0 ? void 0 : _j.isEnabled) ? 'true' : 'false'), index.h("div", { key: 'a3e5bf4522b9d515bc7d346dbc9803af12eb60f5' }, "IsScaling: ", ((_k = this.store.state) === null || _k === void 0 ? void 0 : _k.isScaling) ? 'true' : 'false'), index.h("div", { key: 'ce8fc21cd938e7a58fef489b086b5111b1612353' }, "IsPanning: ", ((_l = this.store.state) === null || _l === void 0 ? void 0 : _l.isPanning) ? 'true' : 'false'), index.h("div", { key: '5725282e17bbe0766ebe010377070df81c1542d2' }, "IsFocused: ", this.store.state.isFocused ? 'true' : 'false'), index.h("div", { key: '8805bbfac86078d2a0541d60a53a3c6a9585a1db' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), index.h("div", { key: '1801d4d8297e36f4c14022c411ce5a1889042398' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), index.h("div", { key: 'd269982265e35a511eeb892969b3e47eb21b023f' }, "IsResizeHandleSelected: ", this.store.state.isResizeHandleSelected ? 'true' : 'false'), index.h("div", { key: '1362e4c3d93a8452705e5fb1a1ba6a0ffdb3c557' }, "IsRotationHandleSelected: ", this.store.state.isRotationHandleSelected ? 'true' : 'false'), index.h("div", { key: '2181e07738e56e10c57c4d6a06acdd667a14da83' }, "IsDrawing: ", this.store.state.isDrawing ? 'true' : 'false'), index.h("div", { key: '57b96821b4fb1cbc97ec7083fc523c0bdba7539b' }, "IsWriting: ", this.store.state.isWriting ? 'true' : 'false'), index.h("div", { key: 'c7302e6ce4635e04aa92a24878dd3cbce8724228' }, "CursorX: ", (_m = this.store.state) === null || _m === void 0 ? void 0 :
4050
- _m.cursorX), index.h("div", { key: '93b01e5d147ca445e6645749043bb7fb46852f39' }, "CursorY: ", (_o = this.store.state) === null || _o === void 0 ? void 0 :
4051
- _o.cursorY)), index.h("div", { key: '7b535830bbd75ca61e09d6984120e17168911d7d', class: "origin", style: {
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: 'cce82d436a044879bfbb900a836978c392f232ae', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
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: '1c0366598a805faffc965824c30c05fe1f1e0f74', 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: '624855529efbe7a5de784e3e1ce2b82282fac63a', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, style: {
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: 'd09a4701c43b8acec4e9daa09b69f545eebe95b7', store: this.store })));
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
  };