kritzel-stencil 0.0.156 → 0.0.158

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 (410) hide show
  1. package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
  2. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
  3. package/dist/cjs/default-text-tool.config-BySzvIox.js +31267 -0
  4. package/dist/cjs/default-text-tool.config-BySzvIox.js.map +1 -0
  5. package/dist/cjs/index-Cj__YTlG.js +1650 -0
  6. package/dist/cjs/index-Cj__YTlG.js.map +1 -0
  7. package/dist/cjs/index.cjs.js +1465 -0
  8. package/dist/cjs/index.cjs.js.map +1 -0
  9. package/dist/cjs/kritzel-brush-style.cjs.entry.js +32 -0
  10. package/dist/cjs/kritzel-brush-style.entry.cjs.js.map +1 -0
  11. package/dist/cjs/kritzel-color_22.cjs.entry.js +20974 -0
  12. package/dist/cjs/loader.cjs.js +14 -0
  13. package/dist/cjs/loader.cjs.js.map +1 -0
  14. package/dist/cjs/stencil.cjs.js +26 -0
  15. package/dist/cjs/stencil.cjs.js.map +1 -0
  16. package/dist/collection/classes/core/core.class.js +470 -0
  17. package/dist/collection/classes/core/core.class.js.map +1 -0
  18. package/dist/collection/classes/core/reviver.class.js +71 -0
  19. package/dist/collection/classes/core/reviver.class.js.map +1 -0
  20. package/dist/collection/classes/core/store.class.js +72 -0
  21. package/dist/collection/classes/core/store.class.js.map +1 -0
  22. package/dist/collection/classes/core/viewport.class.js +190 -0
  23. package/dist/collection/classes/core/viewport.class.js.map +1 -0
  24. package/dist/collection/classes/core/workspace.class.js +41 -0
  25. package/dist/collection/classes/core/workspace.class.js.map +1 -0
  26. package/dist/collection/classes/handlers/base.handler.js +8 -0
  27. package/dist/collection/classes/handlers/base.handler.js.map +1 -0
  28. package/dist/collection/classes/handlers/context-menu.handler.js +62 -0
  29. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -0
  30. package/dist/collection/classes/handlers/hover.handler.js +19 -0
  31. package/dist/collection/classes/handlers/hover.handler.js.map +1 -0
  32. package/dist/collection/classes/handlers/key.handler.js +58 -0
  33. package/dist/collection/classes/handlers/key.handler.js.map +1 -0
  34. package/dist/collection/classes/handlers/move.handler.js +149 -0
  35. package/dist/collection/classes/handlers/move.handler.js.map +1 -0
  36. package/dist/collection/classes/handlers/resize.handler.js +184 -0
  37. package/dist/collection/classes/handlers/resize.handler.js.map +1 -0
  38. package/dist/collection/classes/handlers/rotation.handler.js +116 -0
  39. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -0
  40. package/dist/collection/classes/handlers/selection.handler.js +246 -0
  41. package/dist/collection/classes/handlers/selection.handler.js.map +1 -0
  42. package/dist/collection/classes/objects/base-object.class.js +232 -0
  43. package/dist/collection/classes/objects/base-object.class.js.map +1 -0
  44. package/dist/collection/classes/objects/custom-element.class.js +62 -0
  45. package/dist/collection/classes/objects/custom-element.class.js.map +1 -0
  46. package/dist/collection/classes/objects/image.class.js +56 -0
  47. package/dist/collection/classes/objects/image.class.js.map +1 -0
  48. package/dist/collection/classes/objects/path.class.js +284 -0
  49. package/dist/collection/classes/objects/path.class.js.map +1 -0
  50. package/dist/collection/classes/objects/selection-box.class.js +19 -0
  51. package/dist/collection/classes/objects/selection-box.class.js.map +1 -0
  52. package/dist/collection/classes/objects/selection-group.class.js +226 -0
  53. package/dist/collection/classes/objects/selection-group.class.js.map +1 -0
  54. package/dist/collection/classes/objects/text.class.js +261 -0
  55. package/dist/collection/classes/objects/text.class.js.map +1 -0
  56. package/dist/collection/classes/providers/broadcast-sync-provider.class.js +93 -0
  57. package/dist/collection/classes/providers/broadcast-sync-provider.class.js.map +1 -0
  58. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js +232 -0
  59. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js.map +1 -0
  60. package/dist/collection/classes/providers/indexeddb-sync-provider.class.js +35 -0
  61. package/dist/collection/classes/providers/indexeddb-sync-provider.class.js.map +1 -0
  62. package/dist/collection/classes/providers/websocket-sync-provider.class.js +89 -0
  63. package/dist/collection/classes/providers/websocket-sync-provider.class.js.map +1 -0
  64. package/dist/{stencil/icon-registry.class-BtT8riKh.js → collection/classes/registries/icon-registry.class.js} +2 -6
  65. package/dist/collection/classes/registries/icon-registry.class.js.map +1 -0
  66. package/dist/collection/classes/registries/tool.registry.js +18 -0
  67. package/dist/collection/classes/registries/tool.registry.js.map +1 -0
  68. package/dist/collection/classes/structures/app-state-map.structure.js +189 -0
  69. package/dist/collection/classes/structures/app-state-map.structure.js.map +1 -0
  70. package/dist/collection/classes/structures/object-map.structure.js +328 -0
  71. package/dist/collection/classes/structures/object-map.structure.js.map +1 -0
  72. package/dist/collection/classes/structures/quadtree.structure.js +113 -0
  73. package/dist/collection/classes/structures/quadtree.structure.js.map +1 -0
  74. package/dist/collection/classes/tools/base-tool.class.js +38 -0
  75. package/dist/collection/classes/tools/base-tool.class.js.map +1 -0
  76. package/dist/collection/classes/tools/brush-tool.class.js +133 -0
  77. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -0
  78. package/dist/collection/classes/tools/eraser-tool.class.js +85 -0
  79. package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -0
  80. package/dist/collection/classes/tools/image-tool.class.js +83 -0
  81. package/dist/collection/classes/tools/image-tool.class.js.map +1 -0
  82. package/dist/collection/classes/tools/selection-tool.class.js +164 -0
  83. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -0
  84. package/dist/collection/classes/tools/text-tool.class.js +108 -0
  85. package/dist/collection/classes/tools/text-tool.class.js.map +1 -0
  86. package/dist/collection/collection-manifest.json +34 -0
  87. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -0
  88. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +153 -0
  89. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -0
  90. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +34 -0
  91. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +928 -0
  92. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -0
  93. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +73 -0
  94. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +1630 -0
  95. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -0
  96. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +44 -0
  97. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +98 -0
  98. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -0
  99. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +21 -0
  100. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +107 -0
  101. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -0
  102. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +46 -0
  103. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +145 -0
  104. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +1 -0
  105. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +53 -0
  106. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +218 -0
  107. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -0
  108. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -0
  109. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +90 -0
  110. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -0
  111. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -0
  112. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +114 -0
  113. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -0
  114. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -0
  115. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +110 -0
  116. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -0
  117. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +18 -0
  118. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +94 -0
  119. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +1 -0
  120. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +27 -0
  121. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +291 -0
  122. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -0
  123. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +145 -0
  124. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +280 -0
  125. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +1 -0
  126. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +310 -0
  127. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -0
  128. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +78 -0
  129. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +406 -0
  130. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -0
  131. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +28 -0
  132. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +89 -0
  133. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +1 -0
  134. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +17 -0
  135. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +251 -0
  136. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -0
  137. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +55 -0
  138. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +172 -0
  139. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -0
  140. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +19 -0
  141. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +135 -0
  142. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -0
  143. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.css +19 -0
  144. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +115 -0
  145. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +1 -0
  146. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +127 -0
  147. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +312 -0
  148. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -0
  149. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +44 -0
  150. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +111 -0
  151. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +1 -0
  152. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.css +5 -0
  153. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +255 -0
  154. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -0
  155. package/dist/collection/configs/default-brush-tool.config.js +60 -0
  156. package/dist/collection/configs/default-brush-tool.config.js.map +1 -0
  157. package/dist/collection/configs/default-engine-config.js +53 -0
  158. package/dist/collection/configs/default-engine-config.js.map +1 -0
  159. package/dist/collection/configs/default-sync.config.js +10 -0
  160. package/dist/collection/configs/default-sync.config.js.map +1 -0
  161. package/dist/collection/configs/default-text-tool.config.js +32 -0
  162. package/dist/collection/configs/default-text-tool.config.js.map +1 -0
  163. package/dist/collection/constants/core.constants.js +2 -0
  164. package/dist/collection/constants/core.constants.js.map +1 -0
  165. package/dist/collection/constants/engine.constants.js +3 -0
  166. package/dist/collection/constants/engine.constants.js.map +1 -0
  167. package/dist/collection/enums/event-button.enum.js +7 -0
  168. package/dist/collection/enums/event-button.enum.js.map +1 -0
  169. package/dist/collection/enums/handle-type.enum.js +8 -0
  170. package/dist/collection/enums/handle-type.enum.js.map +1 -0
  171. package/dist/collection/helpers/class.helper.js +6 -0
  172. package/dist/collection/helpers/class.helper.js.map +1 -0
  173. package/dist/collection/helpers/devices.helper.js +26 -0
  174. package/dist/collection/helpers/devices.helper.js.map +1 -0
  175. package/dist/collection/helpers/event.helper.js +51 -0
  176. package/dist/collection/helpers/event.helper.js.map +1 -0
  177. package/dist/collection/helpers/geometry.helper.js +53 -0
  178. package/dist/collection/helpers/geometry.helper.js.map +1 -0
  179. package/dist/collection/helpers/html.helper.js +64 -0
  180. package/dist/{stencil/html.helper-C6qB08BS.js.map → collection/helpers/html.helper.js.map} +1 -1
  181. package/dist/collection/helpers/keyboard.helper.js +49 -0
  182. package/dist/collection/helpers/keyboard.helper.js.map +1 -0
  183. package/dist/collection/helpers/math.helper.js +6 -0
  184. package/dist/collection/helpers/math.helper.js.map +1 -0
  185. package/dist/collection/helpers/object.helper.js +12 -0
  186. package/dist/collection/helpers/object.helper.js.map +1 -0
  187. package/dist/collection/index.js +30 -0
  188. package/dist/collection/index.js.map +1 -0
  189. package/dist/collection/interfaces/bounding-box.interface.js +2 -0
  190. package/dist/collection/interfaces/bounding-box.interface.js.map +1 -0
  191. package/dist/collection/interfaces/clonable.interface.js +2 -0
  192. package/dist/collection/interfaces/clonable.interface.js.map +1 -0
  193. package/dist/collection/interfaces/context-menu-item.interface.js +2 -0
  194. package/dist/collection/interfaces/context-menu-item.interface.js.map +1 -0
  195. package/dist/collection/interfaces/debug-info.interface.js +2 -0
  196. package/dist/collection/interfaces/debug-info.interface.js.map +1 -0
  197. package/dist/collection/interfaces/engine-state.interface.js +2 -0
  198. package/dist/collection/interfaces/engine-state.interface.js.map +1 -0
  199. package/dist/collection/interfaces/menu-item.interface.js +2 -0
  200. package/dist/collection/interfaces/menu-item.interface.js.map +1 -0
  201. package/dist/collection/interfaces/object.interface.js +2 -0
  202. package/dist/collection/interfaces/object.interface.js.map +1 -0
  203. package/dist/collection/interfaces/path-options.interface.js +2 -0
  204. package/dist/collection/interfaces/path-options.interface.js.map +1 -0
  205. package/dist/collection/interfaces/point.interface.js +2 -0
  206. package/dist/collection/interfaces/point.interface.js.map +1 -0
  207. package/dist/collection/interfaces/polygon.interface.js +2 -0
  208. package/dist/collection/interfaces/polygon.interface.js.map +1 -0
  209. package/dist/collection/interfaces/selection-state.interface.js +2 -0
  210. package/dist/collection/interfaces/selection-state.interface.js.map +1 -0
  211. package/dist/collection/interfaces/serializable.interface.js +2 -0
  212. package/dist/collection/interfaces/serializable.interface.js.map +1 -0
  213. package/dist/collection/interfaces/shortcut.interface.js +2 -0
  214. package/dist/collection/interfaces/shortcut.interface.js.map +1 -0
  215. package/dist/collection/interfaces/sync-config.interface.js +2 -0
  216. package/dist/collection/interfaces/sync-config.interface.js.map +1 -0
  217. package/dist/collection/interfaces/sync-provider.interface.js +2 -0
  218. package/dist/collection/interfaces/sync-provider.interface.js.map +1 -0
  219. package/dist/collection/interfaces/tool.interface.js +2 -0
  220. package/dist/collection/interfaces/tool.interface.js.map +1 -0
  221. package/dist/collection/interfaces/toolbar-control.interface.js +2 -0
  222. package/dist/collection/interfaces/toolbar-control.interface.js.map +1 -0
  223. package/dist/collection/interfaces/undo-state.interface.js +2 -0
  224. package/dist/collection/interfaces/undo-state.interface.js.map +1 -0
  225. package/dist/collection/types/deep-readonly.type.js +2 -0
  226. package/dist/collection/types/deep-readonly.type.js.map +1 -0
  227. package/dist/collection/types/state.types.js +2 -0
  228. package/dist/collection/types/state.types.js.map +1 -0
  229. package/dist/components/index.js +1477 -0
  230. package/dist/components/index.js.map +1 -0
  231. package/dist/components/kritzel-brush-style.js +67 -0
  232. package/dist/components/kritzel-brush-style.js.map +1 -0
  233. package/dist/components/kritzel-color-palette.js +9 -0
  234. package/dist/components/kritzel-color-palette.js.map +1 -0
  235. package/dist/components/kritzel-color.js +9 -0
  236. package/dist/components/kritzel-color.js.map +1 -0
  237. package/dist/components/kritzel-context-menu.js +9 -0
  238. package/dist/components/kritzel-context-menu.js.map +1 -0
  239. package/dist/components/kritzel-control-brush-config.js +9 -0
  240. package/dist/components/kritzel-control-brush-config.js.map +1 -0
  241. package/dist/components/kritzel-control-text-config.js +9 -0
  242. package/dist/components/kritzel-control-text-config.js.map +1 -0
  243. package/dist/components/kritzel-controls.js +9 -0
  244. package/dist/components/kritzel-controls.js.map +1 -0
  245. package/dist/components/kritzel-cursor-trail.js +9 -0
  246. package/dist/components/kritzel-cursor-trail.js.map +1 -0
  247. package/dist/components/kritzel-dropdown.js +9 -0
  248. package/dist/components/kritzel-dropdown.js.map +1 -0
  249. package/dist/components/kritzel-editor.js +516 -0
  250. package/dist/components/kritzel-editor.js.map +1 -0
  251. package/dist/components/kritzel-engine.js +9 -0
  252. package/dist/components/kritzel-engine.js.map +1 -0
  253. package/dist/components/kritzel-font-family.js +9 -0
  254. package/dist/components/kritzel-font-family.js.map +1 -0
  255. package/dist/components/kritzel-font-size.js +9 -0
  256. package/dist/components/kritzel-font-size.js.map +1 -0
  257. package/dist/components/kritzel-font.js +9 -0
  258. package/dist/components/kritzel-font.js.map +1 -0
  259. package/dist/components/kritzel-icon.js +9 -0
  260. package/dist/components/kritzel-icon.js.map +1 -0
  261. package/dist/components/kritzel-menu-item.js +9 -0
  262. package/dist/components/kritzel-menu-item.js.map +1 -0
  263. package/dist/components/kritzel-menu.js +9 -0
  264. package/dist/components/kritzel-menu.js.map +1 -0
  265. package/dist/components/kritzel-portal.js +9 -0
  266. package/dist/components/kritzel-portal.js.map +1 -0
  267. package/dist/components/kritzel-split-button.js +9 -0
  268. package/dist/components/kritzel-split-button.js.map +1 -0
  269. package/dist/components/kritzel-stroke-size.js +9 -0
  270. package/dist/components/kritzel-stroke-size.js.map +1 -0
  271. package/dist/components/kritzel-tooltip.js +9 -0
  272. package/dist/components/kritzel-tooltip.js.map +1 -0
  273. package/dist/components/kritzel-utility-panel.js +9 -0
  274. package/dist/components/kritzel-utility-panel.js.map +1 -0
  275. package/dist/components/kritzel-workspace-manager.js +9 -0
  276. package/dist/components/kritzel-workspace-manager.js.map +1 -0
  277. package/dist/{stencil/kritzel-controls.entry.js → components/p-1lIHoOlH.js} +115 -17
  278. package/dist/components/p-1lIHoOlH.js.map +1 -0
  279. package/dist/{stencil/object.helper-B0kd2rUI.js → components/p-B0kd2rUI.js} +2 -2
  280. package/dist/components/p-B0kd2rUI.js.map +1 -0
  281. package/dist/components/p-B4kxkVe-.js +55 -0
  282. package/dist/components/p-B4kxkVe-.js.map +1 -0
  283. package/dist/components/p-BQg4YML7.js +106 -0
  284. package/dist/components/p-BQg4YML7.js.map +1 -0
  285. package/dist/{stencil/kritzel-font-family.entry.js → components/p-BgznZoBH.js} +37 -9
  286. package/dist/components/p-BgznZoBH.js.map +1 -0
  287. package/dist/components/p-Bhtn9qay.js +98 -0
  288. package/dist/components/p-Bhtn9qay.js.map +1 -0
  289. package/dist/{stencil/kritzel-context-menu-GdU9xEKC.js → components/p-C2sWlNsJ.js} +41 -12
  290. package/dist/components/p-C2sWlNsJ.js.map +1 -0
  291. package/dist/{stencil/html.helper-C6qB08BS.js → components/p-C6qB08BS.js} +2 -2
  292. package/dist/components/p-C6qB08BS.js.map +1 -0
  293. package/dist/{stencil/text-tool.class-C0GbC5zQ.js → components/p-CBYBurdY.js} +25 -729
  294. package/dist/components/p-CBYBurdY.js.map +1 -0
  295. package/dist/{stencil/kritzel-dropdown.entry.js → components/p-CIXPLjCu.js} +39 -9
  296. package/dist/components/p-CIXPLjCu.js.map +1 -0
  297. package/dist/{stencil/kritzel-workspace-manager.entry.js → components/p-CK6no3mi.js} +68 -13
  298. package/dist/components/p-CK6no3mi.js.map +1 -0
  299. package/dist/{stencil/kritzel-cursor-trail.entry.js → components/p-CLt3HMl6.js} +33 -10
  300. package/dist/components/p-CLt3HMl6.js.map +1 -0
  301. package/dist/{stencil/kritzel-tooltip.entry.js → components/p-CTP479Lf.js} +39 -11
  302. package/dist/components/p-CTP479Lf.js.map +1 -0
  303. package/dist/{stencil/kritzel-menu-item.entry.js → components/p-CsA9M6me.js} +174 -16
  304. package/dist/components/p-CsA9M6me.js.map +1 -0
  305. package/dist/components/p-CwkUrTy1.js +1367 -0
  306. package/dist/components/p-CwkUrTy1.js.map +1 -0
  307. package/dist/{stencil/kritzel-color-palette.entry.js → components/p-D1uj4A4F.js} +39 -9
  308. package/dist/components/p-D1uj4A4F.js.map +1 -0
  309. package/dist/{stencil/kritzel-color.entry.js → components/p-D4yvhd1d.js} +30 -8
  310. package/dist/components/p-D4yvhd1d.js.map +1 -0
  311. package/dist/{stencil/kritzel-portal.entry.js → components/p-D5Wq4x4r.js} +37 -11
  312. package/dist/components/p-D5Wq4x4r.js.map +1 -0
  313. package/dist/{stencil/event-button.enum-D8W6LE-c.js → components/p-D8W6LE-c.js} +2 -2
  314. package/dist/components/p-D8W6LE-c.js.map +1 -0
  315. package/dist/{stencil/kritzel-utility-panel.entry.js → components/p-DAfkuR8U.js} +38 -11
  316. package/dist/components/p-DAfkuR8U.js.map +1 -0
  317. package/dist/components/p-DDmSxM5f.js +57 -0
  318. package/dist/{stencil/kritzel-font-size.entry.esm.js.map → components/p-DDmSxM5f.js.map} +1 -1
  319. package/dist/components/p-Ddh40W3x.js +103 -0
  320. package/dist/components/p-Ddh40W3x.js.map +1 -0
  321. package/dist/components/p-DjTEcPMZ.js +35610 -0
  322. package/dist/components/p-DjTEcPMZ.js.map +1 -0
  323. package/dist/{stencil/kritzel-split-button.entry.js → components/p-TdCTkEu0.js} +72 -18
  324. package/dist/components/p-TdCTkEu0.js.map +1 -0
  325. package/dist/{stencil/devices.helper-l10It7Nm.js → components/p-l10It7Nm.js} +2 -2
  326. package/dist/components/p-l10It7Nm.js.map +1 -0
  327. package/dist/{stencil/workspace.class-n789Y3S-.js → components/p-n789Y3S-.js} +2 -2
  328. package/dist/components/p-n789Y3S-.js.map +1 -0
  329. package/dist/components/p-uuRJU2R1.js +46 -0
  330. package/dist/components/p-uuRJU2R1.js.map +1 -0
  331. package/dist/esm/app-globals-DQuL1Twl.js +6 -0
  332. package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
  333. package/dist/esm/default-text-tool.config-2YFQA3SF.js +31208 -0
  334. package/dist/esm/default-text-tool.config-2YFQA3SF.js.map +1 -0
  335. package/dist/esm/index-SGde3HXB.js +1623 -0
  336. package/dist/esm/index-SGde3HXB.js.map +1 -0
  337. package/dist/esm/index.js +1449 -0
  338. package/dist/esm/index.js.map +1 -0
  339. package/dist/{stencil → esm}/kritzel-brush-style.entry.js +3 -3
  340. package/dist/esm/kritzel-brush-style.entry.js.map +1 -0
  341. package/dist/{stencil/kritzel-engine.entry.js → esm/kritzel-color_22.entry.js} +1805 -72
  342. package/dist/esm/loader.js +12 -0
  343. package/dist/esm/loader.js.map +1 -0
  344. package/dist/esm/stencil.js +22 -0
  345. package/dist/esm/stencil.js.map +1 -0
  346. package/dist/index.cjs.js +1 -0
  347. package/dist/index.js +1 -0
  348. package/dist/stencil/index.esm.js +2 -18
  349. package/dist/stencil/index.esm.js.map +1 -1
  350. package/dist/stencil/loader.esm.js.map +1 -1
  351. package/dist/stencil/p-14102a0c.entry.js +10 -0
  352. package/dist/stencil/p-14102a0c.entry.js.map +1 -0
  353. package/dist/stencil/p-2YFQA3SF.js +2 -0
  354. package/dist/stencil/p-2YFQA3SF.js.map +1 -0
  355. package/dist/stencil/p-DQuL1Twl.js +2 -0
  356. package/dist/stencil/p-DQuL1Twl.js.map +1 -0
  357. package/dist/stencil/p-SGde3HXB.js +3 -0
  358. package/dist/stencil/p-SGde3HXB.js.map +1 -0
  359. package/dist/stencil/p-d702c5af.entry.js +2 -0
  360. package/dist/stencil/p-d702c5af.entry.js.map +1 -0
  361. package/dist/stencil/stencil.esm.js +2 -48
  362. package/dist/stencil/stencil.esm.js.map +1 -1
  363. package/package.json +1 -1
  364. package/dist/stencil/default-text-tool.config-DKpRP4XR.js +0 -1441
  365. package/dist/stencil/default-text-tool.config-DKpRP4XR.js.map +0 -1
  366. package/dist/stencil/devices.helper-l10It7Nm.js.map +0 -1
  367. package/dist/stencil/engine.constants-DsjjAmnl.js +0 -7
  368. package/dist/stencil/engine.constants-DsjjAmnl.js.map +0 -1
  369. package/dist/stencil/event-button.enum-D8W6LE-c.js.map +0 -1
  370. package/dist/stencil/icon-registry.class-BtT8riKh.js.map +0 -1
  371. package/dist/stencil/index-DniO_INI.js +0 -4395
  372. package/dist/stencil/index-DniO_INI.js.map +0 -1
  373. package/dist/stencil/kritzel-color-palette.entry.esm.js.map +0 -1
  374. package/dist/stencil/kritzel-color.entry.esm.js.map +0 -1
  375. package/dist/stencil/kritzel-context-menu-BYgOEy-i.js +0 -66
  376. package/dist/stencil/kritzel-context-menu-BYgOEy-i.js.map +0 -1
  377. package/dist/stencil/kritzel-context-menu-GdU9xEKC.js.map +0 -1
  378. package/dist/stencil/kritzel-context-menu.entry.esm.js.map +0 -1
  379. package/dist/stencil/kritzel-context-menu.entry.js +0 -3
  380. package/dist/stencil/kritzel-control-brush-config.entry.esm.js.map +0 -1
  381. package/dist/stencil/kritzel-control-brush-config.entry.js +0 -54
  382. package/dist/stencil/kritzel-control-text-config.entry.esm.js.map +0 -1
  383. package/dist/stencil/kritzel-control-text-config.entry.js +0 -42
  384. package/dist/stencil/kritzel-controls.entry.esm.js.map +0 -1
  385. package/dist/stencil/kritzel-cursor-trail.entry.esm.js.map +0 -1
  386. package/dist/stencil/kritzel-dropdown.entry.esm.js.map +0 -1
  387. package/dist/stencil/kritzel-editor.entry.esm.js.map +0 -1
  388. package/dist/stencil/kritzel-editor.entry.js +0 -248
  389. package/dist/stencil/kritzel-engine.entry.esm.js.map +0 -1
  390. package/dist/stencil/kritzel-font-family.entry.esm.js.map +0 -1
  391. package/dist/stencil/kritzel-font-size.entry.js +0 -28
  392. package/dist/stencil/kritzel-font.entry.esm.js.map +0 -1
  393. package/dist/stencil/kritzel-font.entry.js +0 -23
  394. package/dist/stencil/kritzel-icon.entry.esm.js.map +0 -1
  395. package/dist/stencil/kritzel-icon.entry.js +0 -29
  396. package/dist/stencil/kritzel-menu-item.entry.esm.js.map +0 -1
  397. package/dist/stencil/kritzel-menu.entry.esm.js.map +0 -1
  398. package/dist/stencil/kritzel-menu.entry.js +0 -72
  399. package/dist/stencil/kritzel-portal.entry.esm.js.map +0 -1
  400. package/dist/stencil/kritzel-split-button.entry.esm.js.map +0 -1
  401. package/dist/stencil/kritzel-stroke-size.entry.esm.js.map +0 -1
  402. package/dist/stencil/kritzel-stroke-size.entry.js +0 -27
  403. package/dist/stencil/kritzel-tooltip.entry.esm.js.map +0 -1
  404. package/dist/stencil/kritzel-utility-panel.entry.esm.js.map +0 -1
  405. package/dist/stencil/kritzel-workspace-manager.entry.esm.js.map +0 -1
  406. package/dist/stencil/object.helper-B0kd2rUI.js.map +0 -1
  407. package/dist/stencil/sync-config.interface-lKfyG1EN.js +0 -19839
  408. package/dist/stencil/sync-config.interface-lKfyG1EN.js.map +0 -1
  409. package/dist/stencil/text-tool.class-C0GbC5zQ.js.map +0 -1
  410. package/dist/stencil/workspace.class-n789Y3S-.js.map +0 -1
