kritzel-stencil 0.0.131 → 0.0.133

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 (362) hide show
  1. package/dist/cjs/{index-BwINBV6L.js → index-DCHCVnOl.js} +755 -701
  2. package/dist/cjs/index-DCHCVnOl.js.map +1 -0
  3. package/dist/cjs/index-nzUNdMPh.js +6 -2
  4. package/dist/cjs/index.cjs.js +1 -1
  5. package/dist/cjs/kritzel-brush-style.cjs.entry.js +32 -0
  6. package/dist/cjs/kritzel-brush-style.entry.cjs.js.map +1 -0
  7. package/dist/cjs/{kritzel-brush-style_23.cjs.entry.js → kritzel-color_22.cjs.entry.js} +1046 -874
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/stencil.cjs.js +1 -1
  10. package/dist/collection/classes/commands/add-object.command.js +6 -7
  11. package/dist/collection/classes/commands/add-object.command.js.map +1 -1
  12. package/dist/collection/classes/commands/add-selection-group.command.js +9 -9
  13. package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -1
  14. package/dist/collection/classes/commands/base.command.js +3 -3
  15. package/dist/collection/classes/commands/base.command.js.map +1 -1
  16. package/dist/collection/classes/commands/batch.command.js +2 -2
  17. package/dist/collection/classes/commands/batch.command.js.map +1 -1
  18. package/dist/collection/classes/commands/move-selection-group.command.js +15 -7
  19. package/dist/collection/classes/commands/move-selection-group.command.js.map +1 -1
  20. package/dist/collection/classes/commands/remove-object.command.js +8 -9
  21. package/dist/collection/classes/commands/remove-object.command.js.map +1 -1
  22. package/dist/collection/classes/commands/remove-selection-group.command.js +7 -7
  23. package/dist/collection/classes/commands/remove-selection-group.command.js.map +1 -1
  24. package/dist/collection/classes/commands/resize-selection-group.command.js +15 -7
  25. package/dist/collection/classes/commands/resize-selection-group.command.js.map +1 -1
  26. package/dist/collection/classes/commands/rotate-selection-group.command.js +14 -12
  27. package/dist/collection/classes/commands/rotate-selection-group.command.js.map +1 -1
  28. package/dist/collection/classes/commands/update-object.command.js +6 -5
  29. package/dist/collection/classes/commands/update-object.command.js.map +1 -1
  30. package/dist/collection/classes/commands/update-viewport.command.js +11 -11
  31. package/dist/collection/classes/commands/update-viewport.command.js.map +1 -1
  32. package/dist/collection/classes/{store.class.js → core/core.class.js} +116 -145
  33. package/dist/collection/classes/core/core.class.js.map +1 -0
  34. package/dist/collection/classes/{database.class.js → core/database.class.js} +28 -20
  35. package/dist/collection/classes/core/database.class.js.map +1 -0
  36. package/dist/collection/classes/core/history.class.js +88 -0
  37. package/dist/collection/classes/core/history.class.js.map +1 -0
  38. package/dist/collection/classes/{reviver.class.js → core/reviver.class.js} +27 -23
  39. package/dist/collection/classes/core/reviver.class.js.map +1 -0
  40. package/dist/collection/classes/core/store.class.js +51 -0
  41. package/dist/collection/classes/core/store.class.js.map +1 -0
  42. package/dist/collection/classes/core/viewport.class.js +165 -0
  43. package/dist/collection/classes/core/viewport.class.js.map +1 -0
  44. package/dist/collection/classes/core/workspace.class.js +42 -0
  45. package/dist/collection/classes/core/workspace.class.js.map +1 -0
  46. package/dist/collection/classes/handlers/base.handler.js +4 -4
  47. package/dist/collection/classes/handlers/base.handler.js.map +1 -1
  48. package/dist/collection/classes/handlers/context-menu.handler.js +29 -19
  49. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
  50. package/dist/collection/classes/handlers/hover.handler.js +5 -5
  51. package/dist/collection/classes/handlers/hover.handler.js.map +1 -1
  52. package/dist/collection/classes/handlers/key.handler.js +38 -44
  53. package/dist/collection/classes/handlers/key.handler.js.map +1 -1
  54. package/dist/collection/classes/handlers/move.handler.js +49 -44
  55. package/dist/collection/classes/handlers/move.handler.js.map +1 -1
  56. package/dist/collection/classes/handlers/resize.handler.js +55 -60
  57. package/dist/collection/classes/handlers/resize.handler.js.map +1 -1
  58. package/dist/collection/classes/handlers/rotation.handler.js +59 -69
  59. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
  60. package/dist/collection/classes/handlers/selection.handler.js +73 -72
  61. package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
  62. package/dist/collection/classes/objects/base-object.class.js +30 -17
  63. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  64. package/dist/collection/classes/objects/custom-element.class.js +3 -3
  65. package/dist/collection/classes/objects/custom-element.class.js.map +1 -1
  66. package/dist/collection/classes/objects/image.class.js +5 -5
  67. package/dist/collection/classes/objects/image.class.js.map +1 -1
  68. package/dist/collection/classes/objects/path.class.js +7 -7
  69. package/dist/collection/classes/objects/path.class.js.map +1 -1
  70. package/dist/collection/classes/objects/selection-box.class.js +4 -4
  71. package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
  72. package/dist/collection/classes/objects/selection-group.class.js +19 -20
  73. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  74. package/dist/collection/classes/objects/text.class.js +13 -13
  75. package/dist/collection/classes/objects/text.class.js.map +1 -1
  76. package/dist/collection/classes/registries/tool.registry.js +2 -2
  77. package/dist/collection/classes/registries/tool.registry.js.map +1 -1
  78. package/dist/collection/classes/tools/base-tool.class.js +11 -5
  79. package/dist/collection/classes/tools/base-tool.class.js.map +1 -1
  80. package/dist/collection/classes/tools/brush-tool.class.js +57 -53
  81. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -1
  82. package/dist/collection/classes/tools/eraser-tool.class.js +26 -26
  83. package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -1
  84. package/dist/collection/classes/tools/image-tool.class.js +11 -11
  85. package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
  86. package/dist/collection/classes/tools/selection-tool.class.js +39 -37
  87. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
  88. package/dist/collection/classes/tools/text-tool.class.js +37 -37
  89. package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
  90. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +28 -28
  91. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -1
  92. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +7 -9
  93. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +177 -7
  94. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  95. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +237 -232
  96. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  97. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +1 -1
  98. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -1
  99. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  100. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -1
  101. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +5 -0
  102. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +3 -3
  103. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +1 -1
  104. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +12 -12
  105. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -1
  106. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  107. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -1
  108. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +1 -1
  109. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -1
  110. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  111. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -1
  112. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +1 -0
  113. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +1 -1
  114. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +5 -1
  115. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +2 -2
  116. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -1
  117. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +18 -7
  118. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +24 -9
  119. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +1 -1
  120. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +4 -42
  121. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -1
  122. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +0 -4
  123. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +52 -10
  124. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -1
  125. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +4 -0
  126. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  127. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +1 -1
  128. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +79 -7
  129. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -1
  130. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +47 -15
  131. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -1
  132. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +4 -0
  133. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +6 -6
  134. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -1
  135. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +2 -2
  136. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +1 -1
  137. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +12 -1
  138. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +23 -7
  139. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -1
  140. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +5 -0
  141. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  142. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +1 -1
  143. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +25 -15
  144. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -1
  145. package/dist/collection/configs/default-engine-state.js +0 -1
  146. package/dist/collection/configs/default-engine-state.js.map +1 -1
  147. package/dist/collection/helpers/devices.helper.js +20 -0
  148. package/dist/collection/helpers/devices.helper.js.map +1 -1
  149. package/dist/collection/helpers/event.helper.js +1 -5
  150. package/dist/collection/helpers/event.helper.js.map +1 -1
  151. package/dist/collection/helpers/html.helper.js +29 -0
  152. package/dist/collection/helpers/html.helper.js.map +1 -1
  153. package/dist/collection/helpers/object.helper.js +0 -14
  154. package/dist/collection/helpers/object.helper.js.map +1 -1
  155. package/dist/collection/index.js +1 -1
  156. package/dist/collection/index.js.map +1 -1
  157. package/dist/collection/interfaces/clonable.interface.js +2 -0
  158. package/dist/collection/interfaces/clonable.interface.js.map +1 -0
  159. package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
  160. package/dist/collection/interfaces/serializable.interface.js.map +1 -1
  161. package/dist/collection/types/deep-readonly.type.js +2 -0
  162. package/dist/collection/types/deep-readonly.type.js.map +1 -0
  163. package/dist/components/index.js +3 -3
  164. package/dist/components/kritzel-brush-style.js +59 -1
  165. package/dist/components/kritzel-brush-style.js.map +1 -1
  166. package/dist/components/kritzel-color-palette.js +1 -1
  167. package/dist/components/kritzel-color.js +1 -1
  168. package/dist/components/kritzel-context-menu.js +1 -1
  169. package/dist/components/kritzel-control-brush-config.js +1 -1
  170. package/dist/components/kritzel-control-text-config.js +1 -1
  171. package/dist/components/kritzel-controls.js +1 -1
  172. package/dist/components/kritzel-cursor-trail.js +1 -1
  173. package/dist/components/kritzel-dropdown.js +1 -1
  174. package/dist/components/kritzel-editor.js +80 -37
  175. package/dist/components/kritzel-editor.js.map +1 -1
  176. package/dist/components/kritzel-engine.js +1 -1
  177. package/dist/components/kritzel-font-family.js +1 -1
  178. package/dist/components/kritzel-font-size.js +1 -1
  179. package/dist/components/kritzel-font.js +1 -1
  180. package/dist/components/kritzel-icon.js +1 -1
  181. package/dist/components/kritzel-menu-item.js +1 -1
  182. package/dist/components/kritzel-menu.js +1 -1
  183. package/dist/components/kritzel-portal.js +1 -1
  184. package/dist/components/kritzel-split-button.js +1 -1
  185. package/dist/components/kritzel-stroke-size.js +1 -1
  186. package/dist/components/kritzel-tooltip.js +1 -1
  187. package/dist/components/kritzel-utility-panel.js +1 -1
  188. package/dist/components/kritzel-workspace-manager.js +1 -1
  189. package/dist/components/{p-CMJ3P0Vw.js → p-0iJh9Z6m.js} +5 -5
  190. package/dist/components/p-0iJh9Z6m.js.map +1 -0
  191. package/dist/components/p-B0kd2rUI.js +16 -0
  192. package/dist/components/p-B0kd2rUI.js.map +1 -0
  193. package/dist/components/{p-BB5R2k1o.js → p-B3LGnqFz.js} +41 -31
  194. package/dist/components/p-B3LGnqFz.js.map +1 -0
  195. package/dist/components/{p-BB0_-X42.js → p-B7kZ1_RH.js} +4 -4
  196. package/dist/components/{p-BB0_-X42.js.map → p-B7kZ1_RH.js.map} +1 -1
  197. package/dist/components/{p-t4NIsuX9.js → p-B7w19kIk.js} +15 -27
  198. package/dist/components/p-B7w19kIk.js.map +1 -0
  199. package/dist/components/{p-B1BLgWL1.js → p-BGdsAz54.js} +27 -18
  200. package/dist/components/p-BGdsAz54.js.map +1 -0
  201. package/dist/components/{p-CGmS8wnN.js → p-BKvOO7NT.js} +26 -16
  202. package/dist/components/p-BKvOO7NT.js.map +1 -0
  203. package/dist/components/{p-BhiYvSBc.js → p-BM9IjvnD.js} +3 -3
  204. package/dist/components/p-BM9IjvnD.js.map +1 -0
  205. package/dist/components/{p-BrBQUN0Q.js → p-BPsQrpzN.js} +40 -11
  206. package/dist/components/p-BPsQrpzN.js.map +1 -0
  207. package/dist/components/p-C6qB08BS.js +68 -0
  208. package/dist/components/p-C6qB08BS.js.map +1 -0
  209. package/dist/components/{p-BPz_H-EG.js → p-CM8KdFZI.js} +28 -16
  210. package/dist/components/p-CM8KdFZI.js.map +1 -0
  211. package/dist/components/{p-DHSEK3rF.js → p-CNTK3JOp.js} +174 -153
  212. package/dist/components/p-CNTK3JOp.js.map +1 -0
  213. package/dist/components/{p-DMrtdhBD.js → p-CsyM5q2M.js} +7 -7
  214. package/dist/components/p-CsyM5q2M.js.map +1 -0
  215. package/dist/components/{p-BuewJQNl.js → p-CwH-bwjb.js} +1187 -1141
  216. package/dist/components/p-CwH-bwjb.js.map +1 -0
  217. package/dist/components/{p-BgmKrd5Z.js → p-DCx3703u.js} +5 -5
  218. package/dist/components/p-DCx3703u.js.map +1 -0
  219. package/dist/components/{p-trncBp_6.js → p-DFO-6kuA.js} +15 -15
  220. package/dist/components/p-DFO-6kuA.js.map +1 -0
  221. package/dist/components/{p-BubxwvMA.js → p-Db3kxVe2.js} +24 -24
  222. package/dist/components/p-Db3kxVe2.js.map +1 -0
  223. package/dist/components/{p-BexTdWaX.js → p-Ddlbt3Bj.js} +4 -4
  224. package/dist/components/p-Ddlbt3Bj.js.map +1 -0
  225. package/dist/components/{p-CHxPWeZd.js → p-DjU7p3od.js} +11 -11
  226. package/dist/components/{p-CHxPWeZd.js.map → p-DjU7p3od.js.map} +1 -1
  227. package/dist/components/{p-BeljsQ-8.js → p-Dw4n-4zp.js} +32 -17
  228. package/dist/components/p-Dw4n-4zp.js.map +1 -0
  229. package/dist/components/{p-DxTu1aoJ.js → p-NP1Htol7.js} +7 -45
  230. package/dist/components/p-NP1Htol7.js.map +1 -0
  231. package/dist/components/p-YqK8ch2R.js +46 -0
  232. package/dist/components/p-YqK8ch2R.js.map +1 -0
  233. package/dist/components/p-l10It7Nm.js +30 -0
  234. package/dist/components/p-l10It7Nm.js.map +1 -0
  235. package/dist/components/{p-p1Jkec_q.js → p-sq9jgfX0.js} +3 -3
  236. package/dist/components/p-sq9jgfX0.js.map +1 -0
  237. package/dist/components/{p-yZ48g7-u.js → p-sreNwi0N.js} +4 -4
  238. package/dist/components/{p-yZ48g7-u.js.map → p-sreNwi0N.js.map} +1 -1
  239. package/dist/esm/{index-B-oSk-v8.js → index-DY3KqYWc.js} +756 -702
  240. package/dist/esm/index-DY3KqYWc.js.map +1 -0
  241. package/dist/esm/index-oCOlsFCN.js +6 -2
  242. package/dist/esm/index.js +1 -1
  243. package/dist/esm/kritzel-brush-style.entry.js +30 -0
  244. package/dist/esm/kritzel-brush-style.entry.js.map +1 -0
  245. package/dist/esm/{kritzel-brush-style_23.entry.js → kritzel-color_22.entry.js} +1048 -875
  246. package/dist/esm/loader.js +1 -1
  247. package/dist/esm/stencil.js +1 -1
  248. package/dist/stencil/index.esm.js +1 -1
  249. package/dist/stencil/kritzel-brush-style.entry.esm.js.map +1 -0
  250. package/dist/stencil/p-25d1e040.entry.js +2 -0
  251. package/dist/stencil/p-25d1e040.entry.js.map +1 -0
  252. package/dist/stencil/p-DY3KqYWc.js +2 -0
  253. package/dist/stencil/p-DY3KqYWc.js.map +1 -0
  254. package/dist/stencil/p-dc534b01.entry.js +2 -0
  255. package/dist/stencil/p-dc534b01.entry.js.map +1 -0
  256. package/dist/stencil/stencil.esm.js +1 -1
  257. package/dist/types/classes/commands/add-object.command.d.ts +2 -2
  258. package/dist/types/classes/commands/add-selection-group.command.d.ts +2 -1
  259. package/dist/types/classes/commands/base.command.d.ts +3 -3
  260. package/dist/types/classes/commands/batch.command.d.ts +2 -1
  261. package/dist/types/classes/commands/move-selection-group.command.d.ts +2 -1
  262. package/dist/types/classes/commands/remove-object.command.d.ts +2 -2
  263. package/dist/types/classes/commands/remove-selection-group.command.d.ts +2 -2
  264. package/dist/types/classes/commands/resize-selection-group.command.d.ts +2 -1
  265. package/dist/types/classes/commands/rotate-selection-group.command.d.ts +2 -1
  266. package/dist/types/classes/commands/update-object.command.d.ts +2 -2
  267. package/dist/types/classes/commands/update-viewport.command.d.ts +2 -1
  268. package/dist/types/classes/{store.class.d.ts → core/core.class.d.ts} +9 -19
  269. package/dist/types/classes/{database.class.d.ts → core/database.class.d.ts} +3 -2
  270. package/dist/types/classes/{history.class.d.ts → core/history.class.d.ts} +5 -5
  271. package/dist/types/classes/core/reviver.class.d.ts +6 -0
  272. package/dist/types/classes/core/store.class.d.ts +17 -0
  273. package/dist/types/classes/{viewport.class.d.ts → core/viewport.class.d.ts} +3 -3
  274. package/dist/types/classes/core/workspace.class.d.ts +24 -0
  275. package/dist/types/classes/handlers/base.handler.d.ts +3 -3
  276. package/dist/types/classes/handlers/context-menu.handler.d.ts +2 -2
  277. package/dist/types/classes/handlers/hover.handler.d.ts +2 -2
  278. package/dist/types/classes/handlers/key.handler.d.ts +2 -2
  279. package/dist/types/classes/handlers/move.handler.d.ts +4 -2
  280. package/dist/types/classes/handlers/resize.handler.d.ts +3 -2
  281. package/dist/types/classes/handlers/rotation.handler.d.ts +6 -2
  282. package/dist/types/classes/handlers/selection.handler.d.ts +2 -2
  283. package/dist/types/classes/objects/base-object.class.d.ts +8 -5
  284. package/dist/types/classes/objects/custom-element.class.d.ts +2 -2
  285. package/dist/types/classes/objects/image.class.d.ts +2 -2
  286. package/dist/types/classes/objects/path.class.d.ts +2 -2
  287. package/dist/types/classes/objects/selection-box.class.d.ts +2 -2
  288. package/dist/types/classes/objects/selection-group.class.d.ts +2 -2
  289. package/dist/types/classes/objects/text.class.d.ts +2 -2
  290. package/dist/types/classes/registries/tool.registry.d.ts +2 -2
  291. package/dist/types/classes/tools/base-tool.class.d.ts +8 -4
  292. package/dist/types/classes/tools/brush-tool.class.d.ts +2 -2
  293. package/dist/types/classes/tools/eraser-tool.class.d.ts +2 -2
  294. package/dist/types/classes/tools/image-tool.class.d.ts +2 -2
  295. package/dist/types/classes/tools/selection-tool.class.d.ts +2 -2
  296. package/dist/types/classes/tools/text-tool.class.d.ts +2 -2
  297. package/dist/types/components/core/kritzel-cursor-trail/kritzel-cursor-trail.d.ts +5 -5
  298. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +13 -3
  299. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +21 -22
  300. package/dist/types/components/shared/kritzel-dropdown/kritzel-dropdown.d.ts +2 -2
  301. package/dist/types/components/shared/kritzel-menu-item/kritzel-menu-item.d.ts +2 -0
  302. package/dist/types/components/shared/kritzel-portal/kritzel-portal.d.ts +0 -1
  303. package/dist/types/components/shared/kritzel-split-button/kritzel-split-button.d.ts +4 -2
  304. package/dist/types/components/shared/kritzel-tooltip/kritzel-tooltip.d.ts +8 -2
  305. package/dist/types/components/ui/kritzel-context-menu/kritzel-context-menu.d.ts +5 -3
  306. package/dist/types/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.d.ts +1 -1
  307. package/dist/types/components/ui/kritzel-controls/kritzel-controls.d.ts +3 -1
  308. package/dist/types/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.d.ts +3 -2
  309. package/dist/types/components.d.ts +41 -12
  310. package/dist/types/helpers/devices.helper.d.ts +4 -0
  311. package/dist/types/helpers/event.helper.d.ts +1 -1
  312. package/dist/types/helpers/html.helper.d.ts +1 -0
  313. package/dist/types/helpers/object.helper.d.ts +0 -2
  314. package/dist/types/index.d.ts +1 -1
  315. package/dist/types/interfaces/clonable.interface.d.ts +3 -0
  316. package/dist/types/interfaces/engine-state.interface.d.ts +1 -2
  317. package/dist/types/interfaces/serializable.interface.d.ts +2 -1
  318. package/dist/types/types/deep-readonly.type.d.ts +7 -0
  319. package/package.json +3 -2
  320. package/dist/cjs/index-BwINBV6L.js.map +0 -1
  321. package/dist/collection/classes/database.class.js.map +0 -1
  322. package/dist/collection/classes/history.class.js +0 -88
  323. package/dist/collection/classes/history.class.js.map +0 -1
  324. package/dist/collection/classes/reviver.class.js.map +0 -1
  325. package/dist/collection/classes/store.class.js.map +0 -1
  326. package/dist/collection/classes/viewport.class.js +0 -153
  327. package/dist/collection/classes/viewport.class.js.map +0 -1
  328. package/dist/collection/classes/workspace.class.js +0 -15
  329. package/dist/collection/classes/workspace.class.js.map +0 -1
  330. package/dist/components/p-B1BLgWL1.js.map +0 -1
  331. package/dist/components/p-BB5R2k1o.js.map +0 -1
  332. package/dist/components/p-BPz_H-EG.js.map +0 -1
  333. package/dist/components/p-B_lb1FGi.js +0 -19
  334. package/dist/components/p-B_lb1FGi.js.map +0 -1
  335. package/dist/components/p-BeljsQ-8.js.map +0 -1
  336. package/dist/components/p-BexTdWaX.js.map +0 -1
  337. package/dist/components/p-BgmKrd5Z.js.map +0 -1
  338. package/dist/components/p-BhiYvSBc.js.map +0 -1
  339. package/dist/components/p-BrBQUN0Q.js.map +0 -1
  340. package/dist/components/p-BubxwvMA.js.map +0 -1
  341. package/dist/components/p-BuewJQNl.js.map +0 -1
  342. package/dist/components/p-CGmS8wnN.js.map +0 -1
  343. package/dist/components/p-CJKA5zIE.js +0 -10
  344. package/dist/components/p-CJKA5zIE.js.map +0 -1
  345. package/dist/components/p-CMJ3P0Vw.js.map +0 -1
  346. package/dist/components/p-DHSEK3rF.js.map +0 -1
  347. package/dist/components/p-DMrtdhBD.js.map +0 -1
  348. package/dist/components/p-DnUKql15.js +0 -30
  349. package/dist/components/p-DnUKql15.js.map +0 -1
  350. package/dist/components/p-DxTu1aoJ.js.map +0 -1
  351. package/dist/components/p-p1Jkec_q.js.map +0 -1
  352. package/dist/components/p-rIRXQdie.js +0 -64
  353. package/dist/components/p-rIRXQdie.js.map +0 -1
  354. package/dist/components/p-t4NIsuX9.js.map +0 -1
  355. package/dist/components/p-trncBp_6.js.map +0 -1
  356. package/dist/esm/index-B-oSk-v8.js.map +0 -1
  357. package/dist/stencil/p-3bb80782.entry.js +0 -2
  358. package/dist/stencil/p-3bb80782.entry.js.map +0 -1
  359. package/dist/stencil/p-B-oSk-v8.js +0 -2
  360. package/dist/stencil/p-B-oSk-v8.js.map +0 -1
  361. package/dist/types/classes/reviver.class.d.ts +0 -6
  362. 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,131 +13,100 @@ 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;
