kritzel-stencil 0.0.113 → 0.0.115

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 (124) 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 +120 -725
  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 +4 -4
  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 +214 -1
  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/index.js +10 -1
  25. package/dist/collection/index.js.map +1 -1
  26. package/dist/components/index.js +2 -1
  27. package/dist/components/index.js.map +1 -1
  28. package/dist/components/kritzel-brush-style.js +1 -1
  29. package/dist/components/kritzel-color-palette.js +1 -1
  30. package/dist/components/kritzel-color.js +1 -1
  31. package/dist/components/kritzel-context-menu.js +1 -1
  32. package/dist/components/kritzel-control-brush-config.js +1 -1
  33. package/dist/components/kritzel-control-text-config.js +1 -1
  34. package/dist/components/kritzel-controls.js +1 -1
  35. package/dist/components/kritzel-cursor-trail.js +1 -1
  36. package/dist/components/kritzel-dropdown.js +1 -1
  37. package/dist/components/kritzel-editor.js +49 -21
  38. package/dist/components/kritzel-editor.js.map +1 -1
  39. package/dist/components/kritzel-engine.js +1 -1
  40. package/dist/components/kritzel-font-family.js +1 -1
  41. package/dist/components/kritzel-font-size.js +1 -1
  42. package/dist/components/kritzel-font.js +1 -1
  43. package/dist/components/kritzel-icon.js +1 -1
  44. package/dist/components/kritzel-stroke-size.js +1 -1
  45. package/dist/components/kritzel-tooltip.js +1 -1
  46. package/dist/components/kritzel-utility-panel.js +1 -1
  47. package/dist/components/{p-CmckGlXt.js → p-B57pFHwJ.js} +3 -3
  48. package/dist/components/{p-CmckGlXt.js.map → p-B57pFHwJ.js.map} +1 -1
  49. package/dist/components/{p-Ddfewfv9.js → p-B94Na1ee.js} +4 -4
  50. package/dist/components/{p-Ddfewfv9.js.map → p-B94Na1ee.js.map} +1 -1
  51. package/dist/components/{p-Ck2d5Wd1.js → p-BH1Tkwyh.js} +5 -5
  52. package/dist/components/{p-Ck2d5Wd1.js.map → p-BH1Tkwyh.js.map} +1 -1
  53. package/dist/components/{p-DqZOaMbq.js → p-BIlVkMTU.js} +378 -378
  54. package/dist/components/p-BIlVkMTU.js.map +1 -0
  55. package/dist/components/{p-BXJ8s30N.js → p-BtjtAfGW.js} +10 -10
  56. package/dist/components/{p-BXJ8s30N.js.map → p-BtjtAfGW.js.map} +1 -1
  57. package/dist/components/{p-DInF8Iby.js → p-C9FTWNZY.js} +3 -3
  58. package/dist/components/{p-DInF8Iby.js.map → p-C9FTWNZY.js.map} +1 -1
  59. package/dist/components/{p-B7P9QBiE.js → p-C9ZagG9K.js} +4 -4
  60. package/dist/components/{p-B7P9QBiE.js.map → p-C9ZagG9K.js.map} +1 -1
  61. package/dist/components/{p-BmAloSfd.js → p-CRiUM-tD.js} +4 -4
  62. package/dist/components/{p-BmAloSfd.js.map → p-CRiUM-tD.js.map} +1 -1
  63. package/dist/components/{p-BvPTbq7F.js → p-CSSrNLad.js} +3 -3
  64. package/dist/components/{p-BvPTbq7F.js.map → p-CSSrNLad.js.map} +1 -1
  65. package/dist/components/{p-DFhbw-Fr.js → p-CaQ7Iei7.js} +3 -3
  66. package/dist/components/{p-DFhbw-Fr.js.map → p-CaQ7Iei7.js.map} +1 -1
  67. package/dist/components/{p-CPjl7Inl.js → p-D04aTZsR.js} +4 -4
  68. package/dist/components/{p-CPjl7Inl.js.map → p-D04aTZsR.js.map} +1 -1
  69. package/dist/components/{p-maiDeBe9.js → p-DLV-5gE_.js} +9 -9
  70. package/dist/components/{p-maiDeBe9.js.map → p-DLV-5gE_.js.map} +1 -1
  71. package/dist/components/{p-DC8SDK2U.js → p-DoQOtXjT.js} +111 -107
  72. package/dist/components/p-DoQOtXjT.js.map +1 -0
  73. package/dist/components/{p-DieKGjdj.js → p-aZgXbW1r.js} +47 -35
  74. package/dist/components/{p-DieKGjdj.js.map → p-aZgXbW1r.js.map} +1 -1
  75. package/dist/components/{p-DfMdBA8L.js → p-fmNiA3Yr.js} +4 -4
  76. package/dist/components/{p-DfMdBA8L.js.map → p-fmNiA3Yr.js.map} +1 -1
  77. package/dist/components/{p-c6tIpE_t.js → p-h3bqYufZ.js} +3 -3
  78. package/dist/components/{p-c6tIpE_t.js.map → p-h3bqYufZ.js.map} +1 -1
  79. package/dist/components/{p-CZkSABuJ.js → p-ksTCzgsY.js} +3 -3
  80. package/dist/components/{p-CZkSABuJ.js.map → p-ksTCzgsY.js.map} +1 -1
  81. package/dist/components/{p-CFwf2KYj.js → p-mz1ayKXG.js} +17 -17
  82. package/dist/components/{p-CFwf2KYj.js.map → p-mz1ayKXG.js.map} +1 -1
  83. package/dist/components/{p-DHT5gK0E.js → p-yBnfPxIa.js} +4 -4
  84. package/dist/components/{p-DHT5gK0E.js.map → p-yBnfPxIa.js.map} +1 -1
  85. package/dist/esm/app-globals-DQuL1Twl.js +6 -0
  86. package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
  87. package/dist/esm/{index-BOJOOWaP.js → index-CGHvfMWF.js} +112 -109
  88. package/dist/esm/index-CGHvfMWF.js.map +1 -0
  89. package/dist/esm/index-rckCSz7Y.js +641 -0
  90. package/dist/esm/index-rckCSz7Y.js.map +1 -0
  91. package/dist/esm/index.js +1 -1
  92. package/dist/esm/kritzel-brush-style_18.entry.js +62 -667
  93. package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -1
  94. package/dist/esm/loader.js +4 -3
  95. package/dist/esm/loader.js.map +1 -1
  96. package/dist/esm/stencil.js +5 -4
  97. package/dist/esm/stencil.js.map +1 -1
  98. package/dist/stencil/index.esm.js +1 -1
  99. package/dist/stencil/loader.esm.js.map +1 -1
  100. package/dist/stencil/p-9394d74e.entry.js +2 -0
  101. package/dist/stencil/p-9394d74e.entry.js.map +1 -0
  102. package/dist/stencil/p-CGHvfMWF.js +3 -0
  103. package/dist/stencil/p-CGHvfMWF.js.map +1 -0
  104. package/dist/stencil/p-DQuL1Twl.js +2 -0
  105. package/dist/stencil/p-DQuL1Twl.js.map +1 -0
  106. package/dist/stencil/p-rckCSz7Y.js +2 -0
  107. package/dist/stencil/p-rckCSz7Y.js.map +1 -0
  108. package/dist/stencil/stencil.esm.js +1 -1
  109. package/dist/stencil/stencil.esm.js.map +1 -1
  110. package/dist/types/classes/store.class.d.ts +4 -4
  111. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +10 -2
  112. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +4 -2
  113. package/dist/types/components.d.ts +13 -4
  114. package/dist/types/index.d.ts +1 -0
  115. package/dist/types/stencil-public-runtime.d.ts +12 -5
  116. package/package.json +1 -1
  117. package/dist/cjs/index-D62tBCuq.js.map +0 -1
  118. package/dist/components/p-DC8SDK2U.js.map +0 -1
  119. package/dist/components/p-DqZOaMbq.js.map +0 -1
  120. package/dist/esm/index-BOJOOWaP.js.map +0 -1
  121. package/dist/stencil/p-BOJOOWaP.js +0 -3
  122. package/dist/stencil/p-BOJOOWaP.js.map +0 -1
  123. package/dist/stencil/p-dc26eb80.entry.js +0 -2
  124. package/dist/stencil/p-dc26eb80.entry.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;
