kritzel-stencil 0.0.130 → 0.0.132

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 (388) hide show
  1. package/dist/cjs/{index-CUSIflVf.js → index-nzUNdMPh.js} +47 -17
  2. package/dist/cjs/index-nzUNdMPh.js.map +1 -0
  3. package/dist/cjs/{index-CfXjPLHb.js → index-ouFX0OVi.js} +891 -802
  4. package/dist/cjs/index-ouFX0OVi.js.map +1 -0
  5. package/dist/cjs/index.cjs.js +2 -1
  6. package/dist/cjs/index.cjs.js.map +1 -1
  7. package/dist/cjs/kritzel-brush-style.cjs.entry.js +32 -0
  8. package/dist/cjs/kritzel-brush-style.entry.cjs.js.map +1 -0
  9. package/dist/cjs/{kritzel-brush-style_23.cjs.entry.js → kritzel-color_22.cjs.entry.js} +1539 -1325
  10. package/dist/cjs/loader.cjs.js +2 -2
  11. package/dist/cjs/stencil.cjs.js +3 -3
  12. package/dist/cjs/stencil.cjs.js.map +1 -1
  13. package/dist/collection/classes/commands/add-object.command.js +7 -7
  14. package/dist/collection/classes/commands/add-object.command.js.map +1 -1
  15. package/dist/collection/classes/commands/add-selection-group.command.js +10 -9
  16. package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -1
  17. package/dist/collection/classes/commands/base.command.js +6 -4
  18. package/dist/collection/classes/commands/base.command.js.map +1 -1
  19. package/dist/collection/classes/commands/batch.command.js +3 -2
  20. package/dist/collection/classes/commands/batch.command.js.map +1 -1
  21. package/dist/collection/classes/commands/move-selection-group.command.js +13 -7
  22. package/dist/collection/classes/commands/move-selection-group.command.js.map +1 -1
  23. package/dist/collection/classes/commands/remove-object.command.js +9 -9
  24. package/dist/collection/classes/commands/remove-object.command.js.map +1 -1
  25. package/dist/collection/classes/commands/remove-selection-group.command.js +8 -7
  26. package/dist/collection/classes/commands/remove-selection-group.command.js.map +1 -1
  27. package/dist/collection/classes/commands/resize-selection-group.command.js +10 -7
  28. package/dist/collection/classes/commands/resize-selection-group.command.js.map +1 -1
  29. package/dist/collection/classes/commands/rotate-selection-group.command.js +15 -12
  30. package/dist/collection/classes/commands/rotate-selection-group.command.js.map +1 -1
  31. package/dist/collection/classes/commands/update-object.command.js +7 -5
  32. package/dist/collection/classes/commands/update-object.command.js.map +1 -1
  33. package/dist/collection/classes/commands/update-viewport.command.js +13 -11
  34. package/dist/collection/classes/commands/update-viewport.command.js.map +1 -1
  35. package/dist/collection/classes/{store.class.js → core/core.class.js} +123 -147
  36. package/dist/collection/classes/core/core.class.js.map +1 -0
  37. package/dist/collection/classes/{database.class.js → core/database.class.js} +34 -25
  38. package/dist/collection/classes/core/database.class.js.map +1 -0
  39. package/dist/collection/classes/core/history.class.js +88 -0
  40. package/dist/collection/classes/core/history.class.js.map +1 -0
  41. package/dist/collection/classes/{reviver.class.js → core/reviver.class.js} +27 -22
  42. package/dist/collection/classes/core/reviver.class.js.map +1 -0
  43. package/dist/collection/classes/core/store.class.js +51 -0
  44. package/dist/collection/classes/core/store.class.js.map +1 -0
  45. package/dist/collection/classes/core/viewport.class.js +165 -0
  46. package/dist/collection/classes/core/viewport.class.js.map +1 -0
  47. package/dist/collection/classes/core/workspace.class.js +42 -0
  48. package/dist/collection/classes/core/workspace.class.js.map +1 -0
  49. package/dist/collection/classes/handlers/base.handler.js +4 -3
  50. package/dist/collection/classes/handlers/base.handler.js.map +1 -1
  51. package/dist/collection/classes/handlers/context-menu.handler.js +26 -21
  52. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
  53. package/dist/collection/classes/handlers/hover.handler.js +5 -5
  54. package/dist/collection/classes/handlers/hover.handler.js.map +1 -1
  55. package/dist/collection/classes/handlers/key.handler.js +38 -44
  56. package/dist/collection/classes/handlers/key.handler.js.map +1 -1
  57. package/dist/collection/classes/handlers/move.handler.js +40 -35
  58. package/dist/collection/classes/handlers/move.handler.js.map +1 -1
  59. package/dist/collection/classes/handlers/resize.handler.js +57 -60
  60. package/dist/collection/classes/handlers/resize.handler.js.map +1 -1
  61. package/dist/collection/classes/handlers/rotation.handler.js +55 -57
  62. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
  63. package/dist/collection/classes/handlers/selection.handler.js +78 -75
  64. package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
  65. package/dist/collection/classes/objects/base-object.class.js +49 -31
  66. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  67. package/dist/collection/classes/objects/custom-element.class.js +6 -5
  68. package/dist/collection/classes/objects/custom-element.class.js.map +1 -1
  69. package/dist/collection/classes/objects/image.class.js +17 -17
  70. package/dist/collection/classes/objects/image.class.js.map +1 -1
  71. package/dist/collection/classes/objects/path.class.js +36 -34
  72. package/dist/collection/classes/objects/path.class.js.map +1 -1
  73. package/dist/collection/classes/objects/selection-box.class.js +6 -9
  74. package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
  75. package/dist/collection/classes/objects/selection-group.class.js +23 -22
  76. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  77. package/dist/collection/classes/objects/text.class.js +23 -23
  78. package/dist/collection/classes/objects/text.class.js.map +1 -1
  79. package/dist/collection/classes/registries/icon-registry.class.js +1 -1
  80. package/dist/collection/classes/registries/icon-registry.class.js.map +1 -1
  81. package/dist/collection/classes/registries/tool.registry.js +3 -3
  82. package/dist/collection/classes/registries/tool.registry.js.map +1 -1
  83. package/dist/collection/classes/structures/circular-buffer.structure.js +5 -3
  84. package/dist/collection/classes/structures/circular-buffer.structure.js.map +1 -1
  85. package/dist/collection/classes/structures/object-map.structure.js +1 -0
  86. package/dist/collection/classes/structures/object-map.structure.js.map +1 -1
  87. package/dist/collection/classes/tools/base-tool.class.js +13 -6
  88. package/dist/collection/classes/tools/base-tool.class.js.map +1 -1
  89. package/dist/collection/classes/tools/brush-tool.class.js +64 -60
  90. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -1
  91. package/dist/collection/classes/tools/eraser-tool.class.js +27 -28
  92. package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -1
  93. package/dist/collection/classes/tools/image-tool.class.js +14 -15
  94. package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
  95. package/dist/collection/classes/tools/selection-tool.class.js +48 -43
  96. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
  97. package/dist/collection/classes/tools/text-tool.class.js +57 -58
  98. package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
  99. package/dist/collection/collection-manifest.json +1 -1
  100. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +30 -30
  101. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -1
  102. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +7 -9
  103. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +267 -93
  104. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  105. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +319 -327
  106. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  107. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +7 -8
  108. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -1
  109. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +4 -5
  110. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -1
  111. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +5 -0
  112. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +8 -9
  113. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +1 -1
  114. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +53 -49
  115. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -1
  116. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +4 -6
  117. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -1
  118. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +18 -18
  119. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -1
  120. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +5 -6
  121. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -1
  122. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +1 -0
  123. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +3 -3
  124. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +1 -1
  125. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +6 -2
  126. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +36 -30
  127. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -1
  128. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +25 -7
  129. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +61 -40
  130. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +1 -1
  131. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +22 -61
  132. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -1
  133. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +16 -20
  134. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +104 -53
  135. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -1
  136. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +4 -0
  137. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +4 -5
  138. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +1 -1
  139. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +85 -14
  140. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -1
  141. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +50 -16
  142. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -1
  143. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +4 -0
  144. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +7 -7
  145. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -1
  146. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +5 -5
  147. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +1 -1
  148. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +12 -1
  149. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +41 -32
  150. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -1
  151. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +5 -0
  152. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +4 -1
  153. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +1 -1
  154. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +40 -28
  155. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -1
  156. package/dist/collection/configs/default-engine-state.js +0 -1
  157. package/dist/collection/configs/default-engine-state.js.map +1 -1
  158. package/dist/collection/helpers/devices.helper.js +20 -0
  159. package/dist/collection/helpers/devices.helper.js.map +1 -1
  160. package/dist/collection/helpers/event.helper.js +2 -6
  161. package/dist/collection/helpers/event.helper.js.map +1 -1
  162. package/dist/collection/helpers/html.helper.js +30 -2
  163. package/dist/collection/helpers/html.helper.js.map +1 -1
  164. package/dist/collection/helpers/object.helper.js +2 -14
  165. package/dist/collection/helpers/object.helper.js.map +1 -1
  166. package/dist/collection/index.js +1 -0
  167. package/dist/collection/index.js.map +1 -1
  168. package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
  169. package/dist/collection/interfaces/serializable.interface.js.map +1 -1
  170. package/dist/collection/types/deep-readonly.type.js +2 -0
  171. package/dist/collection/types/deep-readonly.type.js.map +1 -0
  172. package/dist/components/index.js +4 -3
  173. package/dist/components/index.js.map +1 -1
  174. package/dist/components/kritzel-brush-style.js +59 -1
  175. package/dist/components/kritzel-brush-style.js.map +1 -1
  176. package/dist/components/kritzel-color-palette.js +1 -1
  177. package/dist/components/kritzel-color.js +1 -1
  178. package/dist/components/kritzel-context-menu.js +1 -1
  179. package/dist/components/kritzel-control-brush-config.js +1 -1
  180. package/dist/components/kritzel-control-text-config.js +1 -1
  181. package/dist/components/kritzel-controls.js +1 -1
  182. package/dist/components/kritzel-cursor-trail.js +1 -1
  183. package/dist/components/kritzel-dropdown.js +1 -1
  184. package/dist/components/kritzel-editor.js +172 -124
  185. package/dist/components/kritzel-editor.js.map +1 -1
  186. package/dist/components/kritzel-engine.js +1 -1
  187. package/dist/components/kritzel-font-family.js +1 -1
  188. package/dist/components/kritzel-font-size.js +1 -1
  189. package/dist/components/kritzel-font.js +1 -1
  190. package/dist/components/kritzel-icon.js +1 -1
  191. package/dist/components/kritzel-menu-item.js +1 -1
  192. package/dist/components/kritzel-menu.js +1 -1
  193. package/dist/components/kritzel-portal.js +1 -1
  194. package/dist/components/kritzel-split-button.js +1 -1
  195. package/dist/components/kritzel-stroke-size.js +1 -1
  196. package/dist/components/kritzel-tooltip.js +1 -1
  197. package/dist/components/kritzel-utility-panel.js +1 -1
  198. package/dist/components/kritzel-workspace-manager.js +1 -1
  199. package/dist/components/{p-BGccckxP.js → p-0iJh9Z6m.js} +9 -8
  200. package/dist/components/p-0iJh9Z6m.js.map +1 -0
  201. package/dist/components/{p-C9-70hiF.js → p-B3VQubt_.js} +268 -236
  202. package/dist/components/p-B3VQubt_.js.map +1 -0
  203. package/dist/components/{p-5CJxFNEE.js → p-B7kZ1_RH.js} +7 -6
  204. package/dist/components/p-B7kZ1_RH.js.map +1 -0
  205. package/dist/components/{p-Cb1IUD_g.js → p-B7w19kIk.js} +17 -27
  206. package/dist/components/p-B7w19kIk.js.map +1 -0
  207. package/dist/components/{p-BU2q3PRS.js → p-BGdsAz54.js} +31 -19
  208. package/dist/components/p-BGdsAz54.js.map +1 -0
  209. package/dist/components/{p-BZ-j_4CK.js → p-BM9IjvnD.js} +7 -7
  210. package/dist/components/p-BM9IjvnD.js.map +1 -0
  211. package/dist/components/{p-26poIWa_.js → p-BPsQrpzN.js} +47 -18
  212. package/dist/components/p-BPsQrpzN.js.map +1 -0
  213. package/dist/components/{p-BqrTPNyu.js → p-BYanlgdq.js} +41 -15
  214. package/dist/components/p-BYanlgdq.js.map +1 -0
  215. package/dist/components/{p-D_Uh-xv_.js → p-BiCgeOiJ.js} +60 -56
  216. package/dist/components/p-BiCgeOiJ.js.map +1 -0
  217. package/dist/components/{p-BcQWRzsB.js → p-C1-nvBx9.js} +42 -29
  218. package/dist/components/p-C1-nvBx9.js.map +1 -0
  219. package/dist/components/p-C6qB08BS.js +68 -0
  220. package/dist/components/p-C6qB08BS.js.map +1 -0
  221. package/dist/components/{p-jpGLgpoq.js → p-CTvJDYFQ.js} +26 -64
  222. package/dist/components/p-CTvJDYFQ.js.map +1 -0
  223. package/dist/components/{p-BAPUTr3K.js → p-CsyM5q2M.js} +13 -12
  224. package/dist/components/p-CsyM5q2M.js.map +1 -0
  225. package/dist/components/p-CvmWmUK9.js +149 -0
  226. package/dist/components/p-CvmWmUK9.js.map +1 -0
  227. package/dist/components/{p-fyfT6A5K.js → p-DCx3703u.js} +9 -6
  228. package/dist/components/p-DCx3703u.js.map +1 -0
  229. package/dist/components/{p-BvlGgLAQ.js → p-DFO-6kuA.js} +57 -51
  230. package/dist/components/p-DFO-6kuA.js.map +1 -0
  231. package/dist/components/p-D_907-Wd.js +267 -0
  232. package/dist/components/p-D_907-Wd.js.map +1 -0
  233. package/dist/components/{p-jGaWxggY.js → p-Davd1R_4.js} +1278 -1227
  234. package/dist/components/p-Davd1R_4.js.map +1 -0
  235. package/dist/components/{p-DtmZW6eP.js → p-Db3kxVe2.js} +27 -25
  236. package/dist/components/p-Db3kxVe2.js.map +1 -0
  237. package/dist/components/{p-_ntxNi8v.js → p-Ddlbt3Bj.js} +22 -20
  238. package/dist/components/p-Ddlbt3Bj.js.map +1 -0
  239. package/dist/components/{p-Crni2OI4.js → p-DjU7p3od.js} +15 -13
  240. package/dist/components/p-DjU7p3od.js.map +1 -0
  241. package/dist/components/p-EXPChOF6.js +30 -0
  242. package/dist/components/p-EXPChOF6.js.map +1 -0
  243. package/dist/components/p-YqK8ch2R.js +46 -0
  244. package/dist/components/p-YqK8ch2R.js.map +1 -0
  245. package/dist/components/p-l10It7Nm.js +30 -0
  246. package/dist/components/p-l10It7Nm.js.map +1 -0
  247. package/dist/components/{p-BLmFBe2a.js → p-sq9jgfX0.js} +8 -6
  248. package/dist/components/p-sq9jgfX0.js.map +1 -0
  249. package/dist/components/{p-BcQTDgzV.js → p-sreNwi0N.js} +9 -8
  250. package/dist/components/p-sreNwi0N.js.map +1 -0
  251. package/dist/esm/{index-DqqxAoZI.js → index-C_uHp-ur.js} +891 -803
  252. package/dist/esm/index-C_uHp-ur.js.map +1 -0
  253. package/dist/esm/{index-NiIEUDzj.js → index-oCOlsFCN.js} +47 -17
  254. package/dist/esm/index-oCOlsFCN.js.map +1 -0
  255. package/dist/esm/index.js +1 -1
  256. package/dist/esm/kritzel-brush-style.entry.js +30 -0
  257. package/dist/esm/kritzel-brush-style.entry.js.map +1 -0
  258. package/dist/esm/{kritzel-brush-style_23.entry.js → kritzel-color_22.entry.js} +1538 -1323
  259. package/dist/esm/loader.js +3 -3
  260. package/dist/esm/stencil.js +4 -4
  261. package/dist/esm/stencil.js.map +1 -1
  262. package/dist/stencil/index.esm.js +1 -1
  263. package/dist/stencil/kritzel-brush-style.entry.esm.js.map +1 -0
  264. package/dist/stencil/p-25d1e040.entry.js +2 -0
  265. package/dist/stencil/p-25d1e040.entry.js.map +1 -0
  266. package/dist/stencil/p-C_uHp-ur.js +2 -0
  267. package/dist/stencil/p-C_uHp-ur.js.map +1 -0
  268. package/dist/stencil/p-a6f8283e.entry.js +2 -0
  269. package/dist/stencil/p-a6f8283e.entry.js.map +1 -0
  270. package/dist/stencil/p-oCOlsFCN.js +3 -0
  271. package/dist/stencil/p-oCOlsFCN.js.map +1 -0
  272. package/dist/stencil/stencil.esm.js +1 -1
  273. package/dist/stencil/stencil.esm.js.map +1 -1
  274. package/dist/types/classes/commands/add-object.command.d.ts +2 -2
  275. package/dist/types/classes/commands/add-selection-group.command.d.ts +2 -1
  276. package/dist/types/classes/commands/base.command.d.ts +3 -3
  277. package/dist/types/classes/commands/batch.command.d.ts +2 -1
  278. package/dist/types/classes/commands/move-selection-group.command.d.ts +2 -1
  279. package/dist/types/classes/commands/remove-object.command.d.ts +2 -2
  280. package/dist/types/classes/commands/remove-selection-group.command.d.ts +2 -2
  281. package/dist/types/classes/commands/resize-selection-group.command.d.ts +2 -1
  282. package/dist/types/classes/commands/rotate-selection-group.command.d.ts +2 -1
  283. package/dist/types/classes/commands/update-object.command.d.ts +2 -2
  284. package/dist/types/classes/commands/update-viewport.command.d.ts +2 -1
  285. package/dist/types/classes/{store.class.d.ts → core/core.class.d.ts} +9 -19
  286. package/dist/types/classes/{database.class.d.ts → core/database.class.d.ts} +3 -2
  287. package/dist/types/classes/{history.class.d.ts → core/history.class.d.ts} +5 -5
  288. package/dist/types/classes/core/reviver.class.d.ts +6 -0
  289. package/dist/types/classes/core/store.class.d.ts +17 -0
  290. package/dist/types/classes/{viewport.class.d.ts → core/viewport.class.d.ts} +3 -3
  291. package/dist/types/classes/core/workspace.class.d.ts +24 -0
  292. package/dist/types/classes/handlers/base.handler.d.ts +3 -3
  293. package/dist/types/classes/handlers/context-menu.handler.d.ts +2 -2
  294. package/dist/types/classes/handlers/hover.handler.d.ts +2 -2
  295. package/dist/types/classes/handlers/key.handler.d.ts +2 -2
  296. package/dist/types/classes/handlers/move.handler.d.ts +2 -2
  297. package/dist/types/classes/handlers/resize.handler.d.ts +2 -2
  298. package/dist/types/classes/handlers/rotation.handler.d.ts +2 -2
  299. package/dist/types/classes/handlers/selection.handler.d.ts +2 -2
  300. package/dist/types/classes/objects/base-object.class.d.ts +5 -4
  301. package/dist/types/classes/objects/custom-element.class.d.ts +2 -2
  302. package/dist/types/classes/objects/image.class.d.ts +2 -2
  303. package/dist/types/classes/objects/path.class.d.ts +2 -4
  304. package/dist/types/classes/objects/selection-box.class.d.ts +2 -2
  305. package/dist/types/classes/objects/selection-group.class.d.ts +2 -2
  306. package/dist/types/classes/objects/text.class.d.ts +2 -2
  307. package/dist/types/classes/registries/tool.registry.d.ts +2 -2
  308. package/dist/types/classes/tools/base-tool.class.d.ts +8 -4
  309. package/dist/types/classes/tools/brush-tool.class.d.ts +2 -2
  310. package/dist/types/classes/tools/eraser-tool.class.d.ts +2 -2
  311. package/dist/types/classes/tools/image-tool.class.d.ts +2 -2
  312. package/dist/types/classes/tools/selection-tool.class.d.ts +2 -2
  313. package/dist/types/classes/tools/text-tool.class.d.ts +2 -2
  314. package/dist/types/components/core/kritzel-cursor-trail/kritzel-cursor-trail.d.ts +5 -5
  315. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +13 -3
  316. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +21 -22
  317. package/dist/types/components/shared/kritzel-dropdown/kritzel-dropdown.d.ts +2 -2
  318. package/dist/types/components/shared/kritzel-menu-item/kritzel-menu-item.d.ts +2 -0
  319. package/dist/types/components/shared/kritzel-portal/kritzel-portal.d.ts +0 -1
  320. package/dist/types/components/shared/kritzel-split-button/kritzel-split-button.d.ts +4 -2
  321. package/dist/types/components/shared/kritzel-tooltip/kritzel-tooltip.d.ts +8 -2
  322. package/dist/types/components/ui/kritzel-context-menu/kritzel-context-menu.d.ts +5 -3
  323. package/dist/types/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.d.ts +1 -1
  324. package/dist/types/components/ui/kritzel-controls/kritzel-controls.d.ts +3 -1
  325. package/dist/types/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.d.ts +3 -2
  326. package/dist/types/components.d.ts +41 -12
  327. package/dist/types/helpers/devices.helper.d.ts +4 -0
  328. package/dist/types/helpers/event.helper.d.ts +1 -1
  329. package/dist/types/helpers/html.helper.d.ts +1 -0
  330. package/dist/types/index.d.ts +1 -0
  331. package/dist/types/interfaces/engine-state.interface.d.ts +1 -2
  332. package/dist/types/interfaces/serializable.interface.d.ts +2 -1
  333. package/dist/types/stencil-public-runtime.d.ts +6 -4
  334. package/dist/types/types/deep-readonly.type.d.ts +7 -0
  335. package/package.json +64 -63
  336. package/dist/cjs/index-CUSIflVf.js.map +0 -1
  337. package/dist/cjs/index-CfXjPLHb.js.map +0 -1
  338. package/dist/collection/classes/database.class.js.map +0 -1
  339. package/dist/collection/classes/history.class.js +0 -84
  340. package/dist/collection/classes/history.class.js.map +0 -1
  341. package/dist/collection/classes/reviver.class.js.map +0 -1
  342. package/dist/collection/classes/store.class.js.map +0 -1
  343. package/dist/collection/classes/viewport.class.js +0 -152
  344. package/dist/collection/classes/viewport.class.js.map +0 -1
  345. package/dist/collection/classes/workspace.class.js +0 -10
  346. package/dist/collection/classes/workspace.class.js.map +0 -1
  347. package/dist/components/p-26poIWa_.js.map +0 -1
  348. package/dist/components/p-5CJxFNEE.js.map +0 -1
  349. package/dist/components/p-BAPUTr3K.js.map +0 -1
  350. package/dist/components/p-BGccckxP.js.map +0 -1
  351. package/dist/components/p-BLmFBe2a.js.map +0 -1
  352. package/dist/components/p-BU2q3PRS.js.map +0 -1
  353. package/dist/components/p-BZ-j_4CK.js.map +0 -1
  354. package/dist/components/p-Bb6od8He.js +0 -42
  355. package/dist/components/p-Bb6od8He.js.map +0 -1
  356. package/dist/components/p-BcQTDgzV.js.map +0 -1
  357. package/dist/components/p-BcQWRzsB.js.map +0 -1
  358. package/dist/components/p-BeVv4o5c.js +0 -14
  359. package/dist/components/p-BeVv4o5c.js.map +0 -1
  360. package/dist/components/p-BqrTPNyu.js.map +0 -1
  361. package/dist/components/p-BvlGgLAQ.js.map +0 -1
  362. package/dist/components/p-C-DqsDXz.js +0 -238
  363. package/dist/components/p-C-DqsDXz.js.map +0 -1
  364. package/dist/components/p-C9-70hiF.js.map +0 -1
  365. package/dist/components/p-CJKA5zIE.js +0 -10
  366. package/dist/components/p-CJKA5zIE.js.map +0 -1
  367. package/dist/components/p-CaPdvVd4.js +0 -127
  368. package/dist/components/p-CaPdvVd4.js.map +0 -1
  369. package/dist/components/p-Cb1IUD_g.js.map +0 -1
  370. package/dist/components/p-Crni2OI4.js.map +0 -1
  371. package/dist/components/p-D_Uh-xv_.js.map +0 -1
  372. package/dist/components/p-DtmZW6eP.js.map +0 -1
  373. package/dist/components/p-V4ui5aWj.js +0 -63
  374. package/dist/components/p-V4ui5aWj.js.map +0 -1
  375. package/dist/components/p-_ntxNi8v.js.map +0 -1
  376. package/dist/components/p-fyfT6A5K.js.map +0 -1
  377. package/dist/components/p-jGaWxggY.js.map +0 -1
  378. package/dist/components/p-jpGLgpoq.js.map +0 -1
  379. package/dist/esm/index-DqqxAoZI.js.map +0 -1
  380. package/dist/esm/index-NiIEUDzj.js.map +0 -1
  381. package/dist/stencil/p-DqqxAoZI.js +0 -2
  382. package/dist/stencil/p-DqqxAoZI.js.map +0 -1
  383. package/dist/stencil/p-NiIEUDzj.js +0 -3
  384. package/dist/stencil/p-NiIEUDzj.js.map +0 -1
  385. package/dist/stencil/p-eebdbf65.entry.js +0 -2
  386. package/dist/stencil/p-eebdbf65.entry.js.map +0 -1
  387. package/dist/types/classes/reviver.class.d.ts +0 -6
  388. package/dist/types/classes/workspace.class.d.ts +0 -16