18
20
  workspace;
21
+ onWorkspaceChange(newWorkspace) {
22
+ if (this.core.store.state.activeWorkspace !== newWorkspace) {
23
+ this.core.initializeWorkspace(newWorkspace);
24
+ }
25
+ }
19
26
  activeTool;
20
27
  globalContextMenuItems;
21
28
  objectContextMenuItems;
22
29
  scaleMax = ABSOLUTE_SCALE_MAX;
23
- scaleMin = ABSOLUTE_SCALE_MIN;
24
- isEngineReady;
25
- activeToolChange;
26
- workspacesChange;
27
- host;
28
- forceUpdate = 0;
29
- onWorkspaceChange(newWorkspace) {
30
- if (newWorkspace) {
31
- this.store.initializeWorkspace(newWorkspace);
32
- }
33
- }
34
30
  validateScaleMax(newValue) {
35
31
  if (newValue > ABSOLUTE_SCALE_MAX) {
36
32
  console.warn(`scaleMax cannot be greater than ${ABSOLUTE_SCALE_MAX}.`);
37
33
  this.scaleMax = ABSOLUTE_SCALE_MAX;
38
- this.store.state.scaleMax = this.scaleMax;
34
+ this.core.store.setState('scaleMax', this.scaleMax);
39
35
  }
40
36
  else {
41
- this.store.state.scaleMax = newValue;
37
+ this.core.store.setState('scaleMax', newValue);
42
38
  }
43
39
  }
