kritzel-stencil 0.0.130 → 0.0.131

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 (282) hide show
  1. package/dist/cjs/{index-CfXjPLHb.js → index-BwINBV6L.js} +216 -166
  2. package/dist/cjs/index-BwINBV6L.js.map +1 -0
  3. package/dist/cjs/{index-CUSIflVf.js → index-nzUNdMPh.js} +41 -15
  4. package/dist/cjs/index-nzUNdMPh.js.map +1 -0
  5. package/dist/cjs/index.cjs.js +2 -1
  6. package/dist/cjs/index.cjs.js.map +1 -1
  7. package/dist/cjs/kritzel-brush-style_23.cjs.entry.js +570 -527
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/stencil.cjs.js +2 -2
  10. package/dist/cjs/stencil.cjs.js.map +1 -1
  11. package/dist/collection/classes/commands/add-object.command.js +1 -0
  12. package/dist/collection/classes/commands/add-object.command.js.map +1 -1
  13. package/dist/collection/classes/commands/add-selection-group.command.js +1 -0
  14. package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -1
  15. package/dist/collection/classes/commands/base.command.js +4 -2
  16. package/dist/collection/classes/commands/base.command.js.map +1 -1
  17. package/dist/collection/classes/commands/batch.command.js +1 -0
  18. package/dist/collection/classes/commands/batch.command.js.map +1 -1
  19. package/dist/collection/classes/commands/move-selection-group.command.js +6 -0
  20. package/dist/collection/classes/commands/move-selection-group.command.js.map +1 -1
  21. package/dist/collection/classes/commands/remove-object.command.js +1 -0
  22. package/dist/collection/classes/commands/remove-object.command.js.map +1 -1
  23. package/dist/collection/classes/commands/remove-selection-group.command.js +2 -1
  24. package/dist/collection/classes/commands/remove-selection-group.command.js.map +1 -1
  25. package/dist/collection/classes/commands/resize-selection-group.command.js +3 -0
  26. package/dist/collection/classes/commands/resize-selection-group.command.js.map +1 -1
  27. package/dist/collection/classes/commands/rotate-selection-group.command.js +3 -0
  28. package/dist/collection/classes/commands/rotate-selection-group.command.js.map +1 -1
  29. package/dist/collection/classes/commands/update-object.command.js +3 -0
  30. package/dist/collection/classes/commands/update-object.command.js.map +1 -1
  31. package/dist/collection/classes/commands/update-viewport.command.js +2 -0
  32. package/dist/collection/classes/commands/update-viewport.command.js.map +1 -1
  33. package/dist/collection/classes/database.class.js +6 -5
  34. package/dist/collection/classes/database.class.js.map +1 -1
  35. package/dist/collection/classes/handlers/base.handler.js +1 -0
  36. package/dist/collection/classes/handlers/base.handler.js.map +1 -1
  37. package/dist/collection/classes/handlers/context-menu.handler.js +2 -2
  38. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
  39. package/dist/collection/classes/handlers/move.handler.js +8 -3
  40. package/dist/collection/classes/handlers/move.handler.js.map +1 -1
  41. package/dist/collection/classes/handlers/resize.handler.js +6 -6
  42. package/dist/collection/classes/handlers/resize.handler.js.map +1 -1
  43. package/dist/collection/classes/handlers/rotation.handler.js +2 -2
  44. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
  45. package/dist/collection/classes/handlers/selection.handler.js +5 -3
  46. package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
  47. package/dist/collection/classes/history.class.js +4 -0
  48. package/dist/collection/classes/history.class.js.map +1 -1
  49. package/dist/collection/classes/objects/base-object.class.js +28 -15
  50. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  51. package/dist/collection/classes/objects/custom-element.class.js +3 -2
  52. package/dist/collection/classes/objects/custom-element.class.js.map +1 -1
  53. package/dist/collection/classes/objects/image.class.js +12 -12
  54. package/dist/collection/classes/objects/image.class.js.map +1 -1
  55. package/dist/collection/classes/objects/path.class.js +29 -27
  56. package/dist/collection/classes/objects/path.class.js.map +1 -1
  57. package/dist/collection/classes/objects/selection-box.class.js +2 -5
  58. package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
  59. package/dist/collection/classes/objects/selection-group.class.js +7 -6
  60. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  61. package/dist/collection/classes/objects/text.class.js +11 -11
  62. package/dist/collection/classes/objects/text.class.js.map +1 -1
  63. package/dist/collection/classes/registries/icon-registry.class.js +1 -1
  64. package/dist/collection/classes/registries/icon-registry.class.js.map +1 -1
  65. package/dist/collection/classes/registries/tool.registry.js +1 -1
  66. package/dist/collection/classes/registries/tool.registry.js.map +1 -1
  67. package/dist/collection/classes/reviver.class.js +1 -0
  68. package/dist/collection/classes/reviver.class.js.map +1 -1
  69. package/dist/collection/classes/store.class.js +9 -8
  70. package/dist/collection/classes/store.class.js.map +1 -1
  71. package/dist/collection/classes/structures/circular-buffer.structure.js +5 -3
  72. package/dist/collection/classes/structures/circular-buffer.structure.js.map +1 -1
  73. package/dist/collection/classes/structures/object-map.structure.js +1 -0
  74. package/dist/collection/classes/structures/object-map.structure.js.map +1 -1
  75. package/dist/collection/classes/tools/base-tool.class.js +3 -2
  76. package/dist/collection/classes/tools/base-tool.class.js.map +1 -1
  77. package/dist/collection/classes/tools/brush-tool.class.js +7 -7
  78. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -1
  79. package/dist/collection/classes/tools/eraser-tool.class.js +2 -3
  80. package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -1
  81. package/dist/collection/classes/tools/image-tool.class.js +3 -4
  82. package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
  83. package/dist/collection/classes/tools/selection-tool.class.js +12 -9
  84. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
  85. package/dist/collection/classes/tools/text-tool.class.js +26 -27
  86. package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
  87. package/dist/collection/classes/viewport.class.js +4 -3
  88. package/dist/collection/classes/viewport.class.js.map +1 -1
  89. package/dist/collection/classes/workspace.class.js +5 -0
  90. package/dist/collection/classes/workspace.class.js.map +1 -1
  91. package/dist/collection/collection-manifest.json +1 -1
  92. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +6 -6
  93. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -1
  94. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +91 -87
  95. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  96. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +135 -146
  97. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  98. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +6 -7
  99. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -1
  100. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -3
  101. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -1
  102. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +5 -6
  103. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +1 -1
  104. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +44 -40
  105. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -1
  106. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +3 -5
  107. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -1
  108. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +17 -17
  109. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -1
  110. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +4 -5
  111. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -1
  112. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +3 -3
  113. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +1 -1
  114. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +1 -1
  115. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +34 -28
  116. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -1
  117. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +7 -0
  118. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +37 -31
  119. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +1 -1
  120. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +18 -19
  121. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -1
  122. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +16 -16
  123. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +56 -47
  124. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -1
  125. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +3 -4
  126. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +1 -1
  127. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +9 -10
  128. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -1
  129. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +5 -3
  130. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -1
  131. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +4 -4
  132. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -1
  133. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +3 -3
  134. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +1 -1
  135. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +23 -30
  136. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -1
  137. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +3 -0
  138. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +1 -1
  139. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +17 -15
  140. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -1
  141. package/dist/collection/helpers/event.helper.js +2 -2
  142. package/dist/collection/helpers/event.helper.js.map +1 -1
  143. package/dist/collection/helpers/html.helper.js +1 -2
  144. package/dist/collection/helpers/html.helper.js.map +1 -1
  145. package/dist/collection/helpers/object.helper.js +2 -14
  146. package/dist/collection/helpers/object.helper.js.map +1 -1
  147. package/dist/collection/index.js +1 -0
  148. package/dist/collection/index.js.map +1 -1
  149. package/dist/components/index.js +4 -3
  150. package/dist/components/index.js.map +1 -1
  151. package/dist/components/kritzel-brush-style.js +1 -1
  152. package/dist/components/kritzel-color-palette.js +1 -1
  153. package/dist/components/kritzel-color.js +1 -1
  154. package/dist/components/kritzel-context-menu.js +1 -1
  155. package/dist/components/kritzel-control-brush-config.js +1 -1
  156. package/dist/components/kritzel-control-text-config.js +1 -1
  157. package/dist/components/kritzel-controls.js +1 -1
  158. package/dist/components/kritzel-cursor-trail.js +1 -1
  159. package/dist/components/kritzel-dropdown.js +1 -1
  160. package/dist/components/kritzel-editor.js +115 -110
  161. package/dist/components/kritzel-editor.js.map +1 -1
  162. package/dist/components/kritzel-engine.js +1 -1
  163. package/dist/components/kritzel-font-family.js +1 -1
  164. package/dist/components/kritzel-font-size.js +1 -1
  165. package/dist/components/kritzel-font.js +1 -1
  166. package/dist/components/kritzel-icon.js +1 -1
  167. package/dist/components/kritzel-menu-item.js +1 -1
  168. package/dist/components/kritzel-menu.js +1 -1
  169. package/dist/components/kritzel-portal.js +1 -1
  170. package/dist/components/kritzel-split-button.js +1 -1
  171. package/dist/components/kritzel-stroke-size.js +1 -1
  172. package/dist/components/kritzel-tooltip.js +1 -1
  173. package/dist/components/kritzel-utility-panel.js +1 -1
  174. package/dist/components/kritzel-workspace-manager.js +1 -1
  175. package/dist/components/{p-BU2q3PRS.js → p-B1BLgWL1.js} +9 -6
  176. package/dist/components/p-B1BLgWL1.js.map +1 -0
  177. package/dist/components/{p-5CJxFNEE.js → p-BB0_-X42.js} +5 -4
  178. package/dist/components/p-BB0_-X42.js.map +1 -0
  179. package/dist/components/{p-D_Uh-xv_.js → p-BB5R2k1o.js} +40 -46
  180. package/dist/components/p-BB5R2k1o.js.map +1 -0
  181. package/dist/components/{p-CaPdvVd4.js → p-BPz_H-EG.js} +63 -53
  182. package/dist/components/p-BPz_H-EG.js.map +1 -0
  183. package/dist/components/{p-BqrTPNyu.js → p-BYanlgdq.js} +41 -15
  184. package/dist/components/p-BYanlgdq.js.map +1 -0
  185. package/dist/components/{p-BeVv4o5c.js → p-B_lb1FGi.js} +7 -2
  186. package/dist/components/p-B_lb1FGi.js.map +1 -0
  187. package/dist/components/{p-C-DqsDXz.js → p-BeljsQ-8.js} +78 -64
  188. package/dist/components/p-BeljsQ-8.js.map +1 -0
  189. package/dist/components/{p-_ntxNi8v.js → p-BexTdWaX.js} +21 -19
  190. package/dist/components/p-BexTdWaX.js.map +1 -0
  191. package/dist/components/{p-fyfT6A5K.js → p-BgmKrd5Z.js} +7 -4
  192. package/dist/components/p-BgmKrd5Z.js.map +1 -0
  193. package/dist/components/{p-BZ-j_4CK.js → p-BhiYvSBc.js} +6 -6
  194. package/dist/components/p-BhiYvSBc.js.map +1 -0
  195. package/dist/components/{p-26poIWa_.js → p-BrBQUN0Q.js} +12 -12
  196. package/dist/components/p-BrBQUN0Q.js.map +1 -0
  197. package/dist/components/{p-DtmZW6eP.js → p-BubxwvMA.js} +9 -7
  198. package/dist/components/p-BubxwvMA.js.map +1 -0
  199. package/dist/components/{p-jGaWxggY.js → p-BuewJQNl.js} +258 -233
  200. package/dist/components/p-BuewJQNl.js.map +1 -0
  201. package/dist/components/{p-BcQWRzsB.js → p-CGmS8wnN.js} +26 -23
  202. package/dist/components/p-CGmS8wnN.js.map +1 -0
  203. package/dist/components/{p-Crni2OI4.js → p-CHxPWeZd.js} +13 -11
  204. package/dist/components/p-CHxPWeZd.js.map +1 -0
  205. package/dist/components/{p-BGccckxP.js → p-CMJ3P0Vw.js} +7 -6
  206. package/dist/components/p-CMJ3P0Vw.js.map +1 -0
  207. package/dist/components/{p-C9-70hiF.js → p-DHSEK3rF.js} +118 -97
  208. package/dist/components/p-DHSEK3rF.js.map +1 -0
  209. package/dist/components/{p-BAPUTr3K.js → p-DMrtdhBD.js} +9 -8
  210. package/dist/components/p-DMrtdhBD.js.map +1 -0
  211. package/dist/components/p-DnUKql15.js +30 -0
  212. package/dist/components/p-DnUKql15.js.map +1 -0
  213. package/dist/components/{p-jpGLgpoq.js → p-DxTu1aoJ.js} +22 -22
  214. package/dist/components/p-DxTu1aoJ.js.map +1 -0
  215. package/dist/components/{p-BLmFBe2a.js → p-p1Jkec_q.js} +7 -5
  216. package/dist/components/p-p1Jkec_q.js.map +1 -0
  217. package/dist/components/{p-V4ui5aWj.js → p-rIRXQdie.js} +11 -10
  218. package/dist/components/p-rIRXQdie.js.map +1 -0
  219. package/dist/components/{p-Cb1IUD_g.js → p-t4NIsuX9.js} +13 -11
  220. package/dist/components/p-t4NIsuX9.js.map +1 -0
  221. package/dist/components/{p-BvlGgLAQ.js → p-trncBp_6.js} +47 -41
  222. package/dist/components/p-trncBp_6.js.map +1 -0
  223. package/dist/components/{p-BcQTDgzV.js → p-yZ48g7-u.js} +8 -7
  224. package/dist/components/p-yZ48g7-u.js.map +1 -0
  225. package/dist/esm/{index-DqqxAoZI.js → index-B-oSk-v8.js} +216 -167
  226. package/dist/esm/index-B-oSk-v8.js.map +1 -0
  227. package/dist/esm/{index-NiIEUDzj.js → index-oCOlsFCN.js} +41 -15
  228. package/dist/esm/index-oCOlsFCN.js.map +1 -0
  229. package/dist/esm/index.js +1 -1
  230. package/dist/esm/kritzel-brush-style_23.entry.js +568 -525
  231. package/dist/esm/loader.js +2 -2
  232. package/dist/esm/stencil.js +3 -3
  233. package/dist/esm/stencil.js.map +1 -1
  234. package/dist/stencil/index.esm.js +1 -1
  235. package/dist/stencil/p-3bb80782.entry.js +2 -0
  236. package/dist/stencil/p-3bb80782.entry.js.map +1 -0
  237. package/dist/stencil/p-B-oSk-v8.js +2 -0
  238. package/dist/stencil/p-B-oSk-v8.js.map +1 -0
  239. package/dist/stencil/p-oCOlsFCN.js +3 -0
  240. package/dist/stencil/p-oCOlsFCN.js.map +1 -0
  241. package/dist/stencil/stencil.esm.js +1 -1
  242. package/dist/stencil/stencil.esm.js.map +1 -1
  243. package/dist/types/classes/objects/path.class.d.ts +0 -2
  244. package/dist/types/index.d.ts +1 -0
  245. package/dist/types/stencil-public-runtime.d.ts +6 -4
  246. package/package.json +1 -1
  247. package/dist/cjs/index-CUSIflVf.js.map +0 -1
  248. package/dist/cjs/index-CfXjPLHb.js.map +0 -1
  249. package/dist/components/p-26poIWa_.js.map +0 -1
  250. package/dist/components/p-5CJxFNEE.js.map +0 -1
  251. package/dist/components/p-BAPUTr3K.js.map +0 -1
  252. package/dist/components/p-BGccckxP.js.map +0 -1
  253. package/dist/components/p-BLmFBe2a.js.map +0 -1
  254. package/dist/components/p-BU2q3PRS.js.map +0 -1
  255. package/dist/components/p-BZ-j_4CK.js.map +0 -1
  256. package/dist/components/p-Bb6od8He.js +0 -42
  257. package/dist/components/p-Bb6od8He.js.map +0 -1
  258. package/dist/components/p-BcQTDgzV.js.map +0 -1
  259. package/dist/components/p-BcQWRzsB.js.map +0 -1
  260. package/dist/components/p-BeVv4o5c.js.map +0 -1
  261. package/dist/components/p-BqrTPNyu.js.map +0 -1
  262. package/dist/components/p-BvlGgLAQ.js.map +0 -1
  263. package/dist/components/p-C-DqsDXz.js.map +0 -1
  264. package/dist/components/p-C9-70hiF.js.map +0 -1
  265. package/dist/components/p-CaPdvVd4.js.map +0 -1
  266. package/dist/components/p-Cb1IUD_g.js.map +0 -1
  267. package/dist/components/p-Crni2OI4.js.map +0 -1
  268. package/dist/components/p-D_Uh-xv_.js.map +0 -1
  269. package/dist/components/p-DtmZW6eP.js.map +0 -1
  270. package/dist/components/p-V4ui5aWj.js.map +0 -1
  271. package/dist/components/p-_ntxNi8v.js.map +0 -1
  272. package/dist/components/p-fyfT6A5K.js.map +0 -1
  273. package/dist/components/p-jGaWxggY.js.map +0 -1
  274. package/dist/components/p-jpGLgpoq.js.map +0 -1
  275. package/dist/esm/index-DqqxAoZI.js.map +0 -1
  276. package/dist/esm/index-NiIEUDzj.js.map +0 -1
  277. package/dist/stencil/p-DqqxAoZI.js +0 -2
  278. package/dist/stencil/p-DqqxAoZI.js.map +0 -1
  279. package/dist/stencil/p-NiIEUDzj.js +0 -3
  280. package/dist/stencil/p-NiIEUDzj.js.map +0 -1
  281. package/dist/stencil/p-eebdbf65.entry.js +0 -2
  282. package/dist/stencil/p-eebdbf65.entry.js.map +0 -1
