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.
- package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
- package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
- package/dist/cjs/index-C2M4eyxF.js +652 -0
- package/dist/cjs/index-C2M4eyxF.js.map +1 -0
- package/dist/cjs/{index-D62tBCuq.js → index-CXT94beA.js} +111 -109
- package/dist/cjs/index-CXT94beA.js.map +1 -0
- package/dist/cjs/index.cjs.js +5 -0
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +120 -725
- package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +4 -3
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/stencil.cjs.js +5 -4
- package/dist/cjs/stencil.cjs.js.map +1 -1
- package/dist/collection/classes/handlers/key.handler.js +4 -4
- package/dist/collection/classes/handlers/key.handler.js.map +1 -1
- package/dist/collection/classes/store.class.js +12 -8
- package/dist/collection/classes/store.class.js.map +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +214 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +96 -20
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
- package/dist/collection/index.js +10 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/components/index.js +2 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/kritzel-brush-style.js +1 -1
- package/dist/components/kritzel-color-palette.js +1 -1
- package/dist/components/kritzel-color.js +1 -1
- package/dist/components/kritzel-context-menu.js +1 -1
- package/dist/components/kritzel-control-brush-config.js +1 -1
- package/dist/components/kritzel-control-text-config.js +1 -1
- package/dist/components/kritzel-controls.js +1 -1
- package/dist/components/kritzel-cursor-trail.js +1 -1
- package/dist/components/kritzel-dropdown.js +1 -1
- package/dist/components/kritzel-editor.js +49 -21
- package/dist/components/kritzel-editor.js.map +1 -1
- package/dist/components/kritzel-engine.js +1 -1
- package/dist/components/kritzel-font-family.js +1 -1
- package/dist/components/kritzel-font-size.js +1 -1
- package/dist/components/kritzel-font.js +1 -1
- package/dist/components/kritzel-icon.js +1 -1
- package/dist/components/kritzel-stroke-size.js +1 -1
- package/dist/components/kritzel-tooltip.js +1 -1
- package/dist/components/kritzel-utility-panel.js +1 -1
- package/dist/components/{p-CmckGlXt.js → p-B57pFHwJ.js} +3 -3
- package/dist/components/{p-CmckGlXt.js.map → p-B57pFHwJ.js.map} +1 -1
- package/dist/components/{p-Ddfewfv9.js → p-B94Na1ee.js} +4 -4
- package/dist/components/{p-Ddfewfv9.js.map → p-B94Na1ee.js.map} +1 -1
- package/dist/components/{p-Ck2d5Wd1.js → p-BH1Tkwyh.js} +5 -5
- package/dist/components/{p-Ck2d5Wd1.js.map → p-BH1Tkwyh.js.map} +1 -1
- package/dist/components/{p-DqZOaMbq.js → p-BIlVkMTU.js} +378 -378
- package/dist/components/p-BIlVkMTU.js.map +1 -0
- package/dist/components/{p-BXJ8s30N.js → p-BtjtAfGW.js} +10 -10
- package/dist/components/{p-BXJ8s30N.js.map → p-BtjtAfGW.js.map} +1 -1
- package/dist/components/{p-DInF8Iby.js → p-C9FTWNZY.js} +3 -3
- package/dist/components/{p-DInF8Iby.js.map → p-C9FTWNZY.js.map} +1 -1
- package/dist/components/{p-B7P9QBiE.js → p-C9ZagG9K.js} +4 -4
- package/dist/components/{p-B7P9QBiE.js.map → p-C9ZagG9K.js.map} +1 -1
- package/dist/components/{p-BmAloSfd.js → p-CRiUM-tD.js} +4 -4
- package/dist/components/{p-BmAloSfd.js.map → p-CRiUM-tD.js.map} +1 -1
- package/dist/components/{p-BvPTbq7F.js → p-CSSrNLad.js} +3 -3
- package/dist/components/{p-BvPTbq7F.js.map → p-CSSrNLad.js.map} +1 -1
- package/dist/components/{p-DFhbw-Fr.js → p-CaQ7Iei7.js} +3 -3
- package/dist/components/{p-DFhbw-Fr.js.map → p-CaQ7Iei7.js.map} +1 -1
- package/dist/components/{p-CPjl7Inl.js → p-D04aTZsR.js} +4 -4
- package/dist/components/{p-CPjl7Inl.js.map → p-D04aTZsR.js.map} +1 -1
- package/dist/components/{p-maiDeBe9.js → p-DLV-5gE_.js} +9 -9
- package/dist/components/{p-maiDeBe9.js.map → p-DLV-5gE_.js.map} +1 -1
- package/dist/components/{p-DC8SDK2U.js → p-DoQOtXjT.js} +111 -107
- package/dist/components/p-DoQOtXjT.js.map +1 -0
- package/dist/components/{p-DieKGjdj.js → p-aZgXbW1r.js} +47 -35
- package/dist/components/{p-DieKGjdj.js.map → p-aZgXbW1r.js.map} +1 -1
- package/dist/components/{p-DfMdBA8L.js → p-fmNiA3Yr.js} +4 -4
- package/dist/components/{p-DfMdBA8L.js.map → p-fmNiA3Yr.js.map} +1 -1
- package/dist/components/{p-c6tIpE_t.js → p-h3bqYufZ.js} +3 -3
- package/dist/components/{p-c6tIpE_t.js.map → p-h3bqYufZ.js.map} +1 -1
- package/dist/components/{p-CZkSABuJ.js → p-ksTCzgsY.js} +3 -3
- package/dist/components/{p-CZkSABuJ.js.map → p-ksTCzgsY.js.map} +1 -1
- package/dist/components/{p-CFwf2KYj.js → p-mz1ayKXG.js} +17 -17
- package/dist/components/{p-CFwf2KYj.js.map → p-mz1ayKXG.js.map} +1 -1
- package/dist/components/{p-DHT5gK0E.js → p-yBnfPxIa.js} +4 -4
- package/dist/components/{p-DHT5gK0E.js.map → p-yBnfPxIa.js.map} +1 -1
- package/dist/esm/app-globals-DQuL1Twl.js +6 -0
- package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
- package/dist/esm/{index-BOJOOWaP.js → index-CGHvfMWF.js} +112 -109
- package/dist/esm/index-CGHvfMWF.js.map +1 -0
- package/dist/esm/index-rckCSz7Y.js +641 -0
- package/dist/esm/index-rckCSz7Y.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/kritzel-brush-style_18.entry.js +62 -667
- package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -1
- package/dist/esm/loader.js +4 -3
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/stencil.js +5 -4
- package/dist/esm/stencil.js.map +1 -1
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/loader.esm.js.map +1 -1
- package/dist/stencil/p-9394d74e.entry.js +2 -0
- package/dist/stencil/p-9394d74e.entry.js.map +1 -0
- package/dist/stencil/p-CGHvfMWF.js +3 -0
- package/dist/stencil/p-CGHvfMWF.js.map +1 -0
- package/dist/stencil/p-DQuL1Twl.js +2 -0
- package/dist/stencil/p-DQuL1Twl.js.map +1 -0
- package/dist/stencil/p-rckCSz7Y.js +2 -0
- package/dist/stencil/p-rckCSz7Y.js.map +1 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/stencil/stencil.esm.js.map +1 -1
- package/dist/types/classes/store.class.d.ts +4 -4
- package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +10 -2
- package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +4 -2
- package/dist/types/components.d.ts +13 -4
- package/dist/types/index.d.ts +1 -0
- package/dist/types/stencil-public-runtime.d.ts +12 -5
- package/package.json +1 -1
- package/dist/cjs/index-D62tBCuq.js.map +0 -1
- package/dist/components/p-DC8SDK2U.js.map +0 -1
- package/dist/components/p-DqZOaMbq.js.map +0 -1
- package/dist/esm/index-BOJOOWaP.js.map +0 -1
- package/dist/stencil/p-BOJOOWaP.js +0 -3
- package/dist/stencil/p-BOJOOWaP.js.map +0 -1
- package/dist/stencil/p-dc26eb80.entry.js +0 -2
- 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-
|
|
3
|
+
var index = require('./index-CXT94beA.js');
|
|
4
|
+
var index$1 = require('./index-C2M4eyxF.js');
|
|
4
5
|
|
|
5
6
|
const kritzelBrushStyleCss = ":host{display:flex;align-items:flex-start;gap:8px;padding:8px;box-sizing:border-box;width:100%}.brush-style-button{display:flex;justify-content:center;align-items:center;width:42px;height:32px;padding:0;border:none;outline:none;background:none;cursor:default;border-radius:0;color:var(--control-text-color);font-weight:bold;-webkit-tap-highlight-color:transparent}.font-style-button:not(:last-child){border-right:1px solid #333333}.font-style-button:hover{background-color:var(--control-hover-bg)}.font-style-button:active{background-color:var(--control-active-bg)}.font-style-button.selected,.font-style-button.selected:hover,.font-style-button.selected:active{background-color:var(--control-selected-bg);color:var(--control-selected-color)}";
|
|
6
7
|
|
|
@@ -225,98 +226,6 @@ const KritzelControlTextConfig = class {
|
|
|
225
226
|
};
|
|
226
227
|
KritzelControlTextConfig.style = kritzelControlTextConfigCss;
|
|
227
228
|
|
|
228
|
-
var KritzelMouseButton;
|
|
229
|
-
(function (KritzelMouseButton) {
|
|
230
|
-
KritzelMouseButton[KritzelMouseButton["Left"] = 0] = "Left";
|
|
231
|
-
KritzelMouseButton[KritzelMouseButton["Middle"] = 1] = "Middle";
|
|
232
|
-
KritzelMouseButton[KritzelMouseButton["Right"] = 2] = "Right";
|
|
233
|
-
})(KritzelMouseButton || (KritzelMouseButton = {}));
|
|
234
|
-
|
|
235
|
-
class KritzelEventHelper {
|
|
236
|
-
static isRightClick(ev) {
|
|
237
|
-
return ev.button === KritzelMouseButton.Right;
|
|
238
|
-
}
|
|
239
|
-
static isLeftClick(ev) {
|
|
240
|
-
return ev.button === KritzelMouseButton.Left;
|
|
241
|
-
}
|
|
242
|
-
static isMainMouseWheel(event) {
|
|
243
|
-
return Math.abs(event.deltaY) > 0 && Math.abs(event.deltaX) === 0 && Number.isInteger(event.deltaY);
|
|
244
|
-
}
|
|
245
|
-
static isPointerEventOnContextMenu(event) {
|
|
246
|
-
const path = event.composedPath();
|
|
247
|
-
const contextMenu = path.find(element => element.classList && element.classList.contains('context-menu'));
|
|
248
|
-
return !!contextMenu;
|
|
249
|
-
}
|
|
250
|
-
static onLongTouchPress(event, onSuccess, onCancel) {
|
|
251
|
-
if (event.pointerType !== 'touch') {
|
|
252
|
-
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
253
|
-
return () => { };
|
|
254
|
-
}
|
|
255
|
-
const longPressTimeout = 400;
|
|
256
|
-
const moveThreshold = 10;
|
|
257
|
-
const startX = event.clientX;
|
|
258
|
-
const startY = event.clientY;
|
|
259
|
-
const target = event.target;
|
|
260
|
-
const timer = setTimeout(() => {
|
|
261
|
-
removeListeners();
|
|
262
|
-
onSuccess(event);
|
|
263
|
-
}, longPressTimeout);
|
|
264
|
-
const cancel = () => {
|
|
265
|
-
clearTimeout(timer);
|
|
266
|
-
removeListeners();
|
|
267
|
-
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
268
|
-
};
|
|
269
|
-
const onPointerMove = (e) => {
|
|
270
|
-
if (Math.abs(e.clientX - startX) > moveThreshold || Math.abs(e.clientY - startY) > moveThreshold) {
|
|
271
|
-
cancel();
|
|
272
|
-
}
|
|
273
|
-
};
|
|
274
|
-
const onPointerUp = () => {
|
|
275
|
-
cancel();
|
|
276
|
-
};
|
|
277
|
-
const onPointerCancel = () => {
|
|
278
|
-
cancel();
|
|
279
|
-
};
|
|
280
|
-
const removeListeners = () => {
|
|
281
|
-
target.removeEventListener('pointermove', onPointerMove);
|
|
282
|
-
target.removeEventListener('pointerup', onPointerUp);
|
|
283
|
-
target.removeEventListener('pointercancel', onPointerCancel);
|
|
284
|
-
};
|
|
285
|
-
target.addEventListener('pointermove', onPointerMove, { passive: true });
|
|
286
|
-
target.addEventListener('pointerup', onPointerUp, { once: true });
|
|
287
|
-
target.addEventListener('pointercancel', onPointerCancel, { once: true });
|
|
288
|
-
return cancel;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
class KritzelBaseCommand {
|
|
293
|
-
constructor(store, initiator) {
|
|
294
|
-
var _a, _b;
|
|
295
|
-
this._store = store;
|
|
296
|
-
this.initiator = (_b = (_a = initiator === null || initiator === void 0 ? void 0 : initiator.constructor) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'Unknown';
|
|
297
|
-
this.isUndoable = true;
|
|
298
|
-
}
|
|
299
|
-
execute() {
|
|
300
|
-
throw new Error('Method not implemented.');
|
|
301
|
-
}
|
|
302
|
-
undo() {
|
|
303
|
-
throw new Error('Method not implemented.');
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
class AddObjectCommand extends KritzelBaseCommand {
|
|
308
|
-
constructor(store, initiator, object) {
|
|
309
|
-
super(store, initiator);
|
|
310
|
-
this.object = object;
|
|
311
|
-
}
|
|
312
|
-
execute() {
|
|
313
|
-
this._store.state.objectsOctree.insert(this.object);
|
|
314
|
-
}
|
|
315
|
-
undo() {
|
|
316
|
-
this._store.state.objectsOctree.remove(object => object.id === this.object.id);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
|
|
320
229
|
var cjs = {};
|
|
321
230
|
|
|
322
231
|
var hasRequiredCjs;
|
|
@@ -338,226 +247,7 @@ class KritzelMathHelper {
|
|
|
338
247
|
}
|
|
339
248
|
}
|
|
340
249
|
|
|
341
|
-
|
|
342
|
-
var t = {};
|
|
343
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
344
|
-
t[p] = s[p];
|
|
345
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
346
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
347
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
348
|
-
t[p[i]] = s[p[i]];
|
|
349
|
-
}
|
|
350
|
-
return t;
|
|
351
|
-
};
|
|
352
|
-
class ObjectHelper {
|
|
353
|
-
static generateUUID() {
|
|
354
|
-
return Math.random().toString(36).substr(2, 9);
|
|
355
|
-
}
|
|
356
|
-
static clone(objOrObjs) {
|
|
357
|
-
const cloneObject = (obj) => {
|
|
358
|
-
const remainingProps = __rest(obj, ["_store", "_elementRef", "totalWidth", "totalHeight"]);
|
|
359
|
-
return structuredClone(remainingProps);
|
|
360
|
-
};
|
|
361
|
-
if (Array.isArray(objOrObjs)) {
|
|
362
|
-
return objOrObjs.map(cloneObject);
|
|
363
|
-
}
|
|
364
|
-
return cloneObject(objOrObjs);
|
|
365
|
-
}
|
|
366
|
-
static isEmpty(obj) {
|
|
367
|
-
if (obj === null || obj === undefined) {
|
|
368
|
-
return true;
|
|
369
|
-
}
|
|
370
|
-
return (Object === null || Object === void 0 ? void 0 : Object.keys(obj).length) === 0 && (obj === null || obj === void 0 ? void 0 : obj.constructor) === Object;
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
class KritzelBaseObject {
|
|
375
|
-
get totalWidth() {
|
|
376
|
-
return this.width + this.padding * 2;
|
|
377
|
-
}
|
|
378
|
-
get totalHeight() {
|
|
379
|
-
return this.height + this.padding * 2;
|
|
380
|
-
}
|
|
381
|
-
set elementRef(element) {
|
|
382
|
-
this._elementRef = element;
|
|
383
|
-
}
|
|
384
|
-
get elementRef() {
|
|
385
|
-
return this._elementRef;
|
|
386
|
-
}
|
|
387
|
-
get boundingBox() {
|
|
388
|
-
return {
|
|
389
|
-
x: this.translateX,
|
|
390
|
-
y: this.translateY,
|
|
391
|
-
z: this.scale,
|
|
392
|
-
width: this.totalWidth / this.scale,
|
|
393
|
-
height: this.totalHeight / this.scale,
|
|
394
|
-
depth: 0,
|
|
395
|
-
};
|
|
396
|
-
}
|
|
397
|
-
get rotatedBoundingBox() {
|
|
398
|
-
return {
|
|
399
|
-
x: this.minXRotated,
|
|
400
|
-
y: this.minYRotated,
|
|
401
|
-
z: this.scale,
|
|
402
|
-
width: this.maxXRotated - this.minXRotated,
|
|
403
|
-
height: this.maxYRotated - this.minYRotated,
|
|
404
|
-
depth: 0,
|
|
405
|
-
};
|
|
406
|
-
}
|
|
407
|
-
get rotatedPolygon() {
|
|
408
|
-
const cx = (this.translateX + this.totalWidth / 2 / this.scale);
|
|
409
|
-
const cy = (this.translateY + this.totalHeight / 2 / this.scale);
|
|
410
|
-
const angle = this.rotation;
|
|
411
|
-
const adjustedWidth = this.totalWidth / this.scale;
|
|
412
|
-
const adjustedHeight = this.totalHeight / this.scale;
|
|
413
|
-
const corners = {
|
|
414
|
-
topLeft: { x: this.translateX, y: this.translateY },
|
|
415
|
-
topRight: { x: this.translateX + adjustedWidth, y: this.translateY },
|
|
416
|
-
bottomRight: { x: this.translateX + adjustedWidth, y: this.translateY + adjustedHeight },
|
|
417
|
-
bottomLeft: { x: this.translateX, y: this.translateY + adjustedHeight },
|
|
418
|
-
};
|
|
419
|
-
const rotatedCorners = Object.keys(corners).reduce((acc, key) => {
|
|
420
|
-
const corner = corners[key];
|
|
421
|
-
const rotatedX = Math.cos(angle) * (corner.x - cx) - Math.sin(angle) * (corner.y - cy) + cx;
|
|
422
|
-
const rotatedY = Math.sin(angle) * (corner.x - cx) + Math.cos(angle) * (corner.y - cy) + cy;
|
|
423
|
-
acc[key] = { x: rotatedX, y: rotatedY };
|
|
424
|
-
return acc;
|
|
425
|
-
}, {});
|
|
426
|
-
return rotatedCorners;
|
|
427
|
-
}
|
|
428
|
-
get minXRotated() {
|
|
429
|
-
const corners = [
|
|
430
|
-
this.rotatedPolygon.topLeft.x,
|
|
431
|
-
this.rotatedPolygon.topRight.x,
|
|
432
|
-
this.rotatedPolygon.bottomRight.x,
|
|
433
|
-
this.rotatedPolygon.bottomLeft.x,
|
|
434
|
-
];
|
|
435
|
-
return Math.min(...corners);
|
|
436
|
-
}
|
|
437
|
-
get minYRotated() {
|
|
438
|
-
const corners = [
|
|
439
|
-
this.rotatedPolygon.topLeft.y,
|
|
440
|
-
this.rotatedPolygon.topRight.y,
|
|
441
|
-
this.rotatedPolygon.bottomRight.y,
|
|
442
|
-
this.rotatedPolygon.bottomLeft.y,
|
|
443
|
-
];
|
|
444
|
-
return Math.min(...corners);
|
|
445
|
-
}
|
|
446
|
-
get maxXRotated() {
|
|
447
|
-
const corners = [
|
|
448
|
-
this.rotatedPolygon.topLeft.x,
|
|
449
|
-
this.rotatedPolygon.topRight.x,
|
|
450
|
-
this.rotatedPolygon.bottomRight.x,
|
|
451
|
-
this.rotatedPolygon.bottomLeft.x,
|
|
452
|
-
];
|
|
453
|
-
return Math.max(...corners);
|
|
454
|
-
}
|
|
455
|
-
get maxYRotated() {
|
|
456
|
-
const corners = [
|
|
457
|
-
this.rotatedPolygon.topLeft.y,
|
|
458
|
-
this.rotatedPolygon.topRight.y,
|
|
459
|
-
this.rotatedPolygon.bottomRight.y,
|
|
460
|
-
this.rotatedPolygon.bottomLeft.y,
|
|
461
|
-
];
|
|
462
|
-
return Math.max(...corners);
|
|
463
|
-
}
|
|
464
|
-
get transformationMatrix() {
|
|
465
|
-
const scale = 1 / this.scale;
|
|
466
|
-
const translateX = this.translateX;
|
|
467
|
-
const translateY = this.translateY;
|
|
468
|
-
return `matrix(${scale}, 0, 0, ${scale}, ${translateX}, ${translateY})`;
|
|
469
|
-
}
|
|
470
|
-
get rotationDegrees() {
|
|
471
|
-
return this.rotation * (180 / Math.PI);
|
|
472
|
-
}
|
|
473
|
-
get centerX() {
|
|
474
|
-
return this.translateX + this.totalWidth / 2;
|
|
475
|
-
}
|
|
476
|
-
get centerY() {
|
|
477
|
-
return this.translateY + this.totalHeight / 2;
|
|
478
|
-
}
|
|
479
|
-
constructor() {
|
|
480
|
-
this.__class__ = 'KritzelBaseObject';
|
|
481
|
-
this.visible = true;
|
|
482
|
-
this.borderWidth = 0;
|
|
483
|
-
this.opacity = 1;
|
|
484
|
-
this.padding = 0;
|
|
485
|
-
this.selected = false;
|
|
486
|
-
this.resizing = false;
|
|
487
|
-
this.rotation = 0;
|
|
488
|
-
this.markedForRemoval = false;
|
|
489
|
-
this.isMounted = false;
|
|
490
|
-
this.zIndex = 0;
|
|
491
|
-
this.debugInfoVisible = false;
|
|
492
|
-
this.id = this.generateId();
|
|
493
|
-
}
|
|
494
|
-
static create(store) {
|
|
495
|
-
const object = new KritzelBaseObject();
|
|
496
|
-
object._store = store;
|
|
497
|
-
object.zIndex = store.currentZIndex;
|
|
498
|
-
return object;
|
|
499
|
-
}
|
|
500
|
-
mount(element) {
|
|
501
|
-
if (this.isMounted) {
|
|
502
|
-
return;
|
|
503
|
-
}
|
|
504
|
-
this.elementRef = element;
|
|
505
|
-
this.isMounted = true;
|
|
506
|
-
}
|
|
507
|
-
generateId() {
|
|
508
|
-
return ObjectHelper.generateUUID();
|
|
509
|
-
}
|
|
510
|
-
isInViewport() {
|
|
511
|
-
const viewportBounds = {
|
|
512
|
-
x: -this._store.state.translateX / this._store.state.scale,
|
|
513
|
-
y: -this._store.state.translateY / this._store.state.scale,
|
|
514
|
-
width: this._store.state.viewportWidth / this._store.state.scale,
|
|
515
|
-
height: this._store.state.viewportHeight / this._store.state.scale};
|
|
516
|
-
return this.boundingBox.x < viewportBounds.x + viewportBounds.width &&
|
|
517
|
-
this.boundingBox.x + this.boundingBox.width > viewportBounds.x &&
|
|
518
|
-
this.boundingBox.y < viewportBounds.y + viewportBounds.height &&
|
|
519
|
-
this.boundingBox.y + this.boundingBox.height > viewportBounds.y;
|
|
520
|
-
}
|
|
521
|
-
centerInViewport() {
|
|
522
|
-
const scale = this._store.state.scale;
|
|
523
|
-
this.translateX = (this._store.state.viewportWidth / 2 - this.totalWidth / 2 - this._store.state.translateX) / scale;
|
|
524
|
-
this.translateY = (this._store.state.viewportHeight / 2 - this.totalHeight / 2 - this._store.state.translateY) / scale;
|
|
525
|
-
}
|
|
526
|
-
move(startX, startY, endX, endY) {
|
|
527
|
-
const deltaX = (startX - endX) / this._store.state.scale;
|
|
528
|
-
const deltaY = (startY - endY) / this._store.state.scale;
|
|
529
|
-
this.translateX += deltaX;
|
|
530
|
-
this.translateY += deltaY;
|
|
531
|
-
}
|
|
532
|
-
resize(x, y, width, height) {
|
|
533
|
-
if (width <= 1 || height <= 1) {
|
|
534
|
-
return;
|
|
535
|
-
}
|
|
536
|
-
this.width = width;
|
|
537
|
-
this.height = height;
|
|
538
|
-
this.translateX = x;
|
|
539
|
-
this.translateY = y;
|
|
540
|
-
}
|
|
541
|
-
rotate(value) {
|
|
542
|
-
this.rotation = value;
|
|
543
|
-
}
|
|
544
|
-
copy() {
|
|
545
|
-
const copiedObject = Object.create(Object.getPrototypeOf(this));
|
|
546
|
-
Object.assign(copiedObject, this);
|
|
547
|
-
copiedObject.id = this.generateId();
|
|
548
|
-
copiedObject.isMounted = false;
|
|
549
|
-
return copiedObject;
|
|
550
|
-
}
|
|
551
|
-
onSelectedClick() {
|
|
552
|
-
// This method can be overridden by subclasses to handle click events when the object is selected.
|
|
553
|
-
}
|
|
554
|
-
revive(object) {
|
|
555
|
-
Object.assign(this, object);
|
|
556
|
-
return this;
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
class KritzelPath extends KritzelBaseObject {
|
|
250
|
+
class KritzelPath extends index$1.KritzelBaseObject {
|
|
561
251
|
constructor() {
|
|
562
252
|
super(...arguments);
|
|
563
253
|
this.__class__ = 'KritzelPath';
|
|
@@ -675,37 +365,7 @@ class KritzelPath extends KritzelBaseObject {
|
|
|
675
365
|
}
|
|
676
366
|
}
|
|
677
367
|
|
|
678
|
-
class KritzelBaseTool {
|
|
679
|
-
constructor(store) {
|
|
680
|
-
this.__class__ = this.constructor.name;
|
|
681
|
-
this.name = 'base-tool';
|
|
682
|
-
this._store = store;
|
|
683
|
-
}
|
|
684
|
-
onActivate() {
|
|
685
|
-
// default implementation
|
|
686
|
-
}
|
|
687
|
-
onDeactivate() {
|
|
688
|
-
// default implementation
|
|
689
|
-
}
|
|
690
|
-
handlePointerDown(_event) {
|
|
691
|
-
// default implementation
|
|
692
|
-
}
|
|
693
|
-
handlePointerMove(_event) {
|
|
694
|
-
// default implementation
|
|
695
|
-
}
|
|
696
|
-
handlePointerUp(_event) {
|
|
697
|
-
// default implementation
|
|
698
|
-
}
|
|
699
|
-
handleWheel(_event) {
|
|
700
|
-
// default implementation
|
|
701
|
-
}
|
|
702
|
-
revive(object) {
|
|
703
|
-
Object.assign(this, object);
|
|
704
|
-
return this;
|
|
705
|
-
}
|
|
706
|
-
}
|
|
707
|
-
|
|
708
|
-
class KritzelBrushTool extends KritzelBaseTool {
|
|
368
|
+
class KritzelBrushTool extends index$1.KritzelBaseTool {
|
|
709
369
|
constructor(store) {
|
|
710
370
|
super(store);
|
|
711
371
|
this.type = 'pen';
|
|
@@ -721,7 +381,7 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
721
381
|
event.preventDefault();
|
|
722
382
|
}
|
|
723
383
|
if (event.pointerType === 'mouse') {
|
|
724
|
-
if (KritzelEventHelper.isLeftClick(event)) {
|
|
384
|
+
if (index$1.KritzelEventHelper.isLeftClick(event)) {
|
|
725
385
|
this._store.state.isDrawing = true;
|
|
726
386
|
const x = event.clientX - this._store.offsetX;
|
|
727
387
|
const y = event.clientY - this._store.offsetY;
|
|
@@ -798,7 +458,7 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
798
458
|
this._store.state.isDrawing = false;
|
|
799
459
|
if (this._store.state.currentPath) {
|
|
800
460
|
this._store.state.currentPath.zIndex = this._store.currentZIndex;
|
|
801
|
-
this._store.history.executeCommand(new AddObjectCommand(this._store, this, this._store.state.currentPath));
|
|
461
|
+
this._store.history.executeCommand(new index$1.AddObjectCommand(this._store, this, this._store.state.currentPath));
|
|
802
462
|
}
|
|
803
463
|
this._store.state.currentPath = undefined;
|
|
804
464
|
}
|
|
@@ -808,7 +468,7 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
808
468
|
this._store.state.isDrawing = false;
|
|
809
469
|
if (this._store.state.currentPath) {
|
|
810
470
|
this._store.state.currentPath.zIndex = this._store.currentZIndex;
|
|
811
|
-
this._store.history.executeCommand(new AddObjectCommand(this._store, this, this._store.state.currentPath));
|
|
471
|
+
this._store.history.executeCommand(new index$1.AddObjectCommand(this._store, this, this._store.state.currentPath));
|
|
812
472
|
}
|
|
813
473
|
this._store.state.currentPath = undefined;
|
|
814
474
|
this._store.rerender();
|
|
@@ -817,302 +477,6 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
817
477
|
}
|
|
818
478
|
}
|
|
819
479
|
|
|
820
|
-
class KritzelToolRegistry {
|
|
821
|
-
static registerTool(toolName, constructor, store) {
|
|
822
|
-
const toolInstance = new constructor(store);
|
|
823
|
-
toolInstance.name = toolName;
|
|
824
|
-
this.registry[toolName] = toolInstance;
|
|
825
|
-
return toolInstance;
|
|
826
|
-
}
|
|
827
|
-
static getTool(toolName) {
|
|
828
|
-
const toolInstance = this.registry[toolName];
|
|
829
|
-
if (!toolInstance) {
|
|
830
|
-
console.warn(`Unknown tool: ${toolName}`);
|
|
831
|
-
return null;
|
|
832
|
-
}
|
|
833
|
-
return toolInstance;
|
|
834
|
-
}
|
|
835
|
-
}
|
|
836
|
-
KritzelToolRegistry.registry = {};
|
|
837
|
-
|
|
838
|
-
class KritzelText extends KritzelBaseObject {
|
|
839
|
-
get isReadonly() {
|
|
840
|
-
return !(this._store.state.activeTool instanceof KritzelTextTool);
|
|
841
|
-
}
|
|
842
|
-
constructor(config) {
|
|
843
|
-
super();
|
|
844
|
-
this.__class__ = 'KritzelText';
|
|
845
|
-
this.value = '';
|
|
846
|
-
this.fontFamily = 'Arial';
|
|
847
|
-
this.fontSize = 8;
|
|
848
|
-
this.fontColor = '#000000';
|
|
849
|
-
this.initialWidth = 3;
|
|
850
|
-
this.isNew = true;
|
|
851
|
-
this.debugInfoVisible = true;
|
|
852
|
-
this.rows = 1;
|
|
853
|
-
if (config) {
|
|
854
|
-
this.value = config.value || ' ';
|
|
855
|
-
this.translateX = config.translateX || 0;
|
|
856
|
-
this.translateY = config.translateY || 0;
|
|
857
|
-
this.fontSize = config.fontSize || 8;
|
|
858
|
-
this.fontFamily = config.fontFamily || 'Arial';
|
|
859
|
-
this.fontColor = config.fontColor || '#000000';
|
|
860
|
-
this.height = config.height || this.fontSize * 1.2;
|
|
861
|
-
this.width = config.width || 0;
|
|
862
|
-
this.scale = config.scale || 1;
|
|
863
|
-
}
|
|
864
|
-
}
|
|
865
|
-
static create(store, fontSize, fontFamily) {
|
|
866
|
-
const object = new KritzelText();
|
|
867
|
-
object._store = store;
|
|
868
|
-
object.fontSize = fontSize;
|
|
869
|
-
object.fontFamily = fontFamily;
|
|
870
|
-
object.translateX = 0;
|
|
871
|
-
object.translateY = 0;
|
|
872
|
-
object.width = object.initialWidth / (object._store.state.scale < 0 ? object._store.state.scale : 1);
|
|
873
|
-
object.height = (object.fontSize * 1.2) / (object._store.state.scale < 0 ? object._store.state.scale : 1);
|
|
874
|
-
object.padding = 5;
|
|
875
|
-
object.backgroundColor = 'transparent';
|
|
876
|
-
object.scale = object._store.state.scale;
|
|
877
|
-
object.value = ' ';
|
|
878
|
-
object.zIndex = store.currentZIndex;
|
|
879
|
-
return object;
|
|
880
|
-
}
|
|
881
|
-
mount(element) {
|
|
882
|
-
if ((this.isMounted && this.elementRef === element) || this.isInViewport() === false) {
|
|
883
|
-
return;
|
|
884
|
-
}
|
|
885
|
-
this.elementRef = element;
|
|
886
|
-
this.isMounted = true;
|
|
887
|
-
}
|
|
888
|
-
resize(x, y, width, height) {
|
|
889
|
-
if (width <= 1 || height <= 1) {
|
|
890
|
-
return;
|
|
891
|
-
}
|
|
892
|
-
const scaleFactor = height / this.height;
|
|
893
|
-
this.fontSize = this.fontSize * scaleFactor;
|
|
894
|
-
this.width = this.width * scaleFactor;
|
|
895
|
-
this.height = height;
|
|
896
|
-
this.translateX = x;
|
|
897
|
-
this.translateY = y;
|
|
898
|
-
}
|
|
899
|
-
handleKeyDown(event) {
|
|
900
|
-
if (this.isReadonly) {
|
|
901
|
-
event.preventDefault();
|
|
902
|
-
event.stopPropagation();
|
|
903
|
-
}
|
|
904
|
-
}
|
|
905
|
-
handleInput(event) {
|
|
906
|
-
const target = event.target;
|
|
907
|
-
if (target.value === '') {
|
|
908
|
-
this.value = ' ';
|
|
909
|
-
target.value = ' ';
|
|
910
|
-
target.selectionStart = target.selectionEnd = target.value.length;
|
|
911
|
-
}
|
|
912
|
-
else {
|
|
913
|
-
this.value = target.value.trim();
|
|
914
|
-
}
|
|
915
|
-
this.adjustTextareaSize();
|
|
916
|
-
}
|
|
917
|
-
adjustTextareaSize() {
|
|
918
|
-
if (this.elementRef) {
|
|
919
|
-
const span = document.createElement('span');
|
|
920
|
-
span.style.position = 'absolute';
|
|
921
|
-
span.style.whiteSpace = 'pre-wrap';
|
|
922
|
-
span.style.visibility = 'hidden';
|
|
923
|
-
span.style.fontSize = window.getComputedStyle(this.elementRef).fontSize;
|
|
924
|
-
span.style.fontFamily = window.getComputedStyle(this.elementRef).fontFamily;
|
|
925
|
-
span.innerHTML = this.elementRef.value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\n/g, '<br>') + '<br>';
|
|
926
|
-
document.body.appendChild(span);
|
|
927
|
-
const textWidth = span.offsetWidth;
|
|
928
|
-
const textHeight = span.offsetHeight;
|
|
929
|
-
document.body.removeChild(span);
|
|
930
|
-
this.width = textWidth;
|
|
931
|
-
this.height = textHeight;
|
|
932
|
-
this._store.rerender();
|
|
933
|
-
}
|
|
934
|
-
}
|
|
935
|
-
focus() {
|
|
936
|
-
if (this.elementRef) {
|
|
937
|
-
this.elementRef.focus();
|
|
938
|
-
}
|
|
939
|
-
}
|
|
940
|
-
selectAll() {
|
|
941
|
-
if (this.elementRef) {
|
|
942
|
-
this.elementRef.select();
|
|
943
|
-
}
|
|
944
|
-
}
|
|
945
|
-
insertFromClipboard() {
|
|
946
|
-
if (this.elementRef) {
|
|
947
|
-
this.elementRef.focus();
|
|
948
|
-
try {
|
|
949
|
-
navigator.clipboard.readText().then(text => {
|
|
950
|
-
const start = this.elementRef.selectionStart;
|
|
951
|
-
const end = this.elementRef.selectionEnd;
|
|
952
|
-
const value = this.elementRef.value;
|
|
953
|
-
this.elementRef.value = value.substring(0, start) + text + value.substring(end);
|
|
954
|
-
this.elementRef.selectionStart = this.elementRef.selectionEnd = start + text.length;
|
|
955
|
-
this.value = this.elementRef.value;
|
|
956
|
-
this.adjustTextareaSize();
|
|
957
|
-
});
|
|
958
|
-
}
|
|
959
|
-
catch (err) {
|
|
960
|
-
console.error('Failed to read clipboard contents:', err);
|
|
961
|
-
}
|
|
962
|
-
}
|
|
963
|
-
}
|
|
964
|
-
onSelectedClick() {
|
|
965
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));
|
|
966
|
-
this._store.state.selectionGroup = null;
|
|
967
|
-
this._store.state.selectionBox = null;
|
|
968
|
-
this._store.state.activeText = this;
|
|
969
|
-
setTimeout(() => {
|
|
970
|
-
this.focus();
|
|
971
|
-
}, 300);
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
class KritzelKeyboardHelper {
|
|
976
|
-
static forceHideKeyboard() {
|
|
977
|
-
if (document.activeElement instanceof HTMLElement) {
|
|
978
|
-
document.activeElement.blur();
|
|
979
|
-
}
|
|
980
|
-
}
|
|
981
|
-
static enableInteractiveWidget() {
|
|
982
|
-
const meta = document.querySelector('meta[name="viewport"][content*="interactive-widget=resizes-content"]');
|
|
983
|
-
if (meta) {
|
|
984
|
-
let currentContent = meta.getAttribute('content');
|
|
985
|
-
if (!currentContent.includes('interactive-widget=resizes-content')) {
|
|
986
|
-
currentContent += ', interactive-widget=resizes-content';
|
|
987
|
-
}
|
|
988
|
-
meta.setAttribute('content', currentContent);
|
|
989
|
-
}
|
|
990
|
-
}
|
|
991
|
-
static disableInteractiveWidget() {
|
|
992
|
-
const meta = document.querySelector('meta[name="viewport"][content*="interactive-widget=resizes-content"]');
|
|
993
|
-
if (meta) {
|
|
994
|
-
let currentContent = meta.getAttribute('content');
|
|
995
|
-
let newContent = currentContent.replace(/\s*interactive-widget=resizes-content\s*[,;]?/g, '');
|
|
996
|
-
newContent = newContent
|
|
997
|
-
.replace(/,(\s*,)+/g, ',')
|
|
998
|
-
.replace(/^,/, '')
|
|
999
|
-
.replace(/,$/, '')
|
|
1000
|
-
.trim();
|
|
1001
|
-
meta.setAttribute('content', newContent);
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1004
|
-
}
|
|
1005
|
-
|
|
1006
|
-
class KritzelTextTool extends KritzelBaseTool {
|
|
1007
|
-
constructor(store) {
|
|
1008
|
-
super(store);
|
|
1009
|
-
this.fontFamily = 'Arial';
|
|
1010
|
-
this.fontSize = 16;
|
|
1011
|
-
this.fontColor = '#000000';
|
|
1012
|
-
this.palette = [
|
|
1013
|
-
'#000000',
|
|
1014
|
-
'#FFFFFF',
|
|
1015
|
-
'#FF0000',
|
|
1016
|
-
'#00FF00',
|
|
1017
|
-
'#0000FF',
|
|
1018
|
-
'#FFFF00',
|
|
1019
|
-
'#FF00FF',
|
|
1020
|
-
'#00FFFF',
|
|
1021
|
-
'#808080',
|
|
1022
|
-
'#C0C0C0',
|
|
1023
|
-
'#800000',
|
|
1024
|
-
'#008000',
|
|
1025
|
-
'#000080',
|
|
1026
|
-
'#808000',
|
|
1027
|
-
'#800080',
|
|
1028
|
-
];
|
|
1029
|
-
}
|
|
1030
|
-
handlePointerDown(event) {
|
|
1031
|
-
if (event.cancelable) {
|
|
1032
|
-
event.preventDefault();
|
|
1033
|
-
}
|
|
1034
|
-
if (event.pointerType === 'mouse') {
|
|
1035
|
-
const path = event.composedPath().slice(1);
|
|
1036
|
-
const objectElement = path.find(element => element.classList && element.classList.contains('object'));
|
|
1037
|
-
const object = this._store.findObjectById(objectElement === null || objectElement === void 0 ? void 0 : objectElement.id);
|
|
1038
|
-
if (this._store.state.activeText === null && object && object instanceof KritzelText) {
|
|
1039
|
-
this._store.state.activeText = object;
|
|
1040
|
-
object.focus();
|
|
1041
|
-
return;
|
|
1042
|
-
}
|
|
1043
|
-
if (this._store.state.activeText !== null && object instanceof KritzelText) {
|
|
1044
|
-
object.focus();
|
|
1045
|
-
return;
|
|
1046
|
-
}
|
|
1047
|
-
if (this._store.state.activeText !== null) {
|
|
1048
|
-
this._store.resetActiveText();
|
|
1049
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
1050
|
-
return;
|
|
1051
|
-
}
|
|
1052
|
-
if (KritzelEventHelper.isLeftClick(event) === false) {
|
|
1053
|
-
return;
|
|
1054
|
-
}
|
|
1055
|
-
const clientX = event.clientX - this._store.offsetX;
|
|
1056
|
-
const clientY = event.clientY - this._store.offsetY;
|
|
1057
|
-
const text = KritzelText.create(this._store, this.fontSize, this.fontFamily);
|
|
1058
|
-
text.fontColor = this.fontColor;
|
|
1059
|
-
text.translateX = (clientX - this._store.state.translateX) / this._store.state.scale;
|
|
1060
|
-
text.translateY = (clientY - this._store.state.translateY) / this._store.state.scale;
|
|
1061
|
-
text.zIndex = this._store.currentZIndex;
|
|
1062
|
-
this._store.state.activeText = text;
|
|
1063
|
-
this._store.history.executeCommand(new AddObjectCommand(this._store, this, text));
|
|
1064
|
-
}
|
|
1065
|
-
if (event.pointerType === 'touch') {
|
|
1066
|
-
const activePointers = Array.from(this._store.state.pointers.values());
|
|
1067
|
-
const path = event.composedPath().slice(1);
|
|
1068
|
-
const objectElement = path.find(element => element.classList && element.classList.contains('object'));
|
|
1069
|
-
const object = this._store.findObjectById(objectElement === null || objectElement === void 0 ? void 0 : objectElement.id);
|
|
1070
|
-
if (this._store.state.activeText === null && object && object instanceof KritzelText) {
|
|
1071
|
-
this._store.state.activeText = object;
|
|
1072
|
-
object.focus();
|
|
1073
|
-
return;
|
|
1074
|
-
}
|
|
1075
|
-
if (this._store.state.activeText !== null && object instanceof KritzelText) {
|
|
1076
|
-
object.focus();
|
|
1077
|
-
return;
|
|
1078
|
-
}
|
|
1079
|
-
if (this._store.state.activeText !== null) {
|
|
1080
|
-
this._store.resetActiveText();
|
|
1081
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
1082
|
-
return;
|
|
1083
|
-
}
|
|
1084
|
-
if (activePointers.length > 1) {
|
|
1085
|
-
return;
|
|
1086
|
-
}
|
|
1087
|
-
KritzelKeyboardHelper.disableInteractiveWidget();
|
|
1088
|
-
const clientX = Math.round(activePointers[0].clientX - this._store.offsetX);
|
|
1089
|
-
const clientY = Math.round(activePointers[0].clientY - this._store.offsetY);
|
|
1090
|
-
const text = KritzelText.create(this._store, this.fontSize, this.fontFamily);
|
|
1091
|
-
text.fontColor = this.fontColor;
|
|
1092
|
-
text.translateX = (clientX - this._store.state.translateX) / this._store.state.scale;
|
|
1093
|
-
text.translateY = (clientY - this._store.state.translateY) / this._store.state.scale;
|
|
1094
|
-
text.zIndex = this._store.currentZIndex;
|
|
1095
|
-
this._store.state.activeText = text;
|
|
1096
|
-
this._store.history.executeCommand(new AddObjectCommand(this._store, this, text));
|
|
1097
|
-
}
|
|
1098
|
-
}
|
|
1099
|
-
handlePointerUp(event) {
|
|
1100
|
-
var _a, _b, _c, _d;
|
|
1101
|
-
if (event.cancelable) {
|
|
1102
|
-
event.preventDefault();
|
|
1103
|
-
}
|
|
1104
|
-
if (event.pointerType === 'mouse') {
|
|
1105
|
-
(_a = this._store.state.activeText) === null || _a === void 0 ? void 0 : _a.adjustTextareaSize();
|
|
1106
|
-
(_b = this._store.state.activeText) === null || _b === void 0 ? void 0 : _b.focus();
|
|
1107
|
-
}
|
|
1108
|
-
if (event.pointerType === 'touch') {
|
|
1109
|
-
(_c = this._store.state.activeText) === null || _c === void 0 ? void 0 : _c.adjustTextareaSize();
|
|
1110
|
-
(_d = this._store.state.activeText) === null || _d === void 0 ? void 0 : _d.focus();
|
|
1111
|
-
KritzelKeyboardHelper.enableInteractiveWidget();
|
|
1112
|
-
}
|
|
1113
|
-
}
|
|
1114
|
-
}
|
|
1115
|
-
|
|
1116
480
|
class KritzelDevicesHelper {
|
|
1117
481
|
static isTouchDevice() {
|
|
1118
482
|
return window.matchMedia('(any-pointer: coarse)').matches;
|
|
@@ -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: '
|
|
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
|
-
|
|
2926
|
+
bringForward(object) {
|
|
3542
2927
|
const max = this.allObjects.length + 1;
|
|
3543
|
-
const
|
|
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
|
-
|
|
2937
|
+
sendBackward(object) {
|
|
3552
2938
|
const min = 0;
|
|
3553
|
-
const
|
|
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
|
-
|
|
2948
|
+
bringToFront(object) {
|
|
3562
2949
|
const max = this.allObjects.length + 1;
|
|
3563
|
-
const
|
|
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
|
-
|
|
2956
|
+
sendToBack(object) {
|
|
3569
2957
|
const min = -1;
|
|
3570
|
-
const
|
|
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.
|
|
3104
|
+
this._store.bringForward();
|
|
3716
3105
|
}
|
|
3717
3106
|
if (event.key === '-' && event.ctrlKey && this._store.state.selectionGroup) {
|
|
3718
|
-
this._store.
|
|
3107
|
+
this._store.sendBackward();
|
|
3719
3108
|
}
|
|
3720
3109
|
if (event.key === '*' && event.shiftKey && this._store.state.selectionGroup) {
|
|
3721
|
-
this._store.
|
|
3110
|
+
this._store.bringToFront();
|
|
3722
3111
|
}
|
|
3723
3112
|
if (event.key === '_' && event.shiftKey && this._store.state.selectionGroup) {
|
|
3724
|
-
this._store.
|
|
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
|
|
3980
|
-
this.store.
|
|
3368
|
+
async bringForward(object) {
|
|
3369
|
+
this.store.bringForward(object);
|
|
3370
|
+
}
|
|
3371
|
+
async sendBackward(object) {
|
|
3372
|
+
this.store.sendBackward(object);
|
|
3373
|
+
}
|
|
3374
|
+
async moveToTop(object) {
|
|
3375
|
+
this.store.bringToFront(object);
|
|
3981
3376
|
}
|
|
3982
|
-
async moveToBottom() {
|
|
3983
|
-
this.store.
|
|
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: '
|
|
4046
|
-
_a.translateX), index.h("div", { key: '
|
|
4047
|
-
_b.translateY), index.h("div", { key: '
|
|
4048
|
-
_c.viewportWidth), index.h("div", { key: '
|
|
4049
|
-
_d.viewportHeight), index.h("div", { key: '
|
|
4050
|
-
_e.scale), index.h("div", { key: '
|
|
4051
|
-
_g.name), index.h("div", { key: '
|
|
4052
|
-
_m.cursorX), index.h("div", { key: '
|
|
4053
|
-
_o.cursorY)), index.h("div", { key: '
|
|
3440
|
+
return (index.h(index.Host, { key: '46b1c0d4000229b7881636625af38db319ff49ae' }, index.h("div", { key: '7b91f710711ff1fefd395c38f79004c84a3df74d', class: "debug-panel", style: { display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, index.h("div", { key: '63568d0cceef92262bbf40f54f84d5003302f7c1' }, "TranslateX: ", (_a = this.store.state) === null || _a === void 0 ? void 0 :
|
|
3441
|
+
_a.translateX), index.h("div", { key: 'cd7a9f6bf33d547b23814468c1d2ae726f5d5576' }, "TranslateY: ", (_b = this.store.state) === null || _b === void 0 ? void 0 :
|
|
3442
|
+
_b.translateY), index.h("div", { key: '42788d635e64f1e1f1da2f6b0ec8cf0fec988769' }, "ViewportWidth: ", (_c = this.store.state) === null || _c === void 0 ? void 0 :
|
|
3443
|
+
_c.viewportWidth), index.h("div", { key: 'bd674b2a6b13b22ad177d2bc0527a6b2d41d523f' }, "ViewportHeight: ", (_d = this.store.state) === null || _d === void 0 ? void 0 :
|
|
3444
|
+
_d.viewportHeight), index.h("div", { key: 'faa9581a80b8020ebe4f48cfbea4b0a91a17b1d0' }, "ObjectsInViewport. ", this.store.objects.length), index.h("div", { key: '74e9671f7f546debca0884e74e7b5cdbba0810de' }, "Scale: ", (_e = this.store.state) === null || _e === void 0 ? void 0 :
|
|
3445
|
+
_e.scale), index.h("div", { key: '7f14af283874e226cfdcdf5bf17c0c4f6935f154' }, "ActiveTool: ", (_g = (_f = this.store.state) === null || _f === void 0 ? void 0 : _f.activeTool) === null || _g === void 0 ? void 0 :
|
|
3446
|
+
_g.name), index.h("div", { key: '5d9bb07762326387a04d99d9d1f0487c809a8d13' }, "HasViewportChanged: ", ((_h = this.store.state) === null || _h === void 0 ? void 0 : _h.hasViewportChanged) ? 'true' : 'false'), index.h("div", { key: '65b54f060f162e328d8756845a991b84cd377fa8' }, "IsEnabled: ", ((_j = this.store.state) === null || _j === void 0 ? void 0 : _j.isEnabled) ? 'true' : 'false'), index.h("div", { key: '0593106ef382e3a4b4368f503d435550ee52b686' }, "IsScaling: ", ((_k = this.store.state) === null || _k === void 0 ? void 0 : _k.isScaling) ? 'true' : 'false'), index.h("div", { key: '2d9102c016bbc89bd3f61b46c364663d822ae773' }, "IsPanning: ", ((_l = this.store.state) === null || _l === void 0 ? void 0 : _l.isPanning) ? 'true' : 'false'), index.h("div", { key: '5393b7974bf7e8c391ec67945610b0051d155393' }, "IsFocused: ", this.store.state.isFocused ? 'true' : 'false'), index.h("div", { key: '3591db55fdf4b92162f4d516d307b9f42a6f996a' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), index.h("div", { key: '2fef15767414c841b320705638328f45ab6e01b7' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), index.h("div", { key: '20cf1b12790c3f7112484de2343ed157536f072f' }, "IsResizeHandleSelected: ", this.store.state.isResizeHandleSelected ? 'true' : 'false'), index.h("div", { key: 'b23da45c9f13deb827f837651ab4e09cdb435aa9' }, "IsRotationHandleSelected: ", this.store.state.isRotationHandleSelected ? 'true' : 'false'), index.h("div", { key: '6c3d8cf2aeacf3c9e7930eca83676bfa59f3d2cb' }, "IsDrawing: ", this.store.state.isDrawing ? 'true' : 'false'), index.h("div", { key: 'c87abe35d1aa55d11d321cec3d78f6722a04d114' }, "IsWriting: ", this.store.state.isWriting ? 'true' : 'false'), index.h("div", { key: '3d371da3b1075c5b116ae0db50ae5b8d22e6c2eb' }, "CursorX: ", (_m = this.store.state) === null || _m === void 0 ? void 0 :
|
|
3447
|
+
_m.cursorX), index.h("div", { key: '1a426883cfbfd742aa127d7fff92080586f4af62' }, "CursorY: ", (_o = this.store.state) === null || _o === void 0 ? void 0 :
|
|
3448
|
+
_o.cursorY)), index.h("div", { key: '5de09bb5222a271a3163d7226e012cb86c722a7e', class: "origin", style: {
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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
|
};
|