40
+ scaleMin = ABSOLUTE_SCALE_MIN;
44
41
  validateScaleMin(newValue) {
45
42
  if (newValue < ABSOLUTE_SCALE_MIN) {
46
43
  console.warn(`scaleMin cannot be less than ${ABSOLUTE_SCALE_MIN}.`);
47
44
  this.scaleMin = ABSOLUTE_SCALE_MIN;
48
- this.store.state.scaleMin = this.scaleMin;
45
+ this.core.store.setState('scaleMin', this.scaleMin);
49
46
  }
50
47
  else {
51
- this.store.state.scaleMin = newValue;
52
- }
53
- }
54
- store;
55
- viewport;
56
- contextMenuHandler;
57
- keyHandler;
58
- contextMenuElement = null;
59
- get isSelecting() {
60
- return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.isSelecting;
61
- }
62
- get isSelectionActive() {
63
- return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.selectionGroup !== null;
64
- }
65
- constructor() {
66
- this.store = new KritzelStore(this);
67
- }
68
- componentWillLoad() {
69
- this.validateScaleMax(this.scaleMax);
70
- this.validateScaleMin(this.scaleMin);
71
- }
72
- async componentDidLoad() {
73
- this.contextMenuHandler = new KritzelContextMenuHandler(this.store, this.globalContextMenuItems, this.objectContextMenuItems);
74
- this.keyHandler = new KritzelKeyHandler(this.store);
75
- this.viewport = new KritzelViewport(this.store, this.host);
76
- this._registerStateChangeListeners();
77
- await this.store.initializeDatabase();
78
- await this.store.initializeWorkspace(this.workspace);
79
- if (this.store.state.isReady === false) {
80
- this.store.state.isReady = true;
81
- this.isEngineReady.emit(this.store.state);
48
+ this.core.store.setState('scaleMin', newValue);
82
49
  }
83
50
  }