@@ -1,26 +1,26 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-BqrTPNyu.js';
2
- import { a as KritzelIconRegistry, d as defineCustomElement$a } from './p-BLmFBe2a.js';
3
- import { A as ABSOLUTE_SCALE_MAX, f as ABSOLUTE_SCALE_MIN, c as KritzelSelectionTool, a as KritzelEraserTool, b as KritzelImageTool, e as defineCustomElement$e } from './p-jGaWxggY.js';
4
- import { b as KritzelBrushTool, c as KritzelTextTool, d as KritzelKeyboardHelper } from './p-C9-70hiF.js';
5
- import { d as defineCustomElement$n } from './p-V4ui5aWj.js';
6
- import { d as defineCustomElement$m } from './p-5CJxFNEE.js';
7
- import { d as defineCustomElement$l } from './p-BAPUTr3K.js';
8
- import { d as defineCustomElement$k } from './p-BU2q3PRS.js';
9
- import { d as defineCustomElement$j } from './p-Cb1IUD_g.js';
10
- import { d as defineCustomElement$i } from './p-Crni2OI4.js';
11
- import { d as defineCustomElement$h } from './p-D_Uh-xv_.js';
12
- import { d as defineCustomElement$g } from './p-DtmZW6eP.js';
13
- import { d as defineCustomElement$f } from './p-BvlGgLAQ.js';
14
- import { d as defineCustomElement$d } from './p-BZ-j_4CK.js';
15
- import { d as defineCustomElement$c } from './p-_ntxNi8v.js';
16
- import { d as defineCustomElement$b } from './p-BcQTDgzV.js';
17
- import { b as defineCustomElement$8, d as defineCustomElement$9 } from './p-C-DqsDXz.js';
18
- import { d as defineCustomElement$7 } from './p-jpGLgpoq.js';
19
- import { d as defineCustomElement$6 } from './p-CaPdvVd4.js';
20
- import { d as defineCustomElement$5 } from './p-BGccckxP.js';
21
- import { d as defineCustomElement$4 } from './p-26poIWa_.js';
22
- import { d as defineCustomElement$3 } from './p-fyfT6A5K.js';
23
- import { d as defineCustomElement$2 } from './p-BcQWRzsB.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-BYanlgdq.js';
2
+ import { a as KritzelIconRegistry, d as defineCustomElement$a } from './p-p1Jkec_q.js';
3
+ import { A as ABSOLUTE_SCALE_MAX, f as ABSOLUTE_SCALE_MIN, c as KritzelSelectionTool, a as KritzelEraserTool, b as KritzelImageTool, e as defineCustomElement$e } from './p-BuewJQNl.js';
4
+ import { b as KritzelBrushTool, c as KritzelTextTool, d as KritzelKeyboardHelper } from './p-DHSEK3rF.js';
5
+ import { d as defineCustomElement$n } from './p-rIRXQdie.js';
6
+ import { d as defineCustomElement$m } from './p-BB0_-X42.js';
7
+ import { d as defineCustomElement$l } from './p-DMrtdhBD.js';
8
+ import { d as defineCustomElement$k } from './p-B1BLgWL1.js';
9
+ import { d as defineCustomElement$j } from './p-t4NIsuX9.js';
10
+ import { d as defineCustomElement$i } from './p-CHxPWeZd.js';
11
+ import { d as defineCustomElement$h } from './p-BB5R2k1o.js';
12
+ import { d as defineCustomElement$g } from './p-BubxwvMA.js';
13
+ import { d as defineCustomElement$f } from './p-trncBp_6.js';
14
+ import { d as defineCustomElement$d } from './p-BhiYvSBc.js';
15
+ import { d as defineCustomElement$c } from './p-BexTdWaX.js';
16
+ import { d as defineCustomElement$b } from './p-yZ48g7-u.js';
17
+ import { b as defineCustomElement$8, d as defineCustomElement$9 } from './p-BeljsQ-8.js';
18
+ import { d as defineCustomElement$7 } from './p-DxTu1aoJ.js';
19
+ import { d as defineCustomElement$6 } from './p-BPz_H-EG.js';
20
+ import { d as defineCustomElement$5 } from './p-CMJ3P0Vw.js';
21
+ import { d as defineCustomElement$4 } from './p-BrBQUN0Q.js';
22
+ import { d as defineCustomElement$3 } from './p-BgmKrd5Z.js';
23
+ import { d as defineCustomElement$2 } from './p-CGmS8wnN.js';
24
24
 