@@ -1233,7 +597,7 @@ const KritzelControls = class {
1233
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: {
1234
598
  borderRadius: '50%',
1235
599
  border: 'none',
1236
- } }))), 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" }))));
1237
601
  }
1238
602
  }))));
1239
603
  }
@@ -1268,7 +632,7 @@ const KritzelCursorTrail = class {
1268
632
  }
1269
633
  handleMouseDown(ev) {
1270
634
  if (ev.pointerType === 'mouse') {
1271
- if (ev.button === KritzelMouseButton.Left) {
635
+ if (ev.button === index$1.KritzelMouseButton.Left) {
1272
636
  this.isLeftButtonDown = true;
1273
637
  this.cursorTrailPoints = [];
1274
638
  }
@@ -1295,7 +659,7 @@ const KritzelCursorTrail = class {
1295
659
  }
1296
660
  handlePointerUp(ev) {
1297
661
  if (ev.pointerType === 'mouse') {
1298
- if (ev.button === KritzelMouseButton.Left) {
662
+ if (ev.button === index$1.KritzelMouseButton.Left) {
1299
663
  this.isLeftButtonDown = false;
1300
664
  this.cursorTrailPoints = [];
1301
665
  }
@@ -1464,7 +828,7 @@ KritzelIconRegistry.registerIcons({
1464
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>'
1465
829
  });
1466
830
 
1467
- class BatchCommand extends KritzelBaseCommand {
831
+ class BatchCommand extends index$1.KritzelBaseCommand {
1468
832
  constructor(store, initiator, commands) {
1469
833
  super(store, initiator);
1470
834
  this.commands = commands;
@@ -1477,7 +841,7 @@ class BatchCommand extends KritzelBaseCommand {
1477
841
  }
1478
842
  }
1479
843
 
1480
- class RemoveObjectCommand extends KritzelBaseCommand {
844
+ class RemoveObjectCommand extends index$1.KritzelBaseCommand {
1481
845
  constructor(store, initiator, object) {
1482
846
  super(store, initiator);
1483
847
  this.object = object;
@@ -1490,14 +854,14 @@ class RemoveObjectCommand extends KritzelBaseCommand {
1490
854
  }
1491
855
  }
1492
856
 
1493
- class KritzelEraserTool extends KritzelBaseTool {
857
+ class KritzelEraserTool extends index$1.KritzelBaseTool {
1494
858
  constructor(store) {
1495
859
  super(store);
1496
860
  this.touchStartTimeout = null;
1497
861
  }
1498
862
  handlePointerDown(event) {
1499
863
  if (event.pointerType === 'mouse') {
1500
- if (KritzelEventHelper.isLeftClick(event)) {
864
+ if (index$1.KritzelEventHelper.isLeftClick(event)) {
1501
865
  this._store.state.isErasing = true;
1502
866
  }
1503
867
  }
@@ -1569,7 +933,7 @@ class KritzelEraserTool extends KritzelBaseTool {
1569
933
  }
1570
934
  }
1571
935
 
1572
- class KritzelImage extends KritzelBaseObject {
936
+ class KritzelImage extends index$1.KritzelBaseObject {
1573
937
  constructor() {
1574
938
  super(...arguments);
1575
939
  this.__class__ = 'KritzelImage';
@@ -1600,7 +964,7 @@ class KritzelImage extends KritzelBaseObject {
1600
964
  }
1601
965
  }
1602
966
 
1603
- class RemoveSelectionGroupCommand extends KritzelBaseCommand {
967
+ class RemoveSelectionGroupCommand extends index$1.KritzelBaseCommand {
1604
968
  constructor(store, initiator) {
1605
969
  super(store, initiator);
1606
970
  this.previousSelectionGroup = this._store.state.selectionGroup;
@@ -1617,7 +981,7 @@ class RemoveSelectionGroupCommand extends KritzelBaseCommand {
1617
981
  }
1618
982
  }
1619
983
 
1620
- class MoveSelectionGroupCommand extends KritzelBaseCommand {
984
+ class MoveSelectionGroupCommand extends index$1.KritzelBaseCommand {
1621
985
  constructor(store, initiator, startX, startY, endX, endY, skipFirstExecution = false) {
1622
986
  super(store, initiator);
1623
987
  this.startX = startX;
@@ -1654,7 +1018,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
1654
1018
  handlePointerDown(event) {
1655
1019
  var _a, _b;
1656
1020
  if (event.pointerType === 'mouse') {
1657
- if (KritzelEventHelper.isLeftClick(event)) {
1021
+ if (index$1.KritzelEventHelper.isLeftClick(event)) {
1658
1022
  if (((_a = this._store.state.selectionGroup) === null || _a === void 0 ? void 0 : _a.selected) && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
1659
1023
  const clientX = event.clientX - this._store.offsetX;
1660
1024
  const clientY = event.clientY - this._store.offsetY;
@@ -1736,7 +1100,7 @@ var KritzelHandleType;
1736
1100
  KritzelHandleType["BottomRight"] = "bottom-right";
1737
1101
  })(KritzelHandleType || (KritzelHandleType = {}));
1738
1102
 
1739
- class ResizeSelectionGroupCommand extends KritzelBaseCommand {
1103
+ class ResizeSelectionGroupCommand extends index$1.KritzelBaseCommand {
1740
1104
  constructor(store, initiator, previousSize, newSize) {
1741
1105
  super(store, initiator);
1742
1106
  this.previousSize = previousSize;
@@ -1763,7 +1127,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
1763
1127
  }
1764
1128
  handlePointerDown(event) {
1765
1129
  if (event.pointerType === 'mouse') {
1766
- if (KritzelEventHelper.isLeftClick(event)) {
1130
+ if (index$1.KritzelEventHelper.isLeftClick(event)) {
1767
1131
  if (this._store.state.selectionGroup && this._store.state.isResizeHandleSelected) {
1768
1132
  const clientX = event.clientX - this._store.offsetX;
1769
1133
  const clientY = event.clientY - this._store.offsetY;
@@ -1899,7 +1263,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
1899
1263
  }
1900
1264
  }
1901
1265
 
1902
- class RotateSelectionGroupCommand extends KritzelBaseCommand {
1266
+ class RotateSelectionGroupCommand extends index$1.KritzelBaseCommand {
1903
1267
  constructor(store, initiator, rotation) {
1904
1268
  super(store, initiator);
1905
1269
  this.rotation = rotation;
@@ -1930,7 +1294,7 @@ class KritzelRotationHandler extends KritzelBaseHandler {
1930
1294
  }
1931
1295
  handlePointerDown(event) {
1932
1296
  if (event.pointerType === 'mouse') {
1933
- if (KritzelEventHelper.isLeftClick(event)) {
1297
+ if (index$1.KritzelEventHelper.isLeftClick(event)) {
1934
1298
  if (this._store.state.selectionGroup && this._store.state.isRotationHandleSelected) {
1935
1299
  const clientX = event.clientX - this._store.offsetX;
1936
1300
  const clientY = event.clientY - this._store.offsetY;
@@ -2074,7 +1438,7 @@ class KritzelGeometryHelper {
2074
1438
  }
2075
1439
  }
2076
1440
 
2077
- class KrtizelSelectionBox extends KritzelBaseObject {
1441
+ class KrtizelSelectionBox extends index$1.KritzelBaseObject {
2078
1442
  constructor() {
2079
1443
  super(...arguments);
2080
1444
  this.__class__ = 'KrtizelSelectionBox';
@@ -2095,7 +1459,7 @@ class KrtizelSelectionBox extends KritzelBaseObject {
2095
1459
  }
2096
1460
  }
2097
1461
 
2098
- class AddSelectionGroupCommand extends KritzelBaseCommand {
1462
+ class AddSelectionGroupCommand extends index$1.KritzelBaseCommand {
2099
1463
  constructor(store, initiator, selectionGroup) {
2100
1464
  super(store, initiator);
2101
1465
  this.selectionGroup = selectionGroup;
@@ -2126,7 +1490,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
2126
1490
  }
2127
1491
  handlePointerDown(event) {
2128
1492
  if (event.pointerType === 'mouse') {
2129
- if (KritzelEventHelper.isLeftClick(event) && !this._store.state.selectionGroup) {
1493
+ if (index$1.KritzelEventHelper.isLeftClick(event) && !this._store.state.selectionGroup) {
2130
1494
  this.startMouseSelection(event);
2131
1495
  }
2132
1496
  }
@@ -2160,7 +1524,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
2160
1524
  }
2161
1525
  handlePointerUp(event) {
2162
1526
  if (event.pointerType === 'mouse') {
2163
- if (KritzelEventHelper.isLeftClick(event) && this._store.state.isSelecting) {
1527
+ if (index$1.KritzelEventHelper.isLeftClick(event) && this._store.state.isSelecting) {
2164
1528
  if (this.isSelectionClick) {
2165
1529
  this.updateMouseSelection(event);
2166
1530
  this.addSelectedObjectAtIndexToSelectionGroup(0);
@@ -2309,7 +1673,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
2309
1673
  }
2310
1674
  }
2311
1675
 
2312
- class KritzelSelectionTool extends KritzelBaseTool {
1676
+ class KritzelSelectionTool extends index$1.KritzelBaseTool {
2313
1677
  constructor(store) {
2314
1678
  super(store);
2315
1679
  this.selectionHandler = new KritzelSelectionHandler(this._store);
@@ -2322,7 +1686,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
2322
1686
  event.preventDefault();
2323
1687
  }
2324
1688
  if (event.pointerType === 'mouse') {
2325
- if (KritzelEventHelper.isLeftClick(event)) {
1689
+ if (index$1.KritzelEventHelper.isLeftClick(event)) {
2326
1690
  this._store.state.isResizeHandleSelected = this.isHandleSelected(event);
2327
1691
  this._store.state.isRotationHandleSelected = this.isRotationHandleSelected(event);
2328
1692
  this._store.state.resizeHandleType = this.getHandleType(event);
@@ -2480,7 +1844,7 @@ class KritzelReviver {
2480
1844
  revivedObj = KritzelPath.create(this._store).revive(obj);
2481
1845
  break;
2482
1846
  case 'KritzelText':
2483
- 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);
2484
1848
  break;
2485
1849
  case 'KritzelImage':
2486
1850
  revivedObj = KritzelImage.create(this._store).revive(obj);
@@ -2501,7 +1865,7 @@ class KritzelReviver {
2501
1865
  revivedObj = new KritzelSelectionTool(this._store);
2502
1866
  break;
2503
1867
  case 'KritzelTextTool':
2504
- revivedObj = new KritzelTextTool(this._store);
1868
+ revivedObj = new index$1.KritzelTextTool(this._store);
2505
1869
  break;
2506
1870
  default:
2507
1871
  revivedObj = obj;
@@ -2520,7 +1884,7 @@ class KritzelReviver {
2520
1884
  }
2521
1885
  }
2522
1886
 
2523
- class KritzelSelectionGroup extends KritzelBaseObject {
1887
+ class KritzelSelectionGroup extends index$1.KritzelBaseObject {
2524
1888
  constructor() {
2525
1889
  super(...arguments);
2526
1890
  this.__class__ = 'KritzelSelectionGroup';
@@ -2546,7 +1910,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
2546
1910
  else {
2547
1911
  this.objects.splice(index, 1);
2548
1912
  }
2549
- this.unchangedObjects = ObjectHelper.clone(this.objects);
1913
+ this.unchangedObjects = index$1.ObjectHelper.clone(this.objects);
2550
1914
  this.refreshObjectDimensions();
2551
1915
  }
2552
1916
  deselectAllChildren() {
@@ -2600,7 +1964,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
2600
1964
  this._store.state.objectsOctree.update(child);
2601
1965
  });
2602
1966
  this.refreshObjectDimensions();
2603
- this.unchangedObjects = ObjectHelper.clone(this.objects);
1967
+ this.unchangedObjects = index$1.ObjectHelper.clone(this.objects);
2604
1968
  }
2605
1969
  rotate(value) {
2606
1970
  this.rotation = value;
@@ -2630,7 +1994,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
2630
1994
  selectionGroup.addOrRemove(copiedObject);
2631
1995
  currentZIndex++;
2632
1996
  });
2633
- selectionGroup.unchangedObjects = ObjectHelper.clone(selectionGroup.objects);
1997
+ selectionGroup.unchangedObjects = index$1.ObjectHelper.clone(selectionGroup.objects);
2634
1998
  if (this.objects.length === 1) {
2635
1999
  selectionGroup.rotation = this.objects[0].rotation;
2636
2000
  }
@@ -2686,7 +2050,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
2686
2050
 
2687
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";
2688
2052
 
2689
- class KritzelImageTool extends KritzelBaseTool {
2053
+ class KritzelImageTool extends index$1.KritzelBaseTool {
2690
2054
  constructor(store) {
2691
2055
  super(store);
2692
2056
  this.fileInput = null;
@@ -2773,13 +2137,13 @@ class KritzelImageTool extends KritzelBaseTool {
2773
2137
  const selectionGroup = KritzelSelectionGroup.create(this._store);
2774
2138
  selectionGroup.addOrRemove(image);
2775
2139
  selectionGroup.selected = true;
2776
- const addImageCommand = new AddObjectCommand(this._store, this, image);
2140
+ const addImageCommand = new index$1.AddObjectCommand(this._store, this, image);
2777
2141
  const addSelectionGroupCommand = new AddSelectionGroupCommand(this._store, this, selectionGroup);
2778
2142
  this._store.history.executeCommand(new BatchCommand(this._store, this, [addImageCommand, addSelectionGroupCommand]));
2779
- this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
2143
+ this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
2780
2144
  }
2781
2145
  handleCancel() {
2782
- this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
2146
+ this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
2783
2147
  }
2784
2148
  }
2785
2149
 
@@ -2897,7 +2261,7 @@ const DEFAULT_KRITZEL_CONTROLS = [
2897
2261
  {
2898
2262
  name: 'text',
2899
2263
  type: 'tool',
2900
- tool: KritzelTextTool,
2264
+ tool: index$1.KritzelTextTool,
2901
2265
  icon: 'type',
2902
2266
  config: DEFAULT_TEXT_CONFIG,
2903
2267
  },
@@ -2926,6 +2290,27 @@ const KritzelEditor = class {
2926
2290
  this.customSvgIcons = {};
2927
2291
  this.hideControls = false;
2928
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
+ }
2929
2314
  handleTouchStart(event) {
2930
2315
  if (event.cancelable) {
2931
2316
  event.preventDefault();
@@ -2947,7 +2332,7 @@ const KritzelEditor = class {
2947
2332
  }
2948
2333
  }
2949
2334
  render() {
2950
- return (index.h(index.Host, { key: '009fe43f85f368b2f60b31947596e1423f60e28d' }, index.h("kritzel-engine", { key: '76fa90e8c283723d546d02ab4eacc111047d6b9d', ref: el => (this.engineRef = el) }), index.h("kritzel-controls", { key: 'a7381534ab01236d12135f7a9f1a486c9b4be05a', 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' } })));
2951
2336
  }
2952
2337
  get host() { return index.getElement(this); }
2953
2338
  };
@@ -2977,7 +2362,7 @@ class KritzelViewport {
2977
2362
  if (event.pointerType === 'mouse') {
2978
2363
  const adjustedClientX = event.clientX - this._store.offsetX;
2979
2364
  const adjustedClientY = event.clientY - this._store.offsetY;
2980
- if (event.button === KritzelMouseButton.Right) {
2365
+ if (event.button === index$1.KritzelMouseButton.Right) {
2981
2366
  this._store.state.isPanning = true;
2982
2367
  this._store.state.startX = adjustedClientX;
2983
2368
  this._store.state.startY = adjustedClientY;
@@ -3060,7 +2445,7 @@ class KritzelViewport {
3060
2445
  }
3061
2446
  handleWheel(event) {
3062
2447
  event.preventDefault();
3063
- if (event.ctrlKey === true && KritzelEventHelper.isMainMouseWheel(event)) {
2448
+ if (event.ctrlKey === true && index$1.KritzelEventHelper.isMainMouseWheel(event)) {
3064
2449
  this.handleZoom(event);
3065
2450
  }
3066
2451
  if (!event.ctrlKey) {
@@ -3091,7 +2476,7 @@ class KritzelViewport {
3091
2476
  }
3092
2477
  }
3093
2478
 
3094
- class UpdateViewportCommand extends KritzelBaseCommand {
2479
+ class UpdateViewportCommand extends index$1.KritzelBaseCommand {
3095
2480
  constructor(store, initiator, previousViewport) {
3096
2481
  super(store, initiator);
3097
2482
  this.previousViewport = previousViewport;
@@ -3336,7 +2721,7 @@ class KritzelOctree {
3336
2721
  }
3337
2722
  }
3338
2723
 
3339
- class UpdateObjectCommand extends KritzelBaseCommand {
2724
+ class UpdateObjectCommand extends index$1.KritzelBaseCommand {
3340
2725
  constructor(store, initiator, object, updatedProperties) {
3341
2726
  super(store, initiator);
3342
2727
  this.object = object;
@@ -3530,17 +2915,18 @@ class KritzelStore {
3530
2915
  if (this.state.selectionGroup !== null) {
3531
2916
  commands.push(new RemoveSelectionGroupCommand(this, this.state.selectionGroup));
3532
2917
  }
3533
- 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));
3534
2919
  const addCopiedObjectsAsSelectionGroupCommand = new AddSelectionGroupCommand(this, this, this.state.copiedObjects);
3535
2920
  commands.push(...addCopiedObjectsCommands, addCopiedObjectsAsSelectionGroupCommand);
3536
2921
  this.history.executeCommand(new BatchCommand(this, this, commands));
3537
2922
  this.state.isSelecting = false;
3538
2923
  this.state.copiedObjects = this.state.selectionGroup.copy();
3539
- this.setState('activeTool', KritzelToolRegistry.getTool('selection'));
2924
+ this.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
3540
2925
  }
3541
- moveUp() {
2926
+ bringForward(object) {
3542
2927
  const max = this.allObjects.length + 1;
3543
- const increaseZIndexCommands = this.state.selectionGroup.objects.map(obj => {
2928
+ const objects = object ? [object] : this.state.selectionGroup.objects;
2929
+ const increaseZIndexCommands = objects.map(obj => {
3544
2930
  if (obj.zIndex === max) {
3545
2931
  return;
3546
2932
  }
@@ -3548,9 +2934,10 @@ class KritzelStore {
3548
2934
  });
3549
2935
  this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));
3550
2936
  }
3551
- moveDown() {
2937
+ sendBackward(object) {
3552
2938
  const min = 0;
3553
- const decreaseZIndexCommands = this.state.selectionGroup.objects.map(obj => {
2939
+ const objects = object ? [object] : this.state.selectionGroup.objects;
2940
+ const decreaseZIndexCommands = objects.map(obj => {
3554
2941
  if (obj.zIndex === min) {
3555
2942
  return;
3556
2943
  }
@@ -3558,16 +2945,18 @@ class KritzelStore {
3558
2945
  });
3559
2946
  this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));
3560
2947
  }
3561
- moveToTop() {
2948
+ bringToFront(object) {
3562
2949
  const max = this.allObjects.length + 1;
3563
- const increaseZIndexCommands = this.state.selectionGroup.objects.map(obj => {
2950
+ const objects = object ? [object] : this.state.selectionGroup.objects;
2951
+ const increaseZIndexCommands = objects.map(obj => {
3564
2952
  return new UpdateObjectCommand(this, this, obj, { zIndex: max });
3565
2953
  });
3566
2954
  this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));
3567
2955
  }
3568
- moveToBottom() {
2956
+ sendToBack(object) {
3569
2957
  const min = -1;
3570
- const decreaseZIndexCommands = this.state.selectionGroup.objects.map(obj => {
2958
+ const objects = object ? [object] : this.state.selectionGroup.objects;
2959
+ const decreaseZIndexCommands = objects.map(obj => {
3571
2960
  return new UpdateObjectCommand(this, this, obj, { zIndex: min });
3572
2961
  });
3573
2962
  this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));
@@ -3611,7 +3000,7 @@ class KritzelStore {
3611
3000
  selectionGroup.rotation = selectionGroup.objects[0].rotation;
3612
3001
  }
3613
3002
  this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));
3614
- this.setState('activeTool', KritzelToolRegistry.getTool('selection'));
3003
+ this.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
3615
3004
  }
3616
3005
  }
3617
3006
  clearSelection() {
@@ -3685,23 +3074,23 @@ class KritzelKeyHandler extends KritzelBaseHandler {
3685
3074
  this._store.history.redo();
3686
3075
  }
3687
3076
  if (event.key === 's' && event.ctrlKey) {
3688
- this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
3077
+ this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
3689
3078
  this._store.deselectAllObjects();
3690
3079
  }
3691
3080
  if (event.key === 'b' && event.ctrlKey) {
3692
- this._store.setState('activeTool', KritzelToolRegistry.getTool('brush'));
3081
+ this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('brush'));
3693
3082
  this._store.deselectAllObjects();
3694
3083
  }
3695
3084
  if (event.key === 'e' && event.ctrlKey) {
3696
- this._store.setState('activeTool', KritzelToolRegistry.getTool('eraser'));
3085
+ this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('eraser'));
3697
3086
  this._store.deselectAllObjects();
3698
3087
  }
3699
3088
  if (event.key === 'i' && event.ctrlKey) {
3700
- this._store.setState('activeTool', KritzelToolRegistry.getTool('image'));
3089
+ this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('image'));
3701
3090
  this._store.deselectAllObjects();
3702
3091
  }
3703
3092
  if (event.key === 'x' && event.ctrlKey) {
3704
- this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));
3093
+ this._store.setState('activeTool', index$1.KritzelToolRegistry.getTool('text'));
3705
3094
  this._store.deselectAllObjects();
3706
3095
  }
3707
3096
  if (event.key === 'c' && event.ctrlKey && this._store.state.selectionGroup) {
@@ -3712,16 +3101,16 @@ class KritzelKeyHandler extends KritzelBaseHandler {
3712
3101
  this._store.paste();
3713
3102
  }
3714
3103
  if (event.key === '+' && event.ctrlKey && this._store.state.selectionGroup) {
3715
- this._store.moveUp();
3104
+ this._store.bringForward();
3716
3105
  }
3717
3106
  if (event.key === '-' && event.ctrlKey && this._store.state.selectionGroup) {
3718
- this._store.moveDown();
3107
+ this._store.sendBackward();
3719
3108
  }
3720
3109
  if (event.key === '*' && event.shiftKey && this._store.state.selectionGroup) {
3721
- this._store.moveToTop();
3110
+ this._store.bringToFront();
3722
3111
  }
3723
3112
  if (event.key === '_' && event.shiftKey && this._store.state.selectionGroup) {
3724
- this._store.moveToBottom();
3113
+ this._store.sendToBack();
3725
3114
  }
3726
3115
  if (event.key === 'a' && event.ctrlKey && this._store.state.activeText) {
3727
3116
  this._store.state.activeText.selectAll();
@@ -3835,7 +3224,7 @@ const KritzelEngine = class {
3835
3224
  }
3836
3225
  this.store.state.skipContextMenu = false;
3837
3226
  this.activeToolChange.emit(activeTool);
3838
- KritzelKeyboardHelper.forceHideKeyboard();
3227
+ index$1.KritzelKeyboardHelper.forceHideKeyboard();
3839
3228
  });
3840
3229
  this.store.onStateChange('isFocused', (isFocused) => {
3841
3230
  if (!isFocused) {
@@ -3857,14 +3246,14 @@ const KritzelEngine = class {
3857
3246
  }
3858
3247
  handlePointerDown(ev) {
3859
3248
  var _a, _b;
3860
- if (KritzelEventHelper.isPointerEventOnContextMenu(ev) === false && this.store.state.isContextMenuVisible) {
3249
+ if (index$1.KritzelEventHelper.isPointerEventOnContextMenu(ev) === false && this.store.state.isContextMenuVisible) {
3861
3250
  this.hideContextMenu();
3862
3251
  return;
3863
3252
  }
3864
3253
  if (this.store.state.isEnabled === false) {
3865
3254
  return;
3866
3255
  }
3867
- KritzelEventHelper.onLongTouchPress(ev, (event) => {
3256
+ index$1.KritzelEventHelper.onLongTouchPress(ev, (event) => {
3868
3257
  if (!(this.store.state.activeTool instanceof KritzelSelectionTool)) {
3869
3258
  return;
3870
3259
  }
@@ -3936,11 +3325,11 @@ const KritzelEngine = class {
3936
3325
  this.hideContextMenu();
3937
3326
  }
3938
3327
  async registerTool(toolName, toolClass, toolConfig) {
3939
- if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof KritzelBaseTool)) {
3328
+ if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof index$1.KritzelBaseTool)) {
3940
3329
  console.error(`Failed to register tool "${toolName}": Tool class must be a constructor function`);
3941
3330
  return null;
3942
3331
  }
3943
- const registeredTool = KritzelToolRegistry.registerTool(toolName, toolClass, this.store);
3332
+ const registeredTool = index$1.KritzelToolRegistry.registerTool(toolName, toolClass, this.store);
3944
3333
  if (toolConfig) {
3945
3334
  Object.entries(toolConfig).forEach(([key, value]) => {
3946
3335
  registeredTool[key] = value;
@@ -3976,11 +3365,17 @@ const KritzelEngine = class {
3976
3365
  async paste(x, y) {
3977
3366
  this.store.paste(x, y);
3978
3367
  }
3979
- async moveToTop() {
3980
- 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);
3981
3376
  }
3982
- async moveToBottom() {
3983
- this.store.moveToBottom();
3377
+ async moveToBottom(object) {
3378
+ this.store.sendToBack(object);
3984
3379
  }
3985
3380
  async undo() {
3986
3381
  this.store.history.undo();
@@ -4003,7 +3398,7 @@ const KritzelEngine = class {
4003
3398
  object.id = object.generateId();
4004
3399
  object._store = this.store;
4005
3400
  object.zIndex = this.store.currentZIndex;
4006
- const command = new AddObjectCommand(this.store, this, object);
3401
+ const command = new index$1.AddObjectCommand(this.store, this, object);
4007
3402
  this.store.history.executeCommand(command);
4008
3403
  return object;
4009
3404
  }
@@ -4022,14 +3417,14 @@ const KritzelEngine = class {
4022
3417
  async selectObjects(objects) {
4023
3418
  var _a;
4024
3419
  (_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
4025
- this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
3420
+ this.store.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
4026
3421
  this.store.deselectAllObjects();
4027
3422
  this.store.selectObjects(objects);
4028
3423
  }
4029
3424
  async selectAllObjectsInViewport() {
4030
3425
  var _a;
4031
3426
  (_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
4032
- this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
3427
+ this.store.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
4033
3428
  this.store.deselectAllObjects();
4034
3429
  this.store.selectAllObjectsInViewport();
4035
3430
  }
@@ -4042,15 +3437,15 @@ const KritzelEngine = class {
4042
3437
  const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
4043
3438
  const baseHandleSize = parseFloat(baseHandleSizePx);
4044
3439
  const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
4045
- 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 :
4046
- _a.translateX), index.h("div", { key: '5d138212f0fefcaea7dc839f6d5f3e9c68c19681' }, "TranslateY: ", (_b = this.store.state) === null || _b === void 0 ? void 0 :
4047
- _b.translateY), index.h("div", { key: '8342eabd22ba71b58fe8346a182904cf5f4ccbb9' }, "ViewportWidth: ", (_c = this.store.state) === null || _c === void 0 ? void 0 :
4048
- _c.viewportWidth), index.h("div", { key: '325546fc07c2cfec7808e661d82f21db06d53aea' }, "ViewportHeight: ", (_d = this.store.state) === null || _d === void 0 ? void 0 :
4049
- _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 :
4050
- _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 :
4051
- _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 :
4052
- _m.cursorX), index.h("div", { key: '93b01e5d147ca445e6645749043bb7fb46852f39' }, "CursorY: ", (_o = this.store.state) === null || _o === void 0 ? void 0 :
4053
- _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: {
4054
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})`,
4055
3450
  } }, (_t = this.store.objects) === null || _t === void 0 ? void 0 :
4056
3451
  _t.map(object => {
@@ -4084,7 +3479,7 @@ const KritzelEngine = class {
4084
3479
  height: '100%',
4085
3480
  userSelect: 'none',
4086
3481
  pointerEvents: 'none',
4087
- }, 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: {
4088
3483
  width: '100%',
4089
3484
  height: '100%',
4090
3485
  color: object.fontColor,
@@ -4147,7 +3542,7 @@ const KritzelEngine = class {
4147
3542
  fill: 'transparent',
4148
3543
  cursor: 'grab',
4149
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)))))));
4150
- }), 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: {
4151
3546
  height: (_u = this.store.state.currentPath) === null || _u === void 0 ? void 0 : _u.height.toString(),
4152
3547
  width: (_v = this.store.state.currentPath) === null || _v === void 0 ? void 0 : _v.width.toString(),
4153
3548
  left: '0',
@@ -4157,12 +3552,12 @@ const KritzelEngine = class {
4157
3552
  transform: (_x = this.store.state.currentPath) === null || _x === void 0 ? void 0 : _x.transformationMatrix,
4158
3553
  transformOrigin: 'top left',
4159
3554
  overflow: 'visible',
4160
- }, 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: {
4161
3556
  position: 'fixed',
4162
3557
  left: `${this.store.state.contextMenuX}px`,
4163
3558
  top: `${this.store.state.contextMenuY}px`,
4164
3559
  zIndex: '10000',
4165
- }, 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 })));
4166
3561
  }
4167
3562
  get host() { return index.getElement(this); }
4168
3563
  };