@@ -1,7 +1,6 @@
1
1
  import { Host, h } from "@stencil/core";
2
- import { KritzelViewport } from "../../../classes/viewport.class";
2
+ import { KritzelViewport } from "../../../classes/core/viewport.class";
3
3
  import { KritzelSelectionTool } from "../../../classes/tools/selection-tool.class";
4
- import { KritzelStore } from "../../../classes/store.class";
5
4
  import { KritzelKeyHandler } from "../../../classes/handlers/key.handler";
6
5
  import { KritzelBaseTool } from "../../../classes/tools/base-tool.class";
7
6
  import { KritzelEraserTool } from "../../../classes/tools/eraser-tool.class";
@@ -14,124 +13,98 @@ import { KritzelToolRegistry } from "../../../classes/registries/tool.registry";
14
13
  import { KritzelEventHelper } from "../../../helpers/event.helper";
15
14
  import { KritzelClassHelper } from "../../../helpers/class.helper";
16
15
  import { ABSOLUTE_SCALE_MAX, ABSOLUTE_SCALE_MIN } from "../../../constants/engine.constants";
16
+ import { KritzelCore } from "../../../classes/core/core.class";
17
+ import { KritzelDevicesHelper } from "../../../helpers/devices.helper";
17
18
  export class KritzelEngine {
19
+ host;
20
+ workspace;
18
21
  onWorkspaceChange(newWorkspace) {
19
- if (newWorkspace) {
20
- this.store.initializeWorkspace(newWorkspace);
22
+ if (this.core.store.state.activeWorkspace !== newWorkspace) {
23
+ this.core.initializeWorkspace(newWorkspace);
21
24
  }
22
25
  }
26
+ activeTool;
27
+ globalContextMenuItems;
28
+ objectContextMenuItems;
29
+ scaleMax = ABSOLUTE_SCALE_MAX;
23
30
  validateScaleMax(newValue) {
24
31
  if (newValue > ABSOLUTE_SCALE_MAX) {
25
32
  console.warn(`scaleMax cannot be greater than ${ABSOLUTE_SCALE_MAX}.`);
26
33
  this.scaleMax = ABSOLUTE_SCALE_MAX;
27
- this.store.state.scaleMax = this.scaleMax;
34
+ this.core.store.setState('scaleMax', this.scaleMax);
28
35
  }
29
36
  else {
30
- this.store.state.scaleMax = newValue;
37
+ this.core.store.setState('scaleMax', newValue);
31
38
  }
32
39
  }
40
+ scaleMin = ABSOLUTE_SCALE_MIN;
33
41
  validateScaleMin(newValue) {
34
42
  if (newValue < ABSOLUTE_SCALE_MIN) {
35
43
  console.warn(`scaleMin cannot be less than ${ABSOLUTE_SCALE_MIN}.`);
36
44
  this.scaleMin = ABSOLUTE_SCALE_MIN;
37
- this.store.state.scaleMin = this.scaleMin;
45
+ this.core.store.setState('scaleMin', this.scaleMin);
38
46
  }
39
47
  else {
40
- this.store.state.scaleMin = newValue;
41
- }
42
- }
43
- get isSelecting() {
44
- return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.isSelecting;
45
- }
46
- get isSelectionActive() {
47
- return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.selectionGroup !== null;
48
- }
49
- constructor() {
50
- this.scaleMax = ABSOLUTE_SCALE_MAX;
51
- this.scaleMin = ABSOLUTE_SCALE_MIN;
52
- this.forceUpdate = 0;
53
- this.contextMenuElement = null;
54
- this.store = new KritzelStore(this);
55
- }
56
- componentWillLoad() {
57
- this.validateScaleMax(this.scaleMax);
58
- this.validateScaleMin(this.scaleMin);
59
- }
60
- async componentDidLoad() {
61
- this.contextMenuHandler = new KritzelContextMenuHandler(this.store, this.globalContextMenuItems, this.objectContextMenuItems);
62
- this.keyHandler = new KritzelKeyHandler(this.store);
63
- this.viewport = new KritzelViewport(this.store, this.host);
64
- this._registerStateChangeListeners();
65
- await this.store.initializeDatabase();
66
- await this.store.initializeWorkspace(this.workspace);
67
- if (this.store.state.isReady === false) {
68
- this.store.state.isReady = true;
69
- this.isEngineReady.emit(this.store.state);
48
+ this.core.store.setState('scaleMin', newValue);
70
49
  }
71
50
  }
51
+ isEngineReady;
52
+ activeToolChange;
53
+ workspacesChange;
54
+ longpress;
55
+ forceUpdate = 0;
72
56
  handleWheel(ev) {
73
- var _a, _b;
74
- if (this.store.isDisabled) {
57
+ if (this.core.store.isDisabled) {
75
58
  return;
76
59
  }
77
- if (this.store.state.isContextMenuVisible) {
60
+ if (this.core.store.state.isContextMenuVisible) {
78
61
  this.hideContextMenu();
79
62
  }
80
63
  this.viewport.handleWheel(ev);
81
- (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handleWheel(ev);
64
+ this.core.store.state?.activeTool?.handleWheel(ev);
82
65
  }
83
66
  handlePointerDown(ev) {
84
- var _a, _b;
85
- if (this.store.isDisabled) {
86
- return;
87
- }
88
- if (KritzelEventHelper.isPointerEventOnContextMenu(ev) === false && this.store.state.isContextMenuVisible) {
89
- this.hideContextMenu();
67
+ if (this.core.store.isDisabled) {
90
68
  return;
91
69
  }
92
- KritzelEventHelper.onLongTouchPress(ev, (event) => {
93
- if (!(this.store.state.activeTool instanceof KritzelSelectionTool)) {
94
- return;
95
- }
96
- this.contextMenuHandler.handleContextMenu(event);
97
- });
70
+ KritzelEventHelper.onLongPress(ev, (event) => this.longpress.emit(event));
98
71
  this.host.setPointerCapture(ev.pointerId);
99
- this.store.state.pointers.set(ev.pointerId, ev);
72
+ this.core.store.state.pointers.set(ev.pointerId, ev);
100
73
  this.viewport.handlePointerDown(ev);
101
- (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerDown(ev);
74
+ this.core.store.state?.activeTool?.handlePointerDown(ev);
102
75
  }
103
76
  handlePointerMove(ev) {
104
- var _a, _b;
105
- if (this.store.isDisabled) {
77
+ if (this.core.store.isDisabled) {
106
78
  return;
107
79
  }
108
- this.store.state.pointers.set(ev.pointerId, ev);
80
+ this.core.store.state.pointers.set(ev.pointerId, ev);
109
81
  this.viewport.handlePointerMove(ev);
110
- (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerMove(ev);
82
+ this.core.store.state?.activeTool?.handlePointerMove(ev);
111
83
  }
112
84
  handlePointerUp(ev) {
113
- var _a, _b;
114
- if (this.store.isDisabled) {
85
+ if (this.core.store.isDisabled) {
115
86
  return;
116
87
  }
117
- this.store.state.pointers.delete(ev.pointerId);
88
+ this.core.store.state.pointers.delete(ev.pointerId);
118
89
  this.host.releasePointerCapture(ev.pointerId);
119
90
  this.viewport.handlePointerUp(ev);
120
- (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerUp(ev);
91
+ this.core.store.state?.activeTool?.handlePointerUp(ev);
121
92
  }
122
93
  handlePointerCancel(ev) {
123
- var _a, _b;
124
- if (this.store.isDisabled) {
94
+ if (this.core.store.isDisabled) {
125
95
  return;
126
96
  }
127
97
  this.host.releasePointerCapture(ev.pointerId);
128
- this.store.state.pointers.delete(ev.pointerId);
98
+ this.core.store.state.pointers.delete(ev.pointerId);
129
99
  this.viewport.handlePointerUp(ev);
130
- (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerUp(ev);
100
+ this.core.store.state?.activeTool?.handlePointerUp(ev);
101
+ }
102
+ handleLongPress(ev) {
103
+ this.contextMenuHandler.handleContextMenu(ev.detail);
131
104
  }
132
105
  handleContextMenu(ev) {
133
106
  ev.preventDefault();
134
- if (this.store.isDisabled) {
107
+ if (this.core.store.isDisabled) {
135
108
  return;
136
109
  }
137
110
  if (ev.pointerType === 'touch') {
@@ -148,26 +121,12 @@ export class KritzelEngine {
148
121
  handleKeyUp(ev) {
149
122
  this.keyHandler.handleKeyUp(ev);
150
123
  }
151
- updateFocus(ev) {
152
- if (this.store.isDisabled) {
153
- return;
154
- }
155
- const rect = this.store.state.host.getBoundingClientRect();
156
- const isInside = ev.clientX >= rect.left && ev.clientX <= rect.right && ev.clientY >= rect.top && ev.clientY <= rect.bottom;
157
- const path = ev.composedPath();
158
- const kritzelEngineElement = this.host.closest('kritzel-engine');
159
- const isInKritzelEngine = path.includes(kritzelEngineElement || this.host);
160
- this.store.setState('isFocused', isInside && isInKritzelEngine);
161
- }
162
- handleClick() {
163
- this.enable();
164
- }
165
124
  async registerTool(toolName, toolClass, toolConfig) {
166
125
  if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof KritzelBaseTool)) {
167
126
  console.error(`Failed to register tool "${toolName}": Tool class must be a constructor function`);
168
127
  return null;
169
128
  }
170
- const registeredTool = KritzelToolRegistry.registerTool(toolName, toolClass, this.store);
129
+ const registeredTool = KritzelToolRegistry.registerTool(toolName, toolClass, this.core);
171
130
  if (toolConfig) {
172
131
  Object.entries(toolConfig).forEach(([key, value]) => {
173
132
  registeredTool[key] = value;
@@ -176,290 +135,304 @@ export class KritzelEngine {
176
135
  return Promise.resolve(registeredTool);
177
136
  }
178
137
  async changeActiveTool(tool) {
179
- var _a;
180
- (_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
181
- this.store.setState('activeTool', tool);
182
- this.store.deselectAllObjects();
183
- tool === null || tool === void 0 ? void 0 : tool.onActivate();
184
- }
185
- async setFocus() {
186
- this.host.focus();
187
- this.store.state.isFocused = true;
138
+ this.core.store.state.activeTool?.onDeactivate();
139
+ this.core.store.setState('activeTool', tool);
140
+ this.core.deselectAllObjects();
141
+ tool?.onActivate();
188
142
  }
189
143
  async disable() {
190
- this.store.state.isEnabled = false;
191
- this.forceUpdate++;
144
+ this.core.store.setState('isEnabled', false);
145
+ this.core.rerender();
192
146
  }
193
147
  async enable() {
194
- this.store.state.isEnabled = true;
195
- this.forceUpdate++;
148
+ this.core.store.setState('isEnabled', true);
149
+ this.core.rerender();
196
150
  }
197
151
  async delete() {
198
- this.store.delete();
152
+ this.core.delete();
199
153
  }
200
154
  async copy() {
201
- this.store.copy();
155
+ this.core.copy();
202
156
  }
203
157
  async paste(x, y) {
204
- this.store.paste(x, y);
158
+ this.core.paste(x, y);
205
159
  }
206
160
  async bringForward(object) {
207
- this.store.bringForward(object);
161
+ this.core.bringForward(object);
208
162
  }
209
163
  async sendBackward(object) {
210
- this.store.sendBackward(object);
164
+ this.core.sendBackward(object);
211
165
  }
212
166
  async bringToFront(object) {
213
- this.store.bringToFront(object);
167
+ this.core.bringToFront(object);
214
168
  }
215
169
  async sendToBack(object) {
216
- this.store.sendToBack(object);
170
+ this.core.sendToBack(object);
217
171
  }
218
172
  async undo() {
219
- this.store.history.undo();
173
+ this.core.history.undo();
220
174
  }
221
175
  async redo() {
222
- this.store.history.redo();
176
+ this.core.history.redo();
223
177
  }
224
178
  async hideContextMenu() {
225
- this.store.state.pointers.clear();
226
- this.store.state.isContextMenuVisible = false;
227
- this.store.state.selectionBox = null;
228
- this.store.state.isSelecting = false;
179
+ this.core.store.state.pointers.clear();
180
+ this.core.store.setState('isContextMenuVisible', false);
181
+ this.core.store.setState('selectionBox', null);
182
+ this.core.store.setState('isSelecting', false);
183
+ this.core.store.setState('isEnabled', true);
184
+ this.core.rerender();
229
185
  }
230
186
  async getObjectById(id) {
231
- const object = this.store.objects.find(obj => obj.id === id);
187
+ const object = this.core.store.allObjects.find(obj => obj.id === id);
232
188
  return object || null;
233
189
  }
234
190
  async addObject(object) {
235
- this.store.deselectAllObjects();
191
+ this.core.deselectAllObjects();
236
192
  object.id = object.generateId();
237
- object._store = this.store;
238
- object.scale = object.scale ? object.scale : this.store.state.scale;
239
- object.zIndex = this.store.currentZIndex;
240
- const command = new AddObjectCommand(this.store, this, object);
241
- this.store.history.executeCommand(command);
193
+ object._core = this.core;
194
+ object.scale = object.scale ? object.scale : this.core.store.state.scale;
195
+ object.zIndex = this.core.store.currentZIndex;
196
+ const command = new AddObjectCommand(this.core, this, object);
197
+ this.core.history.executeCommand(command);
242
198
  return object;
243
199
  }
244
200
  async updateObject(object, updatedProperties) {
245
- this.store.deselectAllObjects();
246
- const command = new UpdateObjectCommand(this.store, this, object, updatedProperties);
247
- this.store.history.executeCommand(command);
201
+ this.core.deselectAllObjects();
202
+ const command = new UpdateObjectCommand(this.core, this, object, updatedProperties);
203
+ this.core.history.executeCommand(command);
248
204
  return object;
249
205
  }
250
206
  async removeObject(object) {
251
- this.store.deselectAllObjects();
252
- const command = new RemoveObjectCommand(this.store, this, object);
253
- this.store.history.executeCommand(command);
207
+ this.core.deselectAllObjects();
208
+ const command = new RemoveObjectCommand(this.core, this, object);
209
+ this.core.history.executeCommand(command);
254
210
  return object;
255
211
  }
256
212
  async getSelectedObjects() {
257
- return this.store.state.selectionGroup ? this.store.state.selectionGroup.objects : [];
213
+ return this.core.store.state.selectionGroup ? this.core.store.state.selectionGroup.objects : [];
258
214
  }
259
215
  async selectObjects(objects) {
260
- var _a;
261
- (_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
262
- this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
263
- this.store.deselectAllObjects();
264
- this.store.selectObjects(objects);
216
+ this.core.store.state.activeTool?.onDeactivate();
217
+ this.core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
218
+ this.core.deselectAllObjects();
219
+ this.core.selectObjects(objects);
265
220
  }
266
221
  async selectAllObjectsInViewport() {
267
- var _a;
268
- (_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
269
- this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
270
- this.store.deselectAllObjects();
271
- this.store.selectAllObjectsInViewport();
222
+ this.core.store.state.activeTool?.onDeactivate();
223
+ this.core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
224
+ this.core.deselectAllObjects();
225
+ this.core.selectAllObjectsInViewport();
272
226
  }
273
227
  async clearSelection() {
274
- this.store.clearSelection();
228
+ this.core.clearSelection();
275
229
  }
276
230
  async centerObjectInViewport(object) {
277
231
  object.centerInViewport();
278
- const command = new UpdateObjectCommand(this.store, this, object, object);
279
- this.store.history.executeCommand(command);
232
+ const command = new UpdateObjectCommand(this.core, this, object, object);
233
+ this.core.history.executeCommand(command);
280
234
  return object;
281
235
  }
282
236
  async getCopiedObjects() {
283
- var _a;
284
- return ((_a = this.store.state.copiedObjects) === null || _a === void 0 ? void 0 : _a.objects) || [];
237
+ return this.core.store.state.copiedObjects?.objects || [];
285
238
  }
286
239
  async createWorkspace(workspace) {
287
- return this.store.createWorkspace(workspace).then(() => {
288
- this.workspacesChange.emit(this.store.state.workspaces);
289
- });
240
+ workspace._core = this.core;
241
+ await this.core.createWorkspace(workspace);
242
+ this.workspacesChange.emit(this.core.store.state.workspaces);
243
+ return workspace;
290
244
  }
291
245
  async updateWorkspace(workspace) {
292
- return this.store.updateWorkspace(workspace).then(() => {
293
- this.workspacesChange.emit(this.store.state.workspaces);
294
- });
246
+ await this.core.updateWorkspace(workspace);
247
+ this.workspacesChange.emit(this.core.store.state.workspaces);
295
248
  }
296
249
  async deleteWorkspace(workspace) {
297
- return this.store.deleteWorkspace(workspace).then(async () => {
298
- this.workspacesChange.emit(this.store.state.workspaces);
299
- });
250
+ await this.core.deleteWorkspace(workspace);
251
+ this.workspacesChange.emit(this.core.store.state.workspaces);
300
252
  }
301
253
  async getWorkspaces() {
302
- return this.store.getWorkspaces();
254
+ return this.core.getWorkspaces();
255
+ }
256
+ async getActiveWorkspace() {
257
+ return this.core.store.state.activeWorkspace;
258
+ }
259
+ core;
260
+ viewport;
261
+ contextMenuHandler;
262
+ keyHandler;
263
+ contextMenuElement = null;
264
+ get isSelecting() {
265
+ return this.core.store.state.activeTool instanceof KritzelSelectionTool && this.core.store.state.isSelecting;
266
+ }
267
+ get isSelectionActive() {
268
+ return this.core.store.state.activeTool instanceof KritzelSelectionTool && this.core.store.state.selectionGroup !== null;
269
+ }
270
+ constructor() {
271
+ this.core = new KritzelCore(this);
272
+ }
273
+ componentWillLoad() {
274
+ this.validateScaleMax(this.scaleMax);
275
+ this.validateScaleMin(this.scaleMin);
276
+ }
277
+ async componentDidLoad() {
278
+ this.contextMenuHandler = new KritzelContextMenuHandler(this.core, this.globalContextMenuItems, this.objectContextMenuItems);
279
+ this.keyHandler = new KritzelKeyHandler(this.core);
280
+ this.viewport = new KritzelViewport(this.core, this.host);
281
+ await this.core.initializeDatabase();
282
+ await this.core.initializeWorkspace(this.workspace);
283
+ this._registerStateChangeListeners();
284
+ if (this.core.store.state.isReady === false) {
285
+ this.core.store.setState('isReady', true);
286
+ this.isEngineReady.emit(this.core.store.state);
287
+ }
303
288
  }
304
289
  _registerStateChangeListeners() {
305
- this.store.onStateChange('activeTool', this._handleActiveToolChange.bind(this));
306
- this.store.onStateChange('isFocused', this._handleIsFocusedChange.bind(this));
290
+ this.core.store.onStateChange('activeTool', this._handleActiveToolChange.bind(this));
307
291
  }
308
292
  _handleActiveToolChange(activeTool) {
309
293
  if (!(activeTool instanceof KritzelSelectionTool)) {
310
- this.store.clearSelection();
294
+ this.core.clearSelection();
311
295
  }
312
- this.store.state.skipContextMenu = false;
296
+ this.core.store.setState('skipContextMenu', false);
313
297
  this.activeToolChange.emit(activeTool);
314
298
  KritzelKeyboardHelper.forceHideKeyboard();
315
299
  }
316
- _handleIsFocusedChange(isFocused) {
317
- if (!isFocused) {
318
- this.store.resetActiveText();
319
- }
320
- }
321
300
  render() {
322
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8;
323
301
  const computedStyle = window.getComputedStyle(this.host);
324
302
  const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
325
303
  const baseHandleSize = parseFloat(baseHandleSizePx);
326
304
  const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
327
- return (h(Host, { key: 'fd353ff17bcde1a9ab646b6f463d1c6ce00a3dff' }, h("div", { key: '45bc2af8f1a3a2bfa3aa76a478c7bf208027da0c', class: "debug-panel", style: { display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: '50e932febc35c7dbe852ad99d96ca4f0e0b742fc' }, "ActiveWorkspaceId: ", (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeWorkspace) === null || _b === void 0 ? void 0 :
328
- _b.id), h("div", { key: 'af94b5061f0803588fece6cccdf540f46f13ca05' }, "ActiveWorkspaceName: ", (_d = (_c = this.store.state) === null || _c === void 0 ? void 0 : _c.activeWorkspace) === null || _d === void 0 ? void 0 :
329
- _d.name), h("div", { key: '89c0d21ce94f4eda72153554fadbd6942e785edc' }, "TranslateX: ", (_e = this.store.state) === null || _e === void 0 ? void 0 :
330
- _e.translateX), h("div", { key: '340b5165265241972a7a940268c7940063ba8c12' }, "TranslateY: ", (_f = this.store.state) === null || _f === void 0 ? void 0 :
331
- _f.translateY), h("div", { key: '428054b3ea4a1c327f03d6b37bfe6331dea6c57b' }, "ViewportWidth: ", (_g = this.store.state) === null || _g === void 0 ? void 0 :
332
- _g.viewportWidth), h("div", { key: 'd67420ef633627413066a28b8ef9ac43c520015d' }, "ViewportHeight: ", (_h = this.store.state) === null || _h === void 0 ? void 0 :
333
- _h.viewportHeight), h("div", { key: 'dedf9eb89c79fa496f7b6d0df9c646898f66b3d4' }, "ObjectsInViewport. ", this.store.objects.length), h("div", { key: '59bb8416941fd84305f2892f24098f6f4a084401' }, "Scale: ", (_j = this.store.state) === null || _j === void 0 ? void 0 :
334
- _j.scale), h("div", { key: '6705a4cec22e4e33f75e296e17bc2952a3d1cba7' }, "ActiveTool: ", (_l = (_k = this.store.state) === null || _k === void 0 ? void 0 : _k.activeTool) === null || _l === void 0 ? void 0 :
335
- _l.name), h("div", { key: 'ca22e0a377a11fdca851b38f1bf425648cd3b9dd' }, "HasViewportChanged: ", ((_m = this.store.state) === null || _m === void 0 ? void 0 : _m.hasViewportChanged) ? 'true' : 'false'), h("div", { key: '57508b9ee24a5af631e6bb1eace404c39af14f82' }, "IsEnabled: ", ((_o = this.store.state) === null || _o === void 0 ? void 0 : _o.isEnabled) ? 'true' : 'false'), h("div", { key: 'f6cea367b5007f767afb25a033215abda734de9d' }, "IsScaling: ", ((_p = this.store.state) === null || _p === void 0 ? void 0 : _p.isScaling) ? 'true' : 'false'), h("div", { key: '4386ef749facd2e54da7f58aa2713b87ed76f2df' }, "IsPanning: ", ((_q = this.store.state) === null || _q === void 0 ? void 0 : _q.isPanning) ? 'true' : 'false'), h("div", { key: '1713185b36a50dfe0f9efa0c92394222db80a377' }, "IsFocused: ", this.store.state.isFocused ? 'true' : 'false'), h("div", { key: '5104f428b808e7d843712302ad2e58b619876bee' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: '2cb3b27a00627188e7082fa94169eb961a1ae6ed' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: '7407656e61be665f27e706738faa6d318e2c1d04' }, "IsResizeHandleSelected: ", this.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '701bf05c25cb3d3728af6602f694e6064627ea59' }, "IsRotationHandleSelected: ", this.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: '772c345ea9c64ef800fdbb26919f1a54ca889025' }, "IsDrawing: ", this.store.state.isDrawing ? 'true' : 'false'), h("div", { key: 'dc687c8ba24182b8b61979ad334b989d3be72ec6' }, "IsWriting: ", this.store.state.isWriting ? 'true' : 'false'), h("div", { key: '10cbc575a7905396a76eca4e7b56be719755aeb4' }, "PointerX: ", (_r = this.store.state) === null || _r === void 0 ? void 0 :
336
- _r.pointerX), h("div", { key: '4f21199328ffadddcc58b7d6b102a89e5079f676' }, "PointerY: ", (_s = this.store.state) === null || _s === void 0 ? void 0 :
337
- _s.pointerY), h("div", { key: 'ac705f38cb323b8dc8cbf95f875657c5dec5c9ae' }, "SelectedObjects: ", ((_t = this.store.state.selectionGroup) === null || _t === void 0 ? void 0 : _t.objects.length) || 0)), h("div", { key: '2ca55c53246e64520af6720a3f87d2357295ca7f', id: "origin", class: "origin", style: {
338
- transform: `matrix(${(_u = this.store.state) === null || _u === void 0 ? void 0 : _u.scale}, 0, 0, ${(_v = this.store.state) === null || _v === void 0 ? void 0 : _v.scale}, ${(_w = this.store.state) === null || _w === void 0 ? void 0 : _w.translateX}, ${(_x = this.store.state) === null || _x === void 0 ? void 0 : _x.translateY})`,
339
- } }, (_y = this.store.state.objectsMap.allObjects()) === null || _y === void 0 ? void 0 :
340
- _y.map(object => {
341
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
342
- return (h("div", { key: object.id, style: { display: object.isInViewport() ? 'block' : 'none', transform: object === null || object === void 0 ? void 0 : object.transformationMatrix, transformOrigin: 'top left', zIndex: object.zIndex.toString(), position: 'absolute' } }, h("svg", { xmlns: "http://www.w3.org/2000/svg", id: object.id, class: "object", style: {
343
- height: object === null || object === void 0 ? void 0 : object.totalHeight.toString(),
344
- width: object === null || object === void 0 ? void 0 : object.totalWidth.toString(),
345
- left: '0',
346
- top: '0',
347
- position: 'absolute',
348
- transform: `rotate(${object.rotationDegrees}deg)`,
349
- transformOrigin: 'center',
350
- opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
351
- pointerEvents: object.markedForRemoval ? 'none' : 'auto',
352
- } }, h("foreignObject", { x: "0", y: "0", width: object.totalWidth.toString(), height: object.totalHeight.toString(), style: {
353
- minHeight: '0',
354
- minWidth: '0',
355
- backgroundColor: object.backgroundColor,
356
- borderColor: object.borderColor,
357
- borderWidth: object.borderWidth + 'px',
358
- borderStyle: 'solid',
359
- padding: object.padding + 'px',
360
- overflow: 'visible',
361
- } }, KritzelClassHelper.isInstanceOf(object, 'KritzelPath') && (h("svg", { ref: el => (el ? object.mount(el) : object.unmount()), xmlns: "http://www.w3.org/2000/svg", style: {
362
- height: object === null || object === void 0 ? void 0 : object.height.toString(),
363
- width: object === null || object === void 0 ? void 0 : object.width.toString(),
364
- position: 'absolute',
365
- overflow: 'visible',
366
- }, viewBox: object === null || object === void 0 ? void 0 : object.viewBox }, h("path", { d: object === null || object === void 0 ? void 0 : object.d, fill: object.fill, stroke: object === null || object === void 0 ? void 0 : object.stroke }))), KritzelClassHelper.isInstanceOf(object, 'KritzelImage') && (h("img", { ref: el => (el ? object.mount(el) : object.unmount()), src: object.src, style: {
367
- width: '100%',
368
- height: '100%',
369
- userSelect: 'none',
370
- pointerEvents: 'none',
371
- }, draggable: false, onDragStart: e => e.preventDefault() })), KritzelClassHelper.isInstanceOf(object, 'KritzelText') && (h("textarea", { ref: el => (el ? object.mount(el) : object.unmount()), value: object.value, onKeyDown: event => object.handleKeyDown(event), onInput: event => object.handleInput(event), rows: object.rows, style: {
372
- width: '100%',
373
- height: '100%',
374
- color: object.fontColor,
375
- fontSize: ((_a = object.fontSize) === null || _a === void 0 ? void 0 : _a.toString()) + 'px',
376
- fontFamily: object.fontFamily,
377
- border: 'none',
378
- outline: 'none',
379
- resize: 'none',
380
- overflow: 'hidden',
381
- display: 'block',
382
- padding: '1px',
383
- whiteSpace: 'nowrap',
384
- pointerEvents: object.isReadonly ? 'none' : 'auto',
385
- cursor: object.isReadonly ? 'default' : 'text',
386
- caretColor: object.isReadonly ? 'transparent' : 'auto',
387
- } })), KritzelClassHelper.isInstanceOf(object, 'KritzelCustomElement') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
388
- width: '100%',
389
- height: '100%',
390
- pointerEvents: 'auto',
391
- overflow: 'hidden',
392
- display: 'block',
393
- } })), KritzelClassHelper.isInstanceOf(object, 'KritzelSelectionGroup') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
394
- width: '100%',
395
- height: '100%',
396
- } })), KritzelClassHelper.isInstanceOf(object, 'KrtizelSelectionBox') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
397
- width: '100%',
398
- height: '100%',
399
- } }))), h("line", { x1: "0", y1: "0", x2: object.totalWidth, y2: "0", style: {
400
- stroke: 'var(--kritzel-selection-border-color, #007AFF)',
401
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_b = this.store.state) === null || _b === void 0 ? void 0 : _b.scale})`,
402
- strokeLinecap: 'square',
403
- }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: "0", x2: "0", y2: object.totalHeight, style: {
404
- stroke: 'var(--kritzel-selection-border-color, #007AFF)',
405
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_c = this.store.state) === null || _c === void 0 ? void 0 : _c.scale})`,
406
- strokeLinecap: 'square',
407
- }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: object.totalHeight, x2: object.totalWidth, y2: object.totalHeight, style: {
408
- stroke: 'var(--kritzel-selection-border-color, #007AFF)',
409
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_d = this.store.state) === null || _d === void 0 ? void 0 : _d.scale})`,
410
- strokeLinecap: 'square',
411
- }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth, y1: "0", x2: object.totalWidth, y2: object.totalHeight, style: {
412
- stroke: 'var(--kritzel-selection-border-color, #007AFF)',
413
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_e = this.store.state) === null || _e === void 0 ? void 0 : _e.scale})`,
414
- strokeLinecap: 'square',
415
- }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-left", cx: "0", cy: "0", r: `${(baseHandleSize * object.scale) / ((_f = this.store.state) === null || _f === void 0 ? void 0 : _f.scale)}`, style: {
416
- fill: 'var(--kritzel-selection-handle-color, #000000)',
417
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-left", cx: "0", cy: "0", r: `${(baseHandleTouchSize * object.scale) / ((_g = this.store.state) === null || _g === void 0 ? void 0 : _g.scale)}`, style: {
418
- fill: 'transparent',
419
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleSize * object.scale) / ((_h = this.store.state) === null || _h === void 0 ? void 0 : _h.scale)}`, style: {
420
- fill: 'var(--kritzel-selection-handle-color, #000000)',
421
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleTouchSize * object.scale) / ((_j = this.store.state) === null || _j === void 0 ? void 0 : _j.scale)}`, style: {
422
- fill: 'transparent',
423
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / ((_k = this.store.state) === null || _k === void 0 ? void 0 : _k.scale)}`, style: {
424
- fill: 'var(--kritzel-selection-handle-color, #000000)',
425
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / ((_l = this.store.state) === null || _l === void 0 ? void 0 : _l.scale)}`, style: {
426
- fill: 'transparent',
427
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / ((_m = this.store.state) === null || _m === void 0 ? void 0 : _m.scale)}`, style: {
428
- fill: 'var(--kritzel-selection-handle-color, #000000)',
429
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / ((_o = this.store.state) === null || _o === void 0 ? void 0 : _o.scale)}`, style: {
430
- fill: 'transparent',
431
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth / 2, y1: "0", x2: object.totalWidth / 2, y2: -((15 * object.scale) / ((_p = this.store.state) === null || _p === void 0 ? void 0 : _p.scale)), style: {
432
- stroke: 'var(--kritzel-selection-border-color, #007AFF)',
433
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_q = this.store.state) === null || _q === void 0 ? void 0 : _q.scale})`,
434
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_r = this.store.state) === null || _r === void 0 ? void 0 : _r.scale)), r: `${(baseHandleSize * object.scale) / ((_s = this.store.state) === null || _s === void 0 ? void 0 : _s.scale)}`, style: {
435
- fill: 'var(--kritzel-selection-handle-color, #000000)',
436
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle-overlay", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_t = this.store.state) === null || _t === void 0 ? void 0 : _t.scale)), r: `${(baseHandleTouchSize * object.scale) / ((_u = this.store.state) === null || _u === void 0 ? void 0 : _u.scale)}`, style: {
437
- fill: 'transparent',
438
- cursor: 'grab',
439
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("g", { style: { display: this.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' } }, h("foreignObject", { x: object.totalWidth.toString(), y: "0", width: "400px", height: "160px", style: { minHeight: '0', minWidth: '0', display: object.isDebugInfoVisible ? 'block' : 'none' } }, h("div", { style: { width: '100%', height: '100%' } }, h("div", { style: { whiteSpace: 'nowrap' } }, "zIndex: ", object.zIndex), h("div", { style: { whiteSpace: 'nowrap' } }, "translateX: ", object.translateX), h("div", { style: { whiteSpace: 'nowrap' } }, "translateY: ", object.translateY), h("div", { style: { whiteSpace: 'nowrap' } }, "width: ", object.width), h("div", { style: { whiteSpace: 'nowrap' } }, "height: ", object.height), h("div", { style: { whiteSpace: 'nowrap' } }, "scale: ", object.scale), h("div", { style: { whiteSpace: 'nowrap' } }, "rotation: ", object.rotation), h("div", { style: { whiteSpace: 'nowrap' } }, "x: ", object.x), h("div", { style: { whiteSpace: 'nowrap' } }, "y: ", object.y)))))));
440
- }), h("svg", { key: '0098f1b8233d45f49dc8bdcc13c08f20c04b65e1', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
441
- height: (_z = this.store.state.currentPath) === null || _z === void 0 ? void 0 : _z.height.toString(),
442
- width: (_0 = this.store.state.currentPath) === null || _0 === void 0 ? void 0 : _0.width.toString(),
305
+ return (h(Host, { key: '05b345f98a4548591946d1295da4d4b288767da6' }, h("div", { key: 'c8399a8968a39448120f3123b39c755b0f9b5e49', class: "debug-panel", style: { display: this.core.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: '2cedd93f88f1a1e6ddc99e648375549ca5254f04' }, "ActiveWorkspaceId: ", this.core.store.state?.activeWorkspace?.id), h("div", { key: '30ed15a98512b0efd91123773963d6266fa8426a' }, "ActiveWorkspaceName: ", this.core.store.state?.activeWorkspace?.name), h("div", { key: 'a0eb11088673a9e0e2e22880ae8a7a89c6705609' }, "TranslateX: ", this.core.store.state?.translateX), h("div", { key: '97c7ccfc77342d4122f85136ab4c81709046a4e4' }, "TranslateY: ", this.core.store.state?.translateY), h("div", { key: 'ff832aa8a779a4adb2fca5b7ecd8d9b992cf7b99' }, "ViewportWidth: ", this.core.store.state?.viewportWidth), h("div", { key: '6867ad7ee7f4fbe8725ac6edbe1bd999942fd729' }, "ViewportHeight: ", this.core.store.state?.viewportHeight), h("div", { key: 'f54768467cace934702bd3fd6f26970515f669f0' }, "Scale: ", this.core.store.state?.scale), h("div", { key: '4aaa2cec8688e42249a6f0f7e2d67a13c57fa155' }, "ActiveTool: ", this.core.store.state?.activeTool?.name), h("div", { key: '0bec60557f2a1271c69226b477fde02f4c2857a1' }, "HasViewportChanged: ", this.core.store.state?.hasViewportChanged ? 'true' : 'false'), h("div", { key: 'bd342af473102a1c2095a3a2810de25630c8a717' }, "IsEnabled: ", this.core.store.state?.isEnabled ? 'true' : 'false'), h("div", { key: '62477d9f931903bff3fa6fa85f1ecd3b2944884f' }, "IsScaling: ", this.core.store.state?.isScaling ? 'true' : 'false'), h("div", { key: '80fba2f64cec36d9c7b2d5f2081ef21190c61768' }, "IsPanning: ", this.core.store.state?.isPanning ? 'true' : 'false'), h("div", { key: 'da75419ac806f146a6ac69607b64095eb1f37de4' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: '11b3bf816afa3d64fea468de92a351d9e96dee9e' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: 'e12cf1412d0e48a1245ae923c595e737deb4dffb' }, "IsResizeHandleSelected: ", this.core.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: 'fa79c455e0ae7d68259003ce63a58eda4c250eba' }, "IsRotationHandleSelected: ", this.core.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: 'bc7b25568bac9ef9cd6f1341a7415e4b93d8e8e9' }, "IsDrawing: ", this.core.store.state.isDrawing ? 'true' : 'false'), h("div", { key: 'a62eef5e0e277b629a11bb13809a4ab211d9428c' }, "IsWriting: ", this.core.store.state.isWriting ? 'true' : 'false'), h("div", { key: '285815884e83a3d5d8ec3726034ff4853225f216' }, "PointerX: ", this.core.store.state?.pointerX), h("div", { key: 'f267eb928ccb57736229d3a7fbc5bfdfd0d51819' }, "PointerY: ", this.core.store.state?.pointerY), h("div", { key: '55977bf82d326a128a5da8d303875603c2850aac' }, "SelectedObjects: ", this.core.store.state.selectionGroup?.objects.length || 0)), h("div", { key: '8c91eaf482ce6cbd7400ba5342ec6c866fc0a049', id: "origin", class: "origin", style: {
306
+ transform: `matrix(${this.core.store.state?.scale}, 0, 0, ${this.core.store.state?.scale}, ${this.core.store.state?.translateX}, ${this.core.store.state?.translateY})`,
307
+ } }, this.core.store.state.objectsMap.allObjects()?.map(object => {
308
+ return (h("div", { key: object.id, style: {
309
+ display: object.isInViewport() ? 'block' : 'none',
310
+ transform: object?.transformationMatrix,
311
+ transformOrigin: 'top left',
312
+ zIndex: object.zIndex.toString(),
313
+ position: 'absolute',
314
+ } }, h("svg", { xmlns: "http://www.w3.org/2000/svg", id: object.id, class: "object", style: {
315
+ height: object?.totalHeight.toString(),
316
+ width: object?.totalWidth.toString(),
317
+ left: '0',
318
+ top: '0',
319
+ position: 'absolute',
320
+ transform: `rotate(${object.rotationDegrees}deg)`,
321
+ transformOrigin: 'center',
322
+ opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
323
+ pointerEvents: object.markedForRemoval ? 'none' : 'auto',
324
+ } }, h("foreignObject", { x: "0", y: "0", width: object.totalWidth.toString(), height: object.totalHeight.toString(), style: {
325
+ minHeight: '0',
326
+ minWidth: '0',
327
+ backgroundColor: object.backgroundColor,
328
+ borderColor: object.borderColor,
329
+ borderWidth: object.borderWidth + 'px',
330
+ borderStyle: 'solid',
331
+ padding: object.padding + 'px',
332
+ overflow: 'visible',
333
+ } }, KritzelClassHelper.isInstanceOf(object, 'KritzelPath') && (h("svg", { ref: el => (el ? object.mount(el) : object.unmount()), xmlns: "http://www.w3.org/2000/svg", style: {
334
+ height: object?.height.toString(),
335
+ width: object?.width.toString(),
336
+ position: 'absolute',
337
+ overflow: 'visible',
338
+ }, viewBox: object?.viewBox }, h("path", { d: object?.d, fill: object.fill, stroke: object?.stroke }))), KritzelClassHelper.isInstanceOf(object, 'KritzelImage') && (h("img", { ref: el => (el ? object.mount(el) : object.unmount()), src: object.src, style: {
339
+ width: '100%',
340
+ height: '100%',
341
+ userSelect: 'none',
342
+ pointerEvents: 'none',
343
+ }, draggable: false, onDragStart: e => e.preventDefault() })), KritzelClassHelper.isInstanceOf(object, 'KritzelText') && (h("textarea", { ref: el => (el ? object.mount(el) : object.unmount()), value: object.value, onKeyDown: event => object.handleKeyDown(event), onInput: event => object.handleInput(event), rows: object.rows, style: {
344
+ width: '100%',
345
+ height: '100%',
346
+ color: object.fontColor,
347
+ fontSize: object.fontSize?.toString() + 'px',
348
+ fontFamily: object.fontFamily,
349
+ border: 'none',
350
+ outline: 'none',
351
+ resize: 'none',
352
+ overflow: 'hidden',
353
+ display: 'block',
354
+ padding: '1px',
355
+ whiteSpace: 'nowrap',
356
+ pointerEvents: object.isReadonly ? 'none' : 'auto',
357
+ cursor: object.isReadonly ? 'default' : 'text',
358
+ caretColor: object.isReadonly ? 'transparent' : 'auto',
359
+ } })), KritzelClassHelper.isInstanceOf(object, 'KritzelCustomElement') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
360
+ width: '100%',
361
+ height: '100%',
362
+ pointerEvents: 'auto',
363
+ overflow: 'hidden',
364
+ display: 'block',
365
+ } })), KritzelClassHelper.isInstanceOf(object, 'KritzelSelectionGroup') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
366
+ width: '100%',
367
+ height: '100%',
368
+ } })), KritzelClassHelper.isInstanceOf(object, 'KrtizelSelectionBox') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
369
+ width: '100%',
370
+ height: '100%',
371
+ backgroundColor: KritzelDevicesHelper.isFirefox() ? object.backgroundColor : 'transparent',
372
+ borderWidth: KritzelDevicesHelper.isFirefox() ? object.borderWidth + 'px' : '0',
373
+ borderStyle: KritzelDevicesHelper.isFirefox() ? 'solid' : 'none',
374
+ borderColor: KritzelDevicesHelper.isFirefox() ? object.borderColor : 'transparent',
375
+ } }))), h("line", { x1: "0", y1: "0", x2: object.totalWidth, y2: "0", style: {
376
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
377
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,
378
+ strokeLinecap: 'square',
379
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: "0", x2: "0", y2: object.totalHeight, style: {
380
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
381
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,
382
+ strokeLinecap: 'square',
383
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: object.totalHeight, x2: object.totalWidth, y2: object.totalHeight, style: {
384
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
385
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,
386
+ strokeLinecap: 'square',
387
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth, y1: "0", x2: object.totalWidth, y2: object.totalHeight, style: {
388
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
389
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,
390
+ strokeLinecap: 'square',
391
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-left", cx: "0", cy: "0", r: `${(baseHandleSize * object.scale) / this.core.store.state?.scale}`, style: {
392
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
393
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-left", cx: "0", cy: "0", r: `${(baseHandleTouchSize * object.scale) / this.core.store.state?.scale}`, style: {
394
+ fill: 'transparent',
395
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleSize * object.scale) / this.core.store.state?.scale}`, style: {
396
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
397
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleTouchSize * object.scale) / this.core.store.state?.scale}`, style: {
398
+ fill: 'transparent',
399
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / this.core.store.state?.scale}`, style: {
400
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
401
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / this.core.store.state?.scale}`, style: {
402
+ fill: 'transparent',
403
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / this.core.store.state?.scale}`, style: {
404
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
405
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / this.core.store.state?.scale}`, style: {
406
+ fill: 'transparent',
407
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth / 2, y1: "0", x2: object.totalWidth / 2, y2: -((15 * object.scale) / this.core.store.state?.scale), style: {
408
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
409
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,
410
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle", cx: object.totalWidth / 2, cy: -((15 * object.scale) / this.core.store.state?.scale), r: `${(baseHandleSize * object.scale) / this.core.store.state?.scale}`, style: {
411
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
412
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle-overlay", cx: object.totalWidth / 2, cy: -((15 * object.scale) / this.core.store.state?.scale), r: `${(baseHandleTouchSize * object.scale) / this.core.store.state?.scale}`, style: {
413
+ fill: 'transparent',
414
+ cursor: 'grab',
415
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("g", { style: { display: this.core.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' } }, h("foreignObject", { x: object.totalWidth.toString(), y: "0", width: "400px", height: "160px", style: { minHeight: '0', minWidth: '0', display: object.isDebugInfoVisible ? 'block' : 'none' } }, h("div", { style: { width: '100%', height: '100%' } }, h("div", { style: { whiteSpace: 'nowrap' } }, "zIndex: ", object.zIndex), h("div", { style: { whiteSpace: 'nowrap' } }, "translateX: ", object.translateX), h("div", { style: { whiteSpace: 'nowrap' } }, "translateY: ", object.translateY), h("div", { style: { whiteSpace: 'nowrap' } }, "width: ", object.width), h("div", { style: { whiteSpace: 'nowrap' } }, "height: ", object.height), h("div", { style: { whiteSpace: 'nowrap' } }, "scale: ", object.scale), h("div", { style: { whiteSpace: 'nowrap' } }, "rotation: ", object.rotation), h("div", { style: { whiteSpace: 'nowrap' } }, "x: ", object.x), h("div", { style: { whiteSpace: 'nowrap' } }, "y: ", object.y)))))));
416
+ }), h("svg", { key: "current-path", class: "object", xmlns: "http://www.w3.org/2000/svg", width: this.core.store.state.currentPath?.width, height: this.core.store.state.currentPath?.height, style: {
443
417
  left: '0',
444
418
  top: '0',
445
- zIndex: (_1 = this.store.state.currentPath) === null || _1 === void 0 ? void 0 : _1.zIndex.toString(),
419
+ zIndex: this.core.store.state.currentPath?.zIndex.toString(),
446
420
  position: 'absolute',
447
- transform: (_2 = this.store.state.currentPath) === null || _2 === void 0 ? void 0 : _2.transformationMatrix,
421
+ transform: this.core.store.state.currentPath?.transformationMatrix,
448
422
  transformOrigin: 'top left',
449
423
  overflow: 'visible',
450
- }, viewBox: (_3 = this.store.state.currentPath) === null || _3 === void 0 ? void 0 : _3.viewBox }, h("path", { key: '08310713fa8f2f1f695b1b61bb2b6e5a5f77f192', d: (_4 = this.store.state.currentPath) === null || _4 === void 0 ? void 0 : _4.d, fill: (_5 = this.store.state.currentPath) === null || _5 === void 0 ? void 0 : _5.fill, stroke: (_6 = this.store.state.currentPath) === null || _6 === void 0 ? void 0 : _6.stroke }))), this.store.state.isContextMenuVisible && (h("kritzel-context-menu", { key: '2529447e26ba02689303be39cc593dfafc25b96c', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, objects: ((_7 = this.store.state.selectionGroup) === null || _7 === void 0 ? void 0 : _7.objects) || [], style: {
424
+ }, viewBox: this.core.store.state.currentPath?.viewBox }, h("path", { key: '1cdae549bc53dc30eb397f27702054ac6c5122f7', d: this.core.store.state.currentPath?.d, fill: this.core.store.state.currentPath?.fill, stroke: this.core.store.state.currentPath?.stroke }))), this.core.store.state.isContextMenuVisible && (h("kritzel-context-menu", { key: '2428e653f61d7ac5a71da1dbf94155b02e870406', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.core.store.state.contextMenuItems, objects: this.core.store.state.selectionGroup?.objects || [], style: {
451
425
  position: 'fixed',
452
- left: `${this.store.state.contextMenuX}px`,
453
- top: `${this.store.state.contextMenuY}px`,
426
+ left: `${this.core.store.state.contextMenuX}px`,
427
+ top: `${this.core.store.state.contextMenuY}px`,
454
428
  zIndex: '10000',
455
429
  }, onActionSelected: event => {
456
- var _a;
457
430
  event.detail.action({
458
- x: (-this.store.state.translateX + this.store.state.contextMenuX) / this.store.state.scale,
459
- y: (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale,
460
- }, (_a = this.store.state.selectionGroup) === null || _a === void 0 ? void 0 : _a.objects);
431
+ x: (-this.core.store.state.translateX + this.core.store.state.contextMenuX) / this.core.store.state.scale,
432
+ y: (-this.core.store.state.translateY + this.core.store.state.contextMenuY) / this.core.store.state.scale,
433
+ }, this.core.store.state.selectionGroup?.objects);
461
434
  this.hideContextMenu();
462
- } })), ((_8 = this.store.state) === null || _8 === void 0 ? void 0 : _8.activeTool) instanceof KritzelEraserTool && !this.store.state.isScaling && h("kritzel-cursor-trail", { key: '7c10277160eb1bc51581e4dfbdd4d0cdf626ed8c', store: this.store })));
435
+ }, onClose: () => this.hideContextMenu() })), this.core.store.state?.activeTool instanceof KritzelEraserTool && !this.core.store.state.isScaling && h("kritzel-cursor-trail", { key: '94bdb8b137c50bb7499a37e4784ae36989258ee2', core: this.core })));
463
436
  }
464
437
  static get is() { return "kritzel-engine"; }
465
438
  static get encapsulation() { return "shadow"; }
@@ -485,8 +458,8 @@ export class KritzelEngine {
485
458
  "references": {
486
459
  "KritzelWorkspace": {
487
460
  "location": "import",
488
- "path": "../../../classes/workspace.class",
489
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
461
+ "path": "../../../classes/core/workspace.class",
462
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
490
463
  }
491
464
  }
492
465
  },
@@ -677,8 +650,28 @@ export class KritzelEngine {
677
650
  "references": {
678
651
  "KritzelWorkspace": {
679
652
  "location": "import",
680
- "path": "../../../classes/workspace.class",
681
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
653
+ "path": "../../../classes/core/workspace.class",
654
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
655
+ }
656
+ }
657
+ }
658
+ }, {
659
+ "method": "longpress",
660
+ "name": "longpress",
661
+ "bubbles": true,
662
+ "cancelable": true,
663
+ "composed": true,
664
+ "docs": {
665
+ "tags": [],
666
+ "text": ""
667
+ },
668
+ "complexType": {
669
+ "original": "PointerEvent",
670
+ "resolved": "PointerEvent",
671
+ "references": {
672
+ "PointerEvent": {
673
+ "location": "global",
674
+ "id": "global::PointerEvent"
682
675
  }
683
676
  }
684
677
  }
@@ -756,23 +749,6 @@ export class KritzelEngine {
756
749
  "tags": []
757
750
  }
758
751
  },
759
- "setFocus": {
760
- "complexType": {
761
- "signature": "() => Promise<void>",
762
- "parameters": [],
763
- "references": {
764
- "Promise": {
765
- "location": "global",
766
- "id": "global::Promise"
767
- }
768
- },
769
- "return": "Promise<void>"
770
- },
771
- "docs": {
772
- "text": "",
773
- "tags": []
774
- }
775
- },
776
752
  "disable": {
777
753
  "complexType": {
778
754
  "signature": "() => Promise<void>",
@@ -1297,7 +1273,7 @@ export class KritzelEngine {
1297
1273
  },
1298
1274
  "createWorkspace": {
1299
1275
  "complexType": {
1300
- "signature": "(workspace: KritzelWorkspace) => Promise<void>",
1276
+ "signature": "(workspace: KritzelWorkspace) => Promise<KritzelWorkspace | null>",
1301
1277
  "parameters": [{
1302
1278
  "name": "workspace",
1303
1279
  "type": "KritzelWorkspace",
@@ -1310,11 +1286,11 @@ export class KritzelEngine {
1310
1286
  },
1311
1287
  "KritzelWorkspace": {
1312
1288
  "location": "import",
1313
- "path": "../../../classes/workspace.class",
1314
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
1289
+ "path": "../../../classes/core/workspace.class",
1290
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
1315
1291
  }
1316
1292
  },
1317
- "return": "Promise<void>"
1293
+ "return": "Promise<KritzelWorkspace>"
1318
1294
  },
1319
1295
  "docs": {
1320
1296
  "text": "",
@@ -1336,8 +1312,8 @@ export class KritzelEngine {
1336
1312
  },
1337
1313
  "KritzelWorkspace": {
1338
1314
  "location": "import",
1339
- "path": "../../../classes/workspace.class",
1340
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
1315
+ "path": "../../../classes/core/workspace.class",
1316
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
1341
1317
  }
1342
1318
  },
1343
1319
  "return": "Promise<void>"
@@ -1362,8 +1338,8 @@ export class KritzelEngine {
1362
1338
  },
1363
1339
  "KritzelWorkspace": {
1364
1340
  "location": "import",
1365
- "path": "../../../classes/workspace.class",
1366
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
1341
+ "path": "../../../classes/core/workspace.class",
1342
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
1367
1343
  }
1368
1344
  },
1369
1345
  "return": "Promise<void>"
@@ -1384,8 +1360,8 @@ export class KritzelEngine {
1384
1360
  },
1385
1361
  "KritzelWorkspace": {
1386
1362
  "location": "import",
1387
- "path": "../../../classes/workspace.class",
1388
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
1363
+ "path": "../../../classes/core/workspace.class",
1364
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
1389
1365
  }
1390
1366
  },
1391
1367
  "return": "Promise<KritzelWorkspace[]>"
@@ -1394,6 +1370,28 @@ export class KritzelEngine {
1394
1370
  "text": "",
1395
1371
  "tags": []
1396
1372
  }
1373
+ },
1374
+ "getActiveWorkspace": {
1375
+ "complexType": {
1376
+ "signature": "() => Promise<KritzelWorkspace>",
1377
+ "parameters": [],
1378
+ "references": {
1379
+ "Promise": {
1380
+ "location": "global",
1381
+ "id": "global::Promise"
1382
+ },
1383
+ "KritzelWorkspace": {
1384
+ "location": "import",
1385
+ "path": "../../../classes/core/workspace.class",
1386
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
1387
+ }
1388
+ },
1389
+ "return": "Promise<KritzelWorkspace>"
1390
+ },
1391
+ "docs": {
1392
+ "text": "",
1393
+ "tags": []
1394
+ }
1397
1395
  }
1398
1396
  };
1399
1397
  }
@@ -1441,6 +1439,12 @@ export class KritzelEngine {
1441
1439
  "target": undefined,
1442
1440
  "capture": false,
1443
1441
  "passive": false
1442
+ }, {
1443
+ "name": "longpress",
1444
+ "method": "handleLongPress",
1445
+ "target": undefined,
1446
+ "capture": false,
1447
+ "passive": false
1444
1448
  }, {
1445
1449
  "name": "contextmenu",
1446
1450
  "method": "handleContextMenu",
@@ -1465,18 +1469,6 @@ export class KritzelEngine {
1465
1469
  "target": "window",
1466
1470
  "capture": false,
1467
1471
  "passive": false
1468
- }, {
1469
- "name": "mousedown",
1470
- "method": "updateFocus",
1471
- "target": "window",
1472
- "capture": false,
1473
- "passive": true
1474
- }, {
1475
- "name": "click",
1476
- "method": "handleClick",
1477
- "target": undefined,
1478
- "capture": false,
1479
- "passive": false
1480
1472
  }];
1481
1473
  }
1482
1474
  }