25
25
  const DEFAULT_BRUSH_CONFIG = {
26
26
  type: 'pen',
@@ -123,94 +123,97 @@ const KritzelEditor$1 = /*@__PURE__*/ proxyCustomElement(class KritzelEditor ext
123
123
  this.__registerHost();
124
124
  }
125
125
  this.isReady = createEvent(this, "isReady");
126
- this.scaleMax = ABSOLUTE_SCALE_MAX;
127
- this.scaleMin = ABSOLUTE_SCALE_MIN;
128
- this.controls = [
129
- {
130
- name: 'selection',
131
- type: 'tool',
132
- tool: KritzelSelectionTool,
133
- icon: 'cursor',
134
- },
135
- {
136
- name: 'brush',
137
- type: 'tool',
138
- tool: KritzelBrushTool,
139
- icon: 'pen',
140
- isDefault: true,
141
- config: DEFAULT_BRUSH_CONFIG,
142
- },
143
- {
144
- name: 'eraser',
145
- type: 'tool',
146
- tool: KritzelEraserTool,
147
- icon: 'eraser',
148
- },
149
- {
150
- name: 'text',
151
- type: 'tool',
152
- tool: KritzelTextTool,
153
- icon: 'type',
154
- config: DEFAULT_TEXT_CONFIG,
155
- },
156
- {
157
- name: 'image',
158
- type: 'tool',
159
- tool: KritzelImageTool,
160
- icon: 'image',
161
- },
162
- {
163
- name: 'divider',
164
- type: 'divider',
165
- },
166
- {
167
- name: 'config',
168
- type: 'config',
169
- },
170
- ];
171
- this.globalContextMenuItems = [
172
- {
173
- label: 'Paste',
174
- icon: 'paste',
175
- disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,
176
- action: menu => this.engineRef.paste(menu.x, menu.y),
177
- },
178
- { label: 'Select All', icon: 'select-all', action: () => this.selectAllObjectsInViewport() },
179
- ];
180
- this.objectContextMenuItems = [
181
- {
182
- label: 'Edit',
183
- icon: 'pen',
184
- visible: (_, objects) => objects.length === 1 && objects[0].isEditable,
185
- action: (_, objects) => {
186
- if (objects.length === 1) {
187
- const object = objects[0];
188
- if (object.isEditable) {
189
- object.edit();
190
- }
126
+ }
127
+ scaleMax = ABSOLUTE_SCALE_MAX;
128
+ scaleMin = ABSOLUTE_SCALE_MIN;
129
+ controls = [
130
+ {
131
+ name: 'selection',
132
+ type: 'tool',
133
+ tool: KritzelSelectionTool,
134
+ icon: 'cursor',
135
+ },
136
+ {
137
+ name: 'brush',
138
+ type: 'tool',
139
+ tool: KritzelBrushTool,
140
+ icon: 'pen',
141
+ isDefault: true,
142
+ config: DEFAULT_BRUSH_CONFIG,
143
+ },
144
+ {
145
+ name: 'eraser',
146
+ type: 'tool',
147
+ tool: KritzelEraserTool,
148
+ icon: 'eraser',
149
+ },
150
+ {
151
+ name: 'text',
152
+ type: 'tool',
153
+ tool: KritzelTextTool,
154
+ icon: 'type',
155
+ config: DEFAULT_TEXT_CONFIG,
156
+ },
157
+ {
158
+ name: 'image',
159
+ type: 'tool',
160
+ tool: KritzelImageTool,
161
+ icon: 'image',
162
+ },
163
+ {
164
+ name: 'divider',
165
+ type: 'divider',
166
+ },
167
+ {
168
+ name: 'config',
169
+ type: 'config',
170
+ },
171
+ ];
172
+ globalContextMenuItems = [
173
+ {
174
+ label: 'Paste',
175
+ icon: 'paste',
176
+ disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,
177
+ action: menu => this.engineRef.paste(menu.x, menu.y),
178
+ },
179
+ { label: 'Select All', icon: 'select-all', action: () => this.selectAllObjectsInViewport() },
180
+ ];
181
+ objectContextMenuItems = [
182
+ {
183
+ label: 'Edit',
184
+ icon: 'pen',
185
+ visible: (_, objects) => objects.length === 1 && objects[0].isEditable,
186
+ action: (_, objects) => {
187
+ if (objects.length === 1) {
188
+ const object = objects[0];
189
+ if (object.isEditable) {
190
+ object.edit();
191
191
  }
192
- },
193
- },
194
- { label: 'Copy', icon: 'copy', action: () => this.engineRef.copy() },
195
- {
196
- label: 'Paste',
197
- icon: 'paste',
198
- disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,
199
- action: (menu, _) => this.engineRef.paste(menu.x, menu.y),
192
+ }
200
193
  },
201
- { label: 'Delete', icon: 'delete', action: () => this.engineRef.delete() },
202
- { label: 'Bring to Front', icon: 'bring-to-front', action: () => this.engineRef.bringToFront() },
203
- { label: 'Send to Back', icon: 'send-to-back', action: () => this.engineRef.sendToBack() },
204
- ];
205
- this.customSvgIcons = {};
206
- this.isControlsVisible = true;
207
- this.isUtilityPanelVisible = true;
208
- this.isEngineReady = false;
209
- this.isControlsReady = false;
210
- this.isWorkspaceManagerReady = false;
211
- this.workspaces = [];
212
- this.isVirtualKeyboardOpen = false;
213
- }
194
+ },
195
+ { label: 'Copy', icon: 'copy', action: () => this.engineRef.copy() },
196
+ {
197
+ label: 'Paste',
198
+ icon: 'paste',
199
+ disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,
200
+ action: (menu, _) => this.engineRef.paste(menu.x, menu.y),
201
+ },
202
+ { label: 'Delete', icon: 'delete', action: () => this.engineRef.delete() },
203
+ { label: 'Bring to Front', icon: 'bring-to-front', action: () => this.engineRef.bringToFront() },
204
+ { label: 'Send to Back', icon: 'send-to-back', action: () => this.engineRef.sendToBack() },
205
+ ];
206
+ customSvgIcons = {};
207
+ isControlsVisible = true;
208
+ isUtilityPanelVisible = true;
209
+ isReady;
210
+ get host() { return this; }
211
+ isEngineReady = false;
212
+ isControlsReady = false;
213
+ isWorkspaceManagerReady = false;
214
+ workspaces = [];
215
+ activeWorkspace;
216
+ isVirtualKeyboardOpen = false;
214
217
  onIsEngineReady(newValue) {
215
218
  if (newValue && this.isControlsReady) {
216
219
  this.checkIsReady();
@@ -253,6 +256,9 @@ const KritzelEditor$1 = /*@__PURE__*/ proxyCustomElement(class KritzelEditor ext
253
256
  event.preventDefault();
254
257
  }
255
258
  }
259
+ engineRef;
260
+ controlsRef;
261
+ splitButtonRef;
256
262
  componentDidLoad() {
257
263
  this.registerCustomSvgIcons();
258
264
  this.listenForMobileKeyboard();
@@ -286,7 +292,6 @@ const KritzelEditor$1 = /*@__PURE__*/ proxyCustomElement(class KritzelEditor ext
286
292
  render() {
287
293
  return (h(Host, { key: '0f51215c0ede25bf8edfbf1420fc8d6c64175b8a' }, h("kritzel-workspace-manager", { key: '14affeb4c161a401d9cca32d0681d576b67b5199', workspaces: this.workspaces, activeWorkspace: this.activeWorkspace, onWorkspaceChange: event => this.activeWorkspace = event.detail, onIsWorkspaceManagerReady: () => (this.isWorkspaceManagerReady = true) }), h("kritzel-engine", { key: '0e96fdbfbe412ea0a0bae49c693190b71e78f112', ref: el => (this.engineRef = el), workspace: this.activeWorkspace, scaleMax: this.scaleMax, scaleMin: this.scaleMin, globalContextMenuItems: this.globalContextMenuItems, objectContextMenuItems: this.objectContextMenuItems, onIsEngineReady: event => this.onEngineReady(event), onWorkspacesChange: event => this.workspaces = event.detail }), h("kritzel-controls", { key: '6098132ddf95b5dd4b1a1a6492b31f0ef43693c4', style: { display: this.isVirtualKeyboardOpen ? 'none' : (this.isControlsVisible ? 'flex' : 'none') }, ref: el => (this.controlsRef = el), controls: this.controls, isUtilityPanelVisible: this.isUtilityPanelVisible, onIsControlsReady: () => (this.isControlsReady = true) })));
288
294
  }
289
- get host() { return this; }
290
295
  static get watchers() { return {
291
296
  "isEngineReady": ["onIsEngineReady"],
292
297
  "isControlsReady": ["onIsControlsReady"]
@@ -1 +1 @@
1
- {"file":"kritzel-editor.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAEa,MAAA,oBAAoB,GAA2B;AAC1D,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,QAAQ,EAAE;AACR,QAAA,GAAG,EAAE;YACH,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;AACV,SAAA;AACD,QAAA,WAAW,EAAE;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;YACX,WAAW;AACZ,SAAA;AACF,KAAA;;;ACzDU,MAAA,mBAAmB,GAA0B;AACxD,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,OAAO,EAAE;QACP,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;AACV,KAAA;;;AC/BH,MAAM,gBAAgB,GAAG,+eAA+e;;MCqB3fA,eAAa,iBAAAC,kBAAA,CAAA,MAAA,aAAA,SAAAC,CAAA,CAAA;AAL1B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAOE,QAAA,IAAQ,CAAA,QAAA,GAAW,kBAAkB;AAGrC,QAAA,IAAQ,CAAA,QAAA,GAAW,kBAAkB;QAGrC,IAAA,CAAA,QAAQ,GAA4B;AAClC,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,MAAM,EAAE,oBAAoB;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,MAAM,EAAE,mBAAmB;AAC5B,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;QAGD,IAAA,CAAA,sBAAsB,GAAsB;AAC1C,YAAA;AACE,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,QAAQ,EAAE,YAAY,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,MAAM,KAAK,CAAC;AAC5E,gBAAA,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACrD,aAAA;AACD,YAAA,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,0BAA0B,EAAE,EAAE;SAC7F;QAGD,IAAA,CAAA,sBAAsB,GAAsB;AAC1C,YAAA;AACE,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU;AACtE,gBAAA,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,KAAI;AACrB,oBAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,wBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;AACzB,wBAAA,IAAI,MAAM,CAAC,UAAU,EAAE;4BACrB,MAAM,CAAC,IAAI,EAAE;;;iBAGlB;AACF,aAAA;AACD,YAAA,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;AACpE,YAAA;AACE,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,QAAQ,EAAE,YAAY,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,MAAM,KAAK,CAAC;gBAC5E,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1D,aAAA;AACD,YAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE;AAC1E,YAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE;AAChG,YAAA,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE;SAC3F;AAGD,QAAA,IAAc,CAAA,cAAA,GAA2B,EAAE;AAG3C,QAAA,IAAiB,CAAA,iBAAA,GAAY,IAAI;AAGjC,QAAA,IAAqB,CAAA,qBAAA,GAAY,IAAI;AASrC,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK;AAG9B,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK;AAGhC,QAAA,IAAuB,CAAA,uBAAA,GAAY,KAAK;AAGxC,QAAA,IAAU,CAAA,UAAA,GAAuB,EAAE;AAMnC,QAAA,IAAqB,CAAA,qBAAA,GAAY,KAAK;AA+IvC;AA5IC,IAAA,eAAe,CAAC,QAAiB,EAAA;AAC/B,QAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;YACpC,IAAI,CAAC,YAAY,EAAE;;;AAKvB,IAAA,iBAAiB,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;YAClC,IAAI,CAAC,YAAY,EAAE;;;IAKvB,MAAM,aAAa,CAA8B,EAAU,EAAA;QACzD,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;;IAIzC,MAAM,SAAS,CAA8B,MAAS,EAAA;QACpD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;;AAIzC,IAAA,MAAM,YAAY,CAA8B,MAAS,EAAE,iBAA6B,EAAA;QACtF,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC;;IAI/D,MAAM,YAAY,CAA8B,MAAS,EAAA;QACvD,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;;AAI5C,IAAA,MAAM,kBAAkB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE;;IAI5C,MAAM,aAAa,CAAC,OAA4B,EAAA;QAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;;AAI9C,IAAA,MAAM,0BAA0B,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE;;AAIpD,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;;IAIjC,MAAM,sBAAsB,CAAC,MAAyB,EAAA;QACpD,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC;;AAItD,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE;;;IAU1B,gBAAgB,GAAA;QACd,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,uBAAuB,EAAE;;AAGhC,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,MAAM,cAAc,CAAC,WAAW,CAAC,gBAAgB,CAAC;AAClD,QAAA,MAAM,cAAc,CAAC,WAAW,CAAC,2BAA2B,CAAC;AAC7D,QAAA,MAAM,cAAc,CAAC,WAAW,CAAC,kBAAkB,CAAC;AACpD,QAAA,MAAM,cAAc,CAAC,WAAW,CAAC,gBAAgB,CAAC;AAElD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACjF;;QAGF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG9B,IAAA,aAAa,CAAC,KAAsC,EAAA;AAClD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QACzB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe;QACnD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU;;IAGnC,sBAAsB,GAAA;AAC5B,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAC7D,YAAA,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;;;IAInC,uBAAuB,GAAA;AAC7B,QAAA,qBAAqB,CAAC,wBAAwB,CAAC,MAAM,IAAG;AACtD,YAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC;AAC1D,YAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM;AACrC,SAAC,CAAC;;IAIJ,MAAM,GAAA;QACJ,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACF,CAAA,CAAA,2BAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,iBAAiB,EAAE,KAAK,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,EAC/D,yBAAyB,EAAE,OAAO,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,EAC3C,CAAA,EAE7B,CAAA,CAAA,gBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,EAChC,SAAS,EAAE,IAAI,CAAC,eAAe,EAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EACnD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EACnD,eAAe,EAAE,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EACnD,kBAAkB,EAAE,KAAK,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,EAC3C,CAAA,EAElB,CAAA,CAAA,kBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM,IAAI,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,EACpG,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,EAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,iBAAiB,EAAE,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,EACpC,CAAA,CACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["KritzelEditor","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/configs/default-brush-tool.config.ts","src/configs/default-text-tool.config.ts","src/components/core/kritzel-editor/kritzel-editor.css?tag=kritzel-editor","src/components/core/kritzel-editor/kritzel-editor.tsx"],"sourcesContent":["import { KritzelBrushToolConfig } from '../interfaces/toolbar-control.interface';\r\n\r\nexport const DEFAULT_BRUSH_CONFIG: KritzelBrushToolConfig = {\r\n type: 'pen',\r\n color: '#000000',\r\n size: 16,\r\n palettes: {\r\n pen: [\r\n '#000000',\r\n '#ff5252',\r\n '#ffbc00',\r\n '#00c853',\r\n '#0000FF',\r\n '#d500f9',\r\n '#fafafa',\r\n '#a52714',\r\n '#ee8100',\r\n '#558b2f',\r\n '#01579b',\r\n '#8e24aa',\r\n '#90a4ae',\r\n '#ff4081',\r\n '#ff6e40',\r\n '#aeea00',\r\n '#304ffe',\r\n '#7c4dff',\r\n '#cfd8dc',\r\n '#f8bbd0',\r\n '#ffccbc',\r\n '#f0f4c3',\r\n '#9fa8da',\r\n '#d1c4e9',\r\n ],\r\n highlighter: [\r\n '#0000006e',\r\n '#ff52526e',\r\n '#ffbb006e',\r\n '#00c8536e',\r\n '#0000FF6e',\r\n '#d500f96e',\r\n '#fafafa6e',\r\n '#a527146e',\r\n '#ee81006e',\r\n '#558b2f6e',\r\n '#01579b6e',\r\n '#8e24aa6e',\r\n '#90a4ae6e',\r\n '#ff40816e',\r\n '#ff6e406e',\r\n '#aeea006e',\r\n '#304ffe6e',\r\n '#7c4dff6e',\r\n '#cfd8dc6e',\r\n '#f8bbd06e',\r\n '#ffccbc6e',\r\n '#f0f4c36e',\r\n '#9fa8da6e',\r\n '#d1c4e96e',\r\n ],\r\n },\r\n};\r\n\r\n\r\n","import { KritzelTextToolConfig } from \"../interfaces/toolbar-control.interface\";\r\n\r\nexport const DEFAULT_TEXT_CONFIG: KritzelTextToolConfig = {\r\n color: '#000000',\r\n size: 8,\r\n fontFamily: 'Arial',\r\n palette: [\r\n '#000000',\r\n '#ff5252',\r\n '#ffbc00',\r\n '#00c853',\r\n '#0000FF',\r\n '#d500f9',\r\n '#fafafa',\r\n '#a52714',\r\n '#ee8100',\r\n '#558b2f',\r\n '#01579b',\r\n '#8e24aa',\r\n '#90a4ae',\r\n '#ff4081',\r\n '#ff6e40',\r\n '#aeea00',\r\n '#304ffe',\r\n '#7c4dff',\r\n '#cfd8dc',\r\n '#f8bbd0',\r\n '#ffccbc',\r\n '#f0f4c3',\r\n '#9fa8da',\r\n '#d1c4e9',\r\n ],\r\n};","kritzel-editor{\r\n display: flex;\r\n margin: 0;\r\n position: relative;\r\n overflow: hidden;\r\n width: 100%;\r\n height: 100%;\r\n align-items: center;\r\n justify-content: center;\r\n touch-action: manipulation;\r\n user-select: none;\r\n -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none; \r\n}\r\n\r\nkritzel-workspace-manager {\r\n position: absolute;\r\n top: 14px;\r\n left: 14px;\r\n}\r\n\r\nkritzel-split-button{\r\n position: absolute;\r\n top: 14px;\r\n left: 14px;\r\n z-index: 1;\r\n}\r\n\r\nkritzel-controls {\r\n position: absolute;\r\n bottom: 28px;\r\n}","import { Component, Host, Listen, Prop, Element, h, Method, Event, State, EventEmitter, Watch } from '@stencil/core';\r\nimport { KritzelIconRegistry } from '../../../classes/registries/icon-registry.class';\r\nimport { KritzelToolbarControl } from '../../../interfaces/toolbar-control.interface';\r\nimport { KritzelBaseObject } from '../../../classes/objects/base-object.class';\r\nimport { KritzelSelectionTool } from '../../../classes/tools/selection-tool.class';\r\nimport { KritzelEraserTool } from '../../../classes/tools/eraser-tool.class';\r\nimport { KritzelImageTool } from '../../../classes/tools/image-tool.class';\r\nimport { KritzelBrushTool } from '../../../classes/tools/brush-tool.class';\r\nimport { KritzelTextTool } from '../../../classes/tools/text-tool.class';\r\nimport { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';\r\nimport { DEFAULT_BRUSH_CONFIG } from '../../../configs/default-brush-tool.config';\r\nimport { DEFAULT_TEXT_CONFIG } from '../../../configs/default-text-tool.config';\r\nimport { ABSOLUTE_SCALE_MAX, ABSOLUTE_SCALE_MIN } from '../../../constants/engine.constants';\r\nimport { KritzelEngineState } from '../../../interfaces/engine-state.interface';\r\nimport { KritzelWorkspace } from '../../../classes/workspace.class';\r\nimport { KritzelKeyboardHelper } from '../../../helpers/keyboard.helper';\r\n@Component({\r\n tag: 'kritzel-editor',\r\n styleUrl: 'kritzel-editor.css',\r\n shadow: false,\r\n})\r\nexport class KritzelEditor {\r\n @Prop()\r\n scaleMax: number = ABSOLUTE_SCALE_MAX;\r\n\r\n @Prop()\r\n scaleMin: number = ABSOLUTE_SCALE_MIN;\r\n\r\n @Prop()\r\n controls: KritzelToolbarControl[] = [\r\n {\r\n name: 'selection',\r\n type: 'tool',\r\n tool: KritzelSelectionTool,\r\n icon: 'cursor',\r\n },\r\n {\r\n name: 'brush',\r\n type: 'tool',\r\n tool: KritzelBrushTool,\r\n icon: 'pen',\r\n isDefault: true,\r\n config: DEFAULT_BRUSH_CONFIG,\r\n },\r\n {\r\n name: 'eraser',\r\n type: 'tool',\r\n tool: KritzelEraserTool,\r\n icon: 'eraser',\r\n },\r\n {\r\n name: 'text',\r\n type: 'tool',\r\n tool: KritzelTextTool,\r\n icon: 'type',\r\n config: DEFAULT_TEXT_CONFIG,\r\n },\r\n {\r\n name: 'image',\r\n type: 'tool',\r\n tool: KritzelImageTool,\r\n icon: 'image',\r\n },\r\n {\r\n name: 'divider',\r\n type: 'divider',\r\n },\r\n {\r\n name: 'config',\r\n type: 'config',\r\n },\r\n ];\r\n\r\n @Prop()\r\n globalContextMenuItems: ContextMenuItem[] = [\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,\r\n action: menu => this.engineRef.paste(menu.x, menu.y),\r\n },\r\n { label: 'Select All', icon: 'select-all', action: () => this.selectAllObjectsInViewport() },\r\n ];\r\n\r\n @Prop()\r\n objectContextMenuItems: ContextMenuItem[] = [\r\n {\r\n label: 'Edit',\r\n icon: 'pen',\r\n visible: (_, objects) => objects.length === 1 && objects[0].isEditable,\r\n action: (_, objects) => {\r\n if (objects.length === 1) {\r\n const object = objects[0];\r\n if (object.isEditable) {\r\n object.edit();\r\n }\r\n }\r\n },\r\n },\r\n { label: 'Copy', icon: 'copy', action: () => this.engineRef.copy() },\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,\r\n action: (menu, _) => this.engineRef.paste(menu.x, menu.y),\r\n },\r\n { label: 'Delete', icon: 'delete', action: () => this.engineRef.delete() },\r\n { label: 'Bring to Front', icon: 'bring-to-front', action: () => this.engineRef.bringToFront() },\r\n { label: 'Send to Back', icon: 'send-to-back', action: () => this.engineRef.sendToBack() },\r\n ];\r\n\r\n @Prop()\r\n customSvgIcons: Record<string, string> = {};\r\n\r\n @Prop()\r\n isControlsVisible: boolean = true;\r\n\r\n @Prop()\r\n isUtilityPanelVisible: boolean = true;\r\n\r\n @Event()\r\n isReady: EventEmitter<HTMLElement>;\r\n\r\n @Element()\r\n host!: HTMLElement;\r\n\r\n @State()\r\n isEngineReady: boolean = false;\r\n\r\n @State()\r\n isControlsReady: boolean = false;\r\n\r\n @State()\r\n isWorkspaceManagerReady: boolean = false;\r\n\r\n @State()\r\n workspaces: KritzelWorkspace[] = [];\r\n\r\n @State()\r\n activeWorkspace: KritzelWorkspace;\r\n\r\n @State()\r\n isVirtualKeyboardOpen: boolean = false;\r\n\r\n @Watch('isEngineReady')\r\n onIsEngineReady(newValue: boolean) {\r\n if (newValue && this.isControlsReady) {\r\n this.checkIsReady();\r\n }\r\n }\r\n\r\n @Watch('isControlsReady')\r\n onIsControlsReady(newValue: boolean) {\r\n if (newValue && this.isEngineReady) {\r\n this.checkIsReady();\r\n }\r\n }\r\n\r\n @Method()\r\n async getObjectById<T extends KritzelBaseObject>(id: string): Promise<T | null> {\r\n return this.engineRef.getObjectById(id);\r\n }\r\n\r\n @Method()\r\n async addObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n return this.engineRef.addObject(object);\r\n }\r\n\r\n @Method()\r\n async updateObject<T extends KritzelBaseObject>(object: T, updatedProperties: Partial<T>): Promise<T | null> {\r\n return this.engineRef.updateObject(object, updatedProperties);\r\n }\r\n\r\n @Method()\r\n async removeObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n return this.engineRef.removeObject(object);\r\n }\r\n\r\n @Method()\r\n async getSelectedObjects(): Promise<KritzelBaseObject[]> {\r\n return this.engineRef.getSelectedObjects();\r\n }\r\n\r\n @Method()\r\n async selectObjects(objects: KritzelBaseObject[]) {\r\n return this.engineRef.selectObjects(objects);\r\n }\r\n\r\n @Method()\r\n async selectAllObjectsInViewport() {\r\n return this.engineRef.selectAllObjectsInViewport();\r\n }\r\n\r\n @Method()\r\n async clearSelection() {\r\n this.engineRef.clearSelection();\r\n }\r\n\r\n @Method()\r\n async centerObjectInViewport(object: KritzelBaseObject) {\r\n return this.engineRef.centerObjectInViewport(object);\r\n }\r\n\r\n @Listen('dblclick', { passive: false })\r\n handleTouchStart(event: MouseEvent) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n engineRef!: HTMLKritzelEngineElement;\r\n\r\n controlsRef!: HTMLKritzelControlsElement;\r\n\r\n splitButtonRef!: HTMLKritzelSplitButtonElement;\r\n\r\n componentDidLoad() {\r\n this.registerCustomSvgIcons();\r\n this.listenForMobileKeyboard();\r\n }\r\n\r\n async checkIsReady() {\r\n await customElements.whenDefined('kritzel-editor');\r\n await customElements.whenDefined('kritzel-workspace-manager');\r\n await customElements.whenDefined('kritzel-controls');\r\n await customElements.whenDefined('kritzel-engine');\r\n\r\n if (!this.isEngineReady || !this.isControlsReady || !this.isWorkspaceManagerReady) {\r\n return;\r\n }\r\n\r\n this.isReady.emit(this.host);\r\n }\r\n\r\n onEngineReady(event: CustomEvent<KritzelEngineState>) {\r\n this.isEngineReady = true;\r\n this.activeWorkspace = event.detail.activeWorkspace;\r\n this.workspaces = event.detail.workspaces;\r\n }\r\n\r\n private registerCustomSvgIcons() {\r\n for (const [name, svg] of Object.entries(this.customSvgIcons)) {\r\n KritzelIconRegistry.register(name, svg);\r\n }\r\n }\r\n\r\n private listenForMobileKeyboard() {\r\n KritzelKeyboardHelper.onKeyboardVisibleChanged(isOpen => {\r\n console.log('Mobile keyboard visibility changed:', isOpen);\r\n this.isVirtualKeyboardOpen = isOpen;\r\n });\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <kritzel-workspace-manager\r\n workspaces={this.workspaces}\r\n activeWorkspace={this.activeWorkspace}\r\n onWorkspaceChange={event => this.activeWorkspace = event.detail}\r\n onIsWorkspaceManagerReady={() => (this.isWorkspaceManagerReady = true)}\r\n ></kritzel-workspace-manager>\r\n \r\n <kritzel-engine\r\n ref={el => (this.engineRef = el)}\r\n workspace={this.activeWorkspace}\r\n scaleMax={this.scaleMax}\r\n scaleMin={this.scaleMin}\r\n globalContextMenuItems={this.globalContextMenuItems}\r\n objectContextMenuItems={this.objectContextMenuItems}\r\n onIsEngineReady={event => this.onEngineReady(event)}\r\n onWorkspacesChange={event => this.workspaces = event.detail}\r\n ></kritzel-engine>\r\n\r\n <kritzel-controls\r\n style={{ display: this.isVirtualKeyboardOpen ? 'none' : (this.isControlsVisible ? 'flex' : 'none') }}\r\n ref={el => (this.controlsRef = el)}\r\n controls={this.controls}\r\n isUtilityPanelVisible={this.isUtilityPanelVisible}\r\n onIsControlsReady={() => (this.isControlsReady = true)}\r\n ></kritzel-controls>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"kritzel-editor.js","mappings":"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","names":["KritzelEditor","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/configs/default-brush-tool.config.ts","src/configs/default-text-tool.config.ts","src/components/core/kritzel-editor/kritzel-editor.css?tag=kritzel-editor","src/components/core/kritzel-editor/kritzel-editor.tsx"],"sourcesContent":["import { KritzelBrushToolConfig } from '../interfaces/toolbar-control.interface';\r\n\r\nexport const DEFAULT_BRUSH_CONFIG: KritzelBrushToolConfig = {\r\n type: 'pen',\r\n color: '#000000',\r\n size: 16,\r\n palettes: {\r\n pen: [\r\n '#000000',\r\n '#ff5252',\r\n '#ffbc00',\r\n '#00c853',\r\n '#0000FF',\r\n '#d500f9',\r\n '#fafafa',\r\n '#a52714',\r\n '#ee8100',\r\n '#558b2f',\r\n '#01579b',\r\n '#8e24aa',\r\n '#90a4ae',\r\n '#ff4081',\r\n '#ff6e40',\r\n '#aeea00',\r\n '#304ffe',\r\n '#7c4dff',\r\n '#cfd8dc',\r\n '#f8bbd0',\r\n '#ffccbc',\r\n '#f0f4c3',\r\n '#9fa8da',\r\n '#d1c4e9',\r\n ],\r\n highlighter: [\r\n '#0000006e',\r\n '#ff52526e',\r\n '#ffbb006e',\r\n '#00c8536e',\r\n '#0000FF6e',\r\n '#d500f96e',\r\n '#fafafa6e',\r\n '#a527146e',\r\n '#ee81006e',\r\n '#558b2f6e',\r\n '#01579b6e',\r\n '#8e24aa6e',\r\n '#90a4ae6e',\r\n '#ff40816e',\r\n '#ff6e406e',\r\n '#aeea006e',\r\n '#304ffe6e',\r\n '#7c4dff6e',\r\n '#cfd8dc6e',\r\n '#f8bbd06e',\r\n '#ffccbc6e',\r\n '#f0f4c36e',\r\n '#9fa8da6e',\r\n '#d1c4e96e',\r\n ],\r\n },\r\n};\r\n\r\n\r\n","import { KritzelTextToolConfig } from \"../interfaces/toolbar-control.interface\";\r\n\r\nexport const DEFAULT_TEXT_CONFIG: KritzelTextToolConfig = {\r\n color: '#000000',\r\n size: 8,\r\n fontFamily: 'Arial',\r\n palette: [\r\n '#000000',\r\n '#ff5252',\r\n '#ffbc00',\r\n '#00c853',\r\n '#0000FF',\r\n '#d500f9',\r\n '#fafafa',\r\n '#a52714',\r\n '#ee8100',\r\n '#558b2f',\r\n '#01579b',\r\n '#8e24aa',\r\n '#90a4ae',\r\n '#ff4081',\r\n '#ff6e40',\r\n '#aeea00',\r\n '#304ffe',\r\n '#7c4dff',\r\n '#cfd8dc',\r\n '#f8bbd0',\r\n '#ffccbc',\r\n '#f0f4c3',\r\n '#9fa8da',\r\n '#d1c4e9',\r\n ],\r\n};","kritzel-editor{\r\n display: flex;\r\n margin: 0;\r\n position: relative;\r\n overflow: hidden;\r\n width: 100%;\r\n height: 100%;\r\n align-items: center;\r\n justify-content: center;\r\n touch-action: manipulation;\r\n user-select: none;\r\n -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none; \r\n}\r\n\r\nkritzel-workspace-manager {\r\n position: absolute;\r\n top: 14px;\r\n left: 14px;\r\n}\r\n\r\nkritzel-split-button{\r\n position: absolute;\r\n top: 14px;\r\n left: 14px;\r\n z-index: 1;\r\n}\r\n\r\nkritzel-controls {\r\n position: absolute;\r\n bottom: 28px;\r\n}","import { Component, Host, Listen, Prop, Element, h, Method, Event, State, EventEmitter, Watch } from '@stencil/core';\r\nimport { KritzelIconRegistry } from '../../../classes/registries/icon-registry.class';\r\nimport { KritzelToolbarControl } from '../../../interfaces/toolbar-control.interface';\r\nimport { KritzelBaseObject } from '../../../classes/objects/base-object.class';\r\nimport { KritzelSelectionTool } from '../../../classes/tools/selection-tool.class';\r\nimport { KritzelEraserTool } from '../../../classes/tools/eraser-tool.class';\r\nimport { KritzelImageTool } from '../../../classes/tools/image-tool.class';\r\nimport { KritzelBrushTool } from '../../../classes/tools/brush-tool.class';\r\nimport { KritzelTextTool } from '../../../classes/tools/text-tool.class';\r\nimport { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';\r\nimport { DEFAULT_BRUSH_CONFIG } from '../../../configs/default-brush-tool.config';\r\nimport { DEFAULT_TEXT_CONFIG } from '../../../configs/default-text-tool.config';\r\nimport { ABSOLUTE_SCALE_MAX, ABSOLUTE_SCALE_MIN } from '../../../constants/engine.constants';\r\nimport { KritzelEngineState } from '../../../interfaces/engine-state.interface';\r\nimport { KritzelWorkspace } from '../../../classes/workspace.class';\r\nimport { KritzelKeyboardHelper } from '../../../helpers/keyboard.helper';\r\n@Component({\r\n tag: 'kritzel-editor',\r\n styleUrl: 'kritzel-editor.css',\r\n shadow: false,\r\n})\r\nexport class KritzelEditor {\r\n @Prop()\r\n scaleMax: number = ABSOLUTE_SCALE_MAX;\r\n\r\n @Prop()\r\n scaleMin: number = ABSOLUTE_SCALE_MIN;\r\n\r\n @Prop()\r\n controls: KritzelToolbarControl[] = [\r\n {\r\n name: 'selection',\r\n type: 'tool',\r\n tool: KritzelSelectionTool,\r\n icon: 'cursor',\r\n },\r\n {\r\n name: 'brush',\r\n type: 'tool',\r\n tool: KritzelBrushTool,\r\n icon: 'pen',\r\n isDefault: true,\r\n config: DEFAULT_BRUSH_CONFIG,\r\n },\r\n {\r\n name: 'eraser',\r\n type: 'tool',\r\n tool: KritzelEraserTool,\r\n icon: 'eraser',\r\n },\r\n {\r\n name: 'text',\r\n type: 'tool',\r\n tool: KritzelTextTool,\r\n icon: 'type',\r\n config: DEFAULT_TEXT_CONFIG,\r\n },\r\n {\r\n name: 'image',\r\n type: 'tool',\r\n tool: KritzelImageTool,\r\n icon: 'image',\r\n },\r\n {\r\n name: 'divider',\r\n type: 'divider',\r\n },\r\n {\r\n name: 'config',\r\n type: 'config',\r\n },\r\n ];\r\n\r\n @Prop()\r\n globalContextMenuItems: ContextMenuItem[] = [\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,\r\n action: menu => this.engineRef.paste(menu.x, menu.y),\r\n },\r\n { label: 'Select All', icon: 'select-all', action: () => this.selectAllObjectsInViewport() },\r\n ];\r\n\r\n @Prop()\r\n objectContextMenuItems: ContextMenuItem[] = [\r\n {\r\n label: 'Edit',\r\n icon: 'pen',\r\n visible: (_, objects) => objects.length === 1 && objects[0].isEditable,\r\n action: (_, objects) => {\r\n if (objects.length === 1) {\r\n const object = objects[0];\r\n if (object.isEditable) {\r\n object.edit();\r\n }\r\n }\r\n },\r\n },\r\n { label: 'Copy', icon: 'copy', action: () => this.engineRef.copy() },\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,\r\n action: (menu, _) => this.engineRef.paste(menu.x, menu.y),\r\n },\r\n { label: 'Delete', icon: 'delete', action: () => this.engineRef.delete() },\r\n { label: 'Bring to Front', icon: 'bring-to-front', action: () => this.engineRef.bringToFront() },\r\n { label: 'Send to Back', icon: 'send-to-back', action: () => this.engineRef.sendToBack() },\r\n ];\r\n\r\n @Prop()\r\n customSvgIcons: Record<string, string> = {};\r\n\r\n @Prop()\r\n isControlsVisible: boolean = true;\r\n\r\n @Prop()\r\n isUtilityPanelVisible: boolean = true;\r\n\r\n @Event()\r\n isReady: EventEmitter<HTMLElement>;\r\n\r\n @Element()\r\n host!: HTMLElement;\r\n\r\n @State()\r\n isEngineReady: boolean = false;\r\n\r\n @State()\r\n isControlsReady: boolean = false;\r\n\r\n @State()\r\n isWorkspaceManagerReady: boolean = false;\r\n\r\n @State()\r\n workspaces: KritzelWorkspace[] = [];\r\n\r\n @State()\r\n activeWorkspace: KritzelWorkspace;\r\n\r\n @State()\r\n isVirtualKeyboardOpen: boolean = false;\r\n\r\n @Watch('isEngineReady')\r\n onIsEngineReady(newValue: boolean) {\r\n if (newValue && this.isControlsReady) {\r\n this.checkIsReady();\r\n }\r\n }\r\n\r\n @Watch('isControlsReady')\r\n onIsControlsReady(newValue: boolean) {\r\n if (newValue && this.isEngineReady) {\r\n this.checkIsReady();\r\n }\r\n }\r\n\r\n @Method()\r\n async getObjectById<T extends KritzelBaseObject>(id: string): Promise<T | null> {\r\n return this.engineRef.getObjectById(id);\r\n }\r\n\r\n @Method()\r\n async addObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n return this.engineRef.addObject(object);\r\n }\r\n\r\n @Method()\r\n async updateObject<T extends KritzelBaseObject>(object: T, updatedProperties: Partial<T>): Promise<T | null> {\r\n return this.engineRef.updateObject(object, updatedProperties);\r\n }\r\n\r\n @Method()\r\n async removeObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n return this.engineRef.removeObject(object);\r\n }\r\n\r\n @Method()\r\n async getSelectedObjects(): Promise<KritzelBaseObject[]> {\r\n return this.engineRef.getSelectedObjects();\r\n }\r\n\r\n @Method()\r\n async selectObjects(objects: KritzelBaseObject[]) {\r\n return this.engineRef.selectObjects(objects);\r\n }\r\n\r\n @Method()\r\n async selectAllObjectsInViewport() {\r\n return this.engineRef.selectAllObjectsInViewport();\r\n }\r\n\r\n @Method()\r\n async clearSelection() {\r\n this.engineRef.clearSelection();\r\n }\r\n\r\n @Method()\r\n async centerObjectInViewport(object: KritzelBaseObject) {\r\n return this.engineRef.centerObjectInViewport(object);\r\n }\r\n\r\n @Listen('dblclick', { passive: false })\r\n handleTouchStart(event: MouseEvent) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n engineRef!: HTMLKritzelEngineElement;\r\n\r\n controlsRef!: HTMLKritzelControlsElement;\r\n\r\n splitButtonRef!: HTMLKritzelSplitButtonElement;\r\n\r\n componentDidLoad() {\r\n this.registerCustomSvgIcons();\r\n this.listenForMobileKeyboard();\r\n }\r\n\r\n async checkIsReady() {\r\n await customElements.whenDefined('kritzel-editor');\r\n await customElements.whenDefined('kritzel-workspace-manager');\r\n await customElements.whenDefined('kritzel-controls');\r\n await customElements.whenDefined('kritzel-engine');\r\n\r\n if (!this.isEngineReady || !this.isControlsReady || !this.isWorkspaceManagerReady) {\r\n return;\r\n }\r\n\r\n this.isReady.emit(this.host);\r\n }\r\n\r\n onEngineReady(event: CustomEvent<KritzelEngineState>) {\r\n this.isEngineReady = true;\r\n this.activeWorkspace = event.detail.activeWorkspace;\r\n this.workspaces = event.detail.workspaces;\r\n }\r\n\r\n private registerCustomSvgIcons() {\r\n for (const [name, svg] of Object.entries(this.customSvgIcons)) {\r\n KritzelIconRegistry.register(name, svg);\r\n }\r\n }\r\n\r\n private listenForMobileKeyboard() {\r\n KritzelKeyboardHelper.onKeyboardVisibleChanged(isOpen => {\r\n console.log('Mobile keyboard visibility changed:', isOpen);\r\n this.isVirtualKeyboardOpen = isOpen;\r\n });\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <kritzel-workspace-manager\r\n workspaces={this.workspaces}\r\n activeWorkspace={this.activeWorkspace}\r\n onWorkspaceChange={event => this.activeWorkspace = event.detail}\r\n onIsWorkspaceManagerReady={() => (this.isWorkspaceManagerReady = true)}\r\n ></kritzel-workspace-manager>\r\n \r\n <kritzel-engine\r\n ref={el => (this.engineRef = el)}\r\n workspace={this.activeWorkspace}\r\n scaleMax={this.scaleMax}\r\n scaleMin={this.scaleMin}\r\n globalContextMenuItems={this.globalContextMenuItems}\r\n objectContextMenuItems={this.objectContextMenuItems}\r\n onIsEngineReady={event => this.onEngineReady(event)}\r\n onWorkspacesChange={event => this.workspaces = event.detail}\r\n ></kritzel-engine>\r\n\r\n <kritzel-controls\r\n style={{ display: this.isVirtualKeyboardOpen ? 'none' : (this.isControlsVisible ? 'flex' : 'none') }}\r\n ref={el => (this.controlsRef = el)}\r\n controls={this.controls}\r\n isUtilityPanelVisible={this.isUtilityPanelVisible}\r\n onIsControlsReady={() => (this.isControlsReady = true)}\r\n ></kritzel-controls>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { d as KritzelEngine$1, e as defineCustomElement$1 } from './p-jGaWxggY.js';
1
+ import { d as KritzelEngine$1, e as defineCustomElement$1 } from './p-BuewJQNl.js';
2
2
 
3
3
  const KritzelEngine = KritzelEngine$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelFontFamily$1, d as defineCustomElement$1 } from './p-_ntxNi8v.js';
1
+ import { K as KritzelFontFamily$1, d as defineCustomElement$1 } from './p-BexTdWaX.js';
2
2
 
3
3
  const KritzelFontFamily = KritzelFontFamily$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelFontSize$1, d as defineCustomElement$1 } from './p-BcQTDgzV.js';
1
+ import { K as KritzelFontSize$1, d as defineCustomElement$1 } from './p-yZ48g7-u.js';
2
2
 
3
3
  const KritzelFontSize = KritzelFontSize$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelFont$1, d as defineCustomElement$1 } from './p-BZ-j_4CK.js';
1
+ import { K as KritzelFont$1, d as defineCustomElement$1 } from './p-BhiYvSBc.js';
2
2
 
3
3
  const KritzelFont = KritzelFont$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelIcon$1, d as defineCustomElement$1 } from './p-BLmFBe2a.js';
1
+ import { K as KritzelIcon$1, d as defineCustomElement$1 } from './p-p1Jkec_q.js';
2
2
 
3
3
  const KritzelIcon = KritzelIcon$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { a as KritzelMenuItem$1, b as defineCustomElement$1 } from './p-C-DqsDXz.js';
1
+ import { a as KritzelMenuItem$1, b as defineCustomElement$1 } from './p-BeljsQ-8.js';
2
2
 
3
3
  const KritzelMenuItem = KritzelMenuItem$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelMenu$1, d as defineCustomElement$1 } from './p-C-DqsDXz.js';
1
+ import { K as KritzelMenu$1, d as defineCustomElement$1 } from './p-BeljsQ-8.js';
2
2
 
3
3
  const KritzelMenu = KritzelMenu$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelPortal$1, d as defineCustomElement$1 } from './p-jpGLgpoq.js';
1
+ import { K as KritzelPortal$1, d as defineCustomElement$1 } from './p-DxTu1aoJ.js';
2
2
 
3
3
  const KritzelPortal = KritzelPortal$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelSplitButton$1, d as defineCustomElement$1 } from './p-CaPdvVd4.js';