51
+ isEngineReady;
52
+ activeToolChange;
53
+ workspacesChange;
54
+ longpress;
55
+ forceUpdate = 0;
84
56
  handleWheel(ev) {
85
- if (this.store.isDisabled) {
57
+ if (this.core.store.isDisabled) {
86
58
  return;
87
59
  }
88
- if (this.store.state.isContextMenuVisible) {
60
+ if (this.core.store.state.isContextMenuVisible) {
89
61
  this.hideContextMenu();
90
62
  }
91
63
  this.viewport.handleWheel(ev);
92
- this.store.state?.activeTool?.handleWheel(ev);
64
+ this.core.store.state?.activeTool?.handleWheel(ev);
93
65
  }
94
66
  handlePointerDown(ev) {
95
- if (this.store.isDisabled) {
67
+ if (this.core.store.isDisabled) {
96
68
  return;
97
69
  }
98
- if (KritzelEventHelper.isPointerEventOnContextMenu(ev) === false && this.store.state.isContextMenuVisible) {
99
- this.hideContextMenu();
100
- return;
70
+ if (KritzelDevicesHelper.isTouchDevice()) {
71
+ KritzelEventHelper.onLongPress(ev, (event) => this.longpress.emit(event));
101
72
  }
102
- KritzelEventHelper.onLongTouchPress(ev, (event) => {
103
- if (!(this.store.state.activeTool instanceof KritzelSelectionTool)) {
104
- return;
105
- }
106
- this.contextMenuHandler.handleContextMenu(event);
107
- });
108
73
  this.host.setPointerCapture(ev.pointerId);
109
- this.store.state.pointers.set(ev.pointerId, ev);
74
+ this.core.store.state.pointers.set(ev.pointerId, ev);
110
75
  this.viewport.handlePointerDown(ev);
111
- this.store.state?.activeTool?.handlePointerDown(ev);
76
+ this.core.store.state?.activeTool?.handlePointerDown(ev);
112
77
  }
113
78
  handlePointerMove(ev) {
114
- if (this.store.isDisabled) {
79
+ if (this.core.store.isDisabled) {
115
80
  return;
116
81
  }
117
- this.store.state.pointers.set(ev.pointerId, ev);
82
+ this.core.store.state.pointers.set(ev.pointerId, ev);
118
83
  this.viewport.handlePointerMove(ev);
119
- this.store.state?.activeTool?.handlePointerMove(ev);
84
+ this.core.store.state?.activeTool?.handlePointerMove(ev);
120
85
  }
121
86
  handlePointerUp(ev) {
122
- if (this.store.isDisabled) {
87
+ if (this.core.store.isDisabled) {
123
88
  return;
124
89
  }
125
- this.store.state.pointers.delete(ev.pointerId);
90
+ this.core.store.state.pointers.delete(ev.pointerId);
126
91
  this.host.releasePointerCapture(ev.pointerId);
127
92
  this.viewport.handlePointerUp(ev);
128
- this.store.state?.activeTool?.handlePointerUp(ev);
93
+ this.core.store.state?.activeTool?.handlePointerUp(ev);
129
94
  }
130
95
  handlePointerCancel(ev) {
131
- if (this.store.isDisabled) {
96
+ if (this.core.store.isDisabled) {
132
97
  return;
133
98
  }
134
99
  this.host.releasePointerCapture(ev.pointerId);
135
- this.store.state.pointers.delete(ev.pointerId);
100
+ this.core.store.state.pointers.delete(ev.pointerId);
136
101
  this.viewport.handlePointerUp(ev);
137
- this.store.state?.activeTool?.handlePointerUp(ev);
102
+ this.core.store.state?.activeTool?.handlePointerUp(ev);
103
+ }
104
+ handleLongPress(ev) {
105
+ this.contextMenuHandler.handleContextMenu(ev.detail);
138
106
  }
139
107
  handleContextMenu(ev) {
140
108
  ev.preventDefault();
141
- if (this.store.isDisabled) {
109
+ if (this.core.store.isDisabled) {
142
110
  return;
143
111
  }
144
112
  if (ev.pointerType === 'touch') {
@@ -155,26 +123,12 @@ export class KritzelEngine {
155
123
  handleKeyUp(ev) {
156
124
  this.keyHandler.handleKeyUp(ev);
157
125
  }
158
- updateFocus(ev) {
159
- if (this.store.isDisabled) {
160
- return;
161
- }
162
- const rect = this.store.state.host.getBoundingClientRect();
163
- const isInside = ev.clientX >= rect.left && ev.clientX <= rect.right && ev.clientY >= rect.top && ev.clientY <= rect.bottom;
164
- const path = ev.composedPath();
165
- const kritzelEngineElement = this.host.closest('kritzel-engine');
166
- const isInKritzelEngine = path.includes(kritzelEngineElement || this.host);
167
- this.store.setState('isFocused', isInside && isInKritzelEngine);
168
- }
169
- handleClick() {
170
- this.enable();
171
- }
172
126
  async registerTool(toolName, toolClass, toolConfig) {
173
127
  if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof KritzelBaseTool)) {
174
128
  console.error(`Failed to register tool "${toolName}": Tool class must be a constructor function`);
175
129
  return null;
176
130
  }
177
- const registeredTool = KritzelToolRegistry.registerTool(toolName, toolClass, this.store);
131
+ const registeredTool = KritzelToolRegistry.registerTool(toolName, toolClass, this.core);
178
132
  if (toolConfig) {
179
133
  Object.entries(toolConfig).forEach(([key, value]) => {
180
134
  registeredTool[key] = value;
@@ -183,153 +137,183 @@ export class KritzelEngine {
183
137
  return Promise.resolve(registeredTool);
184
138
  }
185
139
  async changeActiveTool(tool) {
186
- this.store.state.activeTool?.onDeactivate();
187
- this.store.setState('activeTool', tool);
188
- this.store.deselectAllObjects();
140
+ this.core.store.state.activeTool?.onDeactivate();
141
+ this.core.store.setState('activeTool', tool);
142
+ this.core.deselectAllObjects();
189
143
  tool?.onActivate();
190
144
  }
191
- async setFocus() {
192
- this.host.focus();
193
- this.store.state.isFocused = true;
194
- }
195
145
  async disable() {
196
- this.store.state.isEnabled = false;
197
- this.forceUpdate++;
146
+ this.core.store.setState('isEnabled', false);
147
+ this.core.rerender();
198
148
  }
199
149
  async enable() {
200
- this.store.state.isEnabled = true;
201
- this.forceUpdate++;
150
+ this.core.store.setState('isEnabled', true);
151
+ this.core.rerender();
202
152
  }
203
153
  async delete() {
204
- this.store.delete();
154
+ this.core.delete();
205
155
  }
206
156
  async copy() {
207
- this.store.copy();
157
+ this.core.copy();
208
158
  }
209
159
  async paste(x, y) {
210
- this.store.paste(x, y);
160
+ this.core.paste(x, y);
211
161
  }
212
162
  async bringForward(object) {
213
- this.store.bringForward(object);
163
+ this.core.bringForward(object);
214
164
  }
215
165
  async sendBackward(object) {
216
- this.store.sendBackward(object);
166
+ this.core.sendBackward(object);
217
167
  }
218
168
  async bringToFront(object) {
219
- this.store.bringToFront(object);
169
+ this.core.bringToFront(object);
220
170
  }
221
171
  async sendToBack(object) {
222
- this.store.sendToBack(object);
172
+ this.core.sendToBack(object);
223
173
  }
224
174
  async undo() {
225
- this.store.history.undo();
175
+ this.core.history.undo();
226
176
  }
227
177
  async redo() {
228
- this.store.history.redo();
178
+ this.core.history.redo();
229
179
  }
230
180
  async hideContextMenu() {
231
- this.store.state.pointers.clear();
232
- this.store.state.isContextMenuVisible = false;
233
- this.store.state.selectionBox = null;
234
- this.store.state.isSelecting = false;
181
+ this.core.store.state.pointers.clear();
182
+ this.core.store.setState('isContextMenuVisible', false);
183
+ this.core.store.setState('selectionBox', null);
184
+ this.core.store.setState('isSelecting', false);
185
+ this.core.store.setState('isEnabled', true);
186
+ this.core.rerender();
235
187
  }
236
188
  async getObjectById(id) {
237
- const object = this.store.objects.find(obj => obj.id === id);
189
+ const object = this.core.store.allObjects.find(obj => obj.id === id);
238
190
  return object || null;
239
191
  }
240
192
  async addObject(object) {
241
- this.store.deselectAllObjects();
193
+ this.core.deselectAllObjects();
242
194
  object.id = object.generateId();
243
- object._store = this.store;
244
- object.scale = object.scale ? object.scale : this.store.state.scale;
245
- object.zIndex = this.store.currentZIndex;
246
- const command = new AddObjectCommand(this.store, this, object);
247
- this.store.history.executeCommand(command);
195
+ object._core = this.core;
196
+ object.scale = object.scale ? object.scale : this.core.store.state.scale;
197
+ object.zIndex = this.core.store.currentZIndex;
198
+ const command = new AddObjectCommand(this.core, this, object);
199
+ this.core.history.executeCommand(command);
248
200
  return object;
249
201
  }
250
202
  async updateObject(object, updatedProperties) {
251
- this.store.deselectAllObjects();
252
- const command = new UpdateObjectCommand(this.store, this, object, updatedProperties);
253
- this.store.history.executeCommand(command);
203
+ this.core.deselectAllObjects();
204
+ const command = new UpdateObjectCommand(this.core, this, object, updatedProperties);
205
+ this.core.history.executeCommand(command);
254
206
  return object;
255
207
  }
256
208
  async removeObject(object) {
257
- this.store.deselectAllObjects();
258
- const command = new RemoveObjectCommand(this.store, this, object);
259
- this.store.history.executeCommand(command);
209
+ this.core.deselectAllObjects();
210
+ const command = new RemoveObjectCommand(this.core, this, object);
211
+ this.core.history.executeCommand(command);
260
212
  return object;
261
213
  }
262
214
  async getSelectedObjects() {
263
- return this.store.state.selectionGroup ? this.store.state.selectionGroup.objects : [];
215
+ return this.core.store.state.selectionGroup ? this.core.store.state.selectionGroup.objects : [];
264
216
  }
265
217
  async selectObjects(objects) {
266
- this.store.state.activeTool?.onDeactivate();
267
- this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
268
- this.store.deselectAllObjects();
269
- this.store.selectObjects(objects);
218
+ this.core.store.state.activeTool?.onDeactivate();
219
+ this.core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
220
+ this.core.deselectAllObjects();
221
+ this.core.selectObjects(objects);
270
222
  }
271
223
  async selectAllObjectsInViewport() {
272
- this.store.state.activeTool?.onDeactivate();
273
- this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
274
- this.store.deselectAllObjects();
275
- this.store.selectAllObjectsInViewport();
224
+ this.core.store.state.activeTool?.onDeactivate();
225
+ this.core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
226
+ this.core.deselectAllObjects();
227
+ this.core.selectAllObjectsInViewport();
276
228
  }
277
229
  async clearSelection() {
278
- this.store.clearSelection();
230
+ this.core.clearSelection();
279
231
  }
280
232
  async centerObjectInViewport(object) {
281
233
  object.centerInViewport();
282
- const command = new UpdateObjectCommand(this.store, this, object, object);
283
- this.store.history.executeCommand(command);
234
+ const command = new UpdateObjectCommand(this.core, this, object, object);
235
+ this.core.history.executeCommand(command);
284
236
  return object;
285
237
  }
286
238
  async getCopiedObjects() {
287
- return this.store.state.copiedObjects?.objects || [];
239
+ return this.core.store.state.copiedObjects?.objects || [];
288
240
  }
289
241
  async createWorkspace(workspace) {
290
- return this.store.createWorkspace(workspace).then(() => {
291
- this.workspacesChange.emit(this.store.state.workspaces);
292
- });
242
+ workspace._core = this.core;
243
+ await this.core.createWorkspace(workspace);
244
+ this.workspacesChange.emit(this.core.store.state.workspaces);
245
+ return workspace;
293
246
  }
294
247
  async updateWorkspace(workspace) {
295
- return this.store.updateWorkspace(workspace).then(() => {
296
- this.workspacesChange.emit(this.store.state.workspaces);
297
- });
248
+ await this.core.updateWorkspace(workspace);
249
+ this.workspacesChange.emit(this.core.store.state.workspaces);
298
250
  }
299
251
  async deleteWorkspace(workspace) {
300
- return this.store.deleteWorkspace(workspace).then(async () => {
301
- this.workspacesChange.emit(this.store.state.workspaces);
302
- });
252
+ await this.core.deleteWorkspace(workspace);
253
+ this.workspacesChange.emit(this.core.store.state.workspaces);
303
254
  }
304
255
  async getWorkspaces() {
305
- return this.store.getWorkspaces();
256
+ return this.core.getWorkspaces();
257
+ }
258
+ async getActiveWorkspace() {
259
+ return this.core.store.state.activeWorkspace;
260
+ }
261
+ core;
262
+ viewport;
263
+ contextMenuHandler;
264
+ keyHandler;
265
+ contextMenuElement = null;
266
+ get isSelecting() {
267
+ return this.core.store.state.activeTool instanceof KritzelSelectionTool && this.core.store.state.isSelecting;
268
+ }
269
+ get isSelectionActive() {
270
+ return this.core.store.state.activeTool instanceof KritzelSelectionTool && this.core.store.state.selectionGroup !== null;
271
+ }
272
+ constructor() {
273
+ this.core = new KritzelCore(this);
274
+ }
275
+ componentWillLoad() {
276
+ this.validateScaleMax(this.scaleMax);
277
+ this.validateScaleMin(this.scaleMin);
278
+ }
279
+ async componentDidLoad() {
280
+ this.contextMenuHandler = new KritzelContextMenuHandler(this.core, this.globalContextMenuItems, this.objectContextMenuItems);
281
+ this.keyHandler = new KritzelKeyHandler(this.core);
282
+ this.viewport = new KritzelViewport(this.core, this.host);
283
+ await this.core.initializeDatabase();
284
+ await this.core.initializeWorkspace(this.workspace);
285
+ this._registerStateChangeListeners();
286
+ if (this.core.store.state.isReady === false) {
287
+ this.core.store.setState('isReady', true);
288
+ this.isEngineReady.emit(this.core.store.state);
289
+ }
306
290
  }
307
291
  _registerStateChangeListeners() {
308
- this.store.onStateChange('activeTool', this._handleActiveToolChange.bind(this));
309
- this.store.onStateChange('isFocused', this._handleIsFocusedChange.bind(this));
292
+ this.core.store.onStateChange('activeTool', this._handleActiveToolChange.bind(this));
310
293
  }
311
294
  _handleActiveToolChange(activeTool) {
312
295
  if (!(activeTool instanceof KritzelSelectionTool)) {
313
- this.store.clearSelection();
296
+ this.core.clearSelection();
314
297
  }
315
- this.store.state.skipContextMenu = false;
298
+ this.core.store.setState('skipContextMenu', false);
316
299
  this.activeToolChange.emit(activeTool);
317
300
  KritzelKeyboardHelper.forceHideKeyboard();
318
301
  }
319
- _handleIsFocusedChange(isFocused) {
320
- if (!isFocused) {
321
- this.store.resetActiveText();
322
- }
323
- }
324
302
  render() {
325
303
  const computedStyle = window.getComputedStyle(this.host);
326
304
  const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
327
305
  const baseHandleSize = parseFloat(baseHandleSizePx);
328
306
  const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
329
- 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: ", this.store.state?.activeWorkspace?.id), h("div", { key: 'af94b5061f0803588fece6cccdf540f46f13ca05' }, "ActiveWorkspaceName: ", this.store.state?.activeWorkspace?.name), h("div", { key: '89c0d21ce94f4eda72153554fadbd6942e785edc' }, "TranslateX: ", this.store.state?.translateX), h("div", { key: '340b5165265241972a7a940268c7940063ba8c12' }, "TranslateY: ", this.store.state?.translateY), h("div", { key: '428054b3ea4a1c327f03d6b37bfe6331dea6c57b' }, "ViewportWidth: ", this.store.state?.viewportWidth), h("div", { key: 'd67420ef633627413066a28b8ef9ac43c520015d' }, "ViewportHeight: ", this.store.state?.viewportHeight), h("div", { key: 'dedf9eb89c79fa496f7b6d0df9c646898f66b3d4' }, "ObjectsInViewport. ", this.store.objects.length), h("div", { key: '59bb8416941fd84305f2892f24098f6f4a084401' }, "Scale: ", this.store.state?.scale), h("div", { key: '6705a4cec22e4e33f75e296e17bc2952a3d1cba7' }, "ActiveTool: ", this.store.state?.activeTool?.name), h("div", { key: 'ca22e0a377a11fdca851b38f1bf425648cd3b9dd' }, "HasViewportChanged: ", this.store.state?.hasViewportChanged ? 'true' : 'false'), h("div", { key: '57508b9ee24a5af631e6bb1eace404c39af14f82' }, "IsEnabled: ", this.store.state?.isEnabled ? 'true' : 'false'), h("div", { key: 'f6cea367b5007f767afb25a033215abda734de9d' }, "IsScaling: ", this.store.state?.isScaling ? 'true' : 'false'), h("div", { key: '4386ef749facd2e54da7f58aa2713b87ed76f2df' }, "IsPanning: ", this.store.state?.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: ", this.store.state?.pointerX), h("div", { key: '4f21199328ffadddcc58b7d6b102a89e5079f676' }, "PointerY: ", this.store.state?.pointerY), h("div", { key: 'ac705f38cb323b8dc8cbf95f875657c5dec5c9ae' }, "SelectedObjects: ", this.store.state.selectionGroup?.objects.length || 0)), h("div", { key: '2ca55c53246e64520af6720a3f87d2357295ca7f', id: "origin", class: "origin", style: {
330
- transform: `matrix(${this.store.state?.scale}, 0, 0, ${this.store.state?.scale}, ${this.store.state?.translateX}, ${this.store.state?.translateY})`,
331
- } }, this.store.state.objectsMap.allObjects()?.map(object => {
332
- return (h("div", { key: object.id, style: { display: object.isInViewport() ? 'block' : 'none', transform: 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: {
307
+ return (h(Host, { key: 'da47553aad7abf8b5daab177c6933a9177b91089' }, h("div", { key: '4e64b43bfb85a61154d36ca8ecd3518d61445d50', class: "debug-panel", style: { display: this.core.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: '21742da9258a2b929b81c0ca6c8f37f41b228ad4' }, "ActiveWorkspaceId: ", this.core.store.state?.activeWorkspace?.id), h("div", { key: 'de31fcf57b0faf8fad2bb39336eeea35dbec35ca' }, "ActiveWorkspaceName: ", this.core.store.state?.activeWorkspace?.name), h("div", { key: 'a2cb298a867f92349b5e1fb556ee5f9c6110f1c7' }, "TranslateX: ", this.core.store.state?.translateX), h("div", { key: '28697bfcecf9f8b4b1972a90cd02855767433047' }, "TranslateY: ", this.core.store.state?.translateY), h("div", { key: '7fb25f6e9c9b8dea11832dbd311d2cc0b981cbeb' }, "ViewportWidth: ", this.core.store.state?.viewportWidth), h("div", { key: '92aeade312b3d28e4c9b0e1c7ca55f6932fd23d9' }, "ViewportHeight: ", this.core.store.state?.viewportHeight), h("div", { key: 'a4fd8090acaf094e44fdc2e72fcc388695b412c4' }, "Scale: ", this.core.store.state?.scale), h("div", { key: '6ff28100b64bafdffcb8fe9d49cd041a6a374817' }, "ActiveTool: ", this.core.store.state?.activeTool?.name), h("div", { key: '12a61ad3d070563eb721d0d4068143962914b2bc' }, "HasViewportChanged: ", this.core.store.state?.hasViewportChanged ? 'true' : 'false'), h("div", { key: '437309daa2af1a64c9b9d3548fe12e075dd4a8bd' }, "IsEnabled: ", this.core.store.state?.isEnabled ? 'true' : 'false'), h("div", { key: 'e6841095c220ebf081604c548729f085ec9d17bd' }, "IsScaling: ", this.core.store.state?.isScaling ? 'true' : 'false'), h("div", { key: 'b07316a528782f7560c2e42f7bd9edd473cc256c' }, "IsPanning: ", this.core.store.state?.isPanning ? 'true' : 'false'), h("div", { key: '7160a5aa21c4cdbf2b523f620c819ad541a2e466' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: '9ad29a686bc76b47d4c5040121b468428ade437a' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: '68f240aa7d7188996647afd0df73d63a253e18a1' }, "IsResizeHandleSelected: ", this.core.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '260010c089bdf0e8fd8c2406c39394ef79a85262' }, "IsRotationHandleSelected: ", this.core.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: '6b07975c781801b0a7d7727d0666a6765aa9e889' }, "IsDrawing: ", this.core.store.state.isDrawing ? 'true' : 'false'), h("div", { key: '83c949c9ed26c3d445421ba1f965a742f5fc149f' }, "IsWriting: ", this.core.store.state.isWriting ? 'true' : 'false'), h("div", { key: '1687122785d3370da5d91a975dd56f11aebc81c1' }, "PointerX: ", this.core.store.state?.pointerX), h("div", { key: 'a28e152a0510c9e3eef5624de1b5512baf45b37c' }, "PointerY: ", this.core.store.state?.pointerY), h("div", { key: '09e5a0157002fe95a46415d32a3eb17be8d959a9' }, "SelectedObjects: ", this.core.store.state.selectionGroup?.objects.length || 0)), h("div", { key: '5228fbae773f30d91b129c257ef08adca10a6a70', id: "origin", class: "origin", style: {
308
+ transform: `matrix(${this.core.store.state?.scale}, 0, 0, ${this.core.store.state?.scale}, ${this.core.store.state?.translateX}, ${this.core.store.state?.translateY})`,
309
+ } }, this.core.store.state.objectsMap.allObjects()?.map(object => {
310
+ return (h("div", { key: object.id, style: {
311
+ display: object.isInViewport() ? 'block' : 'none',
312
+ transform: object?.transformationMatrix,
313
+ transformOrigin: 'top left',
314
+ zIndex: object.zIndex.toString(),
315
+ position: 'absolute',
316
+ } }, h("svg", { xmlns: "http://www.w3.org/2000/svg", id: object.id, class: "object", style: {
333
317
  height: object?.totalHeight.toString(),
334
318
  width: object?.totalWidth.toString(),
335
319
  left: '0',
@@ -386,69 +370,71 @@ export class KritzelEngine {
386
370
  } })), KritzelClassHelper.isInstanceOf(object, 'KrtizelSelectionBox') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
387
371
  width: '100%',
388
372
  height: '100%',
373
+ backgroundColor: KritzelDevicesHelper.isFirefox() ? object.backgroundColor : 'transparent',
374
+ borderWidth: KritzelDevicesHelper.isFirefox() ? object.borderWidth + 'px' : '0',
375
+ borderStyle: KritzelDevicesHelper.isFirefox() ? 'solid' : 'none',
376
+ borderColor: KritzelDevicesHelper.isFirefox() ? object.borderColor : 'transparent',
389
377
  } }))), h("line", { x1: "0", y1: "0", x2: object.totalWidth, y2: "0", style: {
390
378
  stroke: 'var(--kritzel-selection-border-color, #007AFF)',
391
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
379
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,
392
380
  strokeLinecap: 'square',
393
381
  }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: "0", x2: "0", y2: object.totalHeight, style: {
394
382
  stroke: 'var(--kritzel-selection-border-color, #007AFF)',
395
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
383
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,
396
384
  strokeLinecap: 'square',
397
385
  }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: object.totalHeight, x2: object.totalWidth, y2: object.totalHeight, style: {
398
386
  stroke: 'var(--kritzel-selection-border-color, #007AFF)',
399
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
387
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,
400
388
  strokeLinecap: 'square',
401
389
  }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth, y1: "0", x2: object.totalWidth, y2: object.totalHeight, style: {
402
390
  stroke: 'var(--kritzel-selection-border-color, #007AFF)',
403
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
391
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,
404
392
  strokeLinecap: 'square',
405
- }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-left", cx: "0", cy: "0", r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
393
+ }, 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: {
406
394
  fill: 'var(--kritzel-selection-handle-color, #000000)',
407
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-left", cx: "0", cy: "0", r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
395
+ }, 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: {
408
396
  fill: 'transparent',
409
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
397
+ }, 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: {
410
398
  fill: 'var(--kritzel-selection-handle-color, #000000)',
411
- }, 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.store.state?.scale}`, style: {
399
+ }, 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: {
412
400
  fill: 'transparent',
413
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
401
+ }, 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: {
414
402
  fill: 'var(--kritzel-selection-handle-color, #000000)',
415
- }, 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.store.state?.scale}`, style: {
403
+ }, 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: {
416
404
  fill: 'transparent',
417
- }, 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.store.state?.scale}`, style: {
405
+ }, 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: {
418
406
  fill: 'var(--kritzel-selection-handle-color, #000000)',
419
- }, 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.store.state?.scale}`, style: {
407
+ }, 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: {
420
408
  fill: 'transparent',
421
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth / 2, y1: "0", x2: object.totalWidth / 2, y2: -((15 * object.scale) / this.store.state?.scale), style: {
409
+ }, 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: {
422
410
  stroke: 'var(--kritzel-selection-border-color, #007AFF)',
423
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
424
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle", cx: object.totalWidth / 2, cy: -((15 * object.scale) / this.store.state?.scale), r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
411
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,
412
+ }, 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: {
425
413
  fill: 'var(--kritzel-selection-handle-color, #000000)',
426
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle-overlay", cx: object.totalWidth / 2, cy: -((15 * object.scale) / this.store.state?.scale), r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
414
+ }, 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: {
427
415
  fill: 'transparent',
428
416
  cursor: 'grab',
429
- }, 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)))))));
430
- }), h("svg", { key: '0098f1b8233d45f49dc8bdcc13c08f20c04b65e1', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
431
- height: this.store.state.currentPath?.height.toString(),
432
- width: this.store.state.currentPath?.width.toString(),
417
+ }, 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)))))));
418
+ }), 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: {
433
419
  left: '0',
434
420
  top: '0',
435
- zIndex: this.store.state.currentPath?.zIndex.toString(),
421
+ zIndex: this.core.store.state.currentPath?.zIndex.toString(),
436
422
  position: 'absolute',
437
- transform: this.store.state.currentPath?.transformationMatrix,
423
+ transform: this.core.store.state.currentPath?.transformationMatrix,
438
424
  transformOrigin: 'top left',
439
425
  overflow: 'visible',
440
- }, viewBox: this.store.state.currentPath?.viewBox }, h("path", { key: '08310713fa8f2f1f695b1b61bb2b6e5a5f77f192', d: this.store.state.currentPath?.d, fill: this.store.state.currentPath?.fill, stroke: this.store.state.currentPath?.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: this.store.state.selectionGroup?.objects || [], style: {
426
+ }, viewBox: this.core.store.state.currentPath?.viewBox }, h("path", { key: '6dedb398968d275166e042660c4718635b57da84', 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: '09ae0d7842918bcb4ae9fd16d416badc19942264', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.core.store.state.contextMenuItems, objects: this.core.store.state.selectionGroup?.objects || [], style: {
441
427
  position: 'fixed',
442
- left: `${this.store.state.contextMenuX}px`,
443
- top: `${this.store.state.contextMenuY}px`,
428
+ left: `${this.core.store.state.contextMenuX}px`,
429
+ top: `${this.core.store.state.contextMenuY}px`,
444
430
  zIndex: '10000',
445
431
  }, onActionSelected: event => {
446
432
  event.detail.action({
447
- x: (-this.store.state.translateX + this.store.state.contextMenuX) / this.store.state.scale,
448
- y: (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale,
449
- }, this.store.state.selectionGroup?.objects);
433
+ x: (-this.core.store.state.translateX + this.core.store.state.contextMenuX) / this.core.store.state.scale,
434
+ y: (-this.core.store.state.translateY + this.core.store.state.contextMenuY) / this.core.store.state.scale,
435
+ }, this.core.store.state.selectionGroup?.objects);
450
436
  this.hideContextMenu();
451
- } })), this.store.state?.activeTool instanceof KritzelEraserTool && !this.store.state.isScaling && h("kritzel-cursor-trail", { key: '7c10277160eb1bc51581e4dfbdd4d0cdf626ed8c', store: this.store })));
437
+ }, onClose: () => this.hideContextMenu() })), this.core.store.state?.activeTool instanceof KritzelEraserTool && !this.core.store.state.isScaling && h("kritzel-cursor-trail", { key: 'e0863ccf8c52ebef822827d8eeac62d3619134ca', core: this.core })));
452
438
  }
