kritzel-stencil 0.0.127 → 0.0.128

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 (291) hide show
  1. package/dist/cjs/{index-BacMQbNR.js → index-C7Read21.js} +165 -82
  2. package/dist/cjs/index-C7Read21.js.map +1 -0
  3. package/dist/cjs/{index-C05uAr89.js → index-CUSIflVf.js} +12 -6
  4. package/dist/cjs/index-CUSIflVf.js.map +1 -0
  5. package/dist/cjs/index.cjs.js +1 -3
  6. package/dist/cjs/{kritzel-brush-style_18.cjs.entry.js → kritzel-brush-style_22.cjs.entry.js} +979 -211
  7. package/dist/cjs/loader.cjs.js +2 -4
  8. package/dist/cjs/stencil.cjs.js +3 -5
  9. package/dist/cjs/stencil.cjs.js.map +1 -1
  10. package/dist/collection/classes/commands/add-object.command.js +5 -2
  11. package/dist/collection/classes/commands/add-object.command.js.map +1 -1
  12. package/dist/collection/classes/commands/add-selection-group.command.js +2 -2
  13. package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -1
  14. package/dist/collection/classes/commands/base.command.js +2 -2
  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 +2 -2
  19. package/dist/collection/classes/commands/move-selection-group.command.js.map +1 -1
  20. package/dist/collection/classes/commands/remove-object.command.js +5 -2
  21. package/dist/collection/classes/commands/remove-object.command.js.map +1 -1
  22. package/dist/collection/classes/commands/remove-selection-group.command.js +2 -2
  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 +2 -2
  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 +2 -2
  27. package/dist/collection/classes/commands/rotate-selection-group.command.js.map +1 -1
  28. package/dist/collection/classes/commands/update-object.command.js +5 -2
  29. package/dist/collection/classes/commands/update-object.command.js.map +1 -1
  30. package/dist/collection/classes/commands/update-viewport.command.js +2 -2
  31. package/dist/collection/classes/commands/update-viewport.command.js.map +1 -1
  32. package/dist/collection/classes/database.class.js +227 -0
  33. package/dist/collection/classes/database.class.js.map +1 -0
  34. package/dist/collection/classes/handlers/key.handler.js +0 -1
  35. package/dist/collection/classes/handlers/key.handler.js.map +1 -1
  36. package/dist/collection/classes/handlers/move.handler.js +18 -2
  37. package/dist/collection/classes/handlers/move.handler.js.map +1 -1
  38. package/dist/collection/classes/handlers/resize.handler.js +10 -2
  39. package/dist/collection/classes/handlers/resize.handler.js.map +1 -1
  40. package/dist/collection/classes/handlers/rotation.handler.js +18 -2
  41. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
  42. package/dist/collection/classes/history.class.js +18 -5
  43. package/dist/collection/classes/history.class.js.map +1 -1
  44. package/dist/collection/classes/objects/base-object.class.js +1 -0
  45. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  46. package/dist/collection/classes/objects/custom-element.class.js +1 -0
  47. package/dist/collection/classes/objects/custom-element.class.js.map +1 -1
  48. package/dist/collection/classes/objects/image.class.js +1 -0
  49. package/dist/collection/classes/objects/image.class.js.map +1 -1
  50. package/dist/collection/classes/objects/path.class.js +1 -0
  51. package/dist/collection/classes/objects/path.class.js.map +1 -1
  52. package/dist/collection/classes/objects/selection-box.class.js +1 -0
  53. package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
  54. package/dist/collection/classes/objects/selection-group.class.js +1 -0
  55. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  56. package/dist/collection/classes/objects/text.class.js +7 -4
  57. package/dist/collection/classes/objects/text.class.js.map +1 -1
  58. package/dist/collection/classes/registries/icon-registry.class.js +5 -1
  59. package/dist/collection/classes/registries/icon-registry.class.js.map +1 -1
  60. package/dist/collection/classes/store.class.js +143 -20
  61. package/dist/collection/classes/store.class.js.map +1 -1
  62. package/dist/collection/classes/structures/octree.structure.js +4 -0
  63. package/dist/collection/classes/structures/octree.structure.js.map +1 -1
  64. package/dist/collection/classes/tools/image-tool.class.js +3 -0
  65. package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
  66. package/dist/collection/classes/tools/text-tool.class.js +2 -2
  67. package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
  68. package/dist/collection/classes/viewport.class.js +4 -0
  69. package/dist/collection/classes/viewport.class.js.map +1 -1
  70. package/dist/collection/classes/workspace.class.js +10 -0
  71. package/dist/collection/classes/workspace.class.js.map +1 -0
  72. package/dist/collection/collection-manifest.json +6 -2
  73. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
  74. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +5 -0
  75. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +14 -16
  76. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  77. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +235 -39
  78. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  79. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  80. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +1 -1
  81. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  82. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  83. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +1 -1
  84. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +1 -1
  85. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  86. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +166 -0
  87. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +272 -0
  88. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -0
  89. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +218 -0
  90. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -0
  91. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +74 -0
  92. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +324 -0
  93. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -0
  94. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +2 -2
  95. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  96. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +4 -4
  97. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +1 -1
  98. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +24 -61
  99. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -1
  100. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +2 -2
  101. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +2 -2
  102. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +3 -3
  103. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +29 -17
  104. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -1
  105. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  106. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.css +5 -0
  107. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +209 -0
  108. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -0
  109. package/dist/collection/configs/default-engine-state.js +5 -2
  110. package/dist/collection/configs/default-engine-state.js.map +1 -1
  111. package/dist/collection/helpers/class.helper.js +1 -1
  112. package/dist/collection/helpers/class.helper.js.map +1 -1
  113. package/dist/collection/helpers/html.helper.js +30 -1
  114. package/dist/collection/helpers/html.helper.js.map +1 -1
  115. package/dist/collection/helpers/object.helper.js +1 -1
  116. package/dist/collection/helpers/object.helper.js.map +1 -1
  117. package/dist/collection/interfaces/command.interface.js.map +1 -1
  118. package/dist/collection/interfaces/debug-info.interface.js.map +1 -1
  119. package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
  120. package/dist/collection/interfaces/menu-item.interface.js +2 -0
  121. package/dist/collection/interfaces/menu-item.interface.js.map +1 -0
  122. package/dist/collection/interfaces/object.interface.js.map +1 -1
  123. package/dist/components/index.d.ts +8 -0
  124. package/dist/components/index.js +7 -3
  125. package/dist/components/index.js.map +1 -1
  126. package/dist/components/kritzel-brush-style.js +1 -1
  127. package/dist/components/kritzel-color-palette.js +1 -1
  128. package/dist/components/kritzel-color.js +1 -1
  129. package/dist/components/kritzel-context-menu.js +1 -1
  130. package/dist/components/kritzel-control-brush-config.js +1 -1
  131. package/dist/components/kritzel-control-text-config.js +1 -1
  132. package/dist/components/kritzel-controls.js +1 -1
  133. package/dist/components/kritzel-cursor-trail.js +1 -1
  134. package/dist/components/kritzel-dropdown.js +1 -1
  135. package/dist/components/kritzel-editor.js +79 -49
  136. package/dist/components/kritzel-editor.js.map +1 -1
  137. package/dist/components/kritzel-engine.js +1 -1
  138. package/dist/components/kritzel-font-family.js +1 -1
  139. package/dist/components/kritzel-font-size.js +1 -1
  140. package/dist/components/kritzel-font.js +1 -1
  141. package/dist/components/kritzel-icon.js +1 -1
  142. package/dist/components/kritzel-menu.d.ts +11 -0
  143. package/dist/components/kritzel-menu.js +9 -0
  144. package/dist/components/kritzel-menu.js.map +1 -0
  145. package/dist/components/kritzel-portal.d.ts +11 -0
  146. package/dist/components/kritzel-portal.js +9 -0
  147. package/dist/components/kritzel-portal.js.map +1 -0
  148. package/dist/components/kritzel-split-button.d.ts +11 -0
  149. package/dist/components/kritzel-split-button.js +9 -0
  150. package/dist/components/kritzel-split-button.js.map +1 -0
  151. package/dist/components/kritzel-stroke-size.js +1 -1
  152. package/dist/components/kritzel-tooltip.js +1 -1
  153. package/dist/components/kritzel-utility-panel.js +1 -1
  154. package/dist/components/kritzel-workspace-manager.d.ts +11 -0
  155. package/dist/components/kritzel-workspace-manager.js +9 -0
  156. package/dist/components/kritzel-workspace-manager.js.map +1 -0
  157. package/dist/components/{p-DfJEh7HZ.js → p-5CJxFNEE.js} +9 -7
  158. package/dist/components/p-5CJxFNEE.js.map +1 -0
  159. package/dist/components/{p-ljdIU3DL.js → p-B7VrEdgP.js} +63 -63
  160. package/dist/components/p-B7VrEdgP.js.map +1 -0
  161. package/dist/components/{p-DJc6_PyL.js → p-BAPUTr3K.js} +10 -8
  162. package/dist/components/p-BAPUTr3K.js.map +1 -0
  163. package/dist/components/{p-DSWoCkxm.js → p-BB22cVkU.js} +42 -34
  164. package/dist/components/p-BB22cVkU.js.map +1 -0
  165. package/dist/components/{p-CtiROna-.js → p-BLmFBe2a.js} +12 -6
  166. package/dist/components/p-BLmFBe2a.js.map +1 -0
  167. package/dist/components/p-BU2q3PRS.js +84 -0
  168. package/dist/components/p-BU2q3PRS.js.map +1 -0
  169. package/dist/components/{p-Dp8hrISj.js → p-BZ-j_4CK.js} +8 -6
  170. package/dist/components/p-BZ-j_4CK.js.map +1 -0
  171. package/dist/components/{p-BhC-Et5I.js → p-BaKb8ZLg.js} +16 -14
  172. package/dist/components/p-BaKb8ZLg.js.map +1 -0
  173. package/dist/components/p-Bb6od8He.js +42 -0
  174. package/dist/components/p-Bb6od8He.js.map +1 -0
  175. package/dist/components/{p-DcvujuV_.js → p-BcQTDgzV.js} +10 -8
  176. package/dist/components/p-BcQTDgzV.js.map +1 -0
  177. package/dist/components/p-BeVv4o5c.js +14 -0
  178. package/dist/components/p-BeVv4o5c.js.map +1 -0
  179. package/dist/components/p-BmJbJwkH.js +167 -0
  180. package/dist/components/p-BmJbJwkH.js.map +1 -0
  181. package/dist/components/{p-DJN0U8pI.js → p-BqrTPNyu.js} +10 -7
  182. package/dist/components/p-BqrTPNyu.js.map +1 -0
  183. package/dist/components/{p-NZJPrwJV.js → p-BvlGgLAQ.js} +7 -5
  184. package/dist/components/p-BvlGgLAQ.js.map +1 -0
  185. package/dist/components/{p-BOUCnklW.js → p-BzSz74Ci.js} +9 -7
  186. package/dist/components/p-BzSz74Ci.js.map +1 -0
  187. package/dist/components/{p-CudOuOAW.js → p-D-zg05gA.js} +558 -126
  188. package/dist/components/p-D-zg05gA.js.map +1 -0
  189. package/dist/components/p-D8W6LE-c.js.map +1 -1
  190. package/dist/components/p-DV4ERZv5.js +112 -0
  191. package/dist/components/p-DV4ERZv5.js.map +1 -0
  192. package/dist/components/{p-EQo4-DJT.js → p-DtmZW6eP.js} +8 -6
  193. package/dist/components/p-DtmZW6eP.js.map +1 -0
  194. package/dist/components/{p-C9usqwb5.js → p-V4ui5aWj.js} +9 -7
  195. package/dist/components/p-V4ui5aWj.js.map +1 -0
  196. package/dist/components/{p-BubFkS0u.js → p-_ntxNi8v.js} +9 -7
  197. package/dist/components/p-_ntxNi8v.js.map +1 -0
  198. package/dist/components/{p-BkFzf8vg.js → p-a7KmQzo4.js} +15 -13
  199. package/dist/components/p-a7KmQzo4.js.map +1 -0
  200. package/dist/components/p-hSuNJiIq.js +152 -0
  201. package/dist/components/p-hSuNJiIq.js.map +1 -0
  202. package/dist/components/{p-CmlcJ8Kw.js → p-jG1e48OE.js} +11 -9
  203. package/dist/components/p-jG1e48OE.js.map +1 -0
  204. package/dist/components/{p-D5a8vnRF.js → p-rQeWFfPG.js} +10 -8
  205. package/dist/components/p-rQeWFfPG.js.map +1 -0
  206. package/dist/components/p-sQmW5NRu.js +156 -0
  207. package/dist/components/p-sQmW5NRu.js.map +1 -0
  208. package/dist/esm/{index-D37FADaF.js → index-J4NpPimy.js} +163 -83
  209. package/dist/esm/index-J4NpPimy.js.map +1 -0
  210. package/dist/esm/{index-BGl8znzE.js → index-NiIEUDzj.js} +12 -6
  211. package/dist/esm/index-NiIEUDzj.js.map +1 -0
  212. package/dist/esm/index.js +1 -3
  213. package/dist/esm/{kritzel-brush-style_18.entry.js → kritzel-brush-style_22.entry.js} +969 -205
  214. package/dist/esm/loader.js +3 -5
  215. package/dist/esm/stencil.js +4 -6
  216. package/dist/esm/stencil.js.map +1 -1
  217. package/dist/stencil/index.esm.js +1 -1
  218. package/dist/stencil/p-4a0009e7.entry.js +2 -0
  219. package/dist/stencil/p-4a0009e7.entry.js.map +1 -0
  220. package/dist/stencil/p-J4NpPimy.js +2 -0
  221. package/dist/stencil/p-J4NpPimy.js.map +1 -0
  222. package/dist/stencil/{p-BGl8znzE.js → p-NiIEUDzj.js} +3 -3
  223. package/dist/stencil/p-NiIEUDzj.js.map +1 -0
  224. package/dist/stencil/stencil.esm.js +1 -1
  225. package/dist/stencil/stencil.esm.js.map +1 -1
  226. package/dist/types/classes/commands/add-object.command.d.ts +1 -1
  227. package/dist/types/classes/commands/add-selection-group.command.d.ts +1 -1
  228. package/dist/types/classes/commands/base.command.d.ts +2 -2
  229. package/dist/types/classes/commands/batch.command.d.ts +1 -1
  230. package/dist/types/classes/commands/move-selection-group.command.d.ts +1 -1
  231. package/dist/types/classes/commands/remove-object.command.d.ts +1 -1
  232. package/dist/types/classes/commands/remove-selection-group.command.d.ts +1 -1
  233. package/dist/types/classes/commands/resize-selection-group.command.d.ts +1 -1
  234. package/dist/types/classes/commands/rotate-selection-group.command.d.ts +1 -1
  235. package/dist/types/classes/commands/update-object.command.d.ts +1 -1
  236. package/dist/types/classes/commands/update-viewport.command.d.ts +1 -1
  237. package/dist/types/classes/database.class.d.ts +28 -0
  238. package/dist/types/classes/history.class.d.ts +1 -0
  239. package/dist/types/classes/objects/base-object.class.d.ts +1 -0
  240. package/dist/types/classes/objects/text.class.d.ts +1 -1
  241. package/dist/types/classes/store.class.d.ts +19 -2
  242. package/dist/types/classes/structures/octree.structure.d.ts +1 -0
  243. package/dist/types/classes/workspace.class.d.ts +16 -0
  244. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +6 -1
  245. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +12 -2
  246. package/dist/types/components/shared/kritzel-menu/kritzel-menu.d.ts +24 -0
  247. package/dist/types/components/shared/kritzel-portal/kritzel-portal.d.ts +24 -0
  248. package/dist/types/components/shared/kritzel-split-button/kritzel-split-button.d.ts +24 -0
  249. package/dist/types/components/ui/kritzel-context-menu/kritzel-context-menu.d.ts +3 -4
  250. package/dist/types/components/ui/kritzel-controls/kritzel-controls.d.ts +2 -1
  251. package/dist/types/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.d.ts +25 -0
  252. package/dist/types/components.d.ts +250 -2
  253. package/dist/types/helpers/html.helper.d.ts +3 -1
  254. package/dist/types/interfaces/command.interface.d.ts +1 -1
  255. package/dist/types/interfaces/debug-info.interface.d.ts +1 -0
  256. package/dist/types/interfaces/engine-state.interface.d.ts +3 -0
  257. package/dist/types/interfaces/menu-item.interface.d.ts +9 -0
  258. package/dist/types/interfaces/object.interface.d.ts +1 -0
  259. package/dist/types/stencil-public-runtime.d.ts +21 -0
  260. package/package.json +2 -1
  261. package/dist/cjs/index-BacMQbNR.js.map +0 -1
  262. package/dist/cjs/index-C05uAr89.js.map +0 -1
  263. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +0 -1
  264. package/dist/components/p-2gNwfcSP.js +0 -119
  265. package/dist/components/p-2gNwfcSP.js.map +0 -1
  266. package/dist/components/p-BOUCnklW.js.map +0 -1
  267. package/dist/components/p-BhC-Et5I.js.map +0 -1
  268. package/dist/components/p-BkFzf8vg.js.map +0 -1
  269. package/dist/components/p-BubFkS0u.js.map +0 -1
  270. package/dist/components/p-C9usqwb5.js.map +0 -1
  271. package/dist/components/p-CmlcJ8Kw.js.map +0 -1
  272. package/dist/components/p-CtiROna-.js.map +0 -1
  273. package/dist/components/p-CudOuOAW.js.map +0 -1
  274. package/dist/components/p-D5a8vnRF.js.map +0 -1
  275. package/dist/components/p-DJN0U8pI.js.map +0 -1
  276. package/dist/components/p-DJc6_PyL.js.map +0 -1
  277. package/dist/components/p-DSWoCkxm.js.map +0 -1
  278. package/dist/components/p-DcvujuV_.js.map +0 -1
  279. package/dist/components/p-DfJEh7HZ.js.map +0 -1
  280. package/dist/components/p-Dp8hrISj.js.map +0 -1
  281. package/dist/components/p-EQo4-DJT.js.map +0 -1
  282. package/dist/components/p-NZJPrwJV.js.map +0 -1
  283. package/dist/components/p-ljdIU3DL.js.map +0 -1
  284. package/dist/esm/index-BGl8znzE.js.map +0 -1
  285. package/dist/esm/index-D37FADaF.js.map +0 -1
  286. package/dist/esm/kritzel-brush-style_18.entry.js.map +0 -1
  287. package/dist/stencil/p-BGl8znzE.js.map +0 -1
  288. package/dist/stencil/p-D37FADaF.js +0 -2
  289. package/dist/stencil/p-D37FADaF.js.map +0 -1
  290. package/dist/stencil/p-e6ac7fc6.entry.js +0 -2
  291. package/dist/stencil/p-e6ac7fc6.entry.js.map +0 -1
@@ -1,14 +1,12 @@
1
- import { b as bootstrapLazy } from './index-BGl8znzE.js';
2
- export { s as setNonce } from './index-BGl8znzE.js';
1
+ import { b as bootstrapLazy } from './index-NiIEUDzj.js';
2
+ export { s as setNonce } from './index-NiIEUDzj.js';
3
3
  import { g as globalScripts } from './app-globals-DQuL1Twl.js';
4
4
 
