kritzel-stencil 0.0.126 → 0.0.127

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 (378) hide show
  1. package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
  2. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
  3. package/dist/cjs/index-BacMQbNR.js +2555 -0
  4. package/dist/cjs/index-BacMQbNR.js.map +1 -0
  5. package/dist/cjs/index-C05uAr89.js +1591 -0
  6. package/dist/cjs/index-C05uAr89.js.map +1 -0
  7. package/dist/cjs/index.cjs.js +19 -0
  8. package/dist/cjs/index.cjs.js.map +1 -0
  9. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +2365 -0
  10. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +1 -0
  11. package/dist/cjs/loader.cjs.js +16 -0
  12. package/dist/cjs/loader.cjs.js.map +1 -0
  13. package/dist/cjs/stencil.cjs.js +28 -0
  14. package/dist/cjs/stencil.cjs.js.map +1 -0
  15. package/dist/collection/classes/commands/add-object.command.js +14 -0
  16. package/dist/collection/classes/commands/add-object.command.js.map +1 -0
  17. package/dist/collection/classes/commands/add-selection-group.command.js +20 -0
  18. package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -0
  19. package/dist/collection/classes/commands/base.command.js +15 -0
  20. package/dist/collection/classes/commands/base.command.js.map +1 -0
  21. package/dist/collection/classes/commands/batch.command.js +14 -0
  22. package/dist/collection/classes/commands/batch.command.js.map +1 -0
  23. package/dist/collection/classes/commands/move-selection-group.command.js +25 -0
  24. package/dist/collection/classes/commands/move-selection-group.command.js.map +1 -0
  25. package/dist/collection/classes/commands/remove-object.command.js +17 -0
  26. package/dist/collection/classes/commands/remove-object.command.js.map +1 -0
  27. package/dist/collection/classes/commands/remove-selection-group.command.js +18 -0
  28. package/dist/collection/classes/commands/remove-selection-group.command.js.map +1 -0
  29. package/dist/collection/classes/commands/resize-selection-group.command.js +18 -0
  30. package/dist/collection/classes/commands/resize-selection-group.command.js.map +1 -0
  31. package/dist/collection/classes/commands/rotate-selection-group.command.js +24 -0
  32. package/dist/collection/classes/commands/rotate-selection-group.command.js.map +1 -0
  33. package/dist/collection/classes/commands/update-object.command.js +29 -0
  34. package/dist/collection/classes/commands/update-object.command.js.map +1 -0
  35. package/dist/collection/classes/commands/update-viewport.command.js +23 -0
  36. package/dist/collection/classes/commands/update-viewport.command.js.map +1 -0
  37. package/dist/collection/classes/handlers/base.handler.js +7 -0
  38. package/dist/collection/classes/handlers/base.handler.js.map +1 -0
  39. package/dist/collection/classes/handlers/context-menu.handler.js +47 -0
  40. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -0
  41. package/dist/collection/classes/handlers/hover.handler.js +19 -0
  42. package/dist/collection/classes/handlers/hover.handler.js.map +1 -0
  43. package/dist/collection/classes/handlers/key.handler.js +81 -0
  44. package/dist/collection/classes/handlers/key.handler.js.map +1 -0
  45. package/dist/collection/classes/handlers/move.handler.js +84 -0
  46. package/dist/collection/classes/handlers/move.handler.js.map +1 -0
  47. package/dist/collection/classes/handlers/resize.handler.js +150 -0
  48. package/dist/collection/classes/handlers/resize.handler.js.map +1 -0
  49. package/dist/collection/classes/handlers/rotation.handler.js +102 -0
  50. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -0
  51. package/dist/collection/classes/handlers/selection.handler.js +200 -0
  52. package/dist/collection/classes/handlers/selection.handler.js.map +1 -0
  53. package/dist/collection/classes/history.class.js +71 -0
  54. package/dist/collection/classes/history.class.js.map +1 -0
  55. package/dist/collection/classes/objects/base-object.class.js +204 -0
  56. package/dist/collection/classes/objects/base-object.class.js.map +1 -0
  57. package/dist/collection/classes/objects/custom-element.class.js +52 -0
  58. package/dist/collection/classes/objects/custom-element.class.js.map +1 -0
  59. package/dist/collection/classes/objects/image.class.js +53 -0
  60. package/dist/collection/classes/objects/image.class.js.map +1 -0
  61. package/dist/collection/classes/objects/path.class.js +268 -0
  62. package/dist/collection/classes/objects/path.class.js.map +1 -0
  63. package/dist/collection/classes/objects/selection-box.class.js +22 -0
  64. package/dist/collection/classes/objects/selection-box.class.js.map +1 -0
  65. package/dist/collection/classes/objects/selection-group.class.js +157 -0
  66. package/dist/collection/classes/objects/selection-group.class.js.map +1 -0
  67. package/dist/collection/classes/objects/text.class.js +141 -0
  68. package/dist/collection/classes/objects/text.class.js.map +1 -0
  69. package/dist/{stencil/icon-registry.class-Bw5YkOTi.js → collection/classes/registries/icon-registry.class.js} +2 -6
  70. package/dist/collection/classes/registries/icon-registry.class.js.map +1 -0
  71. package/dist/collection/classes/registries/tool.registry.js +18 -0
  72. package/dist/collection/classes/registries/tool.registry.js.map +1 -0
  73. package/dist/collection/classes/reviver.class.js +66 -0
  74. package/dist/collection/classes/reviver.class.js.map +1 -0
  75. package/dist/collection/classes/store.class.js +287 -0
  76. package/dist/collection/classes/store.class.js.map +1 -0
  77. package/dist/collection/classes/structures/circular-buffer.structure.js +46 -0
  78. package/dist/collection/classes/structures/circular-buffer.structure.js.map +1 -0
  79. package/dist/collection/classes/structures/octree.structure.js +111 -0
  80. package/dist/collection/classes/structures/octree.structure.js.map +1 -0
  81. package/dist/collection/classes/tools/base-tool.class.js +31 -0
  82. package/dist/collection/classes/tools/base-tool.class.js.map +1 -0
  83. package/dist/collection/classes/tools/brush-tool.class.js +116 -0
  84. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -0
  85. package/dist/collection/classes/tools/eraser-tool.class.js +86 -0
  86. package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -0
  87. package/dist/collection/classes/tools/image-tool.class.js +88 -0
  88. package/dist/collection/classes/tools/image-tool.class.js.map +1 -0
  89. package/dist/collection/classes/tools/selection-tool.class.js +156 -0
  90. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -0
  91. package/dist/collection/classes/tools/text-tool.class.js +116 -0
  92. package/dist/collection/classes/tools/text-tool.class.js.map +1 -0
  93. package/dist/collection/classes/viewport.class.js +148 -0
  94. package/dist/collection/classes/viewport.class.js.map +1 -0
  95. package/dist/collection/collection-manifest.json +29 -0
  96. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -0
  97. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +154 -0
  98. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -0
  99. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +24 -0
  100. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +672 -0
  101. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -0
  102. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +60 -0
  103. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +1287 -0
  104. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -0
  105. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +44 -0
  106. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +100 -0
  107. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -0
  108. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +21 -0
  109. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +108 -0
  110. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -0
  111. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +46 -0
  112. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +147 -0
  113. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +1 -0
  114. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +53 -0
  115. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +215 -0
  116. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -0
  117. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -0
  118. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +92 -0
  119. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -0
  120. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -0
  121. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +115 -0
  122. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -0
  123. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -0
  124. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +112 -0
  125. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -0
  126. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +17 -0
  127. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +94 -0
  128. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +1 -0
  129. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +28 -0
  130. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +91 -0
  131. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +1 -0
  132. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +17 -0
  133. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +181 -0
  134. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -0
  135. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +55 -0
  136. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +178 -0
  137. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -0
  138. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +19 -0
  139. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +136 -0
  140. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -0
  141. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.css +19 -0
  142. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +116 -0
  143. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +1 -0
  144. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +124 -0
  145. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +268 -0
  146. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -0
  147. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +33 -0
  148. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +79 -0
  149. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +1 -0
  150. package/dist/{stencil/default-text-tool.config-DvOZmpuR.js → collection/configs/default-brush-tool.config.js} +2 -38
  151. package/dist/collection/configs/default-brush-tool.config.js.map +1 -0
  152. package/dist/collection/configs/default-engine-state.js +58 -0
  153. package/dist/collection/configs/default-engine-state.js.map +1 -0
  154. package/dist/collection/configs/default-text-tool.config.js +32 -0
  155. package/dist/collection/configs/default-text-tool.config.js.map +1 -0
  156. package/dist/collection/constants/engine.constants.js +3 -0
  157. package/dist/collection/constants/engine.constants.js.map +1 -0
  158. package/dist/collection/enums/event-button.enum.js +7 -0
  159. package/dist/collection/enums/event-button.enum.js.map +1 -0
  160. package/dist/collection/enums/handle-type.enum.js +8 -0
  161. package/dist/collection/enums/handle-type.enum.js.map +1 -0
  162. package/dist/collection/helpers/class.helper.js +6 -0
  163. package/dist/collection/helpers/class.helper.js.map +1 -0
  164. package/dist/collection/helpers/devices.helper.js +6 -0
  165. package/dist/collection/helpers/devices.helper.js.map +1 -0
  166. package/dist/collection/helpers/event.helper.js +58 -0
  167. package/dist/collection/helpers/event.helper.js.map +1 -0
  168. package/dist/collection/helpers/geometry.helper.js +53 -0
  169. package/dist/collection/helpers/geometry.helper.js.map +1 -0
  170. package/dist/collection/helpers/html.helper.js +7 -0
  171. package/dist/collection/helpers/html.helper.js.map +1 -0
  172. package/dist/collection/helpers/keyboard.helper.js +31 -0
  173. package/dist/collection/helpers/keyboard.helper.js.map +1 -0
  174. package/dist/collection/helpers/math.helper.js +6 -0
  175. package/dist/collection/helpers/math.helper.js.map +1 -0
  176. package/dist/collection/helpers/object.helper.js +38 -0
  177. package/dist/collection/helpers/object.helper.js.map +1 -0
  178. package/dist/collection/index.js +21 -0
  179. package/dist/collection/index.js.map +1 -0
  180. package/dist/collection/interfaces/bounding-box.interface.js +2 -0
  181. package/dist/collection/interfaces/bounding-box.interface.js.map +1 -0
  182. package/dist/collection/interfaces/command.interface.js +2 -0
  183. package/dist/collection/interfaces/command.interface.js.map +1 -0
  184. package/dist/collection/interfaces/context-menu-item.interface.js +2 -0
  185. package/dist/collection/interfaces/context-menu-item.interface.js.map +1 -0
  186. package/dist/collection/interfaces/debug-info.interface.js +2 -0
  187. package/dist/collection/interfaces/debug-info.interface.js.map +1 -0
  188. package/dist/collection/interfaces/engine-state.interface.js +2 -0
  189. package/dist/collection/interfaces/engine-state.interface.js.map +1 -0
  190. package/dist/collection/interfaces/object.interface.js +2 -0
  191. package/dist/collection/interfaces/object.interface.js.map +1 -0
  192. package/dist/collection/interfaces/path-options.interface.js +2 -0
  193. package/dist/collection/interfaces/path-options.interface.js.map +1 -0
  194. package/dist/collection/interfaces/point.interface.js +2 -0
  195. package/dist/collection/interfaces/point.interface.js.map +1 -0
  196. package/dist/collection/interfaces/polygon.interface.js +2 -0
  197. package/dist/collection/interfaces/polygon.interface.js.map +1 -0
  198. package/dist/collection/interfaces/selection-state.interface.js +2 -0
  199. package/dist/collection/interfaces/selection-state.interface.js.map +1 -0
  200. package/dist/collection/interfaces/serializable.interface.js +2 -0
  201. package/dist/collection/interfaces/serializable.interface.js.map +1 -0
  202. package/dist/collection/interfaces/tool.interface.js +2 -0
  203. package/dist/collection/interfaces/tool.interface.js.map +1 -0
  204. package/dist/collection/interfaces/toolbar-control.interface.js +2 -0
  205. package/dist/collection/interfaces/toolbar-control.interface.js.map +1 -0
  206. package/dist/collection/types/state.types.js +2 -0
  207. package/dist/collection/types/state.types.js.map +1 -0
  208. package/dist/components/index.js +24 -0
  209. package/dist/components/index.js.map +1 -0
  210. package/dist/components/kritzel-brush-style.js +9 -0
  211. package/dist/components/kritzel-brush-style.js.map +1 -0
  212. package/dist/components/kritzel-color-palette.js +9 -0
  213. package/dist/components/kritzel-color-palette.js.map +1 -0
  214. package/dist/components/kritzel-color.js +9 -0
  215. package/dist/components/kritzel-color.js.map +1 -0
  216. package/dist/components/kritzel-context-menu.js +9 -0
  217. package/dist/components/kritzel-context-menu.js.map +1 -0
  218. package/dist/components/kritzel-control-brush-config.js +9 -0
  219. package/dist/components/kritzel-control-brush-config.js.map +1 -0
  220. package/dist/components/kritzel-control-text-config.js +9 -0
  221. package/dist/components/kritzel-control-text-config.js.map +1 -0
  222. package/dist/components/kritzel-controls.js +9 -0
  223. package/dist/components/kritzel-controls.js.map +1 -0
  224. package/dist/components/kritzel-cursor-trail.js +9 -0
  225. package/dist/components/kritzel-cursor-trail.js.map +1 -0
  226. package/dist/components/kritzel-dropdown.js +9 -0
  227. package/dist/components/kritzel-dropdown.js.map +1 -0
  228. package/dist/components/kritzel-editor.js +409 -0
  229. package/dist/components/kritzel-editor.js.map +1 -0
  230. package/dist/components/kritzel-engine.js +9 -0
  231. package/dist/components/kritzel-engine.js.map +1 -0
  232. package/dist/components/kritzel-font-family.js +9 -0
  233. package/dist/components/kritzel-font-family.js.map +1 -0
  234. package/dist/components/kritzel-font-size.js +9 -0
  235. package/dist/components/kritzel-font-size.js.map +1 -0
  236. package/dist/components/kritzel-font.js +9 -0
  237. package/dist/components/kritzel-font.js.map +1 -0
  238. package/dist/components/kritzel-icon.js +9 -0
  239. package/dist/components/kritzel-icon.js.map +1 -0
  240. package/dist/components/kritzel-stroke-size.js +9 -0
  241. package/dist/components/kritzel-stroke-size.js.map +1 -0
  242. package/dist/components/kritzel-tooltip.js +9 -0
  243. package/dist/components/kritzel-tooltip.js.map +1 -0
  244. package/dist/components/kritzel-utility-panel.js +9 -0
  245. package/dist/components/kritzel-utility-panel.js.map +1 -0
  246. package/dist/{stencil/kritzel-context-menu-B2p1_Ffh.js → components/p-2gNwfcSP.js} +39 -11
  247. package/dist/components/p-2gNwfcSP.js.map +1 -0
  248. package/dist/components/p-BOUCnklW.js +54 -0
  249. package/dist/components/p-BOUCnklW.js.map +1 -0
  250. package/dist/components/p-BhC-Et5I.js +102 -0
  251. package/dist/components/p-BhC-Et5I.js.map +1 -0
  252. package/dist/components/p-BkFzf8vg.js +111 -0
  253. package/dist/components/p-BkFzf8vg.js.map +1 -0
  254. package/dist/{stencil/kritzel-font-family.entry.js → components/p-BubFkS0u.js} +35 -11
  255. package/dist/components/p-BubFkS0u.js.map +1 -0
  256. package/dist/components/p-C9usqwb5.js +61 -0
  257. package/dist/components/p-C9usqwb5.js.map +1 -0
  258. package/dist/{stencil/kritzel-tooltip.entry.js → components/p-CmlcJ8Kw.js} +37 -14
  259. package/dist/components/p-CmlcJ8Kw.js.map +1 -0
  260. package/dist/components/p-CtiROna-.js +90 -0
  261. package/dist/components/p-CtiROna-.js.map +1 -0
  262. package/dist/components/p-CudOuOAW.js +2716 -0
  263. package/dist/components/p-CudOuOAW.js.map +1 -0
  264. package/dist/components/p-D5a8vnRF.js +52 -0
  265. package/dist/components/p-D5a8vnRF.js.map +1 -0
  266. package/dist/{stencil/event-button.enum-D8W6LE-c.js → components/p-D8W6LE-c.js} +2 -2
  267. package/dist/components/p-D8W6LE-c.js.map +1 -0
  268. package/dist/components/p-DJN0U8pI.js +1327 -0
  269. package/dist/components/p-DJN0U8pI.js.map +1 -0
  270. package/dist/{stencil/kritzel-color-palette.entry.js → components/p-DJc6_PyL.js} +37 -11
  271. package/dist/components/p-DJc6_PyL.js.map +1 -0
  272. package/dist/{stencil/kritzel-controls.entry.js → components/p-DSWoCkxm.js} +116 -16
  273. package/dist/components/p-DSWoCkxm.js.map +1 -0
  274. package/dist/components/p-DcvujuV_.js +54 -0
  275. package/dist/components/p-DcvujuV_.js.map +1 -0
  276. package/dist/{stencil/kritzel-color.entry.js → components/p-DfJEh7HZ.js} +29 -11
  277. package/dist/components/p-DfJEh7HZ.js.map +1 -0
  278. package/dist/components/p-Dp8hrISj.js +44 -0
  279. package/dist/components/p-Dp8hrISj.js.map +1 -0
  280. package/dist/{stencil/kritzel-cursor-trail.entry.js → components/p-EQo4-DJT.js} +30 -11
  281. package/dist/components/p-EQo4-DJT.js.map +1 -0
  282. package/dist/{stencil/kritzel-dropdown.entry.js → components/p-NZJPrwJV.js} +37 -11
  283. package/dist/components/p-NZJPrwJV.js.map +1 -0
  284. package/dist/{stencil/brush-tool.class-D1U3x9_Y.js → components/p-ljdIU3DL.js} +18 -51
  285. package/dist/components/p-ljdIU3DL.js.map +1 -0
  286. package/dist/esm/app-globals-DQuL1Twl.js +6 -0
  287. package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
  288. package/dist/esm/index-BGl8znzE.js +1564 -0
  289. package/dist/esm/index-BGl8znzE.js.map +1 -0
  290. package/dist/esm/index-D37FADaF.js +2531 -0
  291. package/dist/esm/index-D37FADaF.js.map +1 -0
  292. package/dist/esm/index.js +4 -0
  293. package/dist/esm/index.js.map +1 -0
  294. package/dist/esm/kritzel-brush-style_18.entry.js +2346 -0
  295. package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -0
  296. package/dist/esm/loader.js +14 -0
  297. package/dist/esm/loader.js.map +1 -0
  298. package/dist/esm/stencil.js +24 -0
  299. package/dist/esm/stencil.js.map +1 -0
  300. package/dist/index.cjs.js +1 -0
  301. package/dist/index.js +1 -0
  302. package/dist/stencil/index.esm.js +1 -16
  303. package/dist/stencil/index.esm.js.map +1 -1
  304. package/dist/stencil/loader.esm.js.map +1 -1
  305. package/dist/stencil/p-BGl8znzE.js +3 -0
  306. package/dist/stencil/p-BGl8znzE.js.map +1 -0
  307. package/dist/stencil/p-D37FADaF.js +2 -0
  308. package/dist/stencil/p-D37FADaF.js.map +1 -0
  309. package/dist/stencil/p-DQuL1Twl.js +2 -0
  310. package/dist/stencil/p-DQuL1Twl.js.map +1 -0
  311. package/dist/stencil/p-e6ac7fc6.entry.js +2 -0
  312. package/dist/stencil/p-e6ac7fc6.entry.js.map +1 -0
  313. package/dist/stencil/stencil.esm.js +1 -49
  314. package/dist/stencil/stencil.esm.js.map +1 -1
  315. package/dist/types/classes/objects/base-object.class.d.ts +1 -0
  316. package/dist/types/classes/objects/path.class.d.ts +1 -0
  317. package/dist/types/interfaces/object.interface.d.ts +1 -0
  318. package/package.json +62 -62
  319. package/dist/stencil/brush-tool.class-D1U3x9_Y.js.map +0 -1
  320. package/dist/stencil/default-text-tool.config-DvOZmpuR.js.map +0 -1
  321. package/dist/stencil/engine.constants-DsjjAmnl.js +0 -7
  322. package/dist/stencil/engine.constants-DsjjAmnl.js.map +0 -1
  323. package/dist/stencil/event-button.enum-D8W6LE-c.js.map +0 -1
  324. package/dist/stencil/icon-registry.class-Bw5YkOTi.js.map +0 -1
  325. package/dist/stencil/image-tool.class-uKAmXFSl.js +0 -1341
  326. package/dist/stencil/image-tool.class-uKAmXFSl.js.map +0 -1
  327. package/dist/stencil/index-Df69oUcb.js +0 -4334
  328. package/dist/stencil/index-Df69oUcb.js.map +0 -1
  329. package/dist/stencil/kritzel-brush-style.entry.esm.js.map +0 -1
  330. package/dist/stencil/kritzel-brush-style.entry.js +0 -31
  331. package/dist/stencil/kritzel-brush-style.entry.js.map +0 -1
  332. package/dist/stencil/kritzel-color-palette.entry.esm.js.map +0 -1
  333. package/dist/stencil/kritzel-color-palette.entry.js.map +0 -1
  334. package/dist/stencil/kritzel-color.entry.esm.js.map +0 -1
  335. package/dist/stencil/kritzel-color.entry.js.map +0 -1
  336. package/dist/stencil/kritzel-context-menu-B2p1_Ffh.js.map +0 -1
  337. package/dist/stencil/kritzel-context-menu-DPHV6MRm.js +0 -91
  338. package/dist/stencil/kritzel-context-menu-DPHV6MRm.js.map +0 -1
  339. package/dist/stencil/kritzel-context-menu.entry.esm.js.map +0 -1
  340. package/dist/stencil/kritzel-context-menu.entry.js +0 -5
  341. package/dist/stencil/kritzel-context-menu.entry.js.map +0 -1
  342. package/dist/stencil/kritzel-control-brush-config.entry.esm.js.map +0 -1
  343. package/dist/stencil/kritzel-control-brush-config.entry.js +0 -54
  344. package/dist/stencil/kritzel-control-brush-config.entry.js.map +0 -1
  345. package/dist/stencil/kritzel-control-text-config.entry.esm.js.map +0 -1
  346. package/dist/stencil/kritzel-control-text-config.entry.js +0 -42
  347. package/dist/stencil/kritzel-control-text-config.entry.js.map +0 -1
  348. package/dist/stencil/kritzel-controls.entry.esm.js.map +0 -1
  349. package/dist/stencil/kritzel-controls.entry.js.map +0 -1
  350. package/dist/stencil/kritzel-cursor-trail.entry.esm.js.map +0 -1
  351. package/dist/stencil/kritzel-cursor-trail.entry.js.map +0 -1
  352. package/dist/stencil/kritzel-dropdown.entry.esm.js.map +0 -1
  353. package/dist/stencil/kritzel-dropdown.entry.js.map +0 -1
  354. package/dist/stencil/kritzel-editor.entry.esm.js.map +0 -1
  355. package/dist/stencil/kritzel-editor.entry.js +0 -180
  356. package/dist/stencil/kritzel-editor.entry.js.map +0 -1
  357. package/dist/stencil/kritzel-engine.entry.esm.js.map +0 -1
  358. package/dist/stencil/kritzel-engine.entry.js +0 -1318
  359. package/dist/stencil/kritzel-engine.entry.js.map +0 -1
  360. package/dist/stencil/kritzel-font-family.entry.esm.js.map +0 -1
  361. package/dist/stencil/kritzel-font-family.entry.js.map +0 -1
  362. package/dist/stencil/kritzel-font-size.entry.esm.js.map +0 -1
  363. package/dist/stencil/kritzel-font-size.entry.js +0 -29
  364. package/dist/stencil/kritzel-font-size.entry.js.map +0 -1
  365. package/dist/stencil/kritzel-font.entry.esm.js.map +0 -1
  366. package/dist/stencil/kritzel-font.entry.js +0 -25
  367. package/dist/stencil/kritzel-font.entry.js.map +0 -1
  368. package/dist/stencil/kritzel-icon.entry.esm.js.map +0 -1
  369. package/dist/stencil/kritzel-icon.entry.js +0 -29
  370. package/dist/stencil/kritzel-icon.entry.js.map +0 -1
  371. package/dist/stencil/kritzel-stroke-size.entry.esm.js.map +0 -1
  372. package/dist/stencil/kritzel-stroke-size.entry.js +0 -28
  373. package/dist/stencil/kritzel-stroke-size.entry.js.map +0 -1
  374. package/dist/stencil/kritzel-tooltip.entry.esm.js.map +0 -1
  375. package/dist/stencil/kritzel-tooltip.entry.js.map +0 -1
  376. package/dist/stencil/kritzel-utility-panel.entry.esm.js.map +0 -1
  377. package/dist/stencil/kritzel-utility-panel.entry.js +0 -33
  378. package/dist/stencil/kritzel-utility-panel.entry.js.map +0 -1
