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,27 +1,27 @@
|
|
|
1
|
-
import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-
|
|
1
|
+
import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-BYanlgdq.js';
|
|
2
2
|
import { K as KritzelMouseButton } from './p-D8W6LE-c.js';
|
|
3
|
-
import {
|
|
4
|
-
import { O as ObjectHelper } from './p-
|
|
5
|
-
import { K as KritzelContextMenu, d as defineCustomElement$3 } from './p-
|
|
6
|
-
import { K as KritzelWorkspace } from './p-
|
|
7
|
-
import { d as defineCustomElement$2 } from './p-
|
|
8
|
-
import { d as defineCustomElement$1 } from './p-
|
|
3
|
+
import { e as KritzelBaseObject, f as KritzelBaseCommand, g as KritzelBaseTool, h as KritzelEventHelper, U as UpdateObjectCommand, c as KritzelTextTool, b as KritzelBrushTool, K as KritzelText, a as KritzelPath, A as AddObjectCommand, i as KritzelToolRegistry, d as KritzelKeyboardHelper } from './p-DHSEK3rF.js';
|
|
4
|
+
import { O as ObjectHelper } from './p-DnUKql15.js';
|
|
5
|
+
import { K as KritzelContextMenu, d as defineCustomElement$3 } from './p-B1BLgWL1.js';
|
|
6
|
+
import { K as KritzelWorkspace } from './p-B_lb1FGi.js';
|
|
7
|
+
import { d as defineCustomElement$2 } from './p-BubxwvMA.js';
|
|
8
|
+
import { d as defineCustomElement$1 } from './p-p1Jkec_q.js';
|
|
9
9
|
|
|
10
10
|
class KritzelImage extends KritzelBaseObject {
|
|
11
|
+
__class__ = 'KritzelImage';
|
|
12
|
+
src = '';
|
|
13
|
+
maxWidth = 300;
|
|
14
|
+
maxHeight = 300;
|
|
15
|
+
maxCompressionSize = 300;
|
|
16
|
+
isDebugInfoVisible = true;
|
|
11
17
|
constructor(config) {
|
|
12
18
|
super();
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.src = (config === null || config === void 0 ? void 0 : config.src) || '';
|
|
20
|
-
this.x = (config === null || config === void 0 ? void 0 : config.x) || 0;
|
|
21
|
-
this.y = (config === null || config === void 0 ? void 0 : config.y) || 0;
|
|
22
|
-
this.translateX = (config === null || config === void 0 ? void 0 : config.translateX) || 0;
|
|
23
|
-
this.translateY = (config === null || config === void 0 ? void 0 : config.translateY) || 0;
|
|
24
|
-
this.scale = (config === null || config === void 0 ? void 0 : config.scale) || 1;
|
|
19
|
+
this.src = config?.src || '';
|
|
20
|
+
this.x = config?.x || 0;
|
|
21
|
+
this.y = config?.y || 0;
|
|
22
|
+
this.translateX = config?.translateX || 0;
|
|
23
|
+
this.translateY = config?.translateY || 0;
|
|
24
|
+
this.scale = config?.scale || 1;
|
|
25
25
|
}
|
|
26
26
|
static create(store) {
|
|
27
27
|
const object = new KritzelImage();
|
|
@@ -61,6 +61,7 @@ class KritzelImage extends KritzelBaseObject {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
class BatchCommand extends KritzelBaseCommand {
|
|
64
|
+
commands;
|
|
64
65
|
constructor(store, initiator, commands, skipHistory = false) {
|
|
65
66
|
super(store, initiator, skipHistory);
|
|
66
67
|
this.commands = commands;
|
|
@@ -74,10 +75,11 @@ class BatchCommand extends KritzelBaseCommand {
|
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
class KritzelCustomElement extends KritzelBaseObject {
|
|
78
|
+
__class__ = 'KritzelCustomElement';
|
|
79
|
+
element;
|
|
80
|
+
isInteractive = true;
|
|
77
81
|
constructor(config) {
|
|
78
82
|
super();
|
|
79
|
-
this.__class__ = 'KritzelCustomElement';
|
|
80
|
-
this.isInteractive = true;
|
|
81
83
|
if (config) {
|
|
82
84
|
this.translateX = config.translateX || 0;
|
|
83
85
|
this.translateY = config.translateY || 0;
|
|
@@ -126,26 +128,27 @@ class KritzelCustomElement extends KritzelBaseObject {
|
|
|
126
128
|
}
|
|
127
129
|
|
|
128
130
|
class RemoveObjectCommand extends KritzelBaseCommand {
|
|
131
|
+
object;
|
|
129
132
|
constructor(store, initiator, object, skipHistory = false) {
|
|
130
133
|
super(store, initiator, skipHistory);
|
|
131
134
|
this.object = object;
|
|
132
135
|
}
|
|
133
136
|
execute() {
|
|
134
|
-
this._store.state.
|
|
135
|
-
this._store.state.
|
|
137
|
+
this._store.state.objectsMap.remove(object => object.id === this.object.id);
|
|
138
|
+
this._store.state.objectsMap.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
|
|
136
139
|
this._store.deleteObjectFromDatabase(this.object.id);
|
|
137
140
|
}
|
|
138
141
|
undo() {
|
|
139
|
-
this._store.state.
|
|
140
|
-
this._store.state.
|
|
142
|
+
this._store.state.objectsMap.insert(this.object);
|
|
143
|
+
this._store.state.objectsMap.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
|
|
141
144
|
this._store.addObjectToDatabase(ObjectHelper.clone(this.object));
|
|
142
145
|
}
|
|
143
146
|
}
|
|
144
147
|
|
|
145
148
|
class KritzelEraserTool extends KritzelBaseTool {
|
|
149
|
+
touchStartTimeout = null;
|
|
146
150
|
constructor(store) {
|
|
147
151
|
super(store);
|
|
148
|
-
this.touchStartTimeout = null;
|
|
149
152
|
}
|
|
150
153
|
handlePointerDown(event) {
|
|
151
154
|
if (event.pointerType === 'mouse') {
|
|
@@ -162,7 +165,6 @@ class KritzelEraserTool extends KritzelBaseTool {
|
|
|
162
165
|
}
|
|
163
166
|
}
|
|
164
167
|
handlePointerMove(event) {
|
|
165
|
-
var _a;
|
|
166
168
|
if (event.pointerType === 'mouse') {
|
|
167
169
|
if (this._store.state.isErasing) {
|
|
168
170
|
const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
|
|
@@ -178,7 +180,7 @@ class KritzelEraserTool extends KritzelBaseTool {
|
|
|
178
180
|
}
|
|
179
181
|
if (event.pointerType === 'touch') {
|
|
180
182
|
if (this._store.state.pointers.size === 1 && this._store.state.isErasing) {
|
|
181
|
-
const shadowRoot =
|
|
183
|
+
const shadowRoot = this._store.state.host?.shadowRoot;
|
|
182
184
|
if (!shadowRoot)
|
|
183
185
|
return;
|
|
184
186
|
const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
|
|
@@ -225,23 +227,30 @@ class KritzelEraserTool extends KritzelBaseTool {
|
|
|
225
227
|
}
|
|
226
228
|
|
|
227
229
|
class RemoveSelectionGroupCommand extends KritzelBaseCommand {
|
|
230
|
+
previousSelectionGroup;
|
|
228
231
|
constructor(store, initiator, skipHistory = false) {
|
|
229
232
|
super(store, initiator, skipHistory);
|
|
230
233
|
this.previousSelectionGroup = this._store.state.selectionGroup;
|
|
231
234
|
}
|
|
232
235
|
execute() {
|
|
233
|
-
this._store.state.
|
|
236
|
+
this._store.state.objectsMap.remove(object => object.id === this.previousSelectionGroup?.id);
|
|
234
237
|
this._store.state.selectionGroup = null;
|
|
235
238
|
}
|
|
236
239
|
undo() {
|
|
237
240
|
if (this.previousSelectionGroup) {
|
|
238
|
-
this._store.state.
|
|
241
|
+
this._store.state.objectsMap.insert(this.previousSelectionGroup);
|
|
239
242
|
this._store.state.selectionGroup = this.previousSelectionGroup;
|
|
240
243
|
}
|
|
241
244
|
}
|
|
242
245
|
}
|
|
243
246
|
|
|
244
247
|
class MoveSelectionGroupCommand extends KritzelBaseCommand {
|
|
248
|
+
selectionGroup;
|
|
249
|
+
startX;
|
|
250
|
+
startY;
|
|
251
|
+
endX;
|
|
252
|
+
endY;
|
|
253
|
+
skipExecution;
|
|
245
254
|
constructor(store, initiator, startX, startY, endX, endY, skipFirstExecution = false, skipHistory = false) {
|
|
246
255
|
super(store, initiator, skipHistory);
|
|
247
256
|
this.startX = startX;
|
|
@@ -266,20 +275,26 @@ class MoveSelectionGroupCommand extends KritzelBaseCommand {
|
|
|
266
275
|
}
|
|
267
276
|
|
|
268
277
|
class KritzelBaseHandler {
|
|
278
|
+
_store;
|
|
269
279
|
constructor(store) {
|
|
270
280
|
this._store = store;
|
|
271
281
|
}
|
|
272
282
|
}
|
|
273
283
|
|
|
274
284
|
class KritzelMoveHandler extends KritzelBaseHandler {
|
|
285
|
+
dragStartX;
|
|
286
|
+
dragStartY;
|
|
287
|
+
startX;
|
|
288
|
+
startY;
|
|
289
|
+
endX;
|
|
290
|
+
endY;
|
|
275
291
|
constructor(store) {
|
|
276
292
|
super(store);
|
|
277
293
|
}
|
|
278
294
|
handlePointerDown(event) {
|
|
279
|
-
var _a, _b;
|
|
280
295
|
if (event.pointerType === 'mouse') {
|
|
281
296
|
if (KritzelEventHelper.isLeftClick(event)) {
|
|
282
|
-
if (
|
|
297
|
+
if (this._store.state.selectionGroup?.isSelected && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
|
|
283
298
|
const clientX = event.clientX - this._store.offsetX;
|
|
284
299
|
const clientY = event.clientY - this._store.offsetY;
|
|
285
300
|
this._store.state.isDragging = true;
|
|
@@ -293,7 +308,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
|
|
|
293
308
|
if (event.pointerType === 'touch') {
|
|
294
309
|
const activePointers = Array.from(this._store.state.pointers.values());
|
|
295
310
|
if (this._store.state.pointers.size === 1) {
|
|
296
|
-
if (
|
|
311
|
+
if (this._store.state.selectionGroup?.isSelected && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
|
|
297
312
|
const x = Math.round(activePointers[0].clientX - this._store.offsetX);
|
|
298
313
|
const y = Math.round(activePointers[0].clientY - this._store.offsetY);
|
|
299
314
|
this.dragStartX = x;
|
|
@@ -375,6 +390,9 @@ var KritzelHandleType;
|
|
|
375
390
|
})(KritzelHandleType || (KritzelHandleType = {}));
|
|
376
391
|
|
|
377
392
|
class ResizeSelectionGroupCommand extends KritzelBaseCommand {
|
|
393
|
+
newSize;
|
|
394
|
+
previousSize;
|
|
395
|
+
selectionGroup;
|
|
378
396
|
constructor(store, initiator, previousSize, newSize, skipHistory = false) {
|
|
379
397
|
super(store, initiator, skipHistory);
|
|
380
398
|
this.previousSize = previousSize;
|
|
@@ -392,12 +410,12 @@ class ResizeSelectionGroupCommand extends KritzelBaseCommand {
|
|
|
392
410
|
}
|
|
393
411
|
|
|
394
412
|
class KritzelResizeHandler extends KritzelBaseHandler {
|
|
413
|
+
initialMouseX = 0;
|
|
414
|
+
initialMouseY = 0;
|
|
415
|
+
initialSize = { x: 0, y: 0, width: 0, height: 0 };
|
|
416
|
+
newSize = { x: 0, y: 0, width: 0, height: 0 };
|
|
395
417
|
constructor(store) {
|
|
396
418
|
super(store);
|
|
397
|
-
this.initialMouseX = 0;
|
|
398
|
-
this.initialMouseY = 0;
|
|
399
|
-
this.initialSize = { x: 0, y: 0, width: 0, height: 0 };
|
|
400
|
-
this.newSize = { x: 0, y: 0, width: 0, height: 0 };
|
|
401
419
|
}
|
|
402
420
|
handlePointerDown(event) {
|
|
403
421
|
if (event.pointerType === 'mouse') {
|
|
@@ -521,7 +539,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
|
|
|
521
539
|
if (this._store.state.isResizing) {
|
|
522
540
|
const resizeSelectionGroupCommand = new ResizeSelectionGroupCommand(this._store, this, structuredClone(this.initialSize), structuredClone(this.newSize));
|
|
523
541
|
const updateObjectsCommand = this._store.state.selectionGroup.objects.map(object => {
|
|
524
|
-
return new UpdateObjectCommand(this._store, this, object,
|
|
542
|
+
return new UpdateObjectCommand(this._store, this, object, { ...object });
|
|
525
543
|
});
|
|
526
544
|
this._store.history.executeCommand(new BatchCommand(this._store, this, [resizeSelectionGroupCommand, ...updateObjectsCommand]));
|
|
527
545
|
this._store.state.isResizing = false;
|
|
@@ -532,7 +550,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
|
|
|
532
550
|
if (this._store.state.isResizing) {
|
|
533
551
|
const resizeSelectionGroupCommand = new ResizeSelectionGroupCommand(this._store, this, structuredClone(this.initialSize), structuredClone(this.newSize));
|
|
534
552
|
const updateObjectsCommand = this._store.state.selectionGroup.objects.map(object => {
|
|
535
|
-
return new UpdateObjectCommand(this._store, this, object,
|
|
553
|
+
return new UpdateObjectCommand(this._store, this, object, { ...object });
|
|
536
554
|
});
|
|
537
555
|
this._store.history.executeCommand(new BatchCommand(this._store, this, [resizeSelectionGroupCommand, ...updateObjectsCommand]));
|
|
538
556
|
this._store.state.isResizing = false;
|
|
@@ -544,6 +562,9 @@ class KritzelResizeHandler extends KritzelBaseHandler {
|
|
|
544
562
|
}
|
|
545
563
|
|
|
546
564
|
class RotateSelectionGroupCommand extends KritzelBaseCommand {
|
|
565
|
+
rotation;
|
|
566
|
+
initialRotation;
|
|
567
|
+
selectionGroup;
|
|
547
568
|
constructor(store, initiator, rotation, skipHistory = false) {
|
|
548
569
|
super(store, initiator, skipHistory);
|
|
549
570
|
this.rotation = rotation;
|
|
@@ -554,23 +575,23 @@ class RotateSelectionGroupCommand extends KritzelBaseCommand {
|
|
|
554
575
|
this._store.state.selectionGroup = this.selectionGroup;
|
|
555
576
|
this._store.state.selectionGroup.rotate(this.rotation);
|
|
556
577
|
this._store.state.selectionGroup.objects.forEach(object => {
|
|
557
|
-
this._store.state.
|
|
578
|
+
this._store.state.objectsMap.update(object);
|
|
558
579
|
});
|
|
559
580
|
}
|
|
560
581
|
undo() {
|
|
561
582
|
this._store.state.selectionGroup = this.selectionGroup;
|
|
562
583
|
this._store.state.selectionGroup.rotate(this.rotation - this.initialRotation);
|
|
563
584
|
this._store.state.selectionGroup.objects.forEach(object => {
|
|
564
|
-
this._store.state.
|
|
585
|
+
this._store.state.objectsMap.update(object);
|
|
565
586
|
});
|
|
566
587
|
}
|
|
567
588
|
}
|
|
568
589
|
|
|
569
590
|
class KritzelRotationHandler extends KritzelBaseHandler {
|
|
591
|
+
initialRotation = 0;
|
|
592
|
+
rotation = 0;
|
|
570
593
|
constructor(store) {
|
|
571
594
|
super(store);
|
|
572
|
-
this.initialRotation = 0;
|
|
573
|
-
this.rotation = 0;
|
|
574
595
|
}
|
|
575
596
|
handlePointerDown(event) {
|
|
576
597
|
if (event.pointerType === 'mouse') {
|
|
@@ -680,11 +701,8 @@ class KritzelRotationHandler extends KritzelBaseHandler {
|
|
|
680
701
|
}
|
|
681
702
|
|
|
682
703
|
class KrtizelSelectionBox extends KritzelBaseObject {
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
this.__class__ = 'KrtizelSelectionBox';
|
|
686
|
-
this.objects = [];
|
|
687
|
-
}
|
|
704
|
+
__class__ = 'KrtizelSelectionBox';
|
|
705
|
+
objects = [];
|
|
688
706
|
static create(store) {
|
|
689
707
|
const object = new KrtizelSelectionBox();
|
|
690
708
|
object._store = store;
|
|
@@ -702,24 +720,30 @@ class KrtizelSelectionBox extends KritzelBaseObject {
|
|
|
702
720
|
}
|
|
703
721
|
|
|
704
722
|
class AddSelectionGroupCommand extends KritzelBaseCommand {
|
|
723
|
+
selectionGroup;
|
|
705
724
|
constructor(store, initiator, selectionGroup, skipHistory = false) {
|
|
706
725
|
super(store, initiator, skipHistory);
|
|
707
726
|
this.selectionGroup = selectionGroup;
|
|
708
727
|
}
|
|
709
728
|
execute() {
|
|
710
|
-
this._store.state.
|
|
711
|
-
this._store.state.
|
|
729
|
+
this._store.state.objectsMap.remove(object => object instanceof KrtizelSelectionBox);
|
|
730
|
+
this._store.state.objectsMap.insert(this.selectionGroup);
|
|
712
731
|
this._store.state.selectionGroup = this.selectionGroup;
|
|
713
732
|
this._store.state.selectionBox = null;
|
|
714
733
|
}
|
|
715
734
|
undo() {
|
|
716
|
-
this._store.state.
|
|
735
|
+
this._store.state.objectsMap.remove(object => object.id === this.selectionGroup.id);
|
|
717
736
|
this._store.state.selectionGroup = null;
|
|
718
737
|
this._store.state.selectionBox = null;
|
|
719
738
|
}
|
|
720
739
|
}
|
|
721
740
|
|
|
722
741
|
class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
742
|
+
startX;
|
|
743
|
+
startY;
|
|
744
|
+
touchStartX = 0;
|
|
745
|
+
touchStartY = 0;
|
|
746
|
+
touchStartTimeout = null;
|
|
723
747
|
get isSelectionClick() {
|
|
724
748
|
return this._store.state.selectionBox && this._store.state.selectionBox.width === 0 && this._store.state.selectionBox.height === 0;
|
|
725
749
|
}
|
|
@@ -728,9 +752,6 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
|
728
752
|
}
|
|
729
753
|
constructor(store) {
|
|
730
754
|
super(store);
|
|
731
|
-
this.touchStartX = 0;
|
|
732
|
-
this.touchStartY = 0;
|
|
733
|
-
this.touchStartTimeout = null;
|
|
734
755
|
}
|
|
735
756
|
handlePointerDown(event) {
|
|
736
757
|
if (event.pointerType === 'mouse') {
|
|
@@ -805,7 +826,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
|
805
826
|
removeSelectionBox() {
|
|
806
827
|
this._store.state.selectionBox = null;
|
|
807
828
|
this._store.state.isSelecting = false;
|
|
808
|
-
this._store.state.
|
|
829
|
+
this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox);
|
|
809
830
|
this._store.rerender();
|
|
810
831
|
}
|
|
811
832
|
startMouseSelection(event) {
|
|
@@ -820,8 +841,8 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
|
820
841
|
this._store.state.selectionGroup = null;
|
|
821
842
|
this._store.state.selectionBox = selectionBox;
|
|
822
843
|
this._store.state.isSelecting = true;
|
|
823
|
-
this._store.state.
|
|
824
|
-
this._store.state.
|
|
844
|
+
this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
|
|
845
|
+
this._store.state.objectsMap.insert(selectionBox);
|
|
825
846
|
}
|
|
826
847
|
startTouchSelection() {
|
|
827
848
|
const activePointers = Array.from(this._store.state.pointers.values());
|
|
@@ -842,8 +863,8 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
|
|
|
842
863
|
this._store.state.selectionGroup = null;
|
|
843
864
|
this._store.state.selectionBox = selectionBox;
|
|
844
865
|
this._store.state.isSelecting = true;
|
|
845
|
-
this._store.state.
|
|
846
|
-
this._store.state.
|
|
866
|
+
this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
|
|
867
|
+
this._store.state.objectsMap.insert(selectionBox);
|
|
847
868
|
}
|
|
848
869
|
updateMouseSelection(event) {
|
|
849
870
|
let clientX, clientY;
|
|
@@ -931,6 +952,11 @@ class KritzelHoverHandler extends KritzelBaseHandler {
|
|
|
931
952
|
}
|
|
932
953
|
|
|
933
954
|
class KritzelSelectionTool extends KritzelBaseTool {
|
|
955
|
+
selectionHandler;
|
|
956
|
+
moveHandler;
|
|
957
|
+
hoverHandler;
|
|
958
|
+
resizeHandler;
|
|
959
|
+
rotationHandler;
|
|
934
960
|
constructor(store) {
|
|
935
961
|
super(store);
|
|
936
962
|
this.selectionHandler = new KritzelSelectionHandler(this._store);
|
|
@@ -956,7 +982,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
|
|
|
956
982
|
!this._store.state.isRotationHandleSelected) {
|
|
957
983
|
this._store.history.executeCommand(new RemoveSelectionGroupCommand(this._store, this._store.state.selectionGroup));
|
|
958
984
|
}
|
|
959
|
-
if (selectedObject && selectedObject.isSelected === false &&
|
|
985
|
+
if (selectedObject && selectedObject.isSelected === false && selectedObject?.objects.length === 1 && selectedObject.objects[0].isInteractive) {
|
|
960
986
|
return;
|
|
961
987
|
}
|
|
962
988
|
}
|
|
@@ -1039,7 +1065,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
|
|
|
1039
1065
|
getSelectedObject(event) {
|
|
1040
1066
|
const path = event.composedPath().slice(1);
|
|
1041
1067
|
const objectElement = path.find(element => element.classList && element.classList.contains('object'));
|
|
1042
|
-
const object = this._store.findObjectById(objectElement
|
|
1068
|
+
const object = this._store.findObjectById(objectElement?.id);
|
|
1043
1069
|
if (!object) {
|
|
1044
1070
|
return null;
|
|
1045
1071
|
}
|
|
@@ -1055,21 +1081,19 @@ class KritzelSelectionTool extends KritzelBaseTool {
|
|
|
1055
1081
|
}
|
|
1056
1082
|
}
|
|
1057
1083
|
getHandleType(event) {
|
|
1058
|
-
|
|
1059
|
-
const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
|
|
1084
|
+
const shadowRoot = this._store.state.host?.shadowRoot;
|
|
1060
1085
|
if (!shadowRoot)
|
|
1061
1086
|
return;
|
|
1062
1087
|
const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);
|
|
1063
|
-
const handle = elementAtPoint
|
|
1064
|
-
return handle
|
|
1088
|
+
const handle = elementAtPoint?.closest('.resize-handle-overlay');
|
|
1089
|
+
return handle?.classList[1];
|
|
1065
1090
|
}
|
|
1066
1091
|
isHandleSelected(event) {
|
|
1067
|
-
|
|
1068
|
-
const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
|
|
1092
|
+
const shadowRoot = this._store.state.host?.shadowRoot;
|
|
1069
1093
|
if (!shadowRoot)
|
|
1070
1094
|
return false;
|
|
1071
1095
|
const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);
|
|
1072
|
-
return !!
|
|
1096
|
+
return !!elementAtPoint?.classList.contains('resize-handle-overlay');
|
|
1073
1097
|
}
|
|
1074
1098
|
isRotationHandleSelected(event) {
|
|
1075
1099
|
const path = event.composedPath();
|
|
@@ -1078,6 +1102,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
|
|
|
1078
1102
|
}
|
|
1079
1103
|
|
|
1080
1104
|
class KritzelReviver {
|
|
1105
|
+
_store;
|
|
1081
1106
|
constructor(store) {
|
|
1082
1107
|
this._store = store;
|
|
1083
1108
|
}
|
|
@@ -1134,12 +1159,13 @@ class KritzelReviver {
|
|
|
1134
1159
|
}
|
|
1135
1160
|
|
|
1136
1161
|
class KritzelSelectionGroup extends KritzelBaseObject {
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1162
|
+
__class__ = 'KritzelSelectionGroup';
|
|
1163
|
+
objects = [];
|
|
1164
|
+
unchangedObjects = [];
|
|
1165
|
+
minX;
|
|
1166
|
+
maxX;
|
|
1167
|
+
minY;
|
|
1168
|
+
maxY;
|
|
1143
1169
|
get length() {
|
|
1144
1170
|
return this.objects.length;
|
|
1145
1171
|
}
|
|
@@ -1180,17 +1206,17 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
1180
1206
|
});
|
|
1181
1207
|
this.translateX = x;
|
|
1182
1208
|
this.translateY = y;
|
|
1183
|
-
this._store.state.
|
|
1209
|
+
this._store.state.objectsMap.update(this);
|
|
1184
1210
|
}
|
|
1185
1211
|
move(startX, startY, endX, endY) {
|
|
1186
1212
|
const deltaX = (startX - endX) / this._store.state.scale;
|
|
1187
1213
|
const deltaY = (startY - endY) / this._store.state.scale;
|
|
1188
1214
|
this.translateX += deltaX;
|
|
1189
1215
|
this.translateY += deltaY;
|
|
1190
|
-
this._store.state.
|
|
1216
|
+
this._store.state.objectsMap.update(this);
|
|
1191
1217
|
this.objects.forEach(obj => {
|
|
1192
1218
|
obj.move(startX, startY, endX, endY);
|
|
1193
|
-
this._store.state.
|
|
1219
|
+
this._store.state.objectsMap.update(obj);
|
|
1194
1220
|
});
|
|
1195
1221
|
this.unchangedObjects.forEach(obj => {
|
|
1196
1222
|
obj.translateX += deltaX;
|
|
@@ -1208,7 +1234,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
1208
1234
|
const updatedX = child.translateX + deltaX + (child.translateX - this.translateX) * (widthScaleFactor - 1);
|
|
1209
1235
|
const updatedY = child.translateY + deltaY + (child.translateY - this.translateY) * (heightScaleFactor - 1);
|
|
1210
1236
|
child.resize(updatedX, updatedY, updatedWidth, updatedHeight);
|
|
1211
|
-
this._store.state.
|
|
1237
|
+
this._store.state.objectsMap.update(child);
|
|
1212
1238
|
});
|
|
1213
1239
|
this.refreshObjectDimensions();
|
|
1214
1240
|
this.unchangedObjects = ObjectHelper.clone(this.objects);
|
|
@@ -1229,7 +1255,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
1229
1255
|
child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;
|
|
1230
1256
|
child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;
|
|
1231
1257
|
child.rotate(this.objects.length === 1 ? value : value + unchangedChild.rotation);
|
|
1232
|
-
this._store.state.
|
|
1258
|
+
this._store.state.objectsMap.update(child);
|
|
1233
1259
|
});
|
|
1234
1260
|
}
|
|
1235
1261
|
copy() {
|
|
@@ -1269,7 +1295,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
1269
1295
|
this.width = (this.maxX - this.minX - this.padding) * this.scale;
|
|
1270
1296
|
this.height = (this.maxY - this.minY - this.padding) * this.scale;
|
|
1271
1297
|
}
|
|
1272
|
-
this._store.state.
|
|
1298
|
+
this._store.state.objectsMap.update(this);
|
|
1273
1299
|
}
|
|
1274
1300
|
getOffsetXToCenter(obj) {
|
|
1275
1301
|
const objCenterX = obj.translateX + obj.totalWidth / obj.scale / 2;
|
|
@@ -1298,10 +1324,10 @@ class KritzelSelectionGroup extends KritzelBaseObject {
|
|
|
1298
1324
|
function _mergeNamespaces(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({__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";
|
|
1299
1325
|
|
|
1300
1326
|
class KritzelImageTool extends KritzelBaseTool {
|
|
1327
|
+
fileInput = null;
|
|
1328
|
+
maxCompressionSize = 300;
|
|
1301
1329
|
constructor(store) {
|
|
1302
1330
|
super(store);
|
|
1303
|
-
this.fileInput = null;
|
|
1304
|
-
this.maxCompressionSize = 300;
|
|
1305
1331
|
this.setupFileInput();
|
|
1306
1332
|
}
|
|
1307
1333
|
onActivate() {
|
|
@@ -1348,9 +1374,8 @@ class KritzelImageTool extends KritzelBaseTool {
|
|
|
1348
1374
|
readFile(file) {
|
|
1349
1375
|
const reader = new FileReader();
|
|
1350
1376
|
reader.onload = e => {
|
|
1351
|
-
var _a;
|
|
1352
1377
|
const img = new Image();
|
|
1353
|
-
img.src =
|
|
1378
|
+
img.src = e.target?.result;
|
|
1354
1379
|
img.onload = () => this.createKritzelImage(img);
|
|
1355
1380
|
};
|
|
1356
1381
|
reader.readAsDataURL(file);
|
|
@@ -1384,10 +1409,11 @@ const ABSOLUTE_SCALE_MAX = 1000;
|
|
|
1384
1409
|
const ABSOLUTE_SCALE_MIN = 0.0001;
|
|
1385
1410
|
|
|
1386
1411
|
class KritzelViewport {
|
|
1412
|
+
_store;
|
|
1413
|
+
initialTouchDistance = 0;
|
|
1414
|
+
startX = 0;
|
|
1415
|
+
startY = 0;
|
|
1387
1416
|
constructor(store, host) {
|
|
1388
|
-
this.initialTouchDistance = 0;
|
|
1389
|
-
this.startX = 0;
|
|
1390
|
-
this.startY = 0;
|
|
1391
1417
|
this._store = store;
|
|
1392
1418
|
this._store.state.host = host;
|
|
1393
1419
|
this._store.state.viewportWidth = host.clientWidth;
|
|
@@ -1534,6 +1560,8 @@ class KritzelViewport {
|
|
|
1534
1560
|
}
|
|
1535
1561
|
|
|
1536
1562
|
class UpdateViewportCommand extends KritzelBaseCommand {
|
|
1563
|
+
currentViewport;
|
|
1564
|
+
previousViewport;
|
|
1537
1565
|
constructor(store, initiator, previousViewport, skipHistory = false) {
|
|
1538
1566
|
super(store, initiator, skipHistory);
|
|
1539
1567
|
this.previousViewport = previousViewport;
|
|
@@ -1556,10 +1584,12 @@ class UpdateViewportCommand extends KritzelBaseCommand {
|
|
|
1556
1584
|
}
|
|
1557
1585
|
|
|
1558
1586
|
class KritzelCircularBuffer {
|
|
1587
|
+
buffer;
|
|
1588
|
+
capacity;
|
|
1589
|
+
head = 0;
|
|
1590
|
+
tail = 0;
|
|
1591
|
+
size = 0;
|
|
1559
1592
|
constructor(capacity) {
|
|
1560
|
-
this.head = 0;
|
|
1561
|
-
this.tail = 0;
|
|
1562
|
-
this.size = 0;
|
|
1563
1593
|
this.capacity = capacity;
|
|
1564
1594
|
this.buffer = new Array(capacity).fill(null);
|
|
1565
1595
|
}
|
|
@@ -1602,6 +1632,10 @@ class KritzelCircularBuffer {
|
|
|
1602
1632
|
}
|
|
1603
1633
|
|
|
1604
1634
|
class KritzelHistory {
|
|
1635
|
+
_store;
|
|
1636
|
+
undoStack;
|
|
1637
|
+
redoStack;
|
|
1638
|
+
previousViewport;
|
|
1605
1639
|
constructor(store) {
|
|
1606
1640
|
this._store = store;
|
|
1607
1641
|
this.undoStack = new KritzelCircularBuffer(this._store.state.historyBufferSize);
|
|
@@ -1683,128 +1717,13 @@ class KritzelHistory {
|
|
|
1683
1717
|
}
|
|
1684
1718
|
}
|
|
1685
1719
|
|
|
1686
|
-
class KritzelOctree {
|
|
1687
|
-
constructor(bounds, capacity = 8) {
|
|
1688
|
-
this.objects = [];
|
|
1689
|
-
this.children = null;
|
|
1690
|
-
this.bounds = bounds;
|
|
1691
|
-
this.capacity = capacity;
|
|
1692
|
-
}
|
|
1693
|
-
reset() {
|
|
1694
|
-
this.objects = [];
|
|
1695
|
-
this.children = null;
|
|
1696
|
-
}
|
|
1697
|
-
insert(object) {
|
|
1698
|
-
if (!this.intersects(object.rotatedBoundingBox, this.bounds)) {
|
|
1699
|
-
return false;
|
|
1700
|
-
}
|
|
1701
|
-
if (this.objects.length < this.capacity && this.children === null) {
|
|
1702
|
-
this.objects.push(object);
|
|
1703
|
-
return true;
|
|
1704
|
-
}
|
|
1705
|
-
if (this.children === null) {
|
|
1706
|
-
this.subdivide();
|
|
1707
|
-
}
|
|
1708
|
-
for (const child of this.children) {
|
|
1709
|
-
if (child.insert(object)) {
|
|
1710
|
-
return true;
|
|
1711
|
-
}
|
|
1712
|
-
}
|
|
1713
|
-
return false;
|
|
1714
|
-
}
|
|
1715
|
-
update(object) {
|
|
1716
|
-
const index = this.objects.findIndex(o => o.id === object.id);
|
|
1717
|
-
if (index !== -1) {
|
|
1718
|
-
this.objects[index] = object;
|
|
1719
|
-
return true;
|
|
1720
|
-
}
|
|
1721
|
-
if (this.children !== null) {
|
|
1722
|
-
for (const child of this.children) {
|
|
1723
|
-
if (child.update(object)) {
|
|
1724
|
-
return true;
|
|
1725
|
-
}
|
|
1726
|
-
}
|
|
1727
|
-
}
|
|
1728
|
-
return false;
|
|
1729
|
-
}
|
|
1730
|
-
remove(predicate) {
|
|
1731
|
-
const index = this.objects.findIndex(o => predicate(o));
|
|
1732
|
-
if (index !== -1) {
|
|
1733
|
-
this.objects.splice(index, 1);
|
|
1734
|
-
}
|
|
1735
|
-
if (this.children !== null) {
|
|
1736
|
-
for (const child of this.children) {
|
|
1737
|
-
child.remove(predicate);
|
|
1738
|
-
}
|
|
1739
|
-
}
|
|
1740
|
-
}
|
|
1741
|
-
query(range) {
|
|
1742
|
-
const results = [];
|
|
1743
|
-
if (!this.intersects(range, this.bounds)) {
|
|
1744
|
-
return results;
|
|
1745
|
-
}
|
|
1746
|
-
for (const object of this.objects) {
|
|
1747
|
-
if (this.intersects(object.rotatedBoundingBox, range)) {
|
|
1748
|
-
results.push(object);
|
|
1749
|
-
}
|
|
1750
|
-
}
|
|
1751
|
-
if (this.children !== null) {
|
|
1752
|
-
for (const child of this.children) {
|
|
1753
|
-
results.push(...child.query(range));
|
|
1754
|
-
}
|
|
1755
|
-
}
|
|
1756
|
-
return results;
|
|
1757
|
-
}
|
|
1758
|
-
filter(predicate) {
|
|
1759
|
-
const results = this.objects.filter(o => predicate(o));
|
|
1760
|
-
if (this.children !== null) {
|
|
1761
|
-
for (const child of this.children) {
|
|
1762
|
-
results.push(...child.filter(predicate));
|
|
1763
|
-
}
|
|
1764
|
-
}
|
|
1765
|
-
return results;
|
|
1766
|
-
}
|
|
1767
|
-
allObjects() {
|
|
1768
|
-
const results = [...this.objects];
|
|
1769
|
-
if (this.children !== null) {
|
|
1770
|
-
for (const child of this.children) {
|
|
1771
|
-
results.push(...child.allObjects());
|
|
1772
|
-
}
|
|
1773
|
-
}
|
|
1774
|
-
return results;
|
|
1775
|
-
}
|
|
1776
|
-
subdivide() {
|
|
1777
|
-
const { x, y, z, width, height, depth } = this.bounds;
|
|
1778
|
-
const halfWidth = width / 2;
|
|
1779
|
-
const halfHeight = height / 2;
|
|
1780
|
-
const halfDepth = depth / 2;
|
|
1781
|
-
this.children = [
|
|
1782
|
-
new KritzelOctree({ x, y, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
|
|
1783
|
-
new KritzelOctree({ x: x + halfWidth, y, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
|
|
1784
|
-
new KritzelOctree({ x, y: y + halfHeight, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
|
|
1785
|
-
new KritzelOctree({ x: x + halfWidth, y: y + halfHeight, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
|
|
1786
|
-
new KritzelOctree({ x, y, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
|
|
1787
|
-
new KritzelOctree({ x: x + halfWidth, y, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
|
|
1788
|
-
new KritzelOctree({ x, y: y + halfHeight, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
|
|
1789
|
-
new KritzelOctree({ x: x + halfWidth, y: y + halfHeight, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
|
|
1790
|
-
];
|
|
1791
|
-
}
|
|
1792
|
-
intersects(a, b) {
|
|
1793
|
-
return !(a.x >= b.x + b.width || // a is completely to the right of b
|
|
1794
|
-
a.x + a.width <= b.x || // a is completely to the left of b
|
|
1795
|
-
a.y >= b.y + b.height || // a is completely below b
|
|
1796
|
-
a.y + a.height <= b.y // a is completely above b
|
|
1797
|
-
);
|
|
1798
|
-
}
|
|
1799
|
-
}
|
|
1800
|
-
|
|
1801
1720
|
const DEFAULT_ENGINE_STATE = {
|
|
1802
1721
|
activeWorkspace: null,
|
|
1803
1722
|
activeTool: null,
|
|
1804
1723
|
activeText: null,
|
|
1805
1724
|
currentPath: null,
|
|
1806
1725
|
copiedObjects: null,
|
|
1807
|
-
|
|
1726
|
+
objectsMap: null,
|
|
1808
1727
|
selectionBox: null,
|
|
1809
1728
|
selectionGroup: null,
|
|
1810
1729
|
resizeHandleType: null,
|
|
@@ -1860,8 +1779,11 @@ const DEFAULT_ENGINE_STATE = {
|
|
|
1860
1779
|
};
|
|
1861
1780
|
|
|
1862
1781
|
class KritzelDatabase {
|
|
1782
|
+
db = null;
|
|
1783
|
+
dbName;
|
|
1784
|
+
dbVersion;
|
|
1785
|
+
isLoggingEnabled;
|
|
1863
1786
|
constructor(dbName, dbVersion, isLoggingEnabled = false) {
|
|
1864
|
-
this.db = null;
|
|
1865
1787
|
this.dbName = dbName;
|
|
1866
1788
|
this.dbVersion = dbVersion;
|
|
1867
1789
|
this.isLoggingEnabled = isLoggingEnabled;
|
|
@@ -1986,8 +1908,7 @@ class KritzelDatabase {
|
|
|
1986
1908
|
resolve(requestResult);
|
|
1987
1909
|
};
|
|
1988
1910
|
transaction.onabort = () => {
|
|
1989
|
-
|
|
1990
|
-
reject((_a = transaction.error) !== null && _a !== void 0 ? _a : new Error('Transaction aborted'));
|
|
1911
|
+
reject(transaction.error ?? new Error('Transaction aborted'));
|
|
1991
1912
|
};
|
|
1992
1913
|
transaction.onerror = () => {
|
|
1993
1914
|
reject(transaction.error);
|
|
@@ -2045,9 +1966,8 @@ class KritzelDatabase {
|
|
|
2045
1966
|
Promise.all(promises).then(() => resolve(results));
|
|
2046
1967
|
};
|
|
2047
1968
|
transaction.onabort = () => {
|
|
2048
|
-
var _a;
|
|
2049
1969
|
console.error('[IndexedDB] Batch transaction aborted:', transaction.error);
|
|
2050
|
-
reject(
|
|
1970
|
+
reject(transaction.error ?? new Error('Transaction aborted'));
|
|
2051
1971
|
};
|
|
2052
1972
|
transaction.onerror = () => {
|
|
2053
1973
|
console.error('[IndexedDB] Batch transaction error:', transaction.error);
|
|
@@ -2086,7 +2006,56 @@ class KritzelDatabase {
|
|
|
2086
2006
|
}
|
|
2087
2007
|
}
|
|
2088
2008
|
|
|
2009
|
+
class KritzelObjectMap {
|
|
2010
|
+
map;
|
|
2011
|
+
constructor() {
|
|
2012
|
+
this.map = new Map();
|
|
2013
|
+
}
|
|
2014
|
+
reset() {
|
|
2015
|
+
this.map.clear();
|
|
2016
|
+
}
|
|
2017
|
+
insert(object) {
|
|
2018
|
+
if (!object.id) {
|
|
2019
|
+
return false;
|
|
2020
|
+
}
|
|
2021
|
+
this.map.set(object.id, object);
|
|
2022
|
+
return true;
|
|
2023
|
+
}
|
|
2024
|
+
update(object) {
|
|
2025
|
+
if (!object.id || !this.map.has(object.id)) {
|
|
2026
|
+
return false;
|
|
2027
|
+
}
|
|
2028
|
+
this.map.set(object.id, object);
|
|
2029
|
+
return true;
|
|
2030
|
+
}
|
|
2031
|
+
remove(predicate) {
|
|
2032
|
+
for (const [id, object] of this.map) {
|
|
2033
|
+
if (predicate(object)) {
|
|
2034
|
+
this.map.delete(id);
|
|
2035
|
+
}
|
|
2036
|
+
}
|
|
2037
|
+
}
|
|
2038
|
+
filter(predicate) {
|
|
2039
|
+
const results = [];
|
|
2040
|
+
for (const object of this.map.values()) {
|
|
2041
|
+
if (predicate(object)) {
|
|
2042
|
+
results.push(object);
|
|
2043
|
+
}
|
|
2044
|
+
}
|
|
2045
|
+
return results;
|
|
2046
|
+
}
|
|
2047
|
+
allObjects() {
|
|
2048
|
+
return Array.from(this.map.values());
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
|
|
2089
2052
|
class KritzelStore {
|
|
2053
|
+
_kritzelEngine;
|
|
2054
|
+
_state;
|
|
2055
|
+
_history;
|
|
2056
|
+
_database;
|
|
2057
|
+
_listeners = new Map();
|
|
2058
|
+
objects = [];
|
|
2090
2059
|
get history() {
|
|
2091
2060
|
return this._history;
|
|
2092
2061
|
}
|
|
@@ -2097,10 +2066,10 @@ class KritzelStore {
|
|
|
2097
2066
|
return this._state;
|
|
2098
2067
|
}
|
|
2099
2068
|
get currentZIndex() {
|
|
2100
|
-
return this._state.
|
|
2069
|
+
return this._state.objectsMap.filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox)).length;
|
|
2101
2070
|
}
|
|
2102
2071
|
get allObjects() {
|
|
2103
|
-
return this._state.
|
|
2072
|
+
return this._state.objectsMap.allObjects();
|
|
2104
2073
|
}
|
|
2105
2074
|
get selectedObjects() {
|
|
2106
2075
|
return this.allObjects.filter(o => !(o instanceof KritzelSelectionGroup)).filter(o => o.isSelected);
|
|
@@ -2115,20 +2084,11 @@ class KritzelStore {
|
|
|
2115
2084
|
return this._state.isEnabled === false || this._state.isReady === false || this._state.activeWorkspace === null;
|
|
2116
2085
|
}
|
|
2117
2086
|
constructor(kritzelEngine) {
|
|
2118
|
-
this._listeners = new Map();
|
|
2119
|
-
this.objects = [];
|
|
2120
2087
|
this._state = DEFAULT_ENGINE_STATE;
|
|
2121
2088
|
this._kritzelEngine = kritzelEngine;
|
|
2122
2089
|
this._history = new KritzelHistory(this);
|
|
2123
2090
|
this._database = new KritzelDatabase('kritzelDB', 1, this._state.debugInfo.logDatabase);
|
|
2124
|
-
this._state.
|
|
2125
|
-
x: -Infinity,
|
|
2126
|
-
y: -Infinity,
|
|
2127
|
-
z: -Infinity,
|
|
2128
|
-
width: Infinity,
|
|
2129
|
-
height: Infinity,
|
|
2130
|
-
depth: Infinity,
|
|
2131
|
-
});
|
|
2091
|
+
this._state.objectsMap = new KritzelObjectMap();
|
|
2132
2092
|
}
|
|
2133
2093
|
async initializeDatabase() {
|
|
2134
2094
|
await this._database.open([
|
|
@@ -2141,11 +2101,10 @@ class KritzelStore {
|
|
|
2141
2101
|
this.rerender();
|
|
2142
2102
|
}
|
|
2143
2103
|
async initializeWorkspace(workspace) {
|
|
2144
|
-
var _a;
|
|
2145
2104
|
const workspaces = await this.getWorkspaces();
|
|
2146
2105
|
const mostRecentWorkspace = [...workspaces].sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime())[0];
|
|
2147
2106
|
const fallbackWorkspace = new KritzelWorkspace(ObjectHelper.generateUUID(), 'New Workspace');
|
|
2148
|
-
this._state.activeWorkspace =
|
|
2107
|
+
this._state.activeWorkspace = workspace ?? mostRecentWorkspace ?? fallbackWorkspace;
|
|
2149
2108
|
const isExistingWorkspace = await this.getWorkspace(this._state.activeWorkspace.id);
|
|
2150
2109
|
if (isExistingWorkspace) {
|
|
2151
2110
|
await this.updateWorkspace(this._state.activeWorkspace);
|
|
@@ -2160,13 +2119,13 @@ class KritzelStore {
|
|
|
2160
2119
|
await this.initializeWorkspaceObjects(this._state.activeWorkspace.id);
|
|
2161
2120
|
}
|
|
2162
2121
|
async initializeWorkspaceObjects(workspaceId) {
|
|
2163
|
-
this._state.
|
|
2122
|
+
this._state.objectsMap.reset();
|
|
2164
2123
|
this._history.reset();
|
|
2165
2124
|
const objectsFromDb = await this._database.getAllByRange('objects', IDBKeyRange.bound([workspaceId], [workspaceId, '\uffff']));
|
|
2166
2125
|
const reviver = new KritzelReviver(this);
|
|
2167
2126
|
objectsFromDb.forEach(element => {
|
|
2168
2127
|
const revivedObject = reviver.revive(element);
|
|
2169
|
-
this._state.
|
|
2128
|
+
this._state.objectsMap.insert(revivedObject);
|
|
2170
2129
|
});
|
|
2171
2130
|
this.rerender();
|
|
2172
2131
|
}
|
|
@@ -2257,6 +2216,7 @@ class KritzelStore {
|
|
|
2257
2216
|
const objectRange = IDBKeyRange.bound([workspace.id], [workspace.id, '\uffff']);
|
|
2258
2217
|
await this._database.deleteByRange('objects', objectRange);
|
|
2259
2218
|
await this._database.delete('workspaces', workspace.id);
|
|
2219
|
+
this.state.workspaces = this.state.workspaces.filter(ws => ws.id !== workspace.id);
|
|
2260
2220
|
}
|
|
2261
2221
|
rerender() {
|
|
2262
2222
|
if (this._kritzelEngine) {
|
|
@@ -2382,15 +2342,8 @@ class KritzelStore {
|
|
|
2382
2342
|
this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));
|
|
2383
2343
|
}
|
|
2384
2344
|
selectAllObjectsInViewport() {
|
|
2385
|
-
const objectsInViewport = this._state.
|
|
2386
|
-
.
|
|
2387
|
-
x: -this._state.translateX / this._state.scale,
|
|
2388
|
-
y: -this._state.translateY / this._state.scale,
|
|
2389
|
-
z: this._state.scale,
|
|
2390
|
-
width: this._state.viewportWidth / this._state.scale,
|
|
2391
|
-
height: this._state.viewportHeight / this._state.scale,
|
|
2392
|
-
depth: 100,
|
|
2393
|
-
})
|
|
2345
|
+
const objectsInViewport = this._state.objectsMap
|
|
2346
|
+
.filter(o => o.isInViewport())
|
|
2394
2347
|
.filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox) && !(o instanceof KritzelContextMenu));
|
|
2395
2348
|
if (objectsInViewport.length > 0) {
|
|
2396
2349
|
const selectionGroup = KritzelSelectionGroup.create(this);
|
|
@@ -2423,8 +2376,7 @@ class KritzelStore {
|
|
|
2423
2376
|
this.state.activeText = null;
|
|
2424
2377
|
}
|
|
2425
2378
|
getObjectFromPointerEvent(event, selector = '.object') {
|
|
2426
|
-
|
|
2427
|
-
const shadowRoot = (_a = this.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
|
|
2379
|
+
const shadowRoot = this.state.host?.shadowRoot;
|
|
2428
2380
|
if (!shadowRoot)
|
|
2429
2381
|
return null;
|
|
2430
2382
|
const clientX = event.clientX;
|
|
@@ -2439,8 +2391,7 @@ class KritzelStore {
|
|
|
2439
2391
|
return null;
|
|
2440
2392
|
}
|
|
2441
2393
|
getObjectsFromPointerEvent(event, selector = '.object') {
|
|
2442
|
-
|
|
2443
|
-
const shadowRoot = (_a = this.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
|
|
2394
|
+
const shadowRoot = this.state.host?.shadowRoot;
|
|
2444
2395
|
if (!shadowRoot)
|
|
2445
2396
|
return [];
|
|
2446
2397
|
const clientX = event.clientX;
|
|
@@ -2558,10 +2509,10 @@ class KritzelKeyHandler extends KritzelBaseHandler {
|
|
|
2558
2509
|
}
|
|
2559
2510
|
|
|
2560
2511
|
class KritzelContextMenuHandler extends KritzelBaseHandler {
|
|
2512
|
+
globalContextMenuItems = [];
|
|
2513
|
+
objectContextMenuItems = [];
|
|
2561
2514
|
constructor(store, globalContextMenuItems, objectContextMenuItems) {
|
|
2562
2515
|
super(store);
|
|
2563
|
-
this.globalContextMenuItems = [];
|
|
2564
|
-
this.objectContextMenuItems = [];
|
|
2565
2516
|
this.globalContextMenuItems = globalContextMenuItems;
|
|
2566
2517
|
this.objectContextMenuItems = objectContextMenuItems;
|
|
2567
2518
|
}
|
|
@@ -2610,6 +2561,17 @@ class KritzelClassHelper {
|
|
|
2610
2561
|
const kritzelEngineCss = ":host{display:block;position:relative;height:100%;width:100%;overflow:hidden;background-color:var(--kritzel-engine-background-color, #ffffff)}:host,:host *{touch-action:none;user-select:none}.debug-panel{position:absolute;pointer-events:none;top:0;right:0}.origin{position:relative;top:0;left:0;height:0;width:0;pointer-events:none;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top left;overflow:visible}.object{overflow:visible}textarea{all:unset;box-sizing:border-box;outline:none !important;border:none !important;overflow:visible}.resize-handle-overlay.top-left,.resize-handle-overlay.bottom-right{cursor:nwse-resize}.resize-handle-overlay.top-right,.resize-handle-overlay.bottom-left{cursor:nesw-resize}.rotation-handle-overlay{cursor:grab}";
|
|
2611
2562
|
|
|
2612
2563
|
const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine extends H {
|
|
2564
|
+
workspace;
|
|
2565
|
+
activeTool;
|
|
2566
|
+
globalContextMenuItems;
|
|
2567
|
+
objectContextMenuItems;
|
|
2568
|
+
scaleMax = ABSOLUTE_SCALE_MAX;
|
|
2569
|
+
scaleMin = ABSOLUTE_SCALE_MIN;
|
|
2570
|
+
isEngineReady;
|
|
2571
|
+
activeToolChange;
|
|
2572
|
+
workspacesChange;
|
|
2573
|
+
get host() { return this; }
|
|
2574
|
+
forceUpdate = 0;
|
|
2613
2575
|
onWorkspaceChange(newWorkspace) {
|
|
2614
2576
|
if (newWorkspace) {
|
|
2615
2577
|
this.store.initializeWorkspace(newWorkspace);
|
|
@@ -2635,6 +2597,11 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
|
|
|
2635
2597
|
this.store.state.scaleMin = newValue;
|
|
2636
2598
|
}
|
|
2637
2599
|
}
|
|
2600
|
+
store;
|
|
2601
|
+
viewport;
|
|
2602
|
+
contextMenuHandler;
|
|
2603
|
+
keyHandler;
|
|
2604
|
+
contextMenuElement = null;
|
|
2638
2605
|
get isSelecting() {
|
|
2639
2606
|
return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.isSelecting;
|
|
2640
2607
|
}
|
|
@@ -2650,10 +2617,6 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
|
|
|
2650
2617
|
this.isEngineReady = createEvent(this, "isEngineReady");
|
|
2651
2618
|
this.activeToolChange = createEvent(this, "activeToolChange");
|
|
2652
2619
|
this.workspacesChange = createEvent(this, "workspacesChange");
|
|
2653
|
-
this.scaleMax = ABSOLUTE_SCALE_MAX;
|
|
2654
|
-
this.scaleMin = ABSOLUTE_SCALE_MIN;
|
|
2655
|
-
this.forceUpdate = 0;
|
|
2656
|
-
this.contextMenuElement = null;
|
|
2657
2620
|
this.store = new KritzelStore(this);
|
|
2658
2621
|
}
|
|
2659
2622
|
componentWillLoad() {
|
|
@@ -2673,7 +2636,6 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
|
|
|
2673
2636
|
}
|
|
2674
2637
|
}
|
|
2675
2638
|
handleWheel(ev) {
|
|
2676
|
-
var _a, _b;
|
|
2677
2639
|
if (this.store.isDisabled) {
|
|
2678
2640
|
return;
|
|
2679
2641
|
}
|
|
@@ -2681,10 +2643,9 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
|
|
|
2681
2643
|
this.hideContextMenu();
|
|
2682
2644
|
}
|
|
2683
2645
|
this.viewport.handleWheel(ev);
|
|
2684
|
-
|
|
2646
|
+
this.store.state?.activeTool?.handleWheel(ev);
|
|
2685
2647
|
}
|
|
2686
2648
|
handlePointerDown(ev) {
|
|
2687
|
-
var _a, _b;
|
|
2688
2649
|
if (this.store.isDisabled) {
|
|
2689
2650
|
return;
|
|
2690
2651
|
}
|
|
@@ -2701,36 +2662,33 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
|
|
|
2701
2662
|
this.host.setPointerCapture(ev.pointerId);
|
|
2702
2663
|
this.store.state.pointers.set(ev.pointerId, ev);
|
|
2703
2664
|
this.viewport.handlePointerDown(ev);
|
|
2704
|
-
|
|
2665
|
+
this.store.state?.activeTool?.handlePointerDown(ev);
|
|
2705
2666
|
}
|
|
2706
2667
|
handlePointerMove(ev) {
|
|
2707
|
-
var _a, _b;
|
|
2708
2668
|
if (this.store.isDisabled) {
|
|
2709
2669
|
return;
|
|
2710
2670
|
}
|
|
2711
2671
|
this.store.state.pointers.set(ev.pointerId, ev);
|
|
2712
2672
|
this.viewport.handlePointerMove(ev);
|
|
2713
|
-
|
|
2673
|
+
this.store.state?.activeTool?.handlePointerMove(ev);
|
|
2714
2674
|
}
|
|
2715
2675
|
handlePointerUp(ev) {
|
|
2716
|
-
var _a, _b;
|
|
2717
2676
|
if (this.store.isDisabled) {
|
|
2718
2677
|
return;
|
|
2719
2678
|
}
|
|
2720
2679
|
this.store.state.pointers.delete(ev.pointerId);
|
|
2721
2680
|
this.host.releasePointerCapture(ev.pointerId);
|
|
2722
2681
|
this.viewport.handlePointerUp(ev);
|
|
2723
|
-
|
|
2682
|
+
this.store.state?.activeTool?.handlePointerUp(ev);
|
|
2724
2683
|
}
|
|
2725
2684
|
handlePointerCancel(ev) {
|
|
2726
|
-
var _a, _b;
|
|
2727
2685
|
if (this.store.isDisabled) {
|
|
2728
2686
|
return;
|
|
2729
2687
|
}
|
|
2730
2688
|
this.host.releasePointerCapture(ev.pointerId);
|
|
2731
2689
|
this.store.state.pointers.delete(ev.pointerId);
|
|
2732
2690
|
this.viewport.handlePointerUp(ev);
|
|
2733
|
-
|
|
2691
|
+
this.store.state?.activeTool?.handlePointerUp(ev);
|
|
2734
2692
|
}
|
|
2735
2693
|
handleContextMenu(ev) {
|
|
2736
2694
|
ev.preventDefault();
|
|
@@ -2779,11 +2737,10 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
|
|
|
2779
2737
|
return Promise.resolve(registeredTool);
|
|
2780
2738
|
}
|
|
2781
2739
|
async changeActiveTool(tool) {
|
|
2782
|
-
|
|
2783
|
-
(_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
|
|
2740
|
+
this.store.state.activeTool?.onDeactivate();
|
|
2784
2741
|
this.store.setState('activeTool', tool);
|
|
2785
2742
|
this.store.deselectAllObjects();
|
|
2786
|
-
tool
|
|
2743
|
+
tool?.onActivate();
|
|
2787
2744
|
}
|
|
2788
2745
|
async setFocus() {
|
|
2789
2746
|
this.host.focus();
|
|
@@ -2860,15 +2817,13 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
|
|
|
2860
2817
|
return this.store.state.selectionGroup ? this.store.state.selectionGroup.objects : [];
|
|
2861
2818
|
}
|
|
2862
2819
|
async selectObjects(objects) {
|
|
2863
|
-
|
|
2864
|
-
(_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
|
|
2820
|
+
this.store.state.activeTool?.onDeactivate();
|
|
2865
2821
|
this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
2866
2822
|
this.store.deselectAllObjects();
|
|
2867
2823
|
this.store.selectObjects(objects);
|
|
2868
2824
|
}
|
|
2869
2825
|
async selectAllObjectsInViewport() {
|
|
2870
|
-
|
|
2871
|
-
(_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
|
|
2826
|
+
this.store.state.activeTool?.onDeactivate();
|
|
2872
2827
|
this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
2873
2828
|
this.store.deselectAllObjects();
|
|
2874
2829
|
this.store.selectAllObjectsInViewport();
|
|
@@ -2883,8 +2838,7 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
|
|
|
2883
2838
|
return object;
|
|
2884
2839
|
}
|
|
2885
2840
|
async getCopiedObjects() {
|
|
2886
|
-
|
|
2887
|
-
return ((_a = this.store.state.copiedObjects) === null || _a === void 0 ? void 0 : _a.objects) || [];
|
|
2841
|
+
return this.store.state.copiedObjects?.objects || [];
|
|
2888
2842
|
}
|
|
2889
2843
|
async createWorkspace(workspace) {
|
|
2890
2844
|
return this.store.createWorkspace(workspace).then(() => {
|
|
@@ -2897,8 +2851,8 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
|
|
|
2897
2851
|
});
|
|
2898
2852
|
}
|
|
2899
2853
|
async deleteWorkspace(workspace) {
|
|
2900
|
-
return this.store.deleteWorkspace(workspace).then(() => {
|
|
2901
|
-
this.workspacesChange.emit(this.store.state.workspaces
|
|
2854
|
+
return this.store.deleteWorkspace(workspace).then(async () => {
|
|
2855
|
+
this.workspacesChange.emit(this.store.state.workspaces);
|
|
2902
2856
|
});
|
|
2903
2857
|
}
|
|
2904
2858
|
async getWorkspaces() {
|
|
@@ -2922,149 +2876,134 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
|
|
|
2922
2876
|
}
|
|
2923
2877
|
}
|
|
2924
2878
|
render() {
|
|
2925
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8;
|
|
2926
2879
|
const computedStyle = window.getComputedStyle(this.host);
|
|
2927
2880
|
const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
|
|
2928
2881
|
const baseHandleSize = parseFloat(baseHandleSizePx);
|
|
2929
2882
|
const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
|
|
2930
|
-
return (h(Host, { key: '
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth / 2, y1: "0", x2: object.totalWidth / 2, y2: -((15 * object.scale) / ((_p = this.store.state) === null || _p === void 0 ? void 0 : _p.scale)), style: {
|
|
3035
|
-
stroke: 'var(--kritzel-selection-border-color, #007AFF)',
|
|
3036
|
-
strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_q = this.store.state) === null || _q === void 0 ? void 0 : _q.scale})`,
|
|
3037
|
-
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_r = this.store.state) === null || _r === void 0 ? void 0 : _r.scale)), r: `${(baseHandleSize * object.scale) / ((_s = this.store.state) === null || _s === void 0 ? void 0 : _s.scale)}`, style: {
|
|
3038
|
-
fill: 'var(--kritzel-selection-handle-color, #000000)',
|
|
3039
|
-
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle-overlay", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_t = this.store.state) === null || _t === void 0 ? void 0 : _t.scale)), r: `${(baseHandleTouchSize * object.scale) / ((_u = this.store.state) === null || _u === void 0 ? void 0 : _u.scale)}`, style: {
|
|
3040
|
-
fill: 'transparent',
|
|
3041
|
-
cursor: 'grab',
|
|
3042
|
-
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("g", { style: { display: this.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' } }, h("foreignObject", { x: object.totalWidth.toString(), y: "0", width: "400px", height: "160px", style: { minHeight: '0', minWidth: '0', display: object.isDebugInfoVisible ? 'block' : 'none' } }, h("div", { style: { width: '100%', height: '100%' } }, h("div", { style: { whiteSpace: 'nowrap' } }, "zIndex: ", object.zIndex), h("div", { style: { whiteSpace: 'nowrap' } }, "translateX: ", object.translateX), h("div", { style: { whiteSpace: 'nowrap' } }, "translateY: ", object.translateY), h("div", { style: { whiteSpace: 'nowrap' } }, "width: ", object.width), h("div", { style: { whiteSpace: 'nowrap' } }, "height: ", object.height), h("div", { style: { whiteSpace: 'nowrap' } }, "scale: ", object.scale), h("div", { style: { whiteSpace: 'nowrap' } }, "rotation: ", object.rotation), h("div", { style: { whiteSpace: 'nowrap' } }, "x: ", object.x), h("div", { style: { whiteSpace: 'nowrap' } }, "y: ", object.y)))))));
|
|
3043
|
-
}), h("svg", { key: '86f9a08bea3ac2d261b14b2eec471fafd20ca11f', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
|
|
3044
|
-
height: (_z = this.store.state.currentPath) === null || _z === void 0 ? void 0 : _z.height.toString(),
|
|
3045
|
-
width: (_0 = this.store.state.currentPath) === null || _0 === void 0 ? void 0 : _0.width.toString(),
|
|
2883
|
+
return (h(Host, { key: 'fd353ff17bcde1a9ab646b6f463d1c6ce00a3dff' }, h("div", { key: '45bc2af8f1a3a2bfa3aa76a478c7bf208027da0c', class: "debug-panel", style: { display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: '50e932febc35c7dbe852ad99d96ca4f0e0b742fc' }, "ActiveWorkspaceId: ", this.store.state?.activeWorkspace?.id), h("div", { key: 'af94b5061f0803588fece6cccdf540f46f13ca05' }, "ActiveWorkspaceName: ", this.store.state?.activeWorkspace?.name), h("div", { key: '89c0d21ce94f4eda72153554fadbd6942e785edc' }, "TranslateX: ", this.store.state?.translateX), h("div", { key: '340b5165265241972a7a940268c7940063ba8c12' }, "TranslateY: ", this.store.state?.translateY), h("div", { key: '428054b3ea4a1c327f03d6b37bfe6331dea6c57b' }, "ViewportWidth: ", this.store.state?.viewportWidth), h("div", { key: 'd67420ef633627413066a28b8ef9ac43c520015d' }, "ViewportHeight: ", this.store.state?.viewportHeight), h("div", { key: 'dedf9eb89c79fa496f7b6d0df9c646898f66b3d4' }, "ObjectsInViewport. ", this.store.objects.length), h("div", { key: '59bb8416941fd84305f2892f24098f6f4a084401' }, "Scale: ", this.store.state?.scale), h("div", { key: '6705a4cec22e4e33f75e296e17bc2952a3d1cba7' }, "ActiveTool: ", this.store.state?.activeTool?.name), h("div", { key: 'ca22e0a377a11fdca851b38f1bf425648cd3b9dd' }, "HasViewportChanged: ", this.store.state?.hasViewportChanged ? 'true' : 'false'), h("div", { key: '57508b9ee24a5af631e6bb1eace404c39af14f82' }, "IsEnabled: ", this.store.state?.isEnabled ? 'true' : 'false'), h("div", { key: 'f6cea367b5007f767afb25a033215abda734de9d' }, "IsScaling: ", this.store.state?.isScaling ? 'true' : 'false'), h("div", { key: '4386ef749facd2e54da7f58aa2713b87ed76f2df' }, "IsPanning: ", this.store.state?.isPanning ? 'true' : 'false'), h("div", { key: '1713185b36a50dfe0f9efa0c92394222db80a377' }, "IsFocused: ", this.store.state.isFocused ? 'true' : 'false'), h("div", { key: '5104f428b808e7d843712302ad2e58b619876bee' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: '2cb3b27a00627188e7082fa94169eb961a1ae6ed' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: '7407656e61be665f27e706738faa6d318e2c1d04' }, "IsResizeHandleSelected: ", this.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '701bf05c25cb3d3728af6602f694e6064627ea59' }, "IsRotationHandleSelected: ", this.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: '772c345ea9c64ef800fdbb26919f1a54ca889025' }, "IsDrawing: ", this.store.state.isDrawing ? 'true' : 'false'), h("div", { key: 'dc687c8ba24182b8b61979ad334b989d3be72ec6' }, "IsWriting: ", this.store.state.isWriting ? 'true' : 'false'), h("div", { key: '10cbc575a7905396a76eca4e7b56be719755aeb4' }, "PointerX: ", this.store.state?.pointerX), h("div", { key: '4f21199328ffadddcc58b7d6b102a89e5079f676' }, "PointerY: ", this.store.state?.pointerY), h("div", { key: 'ac705f38cb323b8dc8cbf95f875657c5dec5c9ae' }, "SelectedObjects: ", this.store.state.selectionGroup?.objects.length || 0)), h("div", { key: '2ca55c53246e64520af6720a3f87d2357295ca7f', id: "origin", class: "origin", style: {
|
|
2884
|
+
transform: `matrix(${this.store.state?.scale}, 0, 0, ${this.store.state?.scale}, ${this.store.state?.translateX}, ${this.store.state?.translateY})`,
|
|
2885
|
+
} }, this.store.state.objectsMap.allObjects()?.map(object => {
|
|
2886
|
+
return (h("div", { key: object.id, style: { display: object.isInViewport() ? 'block' : 'none', transform: object?.transformationMatrix, transformOrigin: 'top left', zIndex: object.zIndex.toString(), position: 'absolute' } }, h("svg", { xmlns: "http://www.w3.org/2000/svg", id: object.id, class: "object", style: {
|
|
2887
|
+
height: object?.totalHeight.toString(),
|
|
2888
|
+
width: object?.totalWidth.toString(),
|
|
2889
|
+
left: '0',
|
|
2890
|
+
top: '0',
|
|
2891
|
+
position: 'absolute',
|
|
2892
|
+
transform: `rotate(${object.rotationDegrees}deg)`,
|
|
2893
|
+
transformOrigin: 'center',
|
|
2894
|
+
opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
|
|
2895
|
+
pointerEvents: object.markedForRemoval ? 'none' : 'auto',
|
|
2896
|
+
} }, h("foreignObject", { x: "0", y: "0", width: object.totalWidth.toString(), height: object.totalHeight.toString(), style: {
|
|
2897
|
+
minHeight: '0',
|
|
2898
|
+
minWidth: '0',
|
|
2899
|
+
backgroundColor: object.backgroundColor,
|
|
2900
|
+
borderColor: object.borderColor,
|
|
2901
|
+
borderWidth: object.borderWidth + 'px',
|
|
2902
|
+
borderStyle: 'solid',
|
|
2903
|
+
padding: object.padding + 'px',
|
|
2904
|
+
overflow: 'visible',
|
|
2905
|
+
} }, KritzelClassHelper.isInstanceOf(object, 'KritzelPath') && (h("svg", { ref: el => (el ? object.mount(el) : object.unmount()), xmlns: "http://www.w3.org/2000/svg", style: {
|
|
2906
|
+
height: object?.height.toString(),
|
|
2907
|
+
width: object?.width.toString(),
|
|
2908
|
+
position: 'absolute',
|
|
2909
|
+
overflow: 'visible',
|
|
2910
|
+
}, viewBox: object?.viewBox }, h("path", { d: object?.d, fill: object.fill, stroke: object?.stroke }))), KritzelClassHelper.isInstanceOf(object, 'KritzelImage') && (h("img", { ref: el => (el ? object.mount(el) : object.unmount()), src: object.src, style: {
|
|
2911
|
+
width: '100%',
|
|
2912
|
+
height: '100%',
|
|
2913
|
+
userSelect: 'none',
|
|
2914
|
+
pointerEvents: 'none',
|
|
2915
|
+
}, draggable: false, onDragStart: e => e.preventDefault() })), KritzelClassHelper.isInstanceOf(object, 'KritzelText') && (h("textarea", { ref: el => (el ? object.mount(el) : object.unmount()), value: object.value, onKeyDown: event => object.handleKeyDown(event), onInput: event => object.handleInput(event), rows: object.rows, style: {
|
|
2916
|
+
width: '100%',
|
|
2917
|
+
height: '100%',
|
|
2918
|
+
color: object.fontColor,
|
|
2919
|
+
fontSize: object.fontSize?.toString() + 'px',
|
|
2920
|
+
fontFamily: object.fontFamily,
|
|
2921
|
+
border: 'none',
|
|
2922
|
+
outline: 'none',
|
|
2923
|
+
resize: 'none',
|
|
2924
|
+
overflow: 'hidden',
|
|
2925
|
+
display: 'block',
|
|
2926
|
+
padding: '1px',
|
|
2927
|
+
whiteSpace: 'nowrap',
|
|
2928
|
+
pointerEvents: object.isReadonly ? 'none' : 'auto',
|
|
2929
|
+
cursor: object.isReadonly ? 'default' : 'text',
|
|
2930
|
+
caretColor: object.isReadonly ? 'transparent' : 'auto',
|
|
2931
|
+
} })), KritzelClassHelper.isInstanceOf(object, 'KritzelCustomElement') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
|
|
2932
|
+
width: '100%',
|
|
2933
|
+
height: '100%',
|
|
2934
|
+
pointerEvents: 'auto',
|
|
2935
|
+
overflow: 'hidden',
|
|
2936
|
+
display: 'block',
|
|
2937
|
+
} })), KritzelClassHelper.isInstanceOf(object, 'KritzelSelectionGroup') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
|
|
2938
|
+
width: '100%',
|
|
2939
|
+
height: '100%',
|
|
2940
|
+
} })), KritzelClassHelper.isInstanceOf(object, 'KrtizelSelectionBox') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
|
|
2941
|
+
width: '100%',
|
|
2942
|
+
height: '100%',
|
|
2943
|
+
} }))), h("line", { x1: "0", y1: "0", x2: object.totalWidth, y2: "0", style: {
|
|
2944
|
+
stroke: 'var(--kritzel-selection-border-color, #007AFF)',
|
|
2945
|
+
strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
|
|
2946
|
+
strokeLinecap: 'square',
|
|
2947
|
+
}, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: "0", x2: "0", y2: object.totalHeight, style: {
|
|
2948
|
+
stroke: 'var(--kritzel-selection-border-color, #007AFF)',
|
|
2949
|
+
strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
|
|
2950
|
+
strokeLinecap: 'square',
|
|
2951
|
+
}, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: object.totalHeight, x2: object.totalWidth, y2: object.totalHeight, style: {
|
|
2952
|
+
stroke: 'var(--kritzel-selection-border-color, #007AFF)',
|
|
2953
|
+
strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
|
|
2954
|
+
strokeLinecap: 'square',
|
|
2955
|
+
}, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth, y1: "0", x2: object.totalWidth, y2: object.totalHeight, style: {
|
|
2956
|
+
stroke: 'var(--kritzel-selection-border-color, #007AFF)',
|
|
2957
|
+
strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
|
|
2958
|
+
strokeLinecap: 'square',
|
|
2959
|
+
}, visibility: object.isSelected ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-left", cx: "0", cy: "0", r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
|
|
2960
|
+
fill: 'var(--kritzel-selection-handle-color, #000000)',
|
|
2961
|
+
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-left", cx: "0", cy: "0", r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
|
|
2962
|
+
fill: 'transparent',
|
|
2963
|
+
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
|
|
2964
|
+
fill: 'var(--kritzel-selection-handle-color, #000000)',
|
|
2965
|
+
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
|
|
2966
|
+
fill: 'transparent',
|
|
2967
|
+
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
|
|
2968
|
+
fill: 'var(--kritzel-selection-handle-color, #000000)',
|
|
2969
|
+
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
|
|
2970
|
+
fill: 'transparent',
|
|
2971
|
+
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
|
|
2972
|
+
fill: 'var(--kritzel-selection-handle-color, #000000)',
|
|
2973
|
+
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
|
|
2974
|
+
fill: 'transparent',
|
|
2975
|
+
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth / 2, y1: "0", x2: object.totalWidth / 2, y2: -((15 * object.scale) / this.store.state?.scale), style: {
|
|
2976
|
+
stroke: 'var(--kritzel-selection-border-color, #007AFF)',
|
|
2977
|
+
strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
|
|
2978
|
+
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle", cx: object.totalWidth / 2, cy: -((15 * object.scale) / this.store.state?.scale), r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
|
|
2979
|
+
fill: 'var(--kritzel-selection-handle-color, #000000)',
|
|
2980
|
+
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle-overlay", cx: object.totalWidth / 2, cy: -((15 * object.scale) / this.store.state?.scale), r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
|
|
2981
|
+
fill: 'transparent',
|
|
2982
|
+
cursor: 'grab',
|
|
2983
|
+
}, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("g", { style: { display: this.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' } }, h("foreignObject", { x: object.totalWidth.toString(), y: "0", width: "400px", height: "160px", style: { minHeight: '0', minWidth: '0', display: object.isDebugInfoVisible ? 'block' : 'none' } }, h("div", { style: { width: '100%', height: '100%' } }, h("div", { style: { whiteSpace: 'nowrap' } }, "zIndex: ", object.zIndex), h("div", { style: { whiteSpace: 'nowrap' } }, "translateX: ", object.translateX), h("div", { style: { whiteSpace: 'nowrap' } }, "translateY: ", object.translateY), h("div", { style: { whiteSpace: 'nowrap' } }, "width: ", object.width), h("div", { style: { whiteSpace: 'nowrap' } }, "height: ", object.height), h("div", { style: { whiteSpace: 'nowrap' } }, "scale: ", object.scale), h("div", { style: { whiteSpace: 'nowrap' } }, "rotation: ", object.rotation), h("div", { style: { whiteSpace: 'nowrap' } }, "x: ", object.x), h("div", { style: { whiteSpace: 'nowrap' } }, "y: ", object.y)))))));
|
|
2984
|
+
}), h("svg", { key: '0098f1b8233d45f49dc8bdcc13c08f20c04b65e1', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
|
|
2985
|
+
height: this.store.state.currentPath?.height.toString(),
|
|
2986
|
+
width: this.store.state.currentPath?.width.toString(),
|
|
3046
2987
|
left: '0',
|
|
3047
2988
|
top: '0',
|
|
3048
|
-
zIndex:
|
|
2989
|
+
zIndex: this.store.state.currentPath?.zIndex.toString(),
|
|
3049
2990
|
position: 'absolute',
|
|
3050
|
-
transform:
|
|
2991
|
+
transform: this.store.state.currentPath?.transformationMatrix,
|
|
3051
2992
|
transformOrigin: 'top left',
|
|
3052
2993
|
overflow: 'visible',
|
|
3053
|
-
}, viewBox:
|
|
2994
|
+
}, viewBox: this.store.state.currentPath?.viewBox }, h("path", { key: '08310713fa8f2f1f695b1b61bb2b6e5a5f77f192', d: this.store.state.currentPath?.d, fill: this.store.state.currentPath?.fill, stroke: this.store.state.currentPath?.stroke }))), this.store.state.isContextMenuVisible && (h("kritzel-context-menu", { key: '2529447e26ba02689303be39cc593dfafc25b96c', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, objects: this.store.state.selectionGroup?.objects || [], style: {
|
|
3054
2995
|
position: 'fixed',
|
|
3055
2996
|
left: `${this.store.state.contextMenuX}px`,
|
|
3056
2997
|
top: `${this.store.state.contextMenuY}px`,
|
|
3057
2998
|
zIndex: '10000',
|
|
3058
2999
|
}, onActionSelected: event => {
|
|
3059
|
-
var _a;
|
|
3060
3000
|
event.detail.action({
|
|
3061
3001
|
x: (-this.store.state.translateX + this.store.state.contextMenuX) / this.store.state.scale,
|
|
3062
3002
|
y: (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale,
|
|
3063
|
-
},
|
|
3003
|
+
}, this.store.state.selectionGroup?.objects);
|
|
3064
3004
|
this.hideContextMenu();
|
|
3065
|
-
} })),
|
|
3005
|
+
} })), this.store.state?.activeTool instanceof KritzelEraserTool && !this.store.state.isScaling && h("kritzel-cursor-trail", { key: '7c10277160eb1bc51581e4dfbdd4d0cdf626ed8c', store: this.store })));
|
|
3066
3006
|
}
|
|
3067
|
-
get host() { return this; }
|
|
3068
3007
|
static get watchers() { return {
|
|
3069
3008
|
"workspace": ["onWorkspaceChange"],
|
|
3070
3009
|
"scaleMax": ["validateScaleMax"],
|
|
@@ -3143,6 +3082,6 @@ function defineCustomElement() {
|
|
|
3143
3082
|
}
|
|
3144
3083
|
|
|
3145
3084
|
export { ABSOLUTE_SCALE_MAX as A, KritzelImage as K, KritzelEraserTool as a, KritzelImageTool as b, KritzelSelectionTool as c, KritzelEngine as d, defineCustomElement as e, ABSOLUTE_SCALE_MIN as f };
|
|
3146
|
-
//# sourceMappingURL=p-
|
|
3085
|
+
//# sourceMappingURL=p-BuewJQNl.js.map
|
|
3147
3086
|
|
|
3148
|
-
//# sourceMappingURL=p-
|
|
3087
|
+
//# sourceMappingURL=p-BuewJQNl.js.map
|