453
439
  static get is() { return "kritzel-engine"; }
454
440
  static get encapsulation() { return "shadow"; }
@@ -474,8 +460,8 @@ export class KritzelEngine {
474
460
  "references": {
475
461
  "KritzelWorkspace": {
476
462
  "location": "import",
477
- "path": "../../../classes/workspace.class",
478
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
463
+ "path": "../../../classes/core/workspace.class",
464
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
479
465
  }
480
466
  }
481
467
  },
@@ -666,8 +652,28 @@ export class KritzelEngine {
666
652
  "references": {
667
653
  "KritzelWorkspace": {
668
654
  "location": "import",
669
- "path": "../../../classes/workspace.class",
670
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
655
+ "path": "../../../classes/core/workspace.class",
656
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
657
+ }
658
+ }
659
+ }
660
+ }, {
661
+ "method": "longpress",
662
+ "name": "longpress",
663
+ "bubbles": true,
664
+ "cancelable": true,
665
+ "composed": true,
666
+ "docs": {
667
+ "tags": [],
668
+ "text": ""
669
+ },
670
+ "complexType": {
671
+ "original": "PointerEvent",
672
+ "resolved": "PointerEvent",
673
+ "references": {
674
+ "PointerEvent": {
675
+ "location": "global",
676
+ "id": "global::PointerEvent"
671
677
  }
672
678
  }
673
679
  }
@@ -745,23 +751,6 @@ export class KritzelEngine {
745
751
  "tags": []
746
752
  }
747
753
  },