@@ -0,0 +1,141 @@
1
+ import { KritzelToolRegistry } from "../registries/tool.registry";
2
+ import { KritzelTextTool } from "../tools/text-tool.class";
3
+ import { KritzelBaseObject } from "./base-object.class";
4
+ export class KritzelText extends KritzelBaseObject {
5
+ get isReadonly() {
6
+ return !(this._store.state.activeTool instanceof KritzelTextTool);
7
+ }
8
+ constructor(config) {
9
+ super();
10
+ this.__class__ = 'KritzelText';
11
+ this.value = '';
12
+ this.fontFamily = 'Arial';
13
+ this.fontSize = 8;
14
+ this.fontColor = '#000000';
15
+ this.initialWidth = 3;
16
+ this.isNew = true;
17
+ this.isDebugInfoVisible = true;
18
+ this.isEditable = true;
19
+ this.rows = 1;
20
+ if (config) {
21
+ this.value = config.value || ' ';
22
+ this.translateX = config.translateX || 0;
23
+ this.translateY = config.translateY || 0;
24
+ this.fontSize = config.fontSize || 8;
25
+ this.fontFamily = config.fontFamily || 'Arial';
26
+ this.fontColor = config.fontColor || '#000000';
27
+ this.height = config.height || this.fontSize * 1.2;
28
+ this.width = config.width || 0;
29
+ this.scale = config.scale || 1;
30
+ }
31
+ }
32
+ static create(store, fontSize, fontFamily) {
33
+ const object = new KritzelText();
34
+ object._store = store;
35
+ object.fontSize = fontSize;
36
+ object.fontFamily = fontFamily;
37
+ object.translateX = 0;
38
+ object.translateY = 0;
39
+ object.width = object.initialWidth / (object._store.state.scale < 0 ? object._store.state.scale : 1);
40
+ object.height = (object.fontSize * 1.2) / (object._store.state.scale < 0 ? object._store.state.scale : 1);
41
+ object.padding = 5;
42
+ object.backgroundColor = 'transparent';
43
+ object.scale = object._store.state.scale;
44
+ object.value = ' ';
45
+ object.zIndex = store.currentZIndex;
46
+ return object;
47
+ }
48
+ mount(element) {
49
+ if ((this.isMounted && this.elementRef === element) || this.isInViewport() === false) {
50
+ return;
51
+ }
52
+ this.elementRef = element;
53
+ this.isMounted = true;
54
+ }
55
+ resize(x, y, width, height) {
56
+ if (width <= 1 || height <= 1) {
57
+ return;
58
+ }
59
+ const scaleFactor = height / this.height;
60
+ this.fontSize = this.fontSize * scaleFactor;
61
+ this.width = this.width * scaleFactor;
62
+ this.height = height;
63
+ this.translateX = x;
64
+ this.translateY = y;
65
+ }
66
+ handleKeyDown(event) {
67
+ if (this.isReadonly) {
68
+ event.preventDefault();
69
+ event.stopPropagation();
70
+ }
71
+ }
72
+ handleInput(event) {
73
+ const target = event.target;
74
+ if (target.value === '') {
75
+ this.value = ' ';
76
+ target.value = ' ';
77
+ target.selectionStart = target.selectionEnd = target.value.length;
78
+ }
79
+ else {
80
+ this.value = target.value.trim();
81
+ }
82
+ this.adjustTextareaSize();
83
+ }
84
+ adjustTextareaSize() {
85
+ if (this.elementRef) {
86
+ const span = document.createElement('span');
87
+ span.style.position = 'absolute';
88
+ span.style.whiteSpace = 'pre-wrap';
89
+ span.style.visibility = 'hidden';
90
+ span.style.fontSize = window.getComputedStyle(this.elementRef).fontSize;
91
+ span.style.fontFamily = window.getComputedStyle(this.elementRef).fontFamily;
92
+ span.innerHTML = this.elementRef.value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\n/g, '<br>') + '<br>';
93
+ document.body.appendChild(span);
94
+ const textWidth = span.offsetWidth;
95
+ const textHeight = span.offsetHeight;
96
+ document.body.removeChild(span);
97
+ this.width = textWidth;
98
+ this.height = textHeight;
99
+ this._store.rerender();
100
+ }
101
+ }
102
+ focus() {
103
+ if (this.elementRef) {
104
+ this.elementRef.focus();
105
+ }
106
+ }
107
+ selectAll() {
108
+ if (this.elementRef) {
109
+ this.elementRef.select();
110
+ }
111
+ }
112
+ insertFromClipboard() {
113
+ if (this.elementRef) {
114
+ this.elementRef.focus();
115
+ try {
116
+ navigator.clipboard.readText().then(text => {
117
+ const start = this.elementRef.selectionStart;
118
+ const end = this.elementRef.selectionEnd;
119
+ const value = this.elementRef.value;
120
+ this.elementRef.value = value.substring(0, start) + text + value.substring(end);
121
+ this.elementRef.selectionStart = this.elementRef.selectionEnd = start + text.length;
122
+ this.value = this.elementRef.value;
123
+ this.adjustTextareaSize();
124
+ });
125
+ }
126
+ catch (err) {
127
+ console.error('Failed to read clipboard contents:', err);
128
+ }
129
+ }
130
+ }
131
+ edit() {
132
+ this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));
133
+ this._store.state.selectionGroup = null;
134
+ this._store.state.selectionBox = null;
135
+ this._store.state.activeText = this;
136
+ setTimeout(() => {
137
+ this.focus();
138
+ }, 300);
139
+ }
140
+ }
141
+ //# sourceMappingURL=text.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.class.js","sourceRoot":"","sources":["../../../src/classes/objects/text.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelStore } from '../store.class';\r\nimport { KritzelTextTool } from '../tools/text-tool.class';\r\nimport { KritzelBaseObject } from './base-object.class';\r\n\r\nexport class KritzelText extends KritzelBaseObject<HTMLTextAreaElement> {\r\n override __class__: string = 'KritzelText';\r\n\r\n value: string = '';\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 8;\r\n fontColor: string = '#000000';\r\n initialWidth: number = 3;\r\n\r\n isNew: boolean = true;\r\n isDebugInfoVisible: boolean = true;\r\n isEditable: boolean = true;\r\n\r\n readonly rows: number = 1;\r\n\r\n get isReadonly(): boolean {\r\n return !(this._store.state.activeTool instanceof KritzelTextTool);\r\n }\r\n\r\n constructor(config?: {\r\n value: string;\r\n translateX?: number;\r\n translateY?: number;\r\n fontSize?: number;\r\n fontFamily?: string;\r\n fontColor?: string;\r\n height?: number;\r\n width?: number;\r\n scale?: number;\r\n }) {\r\n super();\r\n\r\n if (config) {\r\n this.value = config.value || ' ';\r\n this.translateX = config.translateX || 0;\r\n this.translateY = config.translateY || 0;\r\n this.fontSize = config.fontSize || 8;\r\n this.fontFamily = config.fontFamily || 'Arial';\r\n this.fontColor = config.fontColor || '#000000';\r\n this.height = config.height || this.fontSize * 1.2;\r\n this.width = config.width || 0;\r\n this.scale = config.scale || 1;\r\n }\r\n }\r\n\r\n static override create(store: KritzelStore, fontSize?: number, fontFamily?: string): KritzelText {\r\n const object = new KritzelText();\r\n\r\n object._store = store;\r\n object.fontSize = fontSize;\r\n object.fontFamily = fontFamily;\r\n object.translateX = 0;\r\n object.translateY = 0;\r\n object.width = object.initialWidth / (object._store.state.scale < 0 ? object._store.state.scale : 1);\r\n object.height = (object.fontSize * 1.2) / (object._store.state.scale < 0 ? object._store.state.scale : 1);\r\n object.padding = 5;\r\n object.backgroundColor = 'transparent';\r\n object.scale = object._store.state.scale;\r\n object.value = ' ';\r\n object.zIndex = store.currentZIndex;\r\n\r\n return object;\r\n }\r\n\r\n override mount(element: HTMLTextAreaElement): void {\r\n if ((this.isMounted && this.elementRef === element) || this.isInViewport() === false) {\r\n return;\r\n }\r\n\r\n this.elementRef = element;\r\n this.isMounted = true;\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n if (width <= 1 || height <= 1) {\r\n return;\r\n }\r\n\r\n const scaleFactor = height / this.height;\r\n\r\n this.fontSize = this.fontSize * scaleFactor;\r\n this.width = this.width * scaleFactor;\r\n this.height = height;\r\n this.translateX = x;\r\n this.translateY = y;\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent): void {\r\n if (this.isReadonly) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n handleInput(event: InputEvent): void {\r\n const target = event.target as HTMLTextAreaElement;\r\n if (target.value === '') {\r\n this.value = ' ';\r\n target.value = ' ';\r\n target.selectionStart = target.selectionEnd = target.value.length;\r\n } else {\r\n this.value = target.value.trim();\r\n }\r\n\r\n this.adjustTextareaSize();\r\n }\r\n\r\n adjustTextareaSize() {\r\n if (this.elementRef) {\r\n const span = document.createElement('span');\r\n span.style.position = 'absolute';\r\n span.style.whiteSpace = 'pre-wrap';\r\n span.style.visibility = 'hidden';\r\n span.style.fontSize = window.getComputedStyle(this.elementRef).fontSize;\r\n span.style.fontFamily = window.getComputedStyle(this.elementRef).fontFamily;\r\n\r\n span.innerHTML = this.elementRef.value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\\n/g, '<br>') + '<br>';\r\n\r\n document.body.appendChild(span);\r\n const textWidth = span.offsetWidth;\r\n const textHeight = span.offsetHeight;\r\n document.body.removeChild(span);\r\n\r\n this.width = textWidth;\r\n this.height = textHeight;\r\n\r\n this._store.rerender();\r\n }\r\n }\r\n\r\n focus(): void {\r\n if (this.elementRef) {\r\n this.elementRef.focus();\r\n }\r\n }\r\n\r\n selectAll(): void {\r\n if (this.elementRef) {\r\n this.elementRef.select();\r\n }\r\n }\r\n\r\n insertFromClipboard(): void {\r\n if (this.elementRef) {\r\n this.elementRef.focus();\r\n try {\r\n navigator.clipboard.readText().then(text => {\r\n const start = this.elementRef.selectionStart;\r\n const end = this.elementRef.selectionEnd;\r\n const value = this.elementRef.value;\r\n\r\n this.elementRef.value = value.substring(0, start) + text + value.substring(end);\r\n\r\n this.elementRef.selectionStart = this.elementRef.selectionEnd = start + text.length;\r\n this.value = this.elementRef.value;\r\n this.adjustTextareaSize();\r\n });\r\n } catch (err) {\r\n console.error('Failed to read clipboard contents:', err);\r\n }\r\n }\r\n }\r\n\r\n edit(): void {\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));\r\n this._store.state.selectionGroup = null;\r\n this._store.state.selectionBox = null;\r\n this._store.state.activeText = this;\r\n\r\n setTimeout(() => {\r\n this.focus();\r\n }, 300);\r\n }\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- class KritzelIconRegistry {
1
+ export class KritzelIconRegistry {
2
2
  static register(name, svgContent) {
3
3
  if (this.registry.has(name)) {
4
4
  console.warn(`[IconRegistry] Icon "${name}" is already registered. It will be overwritten.`);
@@ -40,8 +40,4 @@ KritzelIconRegistry.registerIcons({
40
40
  'undo': '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-undo-icon lucide-undo"><path d="M3 7v6h6"/><path d="M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13"/></svg>',
41
41
  'redo': '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-redo-icon lucide-redo"><path d="M21 7v6h-6"/><path d="M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7"/></svg>'
42
42
  });
43
-
44
- export { KritzelIconRegistry as K };
45
- //# sourceMappingURL=icon-registry.class-Bw5YkOTi.js.map
46
-
47
- //# sourceMappingURL=icon-registry.class-Bw5YkOTi.js.map
43
+ //# sourceMappingURL=icon-registry.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-registry.class.js","sourceRoot":"","sources":["../../../src/classes/registries/icon-registry.class.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAmB;IAGvB,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,UAAkB;QACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,kDAAkD,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,KAAgC;QAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;;AAvBc,4BAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;AA0BtD,mBAAmB,CAAC,aAAa,CAAC;IAChC,QAAQ,EAAE,4SAA4S;IACtT,KAAK,EAAE,wSAAwS;IAC/S,aAAa,EAAE,2TAA2T;IAC1U,QAAQ,EAAE,qSAAqS;IAC/S,MAAM,EAAE,8QAA8Q;IACtR,OAAO,EAAE,sSAAsS;IAC/S,cAAc,EAAE,oLAAoL;IACpM,YAAY,EAAE,sLAAsL;IACpM,MAAM,EAAE,mUAAmU;IAC3U,OAAO,EAAE,6aAA6a;IACtb,KAAK,EAAE,+VAA+V;IACtW,QAAQ,EAAE,6YAA6Y;IACvZ,gBAAgB,EAAE,kSAAkS;IACpT,cAAc,EAAE,qSAAqS;IACrT,YAAY,EAAE,0bAA0b;IACxc,UAAU,EAAE,gVAAgV;IAC5V,MAAM,EAAE,iRAAiR;IACzR,MAAM,EAAE,mRAAmR;CAC5R,CAAC,CAAC","sourcesContent":["export class KritzelIconRegistry {\r\n private static registry = new Map<string, string>();\r\n\r\n public static register(name: string, svgContent: string): void {\r\n if (this.registry.has(name)) {\r\n console.warn(`[IconRegistry] Icon \"${name}\" is already registered. It will be overwritten.`);\r\n }\r\n this.registry.set(name, svgContent);\r\n }\r\n\r\n public static get(name: string): string | undefined {\r\n return this.registry.get(name);\r\n }\r\n\r\n public static registerIcons(icons: { [key: string]: string }): void {\r\n for (const name in icons) {\r\n if (Object.prototype.hasOwnProperty.call(icons, name)) {\r\n this.register(name, icons[name]);\r\n }\r\n }\r\n }\r\n\r\n public static has(name: string): boolean {\r\n return this.registry.has(name);\r\n }\r\n}\r\n\r\nKritzelIconRegistry.registerIcons({\r\n 'cursor': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z\"/></svg>',\r\n 'pen': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\"/></svg>',\r\n 'highlighter': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-highlighter-icon lucide-highlighter\"><path d=\"m9 11-6 6v3h9l3-3\"/><path d=\"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4\"/></svg>',\r\n 'eraser': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21\"/><path d=\"M22 21H7\"/><path d=\"m5 11 9 9\"/></svg>',\r\n 'type': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"4 7 4 4 20 4 20 7\"/><line x1=\"9\" x2=\"15\" y1=\"20\" y2=\"20\"/><line x1=\"12\" x2=\"12\" y1=\"4\" y2=\"20\"/></svg>',\r\n 'image': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/><path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"/></svg>',\r\n 'chevron-down': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>',\r\n 'chevron-up': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m18 15-6-6-6 6\"/></svg>',\r\n 'copy': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-copy-icon lucide-copy\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/></svg>',\r\n 'paste': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-clipboard-paste-icon lucide-clipboard-paste\"><path d=\"M11 14h10\"/><path d=\"M16 4h2a2 2 0 0 1 2 2v1.344\"/><path d=\"m17 18 4-4-4-4\"/><path d=\"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113\"/><rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\"/></svg>',\r\n 'cut': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-scissors-icon lucide-scissors\"><circle cx=\"6\" cy=\"6\" r=\"3\"/><path d=\"M8.12 8.12 12 12\"/><path d=\"M20 4 8.12 15.88\"/><circle cx=\"6\" cy=\"18\" r=\"3\"/><path d=\"M14.8 14.8 20 20\"/></svg>',\r\n 'delete': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-trash2-icon lucide-trash-2\"><path d=\"M3 6h18\"/><path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\"/><path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\"/><line x1=\"10\" x2=\"10\" y1=\"11\" y2=\"17\"/><line x1=\"14\" x2=\"14\" y1=\"11\" y2=\"17\"/></svg>',\r\n 'bring-to-front': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-to-line-icon lucide-arrow-up-to-line\"><path d=\"M5 3h14\"/><path d=\"m18 13-6-6-6 6\"/><path d=\"M12 7v14\"/></svg>',\r\n 'send-to-back': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-to-line-icon lucide-arrow-down-to-line\"><path d=\"M12 17V3\"/><path d=\"m6 11 6 6 6-6\"/><path d=\"M19 21H5\"/></svg>',\r\n 'select-all': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-square-mouse-pointer-icon lucide-square-mouse-pointer\"><path d=\"M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z\"/><path d=\"M21 11V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6\"/></svg>',\r\n 'download': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-download-icon lucide-download\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"12\" x2=\"12\" y1=\"15\" y2=\"3\"/></svg>',\r\n 'undo': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-undo-icon lucide-undo\"><path d=\"M3 7v6h6\"/><path d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\"/></svg>',\r\n 'redo': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-redo-icon lucide-redo\"><path d=\"M21 7v6h-6\"/><path d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\"/></svg>'\r\n});"]}
@@ -0,0 +1,18 @@
1
+ export class KritzelToolRegistry {
2
+ static registerTool(toolName, constructor, store) {
3
+ const toolInstance = new constructor(store);
4
+ toolInstance.name = toolName;
5
+ this.registry[toolName] = toolInstance;
6
+ return toolInstance;
7
+ }
8
+ static getTool(toolName) {
9
+ const toolInstance = this.registry[toolName];
10
+ if (!toolInstance) {
11
+ console.warn(`Unknown tool: ${toolName}`);
12
+ return null;
13
+ }
14
+ return toolInstance;
15
+ }
16
+ }
17
+ KritzelToolRegistry.registry = {};
18
+ //# sourceMappingURL=tool.registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.registry.js","sourceRoot":"","sources":["../../../src/classes/registries/tool.registry.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,mBAAmB;IAG9B,MAAM,CAAC,YAAY,CAAC,QAAgB,EAAE,WAAyD,EAAE,KAAmB;QAClH,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5C,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;QACvC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;;AAlBY,4BAAQ,GAAoC,EAAE,CAAC","sourcesContent":["import { KritzelStore } from \"../store.class\";\r\nimport { KritzelBaseTool } from \"../tools/base-tool.class\";\r\n\r\nexport class KritzelToolRegistry {\r\nprivate static registry: Record<string, KritzelBaseTool> = {};\r\n\r\n static registerTool(toolName: string, constructor: new (store: KritzelStore) => KritzelBaseTool, store: KritzelStore): KritzelBaseTool {\r\n const toolInstance = new constructor(store);\r\n toolInstance.name = toolName;\r\n this.registry[toolName] = toolInstance;\r\n return toolInstance;\r\n }\r\n\r\n static getTool(toolName: string): KritzelBaseTool | null {\r\n const toolInstance = this.registry[toolName];\r\n\r\n if (!toolInstance) {\r\n console.warn(`Unknown tool: ${toolName}`);\r\n return null;\r\n }\r\n\r\n return toolInstance;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,66 @@
1
+ import { KritzelImage } from "./objects/image.class";
2
+ import { KritzelPath } from "./objects/path.class";
3
+ import { KritzelSelectionGroup } from "./objects/selection-group.class";
4
+ import { KritzelText } from "./objects/text.class";
5
+ import { KritzelBrushTool } from "./tools/brush-tool.class";
6
+ import { KritzelEraserTool } from "./tools/eraser-tool.class";
7
+ import { KritzelImageTool } from "./tools/image-tool.class";
8
+ import { KritzelSelectionTool } from "./tools/selection-tool.class";
9
+ import { KritzelTextTool } from "./tools/text-tool.class";
10
+ import { KritzelCustomElement } from "./objects/custom-element.class";
11
+ export class KritzelReviver {
12
+ constructor(store) {
13
+ this._store = store;
14
+ }
15
+ revive(obj) {
16
+ if (obj && typeof obj === 'object') {
17
+ if (obj.__class__) {
18
+ let revivedObj;
19
+ switch (obj.__class__) {
20
+ case 'KritzelPath':
21
+ revivedObj = KritzelPath.create(this._store).revive(obj);
22
+ break;
23
+ case 'KritzelText':
24
+ revivedObj = KritzelText.create(this._store, obj.fontSize, obj.fontFamily).revive(obj);
25
+ break;
26
+ case 'KritzelImage':
27
+ revivedObj = KritzelImage.create(this._store).revive(obj);
28
+ break;
29
+ case 'KritzelCustomElement':
30
+ revivedObj = KritzelCustomElement.create(this._store).revive(obj);
31
+ break;
32
+ case 'KritzelSelectionGroup':
33
+ revivedObj = KritzelSelectionGroup.create(this._store).revive(obj);
34
+ break;
35
+ case 'KritzelBrushTool':
36
+ revivedObj = new KritzelBrushTool(this._store);
37
+ break;
38
+ case 'KritzelEraserTool':
39
+ revivedObj = new KritzelEraserTool(this._store);
40
+ break;
41
+ case 'KritzelImageTool':
42
+ revivedObj = new KritzelImageTool(this._store);
43
+ break;
44
+ case 'KritzelSelectionTool':
45
+ revivedObj = new KritzelSelectionTool(this._store);
46
+ break;
47
+ case 'KritzelTextTool':
48
+ revivedObj = new KritzelTextTool(this._store);
49
+ break;
50
+ default:
51
+ revivedObj = obj;
52
+ }
53
+ return revivedObj;
54
+ }
55
+ const newObj = Array.isArray(obj) ? [] : {};
56
+ for (const key in obj) {
57
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
58
+ newObj[key] = this.revive(obj[key]);
59
+ }
60
+ }
61
+ return newObj;
62
+ }
63
+ return obj;
64
+ }
65
+ }
66
+ //# sourceMappingURL=reviver.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviver.class.js","sourceRoot":"","sources":["../../src/classes/reviver.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelStore } from \"./store.class\";\r\nimport { KritzelImage } from \"./objects/image.class\";\r\nimport { KritzelPath } from \"./objects/path.class\";\r\nimport { KritzelSelectionGroup } from \"./objects/selection-group.class\";\r\nimport { KritzelText } from \"./objects/text.class\";\r\nimport { KritzelBrushTool } from \"./tools/brush-tool.class\";\r\nimport { KritzelEraserTool } from \"./tools/eraser-tool.class\";\r\nimport { KritzelImageTool } from \"./tools/image-tool.class\";\r\nimport { KritzelSelectionTool } from \"./tools/selection-tool.class\";\r\nimport { KritzelTextTool } from \"./tools/text-tool.class\";\r\nimport { KritzelCustomElement } from \"./objects/custom-element.class\";\r\n\r\nexport class KritzelReviver {\r\n\r\n private readonly _store: KritzelStore;\r\n\r\n constructor(store: KritzelStore) {\r\n this._store = store;\r\n }\r\n \r\n revive<T>(obj: any): T {\r\n if (obj && typeof obj === 'object') {\r\n if (obj.__class__) {\r\n let revivedObj;\r\n \r\n switch (obj.__class__) {\r\n case 'KritzelPath':\r\n revivedObj = KritzelPath.create(this._store).revive(obj);\r\n break;\r\n case 'KritzelText':\r\n revivedObj = KritzelText.create(this._store, obj.fontSize, obj.fontFamily).revive(obj);\r\n break;\r\n case 'KritzelImage':\r\n revivedObj = KritzelImage.create(this._store).revive(obj);\r\n break;\r\n case 'KritzelCustomElement':\r\n revivedObj = KritzelCustomElement.create(this._store).revive(obj);\r\n break;\r\n case 'KritzelSelectionGroup':\r\n revivedObj = KritzelSelectionGroup.create(this._store).revive(obj);\r\n break;\r\n case 'KritzelBrushTool':\r\n revivedObj = new KritzelBrushTool(this._store);\r\n break;\r\n case 'KritzelEraserTool':\r\n revivedObj = new KritzelEraserTool(this._store);\r\n break;\r\n case 'KritzelImageTool':\r\n revivedObj = new KritzelImageTool(this._store);\r\n break;\r\n case 'KritzelSelectionTool':\r\n revivedObj = new KritzelSelectionTool(this._store);\r\n break;\r\n case 'KritzelTextTool':\r\n revivedObj = new KritzelTextTool(this._store);\r\n break;\r\n\r\n default:\r\n revivedObj = obj;\r\n }\r\n return revivedObj;\r\n }\r\n\r\n const newObj = Array.isArray(obj) ? [] : {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n newObj[key] = this.revive(obj[key]);\r\n }\r\n }\r\n return newObj as T;\r\n }\r\n return obj;\r\n }\r\n\r\n}"]}
@@ -0,0 +1,287 @@
1
+ import { KritzelSelectionGroup } from "./objects/selection-group.class";
2
+ import { RemoveSelectionGroupCommand } from "./commands/remove-selection-group.command";
3
+ import { KritzelHistory } from "./history.class";
4
+ import { KritzelOctree } from "./structures/octree.structure";
5
+ import { KrtizelSelectionBox } from "./objects/selection-box.class";
6
+ import { RemoveObjectCommand } from "./commands/remove-object.command";
7
+ import { BatchCommand } from "./commands/batch.command";
8
+ import { AddObjectCommand } from "./commands/add-object.command";
9
+ import { AddSelectionGroupCommand } from "./commands/add-selection-group.command";
10
+ import { UpdateObjectCommand } from "./commands/update-object.command";
11
+ import { KritzelContextMenu } from "../components/ui/kritzel-context-menu/kritzel-context-menu";
12
+ import { KritzelToolRegistry } from "./registries/tool.registry";
13
+ import { DEFAULT_ENGINE_STATE } from "../configs/default-engine-state";
14
+ export class KritzelStore {
15
+ get history() {
16
+ return this._history;
17
+ }
18
+ get state() {
19
+ return this._state;
20
+ }
21
+ get currentZIndex() {
22
+ return this._state.objectsOctree.filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox)).length;
23
+ }
24
+ get allObjects() {
25
+ return this._state.objectsOctree.allObjects();
26
+ }
27
+ get selectedObjects() {
28
+ return this.allObjects.filter(o => !(o instanceof KritzelSelectionGroup)).filter(o => o.isSelected);
29
+ }
30
+ get offsetX() {
31
+ return this._state.host.getBoundingClientRect().left;
32
+ }
33
+ get offsetY() {
34
+ return this._state.host.getBoundingClientRect().top;
35
+ }
36
+ constructor(kritzelEngine) {
37
+ this._listeners = new Map();
38
+ this.objects = [];
39
+ this._state = DEFAULT_ENGINE_STATE;
40
+ this._kritzelEngine = kritzelEngine;
41
+ this._history = new KritzelHistory(this);
42
+ this._state.objectsOctree = new KritzelOctree({
43
+ x: -Infinity,
44
+ y: -Infinity,
45
+ z: -Infinity,
46
+ width: Infinity,
47
+ height: Infinity,
48
+ depth: Infinity,
49
+ });
50
+ }
51
+ rerender() {
52
+ const viewportBounds = {
53
+ x: -this._state.translateX / this._state.scale,
54
+ y: -this._state.translateY / this._state.scale,
55
+ z: this._state.scale,
56
+ width: this._state.viewportWidth / this._state.scale,
57
+ height: this._state.viewportHeight / this._state.scale,
58
+ depth: 100,
59
+ };
60
+ this.objects = this._state.objectsOctree.query(viewportBounds);
61
+ if (this._kritzelEngine) {
62
+ this._kritzelEngine.forceUpdate++;
63
+ }
64
+ }
65
+ findObjectById(id) {
66
+ for (const object of this.allObjects) {
67
+ if (object.id === id) {
68
+ return object;
69
+ }
70
+ }
71
+ return null;
72
+ }
73
+ deselectAllObjects() {
74
+ if (this._state.selectionGroup) {
75
+ this._history.executeCommand(new RemoveSelectionGroupCommand(this, this));
76
+ }
77
+ }
78
+ onStateChange(property, listener) {
79
+ if (!this._listeners.has(property)) {
80
+ this._listeners.set(property, new Set());
81
+ }
82
+ this._listeners.get(property).add(listener);
83
+ }
84
+ setState(property, value) {
85
+ const oldValue = this._state[property];
86
+ if (oldValue !== value) {
87
+ this._state[property] = value;
88
+ if (this._listeners.has(property)) {
89
+ this._listeners.get(property).forEach(listener => listener(value, oldValue, String(property)));
90
+ }
91
+ }
92
+ }
93
+ delete() {
94
+ if (!this.state.selectionGroup) {
95
+ return;
96
+ }
97
+ const deleteSelectedObjectsCommand = this.state.selectionGroup.objects.map(obj => new RemoveObjectCommand(this, this.state.selectionGroup, obj));
98
+ const removeSelectionGroupCommand = new RemoveSelectionGroupCommand(this, this.state.selectionGroup);
99
+ const commands = [...deleteSelectedObjectsCommand, removeSelectionGroupCommand];
100
+ this.history.executeCommand(new BatchCommand(this, this.state.selectionGroup, commands));
101
+ }
102
+ deleteObject(id, isHistoryUpdated = true) {
103
+ const object = this.findObjectById(id);
104
+ if (object) {
105
+ if (isHistoryUpdated) {
106
+ const removeObjectCommand = new RemoveObjectCommand(this, this, object);
107
+ this.history.executeCommand(removeObjectCommand);
108
+ }
109
+ else {
110
+ this._state.objectsOctree.remove(obj => obj.id === id);
111
+ this.rerender();
112
+ }
113
+ }
114
+ }
115
+ copy() {
116
+ this.state.copiedObjects = this.state.selectionGroup.copy();
117
+ }
118
+ paste(x, y) {
119
+ this.state.copiedObjects.isSelected = true;
120
+ const adjustedX = x !== undefined ? x : this.state.copiedObjects.translateX + 25;
121
+ const adjustedY = y !== undefined ? y : this.state.copiedObjects.translateY + 25;
122
+ this.state.copiedObjects.updatePosition(adjustedX, adjustedY);
123
+ const commands = [];
124
+ if (this.state.selectionGroup !== null) {
125
+ commands.push(new RemoveSelectionGroupCommand(this, this.state.selectionGroup));
126
+ }
127
+ const addCopiedObjectsCommands = this.state.copiedObjects.objects.map(obj => new AddObjectCommand(this, this, obj));
128
+ const addCopiedObjectsAsSelectionGroupCommand = new AddSelectionGroupCommand(this, this, this.state.copiedObjects);
129
+ commands.push(...addCopiedObjectsCommands, addCopiedObjectsAsSelectionGroupCommand);
130
+ this.history.executeCommand(new BatchCommand(this, this, commands));
131
+ this.state.isSelecting = false;
132
+ this.state.copiedObjects = this.state.selectionGroup.copy();
133
+ this.setState('activeTool', KritzelToolRegistry.getTool('selection'));
134
+ }
135
+ bringForward(object) {
136
+ const max = this.allObjects.length + 1;
137
+ const objects = object ? [object] : this.state.selectionGroup.objects;
138
+ const increaseZIndexCommands = objects.map(obj => {
139
+ if (obj.zIndex === max) {
140
+ return;
141
+ }
142
+ return new UpdateObjectCommand(this, this, obj, { zIndex: obj.zIndex + 1 });
143
+ });
144
+ this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));
145
+ }
146
+ sendBackward(object) {
147
+ const min = 0;
148
+ const objects = object ? [object] : this.state.selectionGroup.objects;
149
+ const decreaseZIndexCommands = objects.map(obj => {
150
+ if (obj.zIndex === min) {
151
+ return;
152
+ }
153
+ return new UpdateObjectCommand(this, this, obj, { zIndex: obj.zIndex - 1 });
154
+ });
155
+ this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));
156
+ }
157
+ bringToFront(object) {
158
+ const max = Math.max(...this.allObjects.map(obj => obj.zIndex)) + 1;
159
+ const objects = object ? [object] : this.state.selectionGroup.objects;
160
+ const increaseZIndexCommands = objects.map(obj => {
161
+ return new UpdateObjectCommand(this, this, obj, { zIndex: max });
162
+ });
163
+ this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));
164
+ }
165
+ sendToBack(object) {
166
+ const min = Math.min(...this.allObjects.map(obj => obj.zIndex)) - 1;
167
+ const objects = object ? [object] : this.state.selectionGroup.objects;
168
+ const decreaseZIndexCommands = objects.map(obj => {
169
+ return new UpdateObjectCommand(this, this, obj, { zIndex: min });
170
+ });
171
+ this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));
172
+ }
173
+ selectObjects(objects) {
174
+ if (objects.length === 0) {
175
+ return;
176
+ }
177
+ const selectionGroup = KritzelSelectionGroup.create(this);
178
+ objects.forEach(obj => {
179
+ obj.isSelected = false;
180
+ selectionGroup.addOrRemove(obj);
181
+ });
182
+ selectionGroup.isSelected = true;
183
+ this.state.selectionGroup = selectionGroup;
184
+ if (objects.length === 1) {
185
+ selectionGroup.rotation = selectionGroup.objects[0].rotation;
186
+ }
187
+ this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));
188
+ }
189
+ selectAllObjectsInViewport() {
190
+ const objectsInViewport = this._state.objectsOctree
191
+ .query({
192
+ x: -this._state.translateX / this._state.scale,
193
+ y: -this._state.translateY / this._state.scale,
194
+ z: this._state.scale,
195
+ width: this._state.viewportWidth / this._state.scale,
196
+ height: this._state.viewportHeight / this._state.scale,
197
+ depth: 100,
198
+ })
199
+ .filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox) && !(o instanceof KritzelContextMenu));
200
+ if (objectsInViewport.length > 0) {
201
+ const selectionGroup = KritzelSelectionGroup.create(this);
202
+ objectsInViewport.forEach(obj => {
203
+ obj.isSelected = false;
204
+ selectionGroup.addOrRemove(obj);
205
+ });
206
+ selectionGroup.isSelected = true;
207
+ this.state.isSelecting = false;
208
+ if (objectsInViewport.length === 1) {
209
+ selectionGroup.rotation = selectionGroup.objects[0].rotation;
210
+ }
211
+ this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));
212
+ this.setState('activeTool', KritzelToolRegistry.getTool('selection'));
213
+ }
214
+ }
215
+ clearSelection() {
216
+ const command = new RemoveSelectionGroupCommand(this, this.state.selectionGroup);
217
+ this.history.executeCommand(command);
218
+ this.state.selectionGroup = null;
219
+ this.state.selectionBox = null;
220
+ this.state.isSelecting = false;
221
+ this.state.isResizeHandleSelected = false;
222
+ this.state.isRotationHandleSelected = false;
223
+ }
224
+ resetActiveText() {
225
+ if (this.state.activeText && this.state.activeText.value === ' ') {
226
+ this.deleteObject(this.state.activeText.id, false);
227
+ this.history.undoStack.pop();
228
+ }
229
+ this.state.activeText = null;
230
+ }
231
+ getObjectFromPointerEvent(event, selector = '.object') {
232
+ var _a;
233
+ const shadowRoot = (_a = this.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
234
+ if (!shadowRoot)
235
+ return null;
236
+ const clientX = event.clientX;
237
+ const clientY = event.clientY;
238
+ const elementAtPoint = shadowRoot.elementFromPoint(clientX, clientY);
239
+ if (!elementAtPoint)
240
+ return null;
241
+ const selectedObject = elementAtPoint.closest(selector);
242
+ if (selectedObject) {
243
+ return this.allObjects.find(object => selectedObject.id === object.id);
244
+ }
245
+ return null;
246
+ }
247
+ getObjectsFromPointerEvent(event, selector = '.object') {
248
+ var _a;
249
+ const shadowRoot = (_a = this.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
250
+ if (!shadowRoot)
251
+ return [];
252
+ const clientX = event.clientX;
253
+ const clientY = event.clientY;
254
+ const elementsAtPoint = shadowRoot.elementsFromPoint(clientX, clientY);
255
+ if (!elementsAtPoint || elementsAtPoint.length === 0)
256
+ return [];
257
+ const objectIds = new Set();
258
+ elementsAtPoint.forEach(element => {
259
+ const selectedObject = element.closest(selector);
260
+ if (selectedObject && selectedObject.id) {
261
+ objectIds.add(selectedObject.id);
262
+ }
263
+ });
264
+ if (objectIds.size > 0) {
265
+ return this.allObjects.filter(object => objectIds.has(object.id)).sort((a, b) => b.zIndex - a.zIndex);
266
+ }
267
+ return [];
268
+ }
269
+ getCanvasPoint(event) {
270
+ if (!this.state.host) {
271
+ return { x: 0, y: 0 };
272
+ }
273
+ // Get the position of the kritzel-engine host element relative to the viewport
274
+ const hostRect = this.state.host.getBoundingClientRect();
275
+ // 1. Make the pointer coordinates relative to the host element
276
+ const xRelativeToHost = event.clientX - hostRect.left;
277
+ const yRelativeToHost = event.clientY - hostRect.top;
278
+ // 2. Reverse the translation applied to the #origin div
279
+ const xWithoutTranslate = xRelativeToHost - this.state.translateX;
280
+ const yWithoutTranslate = yRelativeToHost - this.state.translateY;
281
+ // 3. Reverse the scaling to get the final world coordinates
282
+ const worldX = xWithoutTranslate / this.state.scale;
283
+ const worldY = yWithoutTranslate / this.state.scale;
284
+ return { x: worldX, y: worldY };
285
+ }
286
+ }
287
+ //# sourceMappingURL=store.class.js.map