5
5
  const defineCustomElements = async (win, options) => {
6
6
  if (typeof window === 'undefined') return undefined;
7
7
  await globalScripts();
8
- return bootstrapLazy([["kritzel-brush-style_18",[[256,"kritzel-editor",{"scaleMax":[2,"scale-max"],"scaleMin":[2,"scale-min"],"controls":[16],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"customSvgIcons":[16,"custom-svg-icons"],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isEngineReady":[32],"isControlsReady":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64]},[[0,"dblclick","handleTouchStart"],[8,"keydown","handleKeyDown"]],{"isEngineReady":["onIsEngineReady"],"isControlsReady":["onIsControlsReady"]}],[257,"kritzel-controls",{"controls":[16],"activeControl":[1040,"active-control"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"firstConfig":[32],"isTooltipVisible":[32],"isTouchDevice":[32],"closeTooltip":[64]},[[4,"activeToolChange","handleActiveToolChange"],[4,"click","handleClick"]]],[257,"kritzel-engine",{"activeTool":[16,"active-tool"],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"forceUpdate":[32],"registerTool":[64],"changeActiveTool":[64],"setFocus":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"getCopiedObjects":[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"],[9,"mousedown","updateFocus"]],{"scaleMax":["validateScaleMax"],"scaleMin":["validateScaleMin"]}],[257,"kritzel-control-text-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"]}],[257,"kritzel-control-brush-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"palette":[32]},null,{"tool":["handleToolChange"]}],[257,"kritzel-context-menu",{"items":[16],"objects":[16],"disabledStates":[32],"visibleItems":[32]},null,{"items":["onItemsChanged"]}],[257,"kritzel-utility-panel"],[257,"kritzel-cursor-trail",{"store":[16],"cursorTrailPoints":[32],"isLeftButtonDown":[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[257,"kritzel-tooltip",{"isVisible":[4,"is-visible"],"anchorElement":[16,"anchor-element"],"arrowSize":[2,"arrow-size"],"offsetY":[2,"offset-y"],"positionX":[32],"arrowOffset":[32],"isMobileView":[32]},[[9,"resize","handleWindowResize"]]],[257,"kritzel-brush-style",{"type":[1],"brushOptions":[16,"brush-options"]}],[257,"kritzel-font-family",{"fontOptions":[16,"font-options"],"selectedFontFamily":[1025,"selected-font-family"]}],[257,"kritzel-font-size",{"sizes":[16],"selectedSize":[1026,"selected-size"],"fontFamily":[1,"font-family"]}],[257,"kritzel-stroke-size",{"sizes":[16],"selectedSize":[1026,"selected-size"]}],[257,"kritzel-color-palette",{"colors":[16],"selectedColor":[1025,"selected-color"],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"]}],[257,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[257,"kritzel-color",{"value":[1],"size":[2]}],[257,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[8,"select-styles"],"internalValue":[32],"hasSuffixContent":[32],"hasPrefixContent":[32]},null,{"value":["externalValueChanged"],"options":["optionsChanged"]}],[257,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]]], options);
8
+ return bootstrapLazy([["kritzel-brush-style_22",[[256,"kritzel-editor",{"scaleMax":[2,"scale-max"],"scaleMin":[2,"scale-min"],"controls":[16],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"customSvgIcons":[16,"custom-svg-icons"],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isEngineReady":[32],"isControlsReady":[32],"isWorkspaceManagerReady":[32],"workspaces":[32],"activeWorkspace":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64]},[[0,"dblclick","handleTouchStart"]],{"isEngineReady":["onIsEngineReady"],"isControlsReady":["onIsControlsReady"]}],[257,"kritzel-controls",{"controls":[16],"activeControl":[1040,"active-control"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"firstConfig":[32],"isTooltipVisible":[32],"isTouchDevice":[32],"closeTooltip":[64]},[[4,"click","handleDocumentClick"],[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"]]],[257,"kritzel-workspace-manager",{"workspaces":[16],"activeWorkspace":[1040,"active-workspace"],"editingIndex":[32],"newWorkspace":[32]}],[257,"kritzel-engine",{"workspace":[16],"activeTool":[16,"active-tool"],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"forceUpdate":[32],"registerTool":[64],"changeActiveTool":[64],"setFocus":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"getCopiedObjects":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"],[9,"mousedown","updateFocus"],[0,"click","handleClick"]],{"workspace":["onWorkspaceChange"],"scaleMax":["validateScaleMax"],"scaleMin":["validateScaleMin"]}],[257,"kritzel-control-text-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"]}],[257,"kritzel-control-brush-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"palette":[32]},null,{"tool":["handleToolChange"]}],[257,"kritzel-split-button",{"buttonText":[1,"button-text"],"buttonIcon":[1,"button-icon"],"dropdownIcon":[1,"dropdown-icon"],"options":[16],"disabled":[4],"activeItemIndex":[2,"active-item-index"],"editingIndex":[2,"editing-index"],"isMenuOpen":[32],"openMenu":[64],"closeMenu":[64]}],[257,"kritzel-context-menu",{"items":[16],"objects":[16],"processedItems":[32]},null,{"items":["onItemsChanged"]}],[257,"kritzel-utility-panel"],[257,"kritzel-cursor-trail",{"store":[16],"cursorTrailPoints":[32],"isLeftButtonDown":[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[257,"kritzel-tooltip",{"isVisible":[4,"is-visible"],"anchorElement":[16,"anchor-element"],"arrowSize":[2,"arrow-size"],"offsetY":[2,"offset-y"],"positionX":[32],"arrowOffset":[32],"isMobileView":[32]},[[9,"resize","handleWindowResize"]]],[257,"kritzel-brush-style",{"type":[1],"brushOptions":[16,"brush-options"]}],[257,"kritzel-font-family",{"fontOptions":[16,"font-options"],"selectedFontFamily":[1025,"selected-font-family"]}],[257,"kritzel-font-size",{"sizes":[16],"selectedSize":[1026,"selected-size"],"fontFamily":[1,"font-family"]}],[257,"kritzel-stroke-size",{"sizes":[16],"selectedSize":[1026,"selected-size"]}],[257,"kritzel-menu",{"items":[16],"parentIndex":[2,"parent-index"],"parent":[16],"activeItemIndex":[2,"active-item-index"],"editingIndex":[2,"editing-index"],"openChildMenuIndex":[32]},[[8,"click","handleWindowClick"],[8,"keydown","handleEscape"],[8,"keydown","handleEnter"]],{"editingIndex":["onEditingIndexChange"]}],[257,"kritzel-color-palette",{"colors":[16],"selectedColor":[1025,"selected-color"],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"]}],[257,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[257,"kritzel-portal",{"anchor":[16],"offsetX":[2,"offset-x"],"offsetY":[2,"offset-y"],"autoFocus":[4,"auto-focus"]},[[11,"resize","handleResize"]],{"anchor":["anchorChanged"]}],[257,"kritzel-color",{"value":[1],"size":[2]}],[257,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[8,"select-styles"],"internalValue":[32],"hasSuffixContent":[32],"hasPrefixContent":[32]},null,{"value":["externalValueChanged"],"options":["optionsChanged"]}],[257,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]]], options);
9
9
  };
10
10
 
11
11
  export { defineCustomElements };
12
12
  //# sourceMappingURL=loader.js.map
13
-
14
- //# sourceMappingURL=loader.js.map
@@ -1,9 +1,9 @@
1
- import { p as promiseResolve, b as bootstrapLazy } from './index-BGl8znzE.js';
2
- export { s as setNonce } from './index-BGl8znzE.js';
1
+ import { p as promiseResolve, b as bootstrapLazy } from './index-NiIEUDzj.js';
2
+ export { s as setNonce } from './index-NiIEUDzj.js';
3
3
  import { g as globalScripts } from './app-globals-DQuL1Twl.js';
4
4
 
5
5
  /*
6
- Stencil Client Patch Browser v4.36.3 | MIT Licensed | https://stenciljs.com
6
+ Stencil Client Patch Browser v4.37.0 | MIT Licensed | https://stenciljs.com
7
7
  */
8
8
 
9
9
  var patchBrowser = () => {
@@ -17,8 +17,6 @@ var patchBrowser = () => {
17
17
 
18
18
  patchBrowser().then(async (options) => {
19
19
  await globalScripts();
20
- return bootstrapLazy([["kritzel-brush-style_18",[[256,"kritzel-editor",{"scaleMax":[2,"scale-max"],"scaleMin":[2,"scale-min"],"controls":[16],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"customSvgIcons":[16,"custom-svg-icons"],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isEngineReady":[32],"isControlsReady":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64]},[[0,"dblclick","handleTouchStart"],[8,"keydown","handleKeyDown"]],{"isEngineReady":["onIsEngineReady"],"isControlsReady":["onIsControlsReady"]}],[257,"kritzel-controls",{"controls":[16],"activeControl":[1040,"active-control"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"firstConfig":[32],"isTooltipVisible":[32],"isTouchDevice":[32],"closeTooltip":[64]},[[4,"activeToolChange","handleActiveToolChange"],[4,"click","handleClick"]]],[257,"kritzel-engine",{"activeTool":[16,"active-tool"],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"forceUpdate":[32],"registerTool":[64],"changeActiveTool":[64],"setFocus":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"getCopiedObjects":[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"],[9,"mousedown","updateFocus"]],{"scaleMax":["validateScaleMax"],"scaleMin":["validateScaleMin"]}],[257,"kritzel-control-text-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"]}],[257,"kritzel-control-brush-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"palette":[32]},null,{"tool":["handleToolChange"]}],[257,"kritzel-context-menu",{"items":[16],"objects":[16],"disabledStates":[32],"visibleItems":[32]},null,{"items":["onItemsChanged"]}],[257,"kritzel-utility-panel"],[257,"kritzel-cursor-trail",{"store":[16],"cursorTrailPoints":[32],"isLeftButtonDown":[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[257,"kritzel-tooltip",{"isVisible":[4,"is-visible"],"anchorElement":[16,"anchor-element"],"arrowSize":[2,"arrow-size"],"offsetY":[2,"offset-y"],"positionX":[32],"arrowOffset":[32],"isMobileView":[32]},[[9,"resize","handleWindowResize"]]],[257,"kritzel-brush-style",{"type":[1],"brushOptions":[16,"brush-options"]}],[257,"kritzel-font-family",{"fontOptions":[16,"font-options"],"selectedFontFamily":[1025,"selected-font-family"]}],[257,"kritzel-font-size",{"sizes":[16],"selectedSize":[1026,"selected-size"],"fontFamily":[1,"font-family"]}],[257,"kritzel-stroke-size",{"sizes":[16],"selectedSize":[1026,"selected-size"]}],[257,"kritzel-color-palette",{"colors":[16],"selectedColor":[1025,"selected-color"],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"]}],[257,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[257,"kritzel-color",{"value":[1],"size":[2]}],[257,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[8,"select-styles"],"internalValue":[32],"hasSuffixContent":[32],"hasPrefixContent":[32]},null,{"value":["externalValueChanged"],"options":["optionsChanged"]}],[257,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]]], options);
20
+ return bootstrapLazy([["kritzel-brush-style_22",[[256,"kritzel-editor",{"scaleMax":[2,"scale-max"],"scaleMin":[2,"scale-min"],"controls":[16],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"customSvgIcons":[16,"custom-svg-icons"],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isEngineReady":[32],"isControlsReady":[32],"isWorkspaceManagerReady":[32],"workspaces":[32],"activeWorkspace":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64]},[[0,"dblclick","handleTouchStart"]],{"isEngineReady":["onIsEngineReady"],"isControlsReady":["onIsControlsReady"]}],[257,"kritzel-controls",{"controls":[16],"activeControl":[1040,"active-control"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"firstConfig":[32],"isTooltipVisible":[32],"isTouchDevice":[32],"closeTooltip":[64]},[[4,"click","handleDocumentClick"],[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"]]],[257,"kritzel-workspace-manager",{"workspaces":[16],"activeWorkspace":[1040,"active-workspace"],"editingIndex":[32],"newWorkspace":[32]}],[257,"kritzel-engine",{"workspace":[16],"activeTool":[16,"active-tool"],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"forceUpdate":[32],"registerTool":[64],"changeActiveTool":[64],"setFocus":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"getCopiedObjects":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"],[9,"mousedown","updateFocus"],[0,"click","handleClick"]],{"workspace":["onWorkspaceChange"],"scaleMax":["validateScaleMax"],"scaleMin":["validateScaleMin"]}],[257,"kritzel-control-text-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"]}],[257,"kritzel-control-brush-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"palette":[32]},null,{"tool":["handleToolChange"]}],[257,"kritzel-split-button",{"buttonText":[1,"button-text"],"buttonIcon":[1,"button-icon"],"dropdownIcon":[1,"dropdown-icon"],"options":[16],"disabled":[4],"activeItemIndex":[2,"active-item-index"],"editingIndex":[2,"editing-index"],"isMenuOpen":[32],"openMenu":[64],"closeMenu":[64]}],[257,"kritzel-context-menu",{"items":[16],"objects":[16],"processedItems":[32]},null,{"items":["onItemsChanged"]}],[257,"kritzel-utility-panel"],[257,"kritzel-cursor-trail",{"store":[16],"cursorTrailPoints":[32],"isLeftButtonDown":[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[257,"kritzel-tooltip",{"isVisible":[4,"is-visible"],"anchorElement":[16,"anchor-element"],"arrowSize":[2,"arrow-size"],"offsetY":[2,"offset-y"],"positionX":[32],"arrowOffset":[32],"isMobileView":[32]},[[9,"resize","handleWindowResize"]]],[257,"kritzel-brush-style",{"type":[1],"brushOptions":[16,"brush-options"]}],[257,"kritzel-font-family",{"fontOptions":[16,"font-options"],"selectedFontFamily":[1025,"selected-font-family"]}],[257,"kritzel-font-size",{"sizes":[16],"selectedSize":[1026,"selected-size"],"fontFamily":[1,"font-family"]}],[257,"kritzel-stroke-size",{"sizes":[16],"selectedSize":[1026,"selected-size"]}],[257,"kritzel-menu",{"items":[16],"parentIndex":[2,"parent-index"],"parent":[16],"activeItemIndex":[2,"active-item-index"],"editingIndex":[2,"editing-index"],"openChildMenuIndex":[32]},[[8,"click","handleWindowClick"],[8,"keydown","handleEscape"],[8,"keydown","handleEnter"]],{"editingIndex":["onEditingIndexChange"]}],[257,"kritzel-color-palette",{"colors":[16],"selectedColor":[1025,"selected-color"],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"]}],[257,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[257,"kritzel-portal",{"anchor":[16],"offsetX":[2,"offset-x"],"offsetY":[2,"offset-y"],"autoFocus":[4,"auto-focus"]},[[11,"resize","handleResize"]],{"anchor":["anchorChanged"]}],[257,"kritzel-color",{"value":[1],"size":[2]}],[257,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[8,"select-styles"],"internalValue":[32],"hasSuffixContent":[32],"hasPrefixContent":[32]},null,{"value":["externalValueChanged"],"options":["optionsChanged"]}],[257,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]]], options);
21
21
  });
22
22
  //# sourceMappingURL=stencil.js.map
23
-
24
- //# sourceMappingURL=stencil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stencil.js","sources":["../../node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.36.3 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, H, promiseResolve, win } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? win.document && Array.from(win.document.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"names":[],"mappings":";;;;AAAA;AACA;AACA;;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AACpC,EAAE,MAAM,IAAI,GAAiE,EAAE;AAC/E,EAAE,IAAI,UAAU,KAAK,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI;AACrD;AACA,EAAE,OAAO,cAAc,CAAC,IAAI,CAAC;AAC7B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAM,aAAa,EAAE;AACvB,EAAE,OAAO,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D,CAAC,CAAC","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"stencil.js","sources":["../../node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.37.0 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, H, promiseResolve, win } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? win.document && Array.from(win.document.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"names":[],"mappings":";;;;AAAA;AACA;AACA;;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AACpC,EAAE,MAAM,IAAI,GAAiE,EAAE;AAC/E,EAAE,IAAI,UAAU,KAAK,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI;AACrD;AACA,EAAE,OAAO,cAAc,CAAC,IAAI,CAAC;AAC7B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAM,aAAa,EAAE;AACvB,EAAE,OAAO,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D,CAAC,CAAC","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- export{D as DEFAULT_BRUSH_CONFIG,e as DEFAULT_TEXT_CONFIG,K as KritzelBrushTool,d as KritzelEraserTool,s as KritzelImage,f as KritzelImageTool,r as KritzelPath,c as KritzelSelectionTool,q as KritzelText,a as KritzelTextTool}from"./p-D37FADaF.js";
1
+ export{D as DEFAULT_BRUSH_CONFIG,e as DEFAULT_TEXT_CONFIG,K as KritzelBrushTool,d as KritzelEraserTool,t as KritzelImage,f as KritzelImageTool,s as KritzelPath,c as KritzelSelectionTool,r as KritzelText,a as KritzelTextTool}from"./p-J4NpPimy.js";
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{r as t,c as e,h as i,H as s,g as o}from"./p-NiIEUDzj.js";import{K as n,a as r,b as l,c as a,D as h,d as c,e as d,f as u,g as f,h as b,i as p,j as v,O as g,k,R as y,l as x,B as w,A as m,m as z,n as C,U as I,o as j,p as M,q as D}from"./p-J4NpPimy.js";const B=":host{display:flex;align-items:flex-start;gap:8px;padding:8px;box-sizing:border-box;width:100%}.brush-style-button{display:flex;justify-content:center;align-items:center;width:42px;height:32px;padding:0;border:none;outline:none;background:none;cursor:default;border-radius:0;color:var(--control-text-color);font-weight:bold;-webkit-tap-highlight-color:transparent}.font-style-button:not(:last-child){border-right:1px solid #333333}.font-style-button:hover{background-color:var(--control-hover-bg)}.font-style-button:active{background-color:var(--control-active-bg)}.font-style-button.selected,.font-style-button.selected:hover,.font-style-button.selected:active{background-color:var(--control-selected-bg);color:var(--control-selected-color)}";const S=class{constructor(i){t(this,i);this.typeChange=e(this,"typeChange");this.type="pen";this.brushOptions=[{value:"pen",label:"Pen"},{value:"highlighter",label:"Highlighter"}]}handleDropdownValueChange(t){this.typeChange.emit(t.detail)}render(){const t=this.brushOptions.map((t=>({value:t.value,label:t.label})));return i(s,{key:"d7af382fe6f613aa16a5146785990ad2faa17f60"},i("kritzel-dropdown",{key:"6d6d330d415c210058834b2968774b3db2ab7fc4",options:t,value:this.type,onValueChanged:t=>this.handleDropdownValueChange(t)},i("button",{key:"c9fb33795b8e25f68c1d2ae248dc82a6de29e199",class:"brush-style-button",slot:"prefix"},i("kritzel-icon",{key:"975c95b545a1c27ae2984405ac298592eec9743d",name:this.type,size:16}))))}};S.style=B;const E=":host{display:flex}.checkerboard-bg{background:repeating-conic-gradient(#ccc 0% 25%, #fff 0% 50%) 50% / 8px 8px;position:relative;overflow:hidden}.color-circle{width:24px;height:24px;border-radius:50%;box-sizing:border-box;display:block}.color-circle.white{border:1px solid var(--kritzel-color-palette-circle-border-color, #dddcdc)}";const T=class{constructor(e){t(this,e);this.size=24}isLightColor(t){if(!t)return false;let e=0,i=0,s=0;let o=t.startsWith("#")?t.slice(1):t;if(o.length===3){e=parseInt(o[0]+o[0],16);i=parseInt(o[1]+o[1],16);s=parseInt(o[2]+o[2],16)}else if(o.length===6){e=parseInt(o.substring(0,2),16);i=parseInt(o.substring(2,4),16);s=parseInt(o.substring(4,6),16)}else{return false}if(isNaN(e)||isNaN(i)||isNaN(s)){return false}const n=.299*e+.587*i+.114*s;return n>220}render(){const t=this.isLightColor(this.value);return i(s,{key:"1468f3502f7d10d182ac72a05ce4b1e520353f8a"},i("div",{key:"d30d47667b1b72a970c4ee0da887dd59a663eae7",class:"checkerboard-bg",style:{width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",display:"inline-block",position:"relative"}},i("div",{key:"073fd85967e53b609103a9fe47028bcda849e5ec",class:{"color-circle":true,white:t},style:{backgroundColor:this.value,width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",position:"absolute",top:"0",left:"0",display:"inline-block"}})))}};T.style=E;const $=":host{display:flex;align-items:flex-start;gap:8px;padding:8px;width:100%;box-sizing:border-box}.color-grid{width:100%;display:grid;grid-template-columns:repeat(6, 32px);gap:8px;justify-items:center;overflow:hidden;height:40px;transition:height 0.1s ease-in-out}.color-grid.expanded{height:500px}.color-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:pointer;border:2px solid transparent;box-sizing:border-box}.color-container:hover{background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.color-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-color-palette-selected-background-color)}";const O=class{constructor(i){t(this,i);this.colorChange=e(this,"colorChange");this.colors=[];this.selectedColor=null;this.isExpanded=false;this.isOpaque=false}handleColorClick(t){this.selectedColor=t;this.colorChange.emit(t)}calculateHeight(){const t=6;const e=32;const i=8;const s=Math.ceil(this.colors.length/t);return`${s*e+(s-1)*i}px`}render(){const t=this.isExpanded?this.colors:this.colors.slice(0,6);const e=this.isExpanded?this.calculateHeight():"32px";return i(s,{key:"dddc32b0904800092d45727e833181af32eb8766"},i("div",{key:"293cbed8e9c62b5f409b7dcdca0df5de9d65b758",class:{"color-grid":true,expanded:this.isExpanded},style:{height:e}},t.map((t=>i("div",{class:{"color-container":true,selected:this.selectedColor===t},onClick:()=>this.handleColorClick(t)},i("kritzel-color",{value:t}))))))}};O.style=$;const W=":host{display:block}.menu-container{display:flex;flex-direction:column;background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding,4px)}.menu-item{display:flex;align-items:center;gap:var(--kritzel-context-menu-item-gap, 8px);background:none;border:none;text-align:left;padding:var(--kritzel-context-menu-item-padding, 8px);border-radius:var(--kritzel-context-menu-item-border-radius, 12px);cursor:pointer;font-size:var(--kritzel-context-menu-item-font-size, 14px);color:var(--kritzel-context-menu-item-color, #333333);white-space:nowrap;-webkit-tap-highlight-color:transparent}.menu-item:not(.disabled):hover{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.menu-item:not(.disabled):active{background-color:var(--kritzel-context-menu-item-active-background-color, hsl(0, 0%, 0%, 8.6%))}.menu-item.disabled{color:var(--kritzel-context-menu-item-disabled-color, #aaaaaa);cursor:default}.menu-item kritzel-icon{opacity:0.8;flex-shrink:0}.menu-item.disabled kritzel-icon{opacity:0.4}.label{flex-grow:1}";const F=class{constructor(i){t(this,i);this.actionSelected=e(this,"actionSelected");this.processedItems=[]}componentWillLoad(){this.updateMenuItems()}onItemsChanged(){this.updateMenuItems()}handleItemClick(t,e){if(!e){this.actionSelected.emit(t)}}async evaluateProperty(t,e){if(typeof t==="boolean"){return t}if(typeof t==="function"){return await Promise.resolve(t(null,this.objects))}return e}async updateMenuItems(){const t=[];for(const e of this.items){const i=await this.evaluateProperty(e.visible,true);if(i){const i=await this.evaluateProperty(e.disabled,false);t.push({item:e,isDisabled:i})}}this.processedItems=t}render(){return i(s,{key:"96569454f806a6d17380315b4d0200236fe22550"},i("div",{key:"0e5899a2901e1e9ab9d657824e105121ce785bdc",class:"menu-container"},this.processedItems.map((({item:t,isDisabled:e},s)=>i("button",{key:`${t.label}-${s}`,class:{"menu-item":true,disabled:e},onClick:()=>this.handleItemClick(t,e),onTouchStart:()=>this.handleItemClick(t,e),disabled:e},t.icon&&i("kritzel-icon",{name:t.icon,size:16}),i("span",{class:"label"},t.label))))))}get hostElement(){return o(this)}static get watchers(){return{items:["onItemsChanged"]}}};F.style=W;const A=":host{display:flex;flex-direction:column;width:100%}.expand-toggle{background:none;border:none;cursor:pointer;font-size:14px;line-height:1;padding:8px;color:var(--kritzel-color-palette-expand-toggle-color, #666666)}.expand-toggle:hover{color:var(--kritzel-color-palette-expand-toggle-hover-color, #333333)}";const R=class{constructor(i){t(this,i);this.toolChange=e(this,"toolChange");this.isExpanded=false;this.palette=[]}handleToolChange(t){this.palette=t.palettes[t.type]}componentWillLoad(){this.palette=this.tool.palettes[this.tool.type]}handleToggleExpand(){this.isExpanded=!this.isExpanded}handleTypeChange(t){this.palette=this.tool.palettes[t.detail];this.tool.type=t.detail;this.tool.color=this.palette[0];this.toolChange.emit(this.tool)}handleColorChange(t){this.tool.color=t.detail;this.toolChange.emit(this.tool)}handleSizeChange(t){this.tool.size=t.detail;this.toolChange.emit(this.tool)}render(){return i(s,{key:"d099d1c6722678fdfb06c34eb0860e8819dd17ca"},i("div",{key:"0856f0150666415ee452a0fcec5c76b6d25b82c4",style:{display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"flex-start",width:"100%",gap:"8px"}},i("kritzel-brush-style",{key:"364e6026d1b280a02c3618c7ded11f40c7e3cba4",type:this.tool.type,onTypeChange:t=>this.handleTypeChange(t)}),i("button",{key:"fc58c9ceb9e92ef8c79836e686b9a64653f91210",class:"expand-toggle",onClick:()=>this.handleToggleExpand(),title:this.isExpanded?"Collapse":"Expand",style:this.palette.length>6?{visibillity:"visible"}:{visibility:"hidden"}},i("kritzel-icon",{key:"ab219c72a9ace56853c725ba75767be2079a3c10",name:this.isExpanded?"chevron-up":"chevron-down"}))),i("kritzel-color-palette",{key:"8757c754217a3de88dad2c465ff748571716ae64",colors:this.palette,selectedColor:this.tool.color,isExpanded:this.isExpanded,isOpaque:true,onColorChange:t=>this.handleColorChange(t)}),i("kritzel-stroke-size",{key:"056b227dd9a92b06588816739b55a80f5ce80835",selectedSize:this.tool.size,onSizeChange:t=>this.handleSizeChange(t)}))}static get watchers(){return{tool:["handleToolChange"]}}};R.style=A;const P=":host{display:block;flex-direction:column;width:100%}.expand-toggle{background:none;border:none;cursor:pointer;font-size:14px;line-height:1;padding:8px;color:var(--kritzel-color-palette-expand-toggle-color, #666666)}.expand-toggle:hover{color:var(--kritzel-color-palette-expand-toggle-hover-color, #333333)}";const _=class{constructor(i){t(this,i);this.toolChange=e(this,"toolChange");this.isExpanded=false}handleToggleExpand(){this.isExpanded=!this.isExpanded}handleFamilyChange(t){this.tool.fontFamily=t.detail;this.toolChange.emit(this.tool)}handleColorChange(t){this.tool.fontColor=t.detail;this.toolChange.emit(this.tool)}handleSizeChange(t){this.tool.fontSize=t.detail;this.toolChange.emit(this.tool)}render(){return i(s,{key:"f0d35cc43f1fe58a5a26f21dad99f1a733b66cce"},i("div",{key:"efc7d31c11460015a41185b4215e9ff45970abdd",style:{display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"flex-start",width:"100%",gap:"8px"}},i("kritzel-font-family",{key:"7f7d3ccb061d4b0e5e0f181ba4224f3de430a88c",selectedFontFamily:this.tool.fontFamily,onFontFamilyChange:t=>this.handleFamilyChange(t)}),i("button",{key:"6676fcfa245874d54fa9933888c242c6f611c58c",class:"expand-toggle",onClick:()=>this.handleToggleExpand(),title:this.isExpanded?"Collapse":"Expand"},i("kritzel-icon",{key:"0734f636889c77f9087a2de2899a28ebd8df30a2",name:this.isExpanded?"chevron-up":"chevron-down"}))),i("kritzel-color-palette",{key:"68373ef79578d6a73028da681f1e3b0e8e3e5874",colors:this.tool.palette,selectedColor:this.tool.fontColor,isExpanded:this.isExpanded,onColorChange:t=>this.handleColorChange(t)}),i("kritzel-font-size",{key:"56e6828f6ceaac3d37910b7d092a30bacbd84519",selectedSize:this.tool.fontSize,fontFamily:this.tool.fontFamily,onSizeChange:t=>this.handleSizeChange(t)}))}};_.style=P;class L{static isTouchDevice(){return window.matchMedia("(any-pointer: coarse)").matches}}const V=":host{display:flex;flex-direction:column;user-select:none}.kritzel-controls{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:var(--kritzel-controls-gap, 8px);height:100%;padding:var(--kritzel-controls-padding, 8px);background-color:var(--kritzel-controls-background-color, #ffffff);border-radius:var(--kritzel-controls-border-radius, 16px);box-shadow:var(--kritzel-controls-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-controls-border, 1px solid #ebebeb);z-index:10000;position:relative}.kritzel-control{display:flex;justify-content:center;align-items:center;color:var(--kritzel-controls-control-color, #000000);border-radius:var(--kritzel-controls-control-border-radius, 12px);padding:var(--kritzel-controls-control-padding, 8px);border:none;outline:none;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent;font-weight:bold}.kritzel-control:hover{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.mobile) .kritzel-control:hover{background-color:unset}.kritzel-control:active{background-color:var(--kritzel-controls-control-active-background-color, hsl(0, 0%, 0%, 8.6%))}:host(.mobile) .kritzel-control:active{background-color:unset}.kritzel-control.selected,.kritzel-control.selected:hover,.kritzel-control.selected:active{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF) !important;color:var(--kritzel-controls-control-selected-color, #ffffff) !important}.kritzel-divider{width:var(--kritzel-controls-divider-width, 1px);height:var(--kritzel-controls-divider-height, 24px);background-color:var(--kritzel-controls-divider-background-color, hsl(0, 0%, 0%, 4.3%))}.kritzel-config-container{position:relative;display:flex;justify-content:center;align-items:center;width:40px;height:40px;box-sizing:border-box;-webkit-tap-highlight-color:transparent}.kritzel-config{display:flex;justify-content:center;align-items:center;cursor:pointer}.color-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:pointer;border:2px solid transparent;box-sizing:border-box;background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.font-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:pointer;border:2px solid transparent;box-sizing:border-box;background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.no-config{height:24px;width:24px;border-radius:50%;border:1px dashed gray}kritzel-tooltip{position:fixed;bottom:66px;left:50%;transform:translateX(-50%);z-index:10001}";const N=class{constructor(i){t(this,i);this.isControlsReady=e(this,"isControlsReady");this.controls=[];this.activeControl=null;this.isUtilityPanelVisible=true;this.firstConfig=null;this.isTooltipVisible=false;this.isTouchDevice=L.isTouchDevice();this.kritzelEngine=null}handleDocumentClick(t){const e=t.target;if(!this.kritzelEngine||e.closest(".kritzel-tooltip")){return}this.isTooltipVisible=false}handleKeyDown(t){var e;if(t.key==="Escape"){t.preventDefault();this.closeTooltip();(e=this.kritzelEngine)===null||e===void 0?void 0:e.enable()}}async handleActiveToolChange(t){var e;this.activeControl=this.controls.find((e=>e.tool===t.detail))||null;await((e=this.kritzelEngine)===null||e===void 0?void 0:e.setFocus())}async closeTooltip(){this.isTooltipVisible=false}get activeToolAsTextTool(){var t;return(t=this.activeControl)===null||t===void 0?void 0:t.tool}get activeToolAsBrushTool(){var t;return(t=this.activeControl)===null||t===void 0?void 0:t.tool}async componentWillLoad(){await this.initializeEngine();await this.initializeTools();this.isControlsReady.emit()}async initializeEngine(){await customElements.whenDefined("kritzel-engine");this.kritzelEngine=this.host.parentElement.querySelector("kritzel-engine");if(!this.kritzelEngine){throw new Error("kritzel-engine not found in parent element.")}}async initializeTools(){for(const t of this.controls){if(t.type==="tool"&&t.tool){t.tool=await this.kritzelEngine.registerTool(t.name,t.tool,t.config)}if(t.type==="tool"&&t.isDefault&&t.tool){await this.kritzelEngine.changeActiveTool(t.tool);this.activeControl=t}if(t.type==="config"){if(this.firstConfig===null){this.firstConfig=t}else{console.warn("Only one config control is allowed. The first one will be used.")}}}}async handleControlClick(t){this.activeControl=t;if(this.activeControl.type==="tool"){await this.kritzelEngine.changeActiveTool(this.activeControl.tool)}}handleConfigClick(t){var e;t.stopPropagation();this.isTooltipVisible=!this.isTooltipVisible;(e=this.kritzelEngine)===null||e===void 0?void 0:e.disable()}async handleToolChange(t){this.activeControl=Object.assign(Object.assign({},this.activeControl),{tool:t.detail});await this.kritzelEngine.changeActiveTool(this.activeControl.tool)}render(){var t,e;const o=((t=this.activeControl)===null||t===void 0?void 0:t.config)===undefined||((e=this.activeControl)===null||e===void 0?void 0:e.config)===null;return i(s,{key:"af04746b6eaa04a51482cd9d25ba3ab303d631f1",class:{mobile:this.isTouchDevice}},this.isUtilityPanelVisible&&i("kritzel-utility-panel",{key:"d6ecb1087a332162f3fc809ed4321fc48f72c3e7",style:{position:"absolute",bottom:"56px",left:"12px"},onUndo:()=>{var t;return(t=this.kritzelEngine)===null||t===void 0?void 0:t.undo()},onRedo:()=>{var t;return(t=this.kritzelEngine)===null||t===void 0?void 0:t.redo()},onDelete:()=>{var t;return(t=this.kritzelEngine)===null||t===void 0?void 0:t.delete()}}),i("div",{key:"34723e47249d53fd544848d2d577deba4df1f131",class:"kritzel-controls"},this.controls.map((t=>{var e,s,l,a,h,c,d,u;if(t.type==="tool"){return i("button",{class:{"kritzel-control":true,selected:((e=this.activeControl)===null||e===void 0?void 0:e.name)===(t===null||t===void 0?void 0:t.name)},key:t.name,onClick:e=>{var i;return(i=this.handleControlClick)===null||i===void 0?void 0:i.call(this,t)}},i("kritzel-icon",{name:t.icon}))}if(t.type==="divider"){return i("div",{class:"kritzel-divider",key:t.name})}if(t.type==="config"&&t.name===((s=this.firstConfig)===null||s===void 0?void 0:s.name)&&this.activeControl){return i("div",{class:"kritzel-config-container",key:t.name},i("kritzel-tooltip",{isVisible:this.isTooltipVisible,anchorElement:(l=this.host.shadowRoot)===null||l===void 0?void 0:l.querySelector(".kritzel-config-container")},i("div",{style:{width:"294px",height:"100%"}},this.activeControl.name==="brush"&&i("kritzel-control-brush-config",{tool:this.activeToolAsBrushTool,onToolChange:t=>{var e;return(e=this.handleToolChange)===null||e===void 0?void 0:e.call(this,t)}}),this.activeControl.name==="text"&&i("kritzel-control-text-config",{tool:this.activeToolAsTextTool,onToolChange:t=>{var e;return(e=this.handleToolChange)===null||e===void 0?void 0:e.call(this,t)}}))),i("div",{class:"kritzel-config",onClick:t=>{var e;return(e=this.handleConfigClick)===null||e===void 0?void 0:e.call(this,t)},style:{cursor:this.activeControl.config?"pointer":"default",pointerEvents:o?"none":"auto"}},this.activeControl.tool instanceof n&&i("div",{class:"color-container"},i("kritzel-color",{value:(a=this.activeToolAsBrushTool)===null||a===void 0?void 0:a.color,size:(h=this.activeToolAsBrushTool)===null||h===void 0?void 0:h.size,style:{borderRadius:"50%",border:"none"}})),this.activeControl.tool instanceof r&&i("div",{class:"font-container"},i("kritzel-font",{fontFamily:(c=this.activeToolAsTextTool)===null||c===void 0?void 0:c.fontFamily,size:(d=this.activeToolAsTextTool)===null||d===void 0?void 0:d.fontSize,color:(u=this.activeToolAsTextTool)===null||u===void 0?void 0:u.fontColor})),o&&i("div",{class:"no-config"})))}}))))}static get assetsDirs(){return["../assets"]}get host(){return o(this)}};N.style=V;const H=":host{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9000}";const Y=class{constructor(e){t(this,e);this.cursorTrailPoints=[];this.isLeftButtonDown=false;this.TRAIL_DURATION_MS=100;this.MAX_TRAIL_POINTS=50}componentDidLoad(){this.trailCleanupIntervalId=window.setInterval((()=>{const t=Date.now();const e=this.cursorTrailPoints.filter((e=>t-e.timestamp<this.TRAIL_DURATION_MS));if(e.length!==this.cursorTrailPoints.length){this.cursorTrailPoints=e}}),50)}disconnectedCallback(){if(this.trailCleanupIntervalId){window.clearInterval(this.trailCleanupIntervalId)}}handleMouseDown(t){if(t.pointerType==="mouse"){if(t.button===l.Left){this.isLeftButtonDown=true;this.cursorTrailPoints=[]}}if(t.pointerType==="touch"){if(this.store.state.pointers.size===1){this.isLeftButtonDown=true;this.cursorTrailPoints=[]}}}handlePointerMove(t){if(!this.isLeftButtonDown){return}const e={x:t.clientX,y:t.clientY,timestamp:Date.now()};const i=[e,...this.cursorTrailPoints];if(i.length>this.MAX_TRAIL_POINTS){this.cursorTrailPoints=i.slice(0,this.MAX_TRAIL_POINTS)}else{this.cursorTrailPoints=i}}handlePointerUp(t){if(t.pointerType==="mouse"){if(t.button===l.Left){this.isLeftButtonDown=false;this.cursorTrailPoints=[]}}if(t.pointerType==="touch"){if(this.store.state.pointers.size===0){this.isLeftButtonDown=false;this.cursorTrailPoints=[]}}}render(){return i(s,{key:"c519ab89ffb793de887a870bafe8772f7584f097"},this.cursorTrailPoints.length>1&&i("svg",{key:"db7ac0975c5a39c0b68d8fd4af4edd4d15f439f3",class:"cursor-trail-svg",xmlns:"http://www.w3.org/2000/svg",style:{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",pointerEvents:"none",opacity:"var(--kritzel-cursor-trail-opacity, 0.6)",zIndex:"9000"}},this.cursorTrailPoints.slice(1).map(((t,e)=>{const s=this.cursorTrailPoints[e];const o=Date.now();const n=o-t.timestamp;const r=Math.max(0,Math.min(1,n/this.TRAIL_DURATION_MS));if(r>=1)return null;const l=Math.max(2,15*(1-r));return i("line",{key:`trail-segment-${t.timestamp}`,x1:s.x.toString(),y1:s.y.toString(),x2:t.x.toString(),y2:t.y.toString(),stroke:"var(--kritzel-cursor-trail-color, rgb(228, 228, 228))","stroke-width":l.toString(),"stroke-linecap":"round"})}))))}};Y.style=H;const K=':host{display:inline-flex;vertical-align:middle;width:100%;}.dropdown-wrapper{display:flex;align-items:center;border:1px solid #333333;border-radius:var(--kritzel-controls-control-border-radius, 12px);overflow:hidden;height:32px;width:100%}.custom-select{padding:0 8px;padding-right:30px;height:100%;width:100%;box-sizing:border-box;border-radius:0;border:none;background-color:#fff;cursor:pointer;outline:none;font-size:inherit;color:var(--kritzel-controls-text-color, #333333);-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23333333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>\');background-size:16px 16px;background-repeat:no-repeat;background-position:right 8px center}.custom-select.has-suffix-border{border-right:1px solid #333333}.custom-select.has-prefix-border{border-left:1px solid #333333}::slotted(*){height:100%;box-sizing:border-box}';const X=class{constructor(i){t(this,i);this.valueChanged=e(this,"valueChanged");this.options=[];this.selectStyles={};this.hasSuffixContent=false;this.hasPrefixContent=false;this.handleSelectChange=t=>{const e=t.target.value;if(this.internalValue!==e){this.internalValue=e;this.valueChanged.emit(this.internalValue)}};this.evaluateSuffixContent=()=>{if(this.suffixSlotElement){const t=this.suffixSlotElement.assignedNodes({flatten:true}).length>0;if(this.hasSuffixContent!==t){this.hasSuffixContent=t}}else{if(this.hasSuffixContent!==false){this.hasSuffixContent=false}}};this.evaluatePrefixContent=()=>{if(this.prefixSlotElement){const t=this.prefixSlotElement.assignedNodes({flatten:true}).length>0;if(this.hasPrefixContent!==t){this.hasPrefixContent=t}}else{if(this.hasPrefixContent!==false){this.hasPrefixContent=false}}}}componentWillLoad(){this.updateInternalValue(this.value,false);this.evaluateSuffixContent();this.evaluatePrefixContent()}externalValueChanged(t){if(t!==this.internalValue){this.updateInternalValue(t,false)}}optionsChanged(){this.updateInternalValue(this.internalValue,true)}updateInternalValue(t,e){let i=t;if(this.options&&this.options.length>0){const t=this.options.some((t=>t.value===i));if(!i||!t){i=this.options[0].value}}else{i=undefined}if(this.internalValue!==i){this.internalValue=i;if(e||t!==i&&t!==undefined){this.valueChanged.emit(this.internalValue)}}}render(){const t={"custom-select":true,"has-suffix-border":this.hasSuffixContent,"has-prefix-border":this.hasPrefixContent};return i(s,{key:"32c5f5a4f807c1e316c91b795c005b8d30ce6189"},i("div",{key:"b1cbeff18e688da4a2f7472be290b9527a619f07",class:"dropdown-wrapper"},i("slot",{key:"b3bbb7e21c6f5620cab41aa4b1c7206b6c75fd86",name:"prefix",ref:t=>this.prefixSlotElement=t,onSlotchange:this.evaluatePrefixContent}),i("select",{key:"8b2dcdc125bee59cf29fce7c980b755e78d5816e",class:t,style:Object.assign(Object.assign({},this.selectStyles),{width:this.width}),onInput:this.handleSelectChange},this.options.map((t=>i("option",{value:t.value,style:t.style,selected:t.value===this.internalValue},t.label)))),i("slot",{key:"8d83f0dea41ac959bf2392948efef33bb70d0154",name:"suffix",ref:t=>this.suffixSlotElement=t,onSlotchange:this.evaluateSuffixContent})))}static get watchers(){return{value:["externalValueChanged"],options:["optionsChanged"]}}};X.style=K;class U{static register(t,e){if(this.registry.has(t)){console.warn(`[IconRegistry] Icon "${t}" is already registered. It will be overwritten.`)}this.registry.set(t,e)}static get(t){return this.registry.get(t)}static registerIcons(t){for(const e in t){if(Object.prototype.hasOwnProperty.call(t,e)){this.register(e,t[e])}}}static has(t){return this.registry.has(t)}}U.registry=new Map;U.registerIcons({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>',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>',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>',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>',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>',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>',"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>',"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>',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>',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>',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>',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>',"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>',"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>',"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>',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>',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>',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>',plus:'<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-plus-icon lucide-plus"><path d="M5 12h14"/><path d="M12 5v14"/></svg>',"ellipsis-vertical":'<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-ellipsis-vertical-icon lucide-ellipsis-vertical"><circle cx="12" cy="12" r="1"/><circle cx="12" cy="5" r="1"/><circle cx="12" cy="19" r="1"/></svg>',x:'<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-x-icon lucide-x"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>',check:'<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-check-icon lucide-check"><path d="M20 6 9 17l-5-5"/></svg>'});const q=1e3;const G=1e-4;const Z="kritzel-editor{display:flex;margin:0;position:relative;overflow:hidden;width:100%;height:100%;align-items:center;justify-content:center;touch-action:manipulation;user-select:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}kritzel-workspace-manager{position:absolute;top:14px;left:14px}kritzel-controls{position:absolute;bottom:28px}";const J=class{constructor(i){t(this,i);this.isReady=e(this,"isReady");this.scaleMax=q;this.scaleMin=G;this.controls=[{name:"selection",type:"tool",tool:a,icon:"cursor"},{name:"brush",type:"tool",tool:n,icon:"pen",isDefault:true,config:h},{name:"eraser",type:"tool",tool:c,icon:"eraser"},{name:"text",type:"tool",tool:r,icon:"type",config:d},{name:"image",type:"tool",tool:u,icon:"image"},{name:"divider",type:"divider"},{name:"config",type:"config"}];this.globalContextMenuItems=[{label:"Paste",icon:"paste",disabled:async()=>(await this.engineRef.getCopiedObjects()).length===0,action:t=>this.engineRef.paste(t.x,t.y)},{label:"Select All",icon:"select-all",action:()=>this.selectAllObjectsInViewport()}];this.objectContextMenuItems=[{label:"Edit",icon:"pen",visible:(t,e)=>e.length===1&&e[0].isEditable,action:(t,e)=>{if(e.length===1){const t=e[0];if(t.isEditable){t.edit()}}}},{label:"Copy",icon:"copy",action:()=>this.engineRef.copy()},{label:"Paste",icon:"paste",disabled:async()=>(await this.engineRef.getCopiedObjects()).length===0,action:(t,e)=>this.engineRef.paste(t.x,t.y)},{label:"Delete",icon:"delete",action:()=>this.engineRef.delete()},{label:"Bring to Front",icon:"bring-to-front",action:()=>this.engineRef.bringToFront()},{label:"Send to Back",icon:"send-to-back",action:()=>this.engineRef.sendToBack()}];this.customSvgIcons={};this.isControlsVisible=true;this.isUtilityPanelVisible=true;this.isEngineReady=false;this.isControlsReady=false;this.isWorkspaceManagerReady=false;this.workspaces=[]}onIsEngineReady(t){if(t&&this.isControlsReady){this.checkIsReady()}}onIsControlsReady(t){if(t&&this.isEngineReady){this.checkIsReady()}}async getObjectById(t){return this.engineRef.getObjectById(t)}async addObject(t){return this.engineRef.addObject(t)}async updateObject(t,e){return this.engineRef.updateObject(t,e)}async removeObject(t){return this.engineRef.removeObject(t)}async getSelectedObjects(){return this.engineRef.getSelectedObjects()}async selectObjects(t){return this.engineRef.selectObjects(t)}async selectAllObjectsInViewport(){return this.engineRef.selectAllObjectsInViewport()}async clearSelection(){this.engineRef.clearSelection()}async centerObjectInViewport(t){return this.engineRef.centerObjectInViewport(t)}handleTouchStart(t){if(t.cancelable){t.preventDefault()}}componentDidLoad(){this.registerCustomSvgIcons()}async checkIsReady(){await customElements.whenDefined("kritzel-editor");await customElements.whenDefined("kritzel-workspace-manager");await customElements.whenDefined("kritzel-controls");await customElements.whenDefined("kritzel-engine");if(!this.isEngineReady||!this.isControlsReady||!this.isWorkspaceManagerReady){return}this.isReady.emit(this.host)}onEngineReady(t){this.isEngineReady=true;this.activeWorkspace=t.detail.activeWorkspace;this.workspaces=t.detail.workspaces}registerCustomSvgIcons(){for(const[t,e]of Object.entries(this.customSvgIcons)){U.register(t,e)}}render(){return i(s,{key:"9fe00d70c1a875076e545ca447e2f8d817ebb2fd"},i("kritzel-workspace-manager",{key:"ca9ce9f8f277e92f78315e7eaba2bc523da5b9cb",workspaces:this.workspaces,activeWorkspace:this.activeWorkspace,onWorkspaceChange:t=>this.activeWorkspace=t.detail,onIsWorkspaceManagerReady:()=>this.isWorkspaceManagerReady=true}),i("kritzel-engine",{key:"098a4690198f0678e7b4c6c897f86ad1698f510f",ref:t=>this.engineRef=t,workspace:this.activeWorkspace,scaleMax:this.scaleMax,scaleMin:this.scaleMin,globalContextMenuItems:this.globalContextMenuItems,objectContextMenuItems:this.objectContextMenuItems,onIsEngineReady:t=>this.onEngineReady(t),onWorkspacesChange:t=>this.workspaces=t.detail}),i("kritzel-controls",{key:"e1795f5a7460617628c09766f213c212e48f25e5",ref:t=>this.controlsRef=t,controls:this.controls,isUtilityPanelVisible:this.isUtilityPanelVisible,style:this.isControlsVisible?{display:"flex"}:{display:"none"},onIsControlsReady:()=>this.isControlsReady=true}))}get host(){return o(this)}static get watchers(){return{isEngineReady:["onIsEngineReady"],isControlsReady:["onIsControlsReady"]}}};J.style=Z;class Q{constructor(t,e){this.initialTouchDistance=0;this.startX=0;this.startY=0;this._store=t;this._store.state.host=e;this._store.state.viewportWidth=e.clientWidth;this._store.state.viewportHeight=e.clientHeight;this._store.state.startX=0;this._store.state.startY=0;this._store.state.translateX=0;this._store.state.translateY=0}handleResize(){this._store.state.viewportWidth=this._store.state.host.clientWidth;this._store.state.viewportHeight=this._store.state.host.clientHeight;this._store.state.hasViewportChanged=true;this._store.rerender()}handlePointerDown(t){if(t.pointerType==="mouse"){const e=t.clientX-this._store.offsetX;const i=t.clientY-this._store.offsetY;if(t.button===l.Right){this._store.state.isPanning=true;this._store.state.startX=e;this._store.state.startY=i}}if(t.pointerType==="touch"){const t=Array.from(this._store.state.pointers.values());if(t.length===2){this._store.state.currentPath=null;this._store.state.isScaling=true;const e=t[0].clientX-this._store.offsetX;const i=t[0].clientY-this._store.offsetY;const s=t[1].clientX-this._store.offsetX;const o=t[1].clientY-this._store.offsetY;this.initialTouchDistance=Math.sqrt(Math.pow(e-s,2)+Math.pow(i-o,2));this.startX=(e+s)/2;this.startY=(i+o)/2;this._store.rerender()}}}handlePointerMove(t){if(t.pointerType==="mouse"){const e=this._store.state.host.getBoundingClientRect();const i=t.clientX-e.left;const s=t.clientY-e.top;this._store.state.pointerX=(i-this._store.state.translateX)/this._store.state.scale;this._store.state.pointerY=(s-this._store.state.translateY)/this._store.state.scale;if(this._store.state.isPanning){this._store.state.translateX-=this._store.state.startX-i;this._store.state.translateY-=this._store.state.startY-s;this._store.state.startX=i;this._store.state.startY=s;this._store.state.hasViewportChanged=true;this._store.state.skipContextMenu=true;this._store.rerender();this._store.updateWorkspaceViewport(this._store.state.translateX,this._store.state.translateY,this._store.state.scale)}}if(t.pointerType==="touch"){const e=this._store.state.host.getBoundingClientRect();const i=t.clientX-e.left;const s=t.clientY-e.top;this._store.state.pointerX=(i-this._store.state.translateX)/this._store.state.scale;this._store.state.pointerY=(s-this._store.state.translateY)/this._store.state.scale;const o=Array.from(this._store.state.pointers.values());if(o.length===2){const t=o[0].clientX-this._store.offsetX;const e=o[0].clientY-this._store.offsetY;const i=o[1].clientX-this._store.offsetX;const s=o[1].clientY-this._store.offsetY;const n=Math.sqrt(Math.pow(t-i,2)+Math.pow(e-s,2));const r=(t+i)/2;const l=(e+s)/2;const a=n/this.initialTouchDistance;const h=this._store.state.scale*a;if(h>this._store.state.scaleMax||h<this._store.state.scaleMin){this._store.state.translateX+=r-this.startX;this._store.state.translateY+=l-this.startY}else{const t=(r-this._store.state.translateX)*(a-1);const e=(l-this._store.state.translateY)*(a-1);this._store.state.translateX+=r-this.startX-t;this._store.state.translateY+=l-this.startY-e;this._store.state.scale=h;this.initialTouchDistance=n}this.startX=r;this.startY=l;this._store.state.hasViewportChanged=true;this._store.rerender();this._store.updateWorkspaceViewport(this._store.state.translateX,this._store.state.translateY,this._store.state.scale)}}}handlePointerUp(t){if(t.pointerType==="mouse"){if(this._store.state.isPanning){this._store.state.isPanning=false;this._store.rerender()}}if(t.pointerType==="touch"){this._store.state.isScaling=false;this._store.rerender()}}handleWheel(t){t.preventDefault();if(t.ctrlKey===true&&f.isMainMouseWheel(t)){this.handleZoom(t)}if(!t.ctrlKey){this.handlePan(t)}}handleZoom(t){const e=this._store.state.host.getBoundingClientRect();const i=t.clientX-e.left;const s=t.clientY-e.top;this._store.state.pointerX=(i-this._store.state.translateX)/this._store.state.scale;this._store.state.pointerY=(s-this._store.state.translateY)/this._store.state.scale;const o=t.deltaY>0?-this._store.state.scaleStep*this._store.state.scale:this._store.state.scaleStep*this._store.state.scale;const n=Math.min(this._store.state.scaleMax,Math.max(this._store.state.scaleMin,this._store.state.scale+o));const r=n/this._store.state.scale;const l=(i-this._store.state.translateX)*(r-1);const a=(s-this._store.state.translateY)*(r-1);this._store.state.scale=n;this._store.state.translateX-=l;this._store.state.translateY-=a;this._store.state.hasViewportChanged=true;this._store.rerender();this._store.updateWorkspaceViewport(this._store.state.translateX,this._store.state.translateY,this._store.state.scale)}handlePan(t){const e=.8;this._store.state.translateX-=t.deltaX*e;this._store.state.translateY-=t.deltaY*e;this._store.state.hasViewportChanged=true;this._store.rerender();this._store.updateWorkspaceViewport(this._store.state.translateX,this._store.state.translateY,this._store.state.scale)}}class tt extends b{constructor(t,e,i,s=false){super(t,e,s);this.previousViewport=i;this.currentViewport={scale:this._store.state.scale,translateX:this._store.state.translateX,translateY:this._store.state.translateY}}execute(){this._store.state.scale=this.currentViewport.scale;this._store.state.translateX=this.currentViewport.translateX;this._store.state.translateY=this.currentViewport.translateY}undo(){this._store.state.scale=this.previousViewport.scale;this._store.state.translateX=this.previousViewport.translateX;this._store.state.translateY=this.previousViewport.translateY}}class et{constructor(t){this.head=0;this.tail=0;this.size=0;this.capacity=t;this.buffer=new Array(t).fill(null)}add(t){this.buffer[this.head]=t;this.head=(this.head+1)%this.capacity;if(this.size<this.capacity){this.size++}else{this.tail=(this.tail+1)%this.capacity}}pop(){if(this.size===0){return null}this.head=(this.head-1+this.capacity)%this.capacity;const t=this.buffer[this.head];this.buffer[this.head]=null;this.size--;return t}peek(){if(this.size===0){return null}const t=(this.head-1+this.capacity)%this.capacity;return this.buffer[t]}isEmpty(){return this.size===0}clear(){this.buffer.fill(null);this.head=0;this.tail=0;this.size=0}}class it{constructor(t){this._store=t;this.undoStack=new et(this._store.state.historyBufferSize);this.redoStack=new et(this._store.state.historyBufferSize);this.previousViewport={scale:this._store.state.scale,scaleStep:this._store.state.scaleStep,translateX:this._store.state.translateX,translateY:this._store.state.translateY}}reset(){this.undoStack.clear();this.redoStack.clear();this.previousViewport={scale:this._store.state.scale,scaleStep:this._store.state.scaleStep,translateX:this._store.state.translateX,translateY:this._store.state.translateY}}executeCommand(t){if(this._store.state.hasViewportChanged){this.addUpdateViewportCommand()}t.execute();if(t.skipHistory===false){if(this._store.state.debugInfo.logCommands){console.info("add",t)}this.undoStack.add(t);if(this.redoStack.isEmpty()===false){this.redoStack.clear()}}this._store.rerender()}undo(){if(this._store.state.hasViewportChanged){const t=new tt(this._store,this,this.previousViewport);t.undo();this._store.state.hasViewportChanged=false;this._store.rerender();return}const t=this.undoStack.pop();if(t){t.undo();if(this._store.state.debugInfo.logCommands)console.info("undo",t);this.redoStack.add(t)}this._store.rerender()}redo(){const t=this.redoStack.pop();if(t){t.execute();if(this._store.state.debugInfo.logCommands)console.info("redo",t);this.undoStack.add(t)}this._store.rerender()}addUpdateViewportCommand(){const t=new tt(this._store,this,this.previousViewport);t.execute();this.undoStack.add(t);if(this.redoStack.isEmpty()===false){this.redoStack.clear()}this._store.state.hasViewportChanged=false;this.previousViewport={scale:this._store.state.scale,scaleStep:this._store.state.scaleStep,translateX:this._store.state.translateX,translateY:this._store.state.translateY}}}class st{constructor(t,e=8){this.objects=[];this.children=null;this.bounds=t;this.capacity=e}reset(){this.objects=[];this.children=null}insert(t){if(!this.intersects(t.rotatedBoundingBox,this.bounds)){return false}if(this.objects.length<this.capacity&&this.children===null){this.objects.push(t);return true}if(this.children===null){this.subdivide()}for(const e of this.children){if(e.insert(t)){return true}}return false}update(t){const e=this.objects.findIndex((e=>e.id===t.id));if(e!==-1){this.objects[e]=t;return true}if(this.children!==null){for(const e of this.children){if(e.update(t)){return true}}}return false}remove(t){const e=this.objects.findIndex((e=>t(e)));if(e!==-1){this.objects.splice(e,1)}if(this.children!==null){for(const e of this.children){e.remove(t)}}}query(t){const e=[];if(!this.intersects(t,this.bounds)){return e}for(const i of this.objects){if(this.intersects(i.rotatedBoundingBox,t)){e.push(i)}}if(this.children!==null){for(const i of this.children){e.push(...i.query(t))}}return e}filter(t){const e=this.objects.filter((e=>t(e)));if(this.children!==null){for(const i of this.children){e.push(...i.filter(t))}}return e}allObjects(){const t=[...this.objects];if(this.children!==null){for(const e of this.children){t.push(...e.allObjects())}}return t}subdivide(){const{x:t,y:e,z:i,width:s,height:o,depth:n}=this.bounds;const r=s/2;const l=o/2;const a=n/2;this.children=[new st({x:t,y:e,z:i,width:r,height:l,depth:a},this.capacity),new st({x:t+r,y:e,z:i,width:r,height:l,depth:a},this.capacity),new st({x:t,y:e+l,z:i,width:r,height:l,depth:a},this.capacity),new st({x:t+r,y:e+l,z:i,width:r,height:l,depth:a},this.capacity),new st({x:t,y:e,z:i+a,width:r,height:l,depth:a},this.capacity),new st({x:t+r,y:e,z:i+a,width:r,height:l,depth:a},this.capacity),new st({x:t,y:e+l,z:i+a,width:r,height:l,depth:a},this.capacity),new st({x:t+r,y:e+l,z:i+a,width:r,height:l,depth:a},this.capacity)]}intersects(t,e){return!(t.x>=e.x+e.width||t.x+t.width<=e.x||t.y>=e.y+e.height||t.y+t.height<=e.y)}}const ot={activeWorkspace:null,activeTool:null,activeText:null,currentPath:null,copiedObjects:null,objectsOctree:null,selectionBox:null,selectionGroup:null,resizeHandleType:null,hasViewportChanged:false,isReady:false,isEnabled:true,isScaling:false,isPanning:false,isFocused:false,isSelecting:false,isResizing:false,isResizeHandleSelected:false,isRotating:false,isRotationHandleSelected:false,isDragging:false,isDrawing:false,isErasing:false,isWriting:false,isCtrlKeyPressed:false,isContextMenuVisible:false,contextMenuItems:[],contextMenuX:0,contextMenuY:0,skipContextMenu:false,debugInfo:{showObjectInfo:false,showViewportInfo:false,logCommands:false,logDatabase:false},host:null,pointerX:0,pointerY:0,scale:1,scaleMax:1,scaleMin:1,scaleStep:.075,startX:0,startY:0,translateX:0,translateXMax:400,translateXMin:0,translateY:0,translateYMax:400,translateYMin:0,viewportWidth:0,viewportHeight:0,historyBufferSize:1e3,longTouchTimeout:null,longTouchDelay:300,pointers:new Map,workspaces:[]};class nt{constructor(t,e,i=false){this.db=null;this.dbName=t;this.dbVersion=e;this.isLoggingEnabled=i}async open(t){return new Promise(((e,i)=>{if(this.db){e();return}if(this.isLoggingEnabled){console.log(`[IndexedDB] Opening database: ${this.dbName}, version: ${this.dbVersion}`)}const s=indexedDB.open(this.dbName,this.dbVersion);s.onerror=()=>{console.error("IndexedDB error:",s.error);i(s.error)};s.onsuccess=()=>{this.db=s.result;if(this.isLoggingEnabled){console.log(`[IndexedDB] Database opened successfully.`)}e()};s.onupgradeneeded=e=>{if(this.isLoggingEnabled){console.log(`[IndexedDB] Upgrade needed for database: ${this.dbName}`)}const i=e.target.result;t.forEach((t=>{if(!i.objectStoreNames.contains(t.name)){if(this.isLoggingEnabled){console.log(`[IndexedDB] Creating store: ${t.name}`)}const e=i.createObjectStore(t.name,t.options);if(t.indices){t.indices.forEach((i=>{if(this.isLoggingEnabled){console.log(`[IndexedDB] Creating index: ${i.name} on store: ${t.name}`)}e.createIndex(i.name,i.keyPath,i.options)}))}}}))}}))}close(){if(this.db){if(this.isLoggingEnabled){console.log(`[IndexedDB] Closing database: ${this.dbName}`)}this.db.close();this.db=null}}async add(t,e){if(this.isLoggingEnabled){console.log("[IndexedDB] Add:",{storeName:t,item:e})}return this.executeTransaction(t,"readwrite",(t=>t.add(e)))}async get(t,e){if(this.isLoggingEnabled){console.log("[IndexedDB] Get:",{storeName:t,key:e})}return this.executeTransaction(t,"readonly",(t=>t.get(e)))}async getAll(t){if(this.isLoggingEnabled){console.log("[IndexedDB] GetAll:",{storeName:t})}return this.executeTransaction(t,"readonly",(t=>t.getAll()))}async update(t,e){if(this.isLoggingEnabled){console.log("[IndexedDB] Update:",{storeName:t,item:e})}return this.executeTransaction(t,"readwrite",(t=>t.put(e)))}async delete(t,e){if(this.isLoggingEnabled){console.log("[IndexedDB] Delete:",{storeName:t,key:e})}return this.executeTransaction(t,"readwrite",(t=>t.delete(e)))}async deleteByRange(t,e){if(this.isLoggingEnabled){console.log("[IndexedDB] DeleteByRange:",{storeName:t,range:e})}return this.executeTransaction(t,"readwrite",(t=>t.delete(e)))}async getAllByRange(t,e){if(this.isLoggingEnabled){console.log("[IndexedDB] GetAllByRange:",{storeName:t,range:e})}return this.executeTransaction(t,"readonly",(t=>t.getAll(e)))}async getAllByIndex(t,e,i){if(this.isLoggingEnabled){console.log("[IndexedDB] GetAllByIndex:",{storeName:t,indexName:e,query:i})}return this.executeTransaction(t,"readonly",(t=>{const s=t.index(e);return s.getAll(i)}))}async executeTransaction(t,e,i){if(!this.db){throw new Error("Database is not open.")}return new Promise(((s,o)=>{const n=this.db.transaction(t,e);const r=n.objectStore(t);const l=i(r);let a;n.oncomplete=()=>{s(a)};n.onabort=()=>{var t;o((t=n.error)!==null&&t!==void 0?t:new Error("Transaction aborted"))};n.onerror=()=>{o(n.error)};l.onsuccess=()=>{a=l.result}}))}async batch(t){if(!this.db){throw new Error("Database is not open.")}const e=await this.extractStoreNamesFromActions(t);if(this.isLoggingEnabled){console.log("[IndexedDB] Starting batch transaction:",{storeNames:e})}return new Promise(((i,s)=>{const o=this.db.transaction(e,"readwrite");const n=[];const r=[];const l={add:(t,e)=>this.add(t,e),get:(t,e)=>this.get(t,e),getAll:t=>this.getAll(t),update:(t,e)=>this.update(t,e),delete:(t,e)=>this.delete(t,e),deleteByRange:(t,e)=>this.deleteByRange(t,e),getAllByRange:(t,e)=>this.getAllByRange(t,e),getAllByIndex:(t,e,i)=>this.getAllByIndex(t,e,i),executeTransaction:(t,e,i)=>new Promise(((s,n)=>{if(this.isLoggingEnabled){console.log("[IndexedDB] Executing batch action:",{storeName:t,mode:e})}const r=o.objectStore(t);const l=i(r);l.onsuccess=()=>{if(this.isLoggingEnabled){console.log("[IndexedDB] Batch action request successful:",{result:l.result})}s(l.result)};l.onerror=()=>{console.error("[IndexedDB] Batch action request error:",l.error);n(l.error)}}))};o.oncomplete=()=>{if(this.isLoggingEnabled){console.log("[IndexedDB] Batch transaction complete.")}Promise.all(r).then((()=>i(n)))};o.onabort=()=>{var t;console.error("[IndexedDB] Batch transaction aborted:",o.error);s((t=o.error)!==null&&t!==void 0?t:new Error("Transaction aborted"))};o.onerror=()=>{console.error("[IndexedDB] Batch transaction error:",o.error);s(o.error)};t.forEach(((t,e)=>{const i=t(l).then((t=>{n[e]=t})).catch((t=>{if(!o.error){o.abort()}s(t)}));r.push(i)}))}))}async extractStoreNamesFromActions(t){const e=new Set;const i=new Proxy(this,{get:(t,i)=>{if(["add","get","getAll","update","delete","deleteByRange","getAllByRange","getAllByIndex"].includes(i)){return t=>{e.add(t);return Promise.resolve()}}return t[i]}});await Promise.all(t.map((t=>t(i))));return Array.from(e)}}class rt{constructor(t,e,i={translateX:0,translateY:0,scale:1}){this.id=t;this.name=e;this.createdAt=new Date;this.updatedAt=new Date;this.viewport=i}}class lt{get history(){return this._history}get database(){return this._database}get state(){return this._state}get currentZIndex(){return this._state.objectsOctree.filter((t=>!(t instanceof p)&&!(t instanceof v))).length}get allObjects(){return this._state.objectsOctree.allObjects()}get selectedObjects(){return this.allObjects.filter((t=>!(t instanceof p))).filter((t=>t.isSelected))}get offsetX(){return this._state.host.getBoundingClientRect().left}get offsetY(){return this._state.host.getBoundingClientRect().top}get isDisabled(){return this._state.isEnabled===false||this._state.isReady===false||this._state.activeWorkspace===null}constructor(t){this._listeners=new Map;this.objects=[];this._state=ot;this._kritzelEngine=t;this._history=new it(this);this._database=new nt("kritzelDB",1,this._state.debugInfo.logDatabase);this._state.objectsOctree=new st({x:-Infinity,y:-Infinity,z:-Infinity,width:Infinity,height:Infinity,depth:Infinity})}async initializeDatabase(){await this._database.open([{name:"objects",options:{keyPath:["workspaceId","id"]}},{name:"workspaces",options:{keyPath:"id"}}]);this.rerender()}async initializeWorkspace(t){var e;const i=await this.getWorkspaces();const s=[...i].sort(((t,e)=>e.updatedAt.getTime()-t.updatedAt.getTime()))[0];const o=new rt(g.generateUUID(),"New Workspace");this._state.activeWorkspace=(e=t!==null&&t!==void 0?t:s)!==null&&e!==void 0?e:o;const n=await this.getWorkspace(this._state.activeWorkspace.id);if(n){await this.updateWorkspace(this._state.activeWorkspace)}else{await this.createWorkspace(this._state.activeWorkspace)}this._state.workspaces=await this.getWorkspaces();this.state.translateX=this._state.activeWorkspace.viewport.translateX;this.state.translateY=this._state.activeWorkspace.viewport.translateY;this.state.scale=this._state.activeWorkspace.viewport.scale;await this.initializeWorkspaceObjects(this._state.activeWorkspace.id)}async initializeWorkspaceObjects(t){this._state.objectsOctree.reset();this._history.reset();const e=await this._database.getAllByRange("objects",IDBKeyRange.bound([t],[t,"￿"]));const i=new k(this);e.forEach((t=>{const e=i.revive(t);this._state.objectsOctree.insert(e)}));this.rerender()}async updateWorkspaceViewport(t,e,i){if(!this.state.activeWorkspace){throw new Error("Workspace not initialized")}this.state.activeWorkspace.viewport={translateX:t,translateY:e,scale:i};this.state.activeWorkspace.updatedAt=new Date;await this._database.update("workspaces",this.state.activeWorkspace)}async addObjectToDatabase(t){if(!this._database){throw new Error("Database not initialized")}if(!this.state.activeWorkspace){throw new Error("Workspace not initialized")}this.state.activeWorkspace.updatedAt=new Date;await this._database.batch([e=>e.add("objects",t),t=>t.update("workspaces",this.state.activeWorkspace)]).catch((t=>{console.error("Error adding object to database:",t)}))}async updateObjectInDatabase(t){if(!this._database){throw new Error("Database not initialized")}if(!this.state.activeWorkspace){throw new Error("Workspace not initialized")}this.state.activeWorkspace.updatedAt=new Date;await this._database.batch([e=>e.update("objects",t),t=>t.update("workspaces",this.state.activeWorkspace)]).catch((t=>{console.error("Error updating object in database:",t)}))}async deleteObjectFromDatabase(t){if(!this._database){throw new Error("Database not initialized")}if(!this.state.activeWorkspace){throw new Error("Workspace not initialized")}this.state.activeWorkspace.updatedAt=new Date;await this._database.batch([e=>e.delete("objects",[this.state.activeWorkspace.id,t]),t=>t.update("workspaces",this.state.activeWorkspace)]).catch((t=>{console.error("Error deleting object from database:",t)}))}getWorkspace(t){if(!this._database){throw new Error("Database not initialized")}return this._database.get("workspaces",t)}getWorkspaces(){if(!this._database){throw new Error("Database not initialized")}return this._database.getAll("workspaces")}async createWorkspace(t){if(!this._database){throw new Error("Database not initialized")}t.createdAt=new Date;t.updatedAt=new Date;await this._database.add("workspaces",t);this.state.workspaces.push(t)}async updateWorkspace(t){if(!this._database){throw new Error("Database not initialized")}t.updatedAt=new Date;await this._database.update("workspaces",t);const e=this.state.workspaces.findIndex((e=>e.id===t.id));if(e!==-1){this.state.workspaces[e]=t}}async deleteWorkspace(t){if(!this._database){throw new Error("Database not initialized")}const e=IDBKeyRange.bound([t.id],[t.id,"￿"]);await this._database.deleteByRange("objects",e);await this._database.delete("workspaces",t.id)}rerender(){if(this._kritzelEngine){this._kritzelEngine.forceUpdate++}}findObjectById(t){for(const e of this.allObjects){if(e.id===t){return e}}return null}deselectAllObjects(){if(this._state.selectionGroup){this._history.executeCommand(new y(this,this))}}onStateChange(t,e){if(!this._listeners.has(t)){this._listeners.set(t,new Set)}this._listeners.get(t).add(e)}setState(t,e){const i=this._state[t];if(i!==e){this._state[t]=e;if(this._listeners.has(t)){this._listeners.get(t).forEach((s=>s(e,i,String(t))))}}}delete(){if(!this.state.selectionGroup){return}const t=this.state.selectionGroup.objects.map((t=>new x(this,this.state.selectionGroup,t)));const e=new y(this,this.state.selectionGroup);const i=[...t,e];this.history.executeCommand(new w(this,this.state.selectionGroup,i))}deleteObject(t,e=false){const i=this.findObjectById(t);if(i){const t=new x(this,this,i,e);this.history.executeCommand(t)}}copy(){this.state.copiedObjects=this.state.selectionGroup.copy()}paste(t,e){this.state.copiedObjects.isSelected=true;const i=t!==undefined?t:this.state.copiedObjects.translateX+25;const s=e!==undefined?e:this.state.copiedObjects.translateY+25;this.state.copiedObjects.updatePosition(i,s);const o=[];if(this.state.selectionGroup!==null){o.push(new y(this,this.state.selectionGroup))}const n=this.state.copiedObjects.objects.map((t=>new m(this,this,t)));const r=new z(this,this,this.state.copiedObjects);o.push(...n,r);this.history.executeCommand(new w(this,this,o));this.state.isSelecting=false;this.state.copiedObjects=this.state.selectionGroup.copy();this.setState("activeTool",C.getTool("selection"))}bringForward(t){const e=this.allObjects.length+1;const i=t?[t]:this.state.selectionGroup.objects;const s=i.map((t=>{if(t.zIndex===e){return}return new I(this,this,t,{zIndex:t.zIndex+1})}));this.history.executeCommand(new w(this,this,s))}sendBackward(t){const e=0;const i=t?[t]:this.state.selectionGroup.objects;const s=i.map((t=>{if(t.zIndex===e){return}return new I(this,this,t,{zIndex:t.zIndex-1})}));this.history.executeCommand(new w(this,this,s))}bringToFront(t){const e=Math.max(...this.allObjects.map((t=>t.zIndex)))+1;const i=t?[t]:this.state.selectionGroup.objects;const s=i.map((t=>new I(this,this,t,{zIndex:e})));this.history.executeCommand(new w(this,this,s))}sendToBack(t){const e=Math.min(...this.allObjects.map((t=>t.zIndex)))-1;const i=t?[t]:this.state.selectionGroup.objects;const s=i.map((t=>new I(this,this,t,{zIndex:e})));this.history.executeCommand(new w(this,this,s))}selectObjects(t){if(t.length===0){return}const e=p.create(this);t.forEach((t=>{t.isSelected=false;e.addOrRemove(t)}));e.isSelected=true;this.state.selectionGroup=e;if(t.length===1){e.rotation=e.objects[0].rotation}this.history.executeCommand(new z(this,this,e))}selectAllObjectsInViewport(){const t=this._state.objectsOctree.query({x:-this._state.translateX/this._state.scale,y:-this._state.translateY/this._state.scale,z:this._state.scale,width:this._state.viewportWidth/this._state.scale,height:this._state.viewportHeight/this._state.scale,depth:100}).filter((t=>!(t instanceof p)&&!(t instanceof v)&&!(t instanceof F)));if(t.length>0){const e=p.create(this);t.forEach((t=>{t.isSelected=false;e.addOrRemove(t)}));e.isSelected=true;this.state.isSelecting=false;if(t.length===1){e.rotation=e.objects[0].rotation}this.history.executeCommand(new z(this,this,e));this.setState("activeTool",C.getTool("selection"))}}clearSelection(){const t=new y(this,this.state.selectionGroup);this.history.executeCommand(t);this.state.selectionGroup=null;this.state.selectionBox=null;this.state.isSelecting=false;this.state.isResizeHandleSelected=false;this.state.isRotationHandleSelected=false}resetActiveText(){if(this.state.activeText&&this.state.activeText.value===" "){this.deleteObject(this.state.activeText.id,true)}this.state.activeText=null}getObjectFromPointerEvent(t,e=".object"){var i;const s=(i=this.state.host)===null||i===void 0?void 0:i.shadowRoot;if(!s)return null;const o=t.clientX;const n=t.clientY;const r=s.elementFromPoint(o,n);if(!r)return null;const l=r.closest(e);if(l){return this.allObjects.find((t=>l.id===t.id))}return null}getObjectsFromPointerEvent(t,e=".object"){var i;const s=(i=this.state.host)===null||i===void 0?void 0:i.shadowRoot;if(!s)return[];const o=t.clientX;const n=t.clientY;const r=s.elementsFromPoint(o,n);if(!r||r.length===0)return[];const l=new Set;r.forEach((t=>{const i=t.closest(e);if(i&&i.id){l.add(i.id)}}));if(l.size>0){return this.allObjects.filter((t=>l.has(t.id))).sort(((t,e)=>e.zIndex-t.zIndex))}return[]}getCanvasPoint(t){if(!this.state.host){return{x:0,y:0}}const e=this.state.host.getBoundingClientRect();const i=t.clientX-e.left;const s=t.clientY-e.top;const o=i-this.state.translateX;const n=s-this.state.translateY;const r=o/this.state.scale;const l=n/this.state.scale;return{x:r,y:l}}}class at extends j{constructor(t){super(t)}handleKeyDown(t){if(this._store.state.isFocused===false){return}this._store.state.isCtrlKeyPressed=t.ctrlKey;if(this._store.state.isCtrlKeyPressed){t.preventDefault()}if(t.key==="Escape"&&this._store.state.selectionGroup){this._store.clearSelection()}if(t.key==="Delete"&&this._store.state.selectionGroup){this._store.delete()}if(t.key==="z"&&t.ctrlKey){this._store.history.undo()}if(t.key==="y"&&t.ctrlKey){this._store.history.redo()}if(t.key==="s"&&t.ctrlKey){this._store.setState("activeTool",C.getTool("selection"));this._store.deselectAllObjects()}if(t.key==="b"&&t.ctrlKey){this._store.setState("activeTool",C.getTool("brush"));this._store.deselectAllObjects()}if(t.key==="e"&&t.ctrlKey){this._store.setState("activeTool",C.getTool("eraser"));this._store.deselectAllObjects()}if(t.key==="i"&&t.ctrlKey){this._store.setState("activeTool",C.getTool("image"));this._store.deselectAllObjects()}if(t.key==="x"&&t.ctrlKey){this._store.setState("activeTool",C.getTool("text"));this._store.deselectAllObjects()}if(t.key==="c"&&t.ctrlKey&&this._store.state.selectionGroup){this._store.copy();this._store.rerender()}if(t.key==="v"&&t.ctrlKey&&this._store.state.copiedObjects){this._store.paste()}if(t.key==="+"&&t.ctrlKey&&this._store.state.selectionGroup){this._store.bringForward()}if(t.key==="-"&&t.ctrlKey&&this._store.state.selectionGroup){this._store.sendBackward()}if(t.key==="*"&&t.shiftKey&&this._store.state.selectionGroup){this._store.bringToFront()}if(t.key==="_"&&t.shiftKey&&this._store.state.selectionGroup){this._store.sendToBack()}if(t.key==="a"&&t.ctrlKey&&this._store.state.activeText){this._store.state.activeText.selectAll()}if(t.key==="v"&&t.ctrlKey&&this._store.state.activeText){this._store.state.activeText.insertFromClipboard()}}handleKeyUp(t){if(this._store.state.isFocused===false){return}this._store.state.isCtrlKeyPressed=t.ctrlKey}}class ht extends j{constructor(t,e,i){super(t);this.globalContextMenuItems=[];this.objectContextMenuItems=[];this.globalContextMenuItems=e;this.objectContextMenuItems=i}handleContextMenu(t){if(this._store.state.skipContextMenu){this._store.state.skipContextMenu=false;return}const e=this._store.getObjectFromPointerEvent(t,".object");if(e&&!(e instanceof p)){this._store.state.selectionGroup=p.create(this._store);this._store.state.selectionGroup.addOrRemove(e);this._store.state.selectionGroup.isSelected=true;this._store.state.selectionGroup.rotation=e.rotation;this._store.state.isSelecting=false;this._store.history.executeCommand(new z(this._store,this,this._store.state.selectionGroup))}this._store.state.contextMenuItems=this._store.state.selectionGroup?this.objectContextMenuItems:this.globalContextMenuItems;let i=t.clientX-this._store.offsetX;let s=t.clientY-this._store.offsetY;const o=150;const n=200;const r=10;if(i+o>window.innerWidth-r){i=window.innerWidth-o-r}if(s+n>window.innerHeight-r){s=window.innerHeight-n-r}i=Math.max(r,i);s=Math.max(r,s);this._store.state.contextMenuX=i;this._store.state.contextMenuY=s;this._store.state.isContextMenuVisible=true;this._store.state.isEnabled=false;this._store.rerender()}}class ct{static isInstanceOf(t,e){return!!t&&t.__class__===e}}const dt=":host{display:block;position:relative;height:100%;width:100%;overflow:hidden;background-color:var(--kritzel-engine-background-color, #ffffff)}:host,:host *{touch-action:none;user-select:none}.debug-panel{position:absolute;pointer-events:none;top:0;right:0}.origin{position:relative;top:0;left:0;height:0;width:0;pointer-events:none;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top left;overflow:visible}.object{overflow:visible}textarea{all:unset;box-sizing:border-box;outline:none !important;border:none !important;overflow:visible}.resize-handle-overlay.top-left,.resize-handle-overlay.bottom-right{cursor:nwse-resize}.resize-handle-overlay.top-right,.resize-handle-overlay.bottom-left{cursor:nesw-resize}.rotation-handle-overlay{cursor:grab}";const ut=class{onWorkspaceChange(t){if(t){this.store.initializeWorkspace(t)}}validateScaleMax(t){if(t>q){console.warn(`scaleMax cannot be greater than ${q}.`);this.scaleMax=q;this.store.state.scaleMax=this.scaleMax}else{this.store.state.scaleMax=t}}validateScaleMin(t){if(t<G){console.warn(`scaleMin cannot be less than ${G}.`);this.scaleMin=G;this.store.state.scaleMin=this.scaleMin}else{this.store.state.scaleMin=t}}get isSelecting(){return this.store.state.activeTool instanceof a&&this.store.state.isSelecting}get isSelectionActive(){return this.store.state.activeTool instanceof a&&this.store.state.selectionGroup!==null}constructor(i){t(this,i);this.isEngineReady=e(this,"isEngineReady");this.activeToolChange=e(this,"activeToolChange");this.workspacesChange=e(this,"workspacesChange");this.scaleMax=q;this.scaleMin=G;this.forceUpdate=0;this.contextMenuElement=null;this.store=new lt(this)}componentWillLoad(){this.validateScaleMax(this.scaleMax);this.validateScaleMin(this.scaleMin)}async componentDidLoad(){this.contextMenuHandler=new ht(this.store,this.globalContextMenuItems,this.objectContextMenuItems);this.keyHandler=new at(this.store);this.viewport=new Q(this.store,this.host);this._registerStateChangeListeners();await this.store.initializeDatabase();await this.store.initializeWorkspace(this.workspace);if(this.store.state.isReady===false){this.store.state.isReady=true;this.isEngineReady.emit(this.store.state)}}handleWheel(t){var e,i;if(this.store.isDisabled){return}if(this.store.state.isContextMenuVisible){this.hideContextMenu()}this.viewport.handleWheel(t);(i=(e=this.store.state)===null||e===void 0?void 0:e.activeTool)===null||i===void 0?void 0:i.handleWheel(t)}handlePointerDown(t){var e,i;if(this.store.isDisabled){return}if(f.isPointerEventOnContextMenu(t)===false&&this.store.state.isContextMenuVisible){this.hideContextMenu();return}f.onLongTouchPress(t,(t=>{if(!(this.store.state.activeTool instanceof a)){return}this.contextMenuHandler.handleContextMenu(t)}));this.host.setPointerCapture(t.pointerId);this.store.state.pointers.set(t.pointerId,t);this.viewport.handlePointerDown(t);(i=(e=this.store.state)===null||e===void 0?void 0:e.activeTool)===null||i===void 0?void 0:i.handlePointerDown(t)}handlePointerMove(t){var e,i;if(this.store.isDisabled){return}this.store.state.pointers.set(t.pointerId,t);this.viewport.handlePointerMove(t);(i=(e=this.store.state)===null||e===void 0?void 0:e.activeTool)===null||i===void 0?void 0:i.handlePointerMove(t)}handlePointerUp(t){var e,i;if(this.store.isDisabled){return}this.store.state.pointers.delete(t.pointerId);this.host.releasePointerCapture(t.pointerId);this.viewport.handlePointerUp(t);(i=(e=this.store.state)===null||e===void 0?void 0:e.activeTool)===null||i===void 0?void 0:i.handlePointerUp(t)}handlePointerCancel(t){var e,i;if(this.store.isDisabled){return}this.host.releasePointerCapture(t.pointerId);this.store.state.pointers.delete(t.pointerId);this.viewport.handlePointerUp(t);(i=(e=this.store.state)===null||e===void 0?void 0:e.activeTool)===null||i===void 0?void 0:i.handlePointerUp(t)}handleContextMenu(t){t.preventDefault();if(this.store.isDisabled){return}if(t.pointerType==="touch"){return}this.contextMenuHandler.handleContextMenu(t)}handleResize(){this.viewport.handleResize()}handleKeyDown(t){this.keyHandler.handleKeyDown(t)}handleKeyUp(t){this.keyHandler.handleKeyUp(t)}updateFocus(t){if(this.store.isDisabled){return}const e=this.store.state.host.getBoundingClientRect();const i=t.clientX>=e.left&&t.clientX<=e.right&&t.clientY>=e.top&&t.clientY<=e.bottom;const s=t.composedPath();const o=this.host.closest("kritzel-engine");const n=s.includes(o||this.host);this.store.setState("isFocused",i&&n)}handleClick(){this.enable()}async registerTool(t,e,i){if(typeof e!=="function"||!(e.prototype instanceof M)){console.error(`Failed to register tool "${t}": Tool class must be a constructor function`);return null}const s=C.registerTool(t,e,this.store);if(i){Object.entries(i).forEach((([t,e])=>{s[t]=e}))}return Promise.resolve(s)}async changeActiveTool(t){var e;(e=this.store.state.activeTool)===null||e===void 0?void 0:e.onDeactivate();this.store.setState("activeTool",t);this.store.deselectAllObjects();t===null||t===void 0?void 0:t.onActivate()}async setFocus(){this.host.focus();this.store.state.isFocused=true}async disable(){this.store.state.isEnabled=false;this.forceUpdate++}async enable(){this.store.state.isEnabled=true;this.forceUpdate++}async delete(){this.store.delete()}async copy(){this.store.copy()}async paste(t,e){this.store.paste(t,e)}async bringForward(t){this.store.bringForward(t)}async sendBackward(t){this.store.sendBackward(t)}async bringToFront(t){this.store.bringToFront(t)}async sendToBack(t){this.store.sendToBack(t)}async undo(){this.store.history.undo()}async redo(){this.store.history.redo()}async hideContextMenu(){this.store.state.pointers.clear();this.store.state.isContextMenuVisible=false;this.store.state.selectionBox=null;this.store.state.isSelecting=false}async getObjectById(t){const e=this.store.objects.find((e=>e.id===t));return e||null}async addObject(t){this.store.deselectAllObjects();t.id=t.generateId();t._store=this.store;t.scale=t.scale?t.scale:this.store.state.scale;t.zIndex=this.store.currentZIndex;const e=new m(this.store,this,t);this.store.history.executeCommand(e);return t}async updateObject(t,e){this.store.deselectAllObjects();const i=new I(this.store,this,t,e);this.store.history.executeCommand(i);return t}async removeObject(t){this.store.deselectAllObjects();const e=new x(this.store,this,t);this.store.history.executeCommand(e);return t}async getSelectedObjects(){return this.store.state.selectionGroup?this.store.state.selectionGroup.objects:[]}async selectObjects(t){var e;(e=this.store.state.activeTool)===null||e===void 0?void 0:e.onDeactivate();this.store.setState("activeTool",C.getTool("selection"));this.store.deselectAllObjects();this.store.selectObjects(t)}async selectAllObjectsInViewport(){var t;(t=this.store.state.activeTool)===null||t===void 0?void 0:t.onDeactivate();this.store.setState("activeTool",C.getTool("selection"));this.store.deselectAllObjects();this.store.selectAllObjectsInViewport()}async clearSelection(){this.store.clearSelection()}async centerObjectInViewport(t){t.centerInViewport();const e=new I(this.store,this,t,t);this.store.history.executeCommand(e);return t}async getCopiedObjects(){var t;return((t=this.store.state.copiedObjects)===null||t===void 0?void 0:t.objects)||[]}async createWorkspace(t){return this.store.createWorkspace(t).then((()=>{this.workspacesChange.emit(this.store.state.workspaces)}))}async updateWorkspace(t){return this.store.updateWorkspace(t).then((()=>{this.workspacesChange.emit(this.store.state.workspaces)}))}async deleteWorkspace(t){return this.store.deleteWorkspace(t).then((()=>{this.workspacesChange.emit(this.store.state.workspaces.filter((e=>e.id!==t.id)))}))}async getWorkspaces(){return this.store.getWorkspaces()}_registerStateChangeListeners(){this.store.onStateChange("activeTool",this._handleActiveToolChange.bind(this));this.store.onStateChange("isFocused",this._handleIsFocusedChange.bind(this))}_handleActiveToolChange(t){if(!(t instanceof a)){this.store.clearSelection()}this.store.state.skipContextMenu=false;this.activeToolChange.emit(t);D.forceHideKeyboard()}_handleIsFocusedChange(t){if(!t){this.store.resetActiveText()}}render(){var t,e,o,n,r,l,a,h,d,u,f,b,p,v,g,k,y,x,w,m,z,C,I,j,M,D,B,S,E,T,$,O,W;const F=window.getComputedStyle(this.host);const A=F.getPropertyValue("--kritzel-selection-handle-size").trim()||"6px";const R=parseFloat(A);const P=R*2<14?14:R;return i(s,{key:"c7e747aa6106e7904cf9f44db37fa285a6fb4434"},i("div",{key:"b75652ab9f9531dce765cbe448ad3131c172d06a",class:"debug-panel",style:{display:this.store.state.debugInfo.showViewportInfo?"block":"none"}},i("div",{key:"fd1355bd640b9296949f6bbcf084589578654db6"},"ActiveWorkspaceId: ",(e=(t=this.store.state)===null||t===void 0?void 0:t.activeWorkspace)===null||e===void 0?void 0:e.id),i("div",{key:"8520e3e774e97ebc42ee86401fbfbafbe41c88e8"},"ActiveWorkspaceName: ",(n=(o=this.store.state)===null||o===void 0?void 0:o.activeWorkspace)===null||n===void 0?void 0:n.name),i("div",{key:"f247b4d76cd018e787a9b59829deedeb6c5c5272"},"TranslateX: ",(r=this.store.state)===null||r===void 0?void 0:r.translateX),i("div",{key:"e0438479bc9e950ef2cbe88ed0aa0b8ec1888890"},"TranslateY: ",(l=this.store.state)===null||l===void 0?void 0:l.translateY),i("div",{key:"1735fde66588e285039bcc090dee71630608d666"},"ViewportWidth: ",(a=this.store.state)===null||a===void 0?void 0:a.viewportWidth),i("div",{key:"15f8b3305c27a395b8aa6463c5acec42bb3e3ddd"},"ViewportHeight: ",(h=this.store.state)===null||h===void 0?void 0:h.viewportHeight),i("div",{key:"d2e39bae191c7256967d0140f38e75dccf95f24c"},"ObjectsInViewport. ",this.store.objects.length),i("div",{key:"cd3f53ff4a8f119a2ef975133f69fc3798fe0f71"},"Scale: ",(d=this.store.state)===null||d===void 0?void 0:d.scale),i("div",{key:"b1f8c77589a80fe49d0947602bda46438921f7a8"},"ActiveTool: ",(f=(u=this.store.state)===null||u===void 0?void 0:u.activeTool)===null||f===void 0?void 0:f.name),i("div",{key:"41cd94f58f71cd5c1cffc679ada5fc51f6ceeea7"},"HasViewportChanged: ",((b=this.store.state)===null||b===void 0?void 0:b.hasViewportChanged)?"true":"false"),i("div",{key:"bf8495bb924673aad3a9ca57ed0bf9ac23874dfb"},"IsEnabled: ",((p=this.store.state)===null||p===void 0?void 0:p.isEnabled)?"true":"false"),i("div",{key:"3823936f5b46b100742f94fac8d7e87ed93ddb58"},"IsScaling: ",((v=this.store.state)===null||v===void 0?void 0:v.isScaling)?"true":"false"),i("div",{key:"62eb836fff78b050cdab8cbef54f88f9d5b644ba"},"IsPanning: ",((g=this.store.state)===null||g===void 0?void 0:g.isPanning)?"true":"false"),i("div",{key:"dac6b8d18ae8f6317bdd318ad48a9612f9942613"},"IsFocused: ",this.store.state.isFocused?"true":"false"),i("div",{key:"af232e2cd738e255029f5611531c246ac63a28ce"},"IsSelecting: ",this.isSelecting?"true":"false"),i("div",{key:"95a44fef4b6befe95bfadfc62957103b48bf76b6"},"IsSelectionActive: ",this.isSelectionActive?"true":"false"),i("div",{key:"e8162d4de449a0d6756c2f540fca28353c193438"},"IsResizeHandleSelected: ",this.store.state.isResizeHandleSelected?"true":"false"),i("div",{key:"4440d023cd4982c834736e06863698c3baf72353"},"IsRotationHandleSelected: ",this.store.state.isRotationHandleSelected?"true":"false"),i("div",{key:"d3e467dd18e53850df4d5bedf2b69f54b1fbe5c6"},"IsDrawing: ",this.store.state.isDrawing?"true":"false"),i("div",{key:"df6e4bca16cbe4346786a544d6f6c53d87bdb699"},"IsWriting: ",this.store.state.isWriting?"true":"false"),i("div",{key:"532aebf1ff35cc578f12e36cdaf00713ffc76b97"},"PointerX: ",(k=this.store.state)===null||k===void 0?void 0:k.pointerX),i("div",{key:"f710f8c8d27979da4a40e50452e2cdd63cdefa98"},"PointerY: ",(y=this.store.state)===null||y===void 0?void 0:y.pointerY),i("div",{key:"0175010e1d5a22be81ca0b2d88dd1aff217eacfd"},"SelectedObjects: ",((x=this.store.state.selectionGroup)===null||x===void 0?void 0:x.objects.length)||0)),i("div",{key:"dc2964c479405ed147bd5f090e24262595a474e2",id:"origin",class:"origin",style:{transform:`matrix(${(w=this.store.state)===null||w===void 0?void 0:w.scale}, 0, 0, ${(m=this.store.state)===null||m===void 0?void 0:m.scale}, ${(z=this.store.state)===null||z===void 0?void 0:z.translateX}, ${(C=this.store.state)===null||C===void 0?void 0:C.translateY})`}},(I=this.store.state.objectsOctree.allObjects())===null||I===void 0?void 0:I.map((t=>{var e,s,o,n,r,l,a,h,c,d,u,f,b,p,v,g,k,y,x;return i("div",{key:t.id,style:{display:t.isInViewport()?"block":"none",transform:t===null||t===void 0?void 0:t.transformationMatrix,transformOrigin:"top left",zIndex:t.zIndex.toString(),position:"absolute"}},i("svg",{xmlns:"http://www.w3.org/2000/svg",id:t.id,class:"object",style:{height:t===null||t===void 0?void 0:t.totalHeight.toString(),width:t===null||t===void 0?void 0:t.totalWidth.toString(),left:"0",top:"0",position:"absolute",transform:`rotate(${t.rotationDegrees}deg)`,transformOrigin:"center",opacity:t.markedForRemoval?"0.5":t.opacity.toString(),pointerEvents:t.markedForRemoval?"none":"auto"}},i("foreignObject",{x:"0",y:"0",width:t.totalWidth.toString(),height:t.totalHeight.toString(),style:{minHeight:"0",minWidth:"0",backgroundColor:t.backgroundColor,borderColor:t.borderColor,borderWidth:t.borderWidth+"px",borderStyle:"solid",padding:t.padding+"px",overflow:"visible"}},ct.isInstanceOf(t,"KritzelPath")&&i("svg",{ref:e=>e?t.mount(e):t.unmount(),xmlns:"http://www.w3.org/2000/svg",style:{height:t===null||t===void 0?void 0:t.height.toString(),width:t===null||t===void 0?void 0:t.width.toString(),position:"absolute",overflow:"visible"},viewBox:t===null||t===void 0?void 0:t.viewBox},i("path",{d:t===null||t===void 0?void 0:t.d,fill:t.fill,stroke:t===null||t===void 0?void 0:t.stroke})),ct.isInstanceOf(t,"KritzelImage")&&i("img",{ref:e=>e?t.mount(e):t.unmount(),src:t.src,style:{width:"100%",height:"100%",userSelect:"none",pointerEvents:"none"},draggable:false,onDragStart:t=>t.preventDefault()}),ct.isInstanceOf(t,"KritzelText")&&i("textarea",{ref:e=>e?t.mount(e):t.unmount(),value:t.value,onKeyDown:e=>t.handleKeyDown(e),onInput:e=>t.handleInput(e),rows:t.rows,style:{width:"100%",height:"100%",color:t.fontColor,fontSize:((e=t.fontSize)===null||e===void 0?void 0:e.toString())+"px",fontFamily:t.fontFamily,border:"none",outline:"none",resize:"none",overflow:"hidden",display:"block",padding:"1px",whiteSpace:"nowrap",pointerEvents:t.isReadonly?"none":"auto",cursor:t.isReadonly?"default":"text",caretColor:t.isReadonly?"transparent":"auto"}}),ct.isInstanceOf(t,"KritzelCustomElement")&&i("div",{ref:e=>e?t.mount(e):t.unmount(),style:{width:"100%",height:"100%",pointerEvents:"auto",overflow:"hidden",display:"block"}}),ct.isInstanceOf(t,"KritzelSelectionGroup")&&i("div",{ref:e=>e?t.mount(e):t.unmount(),style:{width:"100%",height:"100%"}}),ct.isInstanceOf(t,"KrtizelSelectionBox")&&i("div",{ref:e=>e?t.mount(e):t.unmount(),style:{width:"100%",height:"100%"}})),i("line",{x1:"0",y1:"0",x2:t.totalWidth,y2:"0",style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${(s=this.store.state)===null||s===void 0?void 0:s.scale})`,strokeLinecap:"square"},visibility:t.isSelected?"visible":"hidden"}),i("line",{x1:"0",y1:"0",x2:"0",y2:t.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${(o=this.store.state)===null||o===void 0?void 0:o.scale})`,strokeLinecap:"square"},visibility:t.isSelected?"visible":"hidden"}),i("line",{x1:"0",y1:t.totalHeight,x2:t.totalWidth,y2:t.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${(n=this.store.state)===null||n===void 0?void 0:n.scale})`,strokeLinecap:"square"},visibility:t.isSelected?"visible":"hidden"}),i("line",{x1:t.totalWidth,y1:"0",x2:t.totalWidth,y2:t.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${(r=this.store.state)===null||r===void 0?void 0:r.scale})`,strokeLinecap:"square"},visibility:t.isSelected?"visible":"hidden"}),i("circle",{class:"resize-handle top-left",cx:"0",cy:"0",r:`${R*t.scale/((l=this.store.state)===null||l===void 0?void 0:l.scale)}`,style:{fill:"var(--kritzel-selection-handle-color, #000000)"},visibility:t.isSelected&&!this.isSelecting?"visible":"hidden"}),i("circle",{class:"resize-handle-overlay top-left",cx:"0",cy:"0",r:`${P*t.scale/((a=this.store.state)===null||a===void 0?void 0:a.scale)}`,style:{fill:"transparent"},visibility:t.isSelected&&!this.isSelecting?"visible":"hidden"}),i("circle",{class:"resize-handle top-right",cx:t.totalWidth,cy:"0",r:`${R*t.scale/((h=this.store.state)===null||h===void 0?void 0:h.scale)}`,style:{fill:"var(--kritzel-selection-handle-color, #000000)"},visibility:t.isSelected&&!this.isSelecting?"visible":"hidden"}),i("circle",{class:"resize-handle-overlay top-right",cx:t.totalWidth,cy:"0",r:`${P*t.scale/((c=this.store.state)===null||c===void 0?void 0:c.scale)}`,style:{fill:"transparent"},visibility:t.isSelected&&!this.isSelecting?"visible":"hidden"}),i("circle",{class:"resize-handle bottom-left",cx:"0",cy:t.totalHeight,r:`${R*t.scale/((d=this.store.state)===null||d===void 0?void 0:d.scale)}`,style:{fill:"var(--kritzel-selection-handle-color, #000000)"},visibility:t.isSelected&&!this.isSelecting?"visible":"hidden"}),i("circle",{class:"resize-handle-overlay bottom-left",cx:"0",cy:t.totalHeight,r:`${P*t.scale/((u=this.store.state)===null||u===void 0?void 0:u.scale)}`,style:{fill:"transparent"},visibility:t.isSelected&&!this.isSelecting?"visible":"hidden"}),i("circle",{class:"resize-handle bottom-right",cx:t.totalWidth,cy:t.totalHeight,r:`${R*t.scale/((f=this.store.state)===null||f===void 0?void 0:f.scale)}`,style:{fill:"var(--kritzel-selection-handle-color, #000000)"},visibility:t.isSelected&&!this.isSelecting?"visible":"hidden"}),i("circle",{class:"resize-handle-overlay bottom-right",cx:t.totalWidth,cy:t.totalHeight,r:`${P*t.scale/((b=this.store.state)===null||b===void 0?void 0:b.scale)}`,style:{fill:"transparent"},visibility:t.isSelected&&!this.isSelecting?"visible":"hidden"}),i("line",{x1:t.totalWidth/2,y1:"0",x2:t.totalWidth/2,y2:-(15*t.scale/((p=this.store.state)===null||p===void 0?void 0:p.scale)),style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${(v=this.store.state)===null||v===void 0?void 0:v.scale})`},visibility:t.isSelected&&!this.isSelecting?"visible":"hidden"}),i("circle",{class:"rotation-handle",cx:t.totalWidth/2,cy:-(15*t.scale/((g=this.store.state)===null||g===void 0?void 0:g.scale)),r:`${R*t.scale/((k=this.store.state)===null||k===void 0?void 0:k.scale)}`,style:{fill:"var(--kritzel-selection-handle-color, #000000)"},visibility:t.isSelected&&!this.isSelecting?"visible":"hidden"}),i("circle",{class:"rotation-handle-overlay",cx:t.totalWidth/2,cy:-(15*t.scale/((y=this.store.state)===null||y===void 0?void 0:y.scale)),r:`${P*t.scale/((x=this.store.state)===null||x===void 0?void 0:x.scale)}`,style:{fill:"transparent",cursor:"grab"},visibility:t.isSelected&&!this.isSelecting?"visible":"hidden"}),i("g",{style:{display:this.store.state.debugInfo.showObjectInfo?"block":"none",pointerEvents:"none"}},i("foreignObject",{x:t.totalWidth.toString(),y:"0",width:"400px",height:"160px",style:{minHeight:"0",minWidth:"0",display:t.isDebugInfoVisible?"block":"none"}},i("div",{style:{width:"100%",height:"100%"}},i("div",{style:{whiteSpace:"nowrap"}},"zIndex: ",t.zIndex),i("div",{style:{whiteSpace:"nowrap"}},"translateX: ",t.translateX),i("div",{style:{whiteSpace:"nowrap"}},"translateY: ",t.translateY),i("div",{style:{whiteSpace:"nowrap"}},"width: ",t.width),i("div",{style:{whiteSpace:"nowrap"}},"height: ",t.height),i("div",{style:{whiteSpace:"nowrap"}},"scale: ",t.scale),i("div",{style:{whiteSpace:"nowrap"}},"rotation: ",t.rotation),i("div",{style:{whiteSpace:"nowrap"}},"x: ",t.x),i("div",{style:{whiteSpace:"nowrap"}},"y: ",t.y))))))})),i("svg",{key:"86f9a08bea3ac2d261b14b2eec471fafd20ca11f",class:"object",xmlns:"http://www.w3.org/2000/svg",style:{height:(j=this.store.state.currentPath)===null||j===void 0?void 0:j.height.toString(),width:(M=this.store.state.currentPath)===null||M===void 0?void 0:M.width.toString(),left:"0",top:"0",zIndex:(D=this.store.state.currentPath)===null||D===void 0?void 0:D.zIndex.toString(),position:"absolute",transform:(B=this.store.state.currentPath)===null||B===void 0?void 0:B.transformationMatrix,transformOrigin:"top left",overflow:"visible"},viewBox:(S=this.store.state.currentPath)===null||S===void 0?void 0:S.viewBox},i("path",{key:"66ebcf1791c993d62b34a2e4da1d4279428a17dd",d:(E=this.store.state.currentPath)===null||E===void 0?void 0:E.d,fill:(T=this.store.state.currentPath)===null||T===void 0?void 0:T.fill,stroke:($=this.store.state.currentPath)===null||$===void 0?void 0:$.stroke}))),this.store.state.isContextMenuVisible&&i("kritzel-context-menu",{key:"af91784e3afc84b71d5186237d287c31d472d80a",class:"context-menu",ref:t=>this.contextMenuElement=t,items:this.store.state.contextMenuItems,objects:((O=this.store.state.selectionGroup)===null||O===void 0?void 0:O.objects)||[],style:{position:"fixed",left:`${this.store.state.contextMenuX}px`,top:`${this.store.state.contextMenuY}px`,zIndex:"10000"},onActionSelected:t=>{var e;t.detail.action({x:(-this.store.state.translateX+this.store.state.contextMenuX)/this.store.state.scale,y:(-this.store.state.translateY+this.store.state.contextMenuY)/this.store.state.scale},(e=this.store.state.selectionGroup)===null||e===void 0?void 0:e.objects);this.hideContextMenu()}}),((W=this.store.state)===null||W===void 0?void 0:W.activeTool)instanceof c&&!this.store.state.isScaling&&i("kritzel-cursor-trail",{key:"573a4422b742044df5f240b260bc66e83d004520",store:this.store}))}get host(){return o(this)}static get watchers(){return{workspace:["onWorkspaceChange"],scaleMax:["validateScaleMax"],scaleMin:["validateScaleMin"]}}};ut.style=dt;const ft=":host{display:block}.font-preview{color:var(--kritzel-font-size-text-color, #333333);line-height:1;text-align:center;font-weight:bold}";const bt=class{constructor(e){t(this,e);this.fontFamily="Arial, sans-serif";this.size=24;this.color="#000000"}render(){return i(s,{key:"d318355704f1bf66468dd793e5e38da827076d3b"},i("div",{key:"447b4fba97f5d1900060859943438733667aed08",class:"font-preview",style:{fontFamily:this.fontFamily,fontSize:`${this.size}px`,color:this.color}},"A"))}};bt.style=ft;const pt=":host{display:flex;align-items:flex-start;gap:8px;padding:8px;box-sizing:border-box;width:100%}.font-style-button{display:flex;justify-content:center;align-items:center;width:42px;height:32px;padding:0;border:none;outline:none;background:none;cursor:pointer;border-radius:0;color:var(--control-text-color);font-weight:bold;-webkit-tap-highlight-color:transparent}.font-style-button:not(:last-child){border-right:1px solid #333333}.font-style-button:hover{background-color:var(--control-hover-bg)}.font-style-button:active{background-color:var(--control-active-bg)}.font-style-button.selected,.font-style-button.selected:hover,.font-style-button.selected:active{background-color:var(--control-selected-bg);color:var(--control-selected-color)}.font-style-button.italic-text{font-style:italic}";const vt=class{constructor(i){t(this,i);this.fontFamilyChange=e(this,"fontFamilyChange");this.fontOptions=[{value:"arial",label:"Arial"},{value:"verdana",label:"Verdana"},{value:"helvetica",label:"Helvetica"},{value:"tahoma",label:"Tahoma"},{value:"trebuchet ms",label:"Trebuchet MS"},{value:"times new roman",label:"Times New Roman"},{value:"georgia",label:"Georgia"},{value:"garamond",label:"Garamond"},{value:"courier new",label:"Courier New"},{value:"brush script mt",label:"Brush Script MT"}];this.handleDropdownValueChange=t=>{this.fontFamilyChange.emit(t.detail)}}componentWillLoad(){if(this.fontOptions&&this.fontOptions.length>0){const t=this.fontOptions.some((t=>t.value===this.selectedFontFamily));if(!this.selectedFontFamily||!t){this.selectedFontFamily=this.fontOptions[0].value}}}render(){const t=this.fontOptions.map((t=>({value:t.value,label:t.label,style:{fontFamily:t.value}})));return i(s,{key:"801b1dbc2b7da7d00fb00ed6a8d8ee7be3e9ef17"},i("kritzel-dropdown",{key:"5f774c0b31ca16a1c8acda1c73ea3aacc2784649",options:t,value:this.selectedFontFamily,onValueChanged:this.handleDropdownValueChange,selectStyles:{fontFamily:this.selectedFontFamily}},i("button",{key:"3c101155ff08854f665750f8988fb3691a77c04a",class:"font-style-button",slot:"suffix"},"B"),i("button",{key:"48d2ead137a8a35f06fb8b5487431e2ce613c755",class:"font-style-button italic-text",slot:"suffix"},"I")))}};vt.style=pt;const gt=":host{display:flex;align-items:flex-start;gap:8px;padding:8px;box-sizing:border-box}.size-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:4px;cursor:pointer;border:2px solid transparent;box-sizing:border-box;border-radius:50%}.size-container:hover{background-color:var(--kritzel-font-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-font-size-selected-background-color, #e0e0e0)}";const kt=class{constructor(i){t(this,i);this.sizeChange=e(this,"sizeChange");this.sizes=[8,10,12,16,20,24];this.selectedSize=null;this.fontFamily="Arial"}handleSizeClick(t){this.selectedSize=t;this.sizeChange.emit(t)}render(){return i(s,{key:"08571feed86b37208956608b170ca1f782b7fb18"},this.sizes.map((t=>i("div",{class:{"size-container":true,selected:this.selectedSize===t},onClick:()=>this.handleSizeClick(t)},i("kritzel-font",{fontFamily:this.fontFamily,size:t})))))}};kt.style=gt;const yt=":host{display:inline-flex;justify-content:center;align-items:center;}span{display:flex;align-items:center;width:100%;height:100%;}span>svg{width:100%;height:100%}";const xt=class{constructor(e){t(this,e);this.size=24}render(){const t=U.get(this.name);if(!t){console.error(`[kritzel-icon] Icon "${this.name}" not found in registry.`);return i("span",{class:"error-icon","aria-label":`Error: Icon ${this.name} not found`},"?")}const e={width:`${this.size}px`,height:`${this.size}px`};return i(s,{style:e},i("span",{"aria-hidden":!this.label,role:this.label?"img":undefined,"aria-label":this.label,innerHTML:t}))}};xt.style=yt;const wt=":host{display:flex;flex-direction:column;min-width:180px;padding:var(--kritzel-controls-padding, 8px);background-color:var(--kritzel-controls-background-color, #ffffff);border-radius:var(--kritzel-controls-border-radius, 12px);box-shadow:var(--kritzel-controls-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-controls-border, 1px solid #ebebeb);z-index:2;gap:var(--kritzel-menu-item-gap, 4px);overflow-y:auto;scrollbar-color:#ebebeb transparent;scrollbar-width:thin}button{all:unset;background:transparent;border:0;padding:0;margin:0;font:inherit;color:inherit;line-height:inherit;text-align:inherit;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none;border-radius:0;-webkit-tap-highlight-color:transparent}button:focus{outline:none}:host(:focus){outline:none}.menu-item{display:flex;align-items:center;justify-content:space-between;padding:var(--kritzel-context-menu-item-padding, 8px);border-radius:var(--kritzel-context-menu-item-border-radius, 12px);cursor:pointer;font-family:sans-serif;font-size:var(--kritzel-context-menu-item-font-size, 14px);color:var(--kritzel-context-menu-item-color, #333333);gap:var(--kritzel-context-menu-item-gap, 12px)}.menu-item:focus,.menu-item:focus-within{outline:none;background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.menu-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-item:not(.disabled):not(.inactive):not(.active):hover{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.menu-item:not(.disabled):not(.inactive):not(.active):active{background-color:var(--kritzel-context-menu-item-active-background-color, hsl(0, 0%, 0%, 8.6%))}.menu-item.active{color:var(--kritzel-controls-background-color, #ffffff);background-color:var(--kritzel-controls-control-selected-background-color, #007aff)}.menu-item.active kritzel-icon{filter:brightness(0) invert(1)}.menu-item.active:hover{background-color:var(--kritzel-controls-control-selected-hover-background-color, #0075f1)}.menu-item.disabled{color:var(--kritzel-context-menu-item-disabled-color, #aaaaaa);background-color:transparent;cursor:default}.menu-item.child-open{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%)) !important}.menu-item.active.menu-item.child-open{background-color:var(--kritzel-controls-control-selected-active-background-color, #0075f1) !important}.menu-item kritzel-icon{opacity:0.8;flex-shrink:0}.menu-item.disabled kritzel-icon{opacity:0.4}.menu-item.edit-mode input{background:transparent;border:none;outline:none;font-size:inherit;font-family:inherit;color:inherit;padding:0;width:100%;padding:2px 0px;border-bottom:1px solid var(--kritzel-context-menu-item-color, #333333)}.menu-item.active.edit-mode input{border-bottom:1px solid var(--kritzel-controls-background-color, #ffffff)}.menu-item.edit-mode input::selection{background-color:var(--kritzel-controls-control-selected-background-color, #007aff);border-radius:4px;color:var(--kritzel-controls-background-color, #ffffff)}.menu-item.active.edit-mode input::selection{background-color:var(--kritzel-menu-item-selected-input-background-color, #ffffff34)}.menu-item-button{background:transparent;border:none;outline:none;cursor:pointer;padding:4px;border-radius:8px;display:flex;align-items:center;justify-content:center}.menu-item-button:hover{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.menu-item-button:focus{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.edit-container,.view-container{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--kritzel-context-menu-item-gap, 4px)}";const mt=class{constructor(i){t(this,i);this.close=e(this,"close");this.items=[];this.parentIndex=null;this.parent=null;this.activeItemIndex=null;this.editingIndex=null;this.openChildMenuIndex=null;this.childMenuAnchor=null;this.cancelButton=null;this.saveButton=null}onEditingIndexChange(t){if(t===null){this.openChildMenuIndex=null;this.editInput=undefined;return}}handleWindowClick(t){if(this.openChildMenuIndex===null){return}const e=t.target;if(!this.host.contains(e)){this.openChildMenuIndex=null}}handleEscape(t){var e;if(t.key==="Escape"){if(this.openChildMenuIndex!==null){return}if(this.editingIndex!==null){(e=this.cancelButton)===null||e===void 0?void 0:e.click();return}this.close.emit()}}handleEnter(t){var e;if(t.key==="Enter"){if(this.editingIndex!==null){(e=this.saveButton)===null||e===void 0?void 0:e.click();return}}}componentDidLoad(){requestAnimationFrame((()=>{this.host.focus()}))}isViewMode(t){return this.editingIndex!==t}handleSelect(t){var e;if(t.disabled||this.editingIndex!==null||this.openChildMenuIndex!==null){return}(e=t.select)===null||e===void 0?void 0:e.call(t,t)}render(){return i(s,{key:"6d98c1d40c1af36b7b36c45ddc96fb89ab6ebdca",tabIndex:0},this.items.map(((t,e)=>i("button",{tabIndex:0,class:{"menu-item":true,disabled:t.disabled,inactive:this.openChildMenuIndex!==null&&this.openChildMenuIndex!==e,"child-open":this.openChildMenuIndex===e,"edit-mode":this.editingIndex===e,active:this.activeItemIndex===e},onClick:()=>this.handleSelect(t)},this.isViewMode(e)===true&&i("div",{class:"view-container"},i("span",{class:"menu-item-label"},t.label),i("div",null,t.children&&t.children.length>0&&i("button",{class:"menu-item-button",tabIndex:0,onClick:t=>{if(this.editingIndex!==null)return;t.stopPropagation();this.childMenuAnchor=this.openChildMenuIndex===e?null:t.currentTarget;this.openChildMenuIndex=this.openChildMenuIndex===e?null:e}},i("kritzel-icon",{name:"ellipsis-vertical",size:16})),this.openChildMenuIndex===e&&i("kritzel-portal",{anchor:this.childMenuAnchor,offsetY:4,onClose:()=>this.openChildMenuIndex=null},i("kritzel-menu",{style:{minWidth:"100px"},items:t.children,parentIndex:e,parent:t,onClose:()=>{var t;this.openChildMenuIndex=null;(t=this.childMenuAnchor)===null||t===void 0?void 0:t.focus()}})))),this.isViewMode(e)===false&&i("div",{class:"edit-container"},i("input",{tabIndex:0,ref:t=>{this.editInput=t;requestAnimationFrame((()=>{var t,e;(t=this.editInput)===null||t===void 0?void 0:t.focus();(e=this.editInput)===null||e===void 0?void 0:e.select()}))},type:"text",name:"menu-item-"+e,value:t.label,onInput:e=>t.label=e.target.value}),i("div",{style:{display:"flex",gap:"8px"}},i("button",{ref:t=>this.cancelButton=t,class:"menu-item-button",tabIndex:0,onClick:()=>{var e;return(e=t.cancel)===null||e===void 0?void 0:e.call(t,t)}},i("kritzel-icon",{name:"x",size:16})),i("button",{ref:t=>this.saveButton=t,class:"menu-item-button",tabIndex:0,onClick:()=>{var e;return(e=t.save)===null||e===void 0?void 0:e.call(t,t)}},i("kritzel-icon",{name:"check",size:16}))))))))}get host(){return o(this)}static get watchers(){return{editingIndex:["onEditingIndexChange"]}}};mt.style=wt;class zt{static getNumericValueFromStyle(t,e){const i=window.getComputedStyle(t).getPropertyValue(e);return parseFloat(i)||0}static getScrollableParent(t){var e,i;if(!t){return window}const s=(i=(e=t.parentNode)===null||e===void 0?void 0:e.host)!==null&&i!==void 0?i:t.parentElement;if(!s||s.tagName==="BODY"){return window}const o=window.getComputedStyle(s);if(o.overflow==="auto"||o.overflowY==="auto"||o.overflow==="scroll"||o.overflowY==="scroll"){return s}return this.getScrollableParent(s)}static isElementInViewport(t){if(!t){return false}const e=this.getScrollableParent(t);const i=t.getBoundingClientRect();if(e===window){const t=window.innerHeight||document.documentElement.clientHeight;const e=window.innerWidth||document.documentElement.clientWidth;return i.top>=0&&i.left>=0&&i.bottom<=t&&i.right<=e}const s=e.getBoundingClientRect();return i.top>=s.top&&i.left>=s.left&&i.bottom<=s.bottom&&i.right<=s.right}}const Ct=0;const It=0;const jt="9005";const Mt="portal";const Dt=class{constructor(i){t(this,i);this.close=e(this,"close");this.autoFocus=true;this.moved=false;this.handleScroll=()=>{const t=zt.isElementInViewport(this.anchor);if(!t){this.close.emit();return}this.calculatePosition()}}anchorChanged(t){if(t){this.calculatePosition()}}handleResize(){this.calculatePosition()}calculateLeft(){var t;if(!this.anchor||!this.portal)return 0;const e=this.anchor.getBoundingClientRect();const i=this.portal.getBoundingClientRect();const s=(t=this.offsetX)!==null&&t!==void 0?t:Ct;let o=e.left+s;const n=window.innerWidth-i.width-It;if(o<It)o=It;if(o>n)o=n;return Math.round(o+window.scrollX)}calculateTop(){var t;if(!this.anchor||!this.portal)return 0;const e=this.anchor.getBoundingClientRect();const i=this.portal.getBoundingClientRect();const s=(t=this.offsetY)!==null&&t!==void 0?t:Ct;let o=e.bottom+s;if(o+i.height>window.innerHeight){o=e.top-i.height-s}return Math.round(o+window.scrollY)}createPortal(){this.portal=document.createElement("div");this.portal.setAttribute("id",Mt);this.portal.style.zIndex=jt;this.portal.style.position="absolute";this.portal.style.top="0px";this.portal.style.left="0px";document.body.append(this.portal)}moveElementToPortal(){this.portal.appendChild(this.element);this.moved=true}calculatePosition(){if(!this.anchor||!this.portal)return;const t=this.calculateTop();const e=this.calculateLeft();this.portal.style.top=`${t}px`;this.portal.style.left=`${e}px`}componentWillLoad(){this.createPortal()}componentDidLoad(){var t;this.moveElementToPortal();if(this.anchor){this.calculatePosition();this.scrollableParent=zt.getScrollableParent(this.anchor);(t=this.scrollableParent)===null||t===void 0?void 0:t.addEventListener("scroll",this.handleScroll)}}disconnectedCallback(){var t;this.moved?this.portal.remove():this.moved=true;(t=this.scrollableParent)===null||t===void 0?void 0:t.removeEventListener("scroll",this.handleScroll)}render(){return i(s,{key:"e39525c3e9ddbf738b63ac0c08d8c1e2264783b1",ref:t=>this.element=t},i("slot",{key:"95202c5bea32c77dc1dde0a12a58ac9bcebd8812"}))}static get watchers(){return{anchor:["anchorChanged"]}}};const Bt=":host{position:relative;display:flex;align-items:center;font-family:sans-serif;z-index:1;padding:var(--kritzel-controls-padding, 4px);background-color:var(--kritzel-controls-background-color, #ffffff);border-radius:var(--kritzel-controls-border-radius, 12px);box-shadow:var(--kritzel-controls-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-controls-border, 1px solid #ebebeb);gap:var(--kritzel-context-menu-item-gap, 4px)}:host(:focus){outline:none}button{border:none;background-color:transparent;padding:0;margin:0;font-family:inherit;font-size:inherit;color:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;text-align:center;display:flex;align-items:center;justify-content:center;pointer-events:all;-webkit-tap-highlight-color:transparent}.split-main-button,.split-menu-button{height:auto;display:flex;align-items:center;padding:var(--kritzel-controls-padding, 8px);background-color:var(--kritzel-controls-background-color, #ffffff);border-radius:var(--kritzel-controls-border-radius, 12px);font-size:var(--kritzel-context-menu-item-font-size, 14px)}.split-main-button:hover,.split-menu-button:hover{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.split-main-button:focus,.split-menu-button:focus{outline:none;background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.split-main-button{gap:var(--kritzel-context-menu-item-gap, 4px)}.split-menu-button{border-left:none;justify-content:center}.split-divider{width:var(--kritzel-controls-divider-width, 1px);height:24px;background-color:var(--kritzel-controls-divider-background-color, hsl(0, 0%, 0%, 4.3%))}";const St=class{constructor(i){t(this,i);this.buttonClick=e(this,"buttonClick");this.optionSelect=e(this,"optionSelect");this.menuOpened=e(this,"menuOpened");this.menuClosed=e(this,"menuClosed");this.dropdownIcon="chevron-down";this.options=[];this.disabled=false;this.activeItemIndex=null;this.editingIndex=null;this.isMenuOpen=false;this.handleDocumentClick=t=>{const e=t.composedPath&&t.composedPath()||[];const i=e.some((t=>(t===null||t===void 0?void 0:t.tagName)==="KRITZEL-SPLIT-BUTTON"||(t===null||t===void 0?void 0:t.tagName)==="KRITZEL-MENU"));if(!i){this.closeMenu()}else if(this.isMenuOpen){document.addEventListener("click",this.handleDocumentClick,{once:true})}};this.toggleMenu=()=>{if(this.isMenuOpen){this.closeMenu()}else{this.openMenu()}};this.handleButtonClick=()=>{if(!this.disabled){this.buttonClick.emit()}}}async openMenu(){if(this.disabled||this.isMenuOpen)return;this.isMenuOpen=true;this.menuOpened.emit();document.addEventListener("click",this.handleDocumentClick,{once:true})}async closeMenu(){if(this.disabled||!this.isMenuOpen)return;this.isMenuOpen=false;this.menuClosed.emit();this.host.focus()}render(){return i(s,{key:"cf133b2867dffe6b9d70259c7d44b86342411d38",tabIndex:0},i("button",{key:"3044cd9cbe02dde919a276b9f1d8f1f24b8514e9",class:"split-main-button",tabIndex:0,onClick:this.handleButtonClick,disabled:this.disabled},this.buttonIcon&&i("kritzel-icon",{key:"4ed314f7288df567bb35a909c4919cf353788dd2",name:this.buttonIcon}),this.buttonText&&i("span",{key:"68b2148200e4698468aae137d16a4b5f17764f9f"},this.buttonText," (",this.options.length,")")),i("div",{key:"5047a2aea1d31e80fba8f6350e4b64572198c87d",class:"split-divider"}),i("button",{key:"d7b33d9c717553d7cff3c3d2fafe90ce9dce1e67",ref:t=>this.splitMenuButton=t,class:"split-menu-button",tabIndex:0,onClick:this.toggleMenu,disabled:this.disabled},i("kritzel-icon",{key:"a3d485aee5e9843c2d07d367a0d5743bfc8f3d5c",name:this.dropdownIcon})),i("kritzel-portal",{key:"2bb8f5c58884e6c73d3d7025a8e6efce770ab039",anchor:this.host,offsetY:4},this.isMenuOpen&&i("kritzel-menu",{key:"3f2bb51a43ec78ff8664d5f625afa21cf9ecfb8c",style:{maxHeight:"300px",width:"180px"},items:this.options,activeItemIndex:this.activeItemIndex,editingIndex:this.editingIndex,onClose:()=>this.closeMenu()})))}get host(){return o(this)}};St.style=Bt;const Et=":host{display:flex;align-items:flex-start;gap:8px;padding:8px;box-sizing:border-box}.size-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:pointer;border:2px solid transparent;box-sizing:border-box}.size-container:hover{background-color:var(--kritzel-stroke-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-stroke-size-selected-background-color, #ebebeb)}";const Tt=class{constructor(i){t(this,i);this.sizeChange=e(this,"sizeChange");this.sizes=[4,6,8,12,16,24];this.selectedSize=null}handleSizeClick(t){this.selectedSize=t;this.sizeChange.emit(t)}render(){return i(s,{key:"0185d3243c35c49169324c98f87df6a286fc3d31"},this.sizes.map((t=>i("div",{class:{"size-container":true,selected:this.selectedSize===t},onClick:()=>this.handleSizeClick(t)},i("kritzel-color",{value:"#000000",size:t})))))}};Tt.style=Et;const $t=":host{width:auto}.tooltip-content{position:relative;padding:8px 12px;border-radius:4px;width:fit-content;background-color:var(--kritzel-controls-tooltip-background-color, #ffffff);color:var(--kritzel-controls-tooltip-color, #000000);padding:var(--kritzel-controls-tooltip-padding, 8px);border-radius:var(--kritzel-controls-tooltip-border-radius, 16px);white-space:nowrap;box-shadow:var(--kritzel-controls-tooltip-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12))}";const Ot=768;const Wt=class{constructor(e){t(this,e);this.isVisible=false;this.arrowSize=8;this.offsetY=24;this.positionX=0;this.arrowOffset="0px";this.isMobileView=window.innerWidth<Ot}handleWindowResize(){this.isMobileView=window.innerWidth<Ot;this.calculateAdjustedPosition()}componentWillLoad(){this.isMobileView=window.innerWidth<Ot;this.calculateAdjustedPosition()}componentWillUpdate(){this.calculateAdjustedPosition()}calculateAdjustedPosition(){var t;if(this.isVisible&&this.anchorElement){const e=this.anchorElement.getBoundingClientRect();const i=(t=this.el.shadowRoot)===null||t===void 0?void 0:t.querySelector(".tooltip-content");if(!this.isMobileView){this.positionX=e.left+e.width/2;this.arrowOffset=`calc(${50}% - ${this.arrowSize}px)`}else{const t=i.getBoundingClientRect();this.positionX=e.left+e.width/2-t.width/2;this.arrowOffset=`${e.left+e.width/2-t.left-this.arrowSize}px`}}}render(){return i(s,{key:"7610e8185e037813cc363daa3212a4164a20daaf",style:{position:"fixed",zIndex:"9999",transition:"opacity 0.3s ease-in-out, transform 0.3s ease-in-out",visibility:this.isVisible?"visible":"hidden",left:!this.isMobileView?`${this.positionX}px`:"50%",marginBottom:`${this.offsetY+this.arrowSize}px`}},i("div",{key:"bd5c1f0f7ff3afddfcf2469277189d026e79b453",class:"tooltip-content",onClick:t=>t.stopPropagation()},i("slot",{key:"547e5a8fcb8131225461881a1ad0125fa4b0d55b"}),i("div",{key:"de1d30c31667a81a36873d32bec20fcc911ec89f",class:"tooltip-arrow-wrapper",style:{position:"fixed",left:this.arrowOffset,bottom:`-${this.arrowSize*2}px`}},i("div",{key:"ebbf83bd4d35e252b0258a7c81ebcef48ac10004",class:"tooltip-arrow",style:{borderLeft:`${this.arrowSize}px solid transparent`,borderRight:`${this.arrowSize}px solid transparent`,borderTop:`${this.arrowSize}px solid var(--kritzel-controls-tooltip-background-color, #ffffff)`,filter:"drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2))"}}),i("div",{key:"918ca46c438657dc4f72ccc73f81d58076d637c5",class:"tooltip-arrow-rect",style:{position:"relative",width:`${this.arrowSize*2}px`,height:`${this.arrowSize}px`,backgroundColor:"var(--kritzel-controls-tooltip-background-color, #ffffff)",bottom:`${this.arrowSize*2}px`}}))))}get el(){return o(this)}};Wt.style=$t;const Ft=":host{display:flex;flex-direction:row;align-items:center;padding:4px;gap:8px;border-top-left-radius:12px;border-top-right-radius:12px;background-color:rgb(226, 226, 226);width:fit-content;user-select:none}.utility-button{display:flex;justify-content:center;align-items:center;width:28px;height:28px;padding:8px 4px;border:none;outline:none;background:none;cursor:pointer;color:#333333;-webkit-tap-highlight-color:transparent}.utility-separator{width:1px;height:16px;background-color:hsl(0, 0%, 0%, 4.3%)}";const At=class{constructor(i){t(this,i);this.undo=e(this,"undo");this.redo=e(this,"redo");this.delete=e(this,"delete")}handleUndo(t){if(t.cancelable){t.preventDefault();t.stopPropagation();this.undo.emit()}}handleRedo(t){t.preventDefault();t.stopPropagation();this.redo.emit()}render(){return i(s,{key:"cf7b5c501b6535fda22b17ea218e90bd60223c6e"},i("button",{key:"05db2cee7f2e191674167ef503e70718200bf904",class:"utility-button",onClick:t=>this.handleUndo(t)},i("kritzel-icon",{key:"10412c038b9d4e66851c8a0c9b51b99607bac397",name:"undo"})),i("button",{key:"edf0289de8ce5cddd9341bc1855eae095274226c",class:"utility-button",onClick:t=>this.handleRedo(t)},i("kritzel-icon",{key:"46263e3d3f166b224c9a18ba383085e020fac51a",name:"redo"})),i("div",{key:"3a6c0eca21f44887683d6308ca5741b095eceb77",class:"utility-separator"}),i("button",{key:"ced83e0c47fc920edabdc5b3379a8805f1827374",class:"utility-button"},i("kritzel-icon",{key:"d49c6412d778d34fe21e86482f2114631621106a",name:"delete",onClick:()=>this.delete.emit()})))}};At.style=Ft;const Rt=":host{display:flex;flex-direction:column;z-index:1}";const Pt=class{constructor(i){t(this,i);this.isWorkspaceManagerReady=e(this,"isWorkspaceManagerReady");this.workspaceChange=e(this,"workspaceChange");this.workspaces=[];this.editingIndex=null;this.newWorkspace=null;this.kritzelEngine=null;this.handleNewWorkspace=async()=>{var t;await((t=this.splitButtonRef)===null||t===void 0?void 0:t.openMenu());requestAnimationFrame((()=>{this.newWorkspace=new rt(g.generateUUID(),"New Workspace");this.editingIndex=0}))};this.handleMenuClosed=()=>{this.editingIndex=null;this.newWorkspace=null};this.handleSave=async t=>{const e=t.value;const i=Object.assign(Object.assign({},e),{name:t.label});if(this.newWorkspace){await this.kritzelEngine.createWorkspace(i);this.selectWorkspace(i)}else{await this.kritzelEngine.updateWorkspace(i)}this.editingIndex=null;this.newWorkspace=null};this.handleRename=t=>{this.editingIndex=t};this.handleDelete=async t=>{var e;await this.kritzelEngine.deleteWorkspace(t);if(((e=this.activeWorkspace)===null||e===void 0?void 0:e.id)===t.id){const e=this.sortedWorkspaces.find((e=>e.id!==t.id))||null;this.selectWorkspace(e)}}}get sortedWorkspaces(){const t=[...new Map(this.workspaces.map((t=>[t.id,t]))).values()];return[this.newWorkspace,...t].filter((t=>t!==null)).sort(((t,e)=>e.createdAt.getTime()-t.createdAt.getTime()))}get activeItemIndex(){return this.sortedWorkspaces.findIndex((t=>{var e;return t.id===((e=this.activeWorkspace)===null||e===void 0?void 0:e.id)}))}async componentWillLoad(){await this.initializeEngine();this.isWorkspaceManagerReady.emit()}async initializeEngine(){await customElements.whenDefined("kritzel-engine");this.kritzelEngine=this.host.parentElement.querySelector("kritzel-engine");if(!this.kritzelEngine){throw new Error("kritzel-engine not found in parent element.")}}handleSelect(t){this.selectWorkspace(t)}selectWorkspace(t){if(this.editingIndex!==null)return;this.activeWorkspace=this.sortedWorkspaces.find((e=>e.id===t.id));this.workspaceChange.emit(t)}render(){const t=this.sortedWorkspaces.map(((t,e)=>({label:t.name,value:t,select:()=>this.handleSelect(t),cancel:this.handleMenuClosed,save:this.handleSave,children:[{label:"Rename",value:"rename",select:()=>this.handleRename(e)},{label:"Delete",value:"delete",disabled:this.sortedWorkspaces.length<=1,select:()=>this.handleDelete(t)}]})));return i(s,{key:"1703451717d5583d6520edfbcdbe38a5b8f6840f"},i("kritzel-split-button",{key:"efd5d9b714ee72b23fd28c9b20ea6985957fe9b9",ref:t=>this.splitButtonRef=t,buttonIcon:"plus",options:t,activeItemIndex:this.activeItemIndex,editingIndex:this.editingIndex,onButtonClick:this.handleNewWorkspace,onMenuClosed:this.handleMenuClosed}))}get host(){return o(this)}};Pt.style=Rt;export{S as kritzel_brush_style,T as kritzel_color,O as kritzel_color_palette,F as kritzel_context_menu,R as kritzel_control_brush_config,_ as kritzel_control_text_config,N as kritzel_controls,Y as kritzel_cursor_trail,X as kritzel_dropdown,J as kritzel_editor,ut as kritzel_engine,bt as kritzel_font,vt as kritzel_font_family,kt as kritzel_font_size,xt as kritzel_icon,mt as kritzel_menu,Dt as kritzel_portal,St as kritzel_split_button,Tt as kritzel_stroke_size,Wt as kritzel_tooltip,At as kritzel_utility_panel,Pt as kritzel_workspace_manager};
2
+ //# sourceMappingURL=p-4a0009e7.entry.js.map