@@ -0,0 +1,14 @@
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
@@ -0,0 +1 @@
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;;;;;"}
@@ -0,0 +1,26 @@
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
@@ -0,0 +1 @@
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]}
@@ -0,0 +1,470 @@
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 viewportBounds = {
367
+ x: -this._store.state.translateX / this._store.state.scale,
368
+ y: -this._store.state.translateY / this._store.state.scale,
369
+ z: this._store.state.scale,
370
+ width: this._store.state.viewportWidth / this._store.state.scale,
371
+ height: this._store.state.viewportHeight / this._store.state.scale,
372
+ depth: 100,
373
+ };
374
+ const objectsInViewport = this._store.state.objects
375
+ .query(viewportBounds)
376
+ .filter(o => o.isInViewport())
377
+ .filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KritzelSelectionBox) && !(o instanceof KritzelContextMenu));
378
+ if (objectsInViewport.length > 0) {
379
+ const selectionGroup = KritzelSelectionGroup.create(this);
380
+ objectsInViewport.forEach(obj => {
381
+ obj.isSelected = false;
382
+ selectionGroup.addOrRemove(obj);
383
+ });
384
+ selectionGroup.isSelected = true;
385
+ this._store.state.isSelecting = false;
386
+ if (objectsInViewport.length === 1) {
387
+ selectionGroup.rotation = selectionGroup.objects[0].rotation;
388
+ }
389
+ this.addSelectionGroup(selectionGroup);
390
+ this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
391
+ this.rerender();
392
+ }
393
+ }
394
+ clearSelection() {
395
+ this.removeSelectionGroup();
396
+ this._store.state.objects.remove(o => o instanceof KritzelSelectionBox || o instanceof KritzelSelectionGroup);
397
+ this._store.state.isSelecting = false;
398
+ this._store.state.isResizeHandleSelected = false;
399
+ this._store.state.isRotationHandleSelected = false;
400
+ this.rerender();
401
+ }
402
+ resetActiveText() {
403
+ const activeText = this._store.activeText;
404
+ if (activeText) {
405
+ if (activeText.isEmpty) {
406
+ this.deleteObject(activeText.id);
407
+ }
408
+ else {
409
+ activeText.save();
410
+ }
411
+ }
412
+ }
413
+ getObjectFromPointerEvent(event, selector = '.object') {
414
+ const shadowRoot = this._store.state.host?.shadowRoot;
415
+ if (!shadowRoot)
416
+ return null;
417
+ const clientX = event.clientX;
418
+ const clientY = event.clientY;
419
+ const elementAtPoint = shadowRoot.elementFromPoint(clientX, clientY);
420
+ if (!elementAtPoint)
421
+ return null;
422
+ const selectedObject = elementAtPoint.closest(selector);
423
+ if (selectedObject) {
424
+ const foundObject = this._store.allObjects.find(object => selectedObject.id === object.id);
425
+ const isHit = foundObject?.hitTest(clientX, clientY);
426
+ return isHit ? foundObject : null;
427
+ }
428
+ return null;
429
+ }
430
+ getObjectsFromPointerEvent(event, selector = '.object') {
431
+ const shadowRoot = this._store.state.host?.shadowRoot;
432
+ if (!shadowRoot)
433
+ return [];
434
+ const clientX = event.clientX;
435
+ const clientY = event.clientY;
436
+ const elementsAtPoint = shadowRoot.elementsFromPoint(clientX, clientY);
437
+ if (!elementsAtPoint || elementsAtPoint.length === 0)
438
+ return [];
439
+ const objectIds = new Set();
440
+ elementsAtPoint.forEach(element => {
441
+ const selectedObject = element.closest(selector);
442
+ if (selectedObject && selectedObject.id) {
443
+ objectIds.add(selectedObject.id);
444
+ }
445
+ });
446
+ if (objectIds.size > 0) {
447
+ return this._store.allObjects.filter(object => objectIds.has(object.id)).sort((a, b) => b.zIndex - a.zIndex);
448
+ }
449
+ return [];
450
+ }
451
+ getCanvasPoint(event) {
452
+ if (!this._store.state.host) {
453
+ return { x: 0, y: 0 };
454
+ }
455
+ const hostRect = this._store.state.host.getBoundingClientRect();
456
+ const xRelativeToHost = event.clientX - hostRect.left;
457
+ const yRelativeToHost = event.clientY - hostRect.top;
458
+ const xWithoutTranslate = xRelativeToHost - this._store.state.translateX;
459
+ const yWithoutTranslate = yRelativeToHost - this._store.state.translateY;
460
+ const worldX = xWithoutTranslate / this._store.state.scale;
461
+ const worldY = yWithoutTranslate / this._store.state.scale;
462
+ return { x: worldX, y: worldY };
463
+ }
464
+ beforeWorkspaceChange() {
465
+ this.resetActiveText();
466
+ this.clearSelection();
467
+ this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
468
+ }
469
+ }
470
+ //# sourceMappingURL=core.class.js.map
@@ -0,0 +1 @@
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 viewportBounds = {\r\n x: -this._store.state.translateX / this._store.state.scale,\r\n y: -this._store.state.translateY / this._store.state.scale,\r\n z: this._store.state.scale,\r\n width: this._store.state.viewportWidth / this._store.state.scale,\r\n height: this._store.state.viewportHeight / this._store.state.scale,\r\n depth: 100,\r\n };\r\n\r\n const objectsInViewport = this._store.state.objects\r\n .query(viewportBounds)\r\n .filter(o => o.isInViewport())\r\n .filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KritzelSelectionBox) && !(o instanceof KritzelContextMenu));\r\n\r\n if (objectsInViewport.length > 0) {\r\n const selectionGroup = KritzelSelectionGroup.create(this);\r\n\r\n objectsInViewport.forEach(obj => {\r\n obj.isSelected = false;\r\n selectionGroup.addOrRemove(obj);\r\n });\r\n\r\n selectionGroup.isSelected = true;\r\n\r\n this._store.state.isSelecting = false;\r\n\r\n if (objectsInViewport.length === 1) {\r\n selectionGroup.rotation = selectionGroup.objects[0].rotation;\r\n }\r\n\r\n this.addSelectionGroup(selectionGroup);\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this.rerender();\r\n }\r\n }\r\n\r\n clearSelection() {\r\n this.removeSelectionGroup();\r\n\r\n this._store.state.objects.remove(o => o instanceof KritzelSelectionBox || o instanceof KritzelSelectionGroup);\r\n this._store.state.isSelecting = false;\r\n this._store.state.isResizeHandleSelected = false;\r\n this._store.state.isRotationHandleSelected = false;\r\n\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"]}