kritzel-stencil 0.0.125 → 0.0.126
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/{components/p-BJOf0PsO.js → stencil/brush-tool.class-D1U3x9_Y.js} +51 -7
- package/dist/stencil/brush-tool.class-D1U3x9_Y.js.map +1 -0
- package/dist/{collection/configs/default-brush-tool.config.js → stencil/default-text-tool.config-DvOZmpuR.js} +38 -2
- package/dist/stencil/default-text-tool.config-DvOZmpuR.js.map +1 -0
- package/dist/stencil/engine.constants-DsjjAmnl.js +7 -0
- package/dist/stencil/engine.constants-DsjjAmnl.js.map +1 -0
- package/dist/{components/p-D8W6LE-c.js → stencil/event-button.enum-D8W6LE-c.js} +2 -2
- package/dist/stencil/event-button.enum-D8W6LE-c.js.map +1 -0
- package/dist/{collection/classes/registries/icon-registry.class.js → stencil/icon-registry.class-Bw5YkOTi.js} +6 -2
- package/dist/stencil/icon-registry.class-Bw5YkOTi.js.map +1 -0
- package/dist/stencil/image-tool.class-uKAmXFSl.js +1341 -0
- package/dist/stencil/image-tool.class-uKAmXFSl.js.map +1 -0
- package/dist/stencil/index-Df69oUcb.js +4334 -0
- package/dist/stencil/index-Df69oUcb.js.map +1 -0
- package/dist/stencil/index.esm.js +16 -1
- package/dist/stencil/index.esm.js.map +1 -1
- package/dist/stencil/kritzel-brush-style.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-brush-style.entry.js +31 -0
- package/dist/stencil/kritzel-brush-style.entry.js.map +1 -0
- package/dist/stencil/kritzel-color-palette.entry.esm.js.map +1 -0
- package/dist/{components/p-Bn5P7YQn.js → stencil/kritzel-color-palette.entry.js} +11 -37
- package/dist/stencil/kritzel-color-palette.entry.js.map +1 -0
- package/dist/stencil/kritzel-color.entry.esm.js.map +1 -0
- package/dist/{components/p-D0sLslUq.js → stencil/kritzel-color.entry.js} +11 -29
- package/dist/stencil/kritzel-color.entry.js.map +1 -0
- package/dist/{components/p-BY8BWGge.js → stencil/kritzel-context-menu-B2p1_Ffh.js} +12 -40
- package/dist/stencil/kritzel-context-menu-B2p1_Ffh.js.map +1 -0
- package/dist/stencil/kritzel-context-menu-DPHV6MRm.js +91 -0
- package/dist/stencil/kritzel-context-menu-DPHV6MRm.js.map +1 -0
- package/dist/stencil/kritzel-context-menu.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-context-menu.entry.js +5 -0
- package/dist/stencil/kritzel-context-menu.entry.js.map +1 -0
- package/dist/stencil/kritzel-control-brush-config.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-control-brush-config.entry.js +54 -0
- package/dist/stencil/kritzel-control-brush-config.entry.js.map +1 -0
- package/dist/stencil/kritzel-control-text-config.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-control-text-config.entry.js +42 -0
- package/dist/stencil/kritzel-control-text-config.entry.js.map +1 -0
- package/dist/stencil/kritzel-controls.entry.esm.js.map +1 -0
- package/dist/{components/p-CBCFr_x3.js → stencil/kritzel-controls.entry.js} +16 -116
- package/dist/stencil/kritzel-controls.entry.js.map +1 -0
- package/dist/stencil/kritzel-cursor-trail.entry.esm.js.map +1 -0
- package/dist/{components/p-Cw2ATHMj.js → stencil/kritzel-cursor-trail.entry.js} +11 -30
- package/dist/stencil/kritzel-cursor-trail.entry.js.map +1 -0
- package/dist/stencil/kritzel-dropdown.entry.esm.js.map +1 -0
- package/dist/{components/p-NZJPrwJV.js → stencil/kritzel-dropdown.entry.js} +11 -37
- package/dist/stencil/kritzel-dropdown.entry.js.map +1 -0
- package/dist/stencil/kritzel-editor.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-editor.entry.js +180 -0
- package/dist/stencil/kritzel-editor.entry.js.map +1 -0
- package/dist/stencil/kritzel-engine.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-engine.entry.js +1318 -0
- package/dist/stencil/kritzel-engine.entry.js.map +1 -0
- package/dist/stencil/kritzel-font-family.entry.esm.js.map +1 -0
- package/dist/{components/p-CF8ziFc4.js → stencil/kritzel-font-family.entry.js} +11 -35
- package/dist/stencil/kritzel-font-family.entry.js.map +1 -0
- package/dist/stencil/kritzel-font-size.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-font-size.entry.js +29 -0
- package/dist/stencil/kritzel-font-size.entry.js.map +1 -0
- package/dist/stencil/kritzel-font.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-font.entry.js +25 -0
- package/dist/stencil/kritzel-font.entry.js.map +1 -0
- package/dist/stencil/kritzel-icon.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-icon.entry.js +29 -0
- package/dist/stencil/kritzel-icon.entry.js.map +1 -0
- package/dist/stencil/kritzel-stroke-size.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-stroke-size.entry.js +28 -0
- package/dist/stencil/kritzel-stroke-size.entry.js.map +1 -0
- package/dist/stencil/kritzel-tooltip.entry.esm.js.map +1 -0
- package/dist/{components/p-DpiklJU9.js → stencil/kritzel-tooltip.entry.js} +14 -37
- package/dist/stencil/kritzel-tooltip.entry.js.map +1 -0
- package/dist/stencil/kritzel-utility-panel.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-utility-panel.entry.js +33 -0
- package/dist/stencil/kritzel-utility-panel.entry.js.map +1 -0
- package/dist/stencil/loader.esm.js.map +1 -1
- package/dist/stencil/stencil.esm.js +49 -1
- package/dist/stencil/stencil.esm.js.map +1 -1
- package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +2 -2
- package/dist/types/components.d.ts +4 -4
- package/package.json +1 -1
- package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -8
- package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
- package/dist/cjs/index-C05uAr89.js +0 -1591
- package/dist/cjs/index-C05uAr89.js.map +0 -1
- package/dist/cjs/index-CgSgPOBv.js +0 -2546
- package/dist/cjs/index-CgSgPOBv.js.map +0 -1
- package/dist/cjs/index.cjs.js +0 -19
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +0 -2365
- package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +0 -1
- package/dist/cjs/loader.cjs.js +0 -16
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/stencil.cjs.js +0 -28
- package/dist/cjs/stencil.cjs.js.map +0 -1
- package/dist/collection/classes/commands/add-object.command.js +0 -14
- package/dist/collection/classes/commands/add-object.command.js.map +0 -1
- package/dist/collection/classes/commands/add-selection-group.command.js +0 -20
- package/dist/collection/classes/commands/add-selection-group.command.js.map +0 -1
- package/dist/collection/classes/commands/base.command.js +0 -15
- package/dist/collection/classes/commands/base.command.js.map +0 -1
- package/dist/collection/classes/commands/batch.command.js +0 -14
- package/dist/collection/classes/commands/batch.command.js.map +0 -1
- package/dist/collection/classes/commands/move-selection-group.command.js +0 -25
- package/dist/collection/classes/commands/move-selection-group.command.js.map +0 -1
- package/dist/collection/classes/commands/remove-object.command.js +0 -17
- package/dist/collection/classes/commands/remove-object.command.js.map +0 -1
- package/dist/collection/classes/commands/remove-selection-group.command.js +0 -18
- package/dist/collection/classes/commands/remove-selection-group.command.js.map +0 -1
- package/dist/collection/classes/commands/resize-selection-group.command.js +0 -18
- package/dist/collection/classes/commands/resize-selection-group.command.js.map +0 -1
- package/dist/collection/classes/commands/rotate-selection-group.command.js +0 -24
- package/dist/collection/classes/commands/rotate-selection-group.command.js.map +0 -1
- package/dist/collection/classes/commands/update-object.command.js +0 -29
- package/dist/collection/classes/commands/update-object.command.js.map +0 -1
- package/dist/collection/classes/commands/update-viewport.command.js +0 -23
- package/dist/collection/classes/commands/update-viewport.command.js.map +0 -1
- package/dist/collection/classes/handlers/base.handler.js +0 -7
- package/dist/collection/classes/handlers/base.handler.js.map +0 -1
- package/dist/collection/classes/handlers/context-menu.handler.js +0 -47
- package/dist/collection/classes/handlers/context-menu.handler.js.map +0 -1
- package/dist/collection/classes/handlers/hover.handler.js +0 -19
- package/dist/collection/classes/handlers/hover.handler.js.map +0 -1
- package/dist/collection/classes/handlers/key.handler.js +0 -81
- package/dist/collection/classes/handlers/key.handler.js.map +0 -1
- package/dist/collection/classes/handlers/move.handler.js +0 -84
- package/dist/collection/classes/handlers/move.handler.js.map +0 -1
- package/dist/collection/classes/handlers/resize.handler.js +0 -150
- package/dist/collection/classes/handlers/resize.handler.js.map +0 -1
- package/dist/collection/classes/handlers/rotation.handler.js +0 -102
- package/dist/collection/classes/handlers/rotation.handler.js.map +0 -1
- package/dist/collection/classes/handlers/selection.handler.js +0 -200
- package/dist/collection/classes/handlers/selection.handler.js.map +0 -1
- package/dist/collection/classes/history.class.js +0 -71
- package/dist/collection/classes/history.class.js.map +0 -1
- package/dist/collection/classes/objects/base-object.class.js +0 -199
- package/dist/collection/classes/objects/base-object.class.js.map +0 -1
- package/dist/collection/classes/objects/custom-element.class.js +0 -52
- package/dist/collection/classes/objects/custom-element.class.js.map +0 -1
- package/dist/collection/classes/objects/image.class.js +0 -53
- package/dist/collection/classes/objects/image.class.js.map +0 -1
- package/dist/collection/classes/objects/path.class.js +0 -262
- package/dist/collection/classes/objects/path.class.js.map +0 -1
- package/dist/collection/classes/objects/selection-box.class.js +0 -22
- package/dist/collection/classes/objects/selection-box.class.js.map +0 -1
- package/dist/collection/classes/objects/selection-group.class.js +0 -159
- package/dist/collection/classes/objects/selection-group.class.js.map +0 -1
- package/dist/collection/classes/objects/text.class.js +0 -141
- package/dist/collection/classes/objects/text.class.js.map +0 -1
- package/dist/collection/classes/registries/icon-registry.class.js.map +0 -1
- package/dist/collection/classes/registries/tool.registry.js +0 -18
- package/dist/collection/classes/registries/tool.registry.js.map +0 -1
- package/dist/collection/classes/reviver.class.js +0 -66
- package/dist/collection/classes/reviver.class.js.map +0 -1
- package/dist/collection/classes/store.class.js +0 -287
- package/dist/collection/classes/store.class.js.map +0 -1
- package/dist/collection/classes/structures/circular-buffer.structure.js +0 -46
- package/dist/collection/classes/structures/circular-buffer.structure.js.map +0 -1
- package/dist/collection/classes/structures/octree.structure.js +0 -111
- package/dist/collection/classes/structures/octree.structure.js.map +0 -1
- package/dist/collection/classes/tools/base-tool.class.js +0 -31
- package/dist/collection/classes/tools/base-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/brush-tool.class.js +0 -116
- package/dist/collection/classes/tools/brush-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/eraser-tool.class.js +0 -86
- package/dist/collection/classes/tools/eraser-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/image-tool.class.js +0 -88
- package/dist/collection/classes/tools/image-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/selection-tool.class.js +0 -156
- package/dist/collection/classes/tools/selection-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/text-tool.class.js +0 -116
- package/dist/collection/classes/tools/text-tool.class.js.map +0 -1
- package/dist/collection/classes/viewport.class.js +0 -148
- package/dist/collection/classes/viewport.class.js.map +0 -1
- package/dist/collection/collection-manifest.json +0 -29
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +0 -10
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +0 -154
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +0 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +0 -24
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +0 -672
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +0 -1
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +0 -60
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +0 -1287
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +0 -1
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +0 -44
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +0 -100
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +0 -1
- package/dist/collection/components/shared/kritzel-color/kritzel-color.css +0 -21
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js +0 -108
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +0 -1
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +0 -46
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +0 -147
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +0 -1
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +0 -53
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +0 -215
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +0 -1
- package/dist/collection/components/shared/kritzel-font/kritzel-font.css +0 -10
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js +0 -92
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +0 -1
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +0 -48
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +0 -115
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +0 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +0 -30
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +0 -112
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +0 -1
- package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +0 -17
- package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +0 -94
- package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +0 -1
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +0 -28
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +0 -91
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +0 -1
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +0 -17
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +0 -181
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +0 -1
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +0 -55
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +0 -178
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +0 -1
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +0 -19
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +0 -136
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +0 -1
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.css +0 -19
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +0 -116
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +0 -1
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +0 -124
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +0 -268
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +0 -1
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +0 -33
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +0 -79
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +0 -1
- package/dist/collection/configs/default-brush-tool.config.js.map +0 -1
- package/dist/collection/configs/default-engine-state.js +0 -58
- package/dist/collection/configs/default-engine-state.js.map +0 -1
- package/dist/collection/configs/default-text-tool.config.js +0 -32
- package/dist/collection/configs/default-text-tool.config.js.map +0 -1
- package/dist/collection/constants/engine.constants.js +0 -3
- package/dist/collection/constants/engine.constants.js.map +0 -1
- package/dist/collection/enums/event-button.enum.js +0 -7
- package/dist/collection/enums/event-button.enum.js.map +0 -1
- package/dist/collection/enums/handle-type.enum.js +0 -8
- package/dist/collection/enums/handle-type.enum.js.map +0 -1
- package/dist/collection/helpers/class.helper.js +0 -6
- package/dist/collection/helpers/class.helper.js.map +0 -1
- package/dist/collection/helpers/devices.helper.js +0 -6
- package/dist/collection/helpers/devices.helper.js.map +0 -1
- package/dist/collection/helpers/event.helper.js +0 -58
- package/dist/collection/helpers/event.helper.js.map +0 -1
- package/dist/collection/helpers/geometry.helper.js +0 -53
- package/dist/collection/helpers/geometry.helper.js.map +0 -1
- package/dist/collection/helpers/html.helper.js +0 -7
- package/dist/collection/helpers/html.helper.js.map +0 -1
- package/dist/collection/helpers/keyboard.helper.js +0 -31
- package/dist/collection/helpers/keyboard.helper.js.map +0 -1
- package/dist/collection/helpers/math.helper.js +0 -6
- package/dist/collection/helpers/math.helper.js.map +0 -1
- package/dist/collection/helpers/object.helper.js +0 -38
- package/dist/collection/helpers/object.helper.js.map +0 -1
- package/dist/collection/index.js +0 -21
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/interfaces/bounding-box.interface.js +0 -2
- package/dist/collection/interfaces/bounding-box.interface.js.map +0 -1
- package/dist/collection/interfaces/command.interface.js +0 -2
- package/dist/collection/interfaces/command.interface.js.map +0 -1
- package/dist/collection/interfaces/context-menu-item.interface.js +0 -2
- package/dist/collection/interfaces/context-menu-item.interface.js.map +0 -1
- package/dist/collection/interfaces/debug-info.interface.js +0 -2
- package/dist/collection/interfaces/debug-info.interface.js.map +0 -1
- package/dist/collection/interfaces/engine-state.interface.js +0 -2
- package/dist/collection/interfaces/engine-state.interface.js.map +0 -1
- package/dist/collection/interfaces/object.interface.js +0 -2
- package/dist/collection/interfaces/object.interface.js.map +0 -1
- package/dist/collection/interfaces/path-options.interface.js +0 -2
- package/dist/collection/interfaces/path-options.interface.js.map +0 -1
- package/dist/collection/interfaces/point.interface.js +0 -2
- package/dist/collection/interfaces/point.interface.js.map +0 -1
- package/dist/collection/interfaces/polygon.interface.js +0 -2
- package/dist/collection/interfaces/polygon.interface.js.map +0 -1
- package/dist/collection/interfaces/selection-state.interface.js +0 -2
- package/dist/collection/interfaces/selection-state.interface.js.map +0 -1
- package/dist/collection/interfaces/serializable.interface.js +0 -2
- package/dist/collection/interfaces/serializable.interface.js.map +0 -1
- package/dist/collection/interfaces/tool.interface.js +0 -2
- package/dist/collection/interfaces/tool.interface.js.map +0 -1
- package/dist/collection/interfaces/toolbar-control.interface.js +0 -2
- package/dist/collection/interfaces/toolbar-control.interface.js.map +0 -1
- package/dist/collection/types/state.types.js +0 -2
- package/dist/collection/types/state.types.js.map +0 -1
- package/dist/components/index.js +0 -24
- package/dist/components/index.js.map +0 -1
- package/dist/components/kritzel-brush-style.js +0 -9
- package/dist/components/kritzel-brush-style.js.map +0 -1
- package/dist/components/kritzel-color-palette.js +0 -9
- package/dist/components/kritzel-color-palette.js.map +0 -1
- package/dist/components/kritzel-color.js +0 -9
- package/dist/components/kritzel-color.js.map +0 -1
- package/dist/components/kritzel-context-menu.js +0 -9
- package/dist/components/kritzel-context-menu.js.map +0 -1
- package/dist/components/kritzel-control-brush-config.js +0 -9
- package/dist/components/kritzel-control-brush-config.js.map +0 -1
- package/dist/components/kritzel-control-text-config.js +0 -9
- package/dist/components/kritzel-control-text-config.js.map +0 -1
- package/dist/components/kritzel-controls.js +0 -9
- package/dist/components/kritzel-controls.js.map +0 -1
- package/dist/components/kritzel-cursor-trail.js +0 -9
- package/dist/components/kritzel-cursor-trail.js.map +0 -1
- package/dist/components/kritzel-dropdown.js +0 -9
- package/dist/components/kritzel-dropdown.js.map +0 -1
- package/dist/components/kritzel-editor.js +0 -409
- package/dist/components/kritzel-editor.js.map +0 -1
- package/dist/components/kritzel-engine.js +0 -9
- package/dist/components/kritzel-engine.js.map +0 -1
- package/dist/components/kritzel-font-family.js +0 -9
- package/dist/components/kritzel-font-family.js.map +0 -1
- package/dist/components/kritzel-font-size.js +0 -9
- package/dist/components/kritzel-font-size.js.map +0 -1
- package/dist/components/kritzel-font.js +0 -9
- package/dist/components/kritzel-font.js.map +0 -1
- package/dist/components/kritzel-icon.js +0 -9
- package/dist/components/kritzel-icon.js.map +0 -1
- package/dist/components/kritzel-stroke-size.js +0 -9
- package/dist/components/kritzel-stroke-size.js.map +0 -1
- package/dist/components/kritzel-tooltip.js +0 -9
- package/dist/components/kritzel-tooltip.js.map +0 -1
- package/dist/components/kritzel-utility-panel.js +0 -9
- package/dist/components/kritzel-utility-panel.js.map +0 -1
- package/dist/components/p-BJOf0PsO.js.map +0 -1
- package/dist/components/p-BOj_wqdw.js +0 -54
- package/dist/components/p-BOj_wqdw.js.map +0 -1
- package/dist/components/p-BY8BWGge.js.map +0 -1
- package/dist/components/p-BjG1zRRI.js +0 -2718
- package/dist/components/p-BjG1zRRI.js.map +0 -1
- package/dist/components/p-Bn5P7YQn.js.map +0 -1
- package/dist/components/p-C9usqwb5.js +0 -61
- package/dist/components/p-C9usqwb5.js.map +0 -1
- package/dist/components/p-CBCFr_x3.js.map +0 -1
- package/dist/components/p-CF8ziFc4.js.map +0 -1
- package/dist/components/p-CiT5gBDh.js +0 -44
- package/dist/components/p-CiT5gBDh.js.map +0 -1
- package/dist/components/p-Cn_kantt.js +0 -54
- package/dist/components/p-Cn_kantt.js.map +0 -1
- package/dist/components/p-CtiROna-.js +0 -90
- package/dist/components/p-CtiROna-.js.map +0 -1
- package/dist/components/p-Cw2ATHMj.js.map +0 -1
- package/dist/components/p-D0sLslUq.js.map +0 -1
- package/dist/components/p-D8W6LE-c.js.map +0 -1
- package/dist/components/p-DJN0U8pI.js +0 -1327
- package/dist/components/p-DJN0U8pI.js.map +0 -1
- package/dist/components/p-DMAzUKo6.js +0 -102
- package/dist/components/p-DMAzUKo6.js.map +0 -1
- package/dist/components/p-DSLY0tr5.js +0 -52
- package/dist/components/p-DSLY0tr5.js.map +0 -1
- package/dist/components/p-DpiklJU9.js.map +0 -1
- package/dist/components/p-NZJPrwJV.js.map +0 -1
- package/dist/components/p-ubNAWsY_.js +0 -111
- package/dist/components/p-ubNAWsY_.js.map +0 -1
- package/dist/esm/app-globals-DQuL1Twl.js +0 -6
- package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
- package/dist/esm/index-BGl8znzE.js +0 -1564
- package/dist/esm/index-BGl8znzE.js.map +0 -1
- package/dist/esm/index-B_0CRlFw.js +0 -2522
- package/dist/esm/index-B_0CRlFw.js.map +0 -1
- package/dist/esm/index.js +0 -4
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/kritzel-brush-style_18.entry.js +0 -2346
- package/dist/esm/kritzel-brush-style_18.entry.js.map +0 -1
- package/dist/esm/loader.js +0 -14
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/stencil.js +0 -24
- package/dist/esm/stencil.js.map +0 -1
- package/dist/index.cjs.js +0 -1
- package/dist/index.js +0 -1
- package/dist/stencil/p-3a2f1d19.entry.js +0 -2
- package/dist/stencil/p-3a2f1d19.entry.js.map +0 -1
- package/dist/stencil/p-BGl8znzE.js +0 -3
- package/dist/stencil/p-BGl8znzE.js.map +0 -1
- package/dist/stencil/p-B_0CRlFw.js +0 -2
- package/dist/stencil/p-B_0CRlFw.js.map +0 -1
- package/dist/stencil/p-DQuL1Twl.js +0 -2
- package/dist/stencil/p-DQuL1Twl.js.map +0 -1
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { KritzelToolRegistry } from "../registries/tool.registry";
|
|
2
|
-
import { KritzelTextTool } from "../tools/text-tool.class";
|
|
3
|
-
import { KritzelBaseObject } from "./base-object.class";
|
|
4
|
-
export class KritzelText extends KritzelBaseObject {
|
|
5
|
-
get isReadonly() {
|
|
6
|
-
return !(this._store.state.activeTool instanceof KritzelTextTool);
|
|
7
|
-
}
|
|
8
|
-
constructor(config) {
|
|
9
|
-
super();
|
|
10
|
-
this.__class__ = 'KritzelText';
|
|
11
|
-
this.value = '';
|
|
12
|
-
this.fontFamily = 'Arial';
|
|
13
|
-
this.fontSize = 8;
|
|
14
|
-
this.fontColor = '#000000';
|
|
15
|
-
this.initialWidth = 3;
|
|
16
|
-
this.isNew = true;
|
|
17
|
-
this.isDebugInfoVisible = true;
|
|
18
|
-
this.isEditable = true;
|
|
19
|
-
this.rows = 1;
|
|
20
|
-
if (config) {
|
|
21
|
-
this.value = config.value || ' ';
|
|
22
|
-
this.translateX = config.translateX || 0;
|
|
23
|
-
this.translateY = config.translateY || 0;
|
|
24
|
-
this.fontSize = config.fontSize || 8;
|
|
25
|
-
this.fontFamily = config.fontFamily || 'Arial';
|
|
26
|
-
this.fontColor = config.fontColor || '#000000';
|
|
27
|
-
this.height = config.height || this.fontSize * 1.2;
|
|
28
|
-
this.width = config.width || 0;
|
|
29
|
-
this.scale = config.scale || 1;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
static create(store, fontSize, fontFamily) {
|
|
33
|
-
const object = new KritzelText();
|
|
34
|
-
object._store = store;
|
|
35
|
-
object.fontSize = fontSize;
|
|
36
|
-
object.fontFamily = fontFamily;
|
|
37
|
-
object.translateX = 0;
|
|
38
|
-
object.translateY = 0;
|
|
39
|
-
object.width = object.initialWidth / (object._store.state.scale < 0 ? object._store.state.scale : 1);
|
|
40
|
-
object.height = (object.fontSize * 1.2) / (object._store.state.scale < 0 ? object._store.state.scale : 1);
|
|
41
|
-
object.padding = 5;
|
|
42
|
-
object.backgroundColor = 'transparent';
|
|
43
|
-
object.scale = object._store.state.scale;
|
|
44
|
-
object.value = ' ';
|
|
45
|
-
object.zIndex = store.currentZIndex;
|
|
46
|
-
return object;
|
|
47
|
-
}
|
|
48
|
-
mount(element) {
|
|
49
|
-
if ((this.isMounted && this.elementRef === element) || this.isInViewport() === false) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
this.elementRef = element;
|
|
53
|
-
this.isMounted = true;
|
|
54
|
-
}
|
|
55
|
-
resize(x, y, width, height) {
|
|
56
|
-
if (width <= 1 || height <= 1) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
const scaleFactor = height / this.height;
|
|
60
|
-
this.fontSize = this.fontSize * scaleFactor;
|
|
61
|
-
this.width = this.width * scaleFactor;
|
|
62
|
-
this.height = height;
|
|
63
|
-
this.translateX = x;
|
|
64
|
-
this.translateY = y;
|
|
65
|
-
}
|
|
66
|
-
handleKeyDown(event) {
|
|
67
|
-
if (this.isReadonly) {
|
|
68
|
-
event.preventDefault();
|
|
69
|
-
event.stopPropagation();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
handleInput(event) {
|
|
73
|
-
const target = event.target;
|
|
74
|
-
if (target.value === '') {
|
|
75
|
-
this.value = ' ';
|
|
76
|
-
target.value = ' ';
|
|
77
|
-
target.selectionStart = target.selectionEnd = target.value.length;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
this.value = target.value.trim();
|
|
81
|
-
}
|
|
82
|
-
this.adjustTextareaSize();
|
|
83
|
-
}
|
|
84
|
-
adjustTextareaSize() {
|
|
85
|
-
if (this.elementRef) {
|
|
86
|
-
const span = document.createElement('span');
|
|
87
|
-
span.style.position = 'absolute';
|
|
88
|
-
span.style.whiteSpace = 'pre-wrap';
|
|
89
|
-
span.style.visibility = 'hidden';
|
|
90
|
-
span.style.fontSize = window.getComputedStyle(this.elementRef).fontSize;
|
|
91
|
-
span.style.fontFamily = window.getComputedStyle(this.elementRef).fontFamily;
|
|
92
|
-
span.innerHTML = this.elementRef.value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\n/g, '<br>') + '<br>';
|
|
93
|
-
document.body.appendChild(span);
|
|
94
|
-
const textWidth = span.offsetWidth;
|
|
95
|
-
const textHeight = span.offsetHeight;
|
|
96
|
-
document.body.removeChild(span);
|
|
97
|
-
this.width = textWidth;
|
|
98
|
-
this.height = textHeight;
|
|
99
|
-
this._store.rerender();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
focus() {
|
|
103
|
-
if (this.elementRef) {
|
|
104
|
-
this.elementRef.focus();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
selectAll() {
|
|
108
|
-
if (this.elementRef) {
|
|
109
|
-
this.elementRef.select();
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
insertFromClipboard() {
|
|
113
|
-
if (this.elementRef) {
|
|
114
|
-
this.elementRef.focus();
|
|
115
|
-
try {
|
|
116
|
-
navigator.clipboard.readText().then(text => {
|
|
117
|
-
const start = this.elementRef.selectionStart;
|
|
118
|
-
const end = this.elementRef.selectionEnd;
|
|
119
|
-
const value = this.elementRef.value;
|
|
120
|
-
this.elementRef.value = value.substring(0, start) + text + value.substring(end);
|
|
121
|
-
this.elementRef.selectionStart = this.elementRef.selectionEnd = start + text.length;
|
|
122
|
-
this.value = this.elementRef.value;
|
|
123
|
-
this.adjustTextareaSize();
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
catch (err) {
|
|
127
|
-
console.error('Failed to read clipboard contents:', err);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
edit() {
|
|
132
|
-
this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));
|
|
133
|
-
this._store.state.selectionGroup = null;
|
|
134
|
-
this._store.state.selectionBox = null;
|
|
135
|
-
this._store.state.activeText = this;
|
|
136
|
-
setTimeout(() => {
|
|
137
|
-
this.focus();
|
|
138
|
-
}, 300);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=text.class.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text.class.js","sourceRoot":"","sources":["../../../src/classes/objects/text.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelStore } from '../store.class';\r\nimport { KritzelTextTool } from '../tools/text-tool.class';\r\nimport { KritzelBaseObject } from './base-object.class';\r\n\r\nexport class KritzelText extends KritzelBaseObject<HTMLTextAreaElement> {\r\n override __class__: string = 'KritzelText';\r\n\r\n value: string = '';\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 8;\r\n fontColor: string = '#000000';\r\n initialWidth: number = 3;\r\n\r\n isNew: boolean = true;\r\n isDebugInfoVisible: boolean = true;\r\n isEditable: boolean = true;\r\n\r\n readonly rows: number = 1;\r\n\r\n get isReadonly(): boolean {\r\n return !(this._store.state.activeTool instanceof KritzelTextTool);\r\n }\r\n\r\n constructor(config?: {\r\n value: string;\r\n translateX?: number;\r\n translateY?: number;\r\n fontSize?: number;\r\n fontFamily?: string;\r\n fontColor?: string;\r\n height?: number;\r\n width?: number;\r\n scale?: number;\r\n }) {\r\n super();\r\n\r\n if (config) {\r\n this.value = config.value || ' ';\r\n this.translateX = config.translateX || 0;\r\n this.translateY = config.translateY || 0;\r\n this.fontSize = config.fontSize || 8;\r\n this.fontFamily = config.fontFamily || 'Arial';\r\n this.fontColor = config.fontColor || '#000000';\r\n this.height = config.height || this.fontSize * 1.2;\r\n this.width = config.width || 0;\r\n this.scale = config.scale || 1;\r\n }\r\n }\r\n\r\n static override create(store: KritzelStore, fontSize?: number, fontFamily?: string): KritzelText {\r\n const object = new KritzelText();\r\n\r\n object._store = store;\r\n object.fontSize = fontSize;\r\n object.fontFamily = fontFamily;\r\n object.translateX = 0;\r\n object.translateY = 0;\r\n object.width = object.initialWidth / (object._store.state.scale < 0 ? object._store.state.scale : 1);\r\n object.height = (object.fontSize * 1.2) / (object._store.state.scale < 0 ? object._store.state.scale : 1);\r\n object.padding = 5;\r\n object.backgroundColor = 'transparent';\r\n object.scale = object._store.state.scale;\r\n object.value = ' ';\r\n object.zIndex = store.currentZIndex;\r\n\r\n return object;\r\n }\r\n\r\n override mount(element: HTMLTextAreaElement): void {\r\n if ((this.isMounted && this.elementRef === element) || this.isInViewport() === false) {\r\n return;\r\n }\r\n\r\n this.elementRef = element;\r\n this.isMounted = true;\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n if (width <= 1 || height <= 1) {\r\n return;\r\n }\r\n\r\n const scaleFactor = height / this.height;\r\n\r\n this.fontSize = this.fontSize * scaleFactor;\r\n this.width = this.width * scaleFactor;\r\n this.height = height;\r\n this.translateX = x;\r\n this.translateY = y;\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent): void {\r\n if (this.isReadonly) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n handleInput(event: InputEvent): void {\r\n const target = event.target as HTMLTextAreaElement;\r\n if (target.value === '') {\r\n this.value = ' ';\r\n target.value = ' ';\r\n target.selectionStart = target.selectionEnd = target.value.length;\r\n } else {\r\n this.value = target.value.trim();\r\n }\r\n\r\n this.adjustTextareaSize();\r\n }\r\n\r\n adjustTextareaSize() {\r\n if (this.elementRef) {\r\n const span = document.createElement('span');\r\n span.style.position = 'absolute';\r\n span.style.whiteSpace = 'pre-wrap';\r\n span.style.visibility = 'hidden';\r\n span.style.fontSize = window.getComputedStyle(this.elementRef).fontSize;\r\n span.style.fontFamily = window.getComputedStyle(this.elementRef).fontFamily;\r\n\r\n span.innerHTML = this.elementRef.value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\\n/g, '<br>') + '<br>';\r\n\r\n document.body.appendChild(span);\r\n const textWidth = span.offsetWidth;\r\n const textHeight = span.offsetHeight;\r\n document.body.removeChild(span);\r\n\r\n this.width = textWidth;\r\n this.height = textHeight;\r\n\r\n this._store.rerender();\r\n }\r\n }\r\n\r\n focus(): void {\r\n if (this.elementRef) {\r\n this.elementRef.focus();\r\n }\r\n }\r\n\r\n selectAll(): void {\r\n if (this.elementRef) {\r\n this.elementRef.select();\r\n }\r\n }\r\n\r\n insertFromClipboard(): void {\r\n if (this.elementRef) {\r\n this.elementRef.focus();\r\n try {\r\n navigator.clipboard.readText().then(text => {\r\n const start = this.elementRef.selectionStart;\r\n const end = this.elementRef.selectionEnd;\r\n const value = this.elementRef.value;\r\n\r\n this.elementRef.value = value.substring(0, start) + text + value.substring(end);\r\n\r\n this.elementRef.selectionStart = this.elementRef.selectionEnd = start + text.length;\r\n this.value = this.elementRef.value;\r\n this.adjustTextareaSize();\r\n });\r\n } catch (err) {\r\n console.error('Failed to read clipboard contents:', err);\r\n }\r\n }\r\n }\r\n\r\n edit(): void {\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));\r\n this._store.state.selectionGroup = null;\r\n this._store.state.selectionBox = null;\r\n this._store.state.activeText = this;\r\n\r\n setTimeout(() => {\r\n this.focus();\r\n }, 300);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icon-registry.class.js","sourceRoot":"","sources":["../../../src/classes/registries/icon-registry.class.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAmB;IAGvB,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,UAAkB;QACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,kDAAkD,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,KAAgC;QAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;;AAvBc,4BAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;AA0BtD,mBAAmB,CAAC,aAAa,CAAC;IAChC,QAAQ,EAAE,4SAA4S;IACtT,KAAK,EAAE,wSAAwS;IAC/S,aAAa,EAAE,2TAA2T;IAC1U,QAAQ,EAAE,qSAAqS;IAC/S,MAAM,EAAE,8QAA8Q;IACtR,OAAO,EAAE,sSAAsS;IAC/S,cAAc,EAAE,oLAAoL;IACpM,YAAY,EAAE,sLAAsL;IACpM,MAAM,EAAE,mUAAmU;IAC3U,OAAO,EAAE,6aAA6a;IACtb,KAAK,EAAE,+VAA+V;IACtW,QAAQ,EAAE,6YAA6Y;IACvZ,gBAAgB,EAAE,kSAAkS;IACpT,cAAc,EAAE,qSAAqS;IACrT,YAAY,EAAE,0bAA0b;IACxc,UAAU,EAAE,gVAAgV;IAC5V,MAAM,EAAE,iRAAiR;IACzR,MAAM,EAAE,mRAAmR;CAC5R,CAAC,CAAC","sourcesContent":["export class KritzelIconRegistry {\r\n private static registry = new Map<string, string>();\r\n\r\n public static register(name: string, svgContent: string): void {\r\n if (this.registry.has(name)) {\r\n console.warn(`[IconRegistry] Icon \"${name}\" is already registered. It will be overwritten.`);\r\n }\r\n this.registry.set(name, svgContent);\r\n }\r\n\r\n public static get(name: string): string | undefined {\r\n return this.registry.get(name);\r\n }\r\n\r\n public static registerIcons(icons: { [key: string]: string }): void {\r\n for (const name in icons) {\r\n if (Object.prototype.hasOwnProperty.call(icons, name)) {\r\n this.register(name, icons[name]);\r\n }\r\n }\r\n }\r\n\r\n public static has(name: string): boolean {\r\n return this.registry.has(name);\r\n }\r\n}\r\n\r\nKritzelIconRegistry.registerIcons({\r\n 'cursor': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z\"/></svg>',\r\n 'pen': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\"/></svg>',\r\n 'highlighter': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-highlighter-icon lucide-highlighter\"><path d=\"m9 11-6 6v3h9l3-3\"/><path d=\"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4\"/></svg>',\r\n 'eraser': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21\"/><path d=\"M22 21H7\"/><path d=\"m5 11 9 9\"/></svg>',\r\n 'type': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"4 7 4 4 20 4 20 7\"/><line x1=\"9\" x2=\"15\" y1=\"20\" y2=\"20\"/><line x1=\"12\" x2=\"12\" y1=\"4\" y2=\"20\"/></svg>',\r\n 'image': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/><path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"/></svg>',\r\n 'chevron-down': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>',\r\n 'chevron-up': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m18 15-6-6-6 6\"/></svg>',\r\n 'copy': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-copy-icon lucide-copy\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/></svg>',\r\n 'paste': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-clipboard-paste-icon lucide-clipboard-paste\"><path d=\"M11 14h10\"/><path d=\"M16 4h2a2 2 0 0 1 2 2v1.344\"/><path d=\"m17 18 4-4-4-4\"/><path d=\"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113\"/><rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\"/></svg>',\r\n 'cut': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-scissors-icon lucide-scissors\"><circle cx=\"6\" cy=\"6\" r=\"3\"/><path d=\"M8.12 8.12 12 12\"/><path d=\"M20 4 8.12 15.88\"/><circle cx=\"6\" cy=\"18\" r=\"3\"/><path d=\"M14.8 14.8 20 20\"/></svg>',\r\n 'delete': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-trash2-icon lucide-trash-2\"><path d=\"M3 6h18\"/><path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\"/><path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\"/><line x1=\"10\" x2=\"10\" y1=\"11\" y2=\"17\"/><line x1=\"14\" x2=\"14\" y1=\"11\" y2=\"17\"/></svg>',\r\n 'bring-to-front': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-to-line-icon lucide-arrow-up-to-line\"><path d=\"M5 3h14\"/><path d=\"m18 13-6-6-6 6\"/><path d=\"M12 7v14\"/></svg>',\r\n 'send-to-back': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-to-line-icon lucide-arrow-down-to-line\"><path d=\"M12 17V3\"/><path d=\"m6 11 6 6 6-6\"/><path d=\"M19 21H5\"/></svg>',\r\n 'select-all': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-square-mouse-pointer-icon lucide-square-mouse-pointer\"><path d=\"M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z\"/><path d=\"M21 11V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6\"/></svg>',\r\n 'download': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-download-icon lucide-download\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"12\" x2=\"12\" y1=\"15\" y2=\"3\"/></svg>',\r\n 'undo': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-undo-icon lucide-undo\"><path d=\"M3 7v6h6\"/><path d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\"/></svg>',\r\n 'redo': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-redo-icon lucide-redo\"><path d=\"M21 7v6h-6\"/><path d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\"/></svg>'\r\n});"]}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export class KritzelToolRegistry {
|
|
2
|
-
static registerTool(toolName, constructor, store) {
|
|
3
|
-
const toolInstance = new constructor(store);
|
|
4
|
-
toolInstance.name = toolName;
|
|
5
|
-
this.registry[toolName] = toolInstance;
|
|
6
|
-
return toolInstance;
|
|
7
|
-
}
|
|
8
|
-
static getTool(toolName) {
|
|
9
|
-
const toolInstance = this.registry[toolName];
|
|
10
|
-
if (!toolInstance) {
|
|
11
|
-
console.warn(`Unknown tool: ${toolName}`);
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
return toolInstance;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
KritzelToolRegistry.registry = {};
|
|
18
|
-
//# sourceMappingURL=tool.registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool.registry.js","sourceRoot":"","sources":["../../../src/classes/registries/tool.registry.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,mBAAmB;IAG9B,MAAM,CAAC,YAAY,CAAC,QAAgB,EAAE,WAAyD,EAAE,KAAmB;QAClH,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5C,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;QACvC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;;AAlBY,4BAAQ,GAAoC,EAAE,CAAC","sourcesContent":["import { KritzelStore } from \"../store.class\";\r\nimport { KritzelBaseTool } from \"../tools/base-tool.class\";\r\n\r\nexport class KritzelToolRegistry {\r\nprivate static registry: Record<string, KritzelBaseTool> = {};\r\n\r\n static registerTool(toolName: string, constructor: new (store: KritzelStore) => KritzelBaseTool, store: KritzelStore): KritzelBaseTool {\r\n const toolInstance = new constructor(store);\r\n toolInstance.name = toolName;\r\n this.registry[toolName] = toolInstance;\r\n return toolInstance;\r\n }\r\n\r\n static getTool(toolName: string): KritzelBaseTool | null {\r\n const toolInstance = this.registry[toolName];\r\n\r\n if (!toolInstance) {\r\n console.warn(`Unknown tool: ${toolName}`);\r\n return null;\r\n }\r\n\r\n return toolInstance;\r\n }\r\n}\r\n"]}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { KritzelImage } from "./objects/image.class";
|
|
2
|
-
import { KritzelPath } from "./objects/path.class";
|
|
3
|
-
import { KritzelSelectionGroup } from "./objects/selection-group.class";
|
|
4
|
-
import { KritzelText } from "./objects/text.class";
|
|
5
|
-
import { KritzelBrushTool } from "./tools/brush-tool.class";
|
|
6
|
-
import { KritzelEraserTool } from "./tools/eraser-tool.class";
|
|
7
|
-
import { KritzelImageTool } from "./tools/image-tool.class";
|
|
8
|
-
import { KritzelSelectionTool } from "./tools/selection-tool.class";
|
|
9
|
-
import { KritzelTextTool } from "./tools/text-tool.class";
|
|
10
|
-
import { KritzelCustomElement } from "./objects/custom-element.class";
|
|
11
|
-
export class KritzelReviver {
|
|
12
|
-
constructor(store) {
|
|
13
|
-
this._store = store;
|
|
14
|
-
}
|
|
15
|
-
revive(obj) {
|
|
16
|
-
if (obj && typeof obj === 'object') {
|
|
17
|
-
if (obj.__class__) {
|
|
18
|
-
let revivedObj;
|
|
19
|
-
switch (obj.__class__) {
|
|
20
|
-
case 'KritzelPath':
|
|
21
|
-
revivedObj = KritzelPath.create(this._store).revive(obj);
|
|
22
|
-
break;
|
|
23
|
-
case 'KritzelText':
|
|
24
|
-
revivedObj = KritzelText.create(this._store, obj.fontSize, obj.fontFamily).revive(obj);
|
|
25
|
-
break;
|
|
26
|
-
case 'KritzelImage':
|
|
27
|
-
revivedObj = KritzelImage.create(this._store).revive(obj);
|
|
28
|
-
break;
|
|
29
|
-
case 'KritzelCustomElement':
|
|
30
|
-
revivedObj = KritzelCustomElement.create(this._store).revive(obj);
|
|
31
|
-
break;
|
|
32
|
-
case 'KritzelSelectionGroup':
|
|
33
|
-
revivedObj = KritzelSelectionGroup.create(this._store).revive(obj);
|
|
34
|
-
break;
|
|
35
|
-
case 'KritzelBrushTool':
|
|
36
|
-
revivedObj = new KritzelBrushTool(this._store);
|
|
37
|
-
break;
|
|
38
|
-
case 'KritzelEraserTool':
|
|
39
|
-
revivedObj = new KritzelEraserTool(this._store);
|
|
40
|
-
break;
|
|
41
|
-
case 'KritzelImageTool':
|
|
42
|
-
revivedObj = new KritzelImageTool(this._store);
|
|
43
|
-
break;
|
|
44
|
-
case 'KritzelSelectionTool':
|
|
45
|
-
revivedObj = new KritzelSelectionTool(this._store);
|
|
46
|
-
break;
|
|
47
|
-
case 'KritzelTextTool':
|
|
48
|
-
revivedObj = new KritzelTextTool(this._store);
|
|
49
|
-
break;
|
|
50
|
-
default:
|
|
51
|
-
revivedObj = obj;
|
|
52
|
-
}
|
|
53
|
-
return revivedObj;
|
|
54
|
-
}
|
|
55
|
-
const newObj = Array.isArray(obj) ? [] : {};
|
|
56
|
-
for (const key in obj) {
|
|
57
|
-
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
58
|
-
newObj[key] = this.revive(obj[key]);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return newObj;
|
|
62
|
-
}
|
|
63
|
-
return obj;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=reviver.class.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reviver.class.js","sourceRoot":"","sources":["../../src/classes/reviver.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelStore } from \"./store.class\";\r\nimport { KritzelImage } from \"./objects/image.class\";\r\nimport { KritzelPath } from \"./objects/path.class\";\r\nimport { KritzelSelectionGroup } from \"./objects/selection-group.class\";\r\nimport { KritzelText } from \"./objects/text.class\";\r\nimport { KritzelBrushTool } from \"./tools/brush-tool.class\";\r\nimport { KritzelEraserTool } from \"./tools/eraser-tool.class\";\r\nimport { KritzelImageTool } from \"./tools/image-tool.class\";\r\nimport { KritzelSelectionTool } from \"./tools/selection-tool.class\";\r\nimport { KritzelTextTool } from \"./tools/text-tool.class\";\r\nimport { KritzelCustomElement } from \"./objects/custom-element.class\";\r\n\r\nexport class KritzelReviver {\r\n\r\n private readonly _store: KritzelStore;\r\n\r\n constructor(store: KritzelStore) {\r\n this._store = store;\r\n }\r\n \r\n revive<T>(obj: any): T {\r\n if (obj && typeof obj === 'object') {\r\n if (obj.__class__) {\r\n let revivedObj;\r\n \r\n switch (obj.__class__) {\r\n case 'KritzelPath':\r\n revivedObj = KritzelPath.create(this._store).revive(obj);\r\n break;\r\n case 'KritzelText':\r\n revivedObj = KritzelText.create(this._store, obj.fontSize, obj.fontFamily).revive(obj);\r\n break;\r\n case 'KritzelImage':\r\n revivedObj = KritzelImage.create(this._store).revive(obj);\r\n break;\r\n case 'KritzelCustomElement':\r\n revivedObj = KritzelCustomElement.create(this._store).revive(obj);\r\n break;\r\n case 'KritzelSelectionGroup':\r\n revivedObj = KritzelSelectionGroup.create(this._store).revive(obj);\r\n break;\r\n case 'KritzelBrushTool':\r\n revivedObj = new KritzelBrushTool(this._store);\r\n break;\r\n case 'KritzelEraserTool':\r\n revivedObj = new KritzelEraserTool(this._store);\r\n break;\r\n case 'KritzelImageTool':\r\n revivedObj = new KritzelImageTool(this._store);\r\n break;\r\n case 'KritzelSelectionTool':\r\n revivedObj = new KritzelSelectionTool(this._store);\r\n break;\r\n case 'KritzelTextTool':\r\n revivedObj = new KritzelTextTool(this._store);\r\n break;\r\n\r\n default:\r\n revivedObj = obj;\r\n }\r\n return revivedObj;\r\n }\r\n\r\n const newObj = Array.isArray(obj) ? [] : {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n newObj[key] = this.revive(obj[key]);\r\n }\r\n }\r\n return newObj as T;\r\n }\r\n return obj;\r\n }\r\n\r\n}"]}
|
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
import { KritzelSelectionGroup } from "./objects/selection-group.class";
|
|
2
|
-
import { RemoveSelectionGroupCommand } from "./commands/remove-selection-group.command";
|
|
3
|
-
import { KritzelHistory } from "./history.class";
|
|
4
|
-
import { KritzelOctree } from "./structures/octree.structure";
|
|
5
|
-
import { KrtizelSelectionBox } from "./objects/selection-box.class";
|
|
6
|
-
import { RemoveObjectCommand } from "./commands/remove-object.command";
|
|
7
|
-
import { BatchCommand } from "./commands/batch.command";
|
|
8
|
-
import { AddObjectCommand } from "./commands/add-object.command";
|
|
9
|
-
import { AddSelectionGroupCommand } from "./commands/add-selection-group.command";
|
|
10
|
-
import { UpdateObjectCommand } from "./commands/update-object.command";
|
|
11
|
-
import { KritzelContextMenu } from "../components/ui/kritzel-context-menu/kritzel-context-menu";
|
|
12
|
-
import { KritzelToolRegistry } from "./registries/tool.registry";
|
|
13
|
-
import { DEFAULT_ENGINE_STATE } from "../configs/default-engine-state";
|
|
14
|
-
export class KritzelStore {
|
|
15
|
-
get history() {
|
|
16
|
-
return this._history;
|
|
17
|
-
}
|
|
18
|
-
get state() {
|
|
19
|
-
return this._state;
|
|
20
|
-
}
|
|
21
|
-
get currentZIndex() {
|
|
22
|
-
return this._state.objectsOctree.filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox)).length;
|
|
23
|
-
}
|
|
24
|
-
get allObjects() {
|
|
25
|
-
return this._state.objectsOctree.allObjects();
|
|
26
|
-
}
|
|
27
|
-
get selectedObjects() {
|
|
28
|
-
return this.allObjects.filter(o => !(o instanceof KritzelSelectionGroup)).filter(o => o.isSelected);
|
|
29
|
-
}
|
|
30
|
-
get offsetX() {
|
|
31
|
-
return this._state.host.getBoundingClientRect().left;
|
|
32
|
-
}
|
|
33
|
-
get offsetY() {
|
|
34
|
-
return this._state.host.getBoundingClientRect().top;
|
|
35
|
-
}
|
|
36
|
-
constructor(kritzelEngine) {
|
|
37
|
-
this._listeners = new Map();
|
|
38
|
-
this.objects = [];
|
|
39
|
-
this._state = DEFAULT_ENGINE_STATE;
|
|
40
|
-
this._kritzelEngine = kritzelEngine;
|
|
41
|
-
this._history = new KritzelHistory(this);
|
|
42
|
-
this._state.objectsOctree = new KritzelOctree({
|
|
43
|
-
x: -Infinity,
|
|
44
|
-
y: -Infinity,
|
|
45
|
-
z: -Infinity,
|
|
46
|
-
width: Infinity,
|
|
47
|
-
height: Infinity,
|
|
48
|
-
depth: Infinity,
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
rerender() {
|
|
52
|
-
const viewportBounds = {
|
|
53
|
-
x: -this._state.translateX / this._state.scale,
|
|
54
|
-
y: -this._state.translateY / this._state.scale,
|
|
55
|
-
z: this._state.scale,
|
|
56
|
-
width: this._state.viewportWidth / this._state.scale,
|
|
57
|
-
height: this._state.viewportHeight / this._state.scale,
|
|
58
|
-
depth: 100,
|
|
59
|
-
};
|
|
60
|
-
this.objects = this._state.objectsOctree.query(viewportBounds);
|
|
61
|
-
if (this._kritzelEngine) {
|
|
62
|
-
this._kritzelEngine.forceUpdate++;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
findObjectById(id) {
|
|
66
|
-
for (const object of this.allObjects) {
|
|
67
|
-
if (object.id === id) {
|
|
68
|
-
return object;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
deselectAllObjects() {
|
|
74
|
-
if (this._state.selectionGroup) {
|
|
75
|
-
this._history.executeCommand(new RemoveSelectionGroupCommand(this, this));
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
onStateChange(property, listener) {
|
|
79
|
-
if (!this._listeners.has(property)) {
|
|
80
|
-
this._listeners.set(property, new Set());
|
|
81
|
-
}
|
|
82
|
-
this._listeners.get(property).add(listener);
|
|
83
|
-
}
|
|
84
|
-
setState(property, value) {
|
|
85
|
-
const oldValue = this._state[property];
|
|
86
|
-
if (oldValue !== value) {
|
|
87
|
-
this._state[property] = value;
|
|
88
|
-
if (this._listeners.has(property)) {
|
|
89
|
-
this._listeners.get(property).forEach(listener => listener(value, oldValue, String(property)));
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
delete() {
|
|
94
|
-
if (!this.state.selectionGroup) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const deleteSelectedObjectsCommand = this.state.selectionGroup.objects.map(obj => new RemoveObjectCommand(this, this.state.selectionGroup, obj));
|
|
98
|
-
const removeSelectionGroupCommand = new RemoveSelectionGroupCommand(this, this.state.selectionGroup);
|
|
99
|
-
const commands = [...deleteSelectedObjectsCommand, removeSelectionGroupCommand];
|
|
100
|
-
this.history.executeCommand(new BatchCommand(this, this.state.selectionGroup, commands));
|
|
101
|
-
}
|
|
102
|
-
deleteObject(id, isHistoryUpdated = true) {
|
|
103
|
-
const object = this.findObjectById(id);
|
|
104
|
-
if (object) {
|
|
105
|
-
if (isHistoryUpdated) {
|
|
106
|
-
const removeObjectCommand = new RemoveObjectCommand(this, this, object);
|
|
107
|
-
this.history.executeCommand(removeObjectCommand);
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
this._state.objectsOctree.remove(obj => obj.id === id);
|
|
111
|
-
this.rerender();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
copy() {
|
|
116
|
-
this.state.copiedObjects = this.state.selectionGroup.copy();
|
|
117
|
-
}
|
|
118
|
-
paste(x, y) {
|
|
119
|
-
this.state.copiedObjects.isSelected = true;
|
|
120
|
-
const adjustedX = x !== undefined ? x : this.state.copiedObjects.translateX + 25;
|
|
121
|
-
const adjustedY = y !== undefined ? y : this.state.copiedObjects.translateY + 25;
|
|
122
|
-
this.state.copiedObjects.updatePosition(adjustedX, adjustedY);
|
|
123
|
-
const commands = [];
|
|
124
|
-
if (this.state.selectionGroup !== null) {
|
|
125
|
-
commands.push(new RemoveSelectionGroupCommand(this, this.state.selectionGroup));
|
|
126
|
-
}
|
|
127
|
-
const addCopiedObjectsCommands = this.state.copiedObjects.objects.map(obj => new AddObjectCommand(this, this, obj));
|
|
128
|
-
const addCopiedObjectsAsSelectionGroupCommand = new AddSelectionGroupCommand(this, this, this.state.copiedObjects);
|
|
129
|
-
commands.push(...addCopiedObjectsCommands, addCopiedObjectsAsSelectionGroupCommand);
|
|
130
|
-
this.history.executeCommand(new BatchCommand(this, this, commands));
|
|
131
|
-
this.state.isSelecting = false;
|
|
132
|
-
this.state.copiedObjects = this.state.selectionGroup.copy();
|
|
133
|
-
this.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
134
|
-
}
|
|
135
|
-
bringForward(object) {
|
|
136
|
-
const max = this.allObjects.length + 1;
|
|
137
|
-
const objects = object ? [object] : this.state.selectionGroup.objects;
|
|
138
|
-
const increaseZIndexCommands = objects.map(obj => {
|
|
139
|
-
if (obj.zIndex === max) {
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
return new UpdateObjectCommand(this, this, obj, { zIndex: obj.zIndex + 1 });
|
|
143
|
-
});
|
|
144
|
-
this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));
|
|
145
|
-
}
|
|
146
|
-
sendBackward(object) {
|
|
147
|
-
const min = 0;
|
|
148
|
-
const objects = object ? [object] : this.state.selectionGroup.objects;
|
|
149
|
-
const decreaseZIndexCommands = objects.map(obj => {
|
|
150
|
-
if (obj.zIndex === min) {
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
return new UpdateObjectCommand(this, this, obj, { zIndex: obj.zIndex - 1 });
|
|
154
|
-
});
|
|
155
|
-
this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));
|
|
156
|
-
}
|
|
157
|
-
bringToFront(object) {
|
|
158
|
-
const max = this.allObjects.length + 1;
|
|
159
|
-
const objects = object ? [object] : this.state.selectionGroup.objects;
|
|
160
|
-
const increaseZIndexCommands = objects.map(obj => {
|
|
161
|
-
return new UpdateObjectCommand(this, this, obj, { zIndex: max });
|
|
162
|
-
});
|
|
163
|
-
this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));
|
|
164
|
-
}
|
|
165
|
-
sendToBack(object) {
|
|
166
|
-
const min = -1;
|
|
167
|
-
const objects = object ? [object] : this.state.selectionGroup.objects;
|
|
168
|
-
const decreaseZIndexCommands = objects.map(obj => {
|
|
169
|
-
return new UpdateObjectCommand(this, this, obj, { zIndex: min });
|
|
170
|
-
});
|
|
171
|
-
this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));
|
|
172
|
-
}
|
|
173
|
-
selectObjects(objects) {
|
|
174
|
-
if (objects.length === 0) {
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
const selectionGroup = KritzelSelectionGroup.create(this);
|
|
178
|
-
objects.forEach(obj => {
|
|
179
|
-
obj.isSelected = false;
|
|
180
|
-
selectionGroup.addOrRemove(obj);
|
|
181
|
-
});
|
|
182
|
-
selectionGroup.isSelected = true;
|
|
183
|
-
this.state.selectionGroup = selectionGroup;
|
|
184
|
-
if (objects.length === 1) {
|
|
185
|
-
selectionGroup.rotation = selectionGroup.objects[0].rotation;
|
|
186
|
-
}
|
|
187
|
-
this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));
|
|
188
|
-
}
|
|
189
|
-
selectAllObjectsInViewport() {
|
|
190
|
-
const objectsInViewport = this._state.objectsOctree
|
|
191
|
-
.query({
|
|
192
|
-
x: -this._state.translateX / this._state.scale,
|
|
193
|
-
y: -this._state.translateY / this._state.scale,
|
|
194
|
-
z: this._state.scale,
|
|
195
|
-
width: this._state.viewportWidth / this._state.scale,
|
|
196
|
-
height: this._state.viewportHeight / this._state.scale,
|
|
197
|
-
depth: 100,
|
|
198
|
-
})
|
|
199
|
-
.filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox) && !(o instanceof KritzelContextMenu));
|
|
200
|
-
if (objectsInViewport.length > 0) {
|
|
201
|
-
const selectionGroup = KritzelSelectionGroup.create(this);
|
|
202
|
-
objectsInViewport.forEach(obj => {
|
|
203
|
-
obj.isSelected = false;
|
|
204
|
-
selectionGroup.addOrRemove(obj);
|
|
205
|
-
});
|
|
206
|
-
selectionGroup.isSelected = true;
|
|
207
|
-
this.state.isSelecting = false;
|
|
208
|
-
if (objectsInViewport.length === 1) {
|
|
209
|
-
selectionGroup.rotation = selectionGroup.objects[0].rotation;
|
|
210
|
-
}
|
|
211
|
-
this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));
|
|
212
|
-
this.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
clearSelection() {
|
|
216
|
-
const command = new RemoveSelectionGroupCommand(this, this.state.selectionGroup);
|
|
217
|
-
this.history.executeCommand(command);
|
|
218
|
-
this.state.selectionGroup = null;
|
|
219
|
-
this.state.selectionBox = null;
|
|
220
|
-
this.state.isSelecting = false;
|
|
221
|
-
this.state.isResizeHandleSelected = false;
|
|
222
|
-
this.state.isRotationHandleSelected = false;
|
|
223
|
-
}
|
|
224
|
-
resetActiveText() {
|
|
225
|
-
if (this.state.activeText && this.state.activeText.value === ' ') {
|
|
226
|
-
this.deleteObject(this.state.activeText.id, false);
|
|
227
|
-
this.history.undoStack.pop();
|
|
228
|
-
}
|
|
229
|
-
this.state.activeText = null;
|
|
230
|
-
}
|
|
231
|
-
getObjectFromPointerEvent(event, selector = '.object') {
|
|
232
|
-
var _a;
|
|
233
|
-
const shadowRoot = (_a = this.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
|
|
234
|
-
if (!shadowRoot)
|
|
235
|
-
return null;
|
|
236
|
-
const clientX = event.clientX;
|
|
237
|
-
const clientY = event.clientY;
|
|
238
|
-
const elementAtPoint = shadowRoot.elementFromPoint(clientX, clientY);
|
|
239
|
-
if (!elementAtPoint)
|
|
240
|
-
return null;
|
|
241
|
-
const selectedObject = elementAtPoint.closest(selector);
|
|
242
|
-
if (selectedObject) {
|
|
243
|
-
return this.allObjects.find(object => selectedObject.id === object.id);
|
|
244
|
-
}
|
|
245
|
-
return null;
|
|
246
|
-
}
|
|
247
|
-
getObjectsFromPointerEvent(event, selector = '.object') {
|
|
248
|
-
var _a;
|
|
249
|
-
const shadowRoot = (_a = this.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
|
|
250
|
-
if (!shadowRoot)
|
|
251
|
-
return [];
|
|
252
|
-
const clientX = event.clientX;
|
|
253
|
-
const clientY = event.clientY;
|
|
254
|
-
const elementsAtPoint = shadowRoot.elementsFromPoint(clientX, clientY);
|
|
255
|
-
if (!elementsAtPoint || elementsAtPoint.length === 0)
|
|
256
|
-
return [];
|
|
257
|
-
const objectIds = new Set();
|
|
258
|
-
elementsAtPoint.forEach(element => {
|
|
259
|
-
const selectedObject = element.closest(selector);
|
|
260
|
-
if (selectedObject && selectedObject.id) {
|
|
261
|
-
objectIds.add(selectedObject.id);
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
if (objectIds.size > 0) {
|
|
265
|
-
return this.allObjects.filter(object => objectIds.has(object.id)).sort((a, b) => b.zIndex - a.zIndex);
|
|
266
|
-
}
|
|
267
|
-
return [];
|
|
268
|
-
}
|
|
269
|
-
getCanvasPoint(event) {
|
|
270
|
-
if (!this.state.host) {
|
|
271
|
-
return { x: 0, y: 0 };
|
|
272
|
-
}
|
|
273
|
-
// Get the position of the kritzel-engine host element relative to the viewport
|
|
274
|
-
const hostRect = this.state.host.getBoundingClientRect();
|
|
275
|
-
// 1. Make the pointer coordinates relative to the host element
|
|
276
|
-
const xRelativeToHost = event.clientX - hostRect.left;
|
|
277
|
-
const yRelativeToHost = event.clientY - hostRect.top;
|
|
278
|
-
// 2. Reverse the translation applied to the #origin div
|
|
279
|
-
const xWithoutTranslate = xRelativeToHost - this.state.translateX;
|
|
280
|
-
const yWithoutTranslate = yRelativeToHost - this.state.translateY;
|
|
281
|
-
// 3. Reverse the scaling to get the final world coordinates
|
|
282
|
-
const worldX = xWithoutTranslate / this.state.scale;
|
|
283
|
-
const worldY = yWithoutTranslate / this.state.scale;
|
|
284
|
-
return { x: worldX, y: worldY };
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
//# sourceMappingURL=store.class.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.class.js","sourceRoot":"","sources":["../../src/classes/store.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelBaseObject } from './objects/base-object.class';\r\nimport { KritzelSelectionGroup } from './objects/selection-group.class';\r\nimport { RemoveSelectionGroupCommand } from './commands/remove-selection-group.command';\r\nimport { KritzelHistory } from './history.class';\r\nimport { KritzelEngineState } from '../interfaces/engine-state.interface';\r\nimport { KritzelOctree } from './structures/octree.structure';\r\nimport { KritzelBoundingBox } from '../interfaces/bounding-box.interface';\r\nimport { KrtizelSelectionBox } from './objects/selection-box.class';\r\nimport { StateChangeListener, StatePropertyKey } from '../types/state.types';\r\nimport { RemoveObjectCommand } from './commands/remove-object.command';\r\nimport { BatchCommand } from './commands/batch.command';\r\nimport { AddObjectCommand } from './commands/add-object.command';\r\nimport { AddSelectionGroupCommand } from './commands/add-selection-group.command';\r\nimport { UpdateObjectCommand } from './commands/update-object.command';\r\nimport { KritzelEngine } from '../components/core/kritzel-engine/kritzel-engine';\r\nimport { KritzelContextMenu } from '../components/ui/kritzel-context-menu/kritzel-context-menu';\r\nimport { KritzelToolRegistry } from './registries/tool.registry';\r\nimport { DEFAULT_ENGINE_STATE } from '../configs/default-engine-state';\r\n\r\nexport class KritzelStore {\r\n private readonly _kritzelEngine: KritzelEngine;\r\n\r\n private readonly _state: KritzelEngineState;\r\n\r\n private readonly _history: KritzelHistory;\r\n\r\n private readonly _listeners: Map<StatePropertyKey, Set<StateChangeListener<any>>> = new Map();\r\n\r\n objects: KritzelBaseObject<any>[] = [];\r\n\r\n get history(): KritzelHistory {\r\n return this._history;\r\n }\r\n\r\n get state(): KritzelEngineState {\r\n return this._state;\r\n }\r\n\r\n get currentZIndex() {\r\n return this._state.objectsOctree.filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox)).length;\r\n }\r\n\r\n get allObjects() {\r\n return this._state.objectsOctree.allObjects();\r\n }\r\n\r\n get selectedObjects() {\r\n return this.allObjects.filter(o => !(o instanceof KritzelSelectionGroup)).filter(o => o.isSelected);\r\n }\r\n\r\n get offsetX() {\r\n return this._state.host.getBoundingClientRect().left;\r\n }\r\n\r\n get offsetY() {\r\n return this._state.host.getBoundingClientRect().top;\r\n }\r\n\r\n constructor(kritzelEngine: KritzelEngine) {\r\n this._state = DEFAULT_ENGINE_STATE;\r\n this._kritzelEngine = kritzelEngine;\r\n this._history = new KritzelHistory(this);\r\n this._state.objectsOctree = new KritzelOctree<KritzelBaseObject<any>>({\r\n x: -Infinity,\r\n y: -Infinity,\r\n z: -Infinity,\r\n width: Infinity,\r\n height: Infinity,\r\n depth: Infinity,\r\n });\r\n }\r\n\r\n rerender() {\r\n const viewportBounds: KritzelBoundingBox = {\r\n x: -this._state.translateX / this._state.scale,\r\n y: -this._state.translateY / this._state.scale,\r\n z: this._state.scale,\r\n width: this._state.viewportWidth / this._state.scale,\r\n height: this._state.viewportHeight / this._state.scale,\r\n depth: 100,\r\n };\r\n\r\n this.objects = this._state.objectsOctree.query(viewportBounds);\r\n\r\n if (this._kritzelEngine) {\r\n this._kritzelEngine.forceUpdate++;\r\n }\r\n }\r\n\r\n findObjectById(id: string): KritzelBaseObject<any> | null {\r\n for (const object of this.allObjects) {\r\n if (object.id === id) {\r\n return object;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n deselectAllObjects(): void {\r\n if (this._state.selectionGroup) {\r\n this._history.executeCommand(new RemoveSelectionGroupCommand(this, this));\r\n }\r\n }\r\n\r\n onStateChange<K extends StatePropertyKey>(property: K, listener: StateChangeListener<KritzelEngineState[K]>): void {\r\n if (!this._listeners.has(property)) {\r\n this._listeners.set(property, new Set());\r\n }\r\n this._listeners.get(property).add(listener);\r\n }\r\n\r\n setState<K extends StatePropertyKey>(property: K, value: KritzelEngineState[K]): void {\r\n const oldValue = this._state[property];\r\n\r\n if (oldValue !== value) {\r\n this._state[property] = value;\r\n\r\n if (this._listeners.has(property)) {\r\n this._listeners.get(property).forEach(listener => listener(value, oldValue, String(property)));\r\n }\r\n }\r\n }\r\n\r\n delete() {\r\n if (!this.state.selectionGroup) {\r\n return;\r\n }\r\n\r\n const deleteSelectedObjectsCommand = this.state.selectionGroup.objects.map(obj => new RemoveObjectCommand(this, this.state.selectionGroup, obj));\r\n const removeSelectionGroupCommand = new RemoveSelectionGroupCommand(this, this.state.selectionGroup);\r\n const commands = [...deleteSelectedObjectsCommand, removeSelectionGroupCommand];\r\n\r\n this.history.executeCommand(new BatchCommand(this, this.state.selectionGroup, commands));\r\n }\r\n\r\n deleteObject(id: string, isHistoryUpdated: boolean = true) {\r\n const object = this.findObjectById(id);\r\n if (object) {\r\n if (isHistoryUpdated) {\r\n const removeObjectCommand = new RemoveObjectCommand(this, this, object);\r\n this.history.executeCommand(removeObjectCommand);\r\n } else {\r\n this._state.objectsOctree.remove(obj => obj.id === id);\r\n this.rerender();\r\n }\r\n }\r\n }\r\n\r\n copy() {\r\n this.state.copiedObjects = this.state.selectionGroup.copy() as KritzelSelectionGroup;\r\n }\r\n\r\n paste(x?: number, y?: number) {\r\n this.state.copiedObjects.isSelected = true;\r\n\r\n const adjustedX = x !== undefined ? x : this.state.copiedObjects.translateX + 25;\r\n const adjustedY = y !== undefined ? y : this.state.copiedObjects.translateY + 25;\r\n\r\n this.state.copiedObjects.updatePosition(adjustedX, adjustedY);\r\n\r\n const commands = [];\r\n if (this.state.selectionGroup !== null) {\r\n commands.push(new RemoveSelectionGroupCommand(this, this.state.selectionGroup));\r\n }\r\n\r\n const addCopiedObjectsCommands = this.state.copiedObjects.objects.map(obj => new AddObjectCommand(this, this, obj));\r\n const addCopiedObjectsAsSelectionGroupCommand = new AddSelectionGroupCommand(this, this, this.state.copiedObjects);\r\n\r\n commands.push(...addCopiedObjectsCommands, addCopiedObjectsAsSelectionGroupCommand);\r\n\r\n this.history.executeCommand(new BatchCommand(this, this, commands));\r\n\r\n this.state.isSelecting = false;\r\n this.state.copiedObjects = this.state.selectionGroup.copy() as KritzelSelectionGroup;\r\n this.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n }\r\n\r\n bringForward(object?: KritzelBaseObject<any>) {\r\n const max = this.allObjects.length + 1;\r\n const objects = object ? [object] : this.state.selectionGroup.objects;\r\n const increaseZIndexCommands = objects.map(obj => {\r\n if (obj.zIndex === max) {\r\n return;\r\n }\r\n return new UpdateObjectCommand(this, this, obj, { zIndex: obj.zIndex + 1 });\r\n });\r\n\r\n this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));\r\n }\r\n\r\n sendBackward(object?: KritzelBaseObject<any>) {\r\n const min = 0;\r\n const objects = object ? [object] : this.state.selectionGroup.objects;\r\n const decreaseZIndexCommands = objects.map(obj => {\r\n if (obj.zIndex === min) {\r\n return;\r\n }\r\n return new UpdateObjectCommand(this, this, obj, { zIndex: obj.zIndex - 1 });\r\n });\r\n\r\n this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));\r\n }\r\n\r\n bringToFront(object?: KritzelBaseObject<any>) {\r\n const max = this.allObjects.length + 1;\r\n const objects = object ? [object] : this.state.selectionGroup.objects;\r\n const increaseZIndexCommands = objects.map(obj => {\r\n return new UpdateObjectCommand(this, this, obj, { zIndex: max });\r\n });\r\n\r\n this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));\r\n }\r\n\r\n sendToBack(object?: KritzelBaseObject<any>) {\r\n const min = -1;\r\n const objects = object ? [object] : this.state.selectionGroup.objects;\r\n const decreaseZIndexCommands = objects.map(obj => {\r\n return new UpdateObjectCommand(this, this, obj, { zIndex: min });\r\n });\r\n\r\n this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));\r\n }\r\n\r\n selectObjects(objects: KritzelBaseObject<any>[]) {\r\n if (objects.length === 0) {\r\n return;\r\n }\r\n\r\n const selectionGroup = KritzelSelectionGroup.create(this);\r\n objects.forEach(obj => {\r\n obj.isSelected = false;\r\n selectionGroup.addOrRemove(obj);\r\n });\r\n\r\n selectionGroup.isSelected = true;\r\n\r\n this.state.selectionGroup = selectionGroup;\r\n\r\n if (objects.length === 1) {\r\n selectionGroup.rotation = selectionGroup.objects[0].rotation;\r\n }\r\n\r\n this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));\r\n }\r\n\r\n selectAllObjectsInViewport() {\r\n const objectsInViewport = this._state.objectsOctree\r\n .query({\r\n x: -this._state.translateX / this._state.scale,\r\n y: -this._state.translateY / this._state.scale,\r\n z: this._state.scale,\r\n width: this._state.viewportWidth / this._state.scale,\r\n height: this._state.viewportHeight / this._state.scale,\r\n depth: 100,\r\n })\r\n .filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox) && !(o instanceof KritzelContextMenu));\r\n\r\n if (objectsInViewport.length > 0) {\r\n const selectionGroup = KritzelSelectionGroup.create(this);\r\n\r\n objectsInViewport.forEach(obj => {\r\n obj.isSelected = false;\r\n selectionGroup.addOrRemove(obj);\r\n });\r\n\r\n selectionGroup.isSelected = true;\r\n\r\n this.state.isSelecting = false;\r\n\r\n if (objectsInViewport.length === 1) {\r\n selectionGroup.rotation = selectionGroup.objects[0].rotation;\r\n }\r\n\r\n this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));\r\n this.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n }\r\n }\r\n\r\n clearSelection() {\r\n const command = new RemoveSelectionGroupCommand(this, this.state.selectionGroup);\r\n this.history.executeCommand(command);\r\n\r\n this.state.selectionGroup = null;\r\n this.state.selectionBox = null;\r\n this.state.isSelecting = false;\r\n this.state.isResizeHandleSelected = false;\r\n this.state.isRotationHandleSelected = false;\r\n }\r\n\r\n resetActiveText() {\r\n if (this.state.activeText && this.state.activeText.value === ' ') {\r\n this.deleteObject(this.state.activeText.id, false);\r\n this.history.undoStack.pop();\r\n }\r\n\r\n this.state.activeText = null;\r\n }\r\n\r\n getObjectFromPointerEvent(event: PointerEvent, selector = '.object'): KritzelBaseObject<any> | null {\r\n const shadowRoot = this.state.host?.shadowRoot;\r\n if (!shadowRoot) return null;\r\n\r\n const clientX = event.clientX;\r\n const clientY = event.clientY;\r\n\r\n const elementAtPoint = shadowRoot.elementFromPoint(clientX, clientY);\r\n if (!elementAtPoint) return null;\r\n\r\n const selectedObject = elementAtPoint.closest(selector) as HTMLElement | null;\r\n\r\n if (selectedObject) {\r\n return this.allObjects.find(object => selectedObject.id === object.id);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getObjectsFromPointerEvent(event: PointerEvent, selector = '.object'): KritzelBaseObject<any>[] {\r\n const shadowRoot = this.state.host?.shadowRoot;\r\n if (!shadowRoot) return [];\r\n\r\n const clientX = event.clientX;\r\n const clientY = event.clientY;\r\n\r\n const elementsAtPoint = shadowRoot.elementsFromPoint(clientX, clientY);\r\n if (!elementsAtPoint || elementsAtPoint.length === 0) return [];\r\n\r\n const objectIds = new Set<string>();\r\n\r\n elementsAtPoint.forEach(element => {\r\n const selectedObject = element.closest(selector) as HTMLElement | null;\r\n if (selectedObject && selectedObject.id) {\r\n objectIds.add(selectedObject.id);\r\n }\r\n });\r\n\r\n if (objectIds.size > 0) {\r\n return this.allObjects.filter(object => objectIds.has(object.id)).sort((a, b) => b.zIndex - a.zIndex);\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public getCanvasPoint(event: PointerEvent): { x: number; y: number } {\r\n if (!this.state.host) {\r\n return { x: 0, y: 0 };\r\n }\r\n\r\n // Get the position of the kritzel-engine host element relative to the viewport\r\n const hostRect = this.state.host.getBoundingClientRect();\r\n\r\n // 1. Make the pointer coordinates relative to the host element\r\n const xRelativeToHost = event.clientX - hostRect.left;\r\n const yRelativeToHost = event.clientY - hostRect.top;\r\n\r\n // 2. Reverse the translation applied to the #origin div\r\n const xWithoutTranslate = xRelativeToHost - this.state.translateX;\r\n const yWithoutTranslate = yRelativeToHost - this.state.translateY;\r\n\r\n // 3. Reverse the scaling to get the final world coordinates\r\n const worldX = xWithoutTranslate / this.state.scale;\r\n const worldY = yWithoutTranslate / this.state.scale;\r\n\r\n return { x: worldX, y: worldY };\r\n }\r\n}\r\n"]}
|