1
+ import { K as KritzelSplitButton$1, d as defineCustomElement$1 } from './p-BPz_H-EG.js';
2
2
 
3
3
  const KritzelSplitButton = KritzelSplitButton$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelStrokeSize$1, d as defineCustomElement$1 } from './p-BGccckxP.js';
1
+ import { K as KritzelStrokeSize$1, d as defineCustomElement$1 } from './p-CMJ3P0Vw.js';
2
2
 
3
3
  const KritzelStrokeSize = KritzelStrokeSize$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelTooltip$1, d as defineCustomElement$1 } from './p-26poIWa_.js';
1
+ import { K as KritzelTooltip$1, d as defineCustomElement$1 } from './p-BrBQUN0Q.js';
2
2
 
3
3
  const KritzelTooltip = KritzelTooltip$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelUtilityPanel$1, d as defineCustomElement$1 } from './p-fyfT6A5K.js';
1
+ import { K as KritzelUtilityPanel$1, d as defineCustomElement$1 } from './p-BgmKrd5Z.js';
2
2
 
3
3
  const KritzelUtilityPanel = KritzelUtilityPanel$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelWorkspaceManager$1, d as defineCustomElement$1 } from './p-BcQWRzsB.js';
1
+ import { K as KritzelWorkspaceManager$1, d as defineCustomElement$1 } from './p-CGmS8wnN.js';
2
2
 
