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.
Files changed (412) hide show
  1. package/dist/stencil/default-text-tool.config-DKpRP4XR.js +1441 -0
  2. package/dist/stencil/default-text-tool.config-DKpRP4XR.js.map +1 -0
  3. package/dist/{components/p-l10It7Nm.js → stencil/devices.helper-l10It7Nm.js} +2 -2
  4. package/dist/stencil/devices.helper-l10It7Nm.js.map +1 -0
  5. package/dist/stencil/engine.constants-DsjjAmnl.js +7 -0
  6. package/dist/stencil/engine.constants-DsjjAmnl.js.map +1 -0
  7. package/dist/{components/p-D8W6LE-c.js → stencil/event-button.enum-D8W6LE-c.js} +2 -2
  8. package/dist/stencil/event-button.enum-D8W6LE-c.js.map +1 -0
  9. package/dist/{components/p-C6qB08BS.js → stencil/html.helper-C6qB08BS.js} +2 -2
  10. package/dist/{collection/helpers/html.helper.js.map → stencil/html.helper-C6qB08BS.js.map} +1 -1
  11. package/dist/{collection/classes/registries/icon-registry.class.js → stencil/icon-registry.class-BtT8riKh.js} +6 -2
  12. package/dist/stencil/icon-registry.class-BtT8riKh.js.map +1 -0
  13. package/dist/stencil/index-DniO_INI.js +4395 -0
  14. package/dist/stencil/index-DniO_INI.js.map +1 -0
  15. package/dist/stencil/index.esm.js +18 -2
  16. package/dist/stencil/index.esm.js.map +1 -1
  17. package/dist/{esm → stencil}/kritzel-brush-style.entry.js +3 -3
  18. package/dist/stencil/kritzel-color-palette.entry.esm.js.map +1 -0
  19. package/dist/{components/p-D1uj4A4F.js → stencil/kritzel-color-palette.entry.js} +9 -39
  20. package/dist/stencil/kritzel-color.entry.esm.js.map +1 -0
  21. package/dist/{components/p-D4yvhd1d.js → stencil/kritzel-color.entry.js} +8 -30
  22. package/dist/stencil/kritzel-context-menu-BYgOEy-i.js +66 -0
  23. package/dist/stencil/kritzel-context-menu-BYgOEy-i.js.map +1 -0
  24. package/dist/{components/p-C2sWlNsJ.js → stencil/kritzel-context-menu-GdU9xEKC.js} +12 -41
  25. package/dist/stencil/kritzel-context-menu-GdU9xEKC.js.map +1 -0
  26. package/dist/stencil/kritzel-context-menu.entry.esm.js.map +1 -0
  27. package/dist/stencil/kritzel-context-menu.entry.js +3 -0
  28. package/dist/stencil/kritzel-control-brush-config.entry.esm.js.map +1 -0
  29. package/dist/stencil/kritzel-control-brush-config.entry.js +54 -0
  30. package/dist/stencil/kritzel-control-text-config.entry.esm.js.map +1 -0
  31. package/dist/stencil/kritzel-control-text-config.entry.js +42 -0
  32. package/dist/stencil/kritzel-controls.entry.esm.js.map +1 -0
  33. package/dist/{components/p-1lIHoOlH.js → stencil/kritzel-controls.entry.js} +17 -115
  34. package/dist/stencil/kritzel-cursor-trail.entry.esm.js.map +1 -0
  35. package/dist/{components/p-CLt3HMl6.js → stencil/kritzel-cursor-trail.entry.js} +10 -33
  36. package/dist/stencil/kritzel-dropdown.entry.esm.js.map +1 -0
  37. package/dist/{components/p-CIXPLjCu.js → stencil/kritzel-dropdown.entry.js} +9 -39
  38. package/dist/stencil/kritzel-editor.entry.esm.js.map +1 -0
  39. package/dist/stencil/kritzel-editor.entry.js +248 -0
  40. package/dist/stencil/kritzel-engine.entry.esm.js.map +1 -0
  41. package/dist/{esm/kritzel-color_22.entry.js → stencil/kritzel-engine.entry.js} +265 -1835
  42. package/dist/stencil/kritzel-font-family.entry.esm.js.map +1 -0
  43. package/dist/{components/p-BgznZoBH.js → stencil/kritzel-font-family.entry.js} +9 -37
  44. package/dist/{components/p-DDmSxM5f.js.map → stencil/kritzel-font-size.entry.esm.js.map} +1 -1
  45. package/dist/stencil/kritzel-font-size.entry.js +28 -0
  46. package/dist/stencil/kritzel-font.entry.esm.js.map +1 -0
  47. package/dist/stencil/kritzel-font.entry.js +23 -0
  48. package/dist/stencil/kritzel-icon.entry.esm.js.map +1 -0
  49. package/dist/stencil/kritzel-icon.entry.js +29 -0
  50. package/dist/stencil/kritzel-menu-item.entry.esm.js.map +1 -0
  51. package/dist/{components/p-CsA9M6me.js → stencil/kritzel-menu-item.entry.js} +16 -174
  52. package/dist/stencil/kritzel-menu.entry.esm.js.map +1 -0
  53. package/dist/stencil/kritzel-menu.entry.js +72 -0
  54. package/dist/stencil/kritzel-portal.entry.esm.js.map +1 -0
  55. package/dist/{components/p-D5Wq4x4r.js → stencil/kritzel-portal.entry.js} +11 -37
  56. package/dist/stencil/kritzel-split-button.entry.esm.js.map +1 -0
  57. package/dist/{components/p-TdCTkEu0.js → stencil/kritzel-split-button.entry.js} +18 -72
  58. package/dist/stencil/kritzel-stroke-size.entry.esm.js.map +1 -0
  59. package/dist/stencil/kritzel-stroke-size.entry.js +27 -0
  60. package/dist/stencil/kritzel-tooltip.entry.esm.js.map +1 -0
  61. package/dist/{components/p-CTP479Lf.js → stencil/kritzel-tooltip.entry.js} +11 -39
  62. package/dist/stencil/kritzel-utility-panel.entry.esm.js.map +1 -0
  63. package/dist/{components/p-DAfkuR8U.js → stencil/kritzel-utility-panel.entry.js} +11 -38
  64. package/dist/stencil/kritzel-workspace-manager.entry.esm.js.map +1 -0
  65. package/dist/{components/p-CK6no3mi.js → stencil/kritzel-workspace-manager.entry.js} +13 -68
  66. package/dist/stencil/loader.esm.js.map +1 -1
  67. package/dist/{components/p-B0kd2rUI.js → stencil/object.helper-B0kd2rUI.js} +2 -2
  68. package/dist/stencil/object.helper-B0kd2rUI.js.map +1 -0
  69. package/dist/stencil/stencil.esm.js +48 -2
  70. package/dist/stencil/stencil.esm.js.map +1 -1
  71. package/dist/stencil/sync-config.interface-lKfyG1EN.js +19839 -0
  72. package/dist/stencil/sync-config.interface-lKfyG1EN.js.map +1 -0
  73. package/dist/{components/p-CBYBurdY.js → stencil/text-tool.class-C0GbC5zQ.js} +729 -25
  74. package/dist/stencil/text-tool.class-C0GbC5zQ.js.map +1 -0
  75. package/dist/{components/p-n789Y3S-.js → stencil/workspace.class-n789Y3S-.js} +2 -2
  76. package/dist/stencil/workspace.class-n789Y3S-.js.map +1 -0
  77. package/dist/types/classes/structures/object-map.structure.d.ts +9 -1
  78. package/dist/types/classes/structures/quadtree.structure.d.ts +18 -0
  79. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +1 -0
  80. package/dist/types/interfaces/bounding-box.interface.d.ts +1 -0
  81. package/package.json +1 -1
  82. package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -8
  83. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
  84. package/dist/cjs/default-text-tool.config-BySzvIox.js +0 -31267
  85. package/dist/cjs/default-text-tool.config-BySzvIox.js.map +0 -1
  86. package/dist/cjs/index-Cj__YTlG.js +0 -1650
  87. package/dist/cjs/index-Cj__YTlG.js.map +0 -1
  88. package/dist/cjs/index.cjs.js +0 -1465
  89. package/dist/cjs/index.cjs.js.map +0 -1
  90. package/dist/cjs/kritzel-brush-style.cjs.entry.js +0 -32
  91. package/dist/cjs/kritzel-brush-style.entry.cjs.js.map +0 -1
  92. package/dist/cjs/kritzel-color_22.cjs.entry.js +0 -20811
  93. package/dist/cjs/loader.cjs.js +0 -14
  94. package/dist/cjs/loader.cjs.js.map +0 -1
  95. package/dist/cjs/stencil.cjs.js +0 -26
  96. package/dist/cjs/stencil.cjs.js.map +0 -1
  97. package/dist/collection/classes/core/core.class.js +0 -461
  98. package/dist/collection/classes/core/core.class.js.map +0 -1
  99. package/dist/collection/classes/core/reviver.class.js +0 -71
  100. package/dist/collection/classes/core/reviver.class.js.map +0 -1
  101. package/dist/collection/classes/core/store.class.js +0 -72
  102. package/dist/collection/classes/core/store.class.js.map +0 -1
  103. package/dist/collection/classes/core/viewport.class.js +0 -190
  104. package/dist/collection/classes/core/viewport.class.js.map +0 -1
  105. package/dist/collection/classes/core/workspace.class.js +0 -41
  106. package/dist/collection/classes/core/workspace.class.js.map +0 -1
  107. package/dist/collection/classes/handlers/base.handler.js +0 -8
  108. package/dist/collection/classes/handlers/base.handler.js.map +0 -1
  109. package/dist/collection/classes/handlers/context-menu.handler.js +0 -62
  110. package/dist/collection/classes/handlers/context-menu.handler.js.map +0 -1
  111. package/dist/collection/classes/handlers/hover.handler.js +0 -19
  112. package/dist/collection/classes/handlers/hover.handler.js.map +0 -1
  113. package/dist/collection/classes/handlers/key.handler.js +0 -58
  114. package/dist/collection/classes/handlers/key.handler.js.map +0 -1
  115. package/dist/collection/classes/handlers/move.handler.js +0 -149
  116. package/dist/collection/classes/handlers/move.handler.js.map +0 -1
  117. package/dist/collection/classes/handlers/resize.handler.js +0 -184
  118. package/dist/collection/classes/handlers/resize.handler.js.map +0 -1
  119. package/dist/collection/classes/handlers/rotation.handler.js +0 -116
  120. package/dist/collection/classes/handlers/rotation.handler.js.map +0 -1
  121. package/dist/collection/classes/handlers/selection.handler.js +0 -246
  122. package/dist/collection/classes/handlers/selection.handler.js.map +0 -1
  123. package/dist/collection/classes/objects/base-object.class.js +0 -232
  124. package/dist/collection/classes/objects/base-object.class.js.map +0 -1
  125. package/dist/collection/classes/objects/custom-element.class.js +0 -62
  126. package/dist/collection/classes/objects/custom-element.class.js.map +0 -1
  127. package/dist/collection/classes/objects/image.class.js +0 -56
  128. package/dist/collection/classes/objects/image.class.js.map +0 -1
  129. package/dist/collection/classes/objects/path.class.js +0 -284
  130. package/dist/collection/classes/objects/path.class.js.map +0 -1
  131. package/dist/collection/classes/objects/selection-box.class.js +0 -19
  132. package/dist/collection/classes/objects/selection-box.class.js.map +0 -1
  133. package/dist/collection/classes/objects/selection-group.class.js +0 -226
  134. package/dist/collection/classes/objects/selection-group.class.js.map +0 -1
  135. package/dist/collection/classes/objects/text.class.js +0 -261
  136. package/dist/collection/classes/objects/text.class.js.map +0 -1
  137. package/dist/collection/classes/providers/broadcast-sync-provider.class.js +0 -93
  138. package/dist/collection/classes/providers/broadcast-sync-provider.class.js.map +0 -1
  139. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js +0 -232
  140. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js.map +0 -1
  141. package/dist/collection/classes/providers/indexeddb-sync-provider.class.js +0 -35
  142. package/dist/collection/classes/providers/indexeddb-sync-provider.class.js.map +0 -1
  143. package/dist/collection/classes/providers/websocket-sync-provider.class.js +0 -89
  144. package/dist/collection/classes/providers/websocket-sync-provider.class.js.map +0 -1
  145. package/dist/collection/classes/registries/icon-registry.class.js.map +0 -1
  146. package/dist/collection/classes/registries/tool.registry.js +0 -18
  147. package/dist/collection/classes/registries/tool.registry.js.map +0 -1
  148. package/dist/collection/classes/structures/app-state-map.structure.js +0 -189
  149. package/dist/collection/classes/structures/app-state-map.structure.js.map +0 -1
  150. package/dist/collection/classes/structures/object-map.structure.js +0 -310
  151. package/dist/collection/classes/structures/object-map.structure.js.map +0 -1
  152. package/dist/collection/classes/tools/base-tool.class.js +0 -38
  153. package/dist/collection/classes/tools/base-tool.class.js.map +0 -1
  154. package/dist/collection/classes/tools/brush-tool.class.js +0 -133
  155. package/dist/collection/classes/tools/brush-tool.class.js.map +0 -1
  156. package/dist/collection/classes/tools/eraser-tool.class.js +0 -85
  157. package/dist/collection/classes/tools/eraser-tool.class.js.map +0 -1
  158. package/dist/collection/classes/tools/image-tool.class.js +0 -83
  159. package/dist/collection/classes/tools/image-tool.class.js.map +0 -1
  160. package/dist/collection/classes/tools/selection-tool.class.js +0 -164
  161. package/dist/collection/classes/tools/selection-tool.class.js.map +0 -1
  162. package/dist/collection/classes/tools/text-tool.class.js +0 -108
  163. package/dist/collection/classes/tools/text-tool.class.js.map +0 -1
  164. package/dist/collection/collection-manifest.json +0 -34
  165. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +0 -10
  166. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +0 -153
  167. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +0 -1
  168. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +0 -34
  169. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +0 -928
  170. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +0 -1
  171. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +0 -73
  172. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +0 -1606
  173. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +0 -1
  174. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +0 -44
  175. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +0 -98
  176. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +0 -1
  177. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +0 -21
  178. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +0 -107
  179. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +0 -1
  180. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +0 -46
  181. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +0 -145
  182. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +0 -1
  183. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +0 -53
  184. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +0 -218
  185. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +0 -1
  186. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +0 -10
  187. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +0 -90
  188. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +0 -1
  189. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +0 -48
  190. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +0 -114
  191. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +0 -1
  192. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +0 -30
  193. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +0 -110
  194. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +0 -1
  195. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +0 -18
  196. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +0 -94
  197. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +0 -1
  198. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +0 -27
  199. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +0 -291
  200. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +0 -1
  201. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +0 -145
  202. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +0 -280
  203. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +0 -1
  204. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +0 -310
  205. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +0 -1
  206. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +0 -78
  207. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +0 -406
  208. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +0 -1
  209. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +0 -28
  210. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +0 -89
  211. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +0 -1
  212. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +0 -17
  213. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +0 -251
  214. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +0 -1
  215. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +0 -55
  216. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +0 -172
  217. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +0 -1
  218. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +0 -19
  219. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +0 -135
  220. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +0 -1
  221. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.css +0 -19
  222. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +0 -115
  223. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +0 -1
  224. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +0 -127
  225. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +0 -312
  226. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +0 -1
  227. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +0 -44
  228. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +0 -111
  229. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +0 -1
  230. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.css +0 -5
  231. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +0 -255
  232. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +0 -1
  233. package/dist/collection/configs/default-brush-tool.config.js +0 -60
  234. package/dist/collection/configs/default-brush-tool.config.js.map +0 -1
  235. package/dist/collection/configs/default-engine-config.js +0 -53
  236. package/dist/collection/configs/default-engine-config.js.map +0 -1
  237. package/dist/collection/configs/default-sync.config.js +0 -10
  238. package/dist/collection/configs/default-sync.config.js.map +0 -1
  239. package/dist/collection/configs/default-text-tool.config.js +0 -32
  240. package/dist/collection/configs/default-text-tool.config.js.map +0 -1
  241. package/dist/collection/constants/core.constants.js +0 -2
  242. package/dist/collection/constants/core.constants.js.map +0 -1
  243. package/dist/collection/constants/engine.constants.js +0 -3
  244. package/dist/collection/constants/engine.constants.js.map +0 -1
  245. package/dist/collection/enums/event-button.enum.js +0 -7
  246. package/dist/collection/enums/event-button.enum.js.map +0 -1
  247. package/dist/collection/enums/handle-type.enum.js +0 -8
  248. package/dist/collection/enums/handle-type.enum.js.map +0 -1
  249. package/dist/collection/helpers/class.helper.js +0 -6
  250. package/dist/collection/helpers/class.helper.js.map +0 -1
  251. package/dist/collection/helpers/devices.helper.js +0 -26
  252. package/dist/collection/helpers/devices.helper.js.map +0 -1
  253. package/dist/collection/helpers/event.helper.js +0 -51
  254. package/dist/collection/helpers/event.helper.js.map +0 -1
  255. package/dist/collection/helpers/geometry.helper.js +0 -53
  256. package/dist/collection/helpers/geometry.helper.js.map +0 -1
  257. package/dist/collection/helpers/html.helper.js +0 -64
  258. package/dist/collection/helpers/keyboard.helper.js +0 -49
  259. package/dist/collection/helpers/keyboard.helper.js.map +0 -1
  260. package/dist/collection/helpers/math.helper.js +0 -6
  261. package/dist/collection/helpers/math.helper.js.map +0 -1
  262. package/dist/collection/helpers/object.helper.js +0 -12
  263. package/dist/collection/helpers/object.helper.js.map +0 -1
  264. package/dist/collection/index.js +0 -30
  265. package/dist/collection/index.js.map +0 -1
  266. package/dist/collection/interfaces/bounding-box.interface.js +0 -2
  267. package/dist/collection/interfaces/bounding-box.interface.js.map +0 -1
  268. package/dist/collection/interfaces/clonable.interface.js +0 -2
  269. package/dist/collection/interfaces/clonable.interface.js.map +0 -1
  270. package/dist/collection/interfaces/context-menu-item.interface.js +0 -2
  271. package/dist/collection/interfaces/context-menu-item.interface.js.map +0 -1
  272. package/dist/collection/interfaces/debug-info.interface.js +0 -2
  273. package/dist/collection/interfaces/debug-info.interface.js.map +0 -1
  274. package/dist/collection/interfaces/engine-state.interface.js +0 -2
  275. package/dist/collection/interfaces/engine-state.interface.js.map +0 -1
  276. package/dist/collection/interfaces/menu-item.interface.js +0 -2
  277. package/dist/collection/interfaces/menu-item.interface.js.map +0 -1
  278. package/dist/collection/interfaces/object.interface.js +0 -2
  279. package/dist/collection/interfaces/object.interface.js.map +0 -1
  280. package/dist/collection/interfaces/path-options.interface.js +0 -2
  281. package/dist/collection/interfaces/path-options.interface.js.map +0 -1
  282. package/dist/collection/interfaces/point.interface.js +0 -2
  283. package/dist/collection/interfaces/point.interface.js.map +0 -1
  284. package/dist/collection/interfaces/polygon.interface.js +0 -2
  285. package/dist/collection/interfaces/polygon.interface.js.map +0 -1
  286. package/dist/collection/interfaces/selection-state.interface.js +0 -2
  287. package/dist/collection/interfaces/selection-state.interface.js.map +0 -1
  288. package/dist/collection/interfaces/serializable.interface.js +0 -2
  289. package/dist/collection/interfaces/serializable.interface.js.map +0 -1
  290. package/dist/collection/interfaces/shortcut.interface.js +0 -2
  291. package/dist/collection/interfaces/shortcut.interface.js.map +0 -1
  292. package/dist/collection/interfaces/sync-config.interface.js +0 -2
  293. package/dist/collection/interfaces/sync-config.interface.js.map +0 -1
  294. package/dist/collection/interfaces/sync-provider.interface.js +0 -2
  295. package/dist/collection/interfaces/sync-provider.interface.js.map +0 -1
  296. package/dist/collection/interfaces/tool.interface.js +0 -2
  297. package/dist/collection/interfaces/tool.interface.js.map +0 -1
  298. package/dist/collection/interfaces/toolbar-control.interface.js +0 -2
  299. package/dist/collection/interfaces/toolbar-control.interface.js.map +0 -1
  300. package/dist/collection/interfaces/undo-state.interface.js +0 -2
  301. package/dist/collection/interfaces/undo-state.interface.js.map +0 -1
  302. package/dist/collection/types/deep-readonly.type.js +0 -2
  303. package/dist/collection/types/deep-readonly.type.js.map +0 -1
  304. package/dist/collection/types/state.types.js +0 -2
  305. package/dist/collection/types/state.types.js.map +0 -1
  306. package/dist/components/index.js +0 -1477
  307. package/dist/components/index.js.map +0 -1
  308. package/dist/components/kritzel-brush-style.js +0 -67
  309. package/dist/components/kritzel-brush-style.js.map +0 -1
  310. package/dist/components/kritzel-color-palette.js +0 -9
  311. package/dist/components/kritzel-color-palette.js.map +0 -1
  312. package/dist/components/kritzel-color.js +0 -9
  313. package/dist/components/kritzel-color.js.map +0 -1
  314. package/dist/components/kritzel-context-menu.js +0 -9
  315. package/dist/components/kritzel-context-menu.js.map +0 -1
  316. package/dist/components/kritzel-control-brush-config.js +0 -9
  317. package/dist/components/kritzel-control-brush-config.js.map +0 -1
  318. package/dist/components/kritzel-control-text-config.js +0 -9
  319. package/dist/components/kritzel-control-text-config.js.map +0 -1
  320. package/dist/components/kritzel-controls.js +0 -9
  321. package/dist/components/kritzel-controls.js.map +0 -1
  322. package/dist/components/kritzel-cursor-trail.js +0 -9
  323. package/dist/components/kritzel-cursor-trail.js.map +0 -1
  324. package/dist/components/kritzel-dropdown.js +0 -9
  325. package/dist/components/kritzel-dropdown.js.map +0 -1
  326. package/dist/components/kritzel-editor.js +0 -516
  327. package/dist/components/kritzel-editor.js.map +0 -1
  328. package/dist/components/kritzel-engine.js +0 -9
  329. package/dist/components/kritzel-engine.js.map +0 -1
  330. package/dist/components/kritzel-font-family.js +0 -9
  331. package/dist/components/kritzel-font-family.js.map +0 -1
  332. package/dist/components/kritzel-font-size.js +0 -9
  333. package/dist/components/kritzel-font-size.js.map +0 -1
  334. package/dist/components/kritzel-font.js +0 -9
  335. package/dist/components/kritzel-font.js.map +0 -1
  336. package/dist/components/kritzel-icon.js +0 -9
  337. package/dist/components/kritzel-icon.js.map +0 -1
  338. package/dist/components/kritzel-menu-item.js +0 -9
  339. package/dist/components/kritzel-menu-item.js.map +0 -1
  340. package/dist/components/kritzel-menu.js +0 -9
  341. package/dist/components/kritzel-menu.js.map +0 -1
  342. package/dist/components/kritzel-portal.js +0 -9
  343. package/dist/components/kritzel-portal.js.map +0 -1
  344. package/dist/components/kritzel-split-button.js +0 -9
  345. package/dist/components/kritzel-split-button.js.map +0 -1
  346. package/dist/components/kritzel-stroke-size.js +0 -9
  347. package/dist/components/kritzel-stroke-size.js.map +0 -1
  348. package/dist/components/kritzel-tooltip.js +0 -9
  349. package/dist/components/kritzel-tooltip.js.map +0 -1
  350. package/dist/components/kritzel-utility-panel.js +0 -9
  351. package/dist/components/kritzel-utility-panel.js.map +0 -1
  352. package/dist/components/kritzel-workspace-manager.js +0 -9
  353. package/dist/components/kritzel-workspace-manager.js.map +0 -1
  354. package/dist/components/p-1lIHoOlH.js.map +0 -1
  355. package/dist/components/p-B0kd2rUI.js.map +0 -1
  356. package/dist/components/p-B4kxkVe-.js +0 -55
  357. package/dist/components/p-B4kxkVe-.js.map +0 -1
  358. package/dist/components/p-BQg4YML7.js +0 -106
  359. package/dist/components/p-BQg4YML7.js.map +0 -1
  360. package/dist/components/p-BgznZoBH.js.map +0 -1
  361. package/dist/components/p-Bhtn9qay.js +0 -98
  362. package/dist/components/p-Bhtn9qay.js.map +0 -1
  363. package/dist/components/p-C2sWlNsJ.js.map +0 -1
  364. package/dist/components/p-C6qB08BS.js.map +0 -1
  365. package/dist/components/p-CBYBurdY.js.map +0 -1
  366. package/dist/components/p-CIXPLjCu.js.map +0 -1
  367. package/dist/components/p-CK6no3mi.js.map +0 -1
  368. package/dist/components/p-CLt3HMl6.js.map +0 -1
  369. package/dist/components/p-CTP479Lf.js.map +0 -1
  370. package/dist/components/p-CsA9M6me.js.map +0 -1
  371. package/dist/components/p-CwkUrTy1.js +0 -1367
  372. package/dist/components/p-CwkUrTy1.js.map +0 -1
  373. package/dist/components/p-D1uj4A4F.js.map +0 -1
  374. package/dist/components/p-D4yvhd1d.js.map +0 -1
  375. package/dist/components/p-D5Wq4x4r.js.map +0 -1
  376. package/dist/components/p-D8W6LE-c.js.map +0 -1
  377. package/dist/components/p-DAfkuR8U.js.map +0 -1
  378. package/dist/components/p-DDmSxM5f.js +0 -57
  379. package/dist/components/p-Ddh40W3x.js +0 -103
  380. package/dist/components/p-Ddh40W3x.js.map +0 -1
  381. package/dist/components/p-TdCTkEu0.js.map +0 -1
  382. package/dist/components/p-l10It7Nm.js.map +0 -1
  383. package/dist/components/p-n789Y3S-.js.map +0 -1
  384. package/dist/components/p-q5u4CVFi.js +0 -35447
  385. package/dist/components/p-q5u4CVFi.js.map +0 -1
  386. package/dist/components/p-uuRJU2R1.js +0 -46
  387. package/dist/components/p-uuRJU2R1.js.map +0 -1
  388. package/dist/esm/app-globals-DQuL1Twl.js +0 -6
  389. package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
  390. package/dist/esm/default-text-tool.config-2YFQA3SF.js +0 -31208
  391. package/dist/esm/default-text-tool.config-2YFQA3SF.js.map +0 -1
  392. package/dist/esm/index-SGde3HXB.js +0 -1623
  393. package/dist/esm/index-SGde3HXB.js.map +0 -1
  394. package/dist/esm/index.js +0 -1449
  395. package/dist/esm/index.js.map +0 -1
  396. package/dist/esm/kritzel-brush-style.entry.js.map +0 -1
  397. package/dist/esm/loader.js +0 -12
  398. package/dist/esm/loader.js.map +0 -1
  399. package/dist/esm/stencil.js +0 -22
  400. package/dist/esm/stencil.js.map +0 -1
  401. package/dist/index.cjs.js +0 -1
  402. package/dist/index.js +0 -1
  403. package/dist/stencil/p-2YFQA3SF.js +0 -2
  404. package/dist/stencil/p-2YFQA3SF.js.map +0 -1
  405. package/dist/stencil/p-77fa3987.entry.js +0 -10
  406. package/dist/stencil/p-77fa3987.entry.js.map +0 -1
  407. package/dist/stencil/p-DQuL1Twl.js +0 -2
  408. package/dist/stencil/p-DQuL1Twl.js.map +0 -1
  409. package/dist/stencil/p-SGde3HXB.js +0 -3
  410. package/dist/stencil/p-SGde3HXB.js.map +0 -1
  411. package/dist/stencil/p-d702c5af.entry.js +0 -2
  412. package/dist/stencil/p-d702c5af.entry.js.map +0 -1
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- var index = require('./index-Cj__YTlG.js');
4
- var appGlobals = require('./app-globals-V2Kpy_OQ.js');
5
-
6
- const defineCustomElements = async (win, options) => {
7
- if (typeof window === 'undefined') return undefined;
8
- await appGlobals.globalScripts();
9
- return index.bootstrapLazy([["kritzel-color_22.cjs",[[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],"undoState":[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","onTouchStart"]],{"isEngineReady":["onIsEngineReady"],"isControlsReady":["onIsControlsReady"],"workspaces":["onWorkspacesChange"]}],[769,"kritzel-controls",{"controls":[16],"activeControl":[1040],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"undoState":[16],"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"]}],[769,"kritzel-utility-panel",{"undoState":[16]}],[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]}]]],["kritzel-brush-style.cjs",[[769,"kritzel-brush-style",{"type":[1],"brushOptions":[16]}]]]], options);
10
- };
11
-
12
- exports.setNonce = index.setNonce;
13
- exports.defineCustomElements = defineCustomElements;
14
- //# sourceMappingURL=loader.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.cjs.js","sources":["@lazy-external-entrypoint?app-data=conditional"],"sourcesContent":["export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\nexport const defineCustomElements = async (win, options) => {\n if (typeof window === 'undefined') return undefined;\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n};\n"],"names":["globalScripts","bootstrapLazy"],"mappings":";;;;;AAGY,MAAC,oBAAoB,GAAG,OAAO,GAAG,EAAE,OAAO,KAAK;AAC5D,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,OAAO,SAAS;AACrD,EAAE,MAAMA,wBAAa,EAAE;AACvB,EAAE,OAAOC,mBAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D;;;;;"}
@@ -1,26 +0,0 @@
1
- 'use strict';
2
-
3
- var index = require('./index-Cj__YTlG.js');
4
- var appGlobals = require('./app-globals-V2Kpy_OQ.js');
5
-
6
- var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
7
- /*
8
- Stencil Client Patch Browser v4.38.3 | MIT Licensed | https://stenciljs.com
9
- */
10
-
11
- var patchBrowser = () => {
12
- const importMeta = (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('stencil.cjs.js', document.baseURI).href));
13
- const opts = {};
14
- if (importMeta !== "") {
15
- opts.resourcesUrl = new URL(".", importMeta).href;
16
- }
17
- return index.promiseResolve(opts);
18
- };
19
-
20
- patchBrowser().then(async (options) => {
21
- await appGlobals.globalScripts();
22
- return index.bootstrapLazy([["kritzel-color_22.cjs",[[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],"undoState":[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","onTouchStart"]],{"isEngineReady":["onIsEngineReady"],"isControlsReady":["onIsControlsReady"],"workspaces":["onWorkspacesChange"]}],[769,"kritzel-controls",{"controls":[16],"activeControl":[1040],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"undoState":[16],"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"]}],[769,"kritzel-utility-panel",{"undoState":[16]}],[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]}]]],["kritzel-brush-style.cjs",[[769,"kritzel-brush-style",{"type":[1],"brushOptions":[16]}]]]], options);
23
- });
24
-
25
- exports.setNonce = index.setNonce;
26
- //# sourceMappingURL=stencil.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stencil.cjs.js","sources":["../../node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.38.3 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, H, promiseResolve, win } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? win.document && Array.from(win.document.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"names":["promiseResolve","globalScripts","bootstrapLazy"],"mappings":";;;;;;AAAA;AACA;AACA;;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,gQAAe;AACpC,EAAE,MAAM,IAAI,GAAiE,EAAE;AAC/E,EAAE,IAAI,UAAU,KAAK,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI;AACrD;AACA,EAAE,OAAOA,oBAAc,CAAC,IAAI,CAAC;AAC7B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAMC,wBAAa,EAAE;AACvB,EAAE,OAAOC,mBAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D,CAAC,CAAC;;;;","x_google_ignoreList":[0]}
@@ -1,461 +0,0 @@
1
- import { KritzelContextMenu } from "../../components/ui/kritzel-context-menu/kritzel-context-menu";
2
- import { DEFAULT_ENGINE_CONFIG } from "../../configs/default-engine-config";
3
- import { ObjectHelper } from "../../helpers/object.helper";
4
- import { KritzelSelectionBox } from "../objects/selection-box.class";
5
- import { KritzelSelectionGroup } from "../objects/selection-group.class";
6
- import { KritzelToolRegistry } from "../registries/tool.registry";
7
- import { KritzelStore } from "./store.class";
8
- import { KritzelWorkspace } from "./workspace.class";
9
- import { KritzelObjectMap } from "../structures/object-map.structure";
10
- import { KritzelAppStateMap } from "../structures/app-state-map.structure";
11
- export class KritzelCore {
12
- _kritzelEngine;
13
- _store;
14
- _syncConfig;
15
- _appStateMap;
16
- get engine() {
17
- return this._kritzelEngine;
18
- }
19
- get store() {
20
- return this._store;
21
- }
22
- get appStateMap() {
23
- return this._appStateMap;
24
- }
25
- constructor(kritzelEngine) {
26
- this._kritzelEngine = kritzelEngine;
27
- this._store = new KritzelStore(DEFAULT_ENGINE_CONFIG);
28
- this._appStateMap = new KritzelAppStateMap();
29
- }
30
- setSyncConfig(config) {
31
- this._syncConfig = config;
32
- }
33
- async initializeYjs() {
34
- await this._appStateMap.initialize(this, this._syncConfig);
35
- }
36
- /**
37
- * Load all workspaces from app state map
38
- */
39
- loadWorkspacesFromAppState() {
40
- return this._appStateMap.allWorkspaces();
41
- }
42
- /**
43
- * Save a workspace to app state map
44
- */
45
- saveWorkspaceToAppState(workspace) {
46
- if (this._appStateMap.has(workspace.id)) {
47
- this._appStateMap.update(workspace);
48
- }
49
- else {
50
- this._appStateMap.insert(workspace);
51
- }
52
- }
53
- /**
54
- * Delete a workspace from app state map
55
- */
56
- deleteWorkspaceFromAppState(workspaceId) {
57
- this._appStateMap.remove(w => w.id === workspaceId);
58
- }
59
- async initializeWorkspace(workspace) {
60
- // Load all workspaces from app state map
61
- const workspaces = this.loadWorkspacesFromAppState();
62
- // Find most recently updated workspace or use provided/fallback
63
- const mostRecentWorkspace = workspaces.length > 0 ? [...workspaces].sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime())[0] : null;
64
- let activeWorkspace;
65
- if (workspace) {
66
- // Use provided workspace
67
- activeWorkspace = workspace;
68
- const existing = workspaces.find(w => w.id === workspace.id);
69
- if (!existing) {
70
- // New workspace, save it
71
- activeWorkspace._core = this;
72
- this.saveWorkspaceToAppState(activeWorkspace);
73
- }
74
- }
75
- else if (mostRecentWorkspace) {
76
- // Use most recent workspace
77
- activeWorkspace = mostRecentWorkspace;
78
- }
79
- else {
80
- // Create fallback workspace
81
- activeWorkspace = new KritzelWorkspace(ObjectHelper.generateUUID(), 'New Workspace');
82
- activeWorkspace._core = this;
83
- this.saveWorkspaceToAppState(activeWorkspace);
84
- }
85
- // Destroy old ObjectMap if switching workspaces
86
- if (this._store.state.objects && this._store.state.objects.isReady) {
87
- this._store.state.objects.destroy();
88
- }
89
- // Set active workspace
90
- this._store.state.activeWorkspace = activeWorkspace;
91
- this._store.state.workspaces = this.loadWorkspacesFromAppState();
92
- // Set viewport from workspace
93
- const viewport = activeWorkspace.viewport ?? { translateX: 0, translateY: 0, scale: 1 };
94
- this._store.state.translateX = viewport.translateX ?? 0;
95
- this._store.state.translateY = viewport.translateY ?? 0;
96
- this._store.state.scale = viewport.scale ?? 1;
97
- // Create new ObjectMap with its own Y.Doc for this workspace
98
- const objectsMap = new KritzelObjectMap();
99
- await objectsMap.initialize(this, activeWorkspace.id, this._syncConfig);
100
- this._store.state.objects = objectsMap;
101
- this.engine.emitObjectsChange();
102
- this.rerender();
103
- }
104
- rerender() {
105
- if (this._kritzelEngine) {
106
- this._kritzelEngine.forceUpdate++;
107
- }
108
- }
109
- findObjectById(id) {
110
- for (const object of this._store.allObjects) {
111
- if (object.id === id) {
112
- return object;
113
- }
114
- }
115
- return null;
116
- }
117
- getWorkspaces() {
118
- return this.loadWorkspacesFromAppState();
119
- }
120
- createWorkspace(workspace) {
121
- workspace._core = this;
122
- workspace.createdAt = new Date();
123
- workspace.updatedAt = new Date();
124
- this.saveWorkspaceToAppState(workspace);
125
- this._store.state.workspaces = this.loadWorkspacesFromAppState();
126
- }
127
- updateWorkspace(workspace) {
128
- workspace.updatedAt = new Date();
129
- this.saveWorkspaceToAppState(workspace);
130
- const workspaces = this._store.state.workspaces;
131
- const index = workspaces.findIndex(w => w.id === workspace.id);
132
- if (index !== -1) {
133
- workspaces[index] = workspace;
134
- this._store.state.workspaces = workspaces;
135
- }
136
- }
137
- deleteWorkspace(workspace) {
138
- // If deleting the active workspace, need to handle ObjectMap cleanup
139
- if (this._store.state.activeWorkspace?.id === workspace.id) {
140
- this._store.state.objects?.destroy();
141
- }
142
- this.deleteWorkspaceFromAppState(workspace.id);
143
- this._store.state.workspaces = this.loadWorkspacesFromAppState();
144
- // Also delete the workspace's IndexedDB database
145
- const dbName = `kritzel-workspace-${workspace.id}`;
146
- window.indexedDB.deleteDatabase(dbName);
147
- }
148
- updateWorkspaceViewport(translateX, translateY, scale) {
149
- const activeWorkspace = this._store.state.activeWorkspace;
150
- if (!activeWorkspace) {
151
- return;
152
- }
153
- activeWorkspace.viewport = { translateX, translateY, scale };
154
- activeWorkspace.updatedAt = new Date();
155
- this.saveWorkspaceToAppState(activeWorkspace);
156
- }
157
- addObject(object) {
158
- this._store.state.objects.insert(object);
159
- }
160
- removeObject(object) {
161
- object.isMounted = false;
162
- this._store.state.objects.remove(o => o.id === object.id);
163
- }
164
- updateObject(object, updatedProperties) {
165
- for (const key in updatedProperties) {
166
- if (updatedProperties.hasOwnProperty(key)) {
167
- object[key] = updatedProperties[key];
168
- }
169
- }
170
- this._store.state.objects.update(object);
171
- }
172
- addSelectionGroup(selectionGroup) {
173
- this.removeSelectionGroup();
174
- this.removeSelectionBox();
175
- this._store.state.objects.insert(selectionGroup);
176
- }
177
- removeSelectionGroup() {
178
- const selectionGroup = this._store.selectionGroup;
179
- if (selectionGroup) {
180
- this._store.state.objects.remove(object => object.id === selectionGroup.id);
181
- }
182
- }
183
- removeSelectionBox() {
184
- const selectionBox = this._store.selectionBox;
185
- if (selectionBox) {
186
- this._store.state.objects.remove(object => object.id === selectionBox.id);
187
- }
188
- }
189
- deselectAllObjects() {
190
- this.removeSelectionGroup();
191
- this.rerender();
192
- }
193
- delete() {
194
- const selectionGroup = this._store.selectionGroup;
195
- if (!selectionGroup) {
196
- return;
197
- }
198
- selectionGroup.objects.forEach(obj => this.removeObject(obj));
199
- this.removeSelectionGroup();
200
- this.rerender();
201
- }
202
- undo() {
203
- this._store.state.objects?.undo();
204
- }
205
- redo() {
206
- this._store.state.objects?.redo();
207
- }
208
- deleteObject(id) {
209
- const object = this.findObjectById(id);
210
- if (object) {
211
- this.removeObject(object);
212
- this.rerender();
213
- }
214
- }
215
- copy() {
216
- const selectionGroup = this._store.selectionGroup;
217
- if (selectionGroup) {
218
- // Copy each object and store them in an array
219
- this._store.state.copiedObjects = selectionGroup.objects.sort((a, b) => a.zIndex - b.zIndex).map(obj => obj.copy());
220
- }
221
- }
222
- paste(x, y) {
223
- const copiedObjects = this._store.state.copiedObjects;
224
- if (!copiedObjects || copiedObjects.length === 0) {
225
- return;
226
- }
227
- const activeWorkspace = this._store.state.activeWorkspace;
228
- // Check if we're pasting from a different workspace
229
- const isDifferentWorkspace = copiedObjects.some(obj => obj.workspaceId !== activeWorkspace.id);
230
- // Calculate the bounding box of all copied objects
231
- const minX = Math.min(...copiedObjects.map(obj => obj.translateX));
232
- const minY = Math.min(...copiedObjects.map(obj => obj.translateY));
233
- // Determine the paste position
234
- let pasteX;
235
- let pasteY;
236
- if (x !== undefined && y !== undefined) {
237
- // Explicit position provided (e.g., right-click paste)
238
- pasteX = x;
239
- pasteY = y;
240
- }
241
- else if (isDifferentWorkspace) {
242
- // Pasting to different workspace without explicit position
243
- // Keep original position; will be centered by centerInViewport() later
244
- pasteX = minX;
245
- pasteY = minY;
246
- }
247
- else {
248
- // Same workspace paste: offset by 25 pixels from original position
249
- pasteX = minX + 25 / this._store.state.scale;
250
- pasteY = minY + 25 / this._store.state.scale;
251
- }
252
- // Calculate the offset to apply to all objects
253
- const offsetX = pasteX - minX;
254
- const offsetY = pasteY - minY;
255
- this.removeSelectionGroup();
256
- this.removeSelectionBox();
257
- // Create a new selection group for the pasted objects
258
- const selectionGroup = KritzelSelectionGroup.create(this);
259
- // First add all copied objects to the objectsMap with updated positions
260
- copiedObjects.forEach((obj, i) => {
261
- // Update workspace if pasting to a different workspace
262
- if (obj.workspaceId !== activeWorkspace.id) {
263
- obj.workspaceId = activeWorkspace.id;
264
- }
265
- // Update position
266
- obj.updatePosition(obj.translateX + offsetX, obj.translateY + offsetY);
267
- // Update z-index
268
- obj.zIndex = this._store.currentZIndex + i;
269
- // Add to objectsMap
270
- this.addObject(obj);
271
- // Add to selection group
272
- selectionGroup.addOrRemove(obj);
273
- });
274
- // Mark selection group as selected
275
- selectionGroup.isSelected = true;
276
- // Set rotation for single object
277
- if (copiedObjects.length === 1) {
278
- selectionGroup.rotation = copiedObjects[0].rotation;
279
- }
280
- // Add the selection group
281
- this.addSelectionGroup(selectionGroup);
282
- // Handle cross-workspace paste: center objects in viewport
283
- if (isDifferentWorkspace) {
284
- if (x !== undefined && y !== undefined) {
285
- // Position was explicitly provided, use it
286
- selectionGroup.updatePosition(x, y);
287
- }
288
- else {
289
- // Center the selection group in the viewport
290
- selectionGroup.centerInViewport();
291
- }
292
- // Fit the viewport to show the pasted objects
293
- this.engine.viewport.centerFitInViewport(selectionGroup);
294
- }
295
- this._store.state.isSelecting = false;
296
- // Update copiedObjects to the newly created objects for potential future pastes
297
- const newSelectionGroup = this._store.selectionGroup;
298
- if (newSelectionGroup) {
299
- this._store.state.copiedObjects = newSelectionGroup.objects.sort((a, b) => a.zIndex - b.zIndex).map(obj => obj.copy());
300
- }
301
- this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
302
- this.engine.emitObjectsChange();
303
- this.rerender();
304
- }
305
- bringForward(object) {
306
- const selectionGroup = this._store.selectionGroup;
307
- const objects = object ? [object] : selectionGroup?.objects || [];
308
- const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);
309
- const max = allNonSelectionObjectsWithoutCurrent.length > 0 ? Math.max(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) + 1 : 0;
310
- objects.forEach(obj => {
311
- if (obj.zIndex !== max) {
312
- this.updateObject(obj, { zIndex: obj.zIndex + 1 });
313
- }
314
- });
315
- this.rerender();
316
- }
317
- sendBackward(object) {
318
- const selectionGroup = this._store.selectionGroup;
319
- const objects = object ? [object] : selectionGroup?.objects || [];
320
- const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);
321
- const min = allNonSelectionObjectsWithoutCurrent.length > 0 ? Math.min(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) - 1 : 0;
322
- objects.forEach(obj => {
323
- if (obj.zIndex !== min) {
324
- this.updateObject(obj, { zIndex: obj.zIndex - 1 });
325
- }
326
- });
327
- this.rerender();
328
- }
329
- bringToFront(object) {
330
- const selectionGroup = this._store.selectionGroup;
331
- const objects = object ? [object] : selectionGroup?.objects || [];
332
- const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);
333
- const max = Math.max(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) + 1;
334
- objects.forEach(obj => {
335
- this.updateObject(obj, { zIndex: max });
336
- });
337
- this.rerender();
338
- }
339
- sendToBack(object) {
340
- const selectionGroup = this._store.selectionGroup;
341
- const objects = object ? [object] : selectionGroup?.objects || [];
342
- const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);
343
- const min = Math.min(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) - 1;
344
- objects.forEach(obj => {
345
- this.updateObject(obj, { zIndex: min });
346
- });
347
- this.rerender();
348
- }
349
- selectObjects(objects) {
350
- if (objects.length === 0) {
351
- return;
352
- }
353
- const selectionGroup = KritzelSelectionGroup.create(this);
354
- objects.forEach(obj => {
355
- obj.isSelected = false;
356
- selectionGroup.addOrRemove(obj);
357
- });
358
- selectionGroup.isSelected = true;
359
- if (objects.length === 1) {
360
- selectionGroup.rotation = selectionGroup.objects[0].rotation;
361
- }
362
- this.addSelectionGroup(selectionGroup);
363
- this.rerender();
364
- }
365
- selectAllObjectsInViewport() {
366
- const objectsInViewport = this._store.state.objects
367
- .filter(o => o.isInViewport())
368
- .filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KritzelSelectionBox) && !(o instanceof KritzelContextMenu));
369
- if (objectsInViewport.length > 0) {
370
- const selectionGroup = KritzelSelectionGroup.create(this);
371
- objectsInViewport.forEach(obj => {
372
- obj.isSelected = false;
373
- selectionGroup.addOrRemove(obj);
374
- });
375
- selectionGroup.isSelected = true;
376
- this._store.state.isSelecting = false;
377
- if (objectsInViewport.length === 1) {
378
- selectionGroup.rotation = selectionGroup.objects[0].rotation;
379
- }
380
- this.addSelectionGroup(selectionGroup);
381
- this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
382
- this.rerender();
383
- }
384
- }
385
- clearSelection() {
386
- this.removeSelectionGroup();
387
- this._store.state.objects.remove(o => o instanceof KritzelSelectionBox || o instanceof KritzelSelectionGroup);
388
- this._store.state.isSelecting = false;
389
- this._store.state.isResizeHandleSelected = false;
390
- this._store.state.isRotationHandleSelected = false;
391
- this.rerender();
392
- }
393
- resetActiveText() {
394
- const activeText = this._store.activeText;
395
- if (activeText) {
396
- if (activeText.isEmpty) {
397
- this.deleteObject(activeText.id);
398
- }
399
- else {
400
- activeText.save();
401
- }
402
- }
403
- }
404
- getObjectFromPointerEvent(event, selector = '.object') {
405
- const shadowRoot = this._store.state.host?.shadowRoot;
406
- if (!shadowRoot)
407
- return null;
408
- const clientX = event.clientX;
409
- const clientY = event.clientY;
410
- const elementAtPoint = shadowRoot.elementFromPoint(clientX, clientY);
411
- if (!elementAtPoint)
412
- return null;
413
- const selectedObject = elementAtPoint.closest(selector);
414
- if (selectedObject) {
415
- const foundObject = this._store.allObjects.find(object => selectedObject.id === object.id);
416
- const isHit = foundObject?.hitTest(clientX, clientY);
417
- return isHit ? foundObject : null;
418
- }
419
- return null;
420
- }
421
- getObjectsFromPointerEvent(event, selector = '.object') {
422
- const shadowRoot = this._store.state.host?.shadowRoot;
423
- if (!shadowRoot)
424
- return [];
425
- const clientX = event.clientX;
426
- const clientY = event.clientY;
427
- const elementsAtPoint = shadowRoot.elementsFromPoint(clientX, clientY);
428
- if (!elementsAtPoint || elementsAtPoint.length === 0)
429
- return [];
430
- const objectIds = new Set();
431
- elementsAtPoint.forEach(element => {
432
- const selectedObject = element.closest(selector);
433
- if (selectedObject && selectedObject.id) {
434
- objectIds.add(selectedObject.id);
435
- }
436
- });
437
- if (objectIds.size > 0) {
438
- return this._store.allObjects.filter(object => objectIds.has(object.id)).sort((a, b) => b.zIndex - a.zIndex);
439
- }
440
- return [];
441
- }
442
- getCanvasPoint(event) {
443
- if (!this._store.state.host) {
444
- return { x: 0, y: 0 };
445
- }
446
- const hostRect = this._store.state.host.getBoundingClientRect();
447
- const xRelativeToHost = event.clientX - hostRect.left;
448
- const yRelativeToHost = event.clientY - hostRect.top;
449
- const xWithoutTranslate = xRelativeToHost - this._store.state.translateX;
450
- const yWithoutTranslate = yRelativeToHost - this._store.state.translateY;
451
- const worldX = xWithoutTranslate / this._store.state.scale;
452
- const worldY = yWithoutTranslate / this._store.state.scale;
453
- return { x: worldX, y: worldY };
454
- }
455
- beforeWorkspaceChange() {
456
- this.resetActiveText();
457
- this.clearSelection();
458
- this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
459
- }
460
- }
461
- //# sourceMappingURL=core.class.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.class.js","sourceRoot":"","sources":["../../../src/classes/core/core.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelEngine } from '../../components/core/kritzel-engine/kritzel-engine';\r\nimport { KritzelContextMenu } from '../../components/ui/kritzel-context-menu/kritzel-context-menu';\r\nimport { DEFAULT_ENGINE_CONFIG } from '../../configs/default-engine-config';\r\nimport { ObjectHelper } from '../../helpers/object.helper';\r\nimport { KritzelBaseObject } from '../objects/base-object.class';\r\nimport { KritzelSelectionBox } from '../objects/selection-box.class';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelStore } from './store.class';\r\nimport { KritzelWorkspace } from './workspace.class';\r\nimport { KritzelObjectMap } from '../structures/object-map.structure';\r\nimport { KritzelSyncConfig } from '../../interfaces/sync-config.interface';\r\nimport { KritzelAppStateMap } from '../structures/app-state-map.structure';\r\n\r\nexport class KritzelCore {\r\n private readonly _kritzelEngine: KritzelEngine;\r\n private readonly _store: KritzelStore;\r\n private _syncConfig?: KritzelSyncConfig;\r\n private readonly _appStateMap: KritzelAppStateMap;\r\n\r\n get engine(): KritzelEngine {\r\n return this._kritzelEngine;\r\n }\r\n\r\n get store(): KritzelStore {\r\n return this._store;\r\n }\r\n\r\n get appStateMap(): KritzelAppStateMap {\r\n return this._appStateMap;\r\n }\r\n\r\n constructor(kritzelEngine: KritzelEngine) {\r\n this._kritzelEngine = kritzelEngine;\r\n this._store = new KritzelStore(DEFAULT_ENGINE_CONFIG);\r\n this._appStateMap = new KritzelAppStateMap();\r\n }\r\n\r\n setSyncConfig(config?: KritzelSyncConfig): void {\r\n this._syncConfig = config;\r\n }\r\n\r\n async initializeYjs(): Promise<void> {\r\n await this._appStateMap.initialize(this, this._syncConfig);\r\n }\r\n\r\n /**\r\n * Load all workspaces from app state map\r\n */\r\n private loadWorkspacesFromAppState(): KritzelWorkspace[] {\r\n return this._appStateMap.allWorkspaces();\r\n }\r\n\r\n /**\r\n * Save a workspace to app state map\r\n */\r\n private saveWorkspaceToAppState(workspace: KritzelWorkspace): void {\r\n if (this._appStateMap.has(workspace.id)) {\r\n this._appStateMap.update(workspace);\r\n } else {\r\n this._appStateMap.insert(workspace);\r\n }\r\n }\r\n\r\n /**\r\n * Delete a workspace from app state map\r\n */\r\n private deleteWorkspaceFromAppState(workspaceId: string): void {\r\n this._appStateMap.remove(w => w.id === workspaceId);\r\n }\r\n\r\n async initializeWorkspace(workspace?: KritzelWorkspace): Promise<void> {\r\n // Load all workspaces from app state map\r\n const workspaces = this.loadWorkspacesFromAppState();\r\n\r\n // Find most recently updated workspace or use provided/fallback\r\n const mostRecentWorkspace = workspaces.length > 0 ? [...workspaces].sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime())[0] : null;\r\n\r\n let activeWorkspace: KritzelWorkspace;\r\n\r\n if (workspace) {\r\n // Use provided workspace\r\n activeWorkspace = workspace;\r\n const existing = workspaces.find(w => w.id === workspace.id);\r\n if (!existing) {\r\n // New workspace, save it\r\n activeWorkspace._core = this;\r\n this.saveWorkspaceToAppState(activeWorkspace);\r\n }\r\n } else if (mostRecentWorkspace) {\r\n // Use most recent workspace\r\n activeWorkspace = mostRecentWorkspace;\r\n } else {\r\n // Create fallback workspace\r\n activeWorkspace = new KritzelWorkspace(ObjectHelper.generateUUID(), 'New Workspace');\r\n activeWorkspace._core = this;\r\n this.saveWorkspaceToAppState(activeWorkspace);\r\n }\r\n\r\n // Destroy old ObjectMap if switching workspaces\r\n if (this._store.state.objects && this._store.state.objects.isReady) {\r\n this._store.state.objects.destroy();\r\n }\r\n\r\n // Set active workspace\r\n this._store.state.activeWorkspace = activeWorkspace;\r\n this._store.state.workspaces = this.loadWorkspacesFromAppState();\r\n\r\n // Set viewport from workspace\r\n const viewport = activeWorkspace.viewport ?? { translateX: 0, translateY: 0, scale: 1 };\r\n this._store.state.translateX = viewport.translateX ?? 0;\r\n this._store.state.translateY = viewport.translateY ?? 0;\r\n this._store.state.scale = viewport.scale ?? 1;\r\n\r\n // Create new ObjectMap with its own Y.Doc for this workspace\r\n const objectsMap = new KritzelObjectMap();\r\n await objectsMap.initialize(this, activeWorkspace.id, this._syncConfig);\r\n this._store.state.objects = objectsMap;\r\n\r\n this.engine.emitObjectsChange();\r\n\r\n this.rerender();\r\n }\r\n\r\n rerender() {\r\n if (this._kritzelEngine) {\r\n this._kritzelEngine.forceUpdate++;\r\n }\r\n }\r\n\r\n findObjectById(id: string): KritzelBaseObject<any> | null {\r\n for (const object of this._store.allObjects) {\r\n if (object.id === id) {\r\n return object;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getWorkspaces(): KritzelWorkspace[] {\r\n return this.loadWorkspacesFromAppState();\r\n }\r\n\r\n createWorkspace(workspace: KritzelWorkspace): void {\r\n workspace._core = this;\r\n workspace.createdAt = new Date();\r\n workspace.updatedAt = new Date();\r\n this.saveWorkspaceToAppState(workspace);\r\n this._store.state.workspaces = this.loadWorkspacesFromAppState();\r\n }\r\n\r\n updateWorkspace(workspace: KritzelWorkspace): void {\r\n workspace.updatedAt = new Date();\r\n this.saveWorkspaceToAppState(workspace);\r\n\r\n const workspaces = this._store.state.workspaces;\r\n const index = workspaces.findIndex(w => w.id === workspace.id);\r\n\r\n if (index !== -1) {\r\n workspaces[index] = workspace;\r\n this._store.state.workspaces = workspaces;\r\n }\r\n }\r\n\r\n deleteWorkspace(workspace: KritzelWorkspace): void {\r\n // If deleting the active workspace, need to handle ObjectMap cleanup\r\n if (this._store.state.activeWorkspace?.id === workspace.id) {\r\n this._store.state.objects?.destroy();\r\n }\r\n\r\n this.deleteWorkspaceFromAppState(workspace.id);\r\n this._store.state.workspaces = this.loadWorkspacesFromAppState();\r\n\r\n // Also delete the workspace's IndexedDB database\r\n const dbName = `kritzel-workspace-${workspace.id}`;\r\n window.indexedDB.deleteDatabase(dbName);\r\n }\r\n\r\n updateWorkspaceViewport(translateX: number, translateY: number, scale: number): void {\r\n const activeWorkspace = this._store.state.activeWorkspace;\r\n if (!activeWorkspace) {\r\n return;\r\n }\r\n\r\n activeWorkspace.viewport = { translateX, translateY, scale };\r\n activeWorkspace.updatedAt = new Date();\r\n this.saveWorkspaceToAppState(activeWorkspace);\r\n }\r\n\r\n addObject(object: KritzelBaseObject<any>): void {\r\n this._store.state.objects.insert(object);\r\n }\r\n\r\n removeObject(object: KritzelBaseObject<any>): void {\r\n object.isMounted = false;\r\n this._store.state.objects.remove(o => o.id === object.id);\r\n }\r\n\r\n updateObject<T extends KritzelBaseObject<any>>(object: T, updatedProperties: Partial<T>): void {\r\n for (const key in updatedProperties) {\r\n if (updatedProperties.hasOwnProperty(key)) {\r\n object[key] = updatedProperties[key];\r\n }\r\n }\r\n\r\n this._store.state.objects.update(object);\r\n }\r\n\r\n addSelectionGroup(selectionGroup: KritzelSelectionGroup): void {\r\n this.removeSelectionGroup();\r\n this.removeSelectionBox();\r\n this._store.state.objects.insert(selectionGroup);\r\n }\r\n\r\n removeSelectionGroup(): void {\r\n const selectionGroup = this._store.selectionGroup;\r\n if (selectionGroup) {\r\n this._store.state.objects.remove(object => object.id === selectionGroup.id);\r\n }\r\n }\r\n\r\n removeSelectionBox(): void {\r\n const selectionBox = this._store.selectionBox;\r\n if (selectionBox) {\r\n this._store.state.objects.remove(object => object.id === selectionBox.id);\r\n }\r\n }\r\n\r\n deselectAllObjects(): void {\r\n this.removeSelectionGroup();\r\n this.rerender();\r\n }\r\n\r\n delete() {\r\n const selectionGroup = this._store.selectionGroup;\r\n if (!selectionGroup) {\r\n return;\r\n }\r\n\r\n selectionGroup.objects.forEach(obj => this.removeObject(obj));\r\n\r\n this.removeSelectionGroup();\r\n this.rerender();\r\n }\r\n\r\n undo(): void {\r\n this._store.state.objects?.undo();\r\n }\r\n\r\n redo(): void {\r\n this._store.state.objects?.redo();\r\n }\r\n\r\n deleteObject(id: string) {\r\n const object = this.findObjectById(id);\r\n if (object) {\r\n this.removeObject(object);\r\n this.rerender();\r\n }\r\n }\r\n\r\n copy() {\r\n const selectionGroup = this._store.selectionGroup;\r\n if (selectionGroup) {\r\n // Copy each object and store them in an array\r\n this._store.state.copiedObjects = selectionGroup.objects.sort((a, b) => a.zIndex - b.zIndex).map(obj => obj.copy() as KritzelBaseObject<any>);\r\n }\r\n }\r\n\r\n paste(x?: number, y?: number) {\r\n const copiedObjects = this._store.state.copiedObjects;\r\n if (!copiedObjects || copiedObjects.length === 0) {\r\n return;\r\n }\r\n\r\n const activeWorkspace = this._store.state.activeWorkspace;\r\n\r\n // Check if we're pasting from a different workspace\r\n const isDifferentWorkspace = copiedObjects.some(obj => obj.workspaceId !== activeWorkspace.id);\r\n\r\n // Calculate the bounding box of all copied objects\r\n const minX = Math.min(...copiedObjects.map(obj => obj.translateX));\r\n const minY = Math.min(...copiedObjects.map(obj => obj.translateY));\r\n\r\n // Determine the paste position\r\n let pasteX: number;\r\n let pasteY: number;\r\n\r\n if (x !== undefined && y !== undefined) {\r\n // Explicit position provided (e.g., right-click paste)\r\n pasteX = x;\r\n pasteY = y;\r\n } else if (isDifferentWorkspace) {\r\n // Pasting to different workspace without explicit position\r\n // Keep original position; will be centered by centerInViewport() later\r\n pasteX = minX;\r\n pasteY = minY;\r\n } else {\r\n // Same workspace paste: offset by 25 pixels from original position\r\n pasteX = minX + 25 / this._store.state.scale;\r\n pasteY = minY + 25 / this._store.state.scale;\r\n }\r\n\r\n // Calculate the offset to apply to all objects\r\n const offsetX = pasteX - minX;\r\n const offsetY = pasteY - minY;\r\n\r\n this.removeSelectionGroup();\r\n this.removeSelectionBox();\r\n\r\n // Create a new selection group for the pasted objects\r\n const selectionGroup = KritzelSelectionGroup.create(this);\r\n\r\n // First add all copied objects to the objectsMap with updated positions\r\n copiedObjects.forEach((obj, i) => {\r\n // Update workspace if pasting to a different workspace\r\n if (obj.workspaceId !== activeWorkspace.id) {\r\n obj.workspaceId = activeWorkspace.id;\r\n }\r\n\r\n // Update position\r\n obj.updatePosition(obj.translateX + offsetX, obj.translateY + offsetY);\r\n\r\n // Update z-index\r\n obj.zIndex = this._store.currentZIndex + i;\r\n\r\n // Add to objectsMap\r\n this.addObject(obj);\r\n\r\n // Add to selection group\r\n selectionGroup.addOrRemove(obj);\r\n });\r\n\r\n // Mark selection group as selected\r\n selectionGroup.isSelected = true;\r\n\r\n // Set rotation for single object\r\n if (copiedObjects.length === 1) {\r\n selectionGroup.rotation = copiedObjects[0].rotation;\r\n }\r\n\r\n // Add the selection group\r\n this.addSelectionGroup(selectionGroup);\r\n\r\n // Handle cross-workspace paste: center objects in viewport\r\n if (isDifferentWorkspace) {\r\n if (x !== undefined && y !== undefined) {\r\n // Position was explicitly provided, use it\r\n selectionGroup.updatePosition(x, y);\r\n } else {\r\n // Center the selection group in the viewport\r\n selectionGroup.centerInViewport();\r\n }\r\n // Fit the viewport to show the pasted objects\r\n this.engine.viewport.centerFitInViewport(selectionGroup);\r\n }\r\n\r\n this._store.state.isSelecting = false;\r\n\r\n // Update copiedObjects to the newly created objects for potential future pastes\r\n const newSelectionGroup = this._store.selectionGroup;\r\n if (newSelectionGroup) {\r\n this._store.state.copiedObjects = newSelectionGroup.objects.sort((a, b) => a.zIndex - b.zIndex).map(obj => obj.copy() as KritzelBaseObject<any>);\r\n }\r\n\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n\r\n this.engine.emitObjectsChange();\r\n \r\n this.rerender();\r\n }\r\n\r\n bringForward(object?: KritzelBaseObject<any>) {\r\n const selectionGroup = this._store.selectionGroup;\r\n const objects = object ? [object] : selectionGroup?.objects || [];\r\n const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);\r\n const max = allNonSelectionObjectsWithoutCurrent.length > 0 ? Math.max(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) + 1 : 0;\r\n\r\n objects.forEach(obj => {\r\n if (obj.zIndex !== max) {\r\n this.updateObject(obj, { zIndex: obj.zIndex + 1 });\r\n }\r\n });\r\n\r\n this.rerender();\r\n }\r\n\r\n sendBackward(object?: KritzelBaseObject<any>) {\r\n const selectionGroup = this._store.selectionGroup;\r\n const objects = object ? [object] : selectionGroup?.objects || [];\r\n const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);\r\n const min = allNonSelectionObjectsWithoutCurrent.length > 0 ? Math.min(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) - 1 : 0;\r\n\r\n objects.forEach(obj => {\r\n if (obj.zIndex !== min) {\r\n this.updateObject(obj, { zIndex: obj.zIndex - 1 });\r\n }\r\n });\r\n\r\n this.rerender();\r\n }\r\n\r\n bringToFront(object?: KritzelBaseObject<any>) {\r\n const selectionGroup = this._store.selectionGroup;\r\n const objects = object ? [object] : selectionGroup?.objects || [];\r\n const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);\r\n const max = Math.max(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) + 1;\r\n\r\n objects.forEach(obj => {\r\n this.updateObject(obj, { zIndex: max });\r\n });\r\n\r\n this.rerender();\r\n }\r\n\r\n sendToBack(object?: KritzelBaseObject<any>) {\r\n const selectionGroup = this._store.selectionGroup;\r\n const objects = object ? [object] : selectionGroup?.objects || [];\r\n const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);\r\n const min = Math.min(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) - 1;\r\n\r\n objects.forEach(obj => {\r\n this.updateObject(obj, { zIndex: min });\r\n });\r\n\r\n this.rerender();\r\n }\r\n\r\n selectObjects(objects: KritzelBaseObject<any>[]) {\r\n if (objects.length === 0) {\r\n return;\r\n }\r\n\r\n const selectionGroup = KritzelSelectionGroup.create(this);\r\n objects.forEach(obj => {\r\n obj.isSelected = false;\r\n selectionGroup.addOrRemove(obj);\r\n });\r\n\r\n selectionGroup.isSelected = true;\r\n\r\n if (objects.length === 1) {\r\n selectionGroup.rotation = selectionGroup.objects[0].rotation;\r\n }\r\n\r\n this.addSelectionGroup(selectionGroup);\r\n this.rerender();\r\n }\r\n\r\n selectAllObjectsInViewport() {\r\n const objectsInViewport = this._store.state.objects\r\n .filter(o => o.isInViewport())\r\n .filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KritzelSelectionBox) && !(o instanceof KritzelContextMenu));\r\n\r\n if (objectsInViewport.length > 0) {\r\n const selectionGroup = KritzelSelectionGroup.create(this);\r\n\r\n objectsInViewport.forEach(obj => {\r\n obj.isSelected = false;\r\n selectionGroup.addOrRemove(obj);\r\n });\r\n\r\n selectionGroup.isSelected = true;\r\n\r\n this._store.state.isSelecting = false;\r\n\r\n if (objectsInViewport.length === 1) {\r\n selectionGroup.rotation = selectionGroup.objects[0].rotation;\r\n }\r\n\r\n this.addSelectionGroup(selectionGroup);\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this.rerender();\r\n }\r\n }\r\n\r\n clearSelection() {\r\n this.removeSelectionGroup();\r\n\r\n this._store.state.objects.remove(o => o instanceof KritzelSelectionBox || o instanceof KritzelSelectionGroup);\r\n this._store.state.isSelecting = false;\r\n this._store.state.isResizeHandleSelected = false;\r\n this._store.state.isRotationHandleSelected = false;\r\n\r\n this.rerender();\r\n }\r\n\r\n resetActiveText() {\r\n const activeText = this._store.activeText;\r\n if (activeText) {\r\n if (activeText.isEmpty) {\r\n this.deleteObject(activeText.id);\r\n } else {\r\n activeText.save();\r\n }\r\n }\r\n }\r\n\r\n getObjectFromPointerEvent(event: PointerEvent, selector = '.object'): KritzelBaseObject<any> | null {\r\n const shadowRoot = this._store.state.host?.shadowRoot;\r\n if (!shadowRoot) return null;\r\n\r\n const clientX = event.clientX;\r\n const clientY = event.clientY;\r\n\r\n const elementAtPoint = shadowRoot.elementFromPoint(clientX, clientY);\r\n if (!elementAtPoint) return null;\r\n\r\n const selectedObject = elementAtPoint.closest(selector) as HTMLElement | null;\r\n\r\n if (selectedObject) {\r\n const foundObject = this._store.allObjects.find(object => selectedObject.id === object.id);\r\n const isHit = foundObject?.hitTest(clientX, clientY);\r\n return isHit ? foundObject : null;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getObjectsFromPointerEvent(event: PointerEvent, selector = '.object'): KritzelBaseObject<any>[] {\r\n const shadowRoot = this._store.state.host?.shadowRoot;\r\n if (!shadowRoot) return [];\r\n\r\n const clientX = event.clientX;\r\n const clientY = event.clientY;\r\n\r\n const elementsAtPoint = shadowRoot.elementsFromPoint(clientX, clientY);\r\n if (!elementsAtPoint || elementsAtPoint.length === 0) return [];\r\n\r\n const objectIds = new Set<string>();\r\n\r\n elementsAtPoint.forEach(element => {\r\n const selectedObject = element.closest(selector) as HTMLElement | null;\r\n if (selectedObject && selectedObject.id) {\r\n objectIds.add(selectedObject.id);\r\n }\r\n });\r\n\r\n if (objectIds.size > 0) {\r\n return this._store.allObjects.filter(object => objectIds.has(object.id)).sort((a, b) => b.zIndex - a.zIndex);\r\n }\r\n\r\n return [];\r\n }\r\n\r\n getCanvasPoint(event: PointerEvent): { x: number; y: number } {\r\n if (!this._store.state.host) {\r\n return { x: 0, y: 0 };\r\n }\r\n\r\n const hostRect = this._store.state.host.getBoundingClientRect();\r\n\r\n const xRelativeToHost = event.clientX - hostRect.left;\r\n const yRelativeToHost = event.clientY - hostRect.top;\r\n\r\n const xWithoutTranslate = xRelativeToHost - this._store.state.translateX;\r\n const yWithoutTranslate = yRelativeToHost - this._store.state.translateY;\r\n\r\n const worldX = xWithoutTranslate / this._store.state.scale;\r\n const worldY = yWithoutTranslate / this._store.state.scale;\r\n\r\n return { x: worldX, y: worldY };\r\n }\r\n\r\n beforeWorkspaceChange() {\r\n this.resetActiveText();\r\n this.clearSelection();\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n }\r\n}\r\n"]}