kritzel-stencil 0.0.144 → 0.0.146

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.
Files changed (290) hide show
  1. package/dist/cjs/{index-C9GjuVAx.js → default-text-tool.config-C0W0noF9.js} +15960 -1098
  2. package/dist/cjs/default-text-tool.config-C0W0noF9.js.map +1 -0
  3. package/dist/cjs/{index-DcTwXs_q.js → index-Cj__YTlG.js} +9 -11
  4. package/dist/cjs/index-Cj__YTlG.js.map +1 -0
  5. package/dist/cjs/index.cjs.js +1369 -12
  6. package/dist/cjs/index.cjs.js.map +1 -1
  7. package/dist/cjs/kritzel-brush-style.cjs.entry.js +1 -1
  8. package/dist/cjs/kritzel-color_22.cjs.entry.js +777 -754
  9. package/dist/cjs/loader.cjs.js +2 -2
  10. package/dist/cjs/stencil.cjs.js +3 -3
  11. package/dist/cjs/stencil.cjs.js.map +1 -1
  12. package/dist/collection/classes/core/core.class.js +263 -211
  13. package/dist/collection/classes/core/core.class.js.map +1 -1
  14. package/dist/collection/classes/core/store.class.js +21 -3
  15. package/dist/collection/classes/core/store.class.js.map +1 -1
  16. package/dist/collection/classes/core/viewport.class.js +4 -1
  17. package/dist/collection/classes/core/viewport.class.js.map +1 -1
  18. package/dist/collection/classes/core/workspace.class.js +2 -3
  19. package/dist/collection/classes/core/workspace.class.js.map +1 -1
  20. package/dist/collection/classes/handlers/context-menu.handler.js +11 -14
  21. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
  22. package/dist/collection/classes/handlers/key.handler.js +13 -13
  23. package/dist/collection/classes/handlers/key.handler.js.map +1 -1
  24. package/dist/collection/classes/handlers/move.handler.js +12 -9
  25. package/dist/collection/classes/handlers/move.handler.js.map +1 -1
  26. package/dist/collection/classes/handlers/resize.handler.js +20 -17
  27. package/dist/collection/classes/handlers/resize.handler.js.map +1 -1
  28. package/dist/collection/classes/handlers/rotation.handler.js +26 -23
  29. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
  30. package/dist/collection/classes/handlers/selection.handler.js +32 -30
  31. package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
  32. package/dist/collection/classes/objects/base-object.class.js +6 -15
  33. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  34. package/dist/collection/classes/objects/custom-element.class.js +2 -0
  35. package/dist/collection/classes/objects/custom-element.class.js.map +1 -1
  36. package/dist/collection/classes/objects/image.class.js +2 -0
  37. package/dist/collection/classes/objects/image.class.js.map +1 -1
  38. package/dist/collection/classes/objects/path.class.js +4 -0
  39. package/dist/collection/classes/objects/path.class.js.map +1 -1
  40. package/dist/collection/classes/objects/selection-box.class.js +3 -4
  41. package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
  42. package/dist/collection/classes/objects/selection-group.class.js +109 -49
  43. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  44. package/dist/collection/classes/objects/text.class.js +37 -43
  45. package/dist/collection/classes/objects/text.class.js.map +1 -1
  46. package/dist/collection/classes/providers/broadcast-sync-provider.class.js +93 -0
  47. package/dist/collection/classes/providers/broadcast-sync-provider.class.js.map +1 -0
  48. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js +232 -0
  49. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js.map +1 -0
  50. package/dist/collection/classes/providers/indexeddb-sync-provider.class.js +35 -0
  51. package/dist/collection/classes/providers/indexeddb-sync-provider.class.js.map +1 -0
  52. package/dist/collection/classes/providers/websocket-sync-provider.class.js +89 -0
  53. package/dist/collection/classes/providers/websocket-sync-provider.class.js.map +1 -0
  54. package/dist/collection/classes/structures/app-state-map.structure.js +189 -0
  55. package/dist/collection/classes/structures/app-state-map.structure.js.map +1 -0
  56. package/dist/collection/classes/structures/object-map.structure.js +260 -1
  57. package/dist/collection/classes/structures/object-map.structure.js.map +1 -1
  58. package/dist/collection/classes/tools/brush-tool.class.js +48 -37
  59. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -1
  60. package/dist/collection/classes/tools/eraser-tool.class.js +10 -12
  61. package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -1
  62. package/dist/collection/classes/tools/image-tool.class.js +2 -10
  63. package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
  64. package/dist/collection/classes/tools/selection-tool.class.js +11 -8
  65. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
  66. package/dist/collection/classes/tools/text-tool.class.js +13 -26
  67. package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
  68. package/dist/collection/collection-manifest.json +1 -1
  69. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
  70. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +36 -1
  71. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  72. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +61 -35
  73. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  74. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  75. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  76. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  77. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +1 -1
  78. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  79. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
  80. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
  81. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
  82. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
  83. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  84. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +4 -4
  85. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +1 -1
  86. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +2 -2
  87. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +2 -2
  88. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +3 -3
  89. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  90. package/dist/collection/configs/{default-engine-state.js → default-engine-config.js} +2 -8
  91. package/dist/collection/configs/default-engine-config.js.map +1 -0
  92. package/dist/collection/configs/default-sync.config.js +12 -0
  93. package/dist/collection/configs/default-sync.config.js.map +1 -0
  94. package/dist/collection/constants/core.constants.js +2 -0
  95. package/dist/collection/constants/core.constants.js.map +1 -0
  96. package/dist/collection/index.js +8 -1
  97. package/dist/collection/index.js.map +1 -1
  98. package/dist/collection/interfaces/debug-info.interface.js.map +1 -1
  99. package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
  100. package/dist/collection/interfaces/object.interface.js.map +1 -1
  101. package/dist/collection/interfaces/selection-state.interface.js.map +1 -1
  102. package/dist/collection/interfaces/sync-config.interface.js +2 -0
  103. package/dist/collection/interfaces/sync-config.interface.js.map +1 -0
  104. package/dist/collection/interfaces/sync-provider.interface.js +2 -0
  105. package/dist/collection/interfaces/sync-provider.interface.js.map +1 -0
  106. package/dist/components/index.js +1361 -4
  107. package/dist/components/index.js.map +1 -1
  108. package/dist/components/kritzel-brush-style.js +4 -4
  109. package/dist/components/kritzel-color-palette.js +1 -1
  110. package/dist/components/kritzel-color.js +1 -1
  111. package/dist/components/kritzel-context-menu.js +1 -1
  112. package/dist/components/kritzel-control-brush-config.js +1 -1
  113. package/dist/components/kritzel-control-text-config.js +1 -1
  114. package/dist/components/kritzel-controls.js +1 -1
  115. package/dist/components/kritzel-cursor-trail.js +1 -1
  116. package/dist/components/kritzel-dropdown.js +1 -1
  117. package/dist/components/kritzel-editor.js +39 -27
  118. package/dist/components/kritzel-editor.js.map +1 -1
  119. package/dist/components/kritzel-engine.js +1 -1
  120. package/dist/components/kritzel-font-family.js +1 -1
  121. package/dist/components/kritzel-font-size.js +1 -1
  122. package/dist/components/kritzel-font.js +1 -1
  123. package/dist/components/kritzel-icon.js +1 -1
  124. package/dist/components/kritzel-menu-item.js +1 -1
  125. package/dist/components/kritzel-menu.js +1 -1
  126. package/dist/components/kritzel-portal.js +1 -1
  127. package/dist/components/kritzel-split-button.js +1 -1
  128. package/dist/components/kritzel-stroke-size.js +1 -1
  129. package/dist/components/kritzel-tooltip.js +1 -1
  130. package/dist/components/kritzel-utility-panel.js +1 -1
  131. package/dist/components/kritzel-workspace-manager.js +1 -1
  132. package/dist/components/{p-C_hSH2nN.js → p-8iFF5GHL.js} +6 -6
  133. package/dist/components/{p-C_hSH2nN.js.map → p-8iFF5GHL.js.map} +1 -1
  134. package/dist/components/{p-BycHaC-9.js → p-BCrMfH5n.js} +6 -6
  135. package/dist/components/{p-BycHaC-9.js.map → p-BCrMfH5n.js.map} +1 -1
  136. package/dist/components/{p-D_RcVGj0.js → p-BHDOht0m.js} +6 -6
  137. package/dist/components/{p-D_RcVGj0.js.map → p-BHDOht0m.js.map} +1 -1
  138. package/dist/components/{p-DqsgZIHC.js → p-BHT7_POQ.js} +6 -6
  139. package/dist/components/{p-DqsgZIHC.js.map → p-BHT7_POQ.js.map} +1 -1
  140. package/dist/components/{p-DzyZA2GT.js → p-BQ5cdSqE.js} +11 -11
  141. package/dist/components/{p-DzyZA2GT.js.map → p-BQ5cdSqE.js.map} +1 -1
  142. package/dist/components/{p-Co5lU_7h.js → p-BaHZYvfq.js} +13 -13
  143. package/dist/components/{p-Co5lU_7h.js.map → p-BaHZYvfq.js.map} +1 -1
  144. package/dist/components/{p-BJbN3vca.js → p-BctNMdxr.js} +8 -8
  145. package/dist/components/{p-BJbN3vca.js.map → p-BctNMdxr.js.map} +1 -1
  146. package/dist/components/{p-D27d2rKT.js → p-Bhtn9qay.js} +5 -5
  147. package/dist/components/{p-D27d2rKT.js.map → p-Bhtn9qay.js.map} +1 -1
  148. package/dist/components/{p-CEn1WeG3.js → p-Bit0z7Yg.js} +9 -9
  149. package/dist/components/{p-CEn1WeG3.js.map → p-Bit0z7Yg.js.map} +1 -1
  150. package/dist/components/{p-CGb-8cK4.js → p-BlI4vzRZ.js} +5 -5
  151. package/dist/components/{p-CGb-8cK4.js.map → p-BlI4vzRZ.js.map} +1 -1
  152. package/dist/components/{p-fiFoOjv0.js → p-C3_LIgzd.js} +10 -10
  153. package/dist/components/{p-fiFoOjv0.js.map → p-C3_LIgzd.js.map} +1 -1
  154. package/dist/components/{p-DPxzgBs0.js → p-CIXPLjCu.js} +4 -4
  155. package/dist/components/{p-DPxzgBs0.js.map → p-CIXPLjCu.js.map} +1 -1
  156. package/dist/components/{p-dcR2uxM3.js → p-CURq0twf.js} +6 -6
  157. package/dist/components/{p-dcR2uxM3.js.map → p-CURq0twf.js.map} +1 -1
  158. package/dist/components/p-CwHz5s2a.js +18262 -0
  159. package/dist/components/p-CwHz5s2a.js.map +1 -0
  160. package/dist/components/{p-C9hrbrUN.js → p-CwkUrTy1.js} +5 -7
  161. package/dist/{cjs/index-DcTwXs_q.js.map → components/p-CwkUrTy1.js.map} +1 -1
  162. package/dist/components/{p-ByAzDzS5.js → p-D13ydJjo.js} +5 -5
  163. package/dist/components/{p-ByAzDzS5.js.map → p-D13ydJjo.js.map} +1 -1
  164. package/dist/components/{p-1bVCRi-d.js → p-DPN0PZvw.js} +20 -20
  165. package/dist/components/{p-1bVCRi-d.js.map → p-DPN0PZvw.js.map} +1 -1
  166. package/dist/components/{p-BFNwskCY.js → p-Dbp5YJIa.js} +5 -5
  167. package/dist/components/{p-BFNwskCY.js.map → p-Dbp5YJIa.js.map} +1 -1
  168. package/dist/components/{p-BEKicPnH.js → p-Dcf7tVJW.js} +5 -5
  169. package/dist/components/{p-BEKicPnH.js.map → p-Dcf7tVJW.js.map} +1 -1
  170. package/dist/components/{p-CieOx1XL.js → p-EBtkRix7.js} +8 -8
  171. package/dist/components/{p-CieOx1XL.js.map → p-EBtkRix7.js.map} +1 -1
  172. package/dist/components/{p-UsToUu6G.js → p-G2HGJcNm.js} +118 -196
  173. package/dist/components/p-G2HGJcNm.js.map +1 -0
  174. package/dist/components/{p-gCHmJzc2.js → p-NXPGXBZ2.js} +6 -6
  175. package/dist/components/{p-gCHmJzc2.js.map → p-NXPGXBZ2.js.map} +1 -1
  176. package/dist/components/{p-YqK8ch2R.js → p-n789Y3S-.js} +4 -5
  177. package/dist/components/p-n789Y3S-.js.map +1 -0
  178. package/dist/esm/{index-YVlgItFD.js → default-text-tool.config-nXXHSTK9.js} +15920 -1090
  179. package/dist/esm/default-text-tool.config-nXXHSTK9.js.map +1 -0
  180. package/dist/esm/{index-Cw77zP6g.js → index-SGde3HXB.js} +9 -11
  181. package/dist/esm/index-SGde3HXB.js.map +1 -0
  182. package/dist/esm/index.js +1358 -1
  183. package/dist/esm/index.js.map +1 -1
  184. package/dist/esm/kritzel-brush-style.entry.js +1 -1
  185. package/dist/esm/kritzel-color_22.entry.js +732 -709
  186. package/dist/esm/loader.js +3 -3
  187. package/dist/esm/stencil.js +4 -4
  188. package/dist/esm/stencil.js.map +1 -1
  189. package/dist/stencil/index.esm.js +1 -1
  190. package/dist/stencil/index.esm.js.map +1 -1
  191. package/dist/stencil/{p-Cw77zP6g.js → p-SGde3HXB.js} +2 -2
  192. package/dist/stencil/p-SGde3HXB.js.map +1 -0
  193. package/dist/stencil/{p-8b831c94.entry.js → p-d702c5af.entry.js} +2 -2
  194. package/dist/stencil/p-f8a8a8d7.entry.js +2 -0
  195. package/dist/stencil/p-f8a8a8d7.entry.js.map +1 -0
  196. package/dist/stencil/p-nXXHSTK9.js +2 -0
  197. package/dist/stencil/p-nXXHSTK9.js.map +1 -0
  198. package/dist/stencil/stencil.esm.js +1 -1
  199. package/dist/stencil/stencil.esm.js.map +1 -1
  200. package/dist/types/classes/core/core.class.d.ts +34 -21
  201. package/dist/types/classes/core/store.class.d.ts +8 -0
  202. package/dist/types/classes/objects/base-object.class.d.ts +1 -5
  203. package/dist/types/classes/objects/path.class.d.ts +1 -0
  204. package/dist/types/classes/objects/selection-box.class.d.ts +2 -3
  205. package/dist/types/classes/objects/selection-group.class.d.ts +24 -5
  206. package/dist/types/classes/objects/text.class.d.ts +1 -3
  207. package/dist/types/classes/providers/broadcast-sync-provider.class.d.ts +18 -0
  208. package/dist/types/classes/providers/hocuspocus-sync-provider.class.d.ts +120 -0
  209. package/dist/types/classes/providers/indexeddb-sync-provider.class.d.ts +22 -0
  210. package/dist/types/classes/providers/websocket-sync-provider.class.d.ts +52 -0
  211. package/dist/types/classes/structures/app-state-map.structure.d.ts +30 -0
  212. package/dist/types/classes/structures/object-map.structure.d.ts +39 -1
  213. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +3 -0
  214. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +2 -0
  215. package/dist/types/components.d.ts +6 -0
  216. package/dist/types/configs/{default-engine-state.d.ts → default-engine-config.d.ts} +1 -1
  217. package/dist/types/configs/default-sync.config.d.ts +5 -0
  218. package/dist/types/constants/core.constants.d.ts +0 -0
  219. package/dist/types/index.d.ts +8 -1
  220. package/dist/types/interfaces/debug-info.interface.d.ts +0 -1
  221. package/dist/types/interfaces/engine-state.interface.d.ts +1 -10
  222. package/dist/types/interfaces/object.interface.d.ts +1 -1
  223. package/dist/types/interfaces/selection-state.interface.d.ts +0 -4
  224. package/dist/types/interfaces/sync-config.interface.d.ts +22 -0
  225. package/dist/types/interfaces/sync-provider.interface.d.ts +29 -0
  226. package/dist/types/stencil-public-runtime.d.ts +1 -1
  227. package/package.json +16 -11
  228. package/dist/cjs/index-C9GjuVAx.js.map +0 -1
  229. package/dist/collection/classes/commands/add-object.command.js +0 -18
  230. package/dist/collection/classes/commands/add-object.command.js.map +0 -1
  231. package/dist/collection/classes/commands/add-selection-group.command.js +0 -24
  232. package/dist/collection/classes/commands/add-selection-group.command.js.map +0 -1
  233. package/dist/collection/classes/commands/base.command.js +0 -19
  234. package/dist/collection/classes/commands/base.command.js.map +0 -1
  235. package/dist/collection/classes/commands/batch.command.js +0 -15
  236. package/dist/collection/classes/commands/batch.command.js.map +0 -1
  237. package/dist/collection/classes/commands/move-selection-group.command.js +0 -44
  238. package/dist/collection/classes/commands/move-selection-group.command.js.map +0 -1
  239. package/dist/collection/classes/commands/remove-object.command.js +0 -18
  240. package/dist/collection/classes/commands/remove-object.command.js.map +0 -1
  241. package/dist/collection/classes/commands/remove-selection-group.command.js +0 -19
  242. package/dist/collection/classes/commands/remove-selection-group.command.js.map +0 -1
  243. package/dist/collection/classes/commands/resize-selection-group.command.js +0 -29
  244. package/dist/collection/classes/commands/resize-selection-group.command.js.map +0 -1
  245. package/dist/collection/classes/commands/rotate-selection-group.command.js +0 -29
  246. package/dist/collection/classes/commands/rotate-selection-group.command.js.map +0 -1
  247. package/dist/collection/classes/commands/update-object.command.js +0 -38
  248. package/dist/collection/classes/commands/update-object.command.js.map +0 -1
  249. package/dist/collection/classes/commands/update-viewport.command.js +0 -25
  250. package/dist/collection/classes/commands/update-viewport.command.js.map +0 -1
  251. package/dist/collection/classes/core/command-manager.class.js +0 -51
  252. package/dist/collection/classes/core/command-manager.class.js.map +0 -1
  253. package/dist/collection/classes/core/database.class.js +0 -236
  254. package/dist/collection/classes/core/database.class.js.map +0 -1
  255. package/dist/collection/classes/core/history.class.js +0 -51
  256. package/dist/collection/classes/core/history.class.js.map +0 -1
  257. package/dist/collection/classes/structures/circular-buffer.structure.js +0 -48
  258. package/dist/collection/classes/structures/circular-buffer.structure.js.map +0 -1
  259. package/dist/collection/configs/default-engine-state.js.map +0 -1
  260. package/dist/collection/interfaces/command.interface.js +0 -2
  261. package/dist/collection/interfaces/command.interface.js.map +0 -1
  262. package/dist/components/p-C9hrbrUN.js.map +0 -1
  263. package/dist/components/p-UsToUu6G.js.map +0 -1
  264. package/dist/components/p-YqK8ch2R.js.map +0 -1
  265. package/dist/components/p-kn4eunyR.js +0 -3338
  266. package/dist/components/p-kn4eunyR.js.map +0 -1
  267. package/dist/esm/index-Cw77zP6g.js.map +0 -1
  268. package/dist/esm/index-YVlgItFD.js.map +0 -1
  269. package/dist/stencil/p-Cw77zP6g.js.map +0 -1
  270. package/dist/stencil/p-YVlgItFD.js +0 -2
  271. package/dist/stencil/p-YVlgItFD.js.map +0 -1
  272. package/dist/stencil/p-fe738990.entry.js +0 -2
  273. package/dist/stencil/p-fe738990.entry.js.map +0 -1
  274. package/dist/types/classes/commands/add-object.command.d.ts +0 -9
  275. package/dist/types/classes/commands/add-selection-group.command.d.ts +0 -10
  276. package/dist/types/classes/commands/base.command.d.ts +0 -11
  277. package/dist/types/classes/commands/batch.command.d.ts +0 -8
  278. package/dist/types/classes/commands/move-selection-group.command.d.ts +0 -13
  279. package/dist/types/classes/commands/remove-object.command.d.ts +0 -9
  280. package/dist/types/classes/commands/remove-selection-group.command.d.ts +0 -8
  281. package/dist/types/classes/commands/resize-selection-group.command.d.ts +0 -20
  282. package/dist/types/classes/commands/rotate-selection-group.command.d.ts +0 -10
  283. package/dist/types/classes/commands/update-object.command.d.ts +0 -11
  284. package/dist/types/classes/commands/update-viewport.command.d.ts +0 -21
  285. package/dist/types/classes/core/command-manager.class.d.ts +0 -16
  286. package/dist/types/classes/core/database.class.d.ts +0 -29
  287. package/dist/types/classes/core/history.class.d.ts +0 -12
  288. package/dist/types/classes/structures/circular-buffer.structure.d.ts +0 -13
  289. package/dist/types/interfaces/command.interface.d.ts +0 -6
  290. /package/dist/stencil/{p-8b831c94.entry.js.map → p-d702c5af.entry.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{p as e,b as t}from"./p-Cw77zP6g.js";export{s as setNonce}from"./p-Cw77zP6g.js";import{g as o}from"./p-DQuL1Twl.js";var n=()=>{const t=import.meta.url;const o={};if(t!==""){o.resourcesUrl=new URL(".",t).href}return e(o)};n().then((async e=>{await o();return t([["p-fe738990",[[256,"kritzel-editor",{scaleMax:[2,"scale-max"],scaleMin:[2,"scale-min"],controls:[16],globalContextMenuItems:[16],objectContextMenuItems:[16],customSvgIcons:[16],isControlsVisible:[4,"is-controls-visible"],isUtilityPanelVisible:[4,"is-utility-panel-visible"],isEngineReady:[32],isControlsReady:[32],isWorkspaceManagerReady:[32],workspaces:[32],activeWorkspace:[32],isVirtualKeyboardOpen:[32],getObjectById:[64],addObject:[64],updateObject:[64],removeObject:[64],getSelectedObjects:[64],selectObjects:[64],selectAllObjectsInViewport:[64],clearSelection:[64],centerObjectInViewport:[64],createWorkspace:[64],updateWorkspace:[64],deleteWorkspace:[64],getWorkspaces:[64],getActiveWorkspace:[64]},[[0,"dblclick","handleTouchStart"]],{isEngineReady:["onIsEngineReady"],isControlsReady:["onIsControlsReady"]}],[257,"kritzel-controls",{controls:[16],activeControl:[1040],isUtilityPanelVisible:[4,"is-utility-panel-visible"],firstConfig:[32],isTooltipVisible:[32],isTouchDevice:[32],closeTooltip:[64]},[[4,"click","handleDocumentClick"],[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"]]],[257,"kritzel-workspace-manager",{activeWorkspace:[1040],workspaces:[16],childMenuAnchor:[32],openChildMenuItem:[32],newWorkspace:[32],editingItemId:[32]},[[8,"wheel","handleWheel"]]],[257,"kritzel-engine",{workspace:[16],activeTool:[16],globalContextMenuItems:[16],objectContextMenuItems:[16],scaleMax:[1026,"scale-max"],scaleMin:[1026,"scale-min"],forceUpdate:[32],registerTool:[64],changeActiveTool:[64],disable:[64],enable:[64],delete:[64],copy:[64],paste:[64],bringForward:[64],sendBackward:[64],bringToFront:[64],sendToBack:[64],undo:[64],redo:[64],hideContextMenu:[64],getObjectById:[64],addObject:[64],updateObject:[64],removeObject:[64],getSelectedObjects:[64],selectObjects:[64],selectAllObjectsInViewport:[64],clearSelection:[64],centerObjectInViewport:[64],getCopiedObjects:[64],createWorkspace:[64],updateWorkspace:[64],deleteWorkspace:[64],getWorkspaces:[64],getActiveWorkspace:[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"longpress","handleLongPress"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"],[4,"dblclick","preventDoubleTapZoomOnTouchDevices"]],{workspace:["onWorkspaceChange"],scaleMax:["validateScaleMax"],scaleMin:["validateScaleMin"]}],[257,"kritzel-control-text-config",{tool:[1040],isExpanded:[1028,"is-expanded"]}],[257,"kritzel-control-brush-config",{tool:[1040],isExpanded:[1028,"is-expanded"],palette:[32]},null,{tool:["handleToolChange"]}],[257,"kritzel-split-button",{buttonIcon:[1,"button-icon"],dropdownIcon:[1,"dropdown-icon"],items:[16],mainButtonDisabled:[4,"main-button-disabled"],menuButtonDisabled:[4,"menu-button-disabled"],isMenuOpen:[32],isTouchDevice:[32],anchorElement:[32],menuScrollTop:[32],open:[64],focusMenu:[64]}],[257,"kritzel-context-menu",{items:[16],objects:[16],processedItems:[32]},[[9,"pointerdown","handleOutsideClick"]],{items:["onItemsChanged"]}],[257,"kritzel-utility-panel"],[257,"kritzel-cursor-trail",{core:[16],cursorTrailPoints:[32],isLeftButtonDown:[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[257,"kritzel-tooltip",{isVisible:[4,"is-visible"],anchorElement:[16],arrowSize:[2,"arrow-size"],offsetY:[2,"offset-y"],positionX:[32],arrowOffset:[32],isMobileView:[32],focusContent:[64]},[[4,"click","handleOutsideClick"],[9,"resize","handleWindowResize"]]],[257,"kritzel-font-family",{fontOptions:[16],selectedFontFamily:[1025,"selected-font-family"]}],[257,"kritzel-font-size",{sizes:[16],selectedSize:[1026,"selected-size"],fontFamily:[1,"font-family"]}],[257,"kritzel-stroke-size",{sizes:[16],selectedSize:[1026,"selected-size"]}],[257,"kritzel-color-palette",{colors:[16],selectedColor:[1025,"selected-color"],isExpanded:[4,"is-expanded"],isOpaque:[4,"is-opaque"]}],[257,"kritzel-font",{fontFamily:[1,"font-family"],size:[2],color:[1]}],[257,"kritzel-menu",{items:[16],parent:[16],selectedIndex:[32],setScrollTop:[64],setFocus:[64]}],[257,"kritzel-menu-item",{item:[16],parent:[16],isDirty:[32]},null,{item:["onItemChange"]}],[257,"kritzel-dropdown",{options:[16],value:[1],width:[1],selectStyles:[8,"select-styles"],internalValue:[32],hasSuffixContent:[32],hasPrefixContent:[32]},null,{options:["optionsChanged"],value:["externalValueChanged"]}],[257,"kritzel-portal",{anchor:[16],offsetX:[2,"offset-x"],offsetY:[2,"offset-y"],autoFocus:[4,"auto-focus"]},[[8,"click","handleOutsideClick"],[8,"keydown","handleKeyDown"],[11,"resize","handleResize"],[11,"scroll","handleWindowScroll"]],{anchor:["anchorChanged"]}],[257,"kritzel-color",{value:[1],size:[2]}],[257,"kritzel-icon",{name:[1],label:[1],size:[2]}]]],["p-8b831c94",[[257,"kritzel-brush-style",{type:[1],brushOptions:[16]}]]]],e)}));
1
+ import{p as e,b as t}from"./p-SGde3HXB.js";export{s as setNonce}from"./p-SGde3HXB.js";import{g as o}from"./p-DQuL1Twl.js";var n=()=>{const t=import.meta.url;const o={};if(t!==""){o.resourcesUrl=new URL(".",t).href}return e(o)};n().then((async e=>{await o();return t([["p-f8a8a8d7",[[768,"kritzel-editor",{scaleMax:[2,"scale-max"],scaleMin:[2,"scale-min"],controls:[16],globalContextMenuItems:[16],objectContextMenuItems:[16],customSvgIcons:[16],isControlsVisible:[4,"is-controls-visible"],isUtilityPanelVisible:[4,"is-utility-panel-visible"],syncConfig:[16],isEngineReady:[32],isControlsReady:[32],isWorkspaceManagerReady:[32],workspaces:[32],activeWorkspace:[32],isVirtualKeyboardOpen:[32],getObjectById:[64],addObject:[64],updateObject:[64],removeObject:[64],getSelectedObjects:[64],selectObjects:[64],selectAllObjectsInViewport:[64],clearSelection:[64],centerObjectInViewport:[64],createWorkspace:[64],updateWorkspace:[64],deleteWorkspace:[64],getWorkspaces:[64],getActiveWorkspace:[64]},[[0,"dblclick","handleTouchStart"]],{isEngineReady:["onIsEngineReady"],isControlsReady:["onIsControlsReady"],workspaces:["onWorkspacesChange"]}],[769,"kritzel-controls",{controls:[16],activeControl:[1040],isUtilityPanelVisible:[4,"is-utility-panel-visible"],firstConfig:[32],isTooltipVisible:[32],isTouchDevice:[32],closeTooltip:[64]},[[4,"click","handleDocumentClick"],[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"]]],[769,"kritzel-workspace-manager",{activeWorkspace:[1040],workspaces:[16],childMenuAnchor:[32],openChildMenuItem:[32],newWorkspace:[32],editingItemId:[32]},[[8,"wheel","handleWheel"]]],[769,"kritzel-engine",{workspace:[16],syncConfig:[16],activeTool:[16],globalContextMenuItems:[16],objectContextMenuItems:[16],scaleMax:[1026,"scale-max"],scaleMin:[1026,"scale-min"],forceUpdate:[32],registerTool:[64],changeActiveTool:[64],disable:[64],enable:[64],delete:[64],copy:[64],paste:[64],bringForward:[64],sendBackward:[64],bringToFront:[64],sendToBack:[64],undo:[64],redo:[64],hideContextMenu:[64],getObjectById:[64],addObject:[64],updateObject:[64],removeObject:[64],getSelectedObjects:[64],selectObjects:[64],selectAllObjectsInViewport:[64],clearSelection:[64],centerObjectInViewport:[64],getCopiedObjects:[64],createWorkspace:[64],updateWorkspace:[64],deleteWorkspace:[64],getWorkspaces:[64],getActiveWorkspace:[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"longpress","handleLongPress"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"],[4,"dblclick","preventDoubleTapZoomOnTouchDevices"]],{workspace:["onWorkspaceChange"],scaleMax:["validateScaleMax"],scaleMin:["validateScaleMin"]}],[769,"kritzel-control-text-config",{tool:[1040],isExpanded:[1028,"is-expanded"]}],[769,"kritzel-control-brush-config",{tool:[1040],isExpanded:[1028,"is-expanded"],palette:[32]},null,{tool:["handleToolChange"]}],[769,"kritzel-split-button",{buttonIcon:[1,"button-icon"],dropdownIcon:[1,"dropdown-icon"],items:[16],mainButtonDisabled:[4,"main-button-disabled"],menuButtonDisabled:[4,"menu-button-disabled"],isMenuOpen:[32],isTouchDevice:[32],anchorElement:[32],menuScrollTop:[32],open:[64],focusMenu:[64]}],[769,"kritzel-context-menu",{items:[16],objects:[16],processedItems:[32]},[[9,"pointerdown","handleOutsideClick"]],{items:["onItemsChanged"]}],[257,"kritzel-utility-panel"],[769,"kritzel-cursor-trail",{core:[16],cursorTrailPoints:[32],isLeftButtonDown:[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[769,"kritzel-tooltip",{isVisible:[4,"is-visible"],anchorElement:[16],arrowSize:[2,"arrow-size"],offsetY:[2,"offset-y"],positionX:[32],arrowOffset:[32],isMobileView:[32],focusContent:[64]},[[4,"click","handleOutsideClick"],[9,"resize","handleWindowResize"]]],[769,"kritzel-font-family",{fontOptions:[16],selectedFontFamily:[1025,"selected-font-family"]}],[769,"kritzel-font-size",{sizes:[16],selectedSize:[1026,"selected-size"],fontFamily:[1,"font-family"]}],[769,"kritzel-stroke-size",{sizes:[16],selectedSize:[1026,"selected-size"]}],[769,"kritzel-color-palette",{colors:[16],selectedColor:[1025,"selected-color"],isExpanded:[4,"is-expanded"],isOpaque:[4,"is-opaque"]}],[769,"kritzel-font",{fontFamily:[1,"font-family"],size:[2],color:[1]}],[769,"kritzel-menu",{items:[16],parent:[16],selectedIndex:[32],setScrollTop:[64],setFocus:[64]}],[769,"kritzel-menu-item",{item:[16],parent:[16],isDirty:[32]},null,{item:["onItemChange"]}],[769,"kritzel-dropdown",{options:[16],value:[1],width:[1],selectStyles:[8,"select-styles"],internalValue:[32],hasSuffixContent:[32],hasPrefixContent:[32]},null,{options:["optionsChanged"],value:["externalValueChanged"]}],[769,"kritzel-portal",{anchor:[16],offsetX:[2,"offset-x"],offsetY:[2,"offset-y"],autoFocus:[4,"auto-focus"]},[[8,"click","handleOutsideClick"],[8,"keydown","handleKeyDown"],[11,"resize","handleResize"],[11,"scroll","handleWindowScroll"]],{anchor:["anchorChanged"]}],[769,"kritzel-color",{value:[1],size:[2]}],[769,"kritzel-icon",{name:[1],label:[1],size:[2]}]]],["p-d702c5af",[[769,"kritzel-brush-style",{type:[1],brushOptions:[16]}]]]],e)}));
2
2
  //# sourceMappingURL=stencil.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stencil.esm.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.2 | 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":[],"mappings":";;;;AAAA;AACA;AACA;;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;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,OAAO,cAAc,CAAC,IAAI,CAAC;AAC7B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAM,aAAa,EAAE;AACvB,EAAE,OAAO,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D,CAAC,CAAC","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"stencil.esm.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":[],"mappings":";;;;AAAA;AACA;AACA;;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;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,OAAO,cAAc,CAAC,IAAI,CAAC;AAC7B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAM,aAAa,EAAE;AACvB,EAAE,OAAO,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D,CAAC,CAAC","x_google_ignoreList":[0]}
@@ -1,39 +1,52 @@
1
1
  import { KritzelEngine } from '../../components/core/kritzel-engine/kritzel-engine';
2
- import { KritzelDatabase } from './database.class';
3
- import { KritzelHistory } from './history.class';
4
2
  import { KritzelBaseObject } from '../objects/base-object.class';
3
+ import { KritzelSelectionGroup } from '../objects/selection-group.class';
5
4
  import { KritzelStore } from './store.class';
6
5
  import { KritzelWorkspace } from './workspace.class';
7
- import { KritzelCommandManager } from './command-manager.class';
6
+ import { KritzelSyncConfig } from '../../interfaces/sync-config.interface';
7
+ import { KritzelAppStateMap } from '../structures/app-state-map.structure';
8
8
  export declare class KritzelCore {
9
9
  private readonly _kritzelEngine;
10
10
  private readonly _store;
11
- private readonly _history;
12
- private readonly _commandManager;
13
- private readonly _database;
11
+ private _syncConfig?;
12
+ private readonly _appStateMap;
14
13
  get engine(): KritzelEngine;
15
- get history(): KritzelHistory;
16
- get commandManager(): KritzelCommandManager;
17
- get database(): KritzelDatabase;
18
14
  get store(): KritzelStore;
15
+ get appStateMap(): KritzelAppStateMap;
19
16
  constructor(kritzelEngine: KritzelEngine);
20
- initializeDatabase(): Promise<void>;
17
+ setSyncConfig(config?: KritzelSyncConfig): void;
18
+ initializeYjs(): Promise<void>;
19
+ /**
20
+ * Load all workspaces from app state map
21
+ */
22
+ private loadWorkspacesFromAppState;
23
+ /**
24
+ * Save a workspace to app state map
25
+ */
26
+ private saveWorkspaceToAppState;
27
+ /**
28
+ * Delete a workspace from app state map
29
+ */
30
+ private deleteWorkspaceFromAppState;
21
31
  initializeWorkspace(workspace?: KritzelWorkspace): Promise<void>;
22
- private initializeWorkspaceObjects;
23
- updateWorkspaceViewport(translateX: number, translateY: number, scale: number): Promise<void>;
24
- addObjectToDatabase(object: KritzelBaseObject<any>): Promise<void>;
25
- updateObjectInDatabase(object: KritzelBaseObject<any>): Promise<void>;
26
- deleteObjectFromDatabase(objectId: string): Promise<void>;
27
- getWorkspace(id: string): Promise<KritzelWorkspace | null>;
28
- getWorkspaces(): Promise<KritzelWorkspace[]>;
29
- createWorkspace(workspace: KritzelWorkspace): Promise<void>;
30
- updateWorkspace(workspace: KritzelWorkspace): Promise<void>;
31
- deleteWorkspace(workspace: KritzelWorkspace): Promise<void>;
32
32
  rerender(): void;
33
33
  findObjectById(id: string): KritzelBaseObject<any> | null;
34
+ getWorkspaces(): KritzelWorkspace[];
35
+ createWorkspace(workspace: KritzelWorkspace): void;
36
+ updateWorkspace(workspace: KritzelWorkspace): void;
37
+ deleteWorkspace(workspace: KritzelWorkspace): void;
38
+ updateWorkspaceViewport(translateX: number, translateY: number, scale: number): void;
39
+ addObject(object: KritzelBaseObject<any>): void;
40
+ removeObject(object: KritzelBaseObject<any>): void;
41
+ updateObject<T extends KritzelBaseObject<any>>(object: T, updatedProperties: Partial<T>): void;
42
+ addSelectionGroup(selectionGroup: KritzelSelectionGroup): void;
43
+ removeSelectionGroup(): void;
44
+ removeSelectionBox(): void;
34
45
  deselectAllObjects(): void;
35
46
  delete(): void;
36
- deleteObject(id: string, skipHistory?: boolean): void;
47
+ undo(): void;
48
+ redo(): void;
49
+ deleteObject(id: string): void;
37
50
  copy(): void;
38
51
  paste(x?: number, y?: number): void;
39
52
  bringForward(object?: KritzelBaseObject<any>): void;
@@ -1,4 +1,8 @@
1
+ import { KritzelSelectionGroup } from '../objects/selection-group.class';
1
2
  import { KritzelEngineState } from '../../interfaces/engine-state.interface';
3
+ import { KritzelSelectionBox } from '../objects/selection-box.class';
4
+ import { KritzelText } from '../objects/text.class';
5
+ import { KritzelPath } from '../objects/path.class';
2
6
  import { StateChangeListener, StatePropertyKey } from '../../types/state.types';
3
7
  export declare class KritzelStore {
4
8
  private readonly _state;
@@ -8,6 +12,10 @@ export declare class KritzelStore {
8
12
  get allObjects(): import("../..").KritzelBaseObject<Element>[];
9
13
  get allNonSelectionObjects(): import("../..").KritzelBaseObject<Element>[];
10
14
  get selectedObjects(): import("../..").KritzelBaseObject<Element>[];
15
+ get selectionBox(): KritzelSelectionBox | null;
16
+ get selectionGroup(): KritzelSelectionGroup | null;
17
+ get activeText(): KritzelText | null;
18
+ get currentPath(): KritzelPath | null;
11
19
  get offsetX(): number;
12
20
  get offsetY(): number;
13
21
  get isDisabled(): boolean;
@@ -54,12 +54,12 @@ export declare class KritzelBaseObject<T extends Element = HTMLElement | SVGElem
54
54
  generateId(): string;
55
55
  isInViewport(): boolean;
56
56
  centerInViewport(): void;
57
+ update(): void;
57
58
  move(startX: number, startY: number, endX: number, endY: number): void;
58
59
  resize(x: number, y: number, width: number, height: number): void;
59
60
  rotate(value: number): void;
60
61
  clone(): KritzelBaseObject<T>;
61
62
  copy(): KritzelBaseObject<T>;
62
- onSelectedClick(): void;
63
63
  serialize(): any;
64
64
  deserialize<T>(object: any): T;
65
65
  isClass<T extends KritzelBaseObject>(this: T, className: string): this is T;
@@ -67,8 +67,4 @@ export declare class KritzelBaseObject<T extends Element = HTMLElement | SVGElem
67
67
  hitTest(_x: number, _y: number): boolean;
68
68
  hitTestPolygon(polygon: KritzelPolygon): boolean;
69
69
  updatePosition(x: number, y: number): void;
70
- onExecuteAddCommand(_object: KritzelBaseObject): void;
71
- onUndoAddCommand(_object: KritzelBaseObject): void;
72
- onExecuteUpdateCommand(_updatedProperties: Partial<this>): void;
73
- onUndoUpdateCommand(_previousProperties: Partial<this>): void;
74
70
  }
@@ -18,6 +18,7 @@ export declare class KritzelPath extends KritzelBaseObject<SVGElement> {
18
18
  options: KritzelPathOptions | undefined;
19
19
  isVisible: boolean;
20
20
  isDebugInfoVisible: boolean;
21
+ isCompleted: boolean;
21
22
  private _adjustedPoints?;
22
23
  get viewBox(): string;
23
24
  constructor(config?: {
@@ -1,7 +1,6 @@
1
1
  import { KritzelCore } from '../core/core.class';
2
2
  import { KritzelBaseObject } from './base-object.class';
3
- export declare class KrtizelSelectionBox extends KritzelBaseObject<HTMLElement> {
3
+ export declare class KritzelSelectionBox extends KritzelBaseObject<HTMLElement> {
4
4
  __class__: string;
5
- objects: KritzelBaseObject<any>[];
6
- static create(core: KritzelCore): KrtizelSelectionBox;
5
+ static create(core: KritzelCore): KritzelSelectionBox;
7
6
  }
@@ -1,13 +1,25 @@
1
1
  import { KritzelCore } from '../core/core.class';
2
2
  import { KritzelBaseObject } from './base-object.class';
3
+ interface UnchangedObjectSnapshot {
4
+ id: string;
5
+ translateX: number;
6
+ translateY: number;
7
+ rotation: number;
8
+ width: number;
9
+ height: number;
10
+ totalWidth: number;
11
+ totalHeight: number;
12
+ scale: number;
13
+ }
3
14
  export declare class KritzelSelectionGroup extends KritzelBaseObject<HTMLElement> {
4
15
  __class__: string;
5
- objects: KritzelBaseObject<any>[];
6
- unchangedObjects: KritzelBaseObject<any>[];
16
+ objectIds: string[];
17
+ unchangedObjectSnapshots: Map<string, UnchangedObjectSnapshot>;
7
18
  minX: number;
8
19
  maxX: number;
9
20
  minY: number;
10
21
  maxY: number;
22
+ get objects(): KritzelBaseObject<any>[];
11
23
  get length(): number;
12
24
  static create(core: KritzelCore): KritzelSelectionGroup;
13
25
  addOrRemove(object: KritzelBaseObject<any>): void;
@@ -15,12 +27,19 @@ export declare class KritzelSelectionGroup extends KritzelBaseObject<HTMLElement
15
27
  updateWorkspaceId(workspaceId: string): void;
16
28
  updateZIndices(startZIndex: number): void;
17
29
  updatePosition(x: number, y: number): void;
30
+ /**
31
+ * Capture snapshots of current object states for undo/redo operations
32
+ */
33
+ private captureUnchangedSnapshots;
34
+ serialize(): any;
35
+ deserialize<T>(object: any): T;
36
+ update(): void;
18
37
  move(startX: number, startY: number, endX: number, endY: number): void;
19
38
  resize(x: number, y: number, width: number, height: number): void;
20
39
  rotate(value: number): void;
21
40
  copy(): KritzelBaseObject<HTMLElement>;
22
41
  refreshObjectDimensions(): void;
23
- private getOffsetXToCenter;
24
- private getOffsetYToCenter;
25
- private getUnchangedObject;
42
+ private getOffsetXToCenterFromSnapshot;
43
+ private getOffsetYToCenterFromSnapshot;
26
44
  }
45
+ export {};
@@ -10,7 +10,6 @@ export declare class KritzelText extends KritzelBaseObject<HTMLDivElement> {
10
10
  initialHeight: number;
11
11
  scale: number;
12
12
  scaleFactor: number;
13
- isNew: boolean;
14
13
  isDebugInfoVisible: boolean;
15
14
  isEditable: boolean;
16
15
  isEditing: boolean;
@@ -44,6 +43,7 @@ export declare class KritzelText extends KritzelBaseObject<HTMLDivElement> {
44
43
  x: number;
45
44
  y: number;
46
45
  }): void;
46
+ private scrollIntoViewOnIOS;
47
47
  edit(event?: PointerEvent): void;
48
48
  save(): void;
49
49
  handlePointerDown(event: PointerEvent): void;
@@ -52,6 +52,4 @@ export declare class KritzelText extends KritzelBaseObject<HTMLDivElement> {
52
52
  copy(): KritzelText;
53
53
  serialize(): any;
54
54
  deserialize<KritzelText>(object: any): KritzelText;
55
- onExecuteUpdateCommand(updatedProperties: Partial<KritzelText>): void;
56
- onUndoUpdateCommand(previousProperties: Partial<KritzelText>): void;
57
55
  }
@@ -0,0 +1,18 @@
1
+ import * as Y from 'yjs';
2
+ import { ISyncProvider } from '../../interfaces/sync-provider.interface';
3
+ /**
4
+ * BroadcastChannel sync provider for cross-tab synchronization
5
+ * This is a lightweight alternative to y-webrtc for browser-tab-only sync
6
+ */
7
+ export declare class BroadcastSyncProvider implements ISyncProvider {
8
+ private readonly doc;
9
+ private readonly channel;
10
+ private _synced;
11
+ constructor(docName: string, doc: Y.Doc, _options?: any);
12
+ private handleDocUpdate;
13
+ private handleMessage;
14
+ private broadcastSync;
15
+ connect(): Promise<void>;
16
+ disconnect(): void;
17
+ destroy(): void;
18
+ }
@@ -0,0 +1,120 @@
1
+ import * as Y from 'yjs';
2
+ import { HocuspocusProviderWebsocket } from '@hocuspocus/provider';
3
+ import { ISyncProvider, ProviderFactory } from '../../interfaces/sync-provider.interface';
4
+ /**
5
+ * Options for Hocuspocus sync provider
6
+ */
7
+ export interface HocuspocusOptions {
8
+ /**
9
+ * Hocuspocus server URL (optional, defaults to ws://localhost:1234)
10
+ */
11
+ url?: string;
12
+ /**
13
+ * Document name (optional, defaults to docName)
14
+ */
15
+ name?: string;
16
+ /**
17
+ * Authentication token (optional)
18
+ */
19
+ token?: string | (() => string) | (() => Promise<string>);
20
+ /**
21
+ * Shared WebSocket provider for multiplexing (optional)
22
+ * If provided, multiple documents will share the same WebSocket connection
23
+ */
24
+ websocketProvider?: HocuspocusProviderWebsocket;
25
+ /**
26
+ * Quiet mode - suppress console output (optional, defaults to false)
27
+ */
28
+ quiet?: boolean;
29
+ /**
30
+ * Callback when connected (optional)
31
+ */
32
+ onConnect?: () => void;
33
+ /**
34
+ * Callback when disconnected (optional)
35
+ */
36
+ onDisconnect?: () => void;
37
+ /**
38
+ * Callback when synced (optional)
39
+ */
40
+ onSynced?: () => void;
41
+ /**
42
+ * Callback when authentication failed (optional)
43
+ */
44
+ onAuthenticationFailed?: (data: any) => void;
45
+ /**
46
+ * Callback when connection status changes (optional)
47
+ */
48
+ onStatus?: (data: {
49
+ status: string;
50
+ }) => void;
51
+ /**
52
+ * Force sync interval in milliseconds (optional, false to disable)
53
+ */
54
+ forceSyncInterval?: false | number;
55
+ /**
56
+ * WebSocket polyfill for Node.js environments (optional)
57
+ */
58
+ WebSocketPolyfill?: any;
59
+ }
60
+ /**
61
+ * Options for creating a shared WebSocket connection
62
+ */
63
+ export interface HocuspocusWebSocketOptions {
64
+ /**
65
+ * Hocuspocus server URL
66
+ */
67
+ url: string;
68
+ /**
69
+ * WebSocket polyfill for Node.js environments (optional)
70
+ */
71
+ WebSocketPolyfill?: any;
72
+ /**
73
+ * Callback when WebSocket connects (optional)
74
+ */
75
+ onConnect?: () => void;
76
+ /**
77
+ * Callback when WebSocket disconnects (optional)
78
+ */
79
+ onDisconnect?: () => void;
80
+ /**
81
+ * Callback when connection status changes (optional)
82
+ */
83
+ onStatus?: (data: {
84
+ status: string;
85
+ }) => void;
86
+ }
87
+ /**
88
+ * Hocuspocus sync provider for real-time collaboration
89
+ * Supports multiplexing - multiple documents can share the same WebSocket connection
90
+ */
91
+ export declare class HocuspocusSyncProvider implements ISyncProvider {
92
+ private provider;
93
+ private isConnected;
94
+ private isSynced;
95
+ private usesSharedSocket;
96
+ private static sharedWebSocketProvider;
97
+ constructor(docName: string, doc: Y.Doc, options?: HocuspocusOptions);
98
+ /**
99
+ * Create a shared WebSocket connection for multiplexing
100
+ * Call this once to create a shared connection that multiple providers can use
101
+ */
102
+ static createSharedWebSocket(options: HocuspocusWebSocketOptions): HocuspocusProviderWebsocket;
103
+ /**
104
+ * Destroy the shared WebSocket connection
105
+ * Call this when you're done with all multiplexed providers
106
+ */
107
+ static destroySharedWebSocket(): void;
108
+ /**
109
+ * Get the shared WebSocket provider instance (if it exists)
110
+ */
111
+ static getSharedWebSocket(): HocuspocusProviderWebsocket | null;
112
+ /**
113
+ * Static factory method for creating HocuspocusSyncProvider with configuration options
114
+ * Returns a ProviderFactory that can be used in sync configuration
115
+ */
116
+ static with(options?: HocuspocusOptions): ProviderFactory;
117
+ connect(): Promise<void>;
118
+ disconnect(): void;
119
+ destroy(): void;
120
+ }
@@ -0,0 +1,22 @@
1
+ import * as Y from 'yjs';
2
+ import { ISyncProvider } from '../../interfaces/sync-provider.interface';
3
+ /**
4
+ * Options for IndexedDB sync provider
5
+ */
6
+ export interface IndexedDBOptions {
7
+ /**
8
+ * Custom database name (optional)
9
+ */
10
+ name?: string;
11
+ }
12
+ /**
13
+ * IndexedDB sync provider for local persistence
14
+ */
15
+ export declare class IndexedDBSyncProvider implements ISyncProvider {
16
+ private provider;
17
+ private isConnected;
18
+ constructor(docName: string, doc: Y.Doc, options?: IndexedDBOptions);
19
+ connect(): Promise<void>;
20
+ disconnect(): void;
21
+ destroy(): void;
22
+ }
@@ -0,0 +1,52 @@
1
+ import * as Y from 'yjs';
2
+ import { ISyncProvider, ProviderFactory } from '../../interfaces/sync-provider.interface';
3
+ /**
4
+ * Options for WebSocket sync provider
5
+ */
6
+ export interface WebSocketOptions {
7
+ /**
8
+ * WebSocket server URL (optional, defaults to ws://localhost:1234)
9
+ */
10
+ url?: string;
11
+ /**
12
+ * Room/document name (optional, defaults to docName)
13
+ */
14
+ roomName?: string;
15
+ /**
16
+ * Connection parameters (optional)
17
+ */
18
+ params?: Record<string, string>;
19
+ /**
20
+ * WebSocket protocols (optional)
21
+ */
22
+ protocols?: string[];
23
+ /**
24
+ * Custom WebSocket constructor (optional, for Node.js environments)
25
+ */
26
+ WebSocketPolyfill?: any;
27
+ /**
28
+ * Awareness protocol options (optional)
29
+ */
30
+ awareness?: any;
31
+ /**
32
+ * Maximum number of connection attempts (optional, defaults to Infinity)
33
+ */
34
+ maxBackoffTime?: number;
35
+ }
36
+ /**
37
+ * WebSocket sync provider for real-time collaboration
38
+ */
39
+ export declare class WebSocketSyncProvider implements ISyncProvider {
40
+ private provider;
41
+ private isConnected;
42
+ constructor(docName: string, doc: Y.Doc, options?: WebSocketOptions);
43
+ /**
44
+ * Static factory method for creating WebSocketSyncProvider with configuration options
45
+ * Returns a ProviderFactory that can be used in sync configuration
46
+ */
47
+ static with(options?: WebSocketOptions): ProviderFactory;
48
+ private setupEventListeners;
49
+ connect(): Promise<void>;
50
+ disconnect(): void;
51
+ destroy(): void;
52
+ }
@@ -0,0 +1,30 @@
1
+ import { KritzelWorkspace } from '../core/workspace.class';
2
+ import { KritzelCore } from '../core/core.class';
3
+ import { KritzelSyncConfig } from '../../interfaces/sync-config.interface';
4
+ export declare class KritzelAppStateMap {
5
+ private map;
6
+ private _ydoc;
7
+ private _workspacesMap;
8
+ private _providers;
9
+ private _core;
10
+ private _isReady;
11
+ private _onRemoteChangeCallback;
12
+ get isReady(): boolean;
13
+ constructor();
14
+ onRemoteChange(callback: () => void): void;
15
+ initialize(core: KritzelCore, config?: KritzelSyncConfig): Promise<void>;
16
+ private handleWorkspacesChange;
17
+ private reviveWorkspace;
18
+ transaction(callback: () => void): void;
19
+ loadFromYjs(): void;
20
+ reset(): void;
21
+ insert(workspace: KritzelWorkspace): boolean;
22
+ update(workspace: KritzelWorkspace): boolean;
23
+ remove(predicate: (workspace: KritzelWorkspace) => boolean): boolean;
24
+ get(id: string): KritzelWorkspace | undefined;
25
+ allWorkspaces(): KritzelWorkspace[];
26
+ filter(predicate: (workspace: KritzelWorkspace) => boolean): KritzelWorkspace[];
27
+ find(predicate: (workspace: KritzelWorkspace) => boolean): KritzelWorkspace | undefined;
28
+ has(id: string): boolean;
29
+ destroy(): void;
30
+ }
@@ -1,11 +1,49 @@
1
+ import * as Y from 'yjs';
1
2
  import { KritzelBaseObject } from '../objects/base-object.class';
3
+ import { KritzelCore } from '../core/core.class';
4
+ import { KritzelSyncConfig } from '../../interfaces/sync-config.interface';
2
5
  export declare class KritzelObjectMap<T extends KritzelBaseObject<any>> {
3
6
  private map;
7
+ private _ydoc;
8
+ private _objectsMap;
9
+ private _providers;
10
+ private _undoManager;
11
+ private _reviver;
12
+ private _core;
13
+ private _workspaceId;
14
+ private _isReady;
15
+ private _temporaryItemsCount;
16
+ get isReady(): boolean;
17
+ get undoManager(): Y.UndoManager | null;
18
+ get workspaceId(): string | null;
4
19
  constructor();
20
+ initialize(core: KritzelCore, workspaceId: string, config?: KritzelSyncConfig): Promise<void>;
21
+ private handleObjectsChange;
22
+ transaction(callback: () => void): void;
23
+ loadFromYjs(): void;
5
24
  reset(): void;
6
25
  insert(object: T): boolean;
7
- update(object: T): boolean;
26
+ update(object: T, options?: {
27
+ temporary?: boolean;
28
+ }): boolean;
8
29
  remove(predicate: (object: T) => boolean): void;
9
30
  filter(predicate: (object: T) => boolean): T[];
10
31
  allObjects(): T[];
32
+ private isPersistable;
33
+ undo(): void;
34
+ redo(): void;
35
+ canUndo(): boolean;
36
+ canRedo(): boolean;
37
+ clearHistory(): void;
38
+ /**
39
+ * Consolidates all temporary items in the undo stack into a single undo item.
40
+ * Call this when you want to merge multiple temporary changes (e.g., keystrokes) into one.
41
+ */
42
+ consolidateTemporaryItems(): void;
43
+ /**
44
+ * Removes all temporary items from the undo stack without consolidating them.
45
+ * Use this to discard temporary changes completely.
46
+ */
47
+ clearTemporaryItems(): void;
48
+ destroy(): void;
11
49
  }
@@ -4,6 +4,7 @@ import { KritzelBaseObject } from '../../../classes/objects/base-object.class';
4
4
  import { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';
5
5
  import { KritzelEngineState } from '../../../interfaces/engine-state.interface';
6
6
  import { KritzelWorkspace } from '../../../classes/core/workspace.class';
7
+ import { KritzelSyncConfig } from '../../../interfaces/sync-config.interface';
7
8
  export declare class KritzelEditor {
8
9
  host: HTMLElement;
9
10
  scaleMax: number;
@@ -14,6 +15,7 @@ export declare class KritzelEditor {
14
15
  customSvgIcons: Record<string, string>;
15
16
  isControlsVisible: boolean;
16
17
  isUtilityPanelVisible: boolean;
18
+ syncConfig?: KritzelSyncConfig;
17
19
  isReady: EventEmitter<HTMLElement>;
18
20
  isEngineReady: boolean;
19
21
  isControlsReady: boolean;
@@ -23,6 +25,7 @@ export declare class KritzelEditor {
23
25
  isVirtualKeyboardOpen: boolean;
24
26
  onIsEngineReady(newValue: boolean): void;
25
27
  onIsControlsReady(newValue: boolean): void;
28
+ onWorkspacesChange(newWorkspaces: KritzelWorkspace[]): void;
26
29
  handleTouchStart(event: MouseEvent): void;
27
30
  getObjectById<T extends KritzelBaseObject>(id: string): Promise<T | null>;
28
31
  addObject<T extends KritzelBaseObject>(object: T): Promise<T | null>;
@@ -10,9 +10,11 @@ import { KritzelBaseObject } from '../../../classes/objects/base-object.class';
10
10
  import { KritzelWorkspace } from '../../../classes/core/workspace.class';
11
11
  import { KritzelEngineState } from '../../../interfaces/engine-state.interface';
12
12
  import { KritzelCore } from '../../../classes/core/core.class';
13
+ import { KritzelSyncConfig } from '../../../interfaces/sync-config.interface';
13
14
  export declare class KritzelEngine {
14
15
  host: HTMLElement;
15
16
  workspace?: KritzelWorkspace;
17
+ syncConfig?: KritzelSyncConfig;
16
18
  onWorkspaceChange(newWorkspace: KritzelWorkspace | null): void;
17
19
  activeTool: KritzelTool;
18
20
  globalContextMenuItems: ContextMenuItem[];
@@ -13,6 +13,7 @@ import { KritzelTextTool } from "./classes/tools/text-tool.class";
13
13
  import { KritzelBrushToolConfig, KritzelTextToolConfig, KritzelToolbarControl } from "./interfaces/toolbar-control.interface";
14
14
  import { KritzelCore } from "./classes/core/core.class";
15
15
  import { DropdownOption } from "./components/shared/kritzel-dropdown/kritzel-dropdown";
16
+ import { KritzelSyncConfig } from "./interfaces/sync-config.interface";
16
17
  import { KritzelWorkspace } from "./classes/core/workspace.class";
17
18
  import { KritzelTool } from "./interfaces/tool.interface";
18
19
  import { KritzelEngineState } from "./interfaces/engine-state.interface";
@@ -27,6 +28,7 @@ export { KritzelTextTool } from "./classes/tools/text-tool.class";
27
28
  export { KritzelBrushToolConfig, KritzelTextToolConfig, KritzelToolbarControl } from "./interfaces/toolbar-control.interface";
28
29
  export { KritzelCore } from "./classes/core/core.class";
29
30
  export { DropdownOption } from "./components/shared/kritzel-dropdown/kritzel-dropdown";
31
+ export { KritzelSyncConfig } from "./interfaces/sync-config.interface";
30
32
  export { KritzelWorkspace } from "./classes/core/workspace.class";
31
33
  export { KritzelTool } from "./interfaces/tool.interface";
32
34
  export { KritzelEngineState } from "./interfaces/engine-state.interface";
@@ -162,6 +164,7 @@ export namespace Components {
162
164
  "scaleMin": number;
163
165
  "selectAllObjectsInViewport": () => Promise<void>;
164
166
  "selectObjects": (objects: KritzelBaseObject[]) => Promise<void>;
167
+ "syncConfig"?: KritzelSyncConfig;
165
168
  "updateObject": <T extends KritzelBaseObject>(object: T, updatedProperties: Partial<T>) => Promise<T | null>;
166
169
  "updateWorkspace": (workspace: KritzelWorkspace) => Promise<void>;
167
170
  }
@@ -203,6 +206,7 @@ export namespace Components {
203
206
  "selectObjects": (objects: KritzelBaseObject[]) => Promise<void>;
204
207
  "sendBackward": (object?: KritzelBaseObject<any>) => Promise<void>;
205
208
  "sendToBack": (object?: KritzelBaseObject<any>) => Promise<void>;
209
+ "syncConfig"?: KritzelSyncConfig;
206
210
  "undo": () => Promise<void>;
207
211
  "updateObject": <T extends KritzelBaseObject>(object: T, updatedProperties: Partial<T>) => Promise<T | null>;
208
212
  "updateWorkspace": (workspace: KritzelWorkspace) => Promise<void>;
@@ -934,6 +938,7 @@ declare namespace LocalJSX {
934
938
  * @default ABSOLUTE_SCALE_MIN
935
939
  */
936
940
  "scaleMin"?: number;
941
+ "syncConfig"?: KritzelSyncConfig;
937
942
  }
938
943
  interface KritzelEngine {
939
944
  "activeTool"?: KritzelTool;
@@ -951,6 +956,7 @@ declare namespace LocalJSX {
951
956
  * @default ABSOLUTE_SCALE_MIN
952
957
  */
953
958
  "scaleMin"?: number;
959
+ "syncConfig"?: KritzelSyncConfig;
954
960
  "workspace"?: KritzelWorkspace;
955
961
  }
956
962
  interface KritzelFont {
@@ -1,2 +1,2 @@
1
1
  import { KritzelEngineState } from "../interfaces/engine-state.interface";
2
- export declare const DEFAULT_ENGINE_STATE: KritzelEngineState;
2
+ export declare const DEFAULT_ENGINE_CONFIG: KritzelEngineState;
@@ -0,0 +1,5 @@
1
+ import { KritzelSyncConfig } from '../interfaces/sync-config.interface';
2
+ /**
3
+ * Default sync configuration - IndexedDB + BroadcastChannel
4
+ */
5
+ export declare const DEFAULT_SYNC_CONFIG: KritzelSyncConfig;