3
3
  const KritzelWorkspaceManager = KritzelWorkspaceManager$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,5 +1,5 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-BqrTPNyu.js';
2
- import { d as defineCustomElement$1 } from './p-BLmFBe2a.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-BYanlgdq.js';
2
+ import { d as defineCustomElement$1 } from './p-p1Jkec_q.js';
3
3
 
4
4
  const kritzelContextMenuCss = ":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}";
5
5
 
@@ -11,8 +11,12 @@ const KritzelContextMenu = /*@__PURE__*/ proxyCustomElement(class KritzelContext
11
11
  }
12
12
  this.__attachShadow();
13
13
  this.actionSelected = createEvent(this, "actionSelected");
14
- this.processedItems = [];
15
14
  }
15
+ items;
16
+ objects;
17
+ actionSelected;
18
+ get hostElement() { return this; }
19
+ processedItems = [];
16
20
  componentWillLoad() {
17
21
  this.updateMenuItems();
18
22
  }
@@ -47,7 +51,6 @@ const KritzelContextMenu = /*@__PURE__*/ proxyCustomElement(class KritzelContext
47
51
  render() {
48
52
  return (h(Host, { key: '96569454f806a6d17380315b4d0200236fe22550' }, h("div", { key: '0e5899a2901e1e9ab9d657824e105121ce785bdc', class: "menu-container" }, this.processedItems.map(({ item, isDisabled }, index) => (h("button", { key: `${item.label}-${index}`, class: { 'menu-item': true, disabled: isDisabled }, onClick: () => this.handleItemClick(item, isDisabled), onTouchStart: () => this.handleItemClick(item, isDisabled), disabled: isDisabled }, item.icon && h("kritzel-icon", { name: item.icon, size: 16 }), h("span", { class: "label" }, item.label)))))));
49
53
  }
50
- get hostElement() { return this; }
51
54
  static get watchers() { return {
52
55
  "items": ["onItemsChanged"]
53
56
  }; }
@@ -79,6 +82,6 @@ function defineCustomElement() {
79
82
  }
80
83
 
81
84
  export { KritzelContextMenu as K, defineCustomElement as d };
82
- //# sourceMappingURL=p-BU2q3PRS.js.map
85
+ //# sourceMappingURL=p-B1BLgWL1.js.map
83
86
 
84
- //# sourceMappingURL=p-BU2q3PRS.js.map
87
+ //# sourceMappingURL=p-B1BLgWL1.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-B1BLgWL1.js","mappings":";;;AAAA,MAAM,qBAAqB,GAAG,yxCAAyxC;;MCc1yC,kBAAkB,iBAAAA,kBAAA,CAAA,MAAA,kBAAA,SAAAC,CAAA,CAAA;;;;;;;;;AAE7B,IAAA,KAAK;AAGL,IAAA,OAAO;AAGP,IAAA,cAAc;;IAMN,cAAc,GAAwB,EAAE;IAEhD,iBAAiB,GAAA;QACf,IAAI,CAAC,eAAe,EAAE;;IAIxB,cAAc,GAAA;QACZ,IAAI,CAAC,eAAe,EAAE;;IAGhB,eAAe,CAAC,IAAqB,EAAE,UAAmB,EAAA;QAChE,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAI1B,IAAA,MAAM,gBAAgB,CAC5B,KAAoG,EACpG,YAAqB,EAAA;AAErB,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,OAAO,KAAK;;AAEd,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC/B,YAAA,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;AAEzD,QAAA,OAAO,YAAY;;AAGb,IAAA,MAAM,eAAe,GAAA;QAC3B,MAAM,SAAS,GAAwB,EAAE;AAEzC,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAC7B,YAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;YACjE,IAAI,SAAS,EAAE;AACb,gBAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;gBACpE,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;;;AAIxC,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;;IAGjC,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,gBAAgB,EAAA,EACxB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,MACnD,CACE,CAAA,QAAA,EAAA,EAAA,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAC7B,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAClD,OAAO,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,EACrD,YAAY,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,EAC1D,QAAQ,EAAE,UAAU,EAAA,EAEnB,IAAI,CAAC,IAAI,IAAI,CAAA,CAAA,cAAA,EAAA,EAAc,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAiB,CAAA,EACtE,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,OAAO,EAAA,EAAE,IAAI,CAAC,KAAK,CAAQ,CAChC,CACV,CAAC,CACE,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/ui/kritzel-context-menu/kritzel-context-menu.css?tag=kritzel-context-menu&encapsulation=shadow","src/components/ui/kritzel-context-menu/kritzel-context-menu.tsx"],"sourcesContent":[":host {\r\n display: block; \r\n}\r\n\r\n.menu-container {\r\n display: flex;\r\n flex-direction: column;\r\n background-color: var(--kritzel-context-menu-background-color, #ffffff);\r\n border-radius: var(--kritzel-context-menu-border-radius, 12px);\r\n box-shadow: var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));\r\n border: var(--kritzel-context-menu-border, 1px solid #ebebeb);\r\n padding: var(--kritzel-context-menu-padding,4px);\r\n}\r\n\r\n.menu-item {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--kritzel-context-menu-item-gap, 8px);\r\n background: none;\r\n border: none;\r\n text-align: left;\r\n padding: var(--kritzel-context-menu-item-padding, 8px);\r\n border-radius: var(--kritzel-context-menu-item-border-radius, 12px);\r\n cursor: pointer;\r\n font-size: var(--kritzel-context-menu-item-font-size, 14px);\r\n color: var(--kritzel-context-menu-item-color, #333333);\r\n white-space: nowrap;\r\n -webkit-tap-highlight-color: transparent;\r\n}\r\n\r\n.menu-item:not(.disabled):hover {\r\n background-color: var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%));\r\n}\r\n\r\n.menu-item:not(.disabled):active {\r\n background-color: var(--kritzel-context-menu-item-active-background-color, hsl(0, 0%, 0%, 8.6%));\r\n}\r\n\r\n.menu-item.disabled {\r\n color: var(--kritzel-context-menu-item-disabled-color, #aaaaaa);\r\n cursor: default;\r\n}\r\n\r\n.menu-item kritzel-icon {\r\n opacity: 0.8;\r\n flex-shrink: 0;\r\n}\r\n\r\n.menu-item.disabled kritzel-icon {\r\n opacity: 0.4;\r\n}\r\n\r\n.label {\r\n flex-grow: 1;\r\n}\r\n","import { Component, Host, h, Prop, Event, EventEmitter, Element, State, Watch } from '@stencil/core';\r\nimport { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';\r\nimport { KritzelBaseObject } from '../../../classes/objects/base-object.class';\r\n\r\ninterface ProcessedMenuItem {\r\n item: ContextMenuItem;\r\n isDisabled: boolean;\r\n}\r\n\r\n@Component({\r\n tag: 'kritzel-context-menu',\r\n styleUrl: 'kritzel-context-menu.css',\r\n shadow: true,\r\n})\r\nexport class KritzelContextMenu {\r\n @Prop()\r\n items: ContextMenuItem[];\r\n\r\n @Prop()\r\n objects: KritzelBaseObject[];\r\n\r\n @Event()\r\n actionSelected: EventEmitter<ContextMenuItem>;\r\n\r\n @Element()\r\n hostElement: HTMLElement;\r\n\r\n @State()\r\n private processedItems: ProcessedMenuItem[] = [];\r\n\r\n componentWillLoad() {\r\n this.updateMenuItems();\r\n }\r\n\r\n @Watch('items')\r\n onItemsChanged() {\r\n this.updateMenuItems();\r\n }\r\n\r\n private handleItemClick(item: ContextMenuItem, isDisabled: boolean) {\r\n if (!isDisabled) {\r\n this.actionSelected.emit(item);\r\n }\r\n }\r\n\r\n private async evaluateProperty(\r\n value: boolean | ((obj: KritzelBaseObject, objs: KritzelBaseObject[]) => boolean | Promise<boolean>),\r\n defaultValue: boolean,\r\n ): Promise<boolean> {\r\n if (typeof value === 'boolean') {\r\n return value;\r\n }\r\n if (typeof value === 'function') {\r\n return await Promise.resolve(value(null, this.objects));\r\n }\r\n return defaultValue;\r\n }\r\n\r\n private async updateMenuItems() {\r\n const processed: ProcessedMenuItem[] = [];\r\n\r\n for (const item of this.items) {\r\n const isVisible = await this.evaluateProperty(item.visible, true);\r\n if (isVisible) {\r\n const isDisabled = await this.evaluateProperty(item.disabled, false);\r\n processed.push({ item, isDisabled });\r\n }\r\n }\r\n\r\n this.processedItems = processed;\r\n }\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <div class=\"menu-container\">\r\n {this.processedItems.map(({ item, isDisabled }, index) => (\r\n <button\r\n key={`${item.label}-${index}`} \r\n class={{ 'menu-item': true, disabled: isDisabled }}\r\n onClick={() => this.handleItemClick(item, isDisabled)}\r\n onTouchStart={() => this.handleItemClick(item, isDisabled)}\r\n disabled={isDisabled}\r\n >\r\n {item.icon && <kritzel-icon name={item.icon} size={16}></kritzel-icon>}\r\n <span class=\"label\">{item.label}</span>\r\n </button>\r\n ))}\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, d as Host } from './p-BqrTPNyu.js';
1
+ import { p as proxyCustomElement, H, h, d as Host } from './p-BYanlgdq.js';
2
2
 
3
3
  const kritzelColorCss = ":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)}";
4
4
 
@@ -9,8 +9,9 @@ const KritzelColor = /*@__PURE__*/ proxyCustomElement(class KritzelColor extends
9
9
  this.__registerHost();
10
10
  }
11
11
  this.__attachShadow();
12
- this.size = 24;
13
12
  }
