kritzel-stencil 0.0.172 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -3
- package/dist/cjs/{default-line-tool.config-JuTDR6PF.js → default-line-tool.config-7eJND6Jb.js} +1516 -206
- package/dist/cjs/index-BeKMS-Zt.js +3280 -0
- package/dist/cjs/index.cjs.js +10 -7
- package/dist/cjs/kritzel-brush-style.cjs.entry.js +3 -4
- package/dist/cjs/kritzel-color_22.cjs.entry.js +103 -66
- package/dist/cjs/loader.cjs.js +2 -3
- package/dist/cjs/stencil.cjs.js +3 -4
- package/dist/collection/classes/core/core.class.js +0 -1
- package/dist/collection/classes/core/reviver.class.js +0 -1
- package/dist/collection/classes/core/store.class.js +0 -1
- package/dist/collection/classes/core/viewport.class.js +0 -1
- package/dist/collection/classes/core/workspace.class.js +0 -1
- package/dist/collection/classes/handlers/base.handler.js +0 -1
- package/dist/collection/classes/handlers/context-menu.handler.js +0 -1
- package/dist/collection/classes/handlers/hover.handler.js +0 -1
- package/dist/collection/classes/handlers/key.handler.js +0 -1
- package/dist/collection/classes/handlers/line-handle.handler.js +0 -1
- package/dist/collection/classes/handlers/move.handler.js +0 -1
- package/dist/collection/classes/handlers/resize.handler.js +0 -1
- package/dist/collection/classes/handlers/rotation.handler.js +0 -1
- package/dist/collection/classes/handlers/selection.handler.js +0 -1
- package/dist/collection/classes/managers/anchor.manager.js +0 -1
- package/dist/collection/classes/managers/cursor.manager.js +0 -1
- package/dist/collection/classes/objects/base-object.class.js +0 -1
- package/dist/collection/classes/objects/custom-element.class.js +0 -1
- package/dist/collection/classes/objects/group.class.js +0 -1
- package/dist/collection/classes/objects/image.class.js +0 -1
- package/dist/collection/classes/objects/line.class.js +0 -1
- package/dist/collection/classes/objects/path.class.js +0 -1
- package/dist/collection/classes/objects/selection-box.class.js +0 -1
- package/dist/collection/classes/objects/selection-group.class.js +0 -1
- package/dist/collection/classes/objects/shape.class.js +0 -1
- package/dist/collection/classes/objects/text.class.js +0 -1
- package/dist/collection/classes/providers/broadcast-sync-provider.class.js +0 -1
- package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js +0 -1
- package/dist/collection/classes/providers/indexeddb-sync-provider.class.js +0 -1
- package/dist/collection/classes/providers/websocket-sync-provider.class.js +0 -1
- package/dist/collection/classes/registries/icon-registry.class.js +0 -1
- package/dist/collection/classes/registries/tool.registry.js +0 -1
- package/dist/collection/classes/structures/app-state-map.structure.js +0 -1
- package/dist/collection/classes/structures/object-map.structure.js +0 -1
- package/dist/collection/classes/structures/quadtree.structure.js +0 -1
- package/dist/collection/classes/tools/base-tool.class.js +0 -1
- package/dist/collection/classes/tools/brush-tool.class.js +0 -1
- package/dist/collection/classes/tools/eraser-tool.class.js +0 -1
- package/dist/collection/classes/tools/image-tool.class.js +0 -1
- package/dist/collection/classes/tools/line-tool.class.js +0 -1
- package/dist/collection/classes/tools/selection-tool.class.js +0 -1
- package/dist/collection/classes/tools/shape-tool.class.js +0 -1
- package/dist/collection/classes/tools/text-tool.class.js +0 -1
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +0 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +1 -2
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +3 -4
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +0 -1
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js +0 -1
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +8 -3
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +8 -20
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +1 -2
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js +0 -1
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +0 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +8 -3
- package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +0 -1
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +0 -1
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +0 -1
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +0 -1
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +0 -1
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +0 -1
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +0 -1
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +0 -1
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +0 -1
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +1 -2
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +0 -1
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +0 -1
- package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +0 -1
- package/dist/collection/configs/default-brush-tool.config.js +0 -1
- package/dist/collection/configs/default-engine-config.js +0 -1
- package/dist/collection/configs/default-line-tool.config.js +0 -1
- package/dist/collection/configs/default-shape-tool.config.js +0 -1
- package/dist/collection/configs/default-sync.config.js +0 -1
- package/dist/collection/configs/default-text-tool.config.js +0 -1
- package/dist/collection/constants/core.constants.js +0 -1
- package/dist/collection/constants/engine.constants.js +0 -1
- package/dist/collection/enums/event-button.enum.js +0 -1
- package/dist/collection/enums/handle-type.enum.js +0 -1
- package/dist/collection/enums/shape-type.enum.js +0 -1
- package/dist/collection/helpers/class.helper.js +0 -1
- package/dist/collection/helpers/cursor.helper.js +0 -1
- package/dist/collection/helpers/devices.helper.js +0 -1
- package/dist/collection/helpers/event.helper.js +0 -1
- package/dist/collection/helpers/geometry.helper.js +0 -1
- package/dist/collection/helpers/html.helper.js +0 -1
- package/dist/collection/helpers/keyboard.helper.js +0 -1
- package/dist/collection/helpers/math.helper.js +0 -1
- package/dist/collection/helpers/object.helper.js +0 -1
- package/dist/collection/index.js +0 -1
- package/dist/collection/interfaces/anchor.interface.js +0 -1
- package/dist/collection/interfaces/arrow-head.interface.js +0 -1
- package/dist/collection/interfaces/bounding-box.interface.js +0 -1
- package/dist/collection/interfaces/clonable.interface.js +0 -1
- package/dist/collection/interfaces/context-menu-item.interface.js +0 -1
- package/dist/collection/interfaces/debug-info.interface.js +0 -1
- package/dist/collection/interfaces/engine-state.interface.js +0 -1
- package/dist/collection/interfaces/line-options.interface.js +0 -1
- package/dist/collection/interfaces/menu-item.interface.js +0 -1
- package/dist/collection/interfaces/object.interface.js +0 -1
- package/dist/collection/interfaces/path-options.interface.js +0 -1
- package/dist/collection/interfaces/point.interface.js +0 -1
- package/dist/collection/interfaces/polygon.interface.js +0 -1
- package/dist/collection/interfaces/selection-state.interface.js +0 -1
- package/dist/collection/interfaces/serializable.interface.js +0 -1
- package/dist/collection/interfaces/shortcut.interface.js +0 -1
- package/dist/collection/interfaces/sync-config.interface.js +0 -1
- package/dist/collection/interfaces/sync-provider.interface.js +0 -1
- package/dist/collection/interfaces/tool.interface.js +0 -1
- package/dist/collection/interfaces/toolbar-control.interface.js +0 -1
- package/dist/collection/interfaces/undo-state.interface.js +0 -1
- package/dist/collection/types/deep-readonly.type.js +0 -1
- package/dist/collection/types/state.types.js +0 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -1477
- package/dist/components/kritzel-brush-style.js +1 -67
- package/dist/components/kritzel-color-palette.js +1 -9
- package/dist/components/kritzel-color.js +1 -9
- package/dist/components/kritzel-context-menu.js +1 -9
- package/dist/components/kritzel-control-brush-config.js +1 -9
- package/dist/components/kritzel-control-text-config.js +1 -9
- package/dist/components/kritzel-controls.js +1 -9
- package/dist/components/kritzel-cursor-trail.js +1 -9
- package/dist/components/kritzel-dropdown.js +1 -9
- package/dist/components/kritzel-editor.js +1 -605
- package/dist/components/kritzel-engine.js +1 -9
- package/dist/components/kritzel-font-family.js +1 -9
- package/dist/components/kritzel-font-size.js +1 -9
- package/dist/components/kritzel-font.js +1 -9
- package/dist/components/kritzel-icon.js +1 -9
- package/dist/components/kritzel-menu-item.js +1 -9
- package/dist/components/kritzel-menu.js +1 -9
- package/dist/components/kritzel-portal.js +1 -9
- package/dist/components/kritzel-split-button.js +1 -9
- package/dist/components/kritzel-stroke-size.js +1 -9
- package/dist/components/kritzel-tooltip.js +1 -9
- package/dist/components/kritzel-utility-panel.js +1 -9
- package/dist/components/kritzel-workspace-manager.js +1 -9
- package/dist/components/p-1z-ds26_.js +1 -0
- package/dist/components/p-4FEa4ADy.js +1 -0
- package/dist/components/p-B0kd2rUI.js +1 -16
- package/dist/components/p-B7Fdo5QJ.js +1 -0
- package/dist/components/p-BXaWhpO2.js +1 -0
- package/dist/components/p-Bj_Og27M.js +1 -0
- package/dist/components/p-BtuXeItZ.js +1 -0
- package/dist/components/p-C-d2IH4v.js +1 -0
- package/dist/components/p-C3UriJh7.js +1 -0
- package/dist/components/p-C4krHoUl.js +1 -0
- package/dist/components/p-C6qB08BS.js +1 -68
- package/dist/components/p-CF5L2Gdl.js +1 -0
- package/dist/components/p-CXzfYQ_u.js +1 -0
- package/dist/components/p-CeKT_dTd.js +1 -0
- package/dist/components/p-Cp15toXH.js +1 -0
- package/dist/components/p-Cy77SpWt.js +1 -0
- package/dist/components/p-D1tfzpy8.js +1 -0
- package/dist/components/p-D3LRBk2t.js +9 -0
- package/dist/components/p-D5ZsALCP.js +1 -0
- package/dist/components/p-D8W6LE-c.js +1 -11
- package/dist/components/p-DB5s1NY4.js +1 -0
- package/dist/components/p-DTezr6w9.js +1 -0
- package/dist/components/p-Du1vxHy8.js +1 -0
- package/dist/components/p-IAqZFssU.js +1 -0
- package/dist/components/p-g0N9j_uT.js +1 -0
- package/dist/components/p-l10It7Nm.js +1 -30
- package/dist/components/p-n789Y3S-.js +1 -45
- package/dist/esm/app-globals-DQuL1Twl.js +0 -3
- package/dist/esm/{default-line-tool.config-CuBm2vpW.js → default-line-tool.config-CD5sTKH-.js} +1515 -205
- package/dist/esm/index-BqhmuUH2.js +3253 -0
- package/dist/esm/index.js +11 -8
- package/dist/esm/kritzel-brush-style.entry.js +3 -4
- package/dist/esm/kritzel-color_22.entry.js +103 -66
- package/dist/esm/loader.js +3 -4
- package/dist/esm/stencil.js +4 -5
- package/dist/stencil/index.esm.js +1 -2
- package/dist/stencil/p-09295079.entry.js +1 -0
- package/dist/stencil/p-381c0e9c.entry.js +9 -0
- package/dist/stencil/p-BqhmuUH2.js +2 -0
- package/dist/stencil/p-CD5sTKH-.js +1 -0
- package/dist/stencil/p-DQuL1Twl.js +1 -2
- package/dist/stencil/stencil.esm.js +1 -2
- package/dist/types/components/shared/kritzel-color-palette/kritzel-color-palette.d.ts +1 -0
- package/dist/types/components/shared/kritzel-font-size/kritzel-font-size.d.ts +1 -0
- package/dist/types/stencil-public-runtime.d.ts +57 -3
- package/package.json +6 -1
- package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
- package/dist/cjs/default-line-tool.config-JuTDR6PF.js.map +0 -1
- package/dist/cjs/index-Cj__YTlG.js +0 -1650
- package/dist/cjs/index-Cj__YTlG.js.map +0 -1
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/kritzel-brush-style.entry.cjs.js.map +0 -1
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/stencil.cjs.js.map +0 -1
- package/dist/collection/classes/core/core.class.js.map +0 -1
- package/dist/collection/classes/core/reviver.class.js.map +0 -1
- package/dist/collection/classes/core/store.class.js.map +0 -1
- package/dist/collection/classes/core/viewport.class.js.map +0 -1
- package/dist/collection/classes/core/workspace.class.js.map +0 -1
- package/dist/collection/classes/handlers/base.handler.js.map +0 -1
- package/dist/collection/classes/handlers/context-menu.handler.js.map +0 -1
- package/dist/collection/classes/handlers/hover.handler.js.map +0 -1
- package/dist/collection/classes/handlers/key.handler.js.map +0 -1
- package/dist/collection/classes/handlers/line-handle.handler.js.map +0 -1
- package/dist/collection/classes/handlers/move.handler.js.map +0 -1
- package/dist/collection/classes/handlers/resize.handler.js.map +0 -1
- package/dist/collection/classes/handlers/rotation.handler.js.map +0 -1
- package/dist/collection/classes/handlers/selection.handler.js.map +0 -1
- package/dist/collection/classes/managers/anchor.manager.js.map +0 -1
- package/dist/collection/classes/managers/cursor.manager.js.map +0 -1
- package/dist/collection/classes/objects/base-object.class.js.map +0 -1
- package/dist/collection/classes/objects/custom-element.class.js.map +0 -1
- package/dist/collection/classes/objects/group.class.js.map +0 -1
- package/dist/collection/classes/objects/image.class.js.map +0 -1
- package/dist/collection/classes/objects/line.class.js.map +0 -1
- package/dist/collection/classes/objects/path.class.js.map +0 -1
- package/dist/collection/classes/objects/selection-box.class.js.map +0 -1
- package/dist/collection/classes/objects/selection-group.class.js.map +0 -1
- package/dist/collection/classes/objects/shape.class.js.map +0 -1
- package/dist/collection/classes/objects/text.class.js.map +0 -1
- package/dist/collection/classes/providers/broadcast-sync-provider.class.js.map +0 -1
- package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js.map +0 -1
- package/dist/collection/classes/providers/indexeddb-sync-provider.class.js.map +0 -1
- package/dist/collection/classes/providers/websocket-sync-provider.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.map +0 -1
- package/dist/collection/classes/structures/app-state-map.structure.js.map +0 -1
- package/dist/collection/classes/structures/object-map.structure.js.map +0 -1
- package/dist/collection/classes/structures/quadtree.structure.js.map +0 -1
- package/dist/collection/classes/tools/base-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/brush-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/eraser-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/image-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/line-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/selection-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/shape-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/text-tool.class.js.map +0 -1
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +0 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +0 -1
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +0 -1
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +0 -1
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +0 -1
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +0 -1
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +0 -1
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +0 -1
- 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.js.map +0 -1
- package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +0 -1
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +0 -1
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +0 -1
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +0 -1
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +0 -1
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +0 -1
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +0 -1
- 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.js.map +0 -1
- 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.js.map +0 -1
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +0 -1
- package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +0 -1
- package/dist/collection/configs/default-brush-tool.config.js.map +0 -1
- package/dist/collection/configs/default-engine-config.js.map +0 -1
- package/dist/collection/configs/default-line-tool.config.js.map +0 -1
- package/dist/collection/configs/default-shape-tool.config.js.map +0 -1
- package/dist/collection/configs/default-sync.config.js.map +0 -1
- package/dist/collection/configs/default-text-tool.config.js.map +0 -1
- package/dist/collection/constants/core.constants.js.map +0 -1
- package/dist/collection/constants/engine.constants.js.map +0 -1
- package/dist/collection/enums/event-button.enum.js.map +0 -1
- package/dist/collection/enums/handle-type.enum.js.map +0 -1
- package/dist/collection/enums/shape-type.enum.js.map +0 -1
- package/dist/collection/helpers/class.helper.js.map +0 -1
- package/dist/collection/helpers/cursor.helper.js.map +0 -1
- package/dist/collection/helpers/devices.helper.js.map +0 -1
- package/dist/collection/helpers/event.helper.js.map +0 -1
- package/dist/collection/helpers/geometry.helper.js.map +0 -1
- package/dist/collection/helpers/html.helper.js.map +0 -1
- package/dist/collection/helpers/keyboard.helper.js.map +0 -1
- package/dist/collection/helpers/math.helper.js.map +0 -1
- package/dist/collection/helpers/object.helper.js.map +0 -1
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/interfaces/anchor.interface.js.map +0 -1
- package/dist/collection/interfaces/arrow-head.interface.js.map +0 -1
- package/dist/collection/interfaces/bounding-box.interface.js.map +0 -1
- package/dist/collection/interfaces/clonable.interface.js.map +0 -1
- package/dist/collection/interfaces/context-menu-item.interface.js.map +0 -1
- package/dist/collection/interfaces/debug-info.interface.js.map +0 -1
- package/dist/collection/interfaces/engine-state.interface.js.map +0 -1
- package/dist/collection/interfaces/line-options.interface.js.map +0 -1
- package/dist/collection/interfaces/menu-item.interface.js.map +0 -1
- package/dist/collection/interfaces/object.interface.js.map +0 -1
- package/dist/collection/interfaces/path-options.interface.js.map +0 -1
- package/dist/collection/interfaces/point.interface.js.map +0 -1
- package/dist/collection/interfaces/polygon.interface.js.map +0 -1
- package/dist/collection/interfaces/selection-state.interface.js.map +0 -1
- package/dist/collection/interfaces/serializable.interface.js.map +0 -1
- package/dist/collection/interfaces/shortcut.interface.js.map +0 -1
- package/dist/collection/interfaces/sync-config.interface.js.map +0 -1
- package/dist/collection/interfaces/sync-provider.interface.js.map +0 -1
- package/dist/collection/interfaces/tool.interface.js.map +0 -1
- package/dist/collection/interfaces/toolbar-control.interface.js.map +0 -1
- package/dist/collection/interfaces/undo-state.interface.js.map +0 -1
- package/dist/collection/types/deep-readonly.type.js.map +0 -1
- package/dist/collection/types/state.types.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/kritzel-brush-style.js.map +0 -1
- package/dist/components/kritzel-color-palette.js.map +0 -1
- package/dist/components/kritzel-color.js.map +0 -1
- package/dist/components/kritzel-context-menu.js.map +0 -1
- package/dist/components/kritzel-control-brush-config.js.map +0 -1
- package/dist/components/kritzel-control-text-config.js.map +0 -1
- package/dist/components/kritzel-controls.js.map +0 -1
- package/dist/components/kritzel-cursor-trail.js.map +0 -1
- package/dist/components/kritzel-dropdown.js.map +0 -1
- package/dist/components/kritzel-editor.js.map +0 -1
- package/dist/components/kritzel-engine.js.map +0 -1
- package/dist/components/kritzel-font-family.js.map +0 -1
- package/dist/components/kritzel-font-size.js.map +0 -1
- package/dist/components/kritzel-font.js.map +0 -1
- package/dist/components/kritzel-icon.js.map +0 -1
- package/dist/components/kritzel-menu-item.js.map +0 -1
- package/dist/components/kritzel-menu.js.map +0 -1
- package/dist/components/kritzel-portal.js.map +0 -1
- package/dist/components/kritzel-split-button.js.map +0 -1
- package/dist/components/kritzel-stroke-size.js.map +0 -1
- package/dist/components/kritzel-tooltip.js.map +0 -1
- package/dist/components/kritzel-utility-panel.js.map +0 -1
- package/dist/components/kritzel-workspace-manager.js.map +0 -1
- package/dist/components/p-B0kd2rUI.js.map +0 -1
- package/dist/components/p-B80ry-r4.js +0 -103
- package/dist/components/p-B80ry-r4.js.map +0 -1
- package/dist/components/p-BC5-_yPs.js +0 -75
- package/dist/components/p-BC5-_yPs.js.map +0 -1
- package/dist/components/p-BUsg2vtg.js +0 -14897
- package/dist/components/p-BUsg2vtg.js.map +0 -1
- package/dist/components/p-Bo-NQ68K.js +0 -132
- package/dist/components/p-Bo-NQ68K.js.map +0 -1
- package/dist/components/p-C6qB08BS.js.map +0 -1
- package/dist/components/p-C720oASC.js +0 -201
- package/dist/components/p-C720oASC.js.map +0 -1
- package/dist/components/p-C92UCXyc.js +0 -308
- package/dist/components/p-C92UCXyc.js.map +0 -1
- package/dist/components/p-CAxHKvww.js +0 -119
- package/dist/components/p-CAxHKvww.js.map +0 -1
- package/dist/components/p-CD9cCvhR.js +0 -272
- package/dist/components/p-CD9cCvhR.js.map +0 -1
- package/dist/components/p-CIlIrPRp.js +0 -83
- package/dist/components/p-CIlIrPRp.js.map +0 -1
- package/dist/components/p-CIts5Uma.js +0 -110
- package/dist/components/p-CIts5Uma.js.map +0 -1
- package/dist/components/p-Cdw55iW6.js +0 -281
- package/dist/components/p-Cdw55iW6.js.map +0 -1
- package/dist/components/p-CwkUrTy1.js +0 -1367
- package/dist/components/p-CwkUrTy1.js.map +0 -1
- package/dist/components/p-D8W6LE-c.js.map +0 -1
- package/dist/components/p-DI7JQMsC.js +0 -46
- package/dist/components/p-DI7JQMsC.js.map +0 -1
- package/dist/components/p-DmYjCy-z.js +0 -62
- package/dist/components/p-DmYjCy-z.js.map +0 -1
- package/dist/components/p-DoD6F7Y4.js +0 -157
- package/dist/components/p-DoD6F7Y4.js.map +0 -1
- package/dist/components/p-DyVWaSSc.js +0 -55
- package/dist/components/p-DyVWaSSc.js.map +0 -1
- package/dist/components/p-WLXyD_eY.js +0 -111
- package/dist/components/p-WLXyD_eY.js.map +0 -1
- package/dist/components/p-c7AGmG3p.js +0 -73
- package/dist/components/p-c7AGmG3p.js.map +0 -1
- package/dist/components/p-fm-bG_zL.js +0 -231
- package/dist/components/p-fm-bG_zL.js.map +0 -1
- package/dist/components/p-fqLbEfE0.js +0 -39586
- package/dist/components/p-fqLbEfE0.js.map +0 -1
- package/dist/components/p-l10It7Nm.js.map +0 -1
- package/dist/components/p-n789Y3S-.js.map +0 -1
- package/dist/components/p-qWf2T62p.js +0 -57
- package/dist/components/p-qWf2T62p.js.map +0 -1
- package/dist/components/p-vLN8eXFe.js +0 -106
- package/dist/components/p-vLN8eXFe.js.map +0 -1
- package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
- package/dist/esm/default-line-tool.config-CuBm2vpW.js.map +0 -1
- package/dist/esm/index-SGde3HXB.js +0 -1623
- package/dist/esm/index-SGde3HXB.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/kritzel-brush-style.entry.js.map +0 -1
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/stencil.js.map +0 -1
- package/dist/stencil/index.esm.js.map +0 -1
- package/dist/stencil/kritzel-brush-style.entry.esm.js.map +0 -1
- package/dist/stencil/loader.esm.js.map +0 -1
- package/dist/stencil/p-0a9b6696.entry.js +0 -2
- package/dist/stencil/p-0a9b6696.entry.js.map +0 -1
- package/dist/stencil/p-0fdce6ce.entry.js +0 -10
- package/dist/stencil/p-0fdce6ce.entry.js.map +0 -1
- package/dist/stencil/p-CuBm2vpW.js +0 -2
- package/dist/stencil/p-CuBm2vpW.js.map +0 -1
- package/dist/stencil/p-DQuL1Twl.js.map +0 -1
- package/dist/stencil/p-SGde3HXB.js +0 -3
- package/dist/stencil/p-SGde3HXB.js.map +0 -1
- package/dist/stencil/stencil.esm.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["src/classes/providers/broadcast-sync-provider.class.ts","../../node_modules/lib0/broadcastchannel.js","../../node_modules/y-protocols/sync.js","../../node_modules/y-protocols/auth.js","../../node_modules/y-protocols/awareness.js","../../node_modules/lib0/url.js","../../node_modules/y-websocket/src/y-websocket.js","src/classes/providers/websocket-sync-provider.class.ts","src/classes/providers/hocuspocus-sync-provider.class.ts"],"sourcesContent":["import * as Y from 'yjs';\r\nimport * as encoding from 'lib0/encoding';\r\nimport * as decoding from 'lib0/decoding';\r\nimport { ISyncProvider } from '../../interfaces/sync-provider.interface';\r\n\r\n/**\r\n * BroadcastChannel sync provider for cross-tab synchronization\r\n * This is a lightweight alternative to y-webrtc for browser-tab-only sync\r\n */\r\nexport class BroadcastSyncProvider implements ISyncProvider {\r\n private readonly doc: Y.Doc;\r\n private readonly channel: BroadcastChannel;\r\n private _synced: boolean = false;\r\n\r\n constructor(docName: string, doc: Y.Doc, _options?: any) {\r\n this.doc = doc;\r\n this.channel = new BroadcastChannel(docName);\r\n\r\n // Handle incoming messages from other tabs\r\n this.channel.onmessage = (event) => {\r\n this.handleMessage(event.data);\r\n };\r\n\r\n // Listen to document updates and broadcast them\r\n this.doc.on('update', this.handleDocUpdate);\r\n\r\n // Send initial sync request\r\n this.broadcastSync();\r\n \r\n // Mark as synced after a short delay (to receive any pending updates)\r\n setTimeout(() => {\r\n this._synced = true;\r\n }, 100);\r\n\r\n console.info(`BroadcastChannel Provider initialized: ${docName}`);\r\n }\r\n\r\n private handleDocUpdate = (update: Uint8Array, origin: any) => {\r\n // Don't broadcast updates that came from other tabs (to prevent loops)\r\n if (origin !== this) {\r\n const encoder = encoding.createEncoder();\r\n encoding.writeVarUint(encoder, 0); // Message type: sync update\r\n encoding.writeVarUint8Array(encoder, update);\r\n this.channel.postMessage(encoding.toUint8Array(encoder));\r\n }\r\n };\r\n\r\n private handleMessage(message: ArrayBuffer) {\r\n const decoder = decoding.createDecoder(new Uint8Array(message));\r\n const messageType = decoding.readVarUint(decoder);\r\n\r\n switch (messageType) {\r\n case 0: // Sync update\r\n const update = decoding.readVarUint8Array(decoder);\r\n Y.applyUpdate(this.doc, update, this);\r\n break;\r\n case 1: // Sync request\r\n this.broadcastSync();\r\n break;\r\n case 2: // Sync response\r\n const stateVector = decoding.readVarUint8Array(decoder);\r\n const updateResponse = Y.encodeStateAsUpdate(this.doc, stateVector);\r\n if (updateResponse.length > 0) {\r\n const encoder = encoding.createEncoder();\r\n encoding.writeVarUint(encoder, 0); // Send as regular update\r\n encoding.writeVarUint8Array(encoder, updateResponse);\r\n this.channel.postMessage(encoding.toUint8Array(encoder));\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private broadcastSync() {\r\n // Broadcast our current state vector to request missing updates\r\n const encoder = encoding.createEncoder();\r\n encoding.writeVarUint(encoder, 2); // Message type: sync response\r\n encoding.writeVarUint8Array(encoder, Y.encodeStateVector(this.doc));\r\n this.channel.postMessage(encoding.toUint8Array(encoder));\r\n }\r\n\r\n async connect(): Promise<void> {\r\n // Wait for initial sync to complete\r\n if (this._synced) {\r\n return;\r\n }\r\n \r\n return new Promise<void>((resolve) => {\r\n const checkSync = () => {\r\n if (this._synced) {\r\n resolve();\r\n } else {\r\n setTimeout(checkSync, 50);\r\n }\r\n };\r\n checkSync();\r\n });\r\n }\r\n\r\n disconnect(): void {\r\n // BroadcastChannel doesn't have explicit disconnect\r\n }\r\n\r\n destroy(): void {\r\n this.doc.off('update', this.handleDocUpdate);\r\n this.channel.close();\r\n }\r\n}\r\n","/* eslint-env browser */\n\n/**\n * Helpers for cross-tab communication using broadcastchannel with LocalStorage fallback.\n *\n * ```js\n * // In browser window A:\n * broadcastchannel.subscribe('my events', data => console.log(data))\n * broadcastchannel.publish('my events', 'Hello world!') // => A: 'Hello world!' fires synchronously in same tab\n *\n * // In browser window B:\n * broadcastchannel.publish('my events', 'hello from tab B') // => A: 'hello from tab B'\n * ```\n *\n * @module broadcastchannel\n */\n\n// @todo before next major: use Uint8Array instead as buffer object\n\nimport * as map from './map.js'\nimport * as set from './set.js'\nimport * as buffer from './buffer.js'\nimport * as storage from './storage.js'\n\n/**\n * @typedef {Object} Channel\n * @property {Set<function(any, any):any>} Channel.subs\n * @property {any} Channel.bc\n */\n\n/**\n * @type {Map<string, Channel>}\n */\nconst channels = new Map()\n\n/* c8 ignore start */\nclass LocalStoragePolyfill {\n /**\n * @param {string} room\n */\n constructor (room) {\n this.room = room\n /**\n * @type {null|function({data:ArrayBuffer}):void}\n */\n this.onmessage = null\n /**\n * @param {any} e\n */\n this._onChange = e => e.key === room && this.onmessage !== null && this.onmessage({ data: buffer.fromBase64(e.newValue || '') })\n storage.onChange(this._onChange)\n }\n\n /**\n * @param {ArrayBuffer} buf\n */\n postMessage (buf) {\n storage.varStorage.setItem(this.room, buffer.toBase64(buffer.createUint8ArrayFromArrayBuffer(buf)))\n }\n\n close () {\n storage.offChange(this._onChange)\n }\n}\n/* c8 ignore stop */\n\n// Use BroadcastChannel or Polyfill\n/* c8 ignore next */\nconst BC = typeof BroadcastChannel === 'undefined' ? LocalStoragePolyfill : BroadcastChannel\n\n/**\n * @param {string} room\n * @return {Channel}\n */\nconst getChannel = room =>\n map.setIfUndefined(channels, room, () => {\n const subs = set.create()\n const bc = new BC(room)\n /**\n * @param {{data:ArrayBuffer}} e\n */\n /* c8 ignore next */\n bc.onmessage = e => subs.forEach(sub => sub(e.data, 'broadcastchannel'))\n return {\n bc, subs\n }\n })\n\n/**\n * Subscribe to global `publish` events.\n *\n * @function\n * @param {string} room\n * @param {function(any, any):any} f\n */\nexport const subscribe = (room, f) => {\n getChannel(room).subs.add(f)\n return f\n}\n\n/**\n * Unsubscribe from `publish` global events.\n *\n * @function\n * @param {string} room\n * @param {function(any, any):any} f\n */\nexport const unsubscribe = (room, f) => {\n const channel = getChannel(room)\n const unsubscribed = channel.subs.delete(f)\n if (unsubscribed && channel.subs.size === 0) {\n channel.bc.close()\n channels.delete(room)\n }\n return unsubscribed\n}\n\n/**\n * Publish data to all subscribers (including subscribers on this tab)\n *\n * @function\n * @param {string} room\n * @param {any} data\n * @param {any} [origin]\n */\nexport const publish = (room, data, origin = null) => {\n const c = getChannel(room)\n c.bc.postMessage(data)\n c.subs.forEach(sub => sub(data, origin))\n}\n","/**\n * @module sync-protocol\n */\n\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\nimport * as Y from 'yjs'\n\n/**\n * @typedef {Map<number, number>} StateMap\n */\n\n/**\n * Core Yjs defines two message types:\n * • YjsSyncStep1: Includes the State Set of the sending client. When received, the client should reply with YjsSyncStep2.\n * • YjsSyncStep2: Includes all missing structs and the complete delete set. When received, the client is assured that it\n * received all information from the remote client.\n *\n * In a peer-to-peer network, you may want to introduce a SyncDone message type. Both parties should initiate the connection\n * with SyncStep1. When a client received SyncStep2, it should reply with SyncDone. When the local client received both\n * SyncStep2 and SyncDone, it is assured that it is synced to the remote client.\n *\n * In a client-server model, you want to handle this differently: The client should initiate the connection with SyncStep1.\n * When the server receives SyncStep1, it should reply with SyncStep2 immediately followed by SyncStep1. The client replies\n * with SyncStep2 when it receives SyncStep1. Optionally the server may send a SyncDone after it received SyncStep2, so the\n * client knows that the sync is finished. There are two reasons for this more elaborated sync model: 1. This protocol can\n * easily be implemented on top of http and websockets. 2. The server should only reply to requests, and not initiate them.\n * Therefore it is necessary that the client initiates the sync.\n *\n * Construction of a message:\n * [messageType : varUint, message definition..]\n *\n * Note: A message does not include information about the room name. This must to be handled by the upper layer protocol!\n *\n * stringify[messageType] stringifies a message definition (messageType is already read from the bufffer)\n */\n\nexport const messageYjsSyncStep1 = 0\nexport const messageYjsSyncStep2 = 1\nexport const messageYjsUpdate = 2\n\n/**\n * Create a sync step 1 message based on the state of the current shared document.\n *\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n */\nexport const writeSyncStep1 = (encoder, doc) => {\n encoding.writeVarUint(encoder, messageYjsSyncStep1)\n const sv = Y.encodeStateVector(doc)\n encoding.writeVarUint8Array(encoder, sv)\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n * @param {Uint8Array} [encodedStateVector]\n */\nexport const writeSyncStep2 = (encoder, doc, encodedStateVector) => {\n encoding.writeVarUint(encoder, messageYjsSyncStep2)\n encoding.writeVarUint8Array(encoder, Y.encodeStateAsUpdate(doc, encodedStateVector))\n}\n\n/**\n * Read SyncStep1 message and reply with SyncStep2.\n *\n * @param {decoding.Decoder} decoder The reply to the received message\n * @param {encoding.Encoder} encoder The received message\n * @param {Y.Doc} doc\n */\nexport const readSyncStep1 = (decoder, encoder, doc) =>\n writeSyncStep2(encoder, doc, decoding.readVarUint8Array(decoder))\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncStep2 = (decoder, doc, transactionOrigin) => {\n try {\n Y.applyUpdate(doc, decoding.readVarUint8Array(decoder), transactionOrigin)\n } catch (error) {\n // This catches errors that are thrown by event handlers\n console.error('Caught error while handling a Yjs update', error)\n }\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Uint8Array} update\n */\nexport const writeUpdate = (encoder, update) => {\n encoding.writeVarUint(encoder, messageYjsUpdate)\n encoding.writeVarUint8Array(encoder, update)\n}\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readUpdate = readSyncStep2\n\n/**\n * @param {decoding.Decoder} decoder A message received from another client\n * @param {encoding.Encoder} encoder The reply message. Does not need to be sent if empty.\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncMessage = (decoder, encoder, doc, transactionOrigin) => {\n const messageType = decoding.readVarUint(decoder)\n switch (messageType) {\n case messageYjsSyncStep1:\n readSyncStep1(decoder, encoder, doc)\n break\n case messageYjsSyncStep2:\n readSyncStep2(decoder, doc, transactionOrigin)\n break\n case messageYjsUpdate:\n readUpdate(decoder, doc, transactionOrigin)\n break\n default:\n throw new Error('Unknown message type')\n }\n return messageType\n}\n","\nimport * as Y from 'yjs' // eslint-disable-line\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\n\nexport const messagePermissionDenied = 0\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {string} reason\n */\nexport const writePermissionDenied = (encoder, reason) => {\n encoding.writeVarUint(encoder, messagePermissionDenied)\n encoding.writeVarString(encoder, reason)\n}\n\n/**\n * @callback PermissionDeniedHandler\n * @param {any} y\n * @param {string} reason\n */\n\n/**\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} y\n * @param {PermissionDeniedHandler} permissionDeniedHandler\n */\nexport const readAuthMessage = (decoder, y, permissionDeniedHandler) => {\n switch (decoding.readVarUint(decoder)) {\n case messagePermissionDenied: permissionDeniedHandler(y, decoding.readVarString(decoder))\n }\n}\n","/**\n * @module awareness-protocol\n */\n\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\nimport * as time from 'lib0/time'\nimport * as math from 'lib0/math'\nimport { Observable } from 'lib0/observable'\nimport * as f from 'lib0/function'\nimport * as Y from 'yjs' // eslint-disable-line\n\nexport const outdatedTimeout = 30000\n\n/**\n * @typedef {Object} MetaClientState\n * @property {number} MetaClientState.clock\n * @property {number} MetaClientState.lastUpdated unix timestamp\n */\n\n/**\n * The Awareness class implements a simple shared state protocol that can be used for non-persistent data like awareness information\n * (cursor, username, status, ..). Each client can update its own local state and listen to state changes of\n * remote clients. Every client may set a state of a remote peer to `null` to mark the client as offline.\n *\n * Each client is identified by a unique client id (something we borrow from `doc.clientID`). A client can override\n * its own state by propagating a message with an increasing timestamp (`clock`). If such a message is received, it is\n * applied if the known state of that client is older than the new state (`clock < newClock`). If a client thinks that\n * a remote client is offline, it may propagate a message with\n * `{ clock: currentClientClock, state: null, client: remoteClient }`. If such a\n * message is received, and the known clock of that client equals the received clock, it will override the state with `null`.\n *\n * Before a client disconnects, it should propagate a `null` state with an updated clock.\n *\n * Awareness states must be updated every 30 seconds. Otherwise the Awareness instance will delete the client state.\n *\n * @extends {Observable<string>}\n */\nexport class Awareness extends Observable {\n /**\n * @param {Y.Doc} doc\n */\n constructor (doc) {\n super()\n this.doc = doc\n /**\n * @type {number}\n */\n this.clientID = doc.clientID\n /**\n * Maps from client id to client state\n * @type {Map<number, Object<string, any>>}\n */\n this.states = new Map()\n /**\n * @type {Map<number, MetaClientState>}\n */\n this.meta = new Map()\n this._checkInterval = /** @type {any} */ (setInterval(() => {\n const now = time.getUnixTime()\n if (this.getLocalState() !== null && (outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ (this.meta.get(this.clientID)).lastUpdated)) {\n // renew local clock\n this.setLocalState(this.getLocalState())\n }\n /**\n * @type {Array<number>}\n */\n const remove = []\n this.meta.forEach((meta, clientid) => {\n if (clientid !== this.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) {\n remove.push(clientid)\n }\n })\n if (remove.length > 0) {\n removeAwarenessStates(this, remove, 'timeout')\n }\n }, math.floor(outdatedTimeout / 10)))\n doc.on('destroy', () => {\n this.destroy()\n })\n this.setLocalState({})\n }\n\n destroy () {\n this.emit('destroy', [this])\n this.setLocalState(null)\n super.destroy()\n clearInterval(this._checkInterval)\n }\n\n /**\n * @return {Object<string,any>|null}\n */\n getLocalState () {\n return this.states.get(this.clientID) || null\n }\n\n /**\n * @param {Object<string,any>|null} state\n */\n setLocalState (state) {\n const clientID = this.clientID\n const currLocalMeta = this.meta.get(clientID)\n const clock = currLocalMeta === undefined ? 0 : currLocalMeta.clock + 1\n const prevState = this.states.get(clientID)\n if (state === null) {\n this.states.delete(clientID)\n } else {\n this.states.set(clientID, state)\n }\n this.meta.set(clientID, {\n clock,\n lastUpdated: time.getUnixTime()\n })\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n if (state === null) {\n removed.push(clientID)\n } else if (prevState == null) {\n if (state != null) {\n added.push(clientID)\n }\n } else {\n updated.push(clientID)\n if (!f.equalityDeep(prevState, state)) {\n filteredUpdated.push(clientID)\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n this.emit('change', [{ added, updated: filteredUpdated, removed }, 'local'])\n }\n this.emit('update', [{ added, updated, removed }, 'local'])\n }\n\n /**\n * @param {string} field\n * @param {any} value\n */\n setLocalStateField (field, value) {\n const state = this.getLocalState()\n if (state !== null) {\n this.setLocalState({\n ...state,\n [field]: value\n })\n }\n }\n\n /**\n * @return {Map<number,Object<string,any>>}\n */\n getStates () {\n return this.states\n }\n}\n\n/**\n * Mark (remote) clients as inactive and remove them from the list of active peers.\n * This change will be propagated to remote clients.\n *\n * @param {Awareness} awareness\n * @param {Array<number>} clients\n * @param {any} origin\n */\nexport const removeAwarenessStates = (awareness, clients, origin) => {\n const removed = []\n for (let i = 0; i < clients.length; i++) {\n const clientID = clients[i]\n if (awareness.states.has(clientID)) {\n awareness.states.delete(clientID)\n if (clientID === awareness.clientID) {\n const curMeta = /** @type {MetaClientState} */ (awareness.meta.get(clientID))\n awareness.meta.set(clientID, {\n clock: curMeta.clock + 1,\n lastUpdated: time.getUnixTime()\n })\n }\n removed.push(clientID)\n }\n }\n if (removed.length > 0) {\n awareness.emit('change', [{ added: [], updated: [], removed }, origin])\n awareness.emit('update', [{ added: [], updated: [], removed }, origin])\n }\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Array<number>} clients\n * @return {Uint8Array}\n */\nexport const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {\n const len = clients.length\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = clients[i]\n const state = states.get(clientID) || null\n const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(state))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Modify the content of an awareness update before re-encoding it to an awareness update.\n *\n * This might be useful when you have a central server that wants to ensure that clients\n * cant hijack somebody elses identity.\n *\n * @param {Uint8Array} update\n * @param {function(any):any} modify\n * @return {Uint8Array}\n */\nexport const modifyAwarenessUpdate = (update, modify) => {\n const decoder = decoding.createDecoder(update)\n const encoder = encoding.createEncoder()\n const len = decoding.readVarUint(decoder)\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n const clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const modifiedState = modify(state)\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(modifiedState))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Uint8Array} update\n * @param {any} origin This will be added to the emitted change event\n */\nexport const applyAwarenessUpdate = (awareness, update, origin) => {\n const decoder = decoding.createDecoder(update)\n const timestamp = time.getUnixTime()\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n const len = decoding.readVarUint(decoder)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n let clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const clientMeta = awareness.meta.get(clientID)\n const prevState = awareness.states.get(clientID)\n const currClock = clientMeta === undefined ? 0 : clientMeta.clock\n if (currClock < clock || (currClock === clock && state === null && awareness.states.has(clientID))) {\n if (state === null) {\n // never let a remote client remove this local state\n if (clientID === awareness.clientID && awareness.getLocalState() != null) {\n // remote client removed the local state. Do not remote state. Broadcast a message indicating\n // that this client still exists by increasing the clock\n clock++\n } else {\n awareness.states.delete(clientID)\n }\n } else {\n awareness.states.set(clientID, state)\n }\n awareness.meta.set(clientID, {\n clock,\n lastUpdated: timestamp\n })\n if (clientMeta === undefined && state !== null) {\n added.push(clientID)\n } else if (clientMeta !== undefined && state === null) {\n removed.push(clientID)\n } else if (state !== null) {\n if (!f.equalityDeep(state, prevState)) {\n filteredUpdated.push(clientID)\n }\n updated.push(clientID)\n }\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n awareness.emit('change', [{\n added, updated: filteredUpdated, removed\n }, origin])\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n awareness.emit('update', [{\n added, updated, removed\n }, origin])\n }\n}\n","/**\n * Utility module to work with urls.\n *\n * @module url\n */\n\nimport * as object from './object.js'\n\n/**\n * Parse query parameters from an url.\n *\n * @param {string} url\n * @return {Object<string,string>}\n */\nexport const decodeQueryParams = url => {\n /**\n * @type {Object<string,string>}\n */\n const query = {}\n const urlQuerySplit = url.split('?')\n const pairs = urlQuerySplit[urlQuerySplit.length - 1].split('&')\n for (let i = 0; i < pairs.length; i++) {\n const item = pairs[i]\n if (item.length > 0) {\n const pair = item.split('=')\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '')\n }\n }\n return query\n}\n\n/**\n * @param {Object<string,string>} params\n * @return {string}\n */\nexport const encodeQueryParams = params =>\n object.map(params, (val, key) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`).join('&')\n","/**\n * @module provider/websocket\n */\n\n/* eslint-env browser */\n\nimport * as Y from 'yjs' // eslint-disable-line\nimport * as bc from 'lib0/broadcastchannel'\nimport * as time from 'lib0/time'\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\nimport * as syncProtocol from 'y-protocols/sync'\nimport * as authProtocol from 'y-protocols/auth'\nimport * as awarenessProtocol from 'y-protocols/awareness'\nimport { ObservableV2 } from 'lib0/observable'\nimport * as math from 'lib0/math'\nimport * as url from 'lib0/url'\nimport * as env from 'lib0/environment'\n\nexport const messageSync = 0\nexport const messageQueryAwareness = 3\nexport const messageAwareness = 1\nexport const messageAuth = 2\n\n/**\n * encoder, decoder, provider, emitSynced, messageType\n * @type {Array<function(encoding.Encoder, decoding.Decoder, WebsocketProvider, boolean, number):void>}\n */\nconst messageHandlers = []\n\nmessageHandlers[messageSync] = (\n encoder,\n decoder,\n provider,\n emitSynced,\n _messageType\n) => {\n encoding.writeVarUint(encoder, messageSync)\n const syncMessageType = syncProtocol.readSyncMessage(\n decoder,\n encoder,\n provider.doc,\n provider\n )\n if (\n emitSynced && syncMessageType === syncProtocol.messageYjsSyncStep2 &&\n !provider.synced\n ) {\n provider.synced = true\n }\n}\n\nmessageHandlers[messageQueryAwareness] = (\n encoder,\n _decoder,\n provider,\n _emitSynced,\n _messageType\n) => {\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(\n encoder,\n awarenessProtocol.encodeAwarenessUpdate(\n provider.awareness,\n Array.from(provider.awareness.getStates().keys())\n )\n )\n}\n\nmessageHandlers[messageAwareness] = (\n _encoder,\n decoder,\n provider,\n _emitSynced,\n _messageType\n) => {\n awarenessProtocol.applyAwarenessUpdate(\n provider.awareness,\n decoding.readVarUint8Array(decoder),\n provider\n )\n}\n\nmessageHandlers[messageAuth] = (\n _encoder,\n decoder,\n provider,\n _emitSynced,\n _messageType\n) => {\n authProtocol.readAuthMessage(\n decoder,\n provider.doc,\n (_ydoc, reason) => permissionDeniedHandler(provider, reason)\n )\n}\n\n// @todo - this should depend on awareness.outdatedTime\nconst messageReconnectTimeout = 30000\n\n/**\n * @param {WebsocketProvider} provider\n * @param {string} reason\n */\nconst permissionDeniedHandler = (provider, reason) =>\n console.warn(`Permission denied to access ${provider.url}.\\n${reason}`)\n\n/**\n * @param {WebsocketProvider} provider\n * @param {Uint8Array} buf\n * @param {boolean} emitSynced\n * @return {encoding.Encoder}\n */\nconst readMessage = (provider, buf, emitSynced) => {\n const decoder = decoding.createDecoder(buf)\n const encoder = encoding.createEncoder()\n const messageType = decoding.readVarUint(decoder)\n const messageHandler = provider.messageHandlers[messageType]\n if (/** @type {any} */ (messageHandler)) {\n messageHandler(encoder, decoder, provider, emitSynced, messageType)\n } else {\n console.error('Unable to compute message')\n }\n return encoder\n}\n\n/**\n * Outsource this function so that a new websocket connection is created immediately.\n * I suspect that the `ws.onclose` event is not always fired if there are network issues.\n *\n * @param {WebsocketProvider} provider\n * @param {WebSocket} ws\n * @param {CloseEvent | null} event\n */\nconst closeWebsocketConnection = (provider, ws, event) => {\n if (ws === provider.ws) {\n provider.emit('connection-close', [event, provider])\n provider.ws = null\n ws.close()\n provider.wsconnecting = false\n if (provider.wsconnected) {\n provider.wsconnected = false\n provider.synced = false\n // update awareness (all users except local left)\n awarenessProtocol.removeAwarenessStates(\n provider.awareness,\n Array.from(provider.awareness.getStates().keys()).filter((client) =>\n client !== provider.doc.clientID\n ),\n provider\n )\n provider.emit('status', [{\n status: 'disconnected'\n }])\n } else {\n provider.wsUnsuccessfulReconnects++\n }\n // Start with no reconnect timeout and increase timeout by\n // using exponential backoff starting with 100ms\n setTimeout(\n setupWS,\n math.min(\n math.pow(2, provider.wsUnsuccessfulReconnects) * 100,\n provider.maxBackoffTime\n ),\n provider\n )\n }\n}\n\n/**\n * @param {WebsocketProvider} provider\n */\nconst setupWS = (provider) => {\n if (provider.shouldConnect && provider.ws === null) {\n const websocket = new provider._WS(provider.url, provider.protocols)\n websocket.binaryType = 'arraybuffer'\n provider.ws = websocket\n provider.wsconnecting = true\n provider.wsconnected = false\n provider.synced = false\n\n websocket.onmessage = (event) => {\n provider.wsLastMessageReceived = time.getUnixTime()\n const encoder = readMessage(provider, new Uint8Array(event.data), true)\n if (encoding.length(encoder) > 1) {\n websocket.send(encoding.toUint8Array(encoder))\n }\n }\n websocket.onerror = (event) => {\n provider.emit('connection-error', [event, provider])\n }\n websocket.onclose = (event) => {\n closeWebsocketConnection(provider, websocket, event)\n }\n websocket.onopen = () => {\n provider.wsLastMessageReceived = time.getUnixTime()\n provider.wsconnecting = false\n provider.wsconnected = true\n provider.wsUnsuccessfulReconnects = 0\n provider.emit('status', [{\n status: 'connected'\n }])\n // always send sync step 1 when connected\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeSyncStep1(encoder, provider.doc)\n websocket.send(encoding.toUint8Array(encoder))\n // broadcast local awareness state\n if (provider.awareness.getLocalState() !== null) {\n const encoderAwarenessState = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessState, messageAwareness)\n encoding.writeVarUint8Array(\n encoderAwarenessState,\n awarenessProtocol.encodeAwarenessUpdate(provider.awareness, [\n provider.doc.clientID\n ])\n )\n websocket.send(encoding.toUint8Array(encoderAwarenessState))\n }\n }\n provider.emit('status', [{\n status: 'connecting'\n }])\n }\n}\n\n/**\n * @param {WebsocketProvider} provider\n * @param {ArrayBuffer} buf\n */\nconst broadcastMessage = (provider, buf) => {\n const ws = provider.ws\n if (provider.wsconnected && ws && ws.readyState === ws.OPEN) {\n ws.send(buf)\n }\n if (provider.bcconnected) {\n bc.publish(provider.bcChannel, buf, provider)\n }\n}\n\n/**\n * Websocket Provider for Yjs. Creates a websocket connection to sync the shared document.\n * The document name is attached to the provided url. I.e. the following example\n * creates a websocket connection to http://localhost:1234/my-document-name\n *\n * @example\n * import * as Y from 'yjs'\n * import { WebsocketProvider } from 'y-websocket'\n * const doc = new Y.Doc()\n * const provider = new WebsocketProvider('http://localhost:1234', 'my-document-name', doc)\n *\n * @extends {ObservableV2<{ 'connection-close': (event: CloseEvent | null, provider: WebsocketProvider) => any, 'status': (event: { status: 'connected' | 'disconnected' | 'connecting' }) => any, 'connection-error': (event: Event, provider: WebsocketProvider) => any, 'sync': (state: boolean) => any }>}\n */\nexport class WebsocketProvider extends ObservableV2 {\n /**\n * @param {string} serverUrl\n * @param {string} roomname\n * @param {Y.Doc} doc\n * @param {object} opts\n * @param {boolean} [opts.connect]\n * @param {awarenessProtocol.Awareness} [opts.awareness]\n * @param {Object<string,string>} [opts.params] specify url parameters\n * @param {Array<string>} [opts.protocols] specify websocket protocols\n * @param {typeof WebSocket} [opts.WebSocketPolyfill] Optionall provide a WebSocket polyfill\n * @param {number} [opts.resyncInterval] Request server state every `resyncInterval` milliseconds\n * @param {number} [opts.maxBackoffTime] Maximum amount of time to wait before trying to reconnect (we try to reconnect using exponential backoff)\n * @param {boolean} [opts.disableBc] Disable cross-tab BroadcastChannel communication\n */\n constructor (serverUrl, roomname, doc, {\n connect = true,\n awareness = new awarenessProtocol.Awareness(doc),\n params = {},\n protocols = [],\n WebSocketPolyfill = WebSocket,\n resyncInterval = -1,\n maxBackoffTime = 2500,\n disableBc = false\n } = {}) {\n super()\n // ensure that serverUrl does not end with /\n while (serverUrl[serverUrl.length - 1] === '/') {\n serverUrl = serverUrl.slice(0, serverUrl.length - 1)\n }\n this.serverUrl = serverUrl\n this.bcChannel = serverUrl + '/' + roomname\n this.maxBackoffTime = maxBackoffTime\n /**\n * The specified url parameters. This can be safely updated. The changed parameters will be used\n * when a new connection is established.\n * @type {Object<string,string>}\n */\n this.params = params\n this.protocols = protocols\n this.roomname = roomname\n this.doc = doc\n this._WS = WebSocketPolyfill\n this.awareness = awareness\n this.wsconnected = false\n this.wsconnecting = false\n this.bcconnected = false\n this.disableBc = disableBc\n this.wsUnsuccessfulReconnects = 0\n this.messageHandlers = messageHandlers.slice()\n /**\n * @type {boolean}\n */\n this._synced = false\n /**\n * @type {WebSocket?}\n */\n this.ws = null\n this.wsLastMessageReceived = 0\n /**\n * Whether to connect to other peers or not\n * @type {boolean}\n */\n this.shouldConnect = connect\n\n /**\n * @type {number}\n */\n this._resyncInterval = 0\n if (resyncInterval > 0) {\n this._resyncInterval = /** @type {any} */ (setInterval(() => {\n if (this.ws && this.ws.readyState === WebSocket.OPEN) {\n // resend sync step 1\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeSyncStep1(encoder, doc)\n this.ws.send(encoding.toUint8Array(encoder))\n }\n }, resyncInterval))\n }\n\n /**\n * @param {ArrayBuffer} data\n * @param {any} origin\n */\n this._bcSubscriber = (data, origin) => {\n if (origin !== this) {\n const encoder = readMessage(this, new Uint8Array(data), false)\n if (encoding.length(encoder) > 1) {\n bc.publish(this.bcChannel, encoding.toUint8Array(encoder), this)\n }\n }\n }\n /**\n * Listens to Yjs updates and sends them to remote peers (ws and broadcastchannel)\n * @param {Uint8Array} update\n * @param {any} origin\n */\n this._updateHandler = (update, origin) => {\n if (origin !== this) {\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageSync)\n syncProtocol.writeUpdate(encoder, update)\n broadcastMessage(this, encoding.toUint8Array(encoder))\n }\n }\n this.doc.on('update', this._updateHandler)\n /**\n * @param {any} changed\n * @param {any} _origin\n */\n this._awarenessUpdateHandler = ({ added, updated, removed }, _origin) => {\n const changedClients = added.concat(updated).concat(removed)\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(\n encoder,\n awarenessProtocol.encodeAwarenessUpdate(awareness, changedClients)\n )\n broadcastMessage(this, encoding.toUint8Array(encoder))\n }\n this._exitHandler = () => {\n awarenessProtocol.removeAwarenessStates(\n this.awareness,\n [doc.clientID],\n 'app closed'\n )\n }\n if (env.isNode && typeof process !== 'undefined') {\n process.on('exit', this._exitHandler)\n }\n awareness.on('update', this._awarenessUpdateHandler)\n this._checkInterval = /** @type {any} */ (setInterval(() => {\n if (\n this.wsconnected &&\n messageReconnectTimeout <\n time.getUnixTime() - this.wsLastMessageReceived\n ) {\n // no message received in a long time - not even your own awareness\n // updates (which are updated every 15 seconds)\n closeWebsocketConnection(this, /** @type {WebSocket} */ (this.ws), null)\n }\n }, messageReconnectTimeout / 10))\n if (connect) {\n this.connect()\n }\n }\n\n get url () {\n const encodedParams = url.encodeQueryParams(this.params)\n return this.serverUrl + '/' + this.roomname +\n (encodedParams.length === 0 ? '' : '?' + encodedParams)\n }\n\n /**\n * @type {boolean}\n */\n get synced () {\n return this._synced\n }\n\n set synced (state) {\n if (this._synced !== state) {\n this._synced = state\n // @ts-ignore\n this.emit('synced', [state])\n this.emit('sync', [state])\n }\n }\n\n destroy () {\n if (this._resyncInterval !== 0) {\n clearInterval(this._resyncInterval)\n }\n clearInterval(this._checkInterval)\n this.disconnect()\n if (env.isNode && typeof process !== 'undefined') {\n process.off('exit', this._exitHandler)\n }\n this.awareness.off('update', this._awarenessUpdateHandler)\n this.doc.off('update', this._updateHandler)\n super.destroy()\n }\n\n connectBc () {\n if (this.disableBc) {\n return\n }\n if (!this.bcconnected) {\n bc.subscribe(this.bcChannel, this._bcSubscriber)\n this.bcconnected = true\n }\n // send sync step1 to bc\n // write sync step 1\n const encoderSync = encoding.createEncoder()\n encoding.writeVarUint(encoderSync, messageSync)\n syncProtocol.writeSyncStep1(encoderSync, this.doc)\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderSync), this)\n // broadcast local state\n const encoderState = encoding.createEncoder()\n encoding.writeVarUint(encoderState, messageSync)\n syncProtocol.writeSyncStep2(encoderState, this.doc)\n bc.publish(this.bcChannel, encoding.toUint8Array(encoderState), this)\n // write queryAwareness\n const encoderAwarenessQuery = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessQuery, messageQueryAwareness)\n bc.publish(\n this.bcChannel,\n encoding.toUint8Array(encoderAwarenessQuery),\n this\n )\n // broadcast local awareness state\n const encoderAwarenessState = encoding.createEncoder()\n encoding.writeVarUint(encoderAwarenessState, messageAwareness)\n encoding.writeVarUint8Array(\n encoderAwarenessState,\n awarenessProtocol.encodeAwarenessUpdate(this.awareness, [\n this.doc.clientID\n ])\n )\n bc.publish(\n this.bcChannel,\n encoding.toUint8Array(encoderAwarenessState),\n this\n )\n }\n\n disconnectBc () {\n // broadcast message with local awareness state set to null (indicating disconnect)\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, messageAwareness)\n encoding.writeVarUint8Array(\n encoder,\n awarenessProtocol.encodeAwarenessUpdate(this.awareness, [\n this.doc.clientID\n ], new Map())\n )\n broadcastMessage(this, encoding.toUint8Array(encoder))\n if (this.bcconnected) {\n bc.unsubscribe(this.bcChannel, this._bcSubscriber)\n this.bcconnected = false\n }\n }\n\n disconnect () {\n this.shouldConnect = false\n this.disconnectBc()\n if (this.ws !== null) {\n closeWebsocketConnection(this, this.ws, null)\n }\n }\n\n connect () {\n this.shouldConnect = true\n if (!this.wsconnected && this.ws === null) {\n setupWS(this)\n this.connectBc()\n }\n }\n}\n","import * as Y from 'yjs';\r\nimport { WebsocketProvider } from 'y-websocket';\r\nimport { ISyncProvider, ProviderFactory } from '../../interfaces/sync-provider.interface';\r\n\r\n/**\r\n * Options for WebSocket sync provider\r\n */\r\nexport interface WebSocketOptions {\r\n /**\r\n * WebSocket server URL (optional, defaults to ws://localhost:1234)\r\n */\r\n url?: string;\r\n\r\n /**\r\n * Room/document name (optional, defaults to docName)\r\n */\r\n roomName?: string;\r\n\r\n /**\r\n * Connection parameters (optional)\r\n */\r\n params?: Record<string, string>;\r\n\r\n /**\r\n * WebSocket protocols (optional)\r\n */\r\n protocols?: string[];\r\n\r\n /**\r\n * Custom WebSocket constructor (optional, for Node.js environments)\r\n */\r\n WebSocketPolyfill?: any;\r\n\r\n /**\r\n * Awareness protocol options (optional)\r\n */\r\n awareness?: any;\r\n\r\n /**\r\n * Maximum number of connection attempts (optional, defaults to Infinity)\r\n */\r\n maxBackoffTime?: number;\r\n}\r\n\r\n/**\r\n * WebSocket sync provider for real-time collaboration\r\n */\r\nexport class WebSocketSyncProvider implements ISyncProvider {\r\n private provider: WebsocketProvider;\r\n private isConnected: boolean = false;\r\n\r\n constructor(docName: string, doc: Y.Doc, options?: WebSocketOptions) {\r\n const url = options?.url || 'ws://localhost:1234';\r\n const roomName = options?.roomName || docName;\r\n\r\n this.provider = new WebsocketProvider(url, roomName, doc, {\r\n params: options?.params,\r\n protocols: options?.protocols,\r\n WebSocketPolyfill: options?.WebSocketPolyfill,\r\n awareness: options?.awareness,\r\n maxBackoffTime: options?.maxBackoffTime,\r\n disableBc: true,\r\n });\r\n\r\n this.setupEventListeners();\r\n console.info(`WebSocket Provider initialized: ${url}/${roomName}`);\r\n }\r\n\r\n /**\r\n * Static factory method for creating WebSocketSyncProvider with configuration options\r\n * Returns a ProviderFactory that can be used in sync configuration\r\n */\r\n static with(options?: WebSocketOptions): ProviderFactory {\r\n return {\r\n create: (docName: string, doc: Y.Doc) => {\r\n return new WebSocketSyncProvider(docName, doc, options);\r\n },\r\n };\r\n }\r\n\r\n private setupEventListeners(): void {\r\n this.provider.on('status', ({ status }: { status: string }) => {\r\n if (status === 'connected') {\r\n this.isConnected = true;\r\n console.info('WebSocket connected');\r\n } else if (status === 'disconnected') {\r\n this.isConnected = false;\r\n console.info('WebSocket disconnected');\r\n }\r\n });\r\n\r\n this.provider.on('sync', (synced: boolean) => {\r\n if (synced) {\r\n console.info('WebSocket synced');\r\n }\r\n });\r\n }\r\n\r\n async connect(): Promise<void> {\r\n if (this.isConnected) {\r\n return;\r\n }\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n reject(new Error('WebSocket connection timeout'));\r\n }, 10000); // 10 second timeout\r\n\r\n const statusHandler = ({ status }: { status: string }) => {\r\n if (status === 'connected') {\r\n clearTimeout(timeout);\r\n this.provider.off('status', statusHandler);\r\n this.isConnected = true;\r\n resolve();\r\n }\r\n };\r\n\r\n this.provider.on('status', statusHandler);\r\n\r\n // If already connected, resolve immediately\r\n if (this.provider.wsconnected) {\r\n clearTimeout(timeout);\r\n this.provider.off('status', statusHandler);\r\n this.isConnected = true;\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n disconnect(): void {\r\n if (this.provider) {\r\n this.provider.disconnect();\r\n }\r\n this.isConnected = false;\r\n }\r\n\r\n destroy(): void {\r\n if (this.provider) {\r\n this.provider.destroy();\r\n }\r\n this.isConnected = false;\r\n }\r\n}\r\n","import * as Y from 'yjs';\r\nimport { HocuspocusProvider, HocuspocusProviderWebsocket } from '@hocuspocus/provider';\r\nimport { ISyncProvider, ProviderFactory } from '../../interfaces/sync-provider.interface';\r\n\r\n/**\r\n * Options for Hocuspocus sync provider\r\n */\r\nexport interface HocuspocusOptions {\r\n /**\r\n * Hocuspocus server URL (optional, defaults to ws://localhost:1234)\r\n */\r\n url?: string;\r\n\r\n /**\r\n * Document name (optional, defaults to docName)\r\n */\r\n name?: string;\r\n\r\n /**\r\n * Authentication token (optional)\r\n */\r\n token?: string | (() => string) | (() => Promise<string>);\r\n\r\n /**\r\n * Shared WebSocket provider for multiplexing (optional)\r\n * If provided, multiple documents will share the same WebSocket connection\r\n */\r\n websocketProvider?: HocuspocusProviderWebsocket;\r\n\r\n /**\r\n * Quiet mode - suppress console output (optional, defaults to false)\r\n */\r\n quiet?: boolean;\r\n\r\n /**\r\n * Callback when connected (optional)\r\n */\r\n onConnect?: () => void;\r\n\r\n /**\r\n * Callback when disconnected (optional)\r\n */\r\n onDisconnect?: () => void;\r\n\r\n /**\r\n * Callback when synced (optional)\r\n */\r\n onSynced?: () => void;\r\n\r\n /**\r\n * Callback when authentication failed (optional)\r\n */\r\n onAuthenticationFailed?: (data: any) => void;\r\n\r\n /**\r\n * Callback when connection status changes (optional)\r\n */\r\n onStatus?: (data: { status: string }) => void;\r\n\r\n /**\r\n * Force sync interval in milliseconds (optional, false to disable)\r\n */\r\n forceSyncInterval?: false | number;\r\n\r\n /**\r\n * WebSocket polyfill for Node.js environments (optional)\r\n */\r\n WebSocketPolyfill?: any;\r\n}\r\n\r\n/**\r\n * Options for creating a shared WebSocket connection\r\n */\r\nexport interface HocuspocusWebSocketOptions {\r\n /**\r\n * Hocuspocus server URL\r\n */\r\n url: string;\r\n\r\n /**\r\n * WebSocket polyfill for Node.js environments (optional)\r\n */\r\n WebSocketPolyfill?: any;\r\n\r\n /**\r\n * Callback when WebSocket connects (optional)\r\n */\r\n onConnect?: () => void;\r\n\r\n /**\r\n * Callback when WebSocket disconnects (optional)\r\n */\r\n onDisconnect?: () => void;\r\n\r\n /**\r\n * Callback when connection status changes (optional)\r\n */\r\n onStatus?: (data: { status: string }) => void;\r\n}\r\n\r\n/**\r\n * Hocuspocus sync provider for real-time collaboration\r\n * Supports multiplexing - multiple documents can share the same WebSocket connection\r\n */\r\nexport class HocuspocusSyncProvider implements ISyncProvider {\r\n private provider: HocuspocusProvider;\r\n private isConnected: boolean = false;\r\n private isSynced: boolean = false;\r\n private usesSharedSocket: boolean = false;\r\n\r\n // Static shared WebSocket instance for multiplexing\r\n private static sharedWebSocketProvider: HocuspocusProviderWebsocket | null = null;\r\n\r\n constructor(docName: string, doc: Y.Doc, options?: HocuspocusOptions) {\r\n const name = options?.name || docName;\r\n const url = options?.url || 'ws://localhost:1234';\r\n\r\n // Use provided websocketProvider or the static shared one\r\n const websocketProvider = options?.websocketProvider || HocuspocusSyncProvider.sharedWebSocketProvider;\r\n\r\n if (websocketProvider) {\r\n // Multiplexing mode - use shared WebSocket connection\r\n this.usesSharedSocket = true;\r\n\r\n const config: any = {\r\n websocketProvider,\r\n name,\r\n document: doc,\r\n token: options?.token || null,\r\n onConnect: () => {\r\n this.isConnected = true;\r\n if (!options?.quiet) {\r\n console.info(`Hocuspocus connected: ${name}`);\r\n }\r\n if (options?.onConnect) {\r\n options.onConnect();\r\n }\r\n },\r\n onDisconnect: () => {\r\n this.isConnected = false;\r\n this.isSynced = false;\r\n if (!options?.quiet) {\r\n console.info(`Hocuspocus disconnected: ${name}`);\r\n }\r\n if (options?.onDisconnect) {\r\n options.onDisconnect();\r\n }\r\n },\r\n onSynced: () => {\r\n this.isSynced = true;\r\n if (!options?.quiet) {\r\n console.info(`Hocuspocus synced: ${name}`);\r\n }\r\n if (options?.onSynced) {\r\n options.onSynced();\r\n }\r\n },\r\n };\r\n\r\n // Add optional settings\r\n if (options?.forceSyncInterval !== undefined) {\r\n config.forceSyncInterval = options.forceSyncInterval;\r\n }\r\n\r\n if (options?.onAuthenticationFailed) {\r\n config.onAuthenticationFailed = options.onAuthenticationFailed;\r\n }\r\n\r\n if (options?.onStatus) {\r\n config.onStatus = options.onStatus;\r\n }\r\n\r\n this.provider = new HocuspocusProvider(config);\r\n\r\n // Must call attach() explicitly when using shared socket\r\n this.provider.attach();\r\n\r\n if (!options?.quiet) {\r\n console.info(`Hocuspocus Provider initialized (multiplexed): ${name}`);\r\n }\r\n } else {\r\n // Standalone mode - create own WebSocket connection\r\n this.usesSharedSocket = false;\r\n\r\n const config: any = {\r\n url,\r\n name,\r\n document: doc,\r\n token: options?.token || null,\r\n onConnect: () => {\r\n this.isConnected = true;\r\n if (!options?.quiet) {\r\n console.info(`Hocuspocus connected: ${name}`);\r\n }\r\n if (options?.onConnect) {\r\n options.onConnect();\r\n }\r\n },\r\n onDisconnect: () => {\r\n this.isConnected = false;\r\n this.isSynced = false;\r\n if (!options?.quiet) {\r\n console.info(`Hocuspocus disconnected: ${name}`);\r\n }\r\n if (options?.onDisconnect) {\r\n options.onDisconnect();\r\n }\r\n },\r\n onSynced: () => {\r\n this.isSynced = true;\r\n if (!options?.quiet) {\r\n console.info(`Hocuspocus synced: ${name}`);\r\n }\r\n if (options?.onSynced) {\r\n options.onSynced();\r\n }\r\n },\r\n };\r\n\r\n // Add optional settings\r\n if (options?.forceSyncInterval !== undefined) {\r\n config.forceSyncInterval = options.forceSyncInterval;\r\n }\r\n\r\n if (options?.onAuthenticationFailed) {\r\n config.onAuthenticationFailed = options.onAuthenticationFailed;\r\n }\r\n\r\n if (options?.onStatus) {\r\n config.onStatus = options.onStatus;\r\n }\r\n\r\n if (options?.WebSocketPolyfill) {\r\n config.WebSocketPolyfill = options.WebSocketPolyfill;\r\n }\r\n\r\n this.provider = new HocuspocusProvider(config);\r\n\r\n if (!options?.quiet) {\r\n console.info(`Hocuspocus Provider initialized: ${url}/${name}`);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Create a shared WebSocket connection for multiplexing\r\n * Call this once to create a shared connection that multiple providers can use\r\n */\r\n static createSharedWebSocket(options: HocuspocusWebSocketOptions): HocuspocusProviderWebsocket {\r\n if (HocuspocusSyncProvider.sharedWebSocketProvider) {\r\n console.warn('Shared WebSocket already exists. Returning existing instance.');\r\n return HocuspocusSyncProvider.sharedWebSocketProvider;\r\n }\r\n\r\n const config: any = {\r\n url: options.url,\r\n };\r\n\r\n if (options.WebSocketPolyfill) {\r\n config.WebSocketPolyfill = options.WebSocketPolyfill;\r\n }\r\n\r\n if (options.onConnect) {\r\n config.onConnect = options.onConnect;\r\n }\r\n\r\n if (options.onDisconnect) {\r\n config.onDisconnect = options.onDisconnect;\r\n }\r\n\r\n if (options.onStatus) {\r\n config.onStatus = options.onStatus;\r\n }\r\n\r\n HocuspocusSyncProvider.sharedWebSocketProvider = new HocuspocusProviderWebsocket(config);\r\n console.info(`Shared Hocuspocus WebSocket created: ${options.url}`);\r\n\r\n return HocuspocusSyncProvider.sharedWebSocketProvider;\r\n }\r\n\r\n /**\r\n * Destroy the shared WebSocket connection\r\n * Call this when you're done with all multiplexed providers\r\n */\r\n static destroySharedWebSocket(): void {\r\n if (HocuspocusSyncProvider.sharedWebSocketProvider) {\r\n HocuspocusSyncProvider.sharedWebSocketProvider.destroy();\r\n HocuspocusSyncProvider.sharedWebSocketProvider = null;\r\n console.info('Shared Hocuspocus WebSocket destroyed');\r\n }\r\n }\r\n\r\n /**\r\n * Get the shared WebSocket provider instance (if it exists)\r\n */\r\n static getSharedWebSocket(): HocuspocusProviderWebsocket | null {\r\n return HocuspocusSyncProvider.sharedWebSocketProvider;\r\n }\r\n\r\n /**\r\n * Static factory method for creating HocuspocusSyncProvider with configuration options\r\n * Returns a ProviderFactory that can be used in sync configuration\r\n */\r\n static with(options?: HocuspocusOptions): ProviderFactory {\r\n return {\r\n create: (docName: string, doc: Y.Doc) => {\r\n return new HocuspocusSyncProvider(docName, doc, options);\r\n },\r\n };\r\n }\r\n\r\n async connect(): Promise<void> {\r\n if (this.isSynced) {\r\n return;\r\n }\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n reject(new Error('Hocuspocus connection timeout'));\r\n }, 10000); // 10 second timeout\r\n\r\n const syncHandler = () => {\r\n clearTimeout(timeout);\r\n this.provider.off('synced', syncHandler);\r\n resolve();\r\n };\r\n\r\n this.provider.on('synced', syncHandler);\r\n\r\n // If already synced, resolve immediately\r\n if (this.provider.isSynced) {\r\n clearTimeout(timeout);\r\n this.provider.off('synced', syncHandler);\r\n resolve();\r\n return;\r\n }\r\n\r\n // Connect if not already connected (standalone mode only)\r\n if (!this.isConnected && !this.usesSharedSocket) {\r\n this.provider.connect();\r\n }\r\n });\r\n }\r\n\r\n disconnect(): void {\r\n if (this.provider) {\r\n if (this.usesSharedSocket) {\r\n // Detach from shared socket instead of disconnecting\r\n this.provider.detach();\r\n } else {\r\n this.provider.disconnect();\r\n }\r\n }\r\n this.isConnected = false;\r\n this.isSynced = false;\r\n }\r\n\r\n destroy(): void {\r\n if (this.provider) {\r\n this.provider.destroy();\r\n }\r\n this.isConnected = false;\r\n this.isSynced = false;\r\n }\r\n}\r\n"],"names":["encoding.createEncoder","encoding.writeVarUint","encoding.writeVarUint8Array","encoding.toUint8Array","decoding.createDecoder","decoding.readVarUint","decoding.readVarUint8Array","Y.applyUpdate","Y.encodeStateAsUpdate","Y.encodeStateVector","buffer.fromBase64","storage.onChange","storage.varStorage","buffer.toBase64","buffer.createUint8ArrayFromArrayBuffer","storage.offChange","map.setIfUndefined","set.create","decoding.readVarString","Observable","time.getUnixTime","math.floor","f.equalityDeep","encoding.writeVarString","object.map","syncProtocol.readSyncMessage","syncProtocol.messageYjsSyncStep2","awarenessProtocol.encodeAwarenessUpdate","awarenessProtocol.applyAwarenessUpdate","authProtocol.readAuthMessage","awarenessProtocol.removeAwarenessStates","math.min","math.pow","encoding.length","syncProtocol.writeSyncStep1","bc.publish","ObservableV2","awarenessProtocol.Awareness","syncProtocol.writeUpdate","env.isNode","url.encodeQueryParams","bc.subscribe","syncProtocol.writeSyncStep2","bc.unsubscribe","HocuspocusProvider","HocuspocusProviderWebsocket"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kritzel-brush-style.entry.cjs.js","sources":["src/components/shared/kritzel-brush-style/kritzel-brush-style.css?tag=kritzel-brush-style&encapsulation=shadow","src/components/shared/kritzel-brush-style/kritzel-brush-style.tsx"],"sourcesContent":[":host {\r\n display: flex; \r\n align-items: flex-start; \r\n gap: 8px; \r\n padding: 8px; \r\n box-sizing: border-box; \r\n width: 100%;\r\n}\r\n\r\n.brush-style-button {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 42px;\r\n height: 32px;\r\n padding: 0;\r\n border: none;\r\n outline: none;\r\n background: none;\r\n border-radius: 0; \r\n color: var(--control-text-color);\r\n font-weight: bold;\r\n -webkit-tap-highlight-color: transparent;\r\n}\r\n\r\n.font-style-button:not(:last-child) {\r\n border-right: 1px solid #333333; \r\n}\r\n\r\n.font-style-button:hover {\r\n background-color: var(--control-hover-bg);\r\n}\r\n\r\n.font-style-button:active {\r\n background-color: var(--control-active-bg);\r\n}\r\n\r\n.font-style-button.selected,\r\n.font-style-button.selected:hover,\r\n.font-style-button.selected:active {\r\n background-color: var(--control-selected-bg);\r\n color: var(--control-selected-color);\r\n}","import { Component, Host, h, Prop, EventEmitter, Event } from '@stencil/core';\r\nimport { DropdownOption } from '../kritzel-dropdown/kritzel-dropdown'; // Import DropdownOption\r\n\r\nexport interface BrushStyleOption extends DropdownOption {}\r\n\r\n@Component({\r\n tag: 'kritzel-brush-style',\r\n styleUrl: 'kritzel-brush-style.css',\r\n shadow: true,\r\n})\r\nexport class KritzelBrushStyle {\r\n @Prop() type: 'pen' | 'highlighter' = 'pen';\r\n @Prop() brushOptions: BrushStyleOption[] = [\r\n { value: 'pen', label: 'Pen' },\r\n { value: 'highlighter', label: 'Highlighter' },\r\n ];\r\n\r\n @Event() typeChange: EventEmitter<'pen' | 'highlighter'>;\r\n\r\n handleDropdownValueChange(event: CustomEvent<string>) {\r\n this.typeChange.emit(event.detail as 'pen' | 'highlighter');\r\n }\r\n\r\n render() {\r\n const dropdownOptions: DropdownOption[] = this.brushOptions.map(option => ({\r\n value: option.value,\r\n label: option.label,\r\n }));\r\n\r\n return (\r\n <Host>\r\n <kritzel-dropdown options={dropdownOptions} value={this.type} onValueChanged={event => this.handleDropdownValueChange(event)}>\r\n <button class=\"brush-style-button\" slot=\"prefix\">\r\n <kritzel-icon name={this.type} size={16}></kritzel-icon>\r\n </button>\r\n </kritzel-dropdown>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"names":["h","Host"],"mappings":";;;;AAAA,MAAM,oBAAoB,GAAG,ytBAAytB;;MCUzuB,iBAAiB,GAAA,MAAA;;;;;IACpB,IAAI,GAA0B,KAAK;AACnC,IAAA,YAAY,GAAuB;AACzC,QAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9B,QAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;KAC/C;AAEQ,IAAA,UAAU;AAEnB,IAAA,yBAAyB,CAAC,KAA0B,EAAA;QAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAA+B,CAAC;;IAG7D,MAAM,GAAA;AACJ,QAAA,MAAM,eAAe,GAAqB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,KAAK;YACzE,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;AACpB,SAAA,CAAC,CAAC;AAEH,QAAA,QACEA,QAACC,UAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACHD,OAAkB,CAAA,kBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAA,EAC1HA,OAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAQ,KAAK,EAAC,oBAAoB,EAAC,IAAI,EAAC,QAAQ,EAAA,EAC9CA,OAAA,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAc,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAiB,CAAA,CACjD,CACQ,CACd;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.cjs.js","sources":["@lazy-external-entrypoint?app-data=conditional"],"sourcesContent":["export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\nexport const defineCustomElements = async (win, options) => {\n if (typeof window === 'undefined') return undefined;\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n};\n"],"names":["globalScripts","bootstrapLazy"],"mappings":";;;;;AAGY,MAAC,oBAAoB,GAAG,OAAO,GAAG,EAAE,OAAO,KAAK;AAC5D,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,OAAO,SAAS;AACrD,EAAE,MAAMA,wBAAa,EAAE;AACvB,EAAE,OAAOC,mBAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stencil.cjs.js","sources":["../../node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.38.3 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, H, promiseResolve, win } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? win.document && Array.from(win.document.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"names":["promiseResolve","globalScripts","bootstrapLazy"],"mappings":";;;;;;AAAA;AACA;AACA;;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,gQAAe;AACpC,EAAE,MAAM,IAAI,GAAiE,EAAE;AAC/E,EAAE,IAAI,UAAU,KAAK,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI;AACrD;AACA,EAAE,OAAOA,oBAAc,CAAC,IAAI,CAAC;AAC7B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAMC,wBAAa,EAAE;AACvB,EAAE,OAAOC,mBAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D,CAAC,CAAC;;;;","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.class.js","sourceRoot":"","sources":["../../../src/classes/core/core.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelEngine } from '../../components/core/kritzel-engine/kritzel-engine';\r\nimport { KritzelContextMenu } from '../../components/ui/kritzel-context-menu/kritzel-context-menu';\r\nimport { DEFAULT_ENGINE_CONFIG } from '../../configs/default-engine-config';\r\nimport { ObjectHelper } from '../../helpers/object.helper';\r\nimport { KritzelBaseObject } from '../objects/base-object.class';\r\nimport { KritzelSelectionBox } from '../objects/selection-box.class';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelGroup } from '../objects/group.class';\r\nimport { KritzelLine } from '../objects/line.class';\r\nimport { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelStore } from './store.class';\r\nimport { KritzelWorkspace } from './workspace.class';\r\nimport { KritzelObjectMap } from '../structures/object-map.structure';\r\nimport { KritzelSyncConfig } from '../../interfaces/sync-config.interface';\r\nimport { KritzelAppStateMap } from '../structures/app-state-map.structure';\r\nimport { KritzelAnchorManager } from '../managers/anchor.manager';\r\nimport { KritzelCursorManager } from '../managers/cursor.manager';\r\n\r\nexport class KritzelCore {\r\n private readonly _kritzelEngine: KritzelEngine;\r\n private readonly _store: KritzelStore;\r\n private _syncConfig?: KritzelSyncConfig;\r\n private readonly _appStateMap: KritzelAppStateMap;\r\n private readonly _anchorManager: KritzelAnchorManager;\r\n private readonly _cursorManager: KritzelCursorManager;\r\n\r\n get engine(): KritzelEngine {\r\n return this._kritzelEngine;\r\n }\r\n\r\n get store(): KritzelStore {\r\n return this._store;\r\n }\r\n\r\n get appStateMap(): KritzelAppStateMap {\r\n return this._appStateMap;\r\n }\r\n\r\n get anchorManager(): KritzelAnchorManager {\r\n return this._anchorManager;\r\n }\r\n\r\n get cursorManager(): KritzelCursorManager {\r\n return this._cursorManager;\r\n }\r\n\r\n constructor(kritzelEngine: KritzelEngine) {\r\n this._kritzelEngine = kritzelEngine;\r\n this._store = new KritzelStore(DEFAULT_ENGINE_CONFIG);\r\n this._appStateMap = new KritzelAppStateMap();\r\n this._anchorManager = new KritzelAnchorManager(this);\r\n this._cursorManager = new KritzelCursorManager(this);\r\n }\r\n\r\n setSyncConfig(config?: KritzelSyncConfig): void {\r\n this._syncConfig = config;\r\n }\r\n\r\n async initializeYjs(): Promise<void> {\r\n await this._appStateMap.initialize(this, this._syncConfig);\r\n }\r\n\r\n /**\r\n * Load all workspaces from app state map\r\n */\r\n private loadWorkspacesFromAppState(): KritzelWorkspace[] {\r\n return this._appStateMap.allWorkspaces();\r\n }\r\n\r\n /**\r\n * Save a workspace to app state map\r\n */\r\n private saveWorkspaceToAppState(workspace: KritzelWorkspace): void {\r\n if (this._appStateMap.has(workspace.id)) {\r\n this._appStateMap.update(workspace);\r\n } else {\r\n this._appStateMap.insert(workspace);\r\n }\r\n }\r\n\r\n /**\r\n * Delete a workspace from app state map\r\n */\r\n private deleteWorkspaceFromAppState(workspaceId: string): void {\r\n this._appStateMap.remove(w => w.id === workspaceId);\r\n }\r\n\r\n async initializeWorkspace(workspace?: KritzelWorkspace): Promise<void> {\r\n // Load all workspaces from app state map\r\n const workspaces = this.loadWorkspacesFromAppState();\r\n\r\n // Find most recently updated workspace or use provided/fallback\r\n const mostRecentWorkspace = workspaces.length > 0 ? [...workspaces].sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime())[0] : null;\r\n\r\n // Check localStorage for last active workspace\r\n const lastActiveWorkspaceId = localStorage.getItem('kritzel-active-workspace-id');\r\n const lastActiveWorkspace = lastActiveWorkspaceId ? workspaces.find(w => w.id === lastActiveWorkspaceId) : null;\r\n\r\n let activeWorkspace: KritzelWorkspace;\r\n\r\n if (workspace) {\r\n // Use provided workspace\r\n activeWorkspace = workspace;\r\n const existing = workspaces.find(w => w.id === workspace.id);\r\n if (!existing) {\r\n // New workspace, save it\r\n activeWorkspace._core = this;\r\n this.saveWorkspaceToAppState(activeWorkspace);\r\n }\r\n } else if (lastActiveWorkspace) {\r\n // Use last active workspace from localStorage\r\n activeWorkspace = lastActiveWorkspace;\r\n } else if (mostRecentWorkspace) {\r\n // Use most recent workspace\r\n activeWorkspace = mostRecentWorkspace;\r\n } else {\r\n // Create fallback workspace\r\n activeWorkspace = new KritzelWorkspace(ObjectHelper.generateUUID(), 'New Workspace');\r\n activeWorkspace._core = this;\r\n this.saveWorkspaceToAppState(activeWorkspace);\r\n }\r\n\r\n // Save active workspace ID to localStorage\r\n localStorage.setItem('kritzel-active-workspace-id', activeWorkspace.id);\r\n\r\n // Destroy old ObjectMap if switching workspaces\r\n if (this._store.state.objects && this._store.state.objects.isReady) {\r\n this._store.state.objects.destroy();\r\n }\r\n\r\n // Create new ObjectMap with its own Y.Doc for this workspace\r\n const objectsMap = new KritzelObjectMap();\r\n // Assign immediately so the UI shows an empty state while loading,\r\n // instead of showing the old workspace's objects with the new workspace's viewport\r\n this._store.state.objects = objectsMap;\r\n\r\n // Set active workspace\r\n this._store.state.activeWorkspace = activeWorkspace;\r\n this._store.state.workspaces = this.loadWorkspacesFromAppState();\r\n\r\n // Set viewport from workspace\r\n const viewport = activeWorkspace.viewport ?? { translateX: 0, translateY: 0, scale: 1 };\r\n this._store.state.translateX = viewport.translateX ?? 0;\r\n this._store.state.translateY = viewport.translateY ?? 0;\r\n this._store.state.scale = viewport.scale ?? 1;\r\n\r\n await objectsMap.initialize(this, activeWorkspace.id, this._syncConfig);\r\n\r\n // Rebuild anchor index after loading objects\r\n this._anchorManager.rebuildIndex();\r\n\r\n this.engine.emitObjectsChange();\r\n\r\n this.rerender();\r\n }\r\n\r\n rerender() {\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._store.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 getWorkspaces(): KritzelWorkspace[] {\r\n return this.loadWorkspacesFromAppState();\r\n }\r\n\r\n createWorkspace(workspace: KritzelWorkspace): void {\r\n workspace._core = this;\r\n workspace.createdAt = new Date();\r\n workspace.updatedAt = new Date();\r\n this.saveWorkspaceToAppState(workspace);\r\n this._store.state.workspaces = this.loadWorkspacesFromAppState();\r\n }\r\n\r\n updateWorkspace(workspace: KritzelWorkspace): void {\r\n workspace.updatedAt = new Date();\r\n this.saveWorkspaceToAppState(workspace);\r\n\r\n const workspaces = this._store.state.workspaces;\r\n const index = workspaces.findIndex(w => w.id === workspace.id);\r\n\r\n if (index !== -1) {\r\n workspaces[index] = workspace;\r\n this._store.state.workspaces = workspaces;\r\n }\r\n }\r\n\r\n deleteWorkspace(workspace: KritzelWorkspace): void {\r\n // If deleting the active workspace, need to handle ObjectMap cleanup\r\n if (this._store.state.activeWorkspace?.id === workspace.id) {\r\n this._store.state.objects?.destroy();\r\n }\r\n\r\n this.deleteWorkspaceFromAppState(workspace.id);\r\n this._store.state.workspaces = this.loadWorkspacesFromAppState();\r\n\r\n // Also delete the workspace's IndexedDB database\r\n const dbName = `kritzel-workspace-${workspace.id}`;\r\n window.indexedDB.deleteDatabase(dbName);\r\n }\r\n\r\n updateWorkspaceViewport(translateX: number, translateY: number, scale: number): void {\r\n const activeWorkspace = this._store.state.activeWorkspace;\r\n if (!activeWorkspace) {\r\n return;\r\n }\r\n\r\n activeWorkspace.viewport = { translateX, translateY, scale };\r\n activeWorkspace.updatedAt = new Date();\r\n this.saveWorkspaceToAppState(activeWorkspace);\r\n }\r\n\r\n addObject(object: KritzelBaseObject<any>): void {\r\n this._store.state.objects.insert(object);\r\n }\r\n\r\n removeObject(object: KritzelBaseObject<any>, preserveChildren: boolean = false): void {\r\n // Handle KritzelGroup: recursively delete all children first (unless preserveChildren is true)\r\n if (object instanceof KritzelGroup && !preserveChildren) {\r\n // Get children before removing the group\r\n const children = [...object.children];\r\n children.forEach(child => {\r\n this.removeObject(child);\r\n });\r\n }\r\n\r\n // Handle anchor cleanup\r\n if (object instanceof KritzelLine) {\r\n // If removing a line, clean up its anchor index entries\r\n this._anchorManager.handleLineDeleted(object.id);\r\n } else {\r\n // If removing a non-line object, detach any lines anchored to it\r\n this._anchorManager.handleObjectDeleted(object.id);\r\n }\r\n\r\n object.isMounted = false;\r\n this._store.state.objects.remove(o => o.id === object.id);\r\n }\r\n\r\n updateObject<T extends KritzelBaseObject<any>>(object: T, updatedProperties: Partial<T>): void {\r\n for (const key in updatedProperties) {\r\n if (updatedProperties.hasOwnProperty(key)) {\r\n object[key] = updatedProperties[key];\r\n }\r\n }\r\n\r\n this._store.state.objects.update(object);\r\n }\r\n\r\n addSelectionGroup(selectionGroup: KritzelSelectionGroup): void {\r\n this.removeSelectionGroup();\r\n this.removeSelectionBox();\r\n this._store.state.objects.insert(selectionGroup);\r\n }\r\n\r\n removeSelectionGroup(): void {\r\n const selectionGroup = this._store.selectionGroup;\r\n if (selectionGroup) {\r\n this._store.state.objects.remove(object => object.id === selectionGroup.id);\r\n }\r\n }\r\n\r\n removeSelectionBox(): void {\r\n const selectionBox = this._store.selectionBox;\r\n if (selectionBox) {\r\n this._store.state.objects.remove(object => object.id === selectionBox.id);\r\n }\r\n }\r\n\r\n deselectAllObjects(): void {\r\n this.removeSelectionGroup();\r\n this.rerender();\r\n }\r\n\r\n delete() {\r\n const selectionGroup = this._store.selectionGroup;\r\n if (!selectionGroup) {\r\n return;\r\n }\r\n\r\n selectionGroup.objects.forEach(obj => this.removeObject(obj));\r\n\r\n this.removeSelectionGroup();\r\n this.rerender();\r\n }\r\n\r\n undo(): void {\r\n this._store.state.objects?.undo();\r\n }\r\n\r\n redo(): void {\r\n this._store.state.objects?.redo();\r\n }\r\n\r\n deleteObject(id: string) {\r\n const object = this.findObjectById(id);\r\n if (object) {\r\n this.removeObject(object);\r\n this.rerender();\r\n }\r\n }\r\n\r\n copy() {\r\n const selectionGroup = this._store.selectionGroup;\r\n if (selectionGroup) {\r\n // Copy each object and store them in an array, also track the ID mapping\r\n const idMapping = new Map<string, string>();\r\n const copiedObjects = selectionGroup.objects\r\n .sort((a, b) => a.zIndex - b.zIndex)\r\n .map(obj => {\r\n const copiedObj = obj.copy() as KritzelBaseObject<any>;\r\n // Map: newId -> originalId\r\n idMapping.set(copiedObj.id, obj.id);\r\n return copiedObj;\r\n });\r\n\r\n this._store.state.copiedObjects = copiedObjects;\r\n this._store.state.copiedObjectIdMapping = idMapping;\r\n }\r\n }\r\n\r\n paste(x?: number, y?: number) {\r\n const copiedObjects = this._store.state.copiedObjects;\r\n if (!copiedObjects || copiedObjects.length === 0) {\r\n return;\r\n }\r\n\r\n const activeWorkspace = this._store.state.activeWorkspace;\r\n const originalIdMapping = this._store.state.copiedObjectIdMapping;\r\n\r\n // Check if we're pasting from a different workspace\r\n const isDifferentWorkspace = copiedObjects.some(obj => obj.workspaceId !== activeWorkspace.id);\r\n\r\n // Calculate the bounding box of all copied objects\r\n const minX = Math.min(...copiedObjects.map(obj => obj.translateX));\r\n const minY = Math.min(...copiedObjects.map(obj => obj.translateY));\r\n\r\n // Determine the paste position\r\n let pasteX: number;\r\n let pasteY: number;\r\n\r\n if (x !== undefined && y !== undefined) {\r\n // Explicit position provided (e.g., right-click paste)\r\n pasteX = x;\r\n pasteY = y;\r\n } else if (isDifferentWorkspace) {\r\n // Pasting to different workspace without explicit position\r\n // Keep original position; will be centered by centerInViewport() later\r\n pasteX = minX;\r\n pasteY = minY;\r\n } else {\r\n // Same workspace paste: offset by 25 pixels from original position\r\n pasteX = minX + 25 / this._store.state.scale;\r\n pasteY = minY + 25 / this._store.state.scale;\r\n }\r\n\r\n // Calculate the offset to apply to all objects\r\n const offsetX = pasteX - minX;\r\n const offsetY = pasteY - minY;\r\n\r\n this.removeSelectionGroup();\r\n this.removeSelectionBox();\r\n\r\n // Create a new selection group for the pasted objects\r\n const selectionGroup = KritzelSelectionGroup.create(this);\r\n\r\n // Build a reverse mapping: originalId -> newCopiedObjectId\r\n // This is used to remap anchor references from original IDs to the copied object IDs\r\n const originalToNewIdMap = new Map<string, string>();\r\n if (originalIdMapping) {\r\n originalIdMapping.forEach((originalId, copiedId) => {\r\n originalToNewIdMap.set(originalId, copiedId);\r\n });\r\n }\r\n\r\n // First add all copied objects to the objectsMap with updated positions\r\n copiedObjects.forEach((obj, i) => {\r\n // Update workspace if pasting to a different workspace\r\n if (obj.workspaceId !== activeWorkspace.id) {\r\n obj.workspaceId = activeWorkspace.id;\r\n }\r\n\r\n // Update position\r\n obj.updatePosition(obj.translateX + offsetX, obj.translateY + offsetY);\r\n\r\n // Update z-index\r\n obj.zIndex = this._store.currentZIndex + i;\r\n\r\n // Handle KritzelGroup: also add pending children with offset\r\n if (obj instanceof KritzelGroup) {\r\n const pendingChildren = (obj as any)._pendingChildren as KritzelBaseObject<any>[] | undefined;\r\n if (pendingChildren) {\r\n pendingChildren.forEach((child, childIndex) => {\r\n // Update workspace\r\n if (child.workspaceId !== activeWorkspace.id) {\r\n child.workspaceId = activeWorkspace.id;\r\n }\r\n\r\n // Update position with offset\r\n child.updatePosition(child.translateX + offsetX, child.translateY + offsetY);\r\n\r\n // Update z-index\r\n child.zIndex = this._store.currentZIndex + i + childIndex;\r\n\r\n // Add child to store\r\n this.addObject(child);\r\n });\r\n\r\n // Clear pending children\r\n delete (obj as any)._pendingChildren;\r\n\r\n // Finalize the group's bounding box and snapshots\r\n obj.finalize();\r\n }\r\n }\r\n\r\n // Add to objectsMap\r\n this.addObject(obj);\r\n\r\n // Add to selection group\r\n selectionGroup.addOrRemove(obj);\r\n });\r\n\r\n // Update line anchors to point to the newly pasted objects\r\n // Only remap if the anchor target was also part of the copied selection\r\n copiedObjects.forEach(obj => {\r\n if (obj instanceof KritzelLine) {\r\n let updated = false;\r\n\r\n if (obj.startAnchor && originalToNewIdMap.has(obj.startAnchor.objectId)) {\r\n obj.startAnchor = { objectId: originalToNewIdMap.get(obj.startAnchor.objectId)! };\r\n updated = true;\r\n }\r\n\r\n if (obj.endAnchor && originalToNewIdMap.has(obj.endAnchor.objectId)) {\r\n obj.endAnchor = { objectId: originalToNewIdMap.get(obj.endAnchor.objectId)! };\r\n updated = true;\r\n }\r\n\r\n // If anchors were updated, rebuild the anchor index and persist the change\r\n if (updated) {\r\n this._store.state.objects.update(obj);\r\n }\r\n }\r\n });\r\n\r\n // Rebuild anchor index after all anchor updates\r\n this._anchorManager.rebuildIndex();\r\n\r\n // Mark selection group as selected\r\n selectionGroup.isSelected = true;\r\n\r\n // Set rotation for single object\r\n if (copiedObjects.length === 1) {\r\n selectionGroup.rotation = copiedObjects[0].rotation;\r\n }\r\n\r\n // Add the selection group\r\n this.addSelectionGroup(selectionGroup);\r\n\r\n // Handle cross-workspace paste: center objects in viewport\r\n if (isDifferentWorkspace) {\r\n if (x !== undefined && y !== undefined) {\r\n // Position was explicitly provided, use it\r\n selectionGroup.updatePosition(x, y);\r\n } else {\r\n // Center the selection group in the viewport\r\n selectionGroup.centerInViewport();\r\n }\r\n // Fit the viewport to show the pasted objects\r\n this.engine.viewport.centerFitInViewport(selectionGroup);\r\n }\r\n\r\n this._store.state.isSelecting = false;\r\n\r\n // Update copiedObjects to the newly created objects for potential future pastes\r\n const newSelectionGroup = this._store.selectionGroup;\r\n if (newSelectionGroup) {\r\n // Create new copies and track the ID mapping for future pastes\r\n const newIdMapping = new Map<string, string>();\r\n const newCopiedObjects = newSelectionGroup.objects\r\n .sort((a, b) => a.zIndex - b.zIndex)\r\n .map(obj => {\r\n const copiedObj = obj.copy() as KritzelBaseObject<any>;\r\n newIdMapping.set(copiedObj.id, obj.id);\r\n return copiedObj;\r\n });\r\n\r\n this._store.state.copiedObjects = newCopiedObjects;\r\n this._store.state.copiedObjectIdMapping = newIdMapping;\r\n }\r\n\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n\r\n this.engine.emitObjectsChange();\r\n\r\n this.rerender();\r\n }\r\n\r\n bringForward(object?: KritzelBaseObject<any>) {\r\n const selectionGroup = this._store.selectionGroup;\r\n const objects = object ? [object] : selectionGroup?.objects || [];\r\n const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);\r\n const max = allNonSelectionObjectsWithoutCurrent.length > 0 ? Math.max(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) + 1 : 0;\r\n\r\n objects.forEach(obj => {\r\n if (obj.zIndex !== max) {\r\n this.updateObject(obj, { zIndex: obj.zIndex + 1 });\r\n }\r\n });\r\n\r\n this.rerender();\r\n }\r\n\r\n sendBackward(object?: KritzelBaseObject<any>) {\r\n const selectionGroup = this._store.selectionGroup;\r\n const objects = object ? [object] : selectionGroup?.objects || [];\r\n const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);\r\n const min = allNonSelectionObjectsWithoutCurrent.length > 0 ? Math.min(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) - 1 : 0;\r\n\r\n objects.forEach(obj => {\r\n if (obj.zIndex !== min) {\r\n this.updateObject(obj, { zIndex: obj.zIndex - 1 });\r\n }\r\n });\r\n\r\n this.rerender();\r\n }\r\n\r\n bringToFront(object?: KritzelBaseObject<any>) {\r\n const selectionGroup = this._store.selectionGroup;\r\n const objects = object ? [object] : selectionGroup?.objects || [];\r\n const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);\r\n const max = Math.max(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) + 1;\r\n\r\n objects.forEach(obj => {\r\n this.updateObject(obj, { zIndex: max });\r\n });\r\n\r\n this.rerender();\r\n }\r\n\r\n sendToBack(object?: KritzelBaseObject<any>) {\r\n const selectionGroup = this._store.selectionGroup;\r\n const objects = object ? [object] : selectionGroup?.objects || [];\r\n const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);\r\n const min = Math.min(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) - 1;\r\n\r\n objects.forEach(obj => {\r\n this.updateObject(obj, { zIndex: min });\r\n });\r\n\r\n this.rerender();\r\n }\r\n\r\n /**\r\n * Groups the currently selected objects into a KritzelGroup.\r\n * Requires at least 2 objects to be selected.\r\n */\r\n group(): void {\r\n const selectionGroup = this._store.selectionGroup;\r\n if (!selectionGroup || selectionGroup.objects.length < 2) {\r\n return;\r\n }\r\n\r\n // Create a group from the selected objects\r\n const group = KritzelGroup.createFromObjects(this, selectionGroup.objects);\r\n\r\n // Add the group to the object store\r\n this.addObject(group);\r\n\r\n // Remove the selection group and create a new one with just the group\r\n this.removeSelectionGroup();\r\n\r\n const newSelectionGroup = KritzelSelectionGroup.create(this);\r\n newSelectionGroup.addOrRemove(group);\r\n newSelectionGroup.isSelected = true;\r\n newSelectionGroup.rotation = group.rotation;\r\n this.addSelectionGroup(newSelectionGroup);\r\n\r\n this.engine.emitObjectsChange();\r\n this.rerender();\r\n }\r\n\r\n /**\r\n * Ungroups any KritzelGroup objects in the current selection.\r\n * Children are extracted and become top-level objects.\r\n */\r\n ungroup(): void {\r\n const selectionGroup = this._store.selectionGroup;\r\n if (!selectionGroup) {\r\n return;\r\n }\r\n\r\n const groups = selectionGroup.objects.filter(obj => obj instanceof KritzelGroup) as KritzelGroup[];\r\n if (groups.length === 0) {\r\n return;\r\n }\r\n\r\n // Collect all children from all groups\r\n const allChildren: KritzelBaseObject<any>[] = [];\r\n const nonGroupObjects = selectionGroup.objects.filter(obj => !(obj instanceof KritzelGroup));\r\n\r\n groups.forEach(group => {\r\n // Get children before removing the group\r\n const children = group.ungroup();\r\n allChildren.push(...children);\r\n\r\n // Remove the group from the store (but keep children)\r\n this.removeObject(group, true);\r\n });\r\n\r\n // Create a new selection group with all the ungrouped children and non-group objects\r\n this.removeSelectionGroup();\r\n\r\n const newSelectionGroup = KritzelSelectionGroup.create(this);\r\n [...allChildren, ...nonGroupObjects].forEach(child => {\r\n newSelectionGroup.addOrRemove(child);\r\n });\r\n newSelectionGroup.isSelected = true;\r\n this.addSelectionGroup(newSelectionGroup);\r\n\r\n this.engine.emitObjectsChange();\r\n this.rerender();\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 if (objects.length === 1) {\r\n selectionGroup.rotation = selectionGroup.objects[0].rotation;\r\n }\r\n\r\n this.addSelectionGroup(selectionGroup);\r\n this.rerender();\r\n }\r\n\r\n selectAllObjectsInViewport() {\r\n const viewportBounds = {\r\n x: -this._store.state.translateX / this._store.state.scale,\r\n y: -this._store.state.translateY / this._store.state.scale,\r\n z: this._store.state.scale,\r\n width: this._store.state.viewportWidth / this._store.state.scale,\r\n height: this._store.state.viewportHeight / this._store.state.scale,\r\n depth: 100,\r\n };\r\n\r\n const objectsInViewport = this._store.state.objects\r\n .query(viewportBounds)\r\n .filter(o => o.isInViewport())\r\n .filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KritzelSelectionBox) && !(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._store.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.addSelectionGroup(selectionGroup);\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this.rerender();\r\n }\r\n }\r\n\r\n clearSelection() {\r\n this.removeSelectionGroup();\r\n\r\n this._store.state.objects.remove(o => o instanceof KritzelSelectionBox || o instanceof KritzelSelectionGroup);\r\n this._store.state.isSelecting = false;\r\n this._store.state.isResizeHandleSelected = false;\r\n this._store.state.isRotationHandleSelected = false;\r\n this._store.state.isLineHandleSelected = false;\r\n this._store.state.isLineHandleDragging = false;\r\n this._store.state.lineHandleType = null;\r\n\r\n this.rerender();\r\n }\r\n\r\n resetActiveText() {\r\n const activeText = this._store.activeText;\r\n if (activeText) {\r\n if (activeText.isEmpty) {\r\n this.deleteObject(activeText.id);\r\n } else {\r\n activeText.save();\r\n }\r\n }\r\n }\r\n\r\n resetActiveShape() {\r\n const activeShape = this._store.activeShape;\r\n if (activeShape) {\r\n activeShape.save();\r\n }\r\n }\r\n\r\n getObjectFromPointerEvent(event: PointerEvent, selector = '.object'): KritzelBaseObject<any> | null {\r\n const shadowRoot = this._store.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 const foundObject = this._store.allObjects.find(object => selectedObject.id === object.id);\r\n const isHit = foundObject?.hitTest(clientX, clientY);\r\n return isHit ? foundObject : null;\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._store.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._store.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 /**\r\n * Get all elements at a pointer position that match a given selector.\r\n * Uses elementsFromPoint to find overlapped elements.\r\n */\r\n getElementsAtPoint(event: PointerEvent, selector: string): Element[] {\r\n const shadowRoot = this._store.state.host?.shadowRoot;\r\n if (!shadowRoot) return [];\r\n\r\n const elementsAtPoint = shadowRoot.elementsFromPoint(event.clientX, event.clientY);\r\n if (!elementsAtPoint || elementsAtPoint.length === 0) return [];\r\n\r\n return elementsAtPoint.filter(el => el.matches(selector));\r\n }\r\n\r\n /**\r\n * Check if any element at the pointer position matches the given selector.\r\n * Useful for detecting hover states on overlapped elements.\r\n */\r\n isPointerOverElement(event: PointerEvent, selector: string): boolean {\r\n return this.getElementsAtPoint(event, selector).length > 0;\r\n }\r\n\r\n getCanvasPoint(event: PointerEvent): { x: number; y: number } {\r\n if (!this._store.state.host) {\r\n return { x: 0, y: 0 };\r\n }\r\n\r\n const hostRect = this._store.state.host.getBoundingClientRect();\r\n\r\n const xRelativeToHost = event.clientX - hostRect.left;\r\n const yRelativeToHost = event.clientY - hostRect.top;\r\n\r\n const xWithoutTranslate = xRelativeToHost - this._store.state.translateX;\r\n const yWithoutTranslate = yRelativeToHost - this._store.state.translateY;\r\n\r\n const worldX = xWithoutTranslate / this._store.state.scale;\r\n const worldY = yWithoutTranslate / this._store.state.scale;\r\n\r\n return { x: worldX, y: worldY };\r\n }\r\n\r\n beforeWorkspaceChange() {\r\n // Cancel any pending debounced viewport updates to prevent them from\r\n // saving the old workspace's viewport to the new workspace\r\n this._kritzelEngine.viewport?.cancelPendingUpdates();\r\n\r\n // Immediately save the current workspace's viewport before switching\r\n const currentWorkspace = this._store.state.activeWorkspace;\r\n if (currentWorkspace) {\r\n this.updateWorkspaceViewport(\r\n this._store.state.translateX,\r\n this._store.state.translateY,\r\n this._store.state.scale\r\n );\r\n }\r\n\r\n this.resetActiveText();\r\n this.clearSelection();\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n }\r\n\r\n displaySelectionGroupUI(object: KritzelBaseObject<any>): boolean {\r\n if (!object.isSelected) {\r\n return false;\r\n }\r\n\r\n const selectionGroup = this._store.selectionGroup;\r\n if (!selectionGroup) {\r\n // During selection phase (no group yet), hide UI for KritzelLine objects\r\n return !(object instanceof KritzelLine);\r\n }\r\n\r\n // Show UI if selection contains more than one object\r\n if (selectionGroup.objects.length > 1) {\r\n return true;\r\n }\r\n\r\n // Hide UI if selection contains a single KritzelLine\r\n if (selectionGroup.objects.length === 1) {\r\n const selectedObject = selectionGroup.objects[0];\r\n return !(selectedObject instanceof KritzelLine);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n displaySelectionLineUI(object: KritzelBaseObject<any>): boolean {\r\n // Only show line UI on KritzelLine objects, not on selection groups\r\n if (!(object instanceof KritzelLine)) {\r\n return false;\r\n }\r\n\r\n // During selection phase (no group yet), show line UI if line is selected\r\n const selectionGroup = this._store.selectionGroup;\r\n if (!selectionGroup) {\r\n return object.isSelected;\r\n }\r\n\r\n if (!selectionGroup.isSelected) {\r\n return false;\r\n }\r\n\r\n // Show UI only if selection contains exactly one KritzelLine and it's this object\r\n if (selectionGroup.objects.length === 1) {\r\n const selectedObject = selectionGroup.objects[0];\r\n return selectedObject instanceof KritzelLine && selectedObject.id === object.id;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reviver.class.js","sourceRoot":"","sources":["../../../src/classes/core/reviver.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelImage } from \"../objects/image.class\";\r\nimport { KritzelLine } from \"../objects/line.class\";\r\nimport { KritzelPath } from \"../objects/path.class\";\r\nimport { KritzelShape } from \"../objects/shape.class\";\r\nimport { KritzelSelectionGroup } from \"../objects/selection-group.class\";\r\nimport { KritzelGroup } from \"../objects/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 { KritzelLineTool } from \"../tools/line-tool.class\";\r\nimport { KritzelSelectionTool } from \"../tools/selection-tool.class\";\r\nimport { KritzelTextTool } from \"../tools/text-tool.class\";\r\nimport { KritzelShapeTool } from \"../tools/shape-tool.class\";\r\nimport { KritzelCustomElement } from \"../objects/custom-element.class\";\r\nimport { KritzelCore } from \"./core.class\";\r\nimport { KritzelWorkspace } from \"../..\";\r\n\r\nexport class KritzelReviver {\r\n\r\n private readonly _core: KritzelCore;\r\n\r\n constructor(core: KritzelCore) {\r\n this._core = core;\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._core).deserialize(obj);\r\n break;\r\n case 'KritzelLine':\r\n revivedObj = KritzelLine.create(this._core).deserialize(obj);\r\n break;\r\n case 'KritzelText':\r\n revivedObj = KritzelText.create(this._core, obj.fontSize, obj.fontFamily).deserialize(obj);\r\n break;\r\n case 'KritzelShape':\r\n revivedObj = KritzelShape.create(this._core, {\r\n shapeType: obj.shapeType,\r\n fillColor: obj.fillColor,\r\n strokeColor: obj.strokeColor,\r\n strokeWidth: obj.strokeWidth,\r\n fontSize: obj.fontSize,\r\n fontFamily: obj.fontFamily,\r\n fontColor: obj.fontColor,\r\n }).deserialize(obj);\r\n break;\r\n case 'KritzelImage':\r\n revivedObj = KritzelImage.create(this._core).deserialize(obj);\r\n break;\r\n case 'KritzelCustomElement':\r\n revivedObj = KritzelCustomElement.create(this._core).deserialize(obj);\r\n break;\r\n case 'KritzelSelectionGroup':\r\n revivedObj = KritzelSelectionGroup.create(this._core).deserialize(obj);\r\n break;\r\n case 'KritzelGroup':\r\n revivedObj = KritzelGroup.create(this._core).deserialize(obj);\r\n break;\r\n case 'KritzelWorkspace':\r\n revivedObj = KritzelWorkspace.create(this._core, obj).deserialize(obj);\r\n break;\r\n case 'KritzelBrushTool':\r\n revivedObj = new KritzelBrushTool(this._core);\r\n break;\r\n case 'KritzelEraserTool':\r\n revivedObj = new KritzelEraserTool(this._core);\r\n break;\r\n case 'KritzelImageTool':\r\n revivedObj = new KritzelImageTool(this._core);\r\n break;\r\n case 'KritzelSelectionTool':\r\n revivedObj = new KritzelSelectionTool(this._core);\r\n break;\r\n case 'KritzelTextTool':\r\n revivedObj = new KritzelTextTool(this._core);\r\n break;\r\n case 'KritzelLineTool':\r\n revivedObj = new KritzelLineTool(this._core);\r\n break;\r\n case 'KritzelShapeTool':\r\n revivedObj = new KritzelShapeTool(this._core);\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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.class.js","sourceRoot":"","sources":["../../../src/classes/core/store.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelEngineState } from '../../interfaces/engine-state.interface';\r\nimport { KritzelSelectionBox } from '../objects/selection-box.class';\r\nimport { KritzelText } from '../objects/text.class';\r\nimport { KritzelShape } from '../objects/shape.class';\r\nimport { KritzelPath } from '../objects/path.class';\r\nimport { KritzelLine } from '../objects/line.class';\r\nimport { StateChangeListener, StatePropertyKey } from '../../types/state.types';\r\nimport { KritzelObjectMap } from '../structures/object-map.structure';\r\nimport { KritzelBaseObject } from '../..';\r\n\r\nexport class KritzelStore {\r\n private readonly _state: KritzelEngineState;\r\n private readonly _listeners: Map<StatePropertyKey, Set<StateChangeListener<any>>> = new Map();\r\n\r\n get state(): KritzelEngineState {\r\n return this._state;\r\n }\r\n\r\n get currentZIndex() {\r\n return Math.max(0, ...this._state.objects.filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KritzelSelectionBox)).map(o => o.zIndex)) + 1;\r\n }\r\n\r\n get allObjects(): KritzelBaseObject<Element>[] {\r\n return this._state.objects.allObjects();\r\n }\r\n\r\n get allNonSelectionObjects(): KritzelBaseObject<Element>[] {\r\n return this._state.objects.allObjects().filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KritzelSelectionBox));\r\n }\r\n\r\n get selectedObjects(): KritzelBaseObject<Element>[] {\r\n return this.allObjects.filter(o => !(o instanceof KritzelSelectionGroup)).filter(o => o.isSelected);\r\n }\r\n\r\n get selectionBox(): KritzelSelectionBox | null {\r\n const selectionBoxes = this._state.objects.filter(o => o instanceof KritzelSelectionBox);\r\n return selectionBoxes.length > 0 ? (selectionBoxes[0] as KritzelSelectionBox) : null;\r\n }\r\n\r\n get selectionGroup(): KritzelSelectionGroup | null {\r\n const selectionGroups = this._state.objects.filter(o => o instanceof KritzelSelectionGroup);\r\n return selectionGroups.length > 0 ? (selectionGroups[0] as KritzelSelectionGroup) : null;\r\n }\r\n\r\n get activeText(): KritzelText | null {\r\n const activeTexts = this._state.objects.filter(o => o instanceof KritzelText && (o as KritzelText).isEditing);\r\n return activeTexts.length > 0 ? (activeTexts[0] as KritzelText) : null;\r\n }\r\n\r\n get activeShape(): KritzelShape | null {\r\n const activeShapes = this._state.objects.filter(o => o instanceof KritzelShape && (o as KritzelShape).isEditing);\r\n return activeShapes.length > 0 ? (activeShapes[0] as KritzelShape) : null;\r\n }\r\n\r\n get currentPath(): KritzelPath | null {\r\n const drawingPaths = this._state.objects.filter(o => o instanceof KritzelPath && (o as KritzelPath).isCompleted === false);\r\n return drawingPaths.length > 0 ? (drawingPaths[0] as KritzelPath) : null;\r\n }\r\n\r\n get currentLine(): KritzelLine | null {\r\n const drawingLines = this._state.objects.filter(o => o instanceof KritzelLine && (o as KritzelLine).isCompleted === false);\r\n return drawingLines.length > 0 ? (drawingLines[0] as KritzelLine) : null;\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 get isDisabled() {\r\n return this._state.isEnabled === false || this._state.isReady === false || this._state.activeWorkspace === null;\r\n }\r\n\r\n get isPointerDown() {\r\n return this._state.pointers.size > 0;\r\n }\r\n\r\n constructor(state: KritzelEngineState) {\r\n this._state = state;\r\n this._state.objects = new KritzelObjectMap();\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 getState<K extends StatePropertyKey>(property: K): Readonly<KritzelEngineState[K]> {\r\n return this._state[property];\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"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.class.js","sourceRoot":"","sources":["../../../src/classes/core/viewport.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelBaseObject } from '../..';\r\nimport { KritzelMouseButton } from '../../enums/event-button.enum';\r\nimport { KritzelCore } from './core.class';\r\nimport { debounce, DebouncedFunc } from 'lodash';\r\n\r\nexport class KritzelViewport {\r\n private readonly _core: KritzelCore;\r\n private readonly _debounceUpdate: DebouncedFunc<() => void>;\r\n private readonly _debounceEndScaling: DebouncedFunc<() => void>;\r\n\r\n initialTouchDistance: number = 0;\r\n startX: number = 0;\r\n startY: number = 0;\r\n\r\n constructor(core: KritzelCore, host: HTMLElement) {\r\n this._core = core;\r\n this._core.store.state.host = host;\r\n this._core.store.state.viewportWidth = host.clientWidth;\r\n this._core.store.state.viewportHeight = host.clientHeight;\r\n this._core.store.state.startX = 0;\r\n this._core.store.state.startY = 0;\r\n this._core.store.state.translateX = 0;\r\n this._core.store.state.translateY = 0;\r\n\r\n this._debounceUpdate = debounce(() => {\r\n this._core.updateWorkspaceViewport(\r\n this._core.store.state.translateX,\r\n this._core.store.state.translateY,\r\n this._core.store.state.scale\r\n );\r\n }, 300);\r\n\r\n this._debounceEndScaling = debounce(() => {\r\n this._core.store.state.isScaling = false;\r\n this._core.rerender();\r\n }, 100);\r\n }\r\n\r\n /**\r\n * Cancels any pending debounced viewport updates.\r\n * Should be called before switching workspaces to prevent the old workspace's\r\n * viewport state from being saved to the new workspace.\r\n */\r\n cancelPendingUpdates(): void {\r\n this._debounceUpdate.cancel();\r\n }\r\n\r\n handleResize(): void {\r\n this._core.store.state.viewportWidth = this._core.store.state.host.clientWidth;\r\n this._core.store.state.viewportHeight = this._core.store.state.host.clientHeight;\r\n this._core.store.state.hasViewportChanged = true;\r\n this._core.rerender();\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (event.pointerType === 'mouse') {\r\n const adjustedClientX = event.clientX - this._core.store.offsetX;\r\n const adjustedClientY = event.clientY - this._core.store.offsetY;\r\n\r\n if (event.button === KritzelMouseButton.Right) {\r\n this._core.store.state.isPanning = true;\r\n this._core.store.state.startX = adjustedClientX;\r\n this._core.store.state.startY = adjustedClientY;\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n\r\n if (activePointers.length === 2) {\r\n const currentPath = this._core.store.currentPath;\r\n if (currentPath) {\r\n this._core.store.state.objects.remove(obj => obj.id === currentPath.id);\r\n }\r\n this._core.store.state.isScaling = true;\r\n\r\n const firstTouchX = activePointers[0].clientX - this._core.store.offsetX;\r\n const firstTouchY = activePointers[0].clientY - this._core.store.offsetY;\r\n\r\n const secondTouchX = activePointers[1].clientX - this._core.store.offsetX;\r\n const secondTouchY = activePointers[1].clientY - this._core.store.offsetY;\r\n\r\n this.initialTouchDistance = Math.sqrt(Math.pow(firstTouchX - secondTouchX, 2) + Math.pow(firstTouchY - secondTouchY, 2));\r\n\r\n this.startX = (firstTouchX + secondTouchX) / 2;\r\n this.startY = (firstTouchY + secondTouchY) / 2;\r\n this._core.rerender();\r\n }\r\n }\r\n }\r\n\r\n handlePointerMove(event: PointerEvent): void {\r\n if (event.pointerType === 'mouse') {\r\n const hostRect = this._core.store.state.host.getBoundingClientRect();\r\n const xRelativeToHost = event.clientX - hostRect.left;\r\n const yRelativeToHost = event.clientY - hostRect.top;\r\n\r\n this._core.store.state.pointerX = (xRelativeToHost - this._core.store.state.translateX) / this._core.store.state.scale;\r\n this._core.store.state.pointerY = (yRelativeToHost - this._core.store.state.translateY) / this._core.store.state.scale;\r\n\r\n if (this._core.store.state.isPanning) {\r\n const dx = xRelativeToHost - this._core.store.state.startX;\r\n const dy = yRelativeToHost - this._core.store.state.startY;\r\n\r\n this._core.store.state.translateX += dx;\r\n this._core.store.state.translateY += dy;\r\n this._core.store.state.startX = xRelativeToHost;\r\n this._core.store.state.startY = yRelativeToHost;\r\n this._core.store.state.hasViewportChanged = true;\r\n this._core.store.state.skipContextMenu = true;\r\n\r\n this._core.rerender();\r\n this._debounceUpdate();\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n const hostRect = this._core.store.state.host.getBoundingClientRect();\r\n const xRelativeToHost = event.clientX - hostRect.left;\r\n const yRelativeToHost = event.clientY - hostRect.top;\r\n\r\n this._core.store.state.pointerX = (xRelativeToHost - this._core.store.state.translateX) / this._core.store.state.scale;\r\n this._core.store.state.pointerY = (yRelativeToHost - this._core.store.state.translateY) / this._core.store.state.scale;\r\n\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n\r\n if (activePointers.length === 2) {\r\n const firstTouchX = activePointers[0].clientX - this._core.store.offsetX;\r\n const firstTouchY = activePointers[0].clientY - this._core.store.offsetY;\r\n\r\n const secondTouchX = activePointers[1].clientX - this._core.store.offsetX;\r\n const secondTouchY = activePointers[1].clientY - this._core.store.offsetY;\r\n\r\n const currentTouchDistance = Math.sqrt(Math.pow(firstTouchX - secondTouchX, 2) + Math.pow(firstTouchY - secondTouchY, 2));\r\n\r\n const midpointX = (firstTouchX + secondTouchX) / 2;\r\n const midpointY = (firstTouchY + secondTouchY) / 2;\r\n\r\n const scaleRatio = currentTouchDistance / this.initialTouchDistance!;\r\n const newScale = this._core.store.state.scale * scaleRatio;\r\n\r\n if (newScale > this._core.store.state.scaleMax || newScale < this._core.store.state.scaleMin) {\r\n this._core.store.state.translateX = this._core.store.state.translateX + midpointX - this.startX;\r\n this._core.store.state.translateY = this._core.store.state.translateY + midpointY - this.startY;\r\n } else {\r\n const translateXAdjustment = (midpointX - this._core.store.state.translateX) * (scaleRatio - 1);\r\n const translateYAdjustment = (midpointY - this._core.store.state.translateY) * (scaleRatio - 1);\r\n\r\n this._core.store.state.translateX = this._core.store.state.translateX + midpointX - this.startX - translateXAdjustment;\r\n this._core.store.state.translateY = this._core.store.state.translateY + midpointY - this.startY - translateYAdjustment;\r\n this._core.store.state.scale = newScale;\r\n\r\n this.initialTouchDistance = currentTouchDistance;\r\n }\r\n\r\n this.startX = midpointX;\r\n this.startY = midpointY;\r\n\r\n this._core.store.state.hasViewportChanged = true;\r\n\r\n this._core.rerender();\r\n this._debounceUpdate();\r\n }\r\n }\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (event.pointerType === 'mouse') {\r\n if (this._core.store.state.isPanning) {\r\n this._core.store.state.isPanning = false;\r\n this._core.rerender();\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n\r\n if (this._core.store.state.pointers.size === 0) {\r\n this._debounceEndScaling();\r\n }\r\n }\r\n }\r\n\r\n handleWheel(event: WheelEvent): void {\r\n event.preventDefault();\r\n\r\n if (event.ctrlKey === true && Math.abs(event.deltaY) > 0 && Math.abs(event.deltaX) === 0) {\r\n this.handleZoom(event);\r\n }\r\n\r\n if (!event.ctrlKey) {\r\n this.handlePan(event);\r\n }\r\n }\r\n\r\n centerInViewport(object: KritzelBaseObject): void {\r\n const { scale, viewportWidth, viewportHeight } = this._core.store.state;\r\n const { x, y, width, height } = object.rotatedBoundingBox;\r\n\r\n const objectCenterX = x + width / 2;\r\n const objectCenterY = y + height / 2;\r\n\r\n this._core.store.state.translateX = viewportWidth / 2 - objectCenterX * scale;\r\n this._core.store.state.translateY = viewportHeight / 2 - objectCenterY * scale;\r\n this._core.store.state.hasViewportChanged = true;\r\n\r\n this._core.rerender();\r\n this._debounceUpdate();\r\n }\r\n\r\n centerFitInViewport(object: KritzelBaseObject): void {\r\n const scaleX = this._core.store.state.viewportWidth / (object.rotatedBoundingBox.width * 1.1);\r\n const scaleY = this._core.store.state.viewportHeight / (object.rotatedBoundingBox.height * 1.1);\r\n const newScale = Math.min(scaleX, scaleY, this._core.store.state.scaleMax);\r\n const clampedScale = Math.max(newScale, this._core.store.state.scaleMin);\r\n\r\n this._core.store.state.scale = clampedScale;\r\n this.centerInViewport(object);\r\n }\r\n\r\n private handleZoom(event: WheelEvent): void {\r\n this._core.store.state.isScaling = true;\r\n const rect = this._core.store.state.host.getBoundingClientRect();\r\n const xRelativeToHost = event.clientX - rect.left;\r\n const yRelativeToHost = event.clientY - rect.top;\r\n\r\n this._core.store.state.pointerX = (xRelativeToHost - this._core.store.state.translateX) / this._core.store.state.scale;\r\n this._core.store.state.pointerY = (yRelativeToHost - this._core.store.state.translateY) / this._core.store.state.scale;\r\n\r\n const rawScaleFactor = 1 + (event.deltaY * -0.012);\r\n const scaleFactor = Math.max(0.8, Math.min(1.2, rawScaleFactor));\r\n const newScale = Math.min(this._core.store.state.scaleMax, Math.max(this._core.store.state.scaleMin, this._core.store.state.scale * scaleFactor));\r\n\r\n const scaleRatio = newScale / this._core.store.state.scale;\r\n const translateXAdjustment = (xRelativeToHost - this._core.store.state.translateX) * (scaleRatio - 1);\r\n const translateYAdjustment = (yRelativeToHost - this._core.store.state.translateY) * (scaleRatio - 1);\r\n\r\n this._core.store.state.scale = newScale;\r\n\r\n this._core.store.state.translateX = this._core.store.state.translateX - translateXAdjustment;\r\n this._core.store.state.translateY = this._core.store.state.translateY - translateYAdjustment;\r\n\r\n this._core.store.state.hasViewportChanged = true;\r\n\r\n this._core.rerender();\r\n this._debounceUpdate();\r\n this._debounceEndScaling();\r\n }\r\n\r\n private handlePan(event: WheelEvent): void {\r\n const panSpeed = 0.8;\r\n\r\n this._core.store.state.translateX = this._core.store.state.translateX - event.deltaX * panSpeed;\r\n this._core.store.state.translateY = this._core.store.state.translateY - event.deltaY * panSpeed;\r\n\r\n this._core.store.state.hasViewportChanged = true;\r\n\r\n this._core.rerender();\r\n this._debounceUpdate();\r\n }\r\n}\r\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.class.js","sourceRoot":"","sources":["../../../src/classes/core/workspace.class.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IAC3B,SAAS,GAAG,kBAAkB,CAAC;IAE/B,EAAE,CAAS;IACX,IAAI,CAAS;IACb,SAAS,CAAO;IAChB,SAAS,CAAO;IAChB,QAAQ,CAIN;IAEF,KAAK,CAAc;IAEnB,YAAY,EAAU,EAAE,IAAY,EAAG,WAAsE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;QACrJ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAiB,EAAE,GAAG;QAClC,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvE,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,GAAQ;QAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,SAAS;QACP,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,MAAW;QACrB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import { KritzelCore } from \"../..\";\r\nimport { KritzelSerializable } from \"../../interfaces/serializable.interface\";\r\n\r\nexport class KritzelWorkspace implements KritzelSerializable{\r\n __class__ = 'KritzelWorkspace';\r\n\r\n id: string;\r\n name: string;\r\n createdAt: Date;\r\n updatedAt: Date;\r\n viewport: {\r\n translateX: number;\r\n translateY: number;\r\n scale: number;\r\n };\r\n\r\n _core: KritzelCore;\r\n\r\n constructor(id: string, name: string, viewport: { translateX: number; translateY: number; scale: number } = { translateX: 0, translateY: 0, scale: 1 }) {\r\n this.id = id;\r\n this.name = name;\r\n this.createdAt = new Date();\r\n this.updatedAt = new Date();\r\n this.viewport = viewport;\r\n }\r\n\r\n static create(core: KritzelCore, obj): KritzelWorkspace {\r\n const workspace = new KritzelWorkspace(obj.id, obj.name, obj.viewport);\r\n workspace._core = core;\r\n return workspace;\r\n }\r\n\r\n addObject(obj: any): void {\r\n this._core.engine.addObject(obj);\r\n }\r\n\r\n serialize(): any {\r\n return {\r\n __class__: this.__class__,\r\n id: this.id,\r\n name: this.name,\r\n createdAt: this.createdAt.toISOString(),\r\n updatedAt: this.updatedAt.toISOString(),\r\n viewport: this.viewport,\r\n };\r\n }\r\n\r\n deserialize(object: any): KritzelSerializable {\r\n Object.assign(this, object);\r\n this.createdAt = new Date(object.createdAt);\r\n this.updatedAt = new Date(object.updatedAt);\r\n return this;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.handler.js","sourceRoot":"","sources":["../../../src/classes/handlers/base.handler.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;IACV,KAAK,CAAc;IAEtC,YAAY,IAAiB;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,gCAAgC;IACnD,CAAC;CACF","sourcesContent":["import { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelBaseHandler {\r\n protected readonly _core: KritzelCore;\r\n\r\n constructor(core: KritzelCore) {\r\n this._core = core;\r\n void this._core; // Avoid unused variable warning\r\n }\r\n}"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-menu.handler.js","sourceRoot":"","sources":["../../../src/classes/handlers/context-menu.handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelBaseHandler } from './base.handler';\r\nimport { KritzelCore } from '../core/core.class';\r\nimport { KritzelSelectionTool } from '../tools/selection-tool.class';\r\nimport { KritzelSelectionBox } from '../objects/selection-box.class';\r\n\r\nexport class KritzelContextMenuHandler extends KritzelBaseHandler {\r\n globalContextMenuItems = [];\r\n\r\n objectContextMenuItems = [];\r\n\r\n constructor(core: KritzelCore, globalContextMenuItems: any[], objectContextMenuItems: any[]) {\r\n super(core);\r\n this.globalContextMenuItems = globalContextMenuItems;\r\n this.objectContextMenuItems = objectContextMenuItems;\r\n }\r\n\r\n handleContextMenu(event: PointerEvent): void {\r\n if (!(this._core.store.state.activeTool instanceof KritzelSelectionTool)) {\r\n return;\r\n }\r\n\r\n if (this._core.store.state.skipContextMenu) {\r\n this._core.store.state.skipContextMenu = false;\r\n return;\r\n }\r\n\r\n const selectionTool = this._core.store.state.activeTool as KritzelSelectionTool;\r\n selectionTool?.moveHandler?.cancelPendingDrag();\r\n\r\n if (this._core.store.selectionBox) {\r\n this._core.store.state.objects.remove(object => object instanceof KritzelSelectionBox);\r\n this._core.store.state.isSelecting = false;\r\n }\r\n\r\n const selectedObject = this._core.getObjectFromPointerEvent(event, '.object');\r\n\r\n if (selectedObject && !(selectedObject instanceof KritzelSelectionGroup) && !(selectedObject instanceof KritzelSelectionBox)) {\r\n const selectionGroup = KritzelSelectionGroup.create(this._core);\r\n selectionGroup.addOrRemove(selectedObject);\r\n selectionGroup.isSelected = true;\r\n selectionGroup.rotation = selectedObject.rotation;\r\n\r\n this._core.store.state.isSelecting = false;\r\n\r\n const currentSelectionGroup = this._core.store.selectionGroup;\r\n if (currentSelectionGroup) {\r\n this._core.removeSelectionGroup();\r\n }\r\n this._core.addSelectionGroup(selectionGroup);\r\n this._core.rerender();\r\n }\r\n\r\n this._core.store.state.contextMenuItems = this._core.store.selectionGroup ? this.objectContextMenuItems : this.globalContextMenuItems;\r\n\r\n let x: number = event.clientX - this._core.store.offsetX;\r\n let y: number = event.clientY - this._core.store.offsetY;\r\n\r\n const menuWidthEstimate = 150;\r\n const menuHeightEstimate = 200;\r\n const margin = 10;\r\n\r\n if (x + menuWidthEstimate > window.innerWidth - margin) {\r\n x = window.innerWidth - menuWidthEstimate - margin;\r\n }\r\n\r\n if (y + menuHeightEstimate > window.innerHeight - margin) {\r\n y = window.innerHeight - menuHeightEstimate - margin;\r\n }\r\n\r\n x = Math.max(margin, x);\r\n y = Math.max(margin, y);\r\n\r\n this._core.store.state.contextMenuX = x;\r\n this._core.store.state.contextMenuY = y;\r\n this._core.store.state.isContextMenuVisible = true;\r\n\r\n this._core.store.state.isEnabled = false;\r\n\r\n this._core.rerender();\r\n }\r\n}\r\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hover.handler.js","sourceRoot":"","sources":["../../../src/classes/handlers/hover.handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IAEzD,YAAY,IAAiB;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,KAAmB;QACnC,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAClC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAE7E,IAAI,CAAC,aAAa;gBAAE,OAAO;YAE3B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;YAE1C,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;CACF","sourcesContent":["import { KritzelCore } from '../core/core.class';\r\nimport { KritzelBaseHandler } from './base.handler';\r\n\r\nexport class KritzelHoverHandler extends KritzelBaseHandler {\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n }\r\n\r\n handlePointerMove(event: PointerEvent) {\r\n if (event.pointerType === 'mouse') {\r\n const hoveredObject = this._core.getObjectFromPointerEvent(event, '.object');\r\n\r\n if (!hoveredObject) return;\r\n\r\n const x = this._core.store.state.pointerX;\r\n const y = this._core.store.state.pointerY;\r\n\r\n hoveredObject.isHovered = hoveredObject.hitTest(x, y);\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"key.handler.js","sourceRoot":"","sources":["../../../src/classes/handlers/key.handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelBaseHandler } from './base.handler';\r\nimport { KritzelCore } from '../core/core.class';\r\nimport { KritzelShortcut } from '../../interfaces/shortcut.interface';\r\n\r\nexport class KritzelKeyHandler extends KritzelBaseHandler {\r\n\r\n private shortcuts: KritzelShortcut[] = [\r\n // General\r\n { key: 'Escape', condition: c => !!c.store.selectionGroup, action: c => c.clearSelection() },\r\n { key: 'Delete', condition: c => !!c.store.selectionGroup, action: c => c.delete() },\r\n\r\n // Undo/Redo\r\n { key: 'z', ctrl: true, action: c => c.undo() },\r\n { key: 'y', ctrl: true, action: c => c.redo() },\r\n\r\n // Tool selection\r\n { key: 's', ctrl: true, action: () => this.switchTool('selection') },\r\n { key: 'b', ctrl: true, action: () => this.switchTool('brush') },\r\n { key: 'e', ctrl: true, action: () => this.switchTool('eraser') },\r\n { key: 'i', ctrl: true, action: () => this.switchTool('image') },\r\n { key: 'x', ctrl: true, action: () => this.switchTool('text') },\r\n\r\n // Clipboard\r\n {\r\n key: 'c',\r\n ctrl: true,\r\n condition: c => !!c.store.selectionGroup,\r\n action: c => {\r\n c.copy();\r\n c.rerender();\r\n },\r\n },\r\n { key: 'v', ctrl: true, condition: c => !!c.store.state.copiedObjects && !c.store.activeText, action: c => c.paste() },\r\n\r\n // Text editing\r\n // { key: 'a', ctrl: true, condition: c => !!c.store.activeText, action: c => c.store.activeText.selectAll() },\r\n // { key: 'v', ctrl: true, condition: c => !!c.store.activeText, action: c => c.store.activeText.insertFromClipboard() },\r\n\r\n // Object layering\r\n { key: '+', ctrl: true, condition: c => !!c.store.selectionGroup, action: c => c.bringForward() },\r\n { key: '-', ctrl: true, condition: c => !!c.store.selectionGroup, action: c => c.sendBackward() },\r\n { key: '*', shift: true, condition: c => !!c.store.selectionGroup, action: c => c.bringToFront() },\r\n { key: '_', shift: true, condition: c => !!c.store.selectionGroup, action: c => c.sendToBack() },\r\n\r\n // Grouping\r\n { key: 'g', ctrl: true, condition: c => !!c.store.selectionGroup && c.store.selectionGroup.objects.length >= 2, action: c => c.group() },\r\n { key: 'G', ctrl: true, shift: true, condition: c => !!c.store.selectionGroup, action: c => c.ungroup() },\r\n ];\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n }\r\n\r\n private switchTool(tool: string) {\r\n const toolInstance = KritzelToolRegistry.getTool(tool);\r\n this._core.store.setState('activeTool', toolInstance);\r\n this._core.deselectAllObjects();\r\n toolInstance.onActivate();\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent): void {\r\n this._core.store.state.isCtrlKeyPressed = event.ctrlKey;\r\n\r\n const shortcut = this.shortcuts.find(s => s.key === event.key && !!s.ctrl === event.ctrlKey && !!s.shift === event.shiftKey && (!s.condition || s.condition(this._core)));\r\n\r\n if (shortcut) {\r\n event.preventDefault();\r\n shortcut.action(this._core);\r\n }\r\n }\r\n\r\n handleKeyUp(event: KeyboardEvent): void {\r\n this._core.store.state.isCtrlKeyPressed = event.ctrlKey;\r\n }\r\n}\r\n"]}
|