kritzel-stencil 0.0.129 → 0.0.131
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/{index-C7Read21.js → index-BwINBV6L.js} +259 -191
- package/dist/cjs/index-BwINBV6L.js.map +1 -0
- package/dist/cjs/{index-CUSIflVf.js → index-nzUNdMPh.js} +43 -17
- package/dist/cjs/index-nzUNdMPh.js.map +1 -0
- package/dist/cjs/index.cjs.js +2 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{kritzel-brush-style_22.cjs.entry.js → kritzel-brush-style_23.cjs.entry.js} +930 -841
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/stencil.cjs.js +3 -3
- package/dist/cjs/stencil.cjs.js.map +1 -1
- package/dist/collection/classes/commands/add-object.command.js +3 -2
- package/dist/collection/classes/commands/add-object.command.js.map +1 -1
- package/dist/collection/classes/commands/add-selection-group.command.js +4 -3
- package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -1
- package/dist/collection/classes/commands/base.command.js +4 -2
- package/dist/collection/classes/commands/base.command.js.map +1 -1
- package/dist/collection/classes/commands/batch.command.js +1 -0
- package/dist/collection/classes/commands/batch.command.js.map +1 -1
- package/dist/collection/classes/commands/move-selection-group.command.js +6 -0
- package/dist/collection/classes/commands/move-selection-group.command.js.map +1 -1
- package/dist/collection/classes/commands/remove-object.command.js +5 -4
- package/dist/collection/classes/commands/remove-object.command.js.map +1 -1
- package/dist/collection/classes/commands/remove-selection-group.command.js +3 -2
- package/dist/collection/classes/commands/remove-selection-group.command.js.map +1 -1
- package/dist/collection/classes/commands/resize-selection-group.command.js +3 -0
- package/dist/collection/classes/commands/resize-selection-group.command.js.map +1 -1
- package/dist/collection/classes/commands/rotate-selection-group.command.js +5 -2
- package/dist/collection/classes/commands/rotate-selection-group.command.js.map +1 -1
- package/dist/collection/classes/commands/update-object.command.js +3 -0
- package/dist/collection/classes/commands/update-object.command.js.map +1 -1
- package/dist/collection/classes/commands/update-viewport.command.js +2 -0
- package/dist/collection/classes/commands/update-viewport.command.js.map +1 -1
- package/dist/collection/classes/database.class.js +6 -5
- package/dist/collection/classes/database.class.js.map +1 -1
- package/dist/collection/classes/handlers/base.handler.js +1 -0
- package/dist/collection/classes/handlers/base.handler.js.map +1 -1
- package/dist/collection/classes/handlers/context-menu.handler.js +2 -2
- package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
- package/dist/collection/classes/handlers/move.handler.js +8 -3
- package/dist/collection/classes/handlers/move.handler.js.map +1 -1
- package/dist/collection/classes/handlers/resize.handler.js +6 -6
- package/dist/collection/classes/handlers/resize.handler.js.map +1 -1
- package/dist/collection/classes/handlers/rotation.handler.js +2 -2
- package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
- package/dist/collection/classes/handlers/selection.handler.js +10 -8
- package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
- package/dist/collection/classes/history.class.js +4 -0
- package/dist/collection/classes/history.class.js.map +1 -1
- package/dist/collection/classes/objects/base-object.class.js +29 -16
- package/dist/collection/classes/objects/base-object.class.js.map +1 -1
- package/dist/collection/classes/objects/custom-element.class.js +3 -2
- package/dist/collection/classes/objects/custom-element.class.js.map +1 -1
- package/dist/collection/classes/objects/image.class.js +12 -12
- package/dist/collection/classes/objects/image.class.js.map +1 -1
- package/dist/collection/classes/objects/path.class.js +30 -28
- package/dist/collection/classes/objects/path.class.js.map +1 -1
- package/dist/collection/classes/objects/selection-box.class.js +2 -5
- package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
- package/dist/collection/classes/objects/selection-group.class.js +13 -12
- package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
- package/dist/collection/classes/objects/text.class.js +11 -11
- package/dist/collection/classes/objects/text.class.js.map +1 -1
- package/dist/collection/classes/registries/icon-registry.class.js +1 -1
- package/dist/collection/classes/registries/icon-registry.class.js.map +1 -1
- package/dist/collection/classes/registries/tool.registry.js +1 -1
- package/dist/collection/classes/registries/tool.registry.js.map +1 -1
- package/dist/collection/classes/reviver.class.js +1 -0
- package/dist/collection/classes/reviver.class.js.map +1 -1
- package/dist/collection/classes/store.class.js +18 -30
- package/dist/collection/classes/store.class.js.map +1 -1
- package/dist/collection/classes/structures/circular-buffer.structure.js +5 -3
- package/dist/collection/classes/structures/circular-buffer.structure.js.map +1 -1
- package/dist/collection/classes/structures/object-map.structure.js +43 -0
- package/dist/collection/classes/structures/object-map.structure.js.map +1 -0
- package/dist/collection/classes/tools/base-tool.class.js +3 -2
- package/dist/collection/classes/tools/base-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/brush-tool.class.js +7 -7
- package/dist/collection/classes/tools/brush-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/eraser-tool.class.js +2 -3
- package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/image-tool.class.js +3 -4
- package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/selection-tool.class.js +12 -9
- package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/text-tool.class.js +26 -27
- package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
- package/dist/collection/classes/viewport.class.js +4 -3
- package/dist/collection/classes/viewport.class.js.map +1 -1
- package/dist/collection/classes/workspace.class.js +5 -0
- package/dist/collection/classes/workspace.class.js.map +1 -1
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +6 -6
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +7 -0
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +102 -88
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +137 -148
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +6 -7
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -1
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -3
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -1
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +5 -6
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +1 -1
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +44 -40
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -1
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js +3 -5
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -1
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +17 -17
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +4 -5
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -1
- package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +3 -3
- package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +1 -1
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +16 -169
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +176 -196
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -1
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +136 -0
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +267 -0
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +1 -0
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +164 -48
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -1
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +83 -78
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +160 -130
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -1
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +4 -5
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +1 -1
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +13 -14
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -1
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +5 -3
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -1
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +6 -6
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -1
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +5 -5
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +1 -1
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +25 -32
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -1
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +4 -1
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +1 -1
- package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +116 -95
- package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -1
- package/dist/collection/configs/default-engine-state.js +1 -1
- package/dist/collection/configs/default-engine-state.js.map +1 -1
- package/dist/collection/helpers/event.helper.js +2 -2
- package/dist/collection/helpers/event.helper.js.map +1 -1
- package/dist/collection/helpers/html.helper.js +1 -2
- package/dist/collection/helpers/html.helper.js.map +1 -1
- package/dist/collection/helpers/keyboard.helper.js +18 -0
- package/dist/collection/helpers/keyboard.helper.js.map +1 -1
- package/dist/collection/helpers/object.helper.js +2 -14
- package/dist/collection/helpers/object.helper.js.map +1 -1
- package/dist/collection/index.js +2 -0
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
- package/dist/collection/interfaces/menu-item.interface.js.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +5 -3
- 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 +145 -126
- 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-menu-item.d.ts +11 -0
- package/dist/components/kritzel-menu-item.js +9 -0
- package/dist/components/kritzel-menu-item.js.map +1 -0
- package/dist/components/kritzel-menu.js +1 -1
- package/dist/components/kritzel-portal.js +1 -1
- package/dist/components/kritzel-split-button.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/kritzel-workspace-manager.js +1 -1
- package/dist/components/{p-BU2q3PRS.js → p-B1BLgWL1.js} +9 -6
- package/dist/components/p-B1BLgWL1.js.map +1 -0
- package/dist/components/{p-5CJxFNEE.js → p-BB0_-X42.js} +5 -4
- package/dist/components/p-BB0_-X42.js.map +1 -0
- package/dist/components/{p-yZFrTtMQ.js → p-BB5R2k1o.js} +42 -48
- package/dist/components/p-BB5R2k1o.js.map +1 -0
- package/dist/components/p-BPz_H-EG.js +137 -0
- package/dist/components/p-BPz_H-EG.js.map +1 -0
- package/dist/components/{p-BqrTPNyu.js → p-BYanlgdq.js} +41 -15
- package/dist/components/p-BYanlgdq.js.map +1 -0
- package/dist/components/{p-BeVv4o5c.js → p-B_lb1FGi.js} +7 -2
- package/dist/components/p-B_lb1FGi.js.map +1 -0
- package/dist/components/p-BeljsQ-8.js +252 -0
- package/dist/components/p-BeljsQ-8.js.map +1 -0
- package/dist/components/{p-_ntxNi8v.js → p-BexTdWaX.js} +21 -19
- package/dist/components/p-BexTdWaX.js.map +1 -0
- package/dist/components/{p-BzSz74Ci.js → p-BgmKrd5Z.js} +8 -5
- package/dist/components/p-BgmKrd5Z.js.map +1 -0
- package/dist/components/{p-BZ-j_4CK.js → p-BhiYvSBc.js} +6 -6
- package/dist/components/p-BhiYvSBc.js.map +1 -0
- package/dist/components/{p-jG1e48OE.js → p-BrBQUN0Q.js} +16 -16
- package/dist/components/p-BrBQUN0Q.js.map +1 -0
- package/dist/components/{p-DtmZW6eP.js → p-BubxwvMA.js} +9 -7
- package/dist/components/p-BubxwvMA.js.map +1 -0
- package/dist/components/{p-D-zg05gA.js → p-BuewJQNl.js} +332 -393
- package/dist/components/p-BuewJQNl.js.map +1 -0
- package/dist/components/p-CGmS8wnN.js +186 -0
- package/dist/components/p-CGmS8wnN.js.map +1 -0
- package/dist/components/{p-BaKb8ZLg.js → p-CHxPWeZd.js} +15 -13
- package/dist/components/p-CHxPWeZd.js.map +1 -0
- package/dist/components/{p-rQeWFfPG.js → p-CMJ3P0Vw.js} +8 -7
- package/dist/components/p-CMJ3P0Vw.js.map +1 -0
- package/dist/components/{p-B7VrEdgP.js → p-DHSEK3rF.js} +141 -102
- package/dist/components/p-DHSEK3rF.js.map +1 -0
- package/dist/components/{p-BAPUTr3K.js → p-DMrtdhBD.js} +9 -8
- package/dist/components/p-DMrtdhBD.js.map +1 -0
- package/dist/components/p-DnUKql15.js +30 -0
- package/dist/components/p-DnUKql15.js.map +1 -0
- package/dist/components/p-DxTu1aoJ.js +237 -0
- package/dist/components/p-DxTu1aoJ.js.map +1 -0
- package/dist/components/{p-BLmFBe2a.js → p-p1Jkec_q.js} +7 -5
- package/dist/components/p-p1Jkec_q.js.map +1 -0
- package/dist/components/{p-V4ui5aWj.js → p-rIRXQdie.js} +11 -10
- package/dist/components/p-rIRXQdie.js.map +1 -0
- package/dist/components/{p-a7KmQzo4.js → p-t4NIsuX9.js} +15 -13
- package/dist/components/p-t4NIsuX9.js.map +1 -0
- package/dist/components/{p-BvlGgLAQ.js → p-trncBp_6.js} +47 -41
- package/dist/components/p-trncBp_6.js.map +1 -0
- package/dist/components/{p-BcQTDgzV.js → p-yZ48g7-u.js} +8 -7
- package/dist/components/p-yZ48g7-u.js.map +1 -0
- package/dist/esm/{index-J4NpPimy.js → index-B-oSk-v8.js} +259 -192
- package/dist/esm/index-B-oSk-v8.js.map +1 -0
- package/dist/esm/{index-NiIEUDzj.js → index-oCOlsFCN.js} +43 -17
- package/dist/esm/index-oCOlsFCN.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/{kritzel-brush-style_22.entry.js → kritzel-brush-style_23.entry.js} +929 -841
- package/dist/esm/loader.js +3 -3
- package/dist/esm/stencil.js +4 -4
- package/dist/esm/stencil.js.map +1 -1
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/p-3bb80782.entry.js +2 -0
- package/dist/stencil/p-3bb80782.entry.js.map +1 -0
- package/dist/stencil/p-B-oSk-v8.js +2 -0
- package/dist/stencil/p-B-oSk-v8.js.map +1 -0
- package/dist/stencil/p-oCOlsFCN.js +3 -0
- package/dist/stencil/p-oCOlsFCN.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/objects/path.class.d.ts +0 -2
- package/dist/types/classes/structures/object-map.structure.d.ts +11 -0
- package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +3 -0
- package/dist/types/components/shared/kritzel-menu/kritzel-menu.d.ts +18 -20
- package/dist/types/components/shared/kritzel-menu-item/kritzel-menu-item.d.ts +26 -0
- package/dist/types/components/shared/kritzel-portal/kritzel-portal.d.ts +15 -10
- package/dist/types/components/shared/kritzel-split-button/kritzel-split-button.d.ts +23 -15
- package/dist/types/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.d.ts +18 -14
- package/dist/types/components.d.ts +90 -61
- package/dist/types/helpers/keyboard.helper.d.ts +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/interfaces/engine-state.interface.d.ts +2 -2
- package/dist/types/interfaces/menu-item.interface.d.ts +21 -7
- package/dist/types/stencil-public-runtime.d.ts +6 -4
- package/package.json +1 -1
- package/dist/cjs/index-C7Read21.js.map +0 -1
- package/dist/cjs/index-CUSIflVf.js.map +0 -1
- package/dist/collection/classes/structures/octree.structure.js +0 -115
- package/dist/collection/classes/structures/octree.structure.js.map +0 -1
- package/dist/components/p-5CJxFNEE.js.map +0 -1
- package/dist/components/p-B7VrEdgP.js.map +0 -1
- package/dist/components/p-BAPUTr3K.js.map +0 -1
- package/dist/components/p-BLmFBe2a.js.map +0 -1
- package/dist/components/p-BU2q3PRS.js.map +0 -1
- package/dist/components/p-BZ-j_4CK.js.map +0 -1
- package/dist/components/p-BaKb8ZLg.js.map +0 -1
- package/dist/components/p-Bb6od8He.js +0 -42
- package/dist/components/p-Bb6od8He.js.map +0 -1
- package/dist/components/p-BcQTDgzV.js.map +0 -1
- package/dist/components/p-BeVv4o5c.js.map +0 -1
- package/dist/components/p-BmJbJwkH.js +0 -167
- package/dist/components/p-BmJbJwkH.js.map +0 -1
- package/dist/components/p-BqrTPNyu.js.map +0 -1
- package/dist/components/p-BvlGgLAQ.js.map +0 -1
- package/dist/components/p-BzSz74Ci.js.map +0 -1
- package/dist/components/p-C6OxvITm.js +0 -168
- package/dist/components/p-C6OxvITm.js.map +0 -1
- package/dist/components/p-D-zg05gA.js.map +0 -1
- package/dist/components/p-Dozs0Zfn.js +0 -115
- package/dist/components/p-Dozs0Zfn.js.map +0 -1
- package/dist/components/p-DtmZW6eP.js.map +0 -1
- package/dist/components/p-V4ui5aWj.js.map +0 -1
- package/dist/components/p-_ntxNi8v.js.map +0 -1
- package/dist/components/p-a7KmQzo4.js.map +0 -1
- package/dist/components/p-aaxf-h5S.js +0 -159
- package/dist/components/p-aaxf-h5S.js.map +0 -1
- package/dist/components/p-jG1e48OE.js.map +0 -1
- package/dist/components/p-rQeWFfPG.js.map +0 -1
- package/dist/components/p-yZFrTtMQ.js.map +0 -1
- package/dist/esm/index-J4NpPimy.js.map +0 -1
- package/dist/esm/index-NiIEUDzj.js.map +0 -1
- package/dist/stencil/p-43202395.entry.js +0 -2
- package/dist/stencil/p-43202395.entry.js.map +0 -1
- package/dist/stencil/p-J4NpPimy.js +0 -2
- package/dist/stencil/p-J4NpPimy.js.map +0 -1
- package/dist/stencil/p-NiIEUDzj.js +0 -3
- package/dist/stencil/p-NiIEUDzj.js.map +0 -1
- package/dist/types/classes/structures/octree.structure.d.ts +0 -18
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
class KritzelBaseCommand {
|
|
4
|
+
_store;
|
|
5
|
+
initiator;
|
|
6
|
+
skipHistory;
|
|
4
7
|
constructor(store, initiator, skipHistory = false) {
|
|
5
|
-
var _a, _b;
|
|
6
8
|
this._store = store;
|
|
7
|
-
this.initiator =
|
|
9
|
+
this.initiator = initiator?.constructor?.name ?? 'Unknown';
|
|
8
10
|
this.skipHistory = skipHistory;
|
|
9
11
|
}
|
|
10
12
|
execute() {
|
|
@@ -15,25 +17,13 @@ class KritzelBaseCommand {
|
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
19
|
-
var t = {};
|
|
20
|
-
for (var p in s)
|
|
21
|
-
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
24
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
25
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
26
|
-
t[p[i]] = s[p[i]];
|
|
27
|
-
}
|
|
28
|
-
return t;
|
|
29
|
-
};
|
|
30
20
|
class ObjectHelper {
|
|
31
21
|
static generateUUID() {
|
|
32
22
|
return Math.random().toString(36).substr(2, 9);
|
|
33
23
|
}
|
|
34
24
|
static clone(objOrObjs) {
|
|
35
25
|
const cloneObject = (obj) => {
|
|
36
|
-
const
|
|
26
|
+
const { _store, _elementRef, totalWidth, totalHeight, element, ...remainingProps } = obj;
|
|
37
27
|
const clonedProps = structuredClone(remainingProps);
|
|
38
28
|
if (element && typeof element === 'object' && 'nodeType' in element && element.nodeType === 1) {
|
|
39
29
|
clonedProps.element = element.cloneNode(true);
|
|
@@ -49,11 +39,14 @@ class ObjectHelper {
|
|
|
49
39
|
if (obj === null || obj === undefined) {
|
|
50
40
|
return true;
|
|
51
41
|
}
|
|
52
|
-
return
|
|
42
|
+
return Object?.keys(obj).length === 0 && obj?.constructor === Object;
|
|
53
43
|
}
|
|
54
44
|
}
|
|
55
45
|
|
|
56
46
|
class UpdateObjectCommand extends KritzelBaseCommand {
|
|
47
|
+
object;
|
|
48
|
+
updatedProperties;
|
|
49
|
+
previousProperties;
|
|
57
50
|
constructor(store, initiator, object, updatedProperties, skipHistory = false) {
|
|
58
51
|
super(store, initiator, skipHistory);
|
|
59
52
|
this.object = object;
|
|
@@ -84,6 +77,7 @@ class UpdateObjectCommand extends KritzelBaseCommand {
|
|
|
84
77
|
}
|
|
85
78
|
|
|
86
79
|
class KritzelToolRegistry {
|
|
80
|
+
static registry = {};
|
|
87
81
|
static registerTool(toolName, constructor, store) {
|
|
88
82
|
const toolInstance = new constructor(store);
|
|
89
83
|
toolInstance.name = toolName;
|
|
@@ -99,12 +93,12 @@ class KritzelToolRegistry {
|
|
|
99
93
|
return toolInstance;
|
|
100
94
|
}
|
|
101
95
|
}
|
|
102
|
-
KritzelToolRegistry.registry = {};
|
|
103
96
|
|
|
104
97
|
class KritzelBaseTool {
|
|
98
|
+
__class__ = this.constructor.name;
|
|
99
|
+
name = 'base-tool';
|
|
100
|
+
_store;
|
|
105
101
|
constructor(store) {
|
|
106
|
-
this.__class__ = this.constructor.name;
|
|
107
|
-
this.name = 'base-tool';
|
|
108
102
|
this._store = store;
|
|
109
103
|
}
|
|
110
104
|
onActivate() {
|
|
@@ -132,16 +126,17 @@ class KritzelBaseTool {
|
|
|
132
126
|
}
|
|
133
127
|
|
|
134
128
|
class AddObjectCommand extends KritzelBaseCommand {
|
|
129
|
+
object;
|
|
135
130
|
constructor(store, initiator, object, skipHistory = false) {
|
|
136
131
|
super(store, initiator, skipHistory);
|
|
137
132
|
this.object = object;
|
|
138
133
|
}
|
|
139
134
|
execute() {
|
|
140
|
-
this._store.state.
|
|
135
|
+
this._store.state.objectsMap.insert(this.object);
|
|
141
136
|
this._store.addObjectToDatabase(ObjectHelper.clone(this.object));
|
|
142
137
|
}
|
|
143
138
|
undo() {
|
|
144
|
-
this._store.state.
|
|
139
|
+
this._store.state.objectsMap.remove(object => object.id === this.object.id);
|
|
145
140
|
this._store.deleteObjectFromDatabase(this.object.id);
|
|
146
141
|
}
|
|
147
142
|
}
|
|
@@ -170,7 +165,7 @@ class KritzelEventHelper {
|
|
|
170
165
|
}
|
|
171
166
|
static onLongTouchPress(event, onSuccess, onCancel) {
|
|
172
167
|
if (event.pointerType !== 'touch') {
|
|
173
|
-
onCancel
|
|
168
|
+
onCancel?.();
|
|
174
169
|
return () => { };
|
|
175
170
|
}
|
|
176
171
|
const longPressTimeout = 400;
|
|
@@ -185,7 +180,7 @@ class KritzelEventHelper {
|
|
|
185
180
|
const cancel = () => {
|
|
186
181
|
clearTimeout(timer);
|
|
187
182
|
removeListeners();
|
|
188
|
-
onCancel
|
|
183
|
+
onCancel?.();
|
|
189
184
|
};
|
|
190
185
|
const onPointerMove = (e) => {
|
|
191
186
|
if (Math.abs(e.clientX - startX) > moveThreshold || Math.abs(e.clientY - startY) > moveThreshold) {
|
|
@@ -239,31 +234,49 @@ class KritzelKeyboardHelper {
|
|
|
239
234
|
meta.setAttribute('content', newContent);
|
|
240
235
|
}
|
|
241
236
|
}
|
|
237
|
+
static onKeyboardVisibleChanged(callback) {
|
|
238
|
+
if ('visualViewport' in window) {
|
|
239
|
+
const VIEWPORT_VS_CLIENT_HEIGHT_RATIO = 0.75;
|
|
240
|
+
const onResize = (event) => {
|
|
241
|
+
const target = event.target;
|
|
242
|
+
const isOpen = (target.height * target.scale) / window.screen.height < VIEWPORT_VS_CLIENT_HEIGHT_RATIO;
|
|
243
|
+
callback(isOpen);
|
|
244
|
+
};
|
|
245
|
+
window.visualViewport.addEventListener('resize', onResize);
|
|
246
|
+
return () => window.visualViewport.removeEventListener('resize', onResize);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
// Fallback for older browsers does not provide a reliable event-based mechanism.
|
|
250
|
+
console.warn('Listening for keyboard visibility changes is not reliably supported in this browser.');
|
|
251
|
+
// Return a no-op cleanup function.
|
|
252
|
+
return () => { };
|
|
253
|
+
}
|
|
254
|
+
}
|
|
242
255
|
}
|
|
243
256
|
|
|
244
257
|
class KritzelTextTool extends KritzelBaseTool {
|
|
258
|
+
fontFamily = 'Arial';
|
|
259
|
+
fontSize = 16;
|
|
260
|
+
fontColor = '#000000';
|
|
261
|
+
palette = [
|
|
262
|
+
'#000000',
|
|
263
|
+
'#FFFFFF',
|
|
264
|
+
'#FF0000',
|
|
265
|
+
'#00FF00',
|
|
266
|
+
'#0000FF',
|
|
267
|
+
'#FFFF00',
|
|
268
|
+
'#FF00FF',
|
|
269
|
+
'#00FFFF',
|
|
270
|
+
'#808080',
|
|
271
|
+
'#C0C0C0',
|
|
272
|
+
'#800000',
|
|
273
|
+
'#008000',
|
|
274
|
+
'#000080',
|
|
275
|
+
'#808000',
|
|
276
|
+
'#800080',
|
|
277
|
+
];
|
|
245
278
|
constructor(store) {
|
|
246
279
|
super(store);
|
|
247
|
-
this.fontFamily = 'Arial';
|
|
248
|
-
this.fontSize = 16;
|
|
249
|
-
this.fontColor = '#000000';
|
|
250
|
-
this.palette = [
|
|
251
|
-
'#000000',
|
|
252
|
-
'#FFFFFF',
|
|
253
|
-
'#FF0000',
|
|
254
|
-
'#00FF00',
|
|
255
|
-
'#0000FF',
|
|
256
|
-
'#FFFF00',
|
|
257
|
-
'#FF00FF',
|
|
258
|
-
'#00FFFF',
|
|
259
|
-
'#808080',
|
|
260
|
-
'#C0C0C0',
|
|
261
|
-
'#800000',
|
|
262
|
-
'#008000',
|
|
263
|
-
'#000080',
|
|
264
|
-
'#808000',
|
|
265
|
-
'#800080',
|
|
266
|
-
];
|
|
267
280
|
}
|
|
268
281
|
handlePointerDown(event) {
|
|
269
282
|
if (event.cancelable) {
|
|
@@ -272,7 +285,7 @@ class KritzelTextTool extends KritzelBaseTool {
|
|
|
272
285
|
if (event.pointerType === 'mouse') {
|
|
273
286
|
const path = event.composedPath().slice(1);
|
|
274
287
|
const objectElement = path.find(element => element.classList && element.classList.contains('object'));
|
|
275
|
-
const object = this._store.findObjectById(objectElement
|
|
288
|
+
const object = this._store.findObjectById(objectElement?.id);
|
|
276
289
|
if (this._store.state.activeText === null && object && object instanceof KritzelText) {
|
|
277
290
|
this._store.state.activeText = object;
|
|
278
291
|
object.focus();
|
|
@@ -304,7 +317,7 @@ class KritzelTextTool extends KritzelBaseTool {
|
|
|
304
317
|
const activePointers = Array.from(this._store.state.pointers.values());
|
|
305
318
|
const path = event.composedPath().slice(1);
|
|
306
319
|
const objectElement = path.find(element => element.classList && element.classList.contains('object'));
|
|
307
|
-
const object = this._store.findObjectById(objectElement
|
|
320
|
+
const object = this._store.findObjectById(objectElement?.id);
|
|
308
321
|
if (this._store.state.activeText === null && object && object instanceof KritzelText) {
|
|
309
322
|
this._store.state.activeText = object;
|
|
310
323
|
object.focus();
|
|
@@ -335,17 +348,16 @@ class KritzelTextTool extends KritzelBaseTool {
|
|
|
335
348
|
}
|
|
336
349
|
}
|
|
337
350
|
handlePointerUp(event) {
|
|
338
|
-
var _a, _b, _c, _d;
|
|
339
351
|
if (event.cancelable) {
|
|
340
352
|
event.preventDefault();
|
|
341
353
|
}
|
|
342
354
|
if (event.pointerType === 'mouse') {
|
|
343
|
-
|
|
344
|
-
|
|
355
|
+
this._store.state.activeText?.updateTextareaDimensions();
|
|
356
|
+
this._store.state.activeText?.focus();
|
|
345
357
|
}
|
|
346
358
|
if (event.pointerType === 'touch') {
|
|
347
|
-
|
|
348
|
-
|
|
359
|
+
this._store.state.activeText?.updateTextareaDimensions();
|
|
360
|
+
this._store.state.activeText?.focus();
|
|
349
361
|
KritzelKeyboardHelper.enableInteractiveWidget();
|
|
350
362
|
}
|
|
351
363
|
}
|
|
@@ -405,6 +417,34 @@ class KritzelGeometryHelper {
|
|
|
405
417
|
}
|
|
406
418
|
|
|
407
419
|
class KritzelBaseObject {
|
|
420
|
+
__class__ = 'KritzelBaseObject';
|
|
421
|
+
_store;
|
|
422
|
+
_elementRef;
|
|
423
|
+
id;
|
|
424
|
+
workspaceId;
|
|
425
|
+
x;
|
|
426
|
+
y;
|
|
427
|
+
translateX;
|
|
428
|
+
translateY;
|
|
429
|
+
height;
|
|
430
|
+
width;
|
|
431
|
+
backgroundColor;
|
|
432
|
+
borderColor;
|
|
433
|
+
borderWidth = 0;
|
|
434
|
+
opacity = 1;
|
|
435
|
+
padding = 0;
|
|
436
|
+
scale;
|
|
437
|
+
resizing = false;
|
|
438
|
+
rotation = 0;
|
|
439
|
+
markedForRemoval = false;
|
|
440
|
+
zIndex = 0;
|
|
441
|
+
isVisible = true;
|
|
442
|
+
isSelected = false;
|
|
443
|
+
isHovered = false;
|
|
444
|
+
isMounted = false;
|
|
445
|
+
isEditable = false;
|
|
446
|
+
isInteractive = false;
|
|
447
|
+
isDebugInfoVisible = false;
|
|
408
448
|
get totalWidth() {
|
|
409
449
|
return this.width + this.padding * 2;
|
|
410
450
|
}
|
|
@@ -490,21 +530,6 @@ class KritzelBaseObject {
|
|
|
490
530
|
return this.translateY + this.totalHeight / 2;
|
|
491
531
|
}
|
|
492
532
|
constructor() {
|
|
493
|
-
this.__class__ = 'KritzelBaseObject';
|
|
494
|
-
this.borderWidth = 0;
|
|
495
|
-
this.opacity = 1;
|
|
496
|
-
this.padding = 0;
|
|
497
|
-
this.resizing = false;
|
|
498
|
-
this.rotation = 0;
|
|
499
|
-
this.markedForRemoval = false;
|
|
500
|
-
this.zIndex = 0;
|
|
501
|
-
this.isVisible = true;
|
|
502
|
-
this.isSelected = false;
|
|
503
|
-
this.isHovered = false;
|
|
504
|
-
this.isMounted = false;
|
|
505
|
-
this.isEditable = false;
|
|
506
|
-
this.isInteractive = false;
|
|
507
|
-
this.isDebugInfoVisible = false;
|
|
508
533
|
this.id = this.generateId();
|
|
509
534
|
}
|
|
510
535
|
static create(store) {
|
|
@@ -600,26 +625,26 @@ class KritzelBaseObject {
|
|
|
600
625
|
updatePosition(x, y) {
|
|
601
626
|
this.translateX = x;
|
|
602
627
|
this.translateY = y;
|
|
603
|
-
this._store.state.
|
|
628
|
+
this._store.state.objectsMap.update(this);
|
|
604
629
|
}
|
|
605
630
|
}
|
|
606
631
|
|
|
607
632
|
class KritzelText extends KritzelBaseObject {
|
|
633
|
+
__class__ = 'KritzelText';
|
|
634
|
+
value = '';
|
|
635
|
+
fontFamily = 'Arial';
|
|
636
|
+
fontSize = 8;
|
|
637
|
+
fontColor = '#000000';
|
|
638
|
+
initialWidth = 3;
|
|
639
|
+
isNew = true;
|
|
640
|
+
isDebugInfoVisible = true;
|
|
641
|
+
isEditable = true;
|
|
642
|
+
rows = 1;
|
|
608
643
|
get isReadonly() {
|
|
609
644
|
return !(this._store.state.activeTool instanceof KritzelTextTool);
|
|
610
645
|
}
|
|
611
646
|
constructor(config) {
|
|
612
647
|
super();
|
|
613
|
-
this.__class__ = 'KritzelText';
|
|
614
|
-
this.value = '';
|
|
615
|
-
this.fontFamily = 'Arial';
|
|
616
|
-
this.fontSize = 8;
|
|
617
|
-
this.fontColor = '#000000';
|
|
618
|
-
this.initialWidth = 3;
|
|
619
|
-
this.isNew = true;
|
|
620
|
-
this.isDebugInfoVisible = true;
|
|
621
|
-
this.isEditable = true;
|
|
622
|
-
this.rows = 1;
|
|
623
648
|
if (config) {
|
|
624
649
|
this.value = config.value || ' ';
|
|
625
650
|
this.translateX = config.translateX || 0;
|
|
@@ -701,7 +726,7 @@ class KritzelText extends KritzelBaseObject {
|
|
|
701
726
|
document.body.removeChild(span);
|
|
702
727
|
this.width = textWidth;
|
|
703
728
|
this.height = textHeight;
|
|
704
|
-
this._store.history.executeCommand(new UpdateObjectCommand(this._store, this, this,
|
|
729
|
+
this._store.history.executeCommand(new UpdateObjectCommand(this._store, this, this, { ...this }));
|
|
705
730
|
}
|
|
706
731
|
}
|
|
707
732
|
focus() {
|
|
@@ -766,46 +791,49 @@ class KritzelMathHelper {
|
|
|
766
791
|
}
|
|
767
792
|
|
|
768
793
|
class KritzelPath extends KritzelBaseObject {
|
|
794
|
+
__class__ = 'KritzelPath';
|
|
795
|
+
points;
|
|
796
|
+
d;
|
|
797
|
+
stroke = 'none';
|
|
798
|
+
strokeWidth;
|
|
799
|
+
lineSlack = 0.5;
|
|
800
|
+
fill;
|
|
801
|
+
x = 0;
|
|
802
|
+
y = 0;
|
|
803
|
+
height = 0;
|
|
804
|
+
width = 0;
|
|
805
|
+
scale = 1;
|
|
806
|
+
options;
|
|
807
|
+
isVisible = true;
|
|
808
|
+
isDebugInfoVisible = true;
|
|
809
|
+
_adjustedPoints = null;
|
|
769
810
|
get viewBox() {
|
|
770
811
|
return `${this.x} ${this.y} ${this.width} ${this.height}`;
|
|
771
812
|
}
|
|
772
813
|
constructor(config) {
|
|
773
|
-
var _a, _b, _c, _d, _e, _f;
|
|
774
814
|
super();
|
|
775
|
-
this.__class__ = 'KritzelPath';
|
|
776
|
-
this.stroke = 'none';
|
|
777
|
-
this.lineSlack = 0.5;
|
|
778
|
-
this.x = 0;
|
|
779
|
-
this.y = 0;
|
|
780
|
-
this.height = 0;
|
|
781
|
-
this.width = 0;
|
|
782
|
-
this.scale = 1;
|
|
783
|
-
this.isVisible = true;
|
|
784
|
-
this.isDebugInfoVisible = true;
|
|
785
|
-
this._adjustedPoints = null;
|
|
786
815
|
this.options = config;
|
|
787
|
-
this.points =
|
|
788
|
-
this.translateX =
|
|
789
|
-
this.translateY =
|
|
790
|
-
this.scale =
|
|
791
|
-
this.strokeWidth =
|
|
792
|
-
this.fill =
|
|
816
|
+
this.points = config?.points ?? [];
|
|
817
|
+
this.translateX = config?.translateX ?? 0;
|
|
818
|
+
this.translateY = config?.translateY ?? 0;
|
|
819
|
+
this.scale = config?.scale ?? 1;
|
|
820
|
+
this.strokeWidth = config?.strokeWidth ?? 8;
|
|
821
|
+
this.fill = config?.fill ?? '#000000';
|
|
793
822
|
this.d = this.generateSvgPath();
|
|
794
823
|
this.updateDimensions();
|
|
795
824
|
}
|
|
796
825
|
static create(store, options) {
|
|
797
|
-
var _a, _b, _c, _d, _e, _f;
|
|
798
826
|
const object = new KritzelPath();
|
|
799
827
|
object._store = store;
|
|
800
828
|
object.id = object.generateId();
|
|
801
829
|
object.workspaceId = store.state.activeWorkspace.id;
|
|
802
830
|
object.options = options;
|
|
803
|
-
object.points =
|
|
804
|
-
object.translateX =
|
|
805
|
-
object.translateY =
|
|
806
|
-
object.scale =
|
|
807
|
-
object.strokeWidth =
|
|
808
|
-
object.fill =
|
|
831
|
+
object.points = options?.points ?? [];
|
|
832
|
+
object.translateX = options?.translateX ?? 0;
|
|
833
|
+
object.translateY = options?.translateY ?? 0;
|
|
834
|
+
object.scale = options?.scale ?? 1;
|
|
835
|
+
object.strokeWidth = options?.strokeWidth ?? 8;
|
|
836
|
+
object.fill = options?.fill ?? '#000000';
|
|
809
837
|
object.zIndex = store.currentZIndex;
|
|
810
838
|
object.d = object.generateSvgPath();
|
|
811
839
|
object.updateDimensions();
|
|
@@ -914,11 +942,10 @@ class KritzelPath extends KritzelBaseObject {
|
|
|
914
942
|
this.translateX = x;
|
|
915
943
|
this.translateY = y;
|
|
916
944
|
this._adjustedPoints = null;
|
|
917
|
-
this._store.state.
|
|
945
|
+
this._store.state.objectsMap.update(this);
|
|
918
946
|
}
|
|
919
947
|
computeAdjustedPoints() {
|
|
920
|
-
|
|
921
|
-
if (!((_a = this.points) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
948
|
+
if (!this.points?.length) {
|
|
922
949
|
return [];
|
|
923
950
|
}
|
|
924
951
|
const angle = this.rotation;
|
|
@@ -1031,20 +1058,20 @@ class KritzelPath extends KritzelBaseObject {
|
|
|
1031
1058
|
}
|
|
1032
1059
|
|
|
1033
1060
|
class KritzelImage extends KritzelBaseObject {
|
|
1061
|
+
__class__ = 'KritzelImage';
|
|
1062
|
+
src = '';
|
|
1063
|
+
maxWidth = 300;
|
|
1064
|
+
maxHeight = 300;
|
|
1065
|
+
maxCompressionSize = 300;
|
|
1066
|
+
isDebugInfoVisible = true;
|
|
1034
1067
|
constructor(config) {
|
|
1035
1068
|
super();
|
|
1036
|
-
this.
|
|
1037
|
-
this.
|
|
1038
|
-
this.
|
|
1039
|
-
this.
|
|
1040
|
-
this.
|
|
1041
|
-
this.
|
|
1042
|
-
this.src = (config === null || config === void 0 ? void 0 : config.src) || '';
|
|
1043
|
-
this.x = (config === null || config === void 0 ? void 0 : config.x) || 0;
|
|
1044
|
-
this.y = (config === null || config === void 0 ? void 0 : config.y) || 0;
|
|
1045
|
-
this.translateX = (config === null || config === void 0 ? void 0 : config.translateX) || 0;
|
|
1046
|
-
this.translateY = (config === null || config === void 0 ? void 0 : config.translateY) || 0;
|
|
1047
|
-
this.scale = (config === null || config === void 0 ? void 0 : config.scale) || 1;
|
|
1069
|
+
this.src = config?.src || '';
|
|
1070
|
+
this.x = config?.x || 0;
|
|
1071
|
+
this.y = config?.y || 0;
|
|
1072
|
+
this.translateX = config?.translateX || 0;
|
|
1073
|
+
this.translateY = config?.translateY || 0;
|
|
1074
|
+
this.scale = config?.scale || 1;
|
|
1048
1075
|
}
|
|
1049
1076
|
static create(store) {
|
|
1050
1077
|
const object = new KritzelImage();
|
|
@@ -1084,15 +1111,15 @@ class KritzelImage extends KritzelBaseObject {
|
|
|
1084
1111
|
}
|
|
1085
1112
|
|
|
1086
1113
|
class KritzelBrushTool extends KritzelBaseTool {
|
|
1114
|
+
type = 'pen';
|
|
1115
|
+
color = '#000000';
|
|
1116
|
+
size = 6;
|
|
1117
|
+
palettes = {
|
|
1118
|
+
pen: ['#000000', '#FFFFFF', '#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF', '#808080', '#C0C0C0', '#800000', '#008000', '#000080', '#808000', '#800080'],
|
|
1119
|
+
highlighter: ['#ffff00', '#ffb347', '#b4ffb4'],
|
|
1120
|
+
};
|
|
1087
1121
|
constructor(store) {
|
|
1088
1122
|
super(store);
|
|
1089
|
-
this.type = 'pen';
|
|
1090
|
-
this.color = '#000000';
|
|
1091
|
-
this.size = 6;
|
|
1092
|
-
this.palettes = {
|
|
1093
|
-
pen: ['#000000', '#FFFFFF', '#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF', '#808080', '#C0C0C0', '#800000', '#008000', '#000080', '#808000', '#800080'],
|
|
1094
|
-
highlighter: ['#ffff00', '#ffb347', '#b4ffb4'],
|
|
1095
|
-
};
|
|
1096
1123
|
}
|
|
1097
1124
|
handlePointerDown(event) {
|
|
1098
1125
|
if (event.cancelable) {
|
|
@@ -1196,6 +1223,7 @@ class KritzelBrushTool extends KritzelBaseTool {
|
|
|
1196
1223
|
}
|
|
1197
1224
|
|
|
1198
1225
|
class BatchCommand extends KritzelBaseCommand {
|
|
1226
|
+
commands;
|
|
1199
1227
|
constructor(store, initiator, commands, skipHistory = false) {
|
|
1200
1228
|
super(store, initiator, skipHistory);
|
|
1201
1229
|
this.commands = commands;
|
|
@@ -1209,10 +1237,11 @@ class BatchCommand extends KritzelBaseCommand {
|
|
|
1209
1237
|
}
|
|
1210
1238
|
|
|
1211
1239
|
class KritzelCustomElement extends KritzelBaseObject {
|
|
1240
|
+
__class__ = 'KritzelCustomElement';
|
|
1241
|
+
element;
|
|
1242
|
+
isInteractive = true;
|
|
1212
1243
|
constructor(config) {
|
|
1213
1244
|
super();
|
|
1214
|
-
this.__class__ = 'KritzelCustomElement';
|
|
1215
|
-
this.isInteractive = true;
|
|
1216
1245
|
if (config) {
|
|
1217
1246
|
this.translateX = config.translateX || 0;
|
|
1218
1247
|
this.translateY = config.translateY || 0;
|
|
@@ -1261,26 +1290,27 @@ class KritzelCustomElement extends KritzelBaseObject {
|
|
|
1261
1290
|
}
|
|
1262
1291
|
|
|
1263
1292
|
class RemoveObjectCommand extends KritzelBaseCommand {
|
|
1293
|
+
object;
|
|
1264
1294
|
constructor(store, initiator, object, skipHistory = false) {
|
|
1265
1295
|
super(store, initiator, skipHistory);
|
|
1266
1296
|
this.object = object;
|
|
1267
1297
|
}
|
|
1268
1298
|
execute() {
|
|
1269
|
-
this._store.state.
|
|
1270
|
-
this._store.state.
|
|
1299
|
+
this._store.state.objectsMap.remove(object => object.id === this.object.id);
|
|
1300
|
+
this._store.state.objectsMap.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
|
|
1271
1301
|
this._store.deleteObjectFromDatabase(this.object.id);
|
|
1272
1302
|
}
|
|
1273
1303
|
undo() {
|
|
1274
|
-
this._store.state.
|
|
1275
|
-
this._store.state.
|
|
1304
|
+
this._store.state.objectsMap.insert(this.object);
|
|
1305
|
+
this._store.state.objectsMap.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
|
|
1276
1306
|
this._store.addObjectToDatabase(ObjectHelper.clone(this.object));
|
|
1277
1307
|
}
|
|
1278
1308
|
}
|
|
1279
1309
|
|
|
1280
1310
|
class KritzelEraserTool extends KritzelBaseTool {
|
|
1311
|
+
touchStartTimeout = null;
|
|
1281
1312
|
constructor(store) {
|
|
1282
1313
|
super(store);
|
|
1283
|
-
this.touchStartTimeout = null;
|
|
1284
1314
|
}
|
|
1285
1315
|
handlePointerDown(event) {
|
|
1286
1316
|
if (event.pointerType === 'mouse') {
|
|
@@ -1297,7 +1327,6 @@ class KritzelEraserTool extends KritzelBaseTool {
|
|
|
1297
1327
|
}
|
|
1298
1328
|
}
|
|
1299
1329
|
handlePointerMove(event) {
|
|
1300
|
-
var _a;
|
|
1301
1330
|
if (event.pointerType === 'mouse') {
|
|
1302
1331
|
if (this._store.state.isErasing) {
|
|
1303
1332
|
const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
|
|
@@ -1313,7 +1342,7 @@ class KritzelEraserTool extends KritzelBaseTool {
|
|
|
1313
1342
|
}
|
|
1314
1343
|
if (event.pointerType === 'touch') {
|
|
1315
1344
|
if (this._store.state.pointers.size === 1 && this._store.state.isErasing) {
|
|
1316
|
-
const shadowRoot =
|
|
1345
|
+
const shadowRoot = this._store.state.host?.shadowRoot;
|
|
1317
1346
|
if (!shadowRoot)
|
|
1318
1347
|
return;
|
|
1319
1348
|
const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
|
|
@@ -1360,23 +1389,30 @@ class KritzelEraserTool extends KritzelBaseTool {
|
|
|
1360
1389
|
}
|
|
1361
1390
|
|
|
1362
1391
|
class RemoveSelectionGroupCommand extends KritzelBaseCommand {
|
|
1392
|
+
previousSelectionGroup;
|
|
1363
1393
|
constructor(store, initiator, skipHistory = false) {
|
|
1364
1394
|
super(store, initiator, skipHistory);
|
|
1365
1395
|
this.previousSelectionGroup = this._store.state.selectionGroup;
|
|
1366
1396
|
}
|
|
1367
1397
|
execute() {
|
|
1368
|
-
this._store.state.
|
|
1398
|
+
this._store.state.objectsMap.remove(object => object.id === this.previousSelectionGroup?.id);
|
|
1369
1399
|
this._store.state.selectionGroup = null;
|
|
1370
1400
|
}
|
|
1371
1401
|
undo() {
|
|
1372
1402
|
if (this.previousSelectionGroup) {
|
|
1373
|
-
this._store.state.
|
|
1403
|
+
this._store.state.objectsMap.insert(this.previousSelectionGroup);
|
|
1374
1404
|
this._store.state.selectionGroup = this.previousSelectionGroup;
|
|
1375
1405
|
}
|
|
1376
1406
|
}
|
|
1377
1407
|
}
|
|
1378
1408
|
|
|
1379
1409
|
class MoveSelectionGroupCommand extends KritzelBaseCommand {
|
|
1410
|
+
selectionGroup;
|
|
1411
|
+
startX;
|
|
1412
|
+
startY;
|
|
1413
|
+
endX;
|
|
1414
|
+
endY;
|
|
1415
|
+
skipExecution;
|
|
1380
1416
|
constructor(store, initiator, startX, startY, endX, endY, skipFirstExecution = false, skipHistory = false) {
|
|
1381
1417
|
super(store, initiator, skipHistory);
|
|
1382
1418
|
this.startX = startX;
|
|
@@ -1401,20 +1437,26 @@ class MoveSelectionGroupCommand extends KritzelBaseCommand {
|
|
|
1401
1437
|
}
|
|
1402
1438
|
|
|
1403
1439
|
class KritzelBaseHandler {
|
|
1440
|
+
_store;
|
|
1404
1441
|
constructor(store) {
|
|
1405
1442
|
this._store = store;
|
|
1406
1443
|
}
|
|
1407
1444
|
}
|
|
1408
1445
|
|
|
1409
1446
|
class KritzelMoveHandler extends KritzelBaseHandler {
|
|
1447
|
+
dragStartX;
|
|
1448
|
+
dragStartY;
|
|
1449
|
+
startX;
|
|
1450
|
+
startY;
|
|
1451
|
+
endX;
|
|
1452
|
+
endY;
|
|
1410
1453
|
constructor(store) {
|
|
1411
1454
|
super(store);
|
|
1412
1455
|
}
|
|
1413
1456
|
handlePointerDown(event) {
|
|
1414
|
-
var _a, _b;
|
|
1415
1457
|
if (event.pointerType === 'mouse') {
|
|
1416
1458
|
if (KritzelEventHelper.isLeftClick(event)) {
|
|
1417
|
-
if (
|
|
1459
|
+
if (this._store.state.selectionGroup?.isSelected && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
|
|
1418
1460
|
const clientX = event.clientX - this._store.offsetX;
|
|
1419
1461
|
const clientY = event.clientY - this._store.offsetY;
|
|
1420
1462
|
this._store.state.isDragging = true;
|
|
@@ -1428,7 +1470,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
|
|
|
1428
1470
|
if (event.pointerType === 'touch') {
|
|
1429
1471
|
const activePointers = Array.from(this._store.state.pointers.values());
|
|
1430
1472
|
if (this._store.state.pointers.size === 1) {
|
|
1431
|
-
if (
|
|
1473
|
+
if (this._store.state.selectionGroup?.isSelected && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
|
|
1432
1474
|
const x = Math.round(activePointers[0].clientX - this._store.offsetX);
|
|
1433
1475
|
const y = Math.round(activePointers[0].clientY - this._store.offsetY);
|
|
1434
1476
|
this.dragStartX = x;
|
|
@@ -1510,6 +1552,9 @@ var KritzelHandleType;
|
|
|
1510
1552
|
})(KritzelHandleType || (KritzelHandleType = {}));
|
|
1511
1553
|
|
|
1512
1554
|
class ResizeSelectionGroupCommand extends KritzelBaseCommand {
|
|
1555
|
+
newSize;
|
|
1556
|
+
previousSize;
|
|
1557
|
+
selectionGroup;
|
|
1513
1558
|
constructor(store, initiator, previousSize, newSize, skipHistory = false) {
|
|
1514
1559
|
super(store, initiator, skipHistory);
|
|
1515
1560
|
this.previousSize = previousSize;
|
|
@@ -1527,12 +1572,12 @@ class ResizeSelectionGroupCommand extends KritzelBaseCommand {
|
|
|
1527
1572
|
}
|
|
1528
1573
|
|
|
1529
1574
|
class KritzelResizeHandler extends KritzelBaseHandler {
|
|
1575
|
+
initialMouseX = 0;
|
|
1576
|
+
initialMouseY = 0;
|
|
1577
|
+
initialSize = { x: 0, y: 0, width: 0, height: 0 };
|
|
1578
|
+
newSize = { x: 0, y: 0, width: 0, height: 0 };
|
|
1530
1579
|
constructor(store) {
|
|
1531
1580
|
super(store);
|
|
1532
|
-
this.initialMouseX = 0;
|
|
1533
|
-
this.initialMouseY = 0;
|
|
1534
|
-
this.initialSize = { x: 0, y: 0, width: 0, height: 0 };
|
|
1535
|
-
this.newSize = { x: 0, y: 0, width: 0, height: 0 };
|
|
1536
1581
|
}
|
|
1537
1582
|
handlePointerDown(event) {
|
|
1538
1583
|
if (event.pointerType === 'mouse') {
|
|
@@ -1656,7 +1701,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
|
|
|
1656
1701
|
if (this._store.state.isResizing) {
|
|
1657
1702
|
const resizeSelectionGroupCommand = new ResizeSelectionGroupCommand(this._store, this, structuredClone(this.initialSize), structuredClone(this.newSize));
|
|
1658
1703
|
const updateObjectsCommand = this._store.state.selectionGroup.objects.map(object => {
|
|
1659
|
-
return new UpdateObjectCommand(this._store, this, object,
|
|
1704
|
+
return new UpdateObjectCommand(this._store, this, object, { ...object });
|
|
1660
1705
|
});
|
|
1661
1706
|
this._store.history.executeCommand(new BatchCommand(this._store, this, [resizeSelectionGroupCommand, ...updateObjectsCommand]));
|
|
1662
1707
|
this._store.state.isResizing = false;
|
|
@@ -1667,7 +1712,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
|
|
|
1667
1712
|
if (this._store.state.isResizing) {
|
|
1668
1713
|
const resizeSelectionGroupCommand = new ResizeSelectionGroupCommand(this._store, this, structuredClone(this.initialSize), structuredClone(this.newSize));
|
|
1669
1714
|
const updateObjectsCommand = this._store.state.selectionGroup.objects.map(object => {
|
|
1670
|
-
return new UpdateObjectCommand(this._store, this, object,
|
|
1715
|
+
return new UpdateObjectCommand(this._store, this, object, { ...object });
|
|
1671
1716
|
});
|
|
1672
1717
|
this._store.history.executeCommand(new BatchCommand(this._store, this, [resizeSelectionGroupCommand, ...updateObjectsCommand]));
|
|
1673
1718
|
this._store.state.isResizing = false;
|
|
@@ -1679,6 +1724,9 @@ class KritzelResizeHandler extends KritzelBaseHandler {
|
|
|
1679
1724
|
}
|
|
1680
1725
|
|
|
1681
1726
|
class RotateSelectionGroupCommand extends KritzelBaseCommand {
|
|
1727
|
+
rotation;
|
|
1728
|
+
initialRotation;
|
|
1729
|
+
selectionGroup;
|
|
1682
1730
|
constructor(store, initiator, rotation, skipHistory = false) {
|
|
1683
1731
|
super(store, initiator, skipHistory);
|
|
1684
1732
|
this.rotation = rotation;
|
|
@@ -1689,23 +1737,23 @@ class RotateSelectionGroupCommand extends KritzelBaseCommand {
|
|
|
1689
1737
|
this._store.state.selectionGroup = this.selectionGroup;
|
|
1690
1738
|
this._store.state.selectionGroup.rotate(this.rotation);
|
|
1691
1739
|
this._store.state.selectionGroup.objects.forEach(object => {
|
|
1692
|
-
this._store.state.
|
|
1740
|
+
this._store.state.objectsMap.update(object);
|
|
1693
1741
|
});
|
|
1694
1742
|
}
|
|
1695
1743
|
undo() {
|
|
1696
1744
|
this._store.state.selectionGroup = this.selectionGroup;
|
|
1697
1745
|
this._store.state.selectionGroup.rotate(this.rotation - this.initialRotation);
|
|
1698
1746
|
this._store.state.selectionGroup.objects.forEach(object => {
|
|
1699
|
-
this._store.state.
|
|
1747
|
+
this._store.state.objectsMap.update(object);
|
|
1700
1748
|
});
|
|
1701
1749
|
}
|
|
1702
1750
|
}
|
|
1703
1751
|
|
|
1704
1752
|
class KritzelRotationHandler extends KritzelBaseHandler {
|
|
1753
|
+
initialRotation = 0;
|
|
1754
|
+
rotation = 0;
|
|
1705
1755
|
constructor(store) {
|
|
1706
1756
|
super(store);
|
|
1707
|
-
this.initialRotation = 0;
|
|
1708
|
-
this.rotation = 0;
|
|
1709
1757
|
}
|
|
1710
1758
|
handlePointerDown(event) {
|
|
1711
1759
|
if (event.pointerType === 'mouse') {
|
|
@@ -1815,11 +1863,8 @@ class KritzelRotationHandler extends KritzelBaseHandler {
|
|
|
1815
1863
|
}
|
|
1816
1864
|
|
|
1817
1865
|
class KrtizelSelectionBox extends KritzelBaseObject {
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
this.__class__ = 'KrtizelSelectionBox';
|
|
1821
|
-
this.objects = [];
|
|
1822
|
-
}
|
|
1866
|
+
__class__ = 'KrtizelSelectionBox';
|
|
1867
|
+
objects = [];
|
|
1823
1868
|
static create(store) {
|
|
1824
1869
|
const object = new KrtizelSelectionBox();
|
|
1825
1870
|
object._store = store;
|
|
@@ -1837,24 +1882,30 @@ class KrtizelSelectionBox extends KritzelBaseObject {
|
|
|
1837
1882
|
}
|
|
1838
1883
|
|
|
1839
1884
|
class AddSelectionGroupCommand extends KritzelBaseCommand {
|
|
1885
|
+
selectionGroup;
|
|
1840
1886
|
constructor(store, initiator, selectionGroup, skipHistory = false) {
|
|
1841
1887
|
super(store, initiator, skipHistory);
|
|
1842
1888
|
this.selectionGroup = selectionGroup;
|
|
1843
1889
|
}
|
|
1844
1890
|
execute() {
|
|
1845
|
-
this._store.state.
|
|
1846
|
-
this._store.state.
|
|
1891
|
+
this._store.state.objectsMap.remove(object => object instanceof KrtizelSelectionBox);
|
|
1892
|
+
this._store.state.objectsMap.insert(this.selectionGroup);
|
|
1847
1893
|
this._store.state.selectionGroup = this.selectionGroup;
|
|
1848
1894
|
this._store.state.selectionBox = null;
|
|
1849
1895
|
}
|
|
1850
1896
|
undo() {
|
|
1851
|
-
this._store.state.
|
|
1897
|
+
this._store.state.objectsMap.remove(object => object.id === this.selectionGroup.id);
|
|
1852
1898
|
this._store.state.selectionGroup = null;
|
|
1853
1899
|
this._store.state.selectionBox = null;
|
|
1854
1900
|
}
|
|
1855
1901
|
}
|
|
1856
1902
|
|
|
1857
1903
|
class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
1904
|
+
startX;
|
|
1905
|
+
startY;
|
|
1906
|
+
touchStartX = 0;
|
|
1907
|
+
touchStartY = 0;
|
|
1908
|
+
touchStartTimeout = null;
|
|
1858
1909
|
get isSelectionClick() {
|
|
1859
1910
|
return this._store.state.selectionBox && this._store.state.selectionBox.width === 0 && this._store.state.selectionBox.height === 0;
|
|
1860
1911
|
}
|
|
@@ -1863,9 +1914,6 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
|
1863
1914
|
}
|
|
1864
1915
|
constructor(store) {
|
|
1865
1916
|
super(store);
|
|
1866
|
-
this.touchStartX = 0;
|
|
1867
|
-
this.touchStartY = 0;
|
|
1868
|
-
this.touchStartTimeout = null;
|
|
1869
1917
|
}
|
|
1870
1918
|
handlePointerDown(event) {
|
|
1871
1919
|
if (event.pointerType === 'mouse') {
|
|
@@ -1940,7 +1988,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
|
1940
1988
|
removeSelectionBox() {
|
|
1941
1989
|
this._store.state.selectionBox = null;
|
|
1942
1990
|
this._store.state.isSelecting = false;
|
|
1943
|
-
this._store.state.
|
|
1991
|
+
this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox);
|
|
1944
1992
|
this._store.rerender();
|
|
1945
1993
|
}
|
|
1946
1994
|
startMouseSelection(event) {
|
|
@@ -1955,8 +2003,8 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
|
1955
2003
|
this._store.state.selectionGroup = null;
|
|
1956
2004
|
this._store.state.selectionBox = selectionBox;
|
|
1957
2005
|
this._store.state.isSelecting = true;
|
|
1958
|
-
this._store.state.
|
|
1959
|
-
this._store.state.
|
|
2006
|
+
this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
|
|
2007
|
+
this._store.state.objectsMap.insert(selectionBox);
|
|
1960
2008
|
}
|
|
1961
2009
|
startTouchSelection() {
|
|
1962
2010
|
const activePointers = Array.from(this._store.state.pointers.values());
|
|
@@ -1977,8 +2025,8 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
|
1977
2025
|
this._store.state.selectionGroup = null;
|
|
1978
2026
|
this._store.state.selectionBox = selectionBox;
|
|
1979
2027
|
this._store.state.isSelecting = true;
|
|
1980
|
-
this._store.state.
|
|
1981
|
-
this._store.state.
|
|
2028
|
+
this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
|
|
2029
|
+
this._store.state.objectsMap.insert(selectionBox);
|
|
1982
2030
|
}
|
|
1983
2031
|
updateMouseSelection(event) {
|
|
1984
2032
|
let clientX, clientY;
|
|
@@ -2066,6 +2114,11 @@ class KritzelHoverHandler extends KritzelBaseHandler {
|
|
|
2066
2114
|
}
|
|
2067
2115
|
|
|
2068
2116
|
class KritzelSelectionTool extends KritzelBaseTool {
|
|
2117
|
+
selectionHandler;
|
|
2118
|
+
moveHandler;
|
|
2119
|
+
hoverHandler;
|
|
2120
|
+
resizeHandler;
|
|
2121
|
+
rotationHandler;
|
|
2069
2122
|
constructor(store) {
|
|
2070
2123
|
super(store);
|
|
2071
2124
|
this.selectionHandler = new KritzelSelectionHandler(this._store);
|
|
@@ -2091,7 +2144,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
|
|
|
2091
2144
|
!this._store.state.isRotationHandleSelected) {
|
|
2092
2145
|
this._store.history.executeCommand(new RemoveSelectionGroupCommand(this._store, this._store.state.selectionGroup));
|
|
2093
2146
|
}
|
|
2094
|
-
if (selectedObject && selectedObject.isSelected === false &&
|
|
2147
|
+
if (selectedObject && selectedObject.isSelected === false && selectedObject?.objects.length === 1 && selectedObject.objects[0].isInteractive) {
|
|
2095
2148
|
return;
|
|
2096
2149
|
}
|
|
2097
2150
|
}
|
|
@@ -2174,7 +2227,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
|
|
|
2174
2227
|
getSelectedObject(event) {
|
|
2175
2228
|
const path = event.composedPath().slice(1);
|
|
2176
2229
|
const objectElement = path.find(element => element.classList && element.classList.contains('object'));
|
|
2177
|
-
const object = this._store.findObjectById(objectElement
|
|
2230
|
+
const object = this._store.findObjectById(objectElement?.id);
|
|
2178
2231
|
if (!object) {
|
|
2179
2232
|
return null;
|
|
2180
2233
|
}
|
|
@@ -2190,21 +2243,19 @@ class KritzelSelectionTool extends KritzelBaseTool {
|
|
|
2190
2243
|
}
|
|
2191
2244
|
}
|
|
2192
2245
|
getHandleType(event) {
|
|
2193
|
-
|
|
2194
|
-
const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
|
|
2246
|
+
const shadowRoot = this._store.state.host?.shadowRoot;
|
|
2195
2247
|
if (!shadowRoot)
|
|
2196
2248
|
return;
|
|
2197
2249
|
const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);
|
|
2198
|
-
const handle = elementAtPoint
|
|
2199
|
-
return handle
|
|
2250
|
+
const handle = elementAtPoint?.closest('.resize-handle-overlay');
|
|
2251
|
+
return handle?.classList[1];
|
|
2200
2252
|
}
|
|
2201
2253
|
isHandleSelected(event) {
|
|
2202
|
-
|
|
2203
|
-
const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
|
|
2254
|
+
const shadowRoot = this._store.state.host?.shadowRoot;
|
|
2204
2255
|
if (!shadowRoot)
|
|
2205
2256
|
return false;
|
|
2206
2257
|
const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);
|
|
2207
|
-
return !!
|
|
2258
|
+
return !!elementAtPoint?.classList.contains('resize-handle-overlay');
|
|
2208
2259
|
}
|
|
2209
2260
|
isRotationHandleSelected(event) {
|
|
2210
2261
|
const path = event.composedPath();
|
|
@@ -2213,6 +2264,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
|
|
|
2213
2264
|
}
|
|
2214
2265
|
|
|
2215
2266
|
class KritzelReviver {
|
|
2267
|
+
_store;
|
|
2216
2268
|
constructor(store) {
|
|
2217
2269
|
this._store = store;
|
|
2218
2270
|
}
|
|
@@ -2269,12 +2321,13 @@ class KritzelReviver {
|
|
|
2269
2321
|
}
|
|
2270
2322
|
|
|
2271
2323
|
class KritzelSelectionGroup extends KritzelBaseObject {
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2324
|
+
__class__ = 'KritzelSelectionGroup';
|
|
2325
|
+
objects = [];
|
|
2326
|
+
unchangedObjects = [];
|
|
2327
|
+
minX;
|
|
2328
|
+
maxX;
|
|
2329
|
+
minY;
|
|
2330
|
+
maxY;
|
|
2278
2331
|
get length() {
|
|
2279
2332
|
return this.objects.length;
|
|
2280
2333
|
}
|
|
@@ -2315,17 +2368,17 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
2315
2368
|
});
|
|
2316
2369
|
this.translateX = x;
|
|
2317
2370
|
this.translateY = y;
|
|
2318
|
-
this._store.state.
|
|
2371
|
+
this._store.state.objectsMap.update(this);
|
|
2319
2372
|
}
|
|
2320
2373
|
move(startX, startY, endX, endY) {
|
|
2321
2374
|
const deltaX = (startX - endX) / this._store.state.scale;
|
|
2322
2375
|
const deltaY = (startY - endY) / this._store.state.scale;
|
|
2323
2376
|
this.translateX += deltaX;
|
|
2324
2377
|
this.translateY += deltaY;
|
|
2325
|
-
this._store.state.
|
|
2378
|
+
this._store.state.objectsMap.update(this);
|
|
2326
2379
|
this.objects.forEach(obj => {
|
|
2327
2380
|
obj.move(startX, startY, endX, endY);
|
|
2328
|
-
this._store.state.
|
|
2381
|
+
this._store.state.objectsMap.update(obj);
|
|
2329
2382
|
});
|
|
2330
2383
|
this.unchangedObjects.forEach(obj => {
|
|
2331
2384
|
obj.translateX += deltaX;
|
|
@@ -2343,7 +2396,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
2343
2396
|
const updatedX = child.translateX + deltaX + (child.translateX - this.translateX) * (widthScaleFactor - 1);
|
|
2344
2397
|
const updatedY = child.translateY + deltaY + (child.translateY - this.translateY) * (heightScaleFactor - 1);
|
|
2345
2398
|
child.resize(updatedX, updatedY, updatedWidth, updatedHeight);
|
|
2346
|
-
this._store.state.
|
|
2399
|
+
this._store.state.objectsMap.update(child);
|
|
2347
2400
|
});
|
|
2348
2401
|
this.refreshObjectDimensions();
|
|
2349
2402
|
this.unchangedObjects = ObjectHelper.clone(this.objects);
|
|
@@ -2364,7 +2417,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
2364
2417
|
child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;
|
|
2365
2418
|
child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;
|
|
2366
2419
|
child.rotate(this.objects.length === 1 ? value : value + unchangedChild.rotation);
|
|
2367
|
-
this._store.state.
|
|
2420
|
+
this._store.state.objectsMap.update(child);
|
|
2368
2421
|
});
|
|
2369
2422
|
}
|
|
2370
2423
|
copy() {
|
|
@@ -2404,7 +2457,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
2404
2457
|
this.width = (this.maxX - this.minX - this.padding) * this.scale;
|
|
2405
2458
|
this.height = (this.maxY - this.minY - this.padding) * this.scale;
|
|
2406
2459
|
}
|
|
2407
|
-
this._store.state.
|
|
2460
|
+
this._store.state.objectsMap.update(this);
|
|
2408
2461
|
}
|
|
2409
2462
|
getOffsetXToCenter(obj) {
|
|
2410
2463
|
const objCenterX = obj.translateX + obj.totalWidth / obj.scale / 2;
|
|
@@ -2433,10 +2486,10 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
2433
2486
|
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";
|
|
2434
2487
|
|
|
2435
2488
|
class KritzelImageTool extends KritzelBaseTool {
|
|
2489
|
+
fileInput = null;
|
|
2490
|
+
maxCompressionSize = 300;
|
|
2436
2491
|
constructor(store) {
|
|
2437
2492
|
super(store);
|
|
2438
|
-
this.fileInput = null;
|
|
2439
|
-
this.maxCompressionSize = 300;
|
|
2440
2493
|
this.setupFileInput();
|
|
2441
2494
|
}
|
|
2442
2495
|
onActivate() {
|
|
@@ -2483,9 +2536,8 @@ class KritzelImageTool extends KritzelBaseTool {
|
|
|
2483
2536
|
readFile(file) {
|
|
2484
2537
|
const reader = new FileReader();
|
|
2485
2538
|
reader.onload = e => {
|
|
2486
|
-
var _a;
|
|
2487
2539
|
const img = new Image();
|
|
2488
|
-
img.src =
|
|
2540
|
+
img.src = e.target?.result;
|
|
2489
2541
|
img.onload = () => this.createKritzelImage(img);
|
|
2490
2542
|
};
|
|
2491
2543
|
reader.readAsDataURL(file);
|
|
@@ -2607,6 +2659,21 @@ const DEFAULT_TEXT_CONFIG = {
|
|
|
2607
2659
|
],
|
|
2608
2660
|
};
|
|
2609
2661
|
|
|
2662
|
+
class KritzelWorkspace {
|
|
2663
|
+
id;
|
|
2664
|
+
name;
|
|
2665
|
+
createdAt;
|
|
2666
|
+
updatedAt;
|
|
2667
|
+
viewport;
|
|
2668
|
+
constructor(id, name, viewport = { translateX: 0, translateY: 0, scale: 1 }) {
|
|
2669
|
+
this.id = id;
|
|
2670
|
+
this.name = name;
|
|
2671
|
+
this.createdAt = new Date();
|
|
2672
|
+
this.updatedAt = new Date();
|
|
2673
|
+
this.viewport = viewport;
|
|
2674
|
+
}
|
|
2675
|
+
}
|
|
2676
|
+
|
|
2610
2677
|
exports.AddObjectCommand = AddObjectCommand;
|
|
2611
2678
|
exports.AddSelectionGroupCommand = AddSelectionGroupCommand;
|
|
2612
2679
|
exports.BatchCommand = BatchCommand;
|
|
@@ -2628,11 +2695,12 @@ exports.KritzelSelectionTool = KritzelSelectionTool;
|
|
|
2628
2695
|
exports.KritzelText = KritzelText;
|
|
2629
2696
|
exports.KritzelTextTool = KritzelTextTool;
|
|
2630
2697
|
exports.KritzelToolRegistry = KritzelToolRegistry;
|
|
2698
|
+
exports.KritzelWorkspace = KritzelWorkspace;
|
|
2631
2699
|
exports.KrtizelSelectionBox = KrtizelSelectionBox;
|
|
2632
2700
|
exports.ObjectHelper = ObjectHelper;
|
|
2633
2701
|
exports.RemoveObjectCommand = RemoveObjectCommand;
|
|
2634
2702
|
exports.RemoveSelectionGroupCommand = RemoveSelectionGroupCommand;
|
|
2635
2703
|
exports.UpdateObjectCommand = UpdateObjectCommand;
|
|
2636
|
-
//# sourceMappingURL=index-
|
|
2704
|
+
//# sourceMappingURL=index-BwINBV6L.js.map
|
|
2637
2705
|
|
|
2638
|
-
//# sourceMappingURL=index-
|
|
2706
|
+
//# sourceMappingURL=index-BwINBV6L.js.map
|