13
+ value;
14
+ size = 24;
14
15
  isLightColor(hexColor) {
15
16
  if (!hexColor)
16
17
  return false;
@@ -77,6 +78,6 @@ function defineCustomElement() {
77
78
  }
78
79
 
79
80
  export { KritzelColor as K, defineCustomElement as d };
80
- //# sourceMappingURL=p-5CJxFNEE.js.map
81
+ //# sourceMappingURL=p-BB0_-X42.js.map
81
82
 
82
- //# sourceMappingURL=p-5CJxFNEE.js.map
83
+ //# sourceMappingURL=p-BB0_-X42.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-BB0_-X42.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/shared/kritzel-color/kritzel-color.css?tag=kritzel-color&encapsulation=shadow","src/components/shared/kritzel-color/kritzel-color.tsx"],"sourcesContent":[":host {\r\n display: flex;\r\n}\r\n\r\n.checkerboard-bg {\r\n background: repeating-conic-gradient(#ccc 0% 25%, #fff 0% 50%) 50% / 8px 8px;\r\n position: relative;\r\n overflow: hidden;\r\n}\r\n\r\n.color-circle {\r\n width: 24px;\r\n height: 24px;\r\n border-radius: 50%;\r\n box-sizing: border-box;\r\n display: block;\r\n}\r\n\r\n.color-circle.white {\r\n border: 1px solid var(--kritzel-color-palette-circle-border-color, #dddcdc);\r\n}","import { Component, Host, Prop, h } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'kritzel-color',\r\n styleUrl: 'kritzel-color.css',\r\n shadow: true,\r\n})\r\nexport class KritzelColor {\r\n @Prop()\r\n value: string;\r\n\r\n @Prop()\r\n size: number = 24;\r\n\r\n private isLightColor(hexColor: string): boolean {\r\n if (!hexColor) return false;\r\n\r\n let r = 0,\r\n g = 0,\r\n b = 0;\r\n\r\n let sanitizedHex = hexColor.startsWith('#') ? hexColor.slice(1) : hexColor;\r\n\r\n if (sanitizedHex.length === 3) {\r\n r = parseInt(sanitizedHex[0] + sanitizedHex[0], 16);\r\n g = parseInt(sanitizedHex[1] + sanitizedHex[1], 16);\r\n b = parseInt(sanitizedHex[2] + sanitizedHex[2], 16);\r\n } else if (sanitizedHex.length === 6) {\r\n r = parseInt(sanitizedHex.substring(0, 2), 16);\r\n g = parseInt(sanitizedHex.substring(2, 4), 16);\r\n b = parseInt(sanitizedHex.substring(4, 6), 16);\r\n } else {\r\n return false;\r\n }\r\n\r\n if (isNaN(r) || isNaN(g) || isNaN(b)) {\r\n return false;\r\n }\r\n\r\n const luminance = 0.299 * r + 0.587 * g + 0.114 * b;\r\n\r\n return luminance > 220;\r\n }\r\n\r\n render() {\r\n const isColorVeryLight = this.isLightColor(this.value);\r\n return (\r\n <Host>\r\n <div\r\n class=\"checkerboard-bg\"\r\n style={{\r\n width: `${this.size}px`,\r\n height: `${this.size}px`,\r\n borderRadius: '50%',\r\n display: 'inline-block',\r\n position: 'relative',\r\n }}\r\n >\r\n <div\r\n class={{\r\n 'color-circle': true,\r\n 'white': isColorVeryLight,\r\n }}\r\n style={{\r\n backgroundColor: this.value,\r\n width: `${this.size}px`,\r\n height: `${this.size}px`,\r\n borderRadius: '50%',\r\n position: 'absolute',\r\n top: '0',\r\n left: '0',\r\n display: 'inline-block',\r\n }}\r\n ></div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}