748
- "setFocus": {
749
- "complexType": {
750
- "signature": "() => Promise<void>",
751
- "parameters": [],
752
- "references": {
753
- "Promise": {
754
- "location": "global",
755
- "id": "global::Promise"
756
- }
757
- },
758
- "return": "Promise<void>"
759
- },
760
- "docs": {
761
- "text": "",
762
- "tags": []
763
- }
764
- },
765
754
  "disable": {
766
755
  "complexType": {
767
756
  "signature": "() => Promise<void>",
@@ -1286,7 +1275,7 @@ export class KritzelEngine {
1286
1275
  },
1287
1276
  "createWorkspace": {
1288
1277
  "complexType": {
1289
- "signature": "(workspace: KritzelWorkspace) => Promise<void>",
1278
+ "signature": "(workspace: KritzelWorkspace) => Promise<KritzelWorkspace | null>",
1290
1279
  "parameters": [{
1291
1280
  "name": "workspace",
1292
1281
  "type": "KritzelWorkspace",
@@ -1299,11 +1288,11 @@ export class KritzelEngine {
1299
1288
  },
1300
1289
  "KritzelWorkspace": {
1301
1290
  "location": "import",
1302
- "path": "../../../classes/workspace.class",
1303
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
1291
+ "path": "../../../classes/core/workspace.class",
1292
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
1304
1293
  }
1305
1294
  },
1306
- "return": "Promise<void>"
1295
+ "return": "Promise<KritzelWorkspace>"
1307
1296
  },
1308
1297
  "docs": {
1309
1298
  "text": "",
@@ -1325,8 +1314,8 @@ export class KritzelEngine {
1325
1314
  },
1326
1315
  "KritzelWorkspace": {
1327
1316
  "location": "import",
1328
- "path": "../../../classes/workspace.class",
1329
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
1317
+ "path": "../../../classes/core/workspace.class",
1318
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
1330
1319
  }
1331
1320
  },
1332
1321
  "return": "Promise<void>"
@@ -1351,8 +1340,8 @@ export class KritzelEngine {
1351
1340
  },
1352
1341
  "KritzelWorkspace": {
1353
1342
  "location": "import",
1354
- "path": "../../../classes/workspace.class",
1355
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
1343
+ "path": "../../../classes/core/workspace.class",
1344
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
1356
1345
  }
1357
1346
  },
1358
1347
  "return": "Promise<void>"
@@ -1373,8 +1362,8 @@ export class KritzelEngine {
1373
1362
  },
1374
1363
  "KritzelWorkspace": {
1375
1364
  "location": "import",
1376
- "path": "../../../classes/workspace.class",
1377
- "id": "src/classes/workspace.class.ts::KritzelWorkspace"
1365
+ "path": "../../../classes/core/workspace.class",
1366
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
1378
1367
  }
1379
1368
  },
1380
1369
  "return": "Promise<KritzelWorkspace[]>"
@@ -1383,6 +1372,28 @@ export class KritzelEngine {
1383
1372
  "text": "",
1384
1373
  "tags": []
1385
1374
  }
1375
+ },
1376
+ "getActiveWorkspace": {
1377
+ "complexType": {
1378
+ "signature": "() => Promise<KritzelWorkspace>",
1379
+ "parameters": [],
1380
+ "references": {
1381
+ "Promise": {
1382
+ "location": "global",
1383
+ "id": "global::Promise"
1384
+ },
1385
+ "KritzelWorkspace": {
1386
+ "location": "import",
1387
+ "path": "../../../classes/core/workspace.class",
1388
+ "id": "src/classes/core/workspace.class.ts::KritzelWorkspace"
1389
+ }
1390
+ },
1391
+ "return": "Promise<KritzelWorkspace>"
1392
+ },
1393
+ "docs": {
1394
+ "text": "",
1395
+ "tags": []
1396
+ }
1386
1397
  }
1387
1398
  };
1388
1399
  }
@@ -1430,6 +1441,12 @@ export class KritzelEngine {
1430
1441
  "target": undefined,
1431
1442
  "capture": false,
1432
1443
  "passive": false
1444
+ }, {
1445
+ "name": "longpress",
1446
+ "method": "handleLongPress",
1447
+ "target": undefined,
1448
+ "capture": false,
1449
+ "passive": false
1433
1450
  }, {
1434
1451
  "name": "contextmenu",
1435
1452
  "method": "handleContextMenu",
@@ -1454,18 +1471,6 @@ export class KritzelEngine {
1454
1471
  "target": "window",
1455
1472
  "capture": false,
1456
1473
  "passive": false
1457
- }, {
1458
- "name": "mousedown",
1459
- "method": "updateFocus",
1460
- "target": "window",
1461
- "capture": false,
1462
- "passive": true
1463
- }, {
1464
- "name": "click",
1465
- "method": "handleClick",
1466
- "target": undefined,
1467
- "capture": false,
1468
- "passive": false
1469
1474
  }];
1470
1475
  }
1471
1476
  }