kritzel-stencil 0.0.155 → 0.0.157
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/stencil/default-text-tool.config-DKpRP4XR.js +1441 -0
- package/dist/stencil/default-text-tool.config-DKpRP4XR.js.map +1 -0
- package/dist/{components/p-l10It7Nm.js → stencil/devices.helper-l10It7Nm.js} +2 -2
- package/dist/stencil/devices.helper-l10It7Nm.js.map +1 -0
- package/dist/stencil/engine.constants-DsjjAmnl.js +7 -0
- package/dist/stencil/engine.constants-DsjjAmnl.js.map +1 -0
- package/dist/{components/p-D8W6LE-c.js → stencil/event-button.enum-D8W6LE-c.js} +2 -2
- package/dist/stencil/event-button.enum-D8W6LE-c.js.map +1 -0
- package/dist/{components/p-C6qB08BS.js → stencil/html.helper-C6qB08BS.js} +2 -2
- package/dist/{collection/helpers/html.helper.js.map → stencil/html.helper-C6qB08BS.js.map} +1 -1
- package/dist/{collection/classes/registries/icon-registry.class.js → stencil/icon-registry.class-BtT8riKh.js} +6 -2
- package/dist/stencil/icon-registry.class-BtT8riKh.js.map +1 -0
- package/dist/stencil/index-DniO_INI.js +4395 -0
- package/dist/stencil/index-DniO_INI.js.map +1 -0
- package/dist/stencil/index.esm.js +18 -2
- package/dist/stencil/index.esm.js.map +1 -1
- package/dist/{esm → stencil}/kritzel-brush-style.entry.js +3 -3
- package/dist/stencil/kritzel-color-palette.entry.esm.js.map +1 -0
- package/dist/{components/p-D1uj4A4F.js → stencil/kritzel-color-palette.entry.js} +9 -39
- package/dist/stencil/kritzel-color.entry.esm.js.map +1 -0
- package/dist/{components/p-D4yvhd1d.js → stencil/kritzel-color.entry.js} +8 -30
- package/dist/stencil/kritzel-context-menu-BYgOEy-i.js +66 -0
- package/dist/stencil/kritzel-context-menu-BYgOEy-i.js.map +1 -0
- package/dist/{components/p-C2sWlNsJ.js → stencil/kritzel-context-menu-GdU9xEKC.js} +12 -41
- package/dist/stencil/kritzel-context-menu-GdU9xEKC.js.map +1 -0
- package/dist/stencil/kritzel-context-menu.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-context-menu.entry.js +3 -0
- package/dist/stencil/kritzel-control-brush-config.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-control-brush-config.entry.js +54 -0
- package/dist/stencil/kritzel-control-text-config.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-control-text-config.entry.js +42 -0
- package/dist/stencil/kritzel-controls.entry.esm.js.map +1 -0
- package/dist/{components/p-1lIHoOlH.js → stencil/kritzel-controls.entry.js} +17 -115
- package/dist/stencil/kritzel-cursor-trail.entry.esm.js.map +1 -0
- package/dist/{components/p-CLt3HMl6.js → stencil/kritzel-cursor-trail.entry.js} +10 -33
- package/dist/stencil/kritzel-dropdown.entry.esm.js.map +1 -0
- package/dist/{components/p-CIXPLjCu.js → stencil/kritzel-dropdown.entry.js} +9 -39
- package/dist/stencil/kritzel-editor.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-editor.entry.js +248 -0
- package/dist/stencil/kritzel-engine.entry.esm.js.map +1 -0
- package/dist/{esm/kritzel-color_22.entry.js → stencil/kritzel-engine.entry.js} +265 -1835
- package/dist/stencil/kritzel-font-family.entry.esm.js.map +1 -0
- package/dist/{components/p-BgznZoBH.js → stencil/kritzel-font-family.entry.js} +9 -37
- package/dist/{components/p-DDmSxM5f.js.map → stencil/kritzel-font-size.entry.esm.js.map} +1 -1
- package/dist/stencil/kritzel-font-size.entry.js +28 -0
- package/dist/stencil/kritzel-font.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-font.entry.js +23 -0
- package/dist/stencil/kritzel-icon.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-icon.entry.js +29 -0
- package/dist/stencil/kritzel-menu-item.entry.esm.js.map +1 -0
- package/dist/{components/p-CsA9M6me.js → stencil/kritzel-menu-item.entry.js} +16 -174
- package/dist/stencil/kritzel-menu.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-menu.entry.js +72 -0
- package/dist/stencil/kritzel-portal.entry.esm.js.map +1 -0
- package/dist/{components/p-D5Wq4x4r.js → stencil/kritzel-portal.entry.js} +11 -37
- package/dist/stencil/kritzel-split-button.entry.esm.js.map +1 -0
- package/dist/{components/p-TdCTkEu0.js → stencil/kritzel-split-button.entry.js} +18 -72
- package/dist/stencil/kritzel-stroke-size.entry.esm.js.map +1 -0
- package/dist/stencil/kritzel-stroke-size.entry.js +27 -0
- package/dist/stencil/kritzel-tooltip.entry.esm.js.map +1 -0
- package/dist/{components/p-CTP479Lf.js → stencil/kritzel-tooltip.entry.js} +11 -39
- package/dist/stencil/kritzel-utility-panel.entry.esm.js.map +1 -0
- package/dist/{components/p-DAfkuR8U.js → stencil/kritzel-utility-panel.entry.js} +11 -38
- package/dist/stencil/kritzel-workspace-manager.entry.esm.js.map +1 -0
- package/dist/{components/p-CK6no3mi.js → stencil/kritzel-workspace-manager.entry.js} +13 -68
- package/dist/stencil/loader.esm.js.map +1 -1
- package/dist/{components/p-B0kd2rUI.js → stencil/object.helper-B0kd2rUI.js} +2 -2
- package/dist/stencil/object.helper-B0kd2rUI.js.map +1 -0
- package/dist/stencil/stencil.esm.js +48 -2
- package/dist/stencil/stencil.esm.js.map +1 -1
- package/dist/stencil/sync-config.interface-lKfyG1EN.js +19839 -0
- package/dist/stencil/sync-config.interface-lKfyG1EN.js.map +1 -0
- package/dist/{components/p-CBYBurdY.js → stencil/text-tool.class-C0GbC5zQ.js} +729 -25
- package/dist/stencil/text-tool.class-C0GbC5zQ.js.map +1 -0
- package/dist/{components/p-n789Y3S-.js → stencil/workspace.class-n789Y3S-.js} +2 -2
- package/dist/stencil/workspace.class-n789Y3S-.js.map +1 -0
- package/dist/types/classes/structures/object-map.structure.d.ts +9 -1
- package/dist/types/classes/structures/quadtree.structure.d.ts +18 -0
- package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +1 -0
- package/dist/types/interfaces/bounding-box.interface.d.ts +1 -0
- package/package.json +1 -1
- package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -8
- package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
- package/dist/cjs/default-text-tool.config-BySzvIox.js +0 -31267
- package/dist/cjs/default-text-tool.config-BySzvIox.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 +0 -1465
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/kritzel-brush-style.cjs.entry.js +0 -32
- package/dist/cjs/kritzel-brush-style.entry.cjs.js.map +0 -1
- package/dist/cjs/kritzel-color_22.cjs.entry.js +0 -20811
- package/dist/cjs/loader.cjs.js +0 -14
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/stencil.cjs.js +0 -26
- package/dist/cjs/stencil.cjs.js.map +0 -1
- package/dist/collection/classes/core/core.class.js +0 -461
- package/dist/collection/classes/core/core.class.js.map +0 -1
- package/dist/collection/classes/core/reviver.class.js +0 -71
- package/dist/collection/classes/core/reviver.class.js.map +0 -1
- package/dist/collection/classes/core/store.class.js +0 -72
- package/dist/collection/classes/core/store.class.js.map +0 -1
- package/dist/collection/classes/core/viewport.class.js +0 -190
- package/dist/collection/classes/core/viewport.class.js.map +0 -1
- package/dist/collection/classes/core/workspace.class.js +0 -41
- package/dist/collection/classes/core/workspace.class.js.map +0 -1
- package/dist/collection/classes/handlers/base.handler.js +0 -8
- package/dist/collection/classes/handlers/base.handler.js.map +0 -1
- package/dist/collection/classes/handlers/context-menu.handler.js +0 -62
- package/dist/collection/classes/handlers/context-menu.handler.js.map +0 -1
- package/dist/collection/classes/handlers/hover.handler.js +0 -19
- package/dist/collection/classes/handlers/hover.handler.js.map +0 -1
- package/dist/collection/classes/handlers/key.handler.js +0 -58
- package/dist/collection/classes/handlers/key.handler.js.map +0 -1
- package/dist/collection/classes/handlers/move.handler.js +0 -149
- package/dist/collection/classes/handlers/move.handler.js.map +0 -1
- package/dist/collection/classes/handlers/resize.handler.js +0 -184
- package/dist/collection/classes/handlers/resize.handler.js.map +0 -1
- package/dist/collection/classes/handlers/rotation.handler.js +0 -116
- package/dist/collection/classes/handlers/rotation.handler.js.map +0 -1
- package/dist/collection/classes/handlers/selection.handler.js +0 -246
- package/dist/collection/classes/handlers/selection.handler.js.map +0 -1
- package/dist/collection/classes/objects/base-object.class.js +0 -232
- package/dist/collection/classes/objects/base-object.class.js.map +0 -1
- package/dist/collection/classes/objects/custom-element.class.js +0 -62
- package/dist/collection/classes/objects/custom-element.class.js.map +0 -1
- package/dist/collection/classes/objects/image.class.js +0 -56
- package/dist/collection/classes/objects/image.class.js.map +0 -1
- package/dist/collection/classes/objects/path.class.js +0 -284
- package/dist/collection/classes/objects/path.class.js.map +0 -1
- package/dist/collection/classes/objects/selection-box.class.js +0 -19
- package/dist/collection/classes/objects/selection-box.class.js.map +0 -1
- package/dist/collection/classes/objects/selection-group.class.js +0 -226
- package/dist/collection/classes/objects/selection-group.class.js.map +0 -1
- package/dist/collection/classes/objects/text.class.js +0 -261
- package/dist/collection/classes/objects/text.class.js.map +0 -1
- package/dist/collection/classes/providers/broadcast-sync-provider.class.js +0 -93
- package/dist/collection/classes/providers/broadcast-sync-provider.class.js.map +0 -1
- package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js +0 -232
- package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js.map +0 -1
- package/dist/collection/classes/providers/indexeddb-sync-provider.class.js +0 -35
- package/dist/collection/classes/providers/indexeddb-sync-provider.class.js.map +0 -1
- package/dist/collection/classes/providers/websocket-sync-provider.class.js +0 -89
- 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 +0 -18
- package/dist/collection/classes/registries/tool.registry.js.map +0 -1
- package/dist/collection/classes/structures/app-state-map.structure.js +0 -189
- package/dist/collection/classes/structures/app-state-map.structure.js.map +0 -1
- package/dist/collection/classes/structures/object-map.structure.js +0 -310
- package/dist/collection/classes/structures/object-map.structure.js.map +0 -1
- package/dist/collection/classes/tools/base-tool.class.js +0 -38
- package/dist/collection/classes/tools/base-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/brush-tool.class.js +0 -133
- package/dist/collection/classes/tools/brush-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/eraser-tool.class.js +0 -85
- package/dist/collection/classes/tools/eraser-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/image-tool.class.js +0 -83
- package/dist/collection/classes/tools/image-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/selection-tool.class.js +0 -164
- package/dist/collection/classes/tools/selection-tool.class.js.map +0 -1
- package/dist/collection/classes/tools/text-tool.class.js +0 -108
- package/dist/collection/classes/tools/text-tool.class.js.map +0 -1
- package/dist/collection/collection-manifest.json +0 -34
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +0 -10
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +0 -153
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +0 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +0 -34
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +0 -928
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +0 -1
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +0 -73
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +0 -1606
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +0 -1
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +0 -44
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +0 -98
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +0 -1
- package/dist/collection/components/shared/kritzel-color/kritzel-color.css +0 -21
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js +0 -107
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +0 -1
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +0 -46
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +0 -145
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +0 -1
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +0 -53
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +0 -218
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +0 -1
- package/dist/collection/components/shared/kritzel-font/kritzel-font.css +0 -10
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js +0 -90
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +0 -1
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +0 -48
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +0 -114
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +0 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +0 -30
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +0 -110
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +0 -1
- package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +0 -18
- package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +0 -94
- package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +0 -1
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +0 -27
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +0 -291
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +0 -1
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +0 -145
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +0 -280
- 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 +0 -310
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +0 -1
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +0 -78
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +0 -406
- 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.css +0 -28
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +0 -89
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +0 -1
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +0 -17
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +0 -251
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +0 -1
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +0 -55
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +0 -172
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +0 -1
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +0 -19
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +0 -135
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +0 -1
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.css +0 -19
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +0 -115
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +0 -1
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +0 -127
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +0 -312
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +0 -1
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +0 -44
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +0 -111
- 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.css +0 -5
- package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +0 -255
- package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +0 -1
- package/dist/collection/configs/default-brush-tool.config.js +0 -60
- package/dist/collection/configs/default-brush-tool.config.js.map +0 -1
- package/dist/collection/configs/default-engine-config.js +0 -53
- package/dist/collection/configs/default-engine-config.js.map +0 -1
- package/dist/collection/configs/default-sync.config.js +0 -10
- package/dist/collection/configs/default-sync.config.js.map +0 -1
- package/dist/collection/configs/default-text-tool.config.js +0 -32
- package/dist/collection/configs/default-text-tool.config.js.map +0 -1
- package/dist/collection/constants/core.constants.js +0 -2
- package/dist/collection/constants/core.constants.js.map +0 -1
- package/dist/collection/constants/engine.constants.js +0 -3
- package/dist/collection/constants/engine.constants.js.map +0 -1
- package/dist/collection/enums/event-button.enum.js +0 -7
- package/dist/collection/enums/event-button.enum.js.map +0 -1
- package/dist/collection/enums/handle-type.enum.js +0 -8
- package/dist/collection/enums/handle-type.enum.js.map +0 -1
- package/dist/collection/helpers/class.helper.js +0 -6
- package/dist/collection/helpers/class.helper.js.map +0 -1
- package/dist/collection/helpers/devices.helper.js +0 -26
- package/dist/collection/helpers/devices.helper.js.map +0 -1
- package/dist/collection/helpers/event.helper.js +0 -51
- package/dist/collection/helpers/event.helper.js.map +0 -1
- package/dist/collection/helpers/geometry.helper.js +0 -53
- package/dist/collection/helpers/geometry.helper.js.map +0 -1
- package/dist/collection/helpers/html.helper.js +0 -64
- package/dist/collection/helpers/keyboard.helper.js +0 -49
- package/dist/collection/helpers/keyboard.helper.js.map +0 -1
- package/dist/collection/helpers/math.helper.js +0 -6
- package/dist/collection/helpers/math.helper.js.map +0 -1
- package/dist/collection/helpers/object.helper.js +0 -12
- package/dist/collection/helpers/object.helper.js.map +0 -1
- package/dist/collection/index.js +0 -30
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/interfaces/bounding-box.interface.js +0 -2
- package/dist/collection/interfaces/bounding-box.interface.js.map +0 -1
- package/dist/collection/interfaces/clonable.interface.js +0 -2
- package/dist/collection/interfaces/clonable.interface.js.map +0 -1
- package/dist/collection/interfaces/context-menu-item.interface.js +0 -2
- package/dist/collection/interfaces/context-menu-item.interface.js.map +0 -1
- package/dist/collection/interfaces/debug-info.interface.js +0 -2
- package/dist/collection/interfaces/debug-info.interface.js.map +0 -1
- package/dist/collection/interfaces/engine-state.interface.js +0 -2
- package/dist/collection/interfaces/engine-state.interface.js.map +0 -1
- package/dist/collection/interfaces/menu-item.interface.js +0 -2
- package/dist/collection/interfaces/menu-item.interface.js.map +0 -1
- package/dist/collection/interfaces/object.interface.js +0 -2
- package/dist/collection/interfaces/object.interface.js.map +0 -1
- package/dist/collection/interfaces/path-options.interface.js +0 -2
- package/dist/collection/interfaces/path-options.interface.js.map +0 -1
- package/dist/collection/interfaces/point.interface.js +0 -2
- package/dist/collection/interfaces/point.interface.js.map +0 -1
- package/dist/collection/interfaces/polygon.interface.js +0 -2
- package/dist/collection/interfaces/polygon.interface.js.map +0 -1
- package/dist/collection/interfaces/selection-state.interface.js +0 -2
- package/dist/collection/interfaces/selection-state.interface.js.map +0 -1
- package/dist/collection/interfaces/serializable.interface.js +0 -2
- package/dist/collection/interfaces/serializable.interface.js.map +0 -1
- package/dist/collection/interfaces/shortcut.interface.js +0 -2
- package/dist/collection/interfaces/shortcut.interface.js.map +0 -1
- package/dist/collection/interfaces/sync-config.interface.js +0 -2
- package/dist/collection/interfaces/sync-config.interface.js.map +0 -1
- package/dist/collection/interfaces/sync-provider.interface.js +0 -2
- package/dist/collection/interfaces/sync-provider.interface.js.map +0 -1
- package/dist/collection/interfaces/tool.interface.js +0 -2
- package/dist/collection/interfaces/tool.interface.js.map +0 -1
- package/dist/collection/interfaces/toolbar-control.interface.js +0 -2
- package/dist/collection/interfaces/toolbar-control.interface.js.map +0 -1
- package/dist/collection/interfaces/undo-state.interface.js +0 -2
- package/dist/collection/interfaces/undo-state.interface.js.map +0 -1
- package/dist/collection/types/deep-readonly.type.js +0 -2
- package/dist/collection/types/deep-readonly.type.js.map +0 -1
- package/dist/collection/types/state.types.js +0 -2
- package/dist/collection/types/state.types.js.map +0 -1
- package/dist/components/index.js +0 -1477
- package/dist/components/index.js.map +0 -1
- package/dist/components/kritzel-brush-style.js +0 -67
- package/dist/components/kritzel-brush-style.js.map +0 -1
- package/dist/components/kritzel-color-palette.js +0 -9
- package/dist/components/kritzel-color-palette.js.map +0 -1
- package/dist/components/kritzel-color.js +0 -9
- package/dist/components/kritzel-color.js.map +0 -1
- package/dist/components/kritzel-context-menu.js +0 -9
- package/dist/components/kritzel-context-menu.js.map +0 -1
- package/dist/components/kritzel-control-brush-config.js +0 -9
- package/dist/components/kritzel-control-brush-config.js.map +0 -1
- package/dist/components/kritzel-control-text-config.js +0 -9
- package/dist/components/kritzel-control-text-config.js.map +0 -1
- package/dist/components/kritzel-controls.js +0 -9
- package/dist/components/kritzel-controls.js.map +0 -1
- package/dist/components/kritzel-cursor-trail.js +0 -9
- package/dist/components/kritzel-cursor-trail.js.map +0 -1
- package/dist/components/kritzel-dropdown.js +0 -9
- package/dist/components/kritzel-dropdown.js.map +0 -1
- package/dist/components/kritzel-editor.js +0 -516
- package/dist/components/kritzel-editor.js.map +0 -1
- package/dist/components/kritzel-engine.js +0 -9
- package/dist/components/kritzel-engine.js.map +0 -1
- package/dist/components/kritzel-font-family.js +0 -9
- package/dist/components/kritzel-font-family.js.map +0 -1
- package/dist/components/kritzel-font-size.js +0 -9
- package/dist/components/kritzel-font-size.js.map +0 -1
- package/dist/components/kritzel-font.js +0 -9
- package/dist/components/kritzel-font.js.map +0 -1
- package/dist/components/kritzel-icon.js +0 -9
- package/dist/components/kritzel-icon.js.map +0 -1
- package/dist/components/kritzel-menu-item.js +0 -9
- package/dist/components/kritzel-menu-item.js.map +0 -1
- package/dist/components/kritzel-menu.js +0 -9
- package/dist/components/kritzel-menu.js.map +0 -1
- package/dist/components/kritzel-portal.js +0 -9
- package/dist/components/kritzel-portal.js.map +0 -1
- package/dist/components/kritzel-split-button.js +0 -9
- package/dist/components/kritzel-split-button.js.map +0 -1
- package/dist/components/kritzel-stroke-size.js +0 -9
- package/dist/components/kritzel-stroke-size.js.map +0 -1
- package/dist/components/kritzel-tooltip.js +0 -9
- package/dist/components/kritzel-tooltip.js.map +0 -1
- package/dist/components/kritzel-utility-panel.js +0 -9
- package/dist/components/kritzel-utility-panel.js.map +0 -1
- package/dist/components/kritzel-workspace-manager.js +0 -9
- package/dist/components/kritzel-workspace-manager.js.map +0 -1
- package/dist/components/p-1lIHoOlH.js.map +0 -1
- package/dist/components/p-B0kd2rUI.js.map +0 -1
- package/dist/components/p-B4kxkVe-.js +0 -55
- package/dist/components/p-B4kxkVe-.js.map +0 -1
- package/dist/components/p-BQg4YML7.js +0 -106
- package/dist/components/p-BQg4YML7.js.map +0 -1
- package/dist/components/p-BgznZoBH.js.map +0 -1
- package/dist/components/p-Bhtn9qay.js +0 -98
- package/dist/components/p-Bhtn9qay.js.map +0 -1
- package/dist/components/p-C2sWlNsJ.js.map +0 -1
- package/dist/components/p-C6qB08BS.js.map +0 -1
- package/dist/components/p-CBYBurdY.js.map +0 -1
- package/dist/components/p-CIXPLjCu.js.map +0 -1
- package/dist/components/p-CK6no3mi.js.map +0 -1
- package/dist/components/p-CLt3HMl6.js.map +0 -1
- package/dist/components/p-CTP479Lf.js.map +0 -1
- package/dist/components/p-CsA9M6me.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-D1uj4A4F.js.map +0 -1
- package/dist/components/p-D4yvhd1d.js.map +0 -1
- package/dist/components/p-D5Wq4x4r.js.map +0 -1
- package/dist/components/p-D8W6LE-c.js.map +0 -1
- package/dist/components/p-DAfkuR8U.js.map +0 -1
- package/dist/components/p-DDmSxM5f.js +0 -57
- package/dist/components/p-Ddh40W3x.js +0 -103
- package/dist/components/p-Ddh40W3x.js.map +0 -1
- package/dist/components/p-TdCTkEu0.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-q5u4CVFi.js +0 -35447
- package/dist/components/p-q5u4CVFi.js.map +0 -1
- package/dist/components/p-uuRJU2R1.js +0 -46
- package/dist/components/p-uuRJU2R1.js.map +0 -1
- package/dist/esm/app-globals-DQuL1Twl.js +0 -6
- package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
- package/dist/esm/default-text-tool.config-2YFQA3SF.js +0 -31208
- package/dist/esm/default-text-tool.config-2YFQA3SF.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 +0 -1449
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/kritzel-brush-style.entry.js.map +0 -1
- package/dist/esm/loader.js +0 -12
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/stencil.js +0 -22
- package/dist/esm/stencil.js.map +0 -1
- package/dist/index.cjs.js +0 -1
- package/dist/index.js +0 -1
- package/dist/stencil/p-2YFQA3SF.js +0 -2
- package/dist/stencil/p-2YFQA3SF.js.map +0 -1
- package/dist/stencil/p-77fa3987.entry.js +0 -10
- package/dist/stencil/p-77fa3987.entry.js.map +0 -1
- package/dist/stencil/p-DQuL1Twl.js +0 -2
- 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/p-d702c5af.entry.js +0 -2
- package/dist/stencil/p-d702c5af.entry.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"selection-group.class.js","sourceRoot":"","sources":["../../../src/classes/objects/selection-group.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelCore } from '../core/core.class';\r\nimport { KritzelBaseObject } from './base-object.class';\r\n\r\ninterface UnchangedObjectSnapshot {\r\n id: string;\r\n translateX: number;\r\n translateY: number;\r\n rotation: number;\r\n width: number;\r\n height: number;\r\n totalWidth: number;\r\n totalHeight: number;\r\n scale: number;\r\n}\r\n\r\nexport class KritzelSelectionGroup extends KritzelBaseObject<HTMLElement> {\r\n override __class__: string = 'KritzelSelectionGroup';\r\n\r\n // Store only object IDs instead of full objects\r\n objectIds: string[] = [];\r\n \r\n // Store snapshots of object state for transformations (rotation, resize)\r\n unchangedObjectSnapshots: Map<string, UnchangedObjectSnapshot> = new Map();\r\n\r\n minX: number;\r\n maxX: number;\r\n\r\n minY: number;\r\n maxY: number;\r\n\r\n // Getter to retrieve actual objects from the store by their IDs\r\n get objects(): KritzelBaseObject<any>[] {\r\n return this.objectIds\r\n .map(id => {\r\n const found = this._core.store.state.objects.filter(obj => obj.id === id);\r\n return found.length > 0 ? found[0] : null;\r\n })\r\n .filter(obj => obj !== null) as KritzelBaseObject<any>[];\r\n }\r\n\r\n get length(): number {\r\n return this.objectIds.length;\r\n }\r\n\r\n static override create(core: KritzelCore): KritzelSelectionGroup {\r\n const object = new KritzelSelectionGroup();\r\n\r\n object._core = core;\r\n object.id = object.generateId();\r\n object.workspaceId = core.store.state.activeWorkspace.id;\r\n object.scale = core.store.state.scale;\r\n object.zIndex = 99999;\r\n\r\n return object;\r\n }\r\n\r\n addOrRemove(object: KritzelBaseObject<any>) {\r\n const index = this.objectIds.findIndex(id => id === object.id);\r\n if (index === -1) {\r\n this.objectIds.push(object.id);\r\n } else {\r\n this.objectIds.splice(index, 1);\r\n }\r\n\r\n this.captureUnchangedSnapshots();\r\n this.refreshObjectDimensions();\r\n }\r\n\r\n deselectAllChildren() {\r\n this.objects.forEach(obj => (obj.isSelected = false));\r\n }\r\n\r\n updateWorkspaceId(workspaceId: string) {\r\n this.workspaceId = workspaceId;\r\n this.objects.forEach(obj => (obj.workspaceId = workspaceId));\r\n }\r\n\r\n updateZIndices(startZIndex: number) {\r\n this.objects.forEach((obj, i) => {\r\n obj.zIndex = startZIndex + i;\r\n });\r\n }\r\n\r\n updatePosition(x: number, y: number) {\r\n this.objects.forEach(obj => {\r\n const deltaX = obj.translateX - this.translateX;\r\n const deltaY = obj.translateY - this.translateY;\r\n obj.updatePosition(x + deltaX, y + deltaY);\r\n });\r\n\r\n // Update snapshots\r\n this.unchangedObjectSnapshots.forEach(snapshot => {\r\n const deltaX = snapshot.translateX - this.translateX;\r\n const deltaY = snapshot.translateY - this.translateY;\r\n snapshot.translateX = x + deltaX;\r\n snapshot.translateY = x + deltaY;\r\n });\r\n\r\n this.translateX = x;\r\n this.translateY = y;\r\n\r\n this._core.store.state.objects.update(this);\r\n }\r\n\r\n /**\r\n * Capture snapshots of current object states for undo/redo operations\r\n */\r\n private captureUnchangedSnapshots(): void {\r\n this.unchangedObjectSnapshots.clear();\r\n this.objects.forEach(obj => {\r\n this.unchangedObjectSnapshots.set(obj.id, {\r\n id: obj.id,\r\n translateX: obj.translateX,\r\n translateY: obj.translateY,\r\n rotation: obj.rotation,\r\n width: obj.width,\r\n height: obj.height,\r\n totalWidth: obj.totalWidth,\r\n totalHeight: obj.totalHeight,\r\n scale: obj.scale,\r\n });\r\n });\r\n }\r\n\r\n override serialize() {\r\n const { _core, _elementRef, element, totalWidth, totalHeight, unchangedObjectSnapshots, ...remainingProps } = this as any;\r\n\r\n const clonedProps = structuredClone(remainingProps);\r\n\r\n if (element && typeof element === 'object' && 'nodeType' in element && element.nodeType === 1) {\r\n clonedProps.element = element.cloneNode(true) as HTMLElement;\r\n }\r\n\r\n // Convert Map to plain object for serialization\r\n clonedProps.unchangedObjectSnapshots = Object.fromEntries(this.unchangedObjectSnapshots);\r\n\r\n return clonedProps;\r\n }\r\n\r\n override deserialize<T>(object: any): T {\r\n // First, deserialize all base properties using parent's deserialize\r\n super.deserialize(object);\r\n\r\n // Restore the Map from serialized object\r\n if (object.unchangedObjectSnapshots) {\r\n this.unchangedObjectSnapshots = new Map(Object.entries(object.unchangedObjectSnapshots));\r\n }\r\n\r\n return this as unknown as T;\r\n }\r\n\r\n override update(): void {\r\n // Only update the selection group itself\r\n // Child objects are already updated during move/resize/rotate operations\r\n // Updating them again here would create redundant y.js updates\r\n this._core.store.state.objects.update(this);\r\n }\r\n\r\n override move(startX: number, startY: number, endX: number, endY: number): void {\r\n const deltaX = (startX - endX) / this._core.store.state.scale;\r\n const deltaY = (startY - endY) / this._core.store.state.scale;\r\n\r\n this.translateX += deltaX;\r\n this.translateY += deltaY;\r\n\r\n this._core.store.state.objects.transaction(() => {\r\n this._core.store.state.objects.update(this);\r\n\r\n this.objects.forEach(obj => {\r\n obj.move(startX, startY, endX, endY);\r\n });\r\n });\r\n\r\n // Update snapshots\r\n this.unchangedObjectSnapshots.forEach(snapshot => {\r\n snapshot.translateX += deltaX;\r\n snapshot.translateY += deltaY;\r\n });\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n const widthScaleFactor = width / this.width;\r\n const heightScaleFactor = height / this.height;\r\n\r\n const deltaX = x - this.translateX;\r\n const deltaY = y - this.translateY;\r\n\r\n this._core.store.state.objects.transaction(() => {\r\n this.objects.forEach(child => {\r\n const updatedWidth = child.width * widthScaleFactor;\r\n const updatedHeight = child.height * heightScaleFactor;\r\n\r\n const updatedX = child.translateX + deltaX + (child.translateX - this.translateX) * (widthScaleFactor - 1);\r\n const updatedY = child.translateY + deltaY + (child.translateY - this.translateY) * (heightScaleFactor - 1);\r\n\r\n child.resize(updatedX, updatedY, updatedWidth, updatedHeight);\r\n });\r\n\r\n // Refresh dimensions and update the SelectionGroup to propagate changes to other tabs\r\n this.refreshObjectDimensions();\r\n this.captureUnchangedSnapshots();\r\n this._core.store.state.objects.update(this);\r\n });\r\n }\r\n\r\n override rotate(value: number): void {\r\n this.rotation = value;\r\n\r\n const centerX = this.translateX + this.totalWidth / 2 / this.scale;\r\n const centerY = this.translateY + this.totalHeight / 2 / this.scale;\r\n\r\n const angle = value;\r\n const cos = Math.cos(angle);\r\n const sin = Math.sin(angle);\r\n\r\n this._core.store.state.objects.transaction(() => {\r\n // Update the SelectionGroup itself to propagate rotation to other tabs\r\n this._core.store.state.objects.update(this);\r\n\r\n this.objects.forEach(child => {\r\n const unchangedSnapshot = this.unchangedObjectSnapshots.get(child.id);\r\n if (!unchangedSnapshot) return;\r\n\r\n const offsetX = this.getOffsetXToCenterFromSnapshot(unchangedSnapshot);\r\n const offsetY = this.getOffsetYToCenterFromSnapshot(unchangedSnapshot);\r\n\r\n const rotatedX = cos * offsetX - sin * offsetY;\r\n const rotatedY = sin * offsetX + cos * offsetY;\r\n\r\n child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;\r\n child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;\r\n\r\n child.rotate(this.objects.length === 1 ? value : value + unchangedSnapshot.rotation);\r\n });\r\n });\r\n }\r\n\r\n override copy(): KritzelBaseObject<HTMLElement> {\r\n const selectionGroup = KritzelSelectionGroup.create(this._core);\r\n\r\n this.objects\r\n .sort((a, b) => a.zIndex - b.zIndex)\r\n .forEach(obj => {\r\n const copiedObject = obj.copy() as KritzelBaseObject<any>;\r\n selectionGroup.addOrRemove(copiedObject);\r\n });\r\n\r\n selectionGroup.captureUnchangedSnapshots();\r\n\r\n if (this.objects.length === 1) {\r\n selectionGroup.rotation = this.objects[0].rotation;\r\n }\r\n\r\n return selectionGroup;\r\n }\r\n\r\n refreshObjectDimensions() {\r\n if (this.objects.length === 1) {\r\n const obj = this.objects[0];\r\n this.minX = obj.boundingBox.x / this.scale;\r\n this.maxX = obj.boundingBox.x / this.scale + obj.boundingBox.width;\r\n this.minY = obj.boundingBox.y / this.scale;\r\n this.maxY = obj.boundingBox.y / this.scale + obj.boundingBox.height;\r\n\r\n this.translateX = (this.minX - this.padding) * this.scale;\r\n this.translateY = (this.minY - this.padding) * this.scale;\r\n\r\n this.width = (this.maxX - this.minX - this.padding) * this.scale;\r\n this.height = (this.maxY - this.minY - this.padding) * this.scale;\r\n } else {\r\n this.minX = Math.min(...this.objects.map(obj => obj.minXRotated));\r\n this.maxX = Math.max(...this.objects.map(obj => obj.maxXRotated));\r\n\r\n this.minY = Math.min(...this.objects.map(obj => obj.minYRotated));\r\n this.maxY = Math.max(...this.objects.map(obj => obj.maxYRotated));\r\n\r\n this.translateX = this.minX - this.padding;\r\n this.translateY = this.minY - this.padding;\r\n\r\n this.width = (this.maxX - this.minX - this.padding) * this.scale;\r\n this.height = (this.maxY - this.minY - this.padding) * this.scale;\r\n }\r\n\r\n this._core.store.state.objects.update(this);\r\n }\r\n\r\n private getOffsetXToCenterFromSnapshot(snapshot: UnchangedObjectSnapshot): number {\r\n const objCenterX = snapshot.translateX + snapshot.totalWidth / snapshot.scale / 2;\r\n const groupCenterX = this.translateX + this.totalWidth / this.scale / 2;\r\n return objCenterX - groupCenterX;\r\n }\r\n\r\n private getOffsetYToCenterFromSnapshot(snapshot: UnchangedObjectSnapshot): number {\r\n const objCenterY = snapshot.translateY + snapshot.totalHeight / snapshot.scale / 2;\r\n const groupCenterY = this.translateY + this.totalHeight / this.scale / 2;\r\n return objCenterY - groupCenterY;\r\n }\r\n}\r\n"]}
|
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
import { KritzelToolRegistry } from "../registries/tool.registry";
|
|
2
|
-
import { KritzelBaseObject } from "./base-object.class";
|
|
3
|
-
import { KritzelKeyboardHelper } from "../../helpers/keyboard.helper";
|
|
4
|
-
import { KritzelDevicesHelper } from "../../helpers/devices.helper";
|
|
5
|
-
import { EditorState, TextSelection } from "prosemirror-state";
|
|
6
|
-
import { EditorView } from "prosemirror-view";
|
|
7
|
-
import { Schema } from "prosemirror-model";
|
|
8
|
-
import { schema } from "prosemirror-schema-basic";
|
|
9
|
-
import { addListNodes } from "prosemirror-schema-list";
|
|
10
|
-
import { keymap } from "prosemirror-keymap";
|
|
11
|
-
import { baseKeymap } from "prosemirror-commands";
|
|
12
|
-
export class KritzelText extends KritzelBaseObject {
|
|
13
|
-
__class__ = 'KritzelText';
|
|
14
|
-
fontFamily = 'Arial';
|
|
15
|
-
fontSize = 8;
|
|
16
|
-
fontColor = '#000000';
|
|
17
|
-
initialWidth = 1;
|
|
18
|
-
initialHeight = 1;
|
|
19
|
-
scale = 1;
|
|
20
|
-
scaleFactor = 1;
|
|
21
|
-
isDebugInfoVisible = true;
|
|
22
|
-
isEditable = true;
|
|
23
|
-
isEditing = false;
|
|
24
|
-
editor = null;
|
|
25
|
-
content = null;
|
|
26
|
-
_schema = new Schema({
|
|
27
|
-
nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block'),
|
|
28
|
-
marks: schema.spec.marks,
|
|
29
|
-
});
|
|
30
|
-
uneditedObject = null;
|
|
31
|
-
rows = 1;
|
|
32
|
-
get isEmpty() {
|
|
33
|
-
if (!this.editor) {
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
const doc = this.editor.state.doc;
|
|
37
|
-
if (doc.content.size === 0) {
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
const text = doc.textContent.trim();
|
|
41
|
-
return text.length === 0;
|
|
42
|
-
}
|
|
43
|
-
constructor(config) {
|
|
44
|
-
super();
|
|
45
|
-
if (config) {
|
|
46
|
-
this.translateX = config.translateX || 0;
|
|
47
|
-
this.translateY = config.translateY || 0;
|
|
48
|
-
this.fontSize = config.fontSize || 8;
|
|
49
|
-
this.fontFamily = config.fontFamily || 'Arial';
|
|
50
|
-
this.fontColor = config.fontColor || '#000000';
|
|
51
|
-
this.width = this.initialWidth / (this._core.store.state.scale < 0 ? this._core.store.state.scale : 1);
|
|
52
|
-
this.height = (this.fontSize * 1.2) / (this._core.store.state.scale < 0 ? this._core.store.state.scale : 1);
|
|
53
|
-
this.scale = config.scale || 1;
|
|
54
|
-
this.scaleFactor = config.scaleX ?? 1;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
static create(core, fontSize, fontFamily) {
|
|
58
|
-
const object = new KritzelText();
|
|
59
|
-
object._core = core;
|
|
60
|
-
object.id = object.generateId();
|
|
61
|
-
object.workspaceId = core.store.state.activeWorkspace.id;
|
|
62
|
-
object.fontSize = fontSize;
|
|
63
|
-
object.fontFamily = fontFamily;
|
|
64
|
-
object.translateX = 0;
|
|
65
|
-
object.translateY = 0;
|
|
66
|
-
object.width = object.initialWidth / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);
|
|
67
|
-
object.height = (object.fontSize * 1.2) / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);
|
|
68
|
-
object.backgroundColor = 'transparent';
|
|
69
|
-
object.initialWidth = object.width;
|
|
70
|
-
object.initialHeight = object.height;
|
|
71
|
-
object.scaleFactor = 1;
|
|
72
|
-
object.scale = object._core.store.state.scale;
|
|
73
|
-
object.zIndex = core.store.currentZIndex;
|
|
74
|
-
object.editor = object.createEditor();
|
|
75
|
-
return object;
|
|
76
|
-
}
|
|
77
|
-
mount(element) {
|
|
78
|
-
if (element === null || this.isInViewport() === false) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
if (this.isMounted && this.elementRef === element && this.editor.dom.parentElement === element) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
this.elementRef = element;
|
|
85
|
-
this.elementRef.style.fontFamily = this.fontFamily;
|
|
86
|
-
this.elementRef.style.fontSize = `${this.fontSize}pt`;
|
|
87
|
-
this.elementRef.style.color = this.fontColor;
|
|
88
|
-
this.elementRef.style.whiteSpace = 'pre-wrap';
|
|
89
|
-
this.elementRef.style.wordWrap = 'break-word';
|
|
90
|
-
this.elementRef.innerHTML = '';
|
|
91
|
-
this.elementRef.appendChild(this.editor.dom);
|
|
92
|
-
this.isMounted = true;
|
|
93
|
-
requestAnimationFrame(() => this.adjustSizeOnInput());
|
|
94
|
-
}
|
|
95
|
-
createEditor() {
|
|
96
|
-
const doc = this._schema.node('doc', null, [this._schema.node('paragraph')]);
|
|
97
|
-
return new EditorView(null, {
|
|
98
|
-
state: EditorState.create({
|
|
99
|
-
doc: doc,
|
|
100
|
-
plugins: [keymap(baseKeymap)],
|
|
101
|
-
}),
|
|
102
|
-
editable: () => false,
|
|
103
|
-
dispatchTransaction: transaction => {
|
|
104
|
-
const newState = this.editor.state.apply(transaction);
|
|
105
|
-
this.editor.updateState(newState);
|
|
106
|
-
if (transaction.docChanged) {
|
|
107
|
-
this.content = newState.doc.toJSON();
|
|
108
|
-
this.adjustSizeOnInput();
|
|
109
|
-
if (!transaction.getMeta('fromRemote')) {
|
|
110
|
-
this._core.store.state.objects.update(this, { temporary: true });
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
setContent(content) {
|
|
117
|
-
this.content = content;
|
|
118
|
-
if (this.editor && content) {
|
|
119
|
-
const newDoc = this.editor.state.schema.nodeFromJSON(content);
|
|
120
|
-
const tr = this.editor.state.tr.replaceWith(0, this.editor.state.doc.content.size, newDoc.content);
|
|
121
|
-
tr.setMeta('fromRemote', true);
|
|
122
|
-
this.editor.dispatch(tr);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
adjustSizeOnInput() {
|
|
126
|
-
const element = this.elementRef;
|
|
127
|
-
if (element && this.isMounted && element.scrollWidth > 0) {
|
|
128
|
-
const previousTotalWidth = this.totalWidth;
|
|
129
|
-
const previousTotalHeight = this.totalHeight;
|
|
130
|
-
const newWidth = element.scrollWidth;
|
|
131
|
-
const newHeight = element.scrollHeight;
|
|
132
|
-
this.width = newWidth * this.scaleFactor;
|
|
133
|
-
this.height = newHeight * this.scaleFactor;
|
|
134
|
-
if (this.rotation !== 0) {
|
|
135
|
-
const newTotalWidth = this.totalWidth;
|
|
136
|
-
const newTotalHeight = this.totalHeight;
|
|
137
|
-
const deltaWidth = (newTotalWidth - previousTotalWidth) / 2 / this.scale;
|
|
138
|
-
const deltaHeight = (newTotalHeight - previousTotalHeight) / 2 / this.scale;
|
|
139
|
-
if (deltaWidth !== 0 || deltaHeight !== 0) {
|
|
140
|
-
const cos = Math.cos(this.rotation);
|
|
141
|
-
const sin = Math.sin(this.rotation);
|
|
142
|
-
const rotatedDeltaX = cos * deltaWidth - sin * deltaHeight;
|
|
143
|
-
const rotatedDeltaY = sin * deltaWidth + cos * deltaHeight;
|
|
144
|
-
this.translateX += rotatedDeltaX - deltaWidth;
|
|
145
|
-
this.translateY += rotatedDeltaY - deltaHeight;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
resize(x, y, width, height) {
|
|
151
|
-
if (width <= 1 || height <= 1) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
const originalWidth = this.width / this.scaleFactor;
|
|
155
|
-
const originalHeight = this.height / this.scaleFactor;
|
|
156
|
-
const scaleX = width / originalWidth;
|
|
157
|
-
const scaleY = height / originalHeight;
|
|
158
|
-
this.scaleFactor = Math.min(scaleX, scaleY);
|
|
159
|
-
this.width = originalWidth * this.scaleFactor;
|
|
160
|
-
this.height = originalHeight * this.scaleFactor;
|
|
161
|
-
this.translateX = x;
|
|
162
|
-
this.translateY = y;
|
|
163
|
-
this._core.store.state.objects.update(this);
|
|
164
|
-
}
|
|
165
|
-
focus(coords) {
|
|
166
|
-
if (this.editor) {
|
|
167
|
-
const doc = this.editor.state.doc;
|
|
168
|
-
if (coords.x && coords.y) {
|
|
169
|
-
const pos = this.editor.posAtCoords({ left: coords.x, top: coords.y });
|
|
170
|
-
if (pos) {
|
|
171
|
-
this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, pos.pos)));
|
|
172
|
-
this.editor.focus();
|
|
173
|
-
if (KritzelDevicesHelper.isIOS()) {
|
|
174
|
-
this.scrollIntoViewOnIOS();
|
|
175
|
-
}
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
const end = Math.max(1, doc.content.size - 1);
|
|
180
|
-
this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, end)));
|
|
181
|
-
this.editor.focus();
|
|
182
|
-
if (KritzelDevicesHelper.isIOS()) {
|
|
183
|
-
this.scrollIntoViewOnIOS();
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
scrollIntoViewOnIOS() {
|
|
188
|
-
setTimeout(() => {
|
|
189
|
-
if (this.editor && this.editor.dom) {
|
|
190
|
-
this.editor.dom.scrollIntoView({
|
|
191
|
-
behavior: 'smooth',
|
|
192
|
-
block: 'center',
|
|
193
|
-
inline: 'nearest'
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
}, 300);
|
|
197
|
-
}
|
|
198
|
-
edit(event) {
|
|
199
|
-
KritzelKeyboardHelper.disableInteractiveWidget();
|
|
200
|
-
this.uneditedObject = this.clone();
|
|
201
|
-
this._core.store.setState('activeTool', KritzelToolRegistry.getTool('text'));
|
|
202
|
-
this.editor.setProps({ editable: () => true });
|
|
203
|
-
this.isEditing = true;
|
|
204
|
-
this._core.rerender();
|
|
205
|
-
this.adjustSizeOnInput();
|
|
206
|
-
this.focus({ x: event?.clientX, y: event?.clientY });
|
|
207
|
-
KritzelKeyboardHelper.enableInteractiveWidget();
|
|
208
|
-
}
|
|
209
|
-
save() {
|
|
210
|
-
requestAnimationFrame(() => this.adjustSizeOnInput());
|
|
211
|
-
this.content = this.editor.state.doc.toJSON();
|
|
212
|
-
this.editor.setProps({ editable: () => false });
|
|
213
|
-
this.editor.dom.blur();
|
|
214
|
-
this.isEditing = false;
|
|
215
|
-
this._core.store.state.objects.consolidateTemporaryItems();
|
|
216
|
-
this._core.store.state.objects.update(this);
|
|
217
|
-
this._core.engine.emitObjectsChange();
|
|
218
|
-
}
|
|
219
|
-
handlePointerDown(event) {
|
|
220
|
-
if (!this.isEditing) {
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
event.stopPropagation();
|
|
224
|
-
}
|
|
225
|
-
handlePointerMove(event) {
|
|
226
|
-
if (!this.isEditing) {
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
event.stopPropagation();
|
|
230
|
-
}
|
|
231
|
-
handlePointerUp(event) {
|
|
232
|
-
if (!this.isEditing) {
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
event.stopPropagation();
|
|
236
|
-
}
|
|
237
|
-
copy() {
|
|
238
|
-
const copiedObject = super.copy();
|
|
239
|
-
copiedObject.editor = copiedObject.createEditor();
|
|
240
|
-
if (this.content) {
|
|
241
|
-
copiedObject.setContent(this.content);
|
|
242
|
-
}
|
|
243
|
-
return copiedObject;
|
|
244
|
-
}
|
|
245
|
-
serialize() {
|
|
246
|
-
const { _core, _elementRef, _schema, element, totalWidth, totalHeight, editor, uneditedObject, ...remainingProps } = this;
|
|
247
|
-
const clonedProps = structuredClone(remainingProps);
|
|
248
|
-
if (element && typeof element === 'object' && 'nodeType' in element && element.nodeType === 1) {
|
|
249
|
-
clonedProps.element = element.cloneNode(true);
|
|
250
|
-
}
|
|
251
|
-
return clonedProps;
|
|
252
|
-
}
|
|
253
|
-
deserialize(object) {
|
|
254
|
-
super.deserialize(object);
|
|
255
|
-
if (object.content) {
|
|
256
|
-
this.setContent(object.content);
|
|
257
|
-
}
|
|
258
|
-
return this;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
//# sourceMappingURL=text.class.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text.class.js","sourceRoot":"","sources":["../../../src/classes/objects/text.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelBaseObject } from './base-object.class';\r\nimport { KritzelCore } from '../core/core.class';\r\nimport { KritzelKeyboardHelper } from '../../helpers/keyboard.helper';\r\nimport { KritzelDevicesHelper } from '../../helpers/devices.helper';\r\nimport { EditorState, TextSelection } from 'prosemirror-state';\r\nimport { EditorView } from 'prosemirror-view';\r\nimport { Schema } from 'prosemirror-model';\r\nimport { schema } from 'prosemirror-schema-basic';\r\nimport { addListNodes } from 'prosemirror-schema-list';\r\nimport { keymap } from 'prosemirror-keymap';\r\nimport { baseKeymap } from 'prosemirror-commands';\r\nexport class KritzelText extends KritzelBaseObject<HTMLDivElement> {\r\n override __class__: string = 'KritzelText';\r\n\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 8;\r\n fontColor: string = '#000000';\r\n initialWidth: number = 1;\r\n initialHeight: number = 1;\r\n\r\n scale: number = 1;\r\n scaleFactor: number = 1;\r\n\r\n isDebugInfoVisible: boolean = true;\r\n isEditable: boolean = true;\r\n isEditing: boolean = false;\r\n\r\n editor: EditorView | null = null;\r\n content: any = null;\r\n\r\n private readonly _schema: Schema = new Schema({\r\n nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block'),\r\n marks: schema.spec.marks,\r\n });\r\n\r\n uneditedObject: KritzelText | null = null;\r\n\r\n readonly rows: number = 1;\r\n\r\n get isEmpty(): boolean {\r\n if (!this.editor) {\r\n return true;\r\n }\r\n\r\n const doc = this.editor.state.doc;\r\n\r\n if (doc.content.size === 0) {\r\n return true;\r\n }\r\n\r\n const text = doc.textContent.trim();\r\n return text.length === 0;\r\n }\r\n\r\n constructor(config?: {\r\n translateX?: number;\r\n translateY?: number;\r\n fontSize?: number;\r\n fontFamily?: string;\r\n fontColor?: string;\r\n height?: number;\r\n width?: number;\r\n scale?: number;\r\n initialWidth?: number;\r\n initialHeight?: number;\r\n scaleX?: number;\r\n scaleY?: number;\r\n }) {\r\n super();\r\n\r\n if (config) {\r\n this.translateX = config.translateX || 0;\r\n this.translateY = config.translateY || 0;\r\n this.fontSize = config.fontSize || 8;\r\n this.fontFamily = config.fontFamily || 'Arial';\r\n this.fontColor = config.fontColor || '#000000';\r\n this.width = this.initialWidth / (this._core.store.state.scale < 0 ? this._core.store.state.scale : 1);\r\n this.height = (this.fontSize * 1.2) / (this._core.store.state.scale < 0 ? this._core.store.state.scale : 1);\r\n this.scale = config.scale || 1;\r\n this.scaleFactor = config.scaleX ?? 1;\r\n }\r\n }\r\n\r\n static override create(core: KritzelCore, fontSize?: number, fontFamily?: string): KritzelText {\r\n const object = new KritzelText();\r\n\r\n object._core = core;\r\n object.id = object.generateId();\r\n object.workspaceId = core.store.state.activeWorkspace.id;\r\n object.fontSize = fontSize;\r\n object.fontFamily = fontFamily;\r\n object.translateX = 0;\r\n object.translateY = 0;\r\n object.width = object.initialWidth / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);\r\n object.height = (object.fontSize * 1.2) / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);\r\n object.backgroundColor = 'transparent';\r\n object.initialWidth = object.width;\r\n object.initialHeight = object.height;\r\n object.scaleFactor = 1;\r\n object.scale = object._core.store.state.scale;\r\n object.zIndex = core.store.currentZIndex;\r\n object.editor = object.createEditor();\r\n\r\n return object;\r\n }\r\n\r\n override mount(element: HTMLDivElement): void {\r\n if (element === null || this.isInViewport() === false) {\r\n return;\r\n }\r\n\r\n if (this.isMounted && this.elementRef === element && this.editor.dom.parentElement === element) {\r\n return;\r\n }\r\n\r\n this.elementRef = element;\r\n this.elementRef.style.fontFamily = this.fontFamily;\r\n this.elementRef.style.fontSize = `${this.fontSize}pt`;\r\n this.elementRef.style.color = this.fontColor;\r\n this.elementRef.style.whiteSpace = 'pre-wrap';\r\n this.elementRef.style.wordWrap = 'break-word';\r\n this.elementRef.innerHTML = '';\r\n this.elementRef.appendChild(this.editor.dom);\r\n\r\n this.isMounted = true;\r\n\r\n requestAnimationFrame(() => this.adjustSizeOnInput());\r\n }\r\n\r\n private createEditor(): EditorView {\r\n const doc = this._schema.node('doc', null, [this._schema.node('paragraph')]);\r\n\r\n return new EditorView(null, {\r\n state: EditorState.create({\r\n doc: doc,\r\n plugins: [keymap(baseKeymap)],\r\n }),\r\n editable: () => false,\r\n dispatchTransaction: transaction => {\r\n const newState = this.editor.state.apply(transaction);\r\n\r\n this.editor.updateState(newState);\r\n\r\n if (transaction.docChanged) {\r\n this.content = newState.doc.toJSON();\r\n this.adjustSizeOnInput();\r\n\r\n if (!transaction.getMeta('fromRemote')) {\r\n this._core.store.state.objects.update(this, { temporary: true });\r\n }\r\n }\r\n },\r\n });\r\n }\r\n\r\n public setContent(content: any): void {\r\n this.content = content;\r\n\r\n if (this.editor && content) {\r\n const newDoc = this.editor.state.schema.nodeFromJSON(content);\r\n const tr = this.editor.state.tr.replaceWith(0, this.editor.state.doc.content.size, newDoc.content);\r\n \r\n tr.setMeta('fromRemote', true);\r\n this.editor.dispatch(tr);\r\n }\r\n }\r\n\r\n adjustSizeOnInput(): void {\r\n const element = this.elementRef;\r\n\r\n if (element && this.isMounted && element.scrollWidth > 0) {\r\n const previousTotalWidth = this.totalWidth;\r\n const previousTotalHeight = this.totalHeight;\r\n\r\n const newWidth = element.scrollWidth;\r\n const newHeight = element.scrollHeight;\r\n\r\n this.width = newWidth * this.scaleFactor;\r\n this.height = newHeight * this.scaleFactor;\r\n\r\n if (this.rotation !== 0) {\r\n const newTotalWidth = this.totalWidth;\r\n const newTotalHeight = this.totalHeight;\r\n\r\n const deltaWidth = (newTotalWidth - previousTotalWidth) / 2 / this.scale;\r\n const deltaHeight = (newTotalHeight - previousTotalHeight) / 2 / this.scale;\r\n\r\n if (deltaWidth !== 0 || deltaHeight !== 0) {\r\n const cos = Math.cos(this.rotation);\r\n const sin = Math.sin(this.rotation);\r\n\r\n const rotatedDeltaX = cos * deltaWidth - sin * deltaHeight;\r\n const rotatedDeltaY = sin * deltaWidth + cos * deltaHeight;\r\n\r\n this.translateX += rotatedDeltaX - deltaWidth;\r\n this.translateY += rotatedDeltaY - deltaHeight;\r\n }\r\n }\r\n }\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n if (width <= 1 || height <= 1) {\r\n return;\r\n }\r\n\r\n const originalWidth = this.width / this.scaleFactor;\r\n const originalHeight = this.height / this.scaleFactor;\r\n\r\n const scaleX = width / originalWidth;\r\n const scaleY = height / originalHeight;\r\n\r\n this.scaleFactor = Math.min(scaleX, scaleY);\r\n\r\n this.width = originalWidth * this.scaleFactor;\r\n this.height = originalHeight * this.scaleFactor;\r\n\r\n this.translateX = x;\r\n this.translateY = y;\r\n\r\n this._core.store.state.objects.update(this);\r\n }\r\n\r\n focus(coords?: { x: number; y: number }): void {\r\n if (this.editor) {\r\n const doc = this.editor.state.doc;\r\n\r\n if (coords.x && coords.y) {\r\n const pos = this.editor.posAtCoords({ left: coords.x, top: coords.y });\r\n if (pos) {\r\n this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, pos.pos)));\r\n this.editor.focus();\r\n \r\n if (KritzelDevicesHelper.isIOS()) {\r\n this.scrollIntoViewOnIOS();\r\n }\r\n return;\r\n }\r\n }\r\n\r\n const end = Math.max(1, doc.content.size - 1);\r\n this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, end)));\r\n this.editor.focus();\r\n \r\n if (KritzelDevicesHelper.isIOS()) {\r\n this.scrollIntoViewOnIOS();\r\n }\r\n }\r\n }\r\n\r\n private scrollIntoViewOnIOS(): void {\r\n setTimeout(() => {\r\n if (this.editor && this.editor.dom) {\r\n this.editor.dom.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n }\r\n }, 300);\r\n }\r\n\r\n edit(event?: PointerEvent): void {\r\n KritzelKeyboardHelper.disableInteractiveWidget();\r\n\r\n this.uneditedObject = this.clone() as KritzelText;\r\n\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('text'));\r\n\r\n this.editor.setProps({ editable: () => true });\r\n\r\n this.isEditing = true;\r\n\r\n this._core.rerender();\r\n\r\n this.adjustSizeOnInput();\r\n\r\n this.focus({ x: event?.clientX, y: event?.clientY });\r\n\r\n KritzelKeyboardHelper.enableInteractiveWidget();\r\n }\r\n\r\n save(): void {\r\n requestAnimationFrame(() => this.adjustSizeOnInput());\r\n\r\n this.content = this.editor.state.doc.toJSON();\r\n\r\n this.editor.setProps({ editable: () => false });\r\n\r\n this.editor.dom.blur();\r\n\r\n this.isEditing = false;\r\n\r\n this._core.store.state.objects.consolidateTemporaryItems();\r\n\r\n this._core.store.state.objects.update(this);\r\n\r\n this._core.engine.emitObjectsChange();\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (!this.isEditing) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n handlePointerMove(event: PointerEvent): void {\r\n if (!this.isEditing) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (!this.isEditing) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n override copy(): KritzelText {\r\n const copiedObject = super.copy() as KritzelText;\r\n copiedObject.editor = copiedObject.createEditor();\r\n\r\n if (this.content) {\r\n copiedObject.setContent(this.content);\r\n }\r\n\r\n return copiedObject;\r\n }\r\n\r\n override serialize() {\r\n const { _core, _elementRef, _schema, element, totalWidth, totalHeight, editor, uneditedObject, ...remainingProps } = this as any;\r\n\r\n const clonedProps = structuredClone(remainingProps);\r\n\r\n if (element && typeof element === 'object' && 'nodeType' in element && element.nodeType === 1) {\r\n clonedProps.element = element.cloneNode(true) as HTMLElement;\r\n }\r\n\r\n return clonedProps;\r\n }\r\n\r\n override deserialize<KritzelText>(object: any): KritzelText {\r\n super.deserialize<KritzelText>(object);\r\n if (object.content) {\r\n this.setContent(object.content);\r\n }\r\n return this as unknown as KritzelText;\r\n }\r\n}\r\n"]}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import * as Y from "yjs";
|
|
2
|
-
import * as encoding from "lib0/encoding";
|
|
3
|
-
import * as decoding from "lib0/decoding";
|
|
4
|
-
/**
|
|
5
|
-
* BroadcastChannel sync provider for cross-tab synchronization
|
|
6
|
-
* This is a lightweight alternative to y-webrtc for browser-tab-only sync
|
|
7
|
-
*/
|
|
8
|
-
export class BroadcastSyncProvider {
|
|
9
|
-
doc;
|
|
10
|
-
channel;
|
|
11
|
-
_synced = false;
|
|
12
|
-
constructor(docName, doc, _options) {
|
|
13
|
-
this.doc = doc;
|
|
14
|
-
this.channel = new BroadcastChannel(docName);
|
|
15
|
-
// Handle incoming messages from other tabs
|
|
16
|
-
this.channel.onmessage = (event) => {
|
|
17
|
-
this.handleMessage(event.data);
|
|
18
|
-
};
|
|
19
|
-
// Listen to document updates and broadcast them
|
|
20
|
-
this.doc.on('update', this.handleDocUpdate);
|
|
21
|
-
// Send initial sync request
|
|
22
|
-
this.broadcastSync();
|
|
23
|
-
// Mark as synced after a short delay (to receive any pending updates)
|
|
24
|
-
setTimeout(() => {
|
|
25
|
-
this._synced = true;
|
|
26
|
-
}, 100);
|
|
27
|
-
console.info(`BroadcastChannel Provider initialized: ${docName}`);
|
|
28
|
-
}
|
|
29
|
-
handleDocUpdate = (update, origin) => {
|
|
30
|
-
// Don't broadcast updates that came from other tabs (to prevent loops)
|
|
31
|
-
if (origin !== this) {
|
|
32
|
-
const encoder = encoding.createEncoder();
|
|
33
|
-
encoding.writeVarUint(encoder, 0); // Message type: sync update
|
|
34
|
-
encoding.writeVarUint8Array(encoder, update);
|
|
35
|
-
this.channel.postMessage(encoding.toUint8Array(encoder));
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
handleMessage(message) {
|
|
39
|
-
const decoder = decoding.createDecoder(new Uint8Array(message));
|
|
40
|
-
const messageType = decoding.readVarUint(decoder);
|
|
41
|
-
switch (messageType) {
|
|
42
|
-
case 0: // Sync update
|
|
43
|
-
const update = decoding.readVarUint8Array(decoder);
|
|
44
|
-
Y.applyUpdate(this.doc, update, this);
|
|
45
|
-
break;
|
|
46
|
-
case 1: // Sync request
|
|
47
|
-
this.broadcastSync();
|
|
48
|
-
break;
|
|
49
|
-
case 2: // Sync response
|
|
50
|
-
const stateVector = decoding.readVarUint8Array(decoder);
|
|
51
|
-
const updateResponse = Y.encodeStateAsUpdate(this.doc, stateVector);
|
|
52
|
-
if (updateResponse.length > 0) {
|
|
53
|
-
const encoder = encoding.createEncoder();
|
|
54
|
-
encoding.writeVarUint(encoder, 0); // Send as regular update
|
|
55
|
-
encoding.writeVarUint8Array(encoder, updateResponse);
|
|
56
|
-
this.channel.postMessage(encoding.toUint8Array(encoder));
|
|
57
|
-
}
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
broadcastSync() {
|
|
62
|
-
// Broadcast our current state vector to request missing updates
|
|
63
|
-
const encoder = encoding.createEncoder();
|
|
64
|
-
encoding.writeVarUint(encoder, 2); // Message type: sync response
|
|
65
|
-
encoding.writeVarUint8Array(encoder, Y.encodeStateVector(this.doc));
|
|
66
|
-
this.channel.postMessage(encoding.toUint8Array(encoder));
|
|
67
|
-
}
|
|
68
|
-
async connect() {
|
|
69
|
-
// Wait for initial sync to complete
|
|
70
|
-
if (this._synced) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
return new Promise((resolve) => {
|
|
74
|
-
const checkSync = () => {
|
|
75
|
-
if (this._synced) {
|
|
76
|
-
resolve();
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
setTimeout(checkSync, 50);
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
checkSync();
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
disconnect() {
|
|
86
|
-
// BroadcastChannel doesn't have explicit disconnect
|
|
87
|
-
}
|
|
88
|
-
destroy() {
|
|
89
|
-
this.doc.off('update', this.handleDocUpdate);
|
|
90
|
-
this.channel.close();
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=broadcast-sync-provider.class.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast-sync-provider.class.js","sourceRoot":"","sources":["../../../src/classes/providers/broadcast-sync-provider.class.ts"],"names":[],"mappings":"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","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"]}
|