kritzel-stencil 0.0.131 → 0.0.133

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/dist/cjs/{index-BwINBV6L.js → index-DCHCVnOl.js} +755 -701
  2. package/dist/cjs/index-DCHCVnOl.js.map +1 -0
  3. package/dist/cjs/index-nzUNdMPh.js +6 -2
  4. package/dist/cjs/index.cjs.js +1 -1
  5. package/dist/cjs/kritzel-brush-style.cjs.entry.js +32 -0
  6. package/dist/cjs/kritzel-brush-style.entry.cjs.js.map +1 -0
  7. package/dist/cjs/{kritzel-brush-style_23.cjs.entry.js → kritzel-color_22.cjs.entry.js} +1046 -874
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/stencil.cjs.js +1 -1
  10. package/dist/collection/classes/commands/add-object.command.js +6 -7
  11. package/dist/collection/classes/commands/add-object.command.js.map +1 -1
  12. package/dist/collection/classes/commands/add-selection-group.command.js +9 -9
  13. package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -1
  14. package/dist/collection/classes/commands/base.command.js +3 -3
  15. package/dist/collection/classes/commands/base.command.js.map +1 -1
  16. package/dist/collection/classes/commands/batch.command.js +2 -2
  17. package/dist/collection/classes/commands/batch.command.js.map +1 -1
  18. package/dist/collection/classes/commands/move-selection-group.command.js +15 -7
  19. package/dist/collection/classes/commands/move-selection-group.command.js.map +1 -1
  20. package/dist/collection/classes/commands/remove-object.command.js +8 -9
  21. package/dist/collection/classes/commands/remove-object.command.js.map +1 -1
  22. package/dist/collection/classes/commands/remove-selection-group.command.js +7 -7
  23. package/dist/collection/classes/commands/remove-selection-group.command.js.map +1 -1
  24. package/dist/collection/classes/commands/resize-selection-group.command.js +15 -7
  25. package/dist/collection/classes/commands/resize-selection-group.command.js.map +1 -1
  26. package/dist/collection/classes/commands/rotate-selection-group.command.js +14 -12
  27. package/dist/collection/classes/commands/rotate-selection-group.command.js.map +1 -1
  28. package/dist/collection/classes/commands/update-object.command.js +6 -5
  29. package/dist/collection/classes/commands/update-object.command.js.map +1 -1
  30. package/dist/collection/classes/commands/update-viewport.command.js +11 -11
  31. package/dist/collection/classes/commands/update-viewport.command.js.map +1 -1
  32. package/dist/collection/classes/{store.class.js → core/core.class.js} +116 -145
  33. package/dist/collection/classes/core/core.class.js.map +1 -0
  34. package/dist/collection/classes/{database.class.js → core/database.class.js} +28 -20
  35. package/dist/collection/classes/core/database.class.js.map +1 -0
  36. package/dist/collection/classes/core/history.class.js +88 -0
  37. package/dist/collection/classes/core/history.class.js.map +1 -0
  38. package/dist/collection/classes/{reviver.class.js → core/reviver.class.js} +27 -23
  39. package/dist/collection/classes/core/reviver.class.js.map +1 -0
  40. package/dist/collection/classes/core/store.class.js +51 -0
  41. package/dist/collection/classes/core/store.class.js.map +1 -0
  42. package/dist/collection/classes/core/viewport.class.js +165 -0
  43. package/dist/collection/classes/core/viewport.class.js.map +1 -0
  44. package/dist/collection/classes/core/workspace.class.js +42 -0
  45. package/dist/collection/classes/core/workspace.class.js.map +1 -0
  46. package/dist/collection/classes/handlers/base.handler.js +4 -4
  47. package/dist/collection/classes/handlers/base.handler.js.map +1 -1
  48. package/dist/collection/classes/handlers/context-menu.handler.js +29 -19
  49. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
  50. package/dist/collection/classes/handlers/hover.handler.js +5 -5
  51. package/dist/collection/classes/handlers/hover.handler.js.map +1 -1
  52. package/dist/collection/classes/handlers/key.handler.js +38 -44
  53. package/dist/collection/classes/handlers/key.handler.js.map +1 -1
  54. package/dist/collection/classes/handlers/move.handler.js +49 -44
  55. package/dist/collection/classes/handlers/move.handler.js.map +1 -1
  56. package/dist/collection/classes/handlers/resize.handler.js +55 -60
  57. package/dist/collection/classes/handlers/resize.handler.js.map +1 -1
  58. package/dist/collection/classes/handlers/rotation.handler.js +59 -69
  59. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
  60. package/dist/collection/classes/handlers/selection.handler.js +73 -72
  61. package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
  62. package/dist/collection/classes/objects/base-object.class.js +30 -17
  63. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  64. package/dist/collection/classes/objects/custom-element.class.js +3 -3
  65. package/dist/collection/classes/objects/custom-element.class.js.map +1 -1
  66. package/dist/collection/classes/objects/image.class.js +5 -5
  67. package/dist/collection/classes/objects/image.class.js.map +1 -1
  68. package/dist/collection/classes/objects/path.class.js +7 -7
  69. package/dist/collection/classes/objects/path.class.js.map +1 -1
  70. package/dist/collection/classes/objects/selection-box.class.js +4 -4
  71. package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
  72. package/dist/collection/classes/objects/selection-group.class.js +19 -20
  73. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  74. package/dist/collection/classes/objects/text.class.js +13 -13
  75. package/dist/collection/classes/objects/text.class.js.map +1 -1
  76. package/dist/collection/classes/registries/tool.registry.js +2 -2
  77. package/dist/collection/classes/registries/tool.registry.js.map +1 -1
  78. package/dist/collection/classes/tools/base-tool.class.js +11 -5
  79. package/dist/collection/classes/tools/base-tool.class.js.map +1 -1
  80. package/dist/collection/classes/tools/brush-tool.class.js +57 -53
  81. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -1
  82. package/dist/collection/classes/tools/eraser-tool.class.js +26 -26
  83. package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -1
  84. package/dist/collection/classes/tools/image-tool.class.js +11 -11
  85. package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
  86. package/dist/collection/classes/tools/selection-tool.class.js +39 -37
  87. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
  88. package/dist/collection/classes/tools/text-tool.class.js +37 -37
  89. package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
  90. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +28 -28
  91. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -1
  92. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +7 -9
  93. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +177 -7
  94. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  95. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +237 -232
  96. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  97. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +1 -1
  98. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -1
  99. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  100. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -1
  101. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +5 -0
  102. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +3 -3
  103. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +1 -1
  104. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +12 -12
  105. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -1
  106. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  107. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -1
  108. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +1 -1
  109. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -1
  110. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  111. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -1
  112. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +1 -0
  113. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +1 -1
  114. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +5 -1
  115. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +2 -2
  116. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -1
  117. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +18 -7
  118. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +24 -9
  119. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +1 -1
  120. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +4 -42
  121. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -1
  122. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +0 -4
  123. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +52 -10
  124. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -1
  125. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +4 -0
  126. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  127. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +1 -1
  128. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +79 -7
  129. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -1
  130. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +47 -15
  131. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -1
  132. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +4 -0
  133. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +6 -6
  134. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -1
  135. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +2 -2
  136. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +1 -1
  137. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +12 -1
  138. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +23 -7
  139. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -1
  140. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +5 -0
  141. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  142. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +1 -1
  143. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +25 -15
  144. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -1
  145. package/dist/collection/configs/default-engine-state.js +0 -1
  146. package/dist/collection/configs/default-engine-state.js.map +1 -1
  147. package/dist/collection/helpers/devices.helper.js +20 -0
  148. package/dist/collection/helpers/devices.helper.js.map +1 -1
  149. package/dist/collection/helpers/event.helper.js +1 -5
  150. package/dist/collection/helpers/event.helper.js.map +1 -1
  151. package/dist/collection/helpers/html.helper.js +29 -0
  152. package/dist/collection/helpers/html.helper.js.map +1 -1
  153. package/dist/collection/helpers/object.helper.js +0 -14
  154. package/dist/collection/helpers/object.helper.js.map +1 -1
  155. package/dist/collection/index.js +1 -1
  156. package/dist/collection/index.js.map +1 -1
  157. package/dist/collection/interfaces/clonable.interface.js +2 -0
  158. package/dist/collection/interfaces/clonable.interface.js.map +1 -0
  159. package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
  160. package/dist/collection/interfaces/serializable.interface.js.map +1 -1
  161. package/dist/collection/types/deep-readonly.type.js +2 -0
  162. package/dist/collection/types/deep-readonly.type.js.map +1 -0
  163. package/dist/components/index.js +3 -3
  164. package/dist/components/kritzel-brush-style.js +59 -1
  165. package/dist/components/kritzel-brush-style.js.map +1 -1
  166. package/dist/components/kritzel-color-palette.js +1 -1
  167. package/dist/components/kritzel-color.js +1 -1
  168. package/dist/components/kritzel-context-menu.js +1 -1
  169. package/dist/components/kritzel-control-brush-config.js +1 -1
  170. package/dist/components/kritzel-control-text-config.js +1 -1
  171. package/dist/components/kritzel-controls.js +1 -1
  172. package/dist/components/kritzel-cursor-trail.js +1 -1
  173. package/dist/components/kritzel-dropdown.js +1 -1
  174. package/dist/components/kritzel-editor.js +80 -37
  175. package/dist/components/kritzel-editor.js.map +1 -1
  176. package/dist/components/kritzel-engine.js +1 -1
  177. package/dist/components/kritzel-font-family.js +1 -1
  178. package/dist/components/kritzel-font-size.js +1 -1
  179. package/dist/components/kritzel-font.js +1 -1
  180. package/dist/components/kritzel-icon.js +1 -1
  181. package/dist/components/kritzel-menu-item.js +1 -1
  182. package/dist/components/kritzel-menu.js +1 -1
  183. package/dist/components/kritzel-portal.js +1 -1
  184. package/dist/components/kritzel-split-button.js +1 -1
  185. package/dist/components/kritzel-stroke-size.js +1 -1
  186. package/dist/components/kritzel-tooltip.js +1 -1
  187. package/dist/components/kritzel-utility-panel.js +1 -1
  188. package/dist/components/kritzel-workspace-manager.js +1 -1
  189. package/dist/components/{p-CMJ3P0Vw.js → p-0iJh9Z6m.js} +5 -5
  190. package/dist/components/p-0iJh9Z6m.js.map +1 -0
  191. package/dist/components/p-B0kd2rUI.js +16 -0
  192. package/dist/components/p-B0kd2rUI.js.map +1 -0
  193. package/dist/components/{p-BB5R2k1o.js → p-B3LGnqFz.js} +41 -31
  194. package/dist/components/p-B3LGnqFz.js.map +1 -0
  195. package/dist/components/{p-BB0_-X42.js → p-B7kZ1_RH.js} +4 -4
  196. package/dist/components/{p-BB0_-X42.js.map → p-B7kZ1_RH.js.map} +1 -1
  197. package/dist/components/{p-t4NIsuX9.js → p-B7w19kIk.js} +15 -27
  198. package/dist/components/p-B7w19kIk.js.map +1 -0
  199. package/dist/components/{p-B1BLgWL1.js → p-BGdsAz54.js} +27 -18
  200. package/dist/components/p-BGdsAz54.js.map +1 -0
  201. package/dist/components/{p-CGmS8wnN.js → p-BKvOO7NT.js} +26 -16
  202. package/dist/components/p-BKvOO7NT.js.map +1 -0
  203. package/dist/components/{p-BhiYvSBc.js → p-BM9IjvnD.js} +3 -3
  204. package/dist/components/p-BM9IjvnD.js.map +1 -0
  205. package/dist/components/{p-BrBQUN0Q.js → p-BPsQrpzN.js} +40 -11
  206. package/dist/components/p-BPsQrpzN.js.map +1 -0
  207. package/dist/components/p-C6qB08BS.js +68 -0
  208. package/dist/components/p-C6qB08BS.js.map +1 -0
  209. package/dist/components/{p-BPz_H-EG.js → p-CM8KdFZI.js} +28 -16
  210. package/dist/components/p-CM8KdFZI.js.map +1 -0
  211. package/dist/components/{p-DHSEK3rF.js → p-CNTK3JOp.js} +174 -153
  212. package/dist/components/p-CNTK3JOp.js.map +1 -0
  213. package/dist/components/{p-DMrtdhBD.js → p-CsyM5q2M.js} +7 -7
  214. package/dist/components/p-CsyM5q2M.js.map +1 -0
  215. package/dist/components/{p-BuewJQNl.js → p-CwH-bwjb.js} +1187 -1141
  216. package/dist/components/p-CwH-bwjb.js.map +1 -0
  217. package/dist/components/{p-BgmKrd5Z.js → p-DCx3703u.js} +5 -5
  218. package/dist/components/p-DCx3703u.js.map +1 -0
  219. package/dist/components/{p-trncBp_6.js → p-DFO-6kuA.js} +15 -15
  220. package/dist/components/p-DFO-6kuA.js.map +1 -0
  221. package/dist/components/{p-BubxwvMA.js → p-Db3kxVe2.js} +24 -24
  222. package/dist/components/p-Db3kxVe2.js.map +1 -0
  223. package/dist/components/{p-BexTdWaX.js → p-Ddlbt3Bj.js} +4 -4
  224. package/dist/components/p-Ddlbt3Bj.js.map +1 -0
  225. package/dist/components/{p-CHxPWeZd.js → p-DjU7p3od.js} +11 -11
  226. package/dist/components/{p-CHxPWeZd.js.map → p-DjU7p3od.js.map} +1 -1
  227. package/dist/components/{p-BeljsQ-8.js → p-Dw4n-4zp.js} +32 -17
  228. package/dist/components/p-Dw4n-4zp.js.map +1 -0
  229. package/dist/components/{p-DxTu1aoJ.js → p-NP1Htol7.js} +7 -45
  230. package/dist/components/p-NP1Htol7.js.map +1 -0
  231. package/dist/components/p-YqK8ch2R.js +46 -0
  232. package/dist/components/p-YqK8ch2R.js.map +1 -0
  233. package/dist/components/p-l10It7Nm.js +30 -0
  234. package/dist/components/p-l10It7Nm.js.map +1 -0
  235. package/dist/components/{p-p1Jkec_q.js → p-sq9jgfX0.js} +3 -3
  236. package/dist/components/p-sq9jgfX0.js.map +1 -0
  237. package/dist/components/{p-yZ48g7-u.js → p-sreNwi0N.js} +4 -4
  238. package/dist/components/{p-yZ48g7-u.js.map → p-sreNwi0N.js.map} +1 -1
  239. package/dist/esm/{index-B-oSk-v8.js → index-DY3KqYWc.js} +756 -702
  240. package/dist/esm/index-DY3KqYWc.js.map +1 -0
  241. package/dist/esm/index-oCOlsFCN.js +6 -2
  242. package/dist/esm/index.js +1 -1
  243. package/dist/esm/kritzel-brush-style.entry.js +30 -0
  244. package/dist/esm/kritzel-brush-style.entry.js.map +1 -0
  245. package/dist/esm/{kritzel-brush-style_23.entry.js → kritzel-color_22.entry.js} +1048 -875
  246. package/dist/esm/loader.js +1 -1
  247. package/dist/esm/stencil.js +1 -1
  248. package/dist/stencil/index.esm.js +1 -1
  249. package/dist/stencil/kritzel-brush-style.entry.esm.js.map +1 -0
  250. package/dist/stencil/p-25d1e040.entry.js +2 -0
  251. package/dist/stencil/p-25d1e040.entry.js.map +1 -0
  252. package/dist/stencil/p-DY3KqYWc.js +2 -0
  253. package/dist/stencil/p-DY3KqYWc.js.map +1 -0
  254. package/dist/stencil/p-dc534b01.entry.js +2 -0
  255. package/dist/stencil/p-dc534b01.entry.js.map +1 -0
  256. package/dist/stencil/stencil.esm.js +1 -1
  257. package/dist/types/classes/commands/add-object.command.d.ts +2 -2
  258. package/dist/types/classes/commands/add-selection-group.command.d.ts +2 -1
  259. package/dist/types/classes/commands/base.command.d.ts +3 -3
  260. package/dist/types/classes/commands/batch.command.d.ts +2 -1
  261. package/dist/types/classes/commands/move-selection-group.command.d.ts +2 -1
  262. package/dist/types/classes/commands/remove-object.command.d.ts +2 -2
  263. package/dist/types/classes/commands/remove-selection-group.command.d.ts +2 -2
  264. package/dist/types/classes/commands/resize-selection-group.command.d.ts +2 -1
  265. package/dist/types/classes/commands/rotate-selection-group.command.d.ts +2 -1
  266. package/dist/types/classes/commands/update-object.command.d.ts +2 -2
  267. package/dist/types/classes/commands/update-viewport.command.d.ts +2 -1
  268. package/dist/types/classes/{store.class.d.ts → core/core.class.d.ts} +9 -19
  269. package/dist/types/classes/{database.class.d.ts → core/database.class.d.ts} +3 -2
  270. package/dist/types/classes/{history.class.d.ts → core/history.class.d.ts} +5 -5
  271. package/dist/types/classes/core/reviver.class.d.ts +6 -0
  272. package/dist/types/classes/core/store.class.d.ts +17 -0
  273. package/dist/types/classes/{viewport.class.d.ts → core/viewport.class.d.ts} +3 -3
  274. package/dist/types/classes/core/workspace.class.d.ts +24 -0
  275. package/dist/types/classes/handlers/base.handler.d.ts +3 -3
  276. package/dist/types/classes/handlers/context-menu.handler.d.ts +2 -2
  277. package/dist/types/classes/handlers/hover.handler.d.ts +2 -2
  278. package/dist/types/classes/handlers/key.handler.d.ts +2 -2
  279. package/dist/types/classes/handlers/move.handler.d.ts +4 -2
  280. package/dist/types/classes/handlers/resize.handler.d.ts +3 -2
  281. package/dist/types/classes/handlers/rotation.handler.d.ts +6 -2
  282. package/dist/types/classes/handlers/selection.handler.d.ts +2 -2
  283. package/dist/types/classes/objects/base-object.class.d.ts +8 -5
  284. package/dist/types/classes/objects/custom-element.class.d.ts +2 -2
  285. package/dist/types/classes/objects/image.class.d.ts +2 -2
  286. package/dist/types/classes/objects/path.class.d.ts +2 -2
  287. package/dist/types/classes/objects/selection-box.class.d.ts +2 -2
  288. package/dist/types/classes/objects/selection-group.class.d.ts +2 -2
  289. package/dist/types/classes/objects/text.class.d.ts +2 -2
  290. package/dist/types/classes/registries/tool.registry.d.ts +2 -2
  291. package/dist/types/classes/tools/base-tool.class.d.ts +8 -4
  292. package/dist/types/classes/tools/brush-tool.class.d.ts +2 -2
  293. package/dist/types/classes/tools/eraser-tool.class.d.ts +2 -2
  294. package/dist/types/classes/tools/image-tool.class.d.ts +2 -2
  295. package/dist/types/classes/tools/selection-tool.class.d.ts +2 -2
  296. package/dist/types/classes/tools/text-tool.class.d.ts +2 -2
  297. package/dist/types/components/core/kritzel-cursor-trail/kritzel-cursor-trail.d.ts +5 -5
  298. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +13 -3
  299. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +21 -22
  300. package/dist/types/components/shared/kritzel-dropdown/kritzel-dropdown.d.ts +2 -2
  301. package/dist/types/components/shared/kritzel-menu-item/kritzel-menu-item.d.ts +2 -0
  302. package/dist/types/components/shared/kritzel-portal/kritzel-portal.d.ts +0 -1
  303. package/dist/types/components/shared/kritzel-split-button/kritzel-split-button.d.ts +4 -2
  304. package/dist/types/components/shared/kritzel-tooltip/kritzel-tooltip.d.ts +8 -2
  305. package/dist/types/components/ui/kritzel-context-menu/kritzel-context-menu.d.ts +5 -3
  306. package/dist/types/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.d.ts +1 -1
  307. package/dist/types/components/ui/kritzel-controls/kritzel-controls.d.ts +3 -1
  308. package/dist/types/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.d.ts +3 -2
  309. package/dist/types/components.d.ts +41 -12
  310. package/dist/types/helpers/devices.helper.d.ts +4 -0
  311. package/dist/types/helpers/event.helper.d.ts +1 -1
  312. package/dist/types/helpers/html.helper.d.ts +1 -0
  313. package/dist/types/helpers/object.helper.d.ts +0 -2
  314. package/dist/types/index.d.ts +1 -1
  315. package/dist/types/interfaces/clonable.interface.d.ts +3 -0
  316. package/dist/types/interfaces/engine-state.interface.d.ts +1 -2
  317. package/dist/types/interfaces/serializable.interface.d.ts +2 -1
  318. package/dist/types/types/deep-readonly.type.d.ts +7 -0
  319. package/package.json +3 -2
  320. package/dist/cjs/index-BwINBV6L.js.map +0 -1
  321. package/dist/collection/classes/database.class.js.map +0 -1
  322. package/dist/collection/classes/history.class.js +0 -88
  323. package/dist/collection/classes/history.class.js.map +0 -1
  324. package/dist/collection/classes/reviver.class.js.map +0 -1
  325. package/dist/collection/classes/store.class.js.map +0 -1
  326. package/dist/collection/classes/viewport.class.js +0 -153
  327. package/dist/collection/classes/viewport.class.js.map +0 -1
  328. package/dist/collection/classes/workspace.class.js +0 -15
  329. package/dist/collection/classes/workspace.class.js.map +0 -1
  330. package/dist/components/p-B1BLgWL1.js.map +0 -1
  331. package/dist/components/p-BB5R2k1o.js.map +0 -1
  332. package/dist/components/p-BPz_H-EG.js.map +0 -1
  333. package/dist/components/p-B_lb1FGi.js +0 -19
  334. package/dist/components/p-B_lb1FGi.js.map +0 -1
  335. package/dist/components/p-BeljsQ-8.js.map +0 -1
  336. package/dist/components/p-BexTdWaX.js.map +0 -1
  337. package/dist/components/p-BgmKrd5Z.js.map +0 -1
  338. package/dist/components/p-BhiYvSBc.js.map +0 -1
  339. package/dist/components/p-BrBQUN0Q.js.map +0 -1
  340. package/dist/components/p-BubxwvMA.js.map +0 -1
  341. package/dist/components/p-BuewJQNl.js.map +0 -1
  342. package/dist/components/p-CGmS8wnN.js.map +0 -1
  343. package/dist/components/p-CJKA5zIE.js +0 -10
  344. package/dist/components/p-CJKA5zIE.js.map +0 -1
  345. package/dist/components/p-CMJ3P0Vw.js.map +0 -1
  346. package/dist/components/p-DHSEK3rF.js.map +0 -1
  347. package/dist/components/p-DMrtdhBD.js.map +0 -1
  348. package/dist/components/p-DnUKql15.js +0 -30
  349. package/dist/components/p-DnUKql15.js.map +0 -1
  350. package/dist/components/p-DxTu1aoJ.js.map +0 -1
  351. package/dist/components/p-p1Jkec_q.js.map +0 -1
  352. package/dist/components/p-rIRXQdie.js +0 -64
  353. package/dist/components/p-rIRXQdie.js.map +0 -1
  354. package/dist/components/p-t4NIsuX9.js.map +0 -1
  355. package/dist/components/p-trncBp_6.js.map +0 -1
  356. package/dist/esm/index-B-oSk-v8.js.map +0 -1
  357. package/dist/stencil/p-3bb80782.entry.js +0 -2
  358. package/dist/stencil/p-3bb80782.entry.js.map +0 -1
  359. package/dist/stencil/p-B-oSk-v8.js +0 -2
  360. package/dist/stencil/p-B-oSk-v8.js.map +0 -1
  361. package/dist/types/classes/reviver.class.d.ts +0 -6
  362. package/dist/types/classes/workspace.class.d.ts +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"kritzel-engine.js","sourceRoot":"","sources":["../../../../src/components/core/kritzel-engine/kritzel-engine.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Listen, Element, Prop, Method, State, Event, EventEmitter, Watch } from '@stencil/core';\r\nimport { KritzelTool } from '../../../interfaces/tool.interface';\r\nimport { KritzelViewport } from '../../../classes/viewport.class';\r\nimport { KritzelPath } from '../../../classes/objects/path.class';\r\nimport { KritzelSelectionTool } from '../../../classes/tools/selection-tool.class';\r\nimport { KritzelImage } from '../../../classes/objects/image.class';\r\nimport { KritzelText } from '../../../classes/objects/text.class';\r\nimport { KritzelSelectionGroup } from '../../../classes/objects/selection-group.class';\r\nimport { KrtizelSelectionBox } from '../../../classes/objects/selection-box.class';\r\nimport { KritzelStore } from '../../../classes/store.class';\r\nimport { KritzelKeyHandler } from '../../../classes/handlers/key.handler';\r\nimport { KritzelBaseTool } from '../../../classes/tools/base-tool.class';\r\nimport { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';\r\nimport { KritzelEraserTool } from '../../../classes/tools/eraser-tool.class';\r\nimport { KritzelBrushToolConfig, KritzelTextToolConfig } from '../../../interfaces/toolbar-control.interface';\r\nimport { KritzelKeyboardHelper } from '../../../helpers/keyboard.helper';\r\nimport { KritzelContextMenuHandler } from '../../../classes/handlers/context-menu.handler';\r\nimport { AddObjectCommand } from '../../../classes/commands/add-object.command';\r\nimport { KritzelBaseObject } from '../../../classes/objects/base-object.class';\r\nimport { UpdateObjectCommand } from '../../../classes/commands/update-object.command';\r\nimport { RemoveObjectCommand } from '../../../classes/commands/remove-object.command';\r\nimport { KritzelToolRegistry } from '../../../classes/registries/tool.registry';\r\nimport { KritzelEventHelper } from '../../../helpers/event.helper';\r\nimport { KritzelClassHelper } from '../../../helpers/class.helper';\r\nimport { ABSOLUTE_SCALE_MAX, ABSOLUTE_SCALE_MIN } from '../../../constants/engine.constants';\r\nimport { KritzelCustomElement } from '../../../classes/objects/custom-element.class';\r\nimport { KritzelWorkspace } from '../../../classes/workspace.class';\r\nimport { KritzelEngineState } from '../../../interfaces/engine-state.interface';\r\n\r\n@Component({\r\n tag: 'kritzel-engine',\r\n styleUrl: 'kritzel-engine.css',\r\n shadow: true,\r\n})\r\nexport class KritzelEngine {\r\n @Prop()\r\n workspace?: KritzelWorkspace;\r\n\r\n @Prop()\r\n activeTool: KritzelTool;\r\n\r\n @Prop()\r\n globalContextMenuItems: ContextMenuItem[];\r\n\r\n @Prop()\r\n objectContextMenuItems: ContextMenuItem[];\r\n\r\n @Prop({ mutable: true })\r\n scaleMax: number = ABSOLUTE_SCALE_MAX;\r\n\r\n @Prop({ mutable: true })\r\n scaleMin: number = ABSOLUTE_SCALE_MIN;\r\n\r\n @Event()\r\n isEngineReady: EventEmitter<KritzelEngineState>;\r\n\r\n @Event()\r\n activeToolChange: EventEmitter<KritzelBaseTool>;\r\n\r\n @Event()\r\n workspacesChange: EventEmitter<KritzelWorkspace[]>;\r\n\r\n @Element()\r\n host: HTMLElement;\r\n\r\n @State()\r\n forceUpdate: number = 0;\r\n\r\n @Watch('workspace')\r\n onWorkspaceChange(newWorkspace: KritzelWorkspace | null) {\r\n if (newWorkspace) {\r\n this.store.initializeWorkspace(newWorkspace);\r\n }\r\n }\r\n\r\n @Watch('scaleMax')\r\n validateScaleMax(newValue: number) {\r\n if (newValue > ABSOLUTE_SCALE_MAX) {\r\n console.warn(`scaleMax cannot be greater than ${ABSOLUTE_SCALE_MAX}.`);\r\n this.scaleMax = ABSOLUTE_SCALE_MAX;\r\n this.store.state.scaleMax = this.scaleMax;\r\n } else {\r\n this.store.state.scaleMax = newValue;\r\n }\r\n }\r\n\r\n @Watch('scaleMin')\r\n validateScaleMin(newValue: number) {\r\n if (newValue < ABSOLUTE_SCALE_MIN) {\r\n console.warn(`scaleMin cannot be less than ${ABSOLUTE_SCALE_MIN}.`);\r\n this.scaleMin = ABSOLUTE_SCALE_MIN;\r\n this.store.state.scaleMin = this.scaleMin;\r\n } else {\r\n this.store.state.scaleMin = newValue;\r\n }\r\n }\r\n\r\n store: KritzelStore;\r\n\r\n viewport: KritzelViewport;\r\n\r\n contextMenuHandler: KritzelContextMenuHandler;\r\n\r\n keyHandler: KritzelKeyHandler;\r\n\r\n contextMenuElement: HTMLKritzelContextMenuElement | null = null;\r\n\r\n get isSelecting() {\r\n return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.isSelecting;\r\n }\r\n\r\n get isSelectionActive() {\r\n return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.selectionGroup !== null;\r\n }\r\n\r\n constructor() {\r\n this.store = new KritzelStore(this);\r\n }\r\n\r\n componentWillLoad() {\r\n this.validateScaleMax(this.scaleMax);\r\n this.validateScaleMin(this.scaleMin);\r\n }\r\n\r\n async componentDidLoad() {\r\n this.contextMenuHandler = new KritzelContextMenuHandler(this.store, this.globalContextMenuItems, this.objectContextMenuItems);\r\n this.keyHandler = new KritzelKeyHandler(this.store);\r\n this.viewport = new KritzelViewport(this.store, this.host);\r\n\r\n this._registerStateChangeListeners();\r\n\r\n await this.store.initializeDatabase();\r\n await this.store.initializeWorkspace(this.workspace);\r\n\r\n if (this.store.state.isReady === false) {\r\n this.store.state.isReady = true;\r\n this.isEngineReady.emit(this.store.state);\r\n }\r\n }\r\n\r\n @Listen('wheel', { passive: false })\r\n handleWheel(ev) {\r\n if (this.store.isDisabled) {\r\n return;\r\n }\r\n\r\n if (this.store.state.isContextMenuVisible) {\r\n this.hideContextMenu();\r\n }\r\n\r\n this.viewport.handleWheel(ev);\r\n this.store.state?.activeTool?.handleWheel(ev);\r\n }\r\n\r\n @Listen('pointerdown', { passive: false })\r\n handlePointerDown(ev: PointerEvent) {\r\n if (this.store.isDisabled) {\r\n return;\r\n }\r\n\r\n if (KritzelEventHelper.isPointerEventOnContextMenu(ev) === false && this.store.state.isContextMenuVisible) {\r\n this.hideContextMenu();\r\n return;\r\n }\r\n\r\n KritzelEventHelper.onLongTouchPress(ev, (event: PointerEvent) => {\r\n if (!(this.store.state.activeTool instanceof KritzelSelectionTool)) {\r\n return;\r\n }\r\n this.contextMenuHandler.handleContextMenu(event);\r\n });\r\n\r\n this.host.setPointerCapture(ev.pointerId);\r\n this.store.state.pointers.set(ev.pointerId, ev);\r\n\r\n this.viewport.handlePointerDown(ev);\r\n this.store.state?.activeTool?.handlePointerDown(ev);\r\n }\r\n\r\n @Listen('pointermove', { passive: false })\r\n handlePointerMove(ev: PointerEvent) {\r\n if (this.store.isDisabled) {\r\n return;\r\n }\r\n\r\n this.store.state.pointers.set(ev.pointerId, ev);\r\n\r\n this.viewport.handlePointerMove(ev);\r\n this.store.state?.activeTool?.handlePointerMove(ev);\r\n }\r\n\r\n @Listen('pointerup', { passive: false })\r\n handlePointerUp(ev: PointerEvent) {\r\n if (this.store.isDisabled) {\r\n return;\r\n }\r\n\r\n this.store.state.pointers.delete(ev.pointerId);\r\n this.host.releasePointerCapture(ev.pointerId);\r\n\r\n this.viewport.handlePointerUp(ev);\r\n this.store.state?.activeTool?.handlePointerUp(ev);\r\n }\r\n\r\n @Listen('pointercancel', { passive: false })\r\n handlePointerCancel(ev: PointerEvent) {\r\n if (this.store.isDisabled) {\r\n return;\r\n }\r\n\r\n this.host.releasePointerCapture(ev.pointerId);\r\n this.store.state.pointers.delete(ev.pointerId);\r\n\r\n this.viewport.handlePointerUp(ev);\r\n this.store.state?.activeTool?.handlePointerUp(ev);\r\n }\r\n\r\n @Listen('contextmenu', { capture: false })\r\n handleContextMenu(ev: PointerEvent) {\r\n ev.preventDefault();\r\n\r\n if (this.store.isDisabled) {\r\n return;\r\n }\r\n\r\n if (ev.pointerType === 'touch') {\r\n return;\r\n }\r\n\r\n this.contextMenuHandler.handleContextMenu(ev);\r\n }\r\n\r\n @Listen('resize', { target: 'window' })\r\n handleResize() {\r\n this.viewport.handleResize();\r\n }\r\n\r\n @Listen('keydown', { target: 'window' })\r\n handleKeyDown(ev) {\r\n this.keyHandler.handleKeyDown(ev);\r\n }\r\n\r\n @Listen('keyup', { target: 'window' })\r\n handleKeyUp(ev) {\r\n this.keyHandler.handleKeyUp(ev);\r\n }\r\n\r\n @Listen('mousedown', { target: 'window', passive: true })\r\n updateFocus(ev) {\r\n if (this.store.isDisabled) {\r\n return;\r\n }\r\n\r\n const rect = this.store.state.host.getBoundingClientRect();\r\n const isInside = ev.clientX >= rect.left && ev.clientX <= rect.right && ev.clientY >= rect.top && ev.clientY <= rect.bottom;\r\n\r\n const path = ev.composedPath();\r\n const kritzelEngineElement = this.host.closest('kritzel-engine');\r\n const isInKritzelEngine = path.includes(kritzelEngineElement || this.host);\r\n\r\n this.store.setState('isFocused', isInside && isInKritzelEngine);\r\n }\r\n\r\n @Listen('click')\r\n handleClick() {\r\n this.enable();\r\n }\r\n\r\n @Method()\r\n async registerTool(toolName: string, toolClass: any, toolConfig?: KritzelTextToolConfig | KritzelBrushToolConfig): Promise<KritzelBaseTool> {\r\n if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof KritzelBaseTool)) {\r\n console.error(`Failed to register tool \"${toolName}\": Tool class must be a constructor function`);\r\n return null;\r\n }\r\n\r\n const registeredTool = KritzelToolRegistry.registerTool(toolName, toolClass, this.store);\r\n\r\n if (toolConfig) {\r\n Object.entries(toolConfig).forEach(([key, value]) => {\r\n registeredTool[key] = value;\r\n });\r\n }\r\n\r\n return Promise.resolve(registeredTool);\r\n }\r\n\r\n @Method()\r\n async changeActiveTool(tool: KritzelBaseTool) {\r\n this.store.state.activeTool?.onDeactivate();\r\n this.store.setState('activeTool', tool);\r\n this.store.deselectAllObjects();\r\n tool?.onActivate();\r\n }\r\n\r\n @Method()\r\n async setFocus() {\r\n this.host.focus();\r\n this.store.state.isFocused = true;\r\n }\r\n\r\n @Method()\r\n async disable() {\r\n this.store.state.isEnabled = false;\r\n this.forceUpdate++;\r\n }\r\n\r\n @Method()\r\n async enable() {\r\n this.store.state.isEnabled = true;\r\n this.forceUpdate++;\r\n }\r\n\r\n @Method()\r\n async delete() {\r\n this.store.delete();\r\n }\r\n\r\n @Method()\r\n async copy() {\r\n this.store.copy();\r\n }\r\n\r\n @Method()\r\n async paste(x: number, y: number) {\r\n this.store.paste(x, y);\r\n }\r\n\r\n @Method()\r\n async bringForward(object?: KritzelBaseObject<any>) {\r\n this.store.bringForward(object);\r\n }\r\n\r\n @Method()\r\n async sendBackward(object?: KritzelBaseObject<any>) {\r\n this.store.sendBackward(object);\r\n }\r\n\r\n @Method()\r\n async bringToFront(object?: KritzelBaseObject<any>) {\r\n this.store.bringToFront(object);\r\n }\r\n\r\n @Method()\r\n async sendToBack(object?: KritzelBaseObject<any>) {\r\n this.store.sendToBack(object);\r\n }\r\n\r\n @Method()\r\n async undo() {\r\n this.store.history.undo();\r\n }\r\n\r\n @Method()\r\n async redo() {\r\n this.store.history.redo();\r\n }\r\n\r\n @Method()\r\n async hideContextMenu() {\r\n this.store.state.pointers.clear();\r\n this.store.state.isContextMenuVisible = false;\r\n this.store.state.selectionBox = null;\r\n this.store.state.isSelecting = false;\r\n }\r\n\r\n @Method()\r\n async getObjectById<T extends KritzelBaseObject>(id: string): Promise<T | null> {\r\n const object = this.store.objects.find(obj => obj.id === id) as T | undefined;\r\n return object || null;\r\n }\r\n\r\n @Method()\r\n async addObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n this.store.deselectAllObjects();\r\n\r\n object.id = object.generateId();\r\n object._store = this.store;\r\n object.scale = object.scale ? object.scale : this.store.state.scale;\r\n object.zIndex = this.store.currentZIndex;\r\n\r\n const command = new AddObjectCommand(this.store, this, object);\r\n this.store.history.executeCommand(command);\r\n\r\n return 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 this.store.deselectAllObjects();\r\n\r\n const command = new UpdateObjectCommand(this.store, this, object, updatedProperties);\r\n this.store.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async removeObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n this.store.deselectAllObjects();\r\n\r\n const command = new RemoveObjectCommand(this.store, this, object);\r\n this.store.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async getSelectedObjects(): Promise<KritzelBaseObject<any>[]> {\r\n return this.store.state.selectionGroup ? this.store.state.selectionGroup.objects : [];\r\n }\r\n\r\n @Method()\r\n async selectObjects(objects: KritzelBaseObject[]) {\r\n this.store.state.activeTool?.onDeactivate();\r\n this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this.store.deselectAllObjects();\r\n this.store.selectObjects(objects);\r\n }\r\n\r\n @Method()\r\n async selectAllObjectsInViewport() {\r\n this.store.state.activeTool?.onDeactivate();\r\n this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this.store.deselectAllObjects();\r\n this.store.selectAllObjectsInViewport();\r\n }\r\n\r\n @Method()\r\n async clearSelection() {\r\n this.store.clearSelection();\r\n }\r\n\r\n @Method()\r\n async centerObjectInViewport(object: KritzelBaseObject) {\r\n object.centerInViewport();\r\n\r\n const command = new UpdateObjectCommand(this.store, this, object, object);\r\n this.store.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async getCopiedObjects(): Promise<KritzelBaseObject[]> {\r\n return this.store.state.copiedObjects?.objects || [];\r\n }\r\n\r\n @Method()\r\n async createWorkspace(workspace: KritzelWorkspace) {\r\n return this.store.createWorkspace(workspace).then(() => {\r\n this.workspacesChange.emit(this.store.state.workspaces);\r\n });\r\n }\r\n\r\n @Method()\r\n async updateWorkspace(workspace: KritzelWorkspace) {\r\n return this.store.updateWorkspace(workspace).then(() => {\r\n this.workspacesChange.emit(this.store.state.workspaces);\r\n });\r\n }\r\n\r\n @Method()\r\n async deleteWorkspace(workspace: KritzelWorkspace) {\r\n return this.store.deleteWorkspace(workspace).then(async () => {\r\n this.workspacesChange.emit(this.store.state.workspaces);\r\n });\r\n }\r\n\r\n @Method()\r\n async getWorkspaces(): Promise<KritzelWorkspace[]> {\r\n return this.store.getWorkspaces();\r\n }\r\n\r\n private _registerStateChangeListeners() {\r\n this.store.onStateChange('activeTool', this._handleActiveToolChange.bind(this));\r\n this.store.onStateChange('isFocused', this._handleIsFocusedChange.bind(this));\r\n }\r\n\r\n private _handleActiveToolChange(activeTool: KritzelBaseTool) {\r\n if (!(activeTool instanceof KritzelSelectionTool)) {\r\n this.store.clearSelection();\r\n }\r\n\r\n this.store.state.skipContextMenu = false;\r\n this.activeToolChange.emit(activeTool);\r\n KritzelKeyboardHelper.forceHideKeyboard();\r\n }\r\n\r\n private _handleIsFocusedChange(isFocused: boolean) {\r\n if (!isFocused) {\r\n this.store.resetActiveText();\r\n }\r\n }\r\n\r\n render() {\r\n const computedStyle = window.getComputedStyle(this.host);\r\n const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';\r\n const baseHandleSize = parseFloat(baseHandleSizePx);\r\n const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;\r\n\r\n return (\r\n <Host>\r\n <div class=\"debug-panel\" style={{ display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' }}>\r\n <div>ActiveWorkspaceId: {this.store.state?.activeWorkspace?.id}</div>\r\n <div>ActiveWorkspaceName: {this.store.state?.activeWorkspace?.name}</div>\r\n <div>TranslateX: {this.store.state?.translateX}</div>\r\n <div>TranslateY: {this.store.state?.translateY}</div>\r\n <div>ViewportWidth: {this.store.state?.viewportWidth}</div>\r\n <div>ViewportHeight: {this.store.state?.viewportHeight}</div>\r\n <div>ObjectsInViewport. {this.store.objects.length}</div>\r\n <div>Scale: {this.store.state?.scale}</div>\r\n <div>ActiveTool: {this.store.state?.activeTool?.name}</div>\r\n <div>HasViewportChanged: {this.store.state?.hasViewportChanged ? 'true' : 'false'}</div>\r\n <div>IsEnabled: {this.store.state?.isEnabled ? 'true' : 'false'}</div>\r\n <div>IsScaling: {this.store.state?.isScaling ? 'true' : 'false'}</div>\r\n <div>IsPanning: {this.store.state?.isPanning ? 'true' : 'false'}</div>\r\n <div>IsFocused: {this.store.state.isFocused ? 'true' : 'false'}</div>\r\n <div>IsSelecting: {this.isSelecting ? 'true' : 'false'}</div>\r\n <div>IsSelectionActive: {this.isSelectionActive ? 'true' : 'false'}</div>\r\n <div>IsResizeHandleSelected: {this.store.state.isResizeHandleSelected ? 'true' : 'false'}</div>\r\n <div>IsRotationHandleSelected: {this.store.state.isRotationHandleSelected ? 'true' : 'false'}</div>\r\n <div>IsDrawing: {this.store.state.isDrawing ? 'true' : 'false'}</div>\r\n <div>IsWriting: {this.store.state.isWriting ? 'true' : 'false'}</div>\r\n <div>PointerX: {this.store.state?.pointerX}</div>\r\n <div>PointerY: {this.store.state?.pointerY}</div>\r\n <div>SelectedObjects: {this.store.state.selectionGroup?.objects.length || 0}</div>\r\n </div>\r\n\r\n <div\r\n id=\"origin\"\r\n class=\"origin\"\r\n style={{\r\n transform: `matrix(${this.store.state?.scale}, 0, 0, ${this.store.state?.scale}, ${this.store.state?.translateX}, ${this.store.state?.translateY})`,\r\n }}\r\n >\r\n {this.store.state.objectsMap.allObjects()?.map(object => {\r\n return (\r\n <div key={object.id} style={{ display: object.isInViewport() ? 'block' : 'none', transform: object?.transformationMatrix, transformOrigin: 'top left', zIndex: object.zIndex.toString(), position: 'absolute' }}>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n id={object.id}\r\n class=\"object\"\r\n style={{\r\n height: object?.totalHeight.toString(),\r\n width: object?.totalWidth.toString(),\r\n left: '0',\r\n top: '0',\r\n position: 'absolute',\r\n transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),\r\n pointerEvents: object.markedForRemoval ? 'none' : 'auto',\r\n }}\r\n >\r\n <foreignObject\r\n x=\"0\"\r\n y=\"0\"\r\n width={object.totalWidth.toString()}\r\n height={object.totalHeight.toString()}\r\n style={{\r\n minHeight: '0',\r\n minWidth: '0',\r\n backgroundColor: object.backgroundColor,\r\n borderColor: object.borderColor,\r\n borderWidth: object.borderWidth + 'px',\r\n borderStyle: 'solid',\r\n padding: object.padding + 'px',\r\n overflow: 'visible',\r\n }}\r\n >\r\n {KritzelClassHelper.isInstanceOf<KritzelPath>(object, 'KritzelPath') && (\r\n <svg\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style={{\r\n height: object?.height.toString(),\r\n width: object?.width.toString(),\r\n position: 'absolute',\r\n overflow: 'visible',\r\n }}\r\n viewBox={object?.viewBox}\r\n >\r\n <path d={object?.d} fill={object.fill} stroke={object?.stroke} />\r\n </svg>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelImage>(object, 'KritzelImage') && (\r\n <img\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n src={object.src}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n userSelect: 'none',\r\n pointerEvents: 'none',\r\n }}\r\n draggable={false}\r\n onDragStart={e => e.preventDefault()}\r\n />\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelText>(object, 'KritzelText') && (\r\n <textarea\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n value={object.value}\r\n onKeyDown={event => object.handleKeyDown(event)}\r\n onInput={event => object.handleInput(event)}\r\n rows={object.rows}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n color: object.fontColor,\r\n fontSize: object.fontSize?.toString() + 'px',\r\n fontFamily: object.fontFamily,\r\n border: 'none',\r\n outline: 'none',\r\n resize: 'none',\r\n overflow: 'hidden',\r\n display: 'block',\r\n padding: '1px',\r\n whiteSpace: 'nowrap',\r\n pointerEvents: object.isReadonly ? 'none' : 'auto',\r\n cursor: object.isReadonly ? 'default' : 'text',\r\n caretColor: object.isReadonly ? 'transparent' : 'auto',\r\n }}\r\n ></textarea>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelCustomElement>(object, 'KritzelCustomElement') && (\r\n <div\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n pointerEvents: 'auto',\r\n overflow: 'hidden',\r\n display: 'block',\r\n }}\r\n ></div>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelSelectionGroup>(object, 'KritzelSelectionGroup') && (\r\n <div\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n }}\r\n ></div>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KrtizelSelectionBox>(object, 'KrtizelSelectionBox') && (\r\n <div\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n }}\r\n ></div>\r\n )}\r\n </foreignObject>\r\n\r\n <line\r\n x1=\"0\"\r\n y1=\"0\"\r\n x2={object.totalWidth}\r\n y2=\"0\"\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1=\"0\"\r\n y1=\"0\"\r\n x2=\"0\"\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1=\"0\"\r\n y1={object.totalHeight}\r\n x2={object.totalWidth}\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1={object.totalWidth}\r\n y1=\"0\"\r\n x2={object.totalWidth}\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle top-left\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay top-left\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle top-right\"\r\n cx={object.totalWidth}\r\n cy=\"0\"\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay top-right\"\r\n cx={object.totalWidth}\r\n cy=\"0\"\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle bottom-left\"\r\n cx=\"0\"\r\n cy={object.totalHeight}\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay bottom-left\"\r\n cx=\"0\"\r\n cy={object.totalHeight}\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle bottom-right\"\r\n cx={object.totalWidth}\r\n cy={object.totalHeight}\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay bottom-right\"\r\n cx={object.totalWidth}\r\n cy={object.totalHeight}\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <line\r\n x1={object.totalWidth / 2}\r\n y1=\"0\"\r\n x2={object.totalWidth / 2}\r\n y2={-((15 * object.scale) / this.store.state?.scale)}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"rotation-handle\"\r\n cx={object.totalWidth / 2}\r\n cy={-((15 * object.scale) / this.store.state?.scale)}\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"rotation-handle-overlay\"\r\n cx={object.totalWidth / 2}\r\n cy={-((15 * object.scale) / this.store.state?.scale)}\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n cursor: 'grab',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <g style={{ display: this.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' }}>\r\n <foreignObject\r\n x={object.totalWidth.toString()}\r\n y=\"0\"\r\n width=\"400px\"\r\n height=\"160px\"\r\n style={{ minHeight: '0', minWidth: '0', display: object.isDebugInfoVisible ? 'block' : 'none' }}\r\n >\r\n <div style={{ width: '100%', height: '100%' }}>\r\n <div style={{ whiteSpace: 'nowrap' }}>zIndex: {object.zIndex}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>translateX: {object.translateX}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>translateY: {object.translateY}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>width: {object.width}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>height: {object.height}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>scale: {object.scale}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>rotation: {object.rotation}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>x: {object.x}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>y: {object.y}</div>\r\n </div>\r\n </foreignObject>\r\n </g>\r\n </svg>\r\n </div>\r\n );\r\n })}\r\n\r\n <svg\r\n class=\"object\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style={{\r\n height: this.store.state.currentPath?.height.toString(),\r\n width: this.store.state.currentPath?.width.toString(),\r\n left: '0',\r\n top: '0',\r\n zIndex: this.store.state.currentPath?.zIndex.toString(),\r\n position: 'absolute',\r\n transform: this.store.state.currentPath?.transformationMatrix,\r\n transformOrigin: 'top left',\r\n overflow: 'visible',\r\n }}\r\n viewBox={this.store.state.currentPath?.viewBox}\r\n >\r\n <path d={this.store.state.currentPath?.d} fill={this.store.state.currentPath?.fill} stroke={this.store.state.currentPath?.stroke} />\r\n </svg>\r\n </div>\r\n\r\n {this.store.state.isContextMenuVisible && (\r\n <kritzel-context-menu\r\n class=\"context-menu\"\r\n ref={el => (this.contextMenuElement = el)}\r\n items={this.store.state.contextMenuItems}\r\n objects={this.store.state.selectionGroup?.objects || []}\r\n style={{\r\n position: 'fixed',\r\n left: `${this.store.state.contextMenuX}px`,\r\n top: `${this.store.state.contextMenuY}px`,\r\n zIndex: '10000',\r\n }}\r\n onActionSelected={event => {\r\n event.detail.action(\r\n {\r\n x: (-this.store.state.translateX + this.store.state.contextMenuX) / this.store.state.scale,\r\n y: (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale,\r\n },\r\n this.store.state.selectionGroup?.objects,\r\n );\r\n this.hideContextMenu();\r\n }}\r\n ></kritzel-context-menu>\r\n )}\r\n\r\n {this.store.state?.activeTool instanceof KritzelEraserTool && !this.store.state.isScaling && <kritzel-cursor-trail store={this.store}></kritzel-cursor-trail>}\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"kritzel-engine.js","sourceRoot":"","sources":["../../../../src/components/core/kritzel-engine/kritzel-engine.tsx"],"names":[],"mappings":"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ACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Listen, Element, Prop, Method, State, Event, EventEmitter, Watch } from '@stencil/core';\r\nimport { KritzelTool } from '../../../interfaces/tool.interface';\r\nimport { KritzelViewport } from '../../../classes/core/viewport.class';\r\nimport { KritzelPath } from '../../../classes/objects/path.class';\r\nimport { KritzelSelectionTool } from '../../../classes/tools/selection-tool.class';\r\nimport { KritzelImage } from '../../../classes/objects/image.class';\r\nimport { KritzelText } from '../../../classes/objects/text.class';\r\nimport { KritzelSelectionGroup } from '../../../classes/objects/selection-group.class';\r\nimport { KrtizelSelectionBox } from '../../../classes/objects/selection-box.class';\r\nimport { KritzelKeyHandler } from '../../../classes/handlers/key.handler';\r\nimport { KritzelBaseTool } from '../../../classes/tools/base-tool.class';\r\nimport { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';\r\nimport { KritzelEraserTool } from '../../../classes/tools/eraser-tool.class';\r\nimport { KritzelBrushToolConfig, KritzelTextToolConfig } from '../../../interfaces/toolbar-control.interface';\r\nimport { KritzelKeyboardHelper } from '../../../helpers/keyboard.helper';\r\nimport { KritzelContextMenuHandler } from '../../../classes/handlers/context-menu.handler';\r\nimport { AddObjectCommand } from '../../../classes/commands/add-object.command';\r\nimport { KritzelBaseObject } from '../../../classes/objects/base-object.class';\r\nimport { UpdateObjectCommand } from '../../../classes/commands/update-object.command';\r\nimport { RemoveObjectCommand } from '../../../classes/commands/remove-object.command';\r\nimport { KritzelToolRegistry } from '../../../classes/registries/tool.registry';\r\nimport { KritzelEventHelper } from '../../../helpers/event.helper';\r\nimport { KritzelClassHelper } from '../../../helpers/class.helper';\r\nimport { ABSOLUTE_SCALE_MAX, ABSOLUTE_SCALE_MIN } from '../../../constants/engine.constants';\r\nimport { KritzelCustomElement } from '../../../classes/objects/custom-element.class';\r\nimport { KritzelWorkspace } from '../../../classes/core/workspace.class';\r\nimport { KritzelEngineState } from '../../../interfaces/engine-state.interface';\r\nimport { KritzelCore } from '../../../classes/core/core.class';\r\nimport { KritzelDevicesHelper } from '../../../helpers/devices.helper';\r\n\r\n@Component({\r\n tag: 'kritzel-engine',\r\n styleUrl: 'kritzel-engine.css',\r\n shadow: true,\r\n})\r\nexport class KritzelEngine {\r\n @Element() host: HTMLElement;\r\n\r\n @Prop() workspace?: KritzelWorkspace;\r\n @Watch('workspace')\r\n onWorkspaceChange(newWorkspace: KritzelWorkspace | null) {\r\n if (this.core.store.state.activeWorkspace !== newWorkspace) {\r\n this.core.initializeWorkspace(newWorkspace);\r\n }\r\n }\r\n @Prop() activeTool: KritzelTool;\r\n @Prop() globalContextMenuItems: ContextMenuItem[];\r\n @Prop() objectContextMenuItems: ContextMenuItem[];\r\n @Prop({ mutable: true }) scaleMax: number = ABSOLUTE_SCALE_MAX;\r\n @Watch('scaleMax')\r\n validateScaleMax(newValue: number) {\r\n if (newValue > ABSOLUTE_SCALE_MAX) {\r\n console.warn(`scaleMax cannot be greater than ${ABSOLUTE_SCALE_MAX}.`);\r\n this.scaleMax = ABSOLUTE_SCALE_MAX;\r\n this.core.store.setState('scaleMax', this.scaleMax);\r\n } else {\r\n this.core.store.setState('scaleMax', newValue);\r\n }\r\n }\r\n @Prop({ mutable: true }) scaleMin: number = ABSOLUTE_SCALE_MIN;\r\n @Watch('scaleMin')\r\n validateScaleMin(newValue: number) {\r\n if (newValue < ABSOLUTE_SCALE_MIN) {\r\n console.warn(`scaleMin cannot be less than ${ABSOLUTE_SCALE_MIN}.`);\r\n this.scaleMin = ABSOLUTE_SCALE_MIN;\r\n this.core.store.setState('scaleMin', this.scaleMin);\r\n } else {\r\n this.core.store.setState('scaleMin', newValue);\r\n }\r\n }\r\n\r\n @Event() isEngineReady: EventEmitter<KritzelEngineState>;\r\n @Event() activeToolChange: EventEmitter<KritzelBaseTool>;\r\n @Event() workspacesChange: EventEmitter<KritzelWorkspace[]>;\r\n @Event() longpress: EventEmitter<PointerEvent>;\r\n\r\n @State() forceUpdate: number = 0;\r\n\r\n @Listen('wheel', { passive: false })\r\n handleWheel(ev) {\r\n if (this.core.store.isDisabled) {\r\n return;\r\n }\r\n\r\n if (this.core.store.state.isContextMenuVisible) {\r\n this.hideContextMenu();\r\n }\r\n\r\n this.viewport.handleWheel(ev);\r\n this.core.store.state?.activeTool?.handleWheel(ev);\r\n }\r\n\r\n @Listen('pointerdown', { passive: false })\r\n handlePointerDown(ev: PointerEvent) {\r\n if (this.core.store.isDisabled) {\r\n return;\r\n }\r\n\r\n if(KritzelDevicesHelper.isTouchDevice()){\r\n KritzelEventHelper.onLongPress(ev, (event: PointerEvent) => this.longpress.emit(event));\r\n }\r\n\r\n this.host.setPointerCapture(ev.pointerId);\r\n this.core.store.state.pointers.set(ev.pointerId, ev);\r\n\r\n this.viewport.handlePointerDown(ev);\r\n this.core.store.state?.activeTool?.handlePointerDown(ev);\r\n }\r\n\r\n @Listen('pointermove', { passive: false })\r\n handlePointerMove(ev: PointerEvent) {\r\n if (this.core.store.isDisabled) {\r\n return;\r\n }\r\n\r\n this.core.store.state.pointers.set(ev.pointerId, ev);\r\n\r\n this.viewport.handlePointerMove(ev);\r\n this.core.store.state?.activeTool?.handlePointerMove(ev);\r\n }\r\n\r\n @Listen('pointerup', { passive: false })\r\n handlePointerUp(ev: PointerEvent) {\r\n if (this.core.store.isDisabled) {\r\n return;\r\n }\r\n\r\n this.core.store.state.pointers.delete(ev.pointerId);\r\n this.host.releasePointerCapture(ev.pointerId);\r\n\r\n this.viewport.handlePointerUp(ev);\r\n this.core.store.state?.activeTool?.handlePointerUp(ev);\r\n }\r\n\r\n @Listen('pointercancel', { passive: false })\r\n handlePointerCancel(ev: PointerEvent) {\r\n if (this.core.store.isDisabled) {\r\n return;\r\n }\r\n\r\n this.host.releasePointerCapture(ev.pointerId);\r\n this.core.store.state.pointers.delete(ev.pointerId);\r\n\r\n this.viewport.handlePointerUp(ev);\r\n this.core.store.state?.activeTool?.handlePointerUp(ev);\r\n }\r\n\r\n @Listen('longpress', { passive: false })\r\n handleLongPress(ev: CustomEvent<PointerEvent>) {\r\n this.contextMenuHandler.handleContextMenu(ev.detail);\r\n }\r\n\r\n @Listen('contextmenu', { capture: false })\r\n handleContextMenu(ev: PointerEvent) {\r\n ev.preventDefault();\r\n\r\n if (this.core.store.isDisabled) {\r\n return;\r\n }\r\n\r\n if (ev.pointerType === 'touch') {\r\n return;\r\n }\r\n\r\n this.contextMenuHandler.handleContextMenu(ev);\r\n }\r\n\r\n @Listen('resize', { target: 'window' })\r\n handleResize() {\r\n this.viewport.handleResize();\r\n }\r\n\r\n @Listen('keydown', { target: 'window' })\r\n handleKeyDown(ev) {\r\n this.keyHandler.handleKeyDown(ev);\r\n }\r\n\r\n @Listen('keyup', { target: 'window' })\r\n handleKeyUp(ev) {\r\n this.keyHandler.handleKeyUp(ev);\r\n }\r\n\r\n @Method()\r\n async registerTool(toolName: string, toolClass: any, toolConfig?: KritzelTextToolConfig | KritzelBrushToolConfig): Promise<KritzelBaseTool> {\r\n if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof KritzelBaseTool)) {\r\n console.error(`Failed to register tool \"${toolName}\": Tool class must be a constructor function`);\r\n return null;\r\n }\r\n\r\n const registeredTool = KritzelToolRegistry.registerTool(toolName, toolClass, this.core);\r\n\r\n if (toolConfig) {\r\n Object.entries(toolConfig).forEach(([key, value]) => {\r\n registeredTool[key] = value;\r\n });\r\n }\r\n\r\n return Promise.resolve(registeredTool);\r\n }\r\n\r\n @Method()\r\n async changeActiveTool(tool: KritzelBaseTool) {\r\n this.core.store.state.activeTool?.onDeactivate();\r\n this.core.store.setState('activeTool', tool);\r\n this.core.deselectAllObjects();\r\n tool?.onActivate();\r\n }\r\n\r\n @Method()\r\n async disable() {\r\n this.core.store.setState('isEnabled', false);\r\n this.core.rerender();\r\n }\r\n\r\n @Method()\r\n async enable() {\r\n this.core.store.setState('isEnabled', true);\r\n this.core.rerender();\r\n }\r\n\r\n @Method()\r\n async delete() {\r\n this.core.delete();\r\n }\r\n\r\n @Method()\r\n async copy() {\r\n this.core.copy();\r\n }\r\n\r\n @Method()\r\n async paste(x: number, y: number) {\r\n this.core.paste(x, y);\r\n }\r\n\r\n @Method()\r\n async bringForward(object?: KritzelBaseObject<any>) {\r\n this.core.bringForward(object);\r\n }\r\n\r\n @Method()\r\n async sendBackward(object?: KritzelBaseObject<any>) {\r\n this.core.sendBackward(object);\r\n }\r\n\r\n @Method()\r\n async bringToFront(object?: KritzelBaseObject<any>) {\r\n this.core.bringToFront(object);\r\n }\r\n\r\n @Method()\r\n async sendToBack(object?: KritzelBaseObject<any>) {\r\n this.core.sendToBack(object);\r\n }\r\n\r\n @Method()\r\n async undo() {\r\n this.core.history.undo();\r\n }\r\n\r\n @Method()\r\n async redo() {\r\n this.core.history.redo();\r\n }\r\n\r\n @Method()\r\n async hideContextMenu() {\r\n this.core.store.state.pointers.clear();\r\n this.core.store.setState('isContextMenuVisible', false);\r\n this.core.store.setState('selectionBox', null);\r\n this.core.store.setState('isSelecting', false);\r\n this.core.store.setState('isEnabled', true);\r\n this.core.rerender();\r\n }\r\n\r\n @Method()\r\n async getObjectById<T extends KritzelBaseObject>(id: string): Promise<T | null> {\r\n const object = this.core.store.allObjects.find(obj => obj.id === id) as T | undefined;\r\n return object || null;\r\n }\r\n\r\n @Method()\r\n async addObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n this.core.deselectAllObjects();\r\n\r\n object.id = object.generateId();\r\n object._core = this.core;\r\n object.scale = object.scale ? object.scale : this.core.store.state.scale;\r\n object.zIndex = this.core.store.currentZIndex;\r\n\r\n const command = new AddObjectCommand(this.core, this, object);\r\n this.core.history.executeCommand(command);\r\n\r\n return 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 this.core.deselectAllObjects();\r\n\r\n const command = new UpdateObjectCommand(this.core, this, object, updatedProperties);\r\n this.core.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async removeObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n this.core.deselectAllObjects();\r\n\r\n const command = new RemoveObjectCommand(this.core, this, object);\r\n this.core.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async getSelectedObjects(): Promise<KritzelBaseObject<any>[]> {\r\n return this.core.store.state.selectionGroup ? this.core.store.state.selectionGroup.objects : [];\r\n }\r\n\r\n @Method()\r\n async selectObjects(objects: KritzelBaseObject[]) {\r\n this.core.store.state.activeTool?.onDeactivate();\r\n this.core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this.core.deselectAllObjects();\r\n this.core.selectObjects(objects);\r\n }\r\n\r\n @Method()\r\n async selectAllObjectsInViewport() {\r\n this.core.store.state.activeTool?.onDeactivate();\r\n this.core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this.core.deselectAllObjects();\r\n this.core.selectAllObjectsInViewport();\r\n }\r\n\r\n @Method()\r\n async clearSelection() {\r\n this.core.clearSelection();\r\n }\r\n\r\n @Method()\r\n async centerObjectInViewport(object: KritzelBaseObject) {\r\n object.centerInViewport();\r\n\r\n const command = new UpdateObjectCommand(this.core, this, object, object);\r\n this.core.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async getCopiedObjects(): Promise<KritzelBaseObject[]> {\r\n return this.core.store.state.copiedObjects?.objects || [];\r\n }\r\n\r\n @Method()\r\n async createWorkspace(workspace: KritzelWorkspace): Promise<KritzelWorkspace | null> {\r\n workspace._core = this.core;\r\n await this.core.createWorkspace(workspace);\r\n this.workspacesChange.emit(this.core.store.state.workspaces);\r\n return workspace;\r\n }\r\n\r\n @Method()\r\n async updateWorkspace(workspace: KritzelWorkspace): Promise<void> {\r\n await this.core.updateWorkspace(workspace);\r\n this.workspacesChange.emit(this.core.store.state.workspaces);\r\n }\r\n\r\n @Method()\r\n async deleteWorkspace(workspace: KritzelWorkspace): Promise<void> {\r\n await this.core.deleteWorkspace(workspace);\r\n this.workspacesChange.emit(this.core.store.state.workspaces);\r\n }\r\n\r\n @Method()\r\n async getWorkspaces(): Promise<KritzelWorkspace[]> {\r\n return this.core.getWorkspaces();\r\n }\r\n\r\n @Method()\r\n async getActiveWorkspace(): Promise<KritzelWorkspace> {\r\n return this.core.store.state.activeWorkspace;\r\n }\r\n\r\n core: KritzelCore;\r\n viewport: KritzelViewport;\r\n contextMenuHandler: KritzelContextMenuHandler;\r\n keyHandler: KritzelKeyHandler;\r\n contextMenuElement: HTMLKritzelContextMenuElement | null = null;\r\n\r\n get isSelecting() {\r\n return this.core.store.state.activeTool instanceof KritzelSelectionTool && this.core.store.state.isSelecting;\r\n }\r\n\r\n get isSelectionActive() {\r\n return this.core.store.state.activeTool instanceof KritzelSelectionTool && this.core.store.state.selectionGroup !== null;\r\n }\r\n\r\n constructor() {\r\n this.core = new KritzelCore(this);\r\n }\r\n\r\n componentWillLoad() {\r\n this.validateScaleMax(this.scaleMax);\r\n this.validateScaleMin(this.scaleMin);\r\n }\r\n\r\n async componentDidLoad() {\r\n this.contextMenuHandler = new KritzelContextMenuHandler(this.core, this.globalContextMenuItems, this.objectContextMenuItems);\r\n this.keyHandler = new KritzelKeyHandler(this.core);\r\n this.viewport = new KritzelViewport(this.core, this.host);\r\n\r\n await this.core.initializeDatabase();\r\n await this.core.initializeWorkspace(this.workspace);\r\n\r\n this._registerStateChangeListeners();\r\n\r\n if (this.core.store.state.isReady === false) {\r\n this.core.store.setState('isReady', true);\r\n this.isEngineReady.emit(this.core.store.state);\r\n }\r\n }\r\n\r\n private _registerStateChangeListeners() {\r\n this.core.store.onStateChange('activeTool', this._handleActiveToolChange.bind(this));\r\n }\r\n\r\n private _handleActiveToolChange(activeTool: KritzelBaseTool) {\r\n if (!(activeTool instanceof KritzelSelectionTool)) {\r\n this.core.clearSelection();\r\n }\r\n\r\n this.core.store.setState('skipContextMenu', false);\r\n this.activeToolChange.emit(activeTool);\r\n KritzelKeyboardHelper.forceHideKeyboard();\r\n }\r\n\r\n render() {\r\n const computedStyle = window.getComputedStyle(this.host);\r\n const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';\r\n const baseHandleSize = parseFloat(baseHandleSizePx);\r\n const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;\r\n\r\n return (\r\n <Host>\r\n <div class=\"debug-panel\" style={{ display: this.core.store.state.debugInfo.showViewportInfo ? 'block' : 'none' }}>\r\n <div>ActiveWorkspaceId: {this.core.store.state?.activeWorkspace?.id}</div>\r\n <div>ActiveWorkspaceName: {this.core.store.state?.activeWorkspace?.name}</div>\r\n <div>TranslateX: {this.core.store.state?.translateX}</div>\r\n <div>TranslateY: {this.core.store.state?.translateY}</div>\r\n <div>ViewportWidth: {this.core.store.state?.viewportWidth}</div>\r\n <div>ViewportHeight: {this.core.store.state?.viewportHeight}</div>\r\n <div>Scale: {this.core.store.state?.scale}</div>\r\n <div>ActiveTool: {this.core.store.state?.activeTool?.name}</div>\r\n <div>HasViewportChanged: {this.core.store.state?.hasViewportChanged ? 'true' : 'false'}</div>\r\n <div>IsEnabled: {this.core.store.state?.isEnabled ? 'true' : 'false'}</div>\r\n <div>IsScaling: {this.core.store.state?.isScaling ? 'true' : 'false'}</div>\r\n <div>IsPanning: {this.core.store.state?.isPanning ? 'true' : 'false'}</div>\r\n <div>IsSelecting: {this.isSelecting ? 'true' : 'false'}</div>\r\n <div>IsSelectionActive: {this.isSelectionActive ? 'true' : 'false'}</div>\r\n <div>IsResizeHandleSelected: {this.core.store.state.isResizeHandleSelected ? 'true' : 'false'}</div>\r\n <div>IsRotationHandleSelected: {this.core.store.state.isRotationHandleSelected ? 'true' : 'false'}</div>\r\n <div>IsDrawing: {this.core.store.state.isDrawing ? 'true' : 'false'}</div>\r\n <div>IsWriting: {this.core.store.state.isWriting ? 'true' : 'false'}</div>\r\n <div>PointerX: {this.core.store.state?.pointerX}</div>\r\n <div>PointerY: {this.core.store.state?.pointerY}</div>\r\n <div>SelectedObjects: {this.core.store.state.selectionGroup?.objects.length || 0}</div>\r\n </div>\r\n\r\n <div\r\n id=\"origin\"\r\n class=\"origin\"\r\n style={{\r\n transform: `matrix(${this.core.store.state?.scale}, 0, 0, ${this.core.store.state?.scale}, ${this.core.store.state?.translateX}, ${this.core.store.state?.translateY})`,\r\n }}\r\n >\r\n {this.core.store.state.objectsMap.allObjects()?.map(object => {\r\n return (\r\n <div\r\n key={object.id}\r\n style={{\r\n display: object.isInViewport() ? 'block' : 'none',\r\n transform: object?.transformationMatrix,\r\n transformOrigin: 'top left',\r\n zIndex: object.zIndex.toString(),\r\n position: 'absolute',\r\n }}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n id={object.id}\r\n class=\"object\"\r\n style={{\r\n height: object?.totalHeight.toString(),\r\n width: object?.totalWidth.toString(),\r\n left: '0',\r\n top: '0',\r\n position: 'absolute',\r\n transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),\r\n pointerEvents: object.markedForRemoval ? 'none' : 'auto',\r\n }}\r\n >\r\n <foreignObject\r\n x=\"0\"\r\n y=\"0\"\r\n width={object.totalWidth.toString()}\r\n height={object.totalHeight.toString()}\r\n style={{\r\n minHeight: '0',\r\n minWidth: '0',\r\n backgroundColor: object.backgroundColor,\r\n borderColor: object.borderColor,\r\n borderWidth: object.borderWidth + 'px',\r\n borderStyle: 'solid',\r\n padding: object.padding + 'px',\r\n overflow: 'visible',\r\n }}\r\n >\r\n {KritzelClassHelper.isInstanceOf<KritzelPath>(object, 'KritzelPath') && (\r\n <svg\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style={{\r\n height: object?.height.toString(),\r\n width: object?.width.toString(),\r\n position: 'absolute',\r\n overflow: 'visible',\r\n }}\r\n viewBox={object?.viewBox}\r\n >\r\n <path\r\n d={object?.d}\r\n fill={object.fill}\r\n stroke={object?.stroke}\r\n />\r\n </svg>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelImage>(object, 'KritzelImage') && (\r\n <img\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n src={object.src}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n userSelect: 'none',\r\n pointerEvents: 'none',\r\n }}\r\n draggable={false}\r\n onDragStart={e => e.preventDefault()}\r\n />\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelText>(object, 'KritzelText') && (\r\n <textarea\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n value={object.value}\r\n onKeyDown={event => object.handleKeyDown(event)}\r\n onInput={event => object.handleInput(event)}\r\n rows={object.rows}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n color: object.fontColor,\r\n fontSize: object.fontSize?.toString() + 'px',\r\n fontFamily: object.fontFamily,\r\n border: 'none',\r\n outline: 'none',\r\n resize: 'none',\r\n overflow: 'hidden',\r\n display: 'block',\r\n padding: '1px',\r\n whiteSpace: 'nowrap',\r\n pointerEvents: object.isReadonly ? 'none' : 'auto',\r\n cursor: object.isReadonly ? 'default' : 'text',\r\n caretColor: object.isReadonly ? 'transparent' : 'auto',\r\n }}\r\n ></textarea>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelCustomElement>(object, 'KritzelCustomElement') && (\r\n <div\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n pointerEvents: 'auto',\r\n overflow: 'hidden',\r\n display: 'block',\r\n }}\r\n ></div>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelSelectionGroup>(object, 'KritzelSelectionGroup') && (\r\n <div\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n }}\r\n ></div>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KrtizelSelectionBox>(object, 'KrtizelSelectionBox') && (\r\n <div\r\n ref={el => (el ? object.mount(el) : object.unmount())}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n backgroundColor: KritzelDevicesHelper.isFirefox() ? object.backgroundColor : 'transparent',\r\n borderWidth: KritzelDevicesHelper.isFirefox() ? object.borderWidth + 'px' : '0',\r\n borderStyle: KritzelDevicesHelper.isFirefox() ? 'solid' : 'none',\r\n borderColor: KritzelDevicesHelper.isFirefox() ? object.borderColor : 'transparent',\r\n }}\r\n ></div>\r\n )}\r\n </foreignObject>\r\n\r\n <line\r\n x1=\"0\"\r\n y1=\"0\"\r\n x2={object.totalWidth}\r\n y2=\"0\"\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1=\"0\"\r\n y1=\"0\"\r\n x2=\"0\"\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1=\"0\"\r\n y1={object.totalHeight}\r\n x2={object.totalWidth}\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1={object.totalWidth}\r\n y1=\"0\"\r\n x2={object.totalWidth}\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle top-left\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r={`${(baseHandleSize * object.scale) / this.core.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay top-left\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r={`${(baseHandleTouchSize * object.scale) / this.core.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle top-right\"\r\n cx={object.totalWidth}\r\n cy=\"0\"\r\n r={`${(baseHandleSize * object.scale) / this.core.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay top-right\"\r\n cx={object.totalWidth}\r\n cy=\"0\"\r\n r={`${(baseHandleTouchSize * object.scale) / this.core.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle bottom-left\"\r\n cx=\"0\"\r\n cy={object.totalHeight}\r\n r={`${(baseHandleSize * object.scale) / this.core.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay bottom-left\"\r\n cx=\"0\"\r\n cy={object.totalHeight}\r\n r={`${(baseHandleTouchSize * object.scale) / this.core.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle bottom-right\"\r\n cx={object.totalWidth}\r\n cy={object.totalHeight}\r\n r={`${(baseHandleSize * object.scale) / this.core.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay bottom-right\"\r\n cx={object.totalWidth}\r\n cy={object.totalHeight}\r\n r={`${(baseHandleTouchSize * object.scale) / this.core.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <line\r\n x1={object.totalWidth / 2}\r\n y1=\"0\"\r\n x2={object.totalWidth / 2}\r\n y2={-((15 * object.scale) / this.core.store.state?.scale)}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.core.store.state?.scale})`,\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"rotation-handle\"\r\n cx={object.totalWidth / 2}\r\n cy={-((15 * object.scale) / this.core.store.state?.scale)}\r\n r={`${(baseHandleSize * object.scale) / this.core.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"rotation-handle-overlay\"\r\n cx={object.totalWidth / 2}\r\n cy={-((15 * object.scale) / this.core.store.state?.scale)}\r\n r={`${(baseHandleTouchSize * object.scale) / this.core.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n cursor: 'grab',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <g style={{ display: this.core.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' }}>\r\n <foreignObject\r\n x={object.totalWidth.toString()}\r\n y=\"0\"\r\n width=\"400px\"\r\n height=\"160px\"\r\n style={{ minHeight: '0', minWidth: '0', display: object.isDebugInfoVisible ? 'block' : 'none' }}\r\n >\r\n <div style={{ width: '100%', height: '100%' }}>\r\n <div style={{ whiteSpace: 'nowrap' }}>zIndex: {object.zIndex}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>translateX: {object.translateX}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>translateY: {object.translateY}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>width: {object.width}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>height: {object.height}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>scale: {object.scale}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>rotation: {object.rotation}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>x: {object.x}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>y: {object.y}</div>\r\n </div>\r\n </foreignObject>\r\n </g>\r\n </svg>\r\n </div>\r\n );\r\n })}\r\n\r\n <svg\r\n key=\"current-path\"\r\n class=\"object\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width={this.core.store.state.currentPath?.width}\r\n height={this.core.store.state.currentPath?.height}\r\n style={{\r\n left: '0',\r\n top: '0',\r\n zIndex: this.core.store.state.currentPath?.zIndex.toString(),\r\n position: 'absolute',\r\n transform: this.core.store.state.currentPath?.transformationMatrix,\r\n transformOrigin: 'top left',\r\n overflow: 'visible',\r\n }}\r\n viewBox={this.core.store.state.currentPath?.viewBox}\r\n >\r\n <path d={this.core.store.state.currentPath?.d} fill={this.core.store.state.currentPath?.fill} stroke={this.core.store.state.currentPath?.stroke} />\r\n </svg>\r\n </div>\r\n\r\n {this.core.store.state.isContextMenuVisible && (\r\n <kritzel-context-menu\r\n class=\"context-menu\"\r\n ref={el => (this.contextMenuElement = el)}\r\n items={this.core.store.state.contextMenuItems}\r\n objects={this.core.store.state.selectionGroup?.objects || []}\r\n style={{\r\n position: 'fixed',\r\n left: `${this.core.store.state.contextMenuX}px`,\r\n top: `${this.core.store.state.contextMenuY}px`,\r\n zIndex: '10000',\r\n }}\r\n onActionSelected={event => {\r\n event.detail.action(\r\n {\r\n x: (-this.core.store.state.translateX + this.core.store.state.contextMenuX) / this.core.store.state.scale,\r\n y: (-this.core.store.state.translateY + this.core.store.state.contextMenuY) / this.core.store.state.scale,\r\n },\r\n this.core.store.state.selectionGroup?.objects,\r\n );\r\n this.hideContextMenu();\r\n }}\r\n onClose={() => this.hideContextMenu()}\r\n ></kritzel-context-menu>\r\n )}\r\n\r\n {this.core.store.state?.activeTool instanceof KritzelEraserTool && !this.core.store.state.isScaling && <kritzel-cursor-trail core={this.core}></kritzel-cursor-trail>}\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -14,7 +14,7 @@ export class KritzelBrushStyle {
14
14
  value: option.value,
15
15
  label: option.label,
16
16
  }));
17
- return (h(Host, { key: 'd7af382fe6f613aa16a5146785990ad2faa17f60' }, h("kritzel-dropdown", { key: '6d6d330d415c210058834b2968774b3db2ab7fc4', options: dropdownOptions, value: this.type, onValueChanged: event => this.handleDropdownValueChange(event) }, h("button", { key: 'c9fb33795b8e25f68c1d2ae248dc82a6de29e199', class: "brush-style-button", slot: "prefix" }, h("kritzel-icon", { key: '975c95b545a1c27ae2984405ac298592eec9743d', name: this.type, size: 16 })))));
17
+ return (h(Host, { key: '0eb1359bd2bc9d007edf804e62f4b47b1c91c507' }, h("kritzel-dropdown", { key: '47fea48007590b350d1005ce8440f95e4b0cdd9f', options: dropdownOptions, value: this.type, onValueChanged: event => this.handleDropdownValueChange(event) }, h("button", { key: '76ef20892c37258211caa5511845a2b2551afd80', class: "brush-style-button", slot: "prefix" }, h("kritzel-icon", { key: '396b36343f0c91274131f3f148c57c22ed988fec', name: this.type, size: 16 })))));
18
18
  }
19
19
  static get is() { return "kritzel-brush-style"; }
20
20
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"kritzel-brush-style.js","sourceRoot":"","sources":["../../../../src/components/shared/kritzel-brush-style/kritzel-brush-style.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAgB,KAAK,EAAE,MAAM,eAAe,CAAC;AAU9E,MAAM,OAAO,iBAAiB;IAE5B,IAAI,GAA0B,KAAK,CAAC;IAE5B,YAAY,GAAuB;QACzC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;QAC9B,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;KAC/C,CAAC;IAGF,UAAU,CAAsC;IAEhD,yBAAyB,CAAC,KAA0B;QAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAA+B,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM;QACJ,MAAM,eAAe,GAAqB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzE,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC,CAAC;QAEJ,OAAO,CACL,EAAC,IAAI;YACH,yEAAkB,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;gBAC1H,+DAAQ,KAAK,EAAC,oBAAoB,EAAC,IAAI,EAAC,QAAQ;oBAC9C,qEAAc,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAiB,CACjD,CACQ,CACd,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Prop, EventEmitter, Event } from '@stencil/core';\r\nimport { DropdownOption } from '../kritzel-dropdown/kritzel-dropdown'; // Import DropdownOption\r\n\r\nexport interface BrushStyleOption extends DropdownOption {}\r\n\r\n@Component({\r\n tag: 'kritzel-brush-style',\r\n styleUrl: 'kritzel-brush-style.css',\r\n shadow: true,\r\n})\r\nexport class KritzelBrushStyle {\r\n @Prop()\r\n type: 'pen' | 'highlighter' = 'pen';\r\n\r\n @Prop() brushOptions: BrushStyleOption[] = [\r\n { value: 'pen', label: 'Pen' },\r\n { value: 'highlighter', label: 'Highlighter' },\r\n ];\r\n\r\n @Event()\r\n typeChange: EventEmitter<'pen' | 'highlighter'>;\r\n\r\n handleDropdownValueChange(event: CustomEvent<string>) {\r\n this.typeChange.emit(event.detail as 'pen' | 'highlighter');\r\n }\r\n\r\n render() {\r\n const dropdownOptions: DropdownOption[] = this.brushOptions.map(option => ({\r\n value: option.value,\r\n label: option.label,\r\n }));\r\n\r\n return (\r\n <Host>\r\n <kritzel-dropdown options={dropdownOptions} value={this.type} onValueChanged={event => this.handleDropdownValueChange(event)}>\r\n <button class=\"brush-style-button\" slot=\"prefix\">\r\n <kritzel-icon name={this.type} size={16}></kritzel-icon>\r\n </button>\r\n </kritzel-dropdown>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"kritzel-brush-style.js","sourceRoot":"","sources":["../../../../src/components/shared/kritzel-brush-style/kritzel-brush-style.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAgB,KAAK,EAAE,MAAM,eAAe,CAAC;AAU9E,MAAM,OAAO,iBAAiB;IACpB,IAAI,GAA0B,KAAK,CAAC;IACpC,YAAY,GAAuB;QACzC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;QAC9B,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;KAC/C,CAAC;IAEO,UAAU,CAAsC;IAEzD,yBAAyB,CAAC,KAA0B;QAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAA+B,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM;QACJ,MAAM,eAAe,GAAqB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzE,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC,CAAC;QAEJ,OAAO,CACL,EAAC,IAAI;YACH,yEAAkB,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;gBAC1H,+DAAQ,KAAK,EAAC,oBAAoB,EAAC,IAAI,EAAC,QAAQ;oBAC9C,qEAAc,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAiB,CACjD,CACQ,CACd,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Prop, EventEmitter, Event } from '@stencil/core';\r\nimport { DropdownOption } from '../kritzel-dropdown/kritzel-dropdown'; // Import DropdownOption\r\n\r\nexport interface BrushStyleOption extends DropdownOption {}\r\n\r\n@Component({\r\n tag: 'kritzel-brush-style',\r\n styleUrl: 'kritzel-brush-style.css',\r\n shadow: true,\r\n})\r\nexport class KritzelBrushStyle {\r\n @Prop() type: 'pen' | 'highlighter' = 'pen';\r\n @Prop() brushOptions: BrushStyleOption[] = [\r\n { value: 'pen', label: 'Pen' },\r\n { value: 'highlighter', label: 'Highlighter' },\r\n ];\r\n\r\n @Event() typeChange: EventEmitter<'pen' | 'highlighter'>;\r\n\r\n handleDropdownValueChange(event: CustomEvent<string>) {\r\n this.typeChange.emit(event.detail as 'pen' | 'highlighter');\r\n }\r\n\r\n render() {\r\n const dropdownOptions: DropdownOption[] = this.brushOptions.map(option => ({\r\n value: option.value,\r\n label: option.label,\r\n }));\r\n\r\n return (\r\n <Host>\r\n <kritzel-dropdown options={dropdownOptions} value={this.type} onValueChanged={event => this.handleDropdownValueChange(event)}>\r\n <button class=\"brush-style-button\" slot=\"prefix\">\r\n <kritzel-icon name={this.type} size={16}></kritzel-icon>\r\n </button>\r\n </kritzel-dropdown>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -28,13 +28,13 @@ export class KritzelColor {
28
28
  }
29
29
  render() {
30
30
  const isColorVeryLight = this.isLightColor(this.value);
31
- return (h(Host, { key: '1468f3502f7d10d182ac72a05ce4b1e520353f8a' }, h("div", { key: 'd30d47667b1b72a970c4ee0da887dd59a663eae7', class: "checkerboard-bg", style: {
31
+ return (h(Host, { key: '198dba41e1600d76faace18de78191d2b7a551ec' }, h("div", { key: 'ee690cffb7925e09cb2c51022eec607247a4849f', class: "checkerboard-bg", style: {
32
32
  width: `${this.size}px`,
33
33
  height: `${this.size}px`,
34
34
  borderRadius: '50%',
35
35
  display: 'inline-block',
36
36
  position: 'relative',
37
- } }, h("div", { key: '073fd85967e53b609103a9fe47028bcda849e5ec', class: {
37
+ } }, h("div", { key: '66cc8df8fabd008db8c00942994875e3e8d722ce', class: {
38
38
  'color-circle': true,
39
39
  'white': isColorVeryLight,
40
40
  }, style: {
@@ -1 +1 @@
1
- {"version":3,"file":"kritzel-color.js","sourceRoot":"","sources":["../../../../src/components/shared/kritzel-color/kritzel-color.tsx"],"names":[],"mappings":"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","sourcesContent":["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"]}
1
+ {"version":3,"file":"kritzel-color.js","sourceRoot":"","sources":["../../../../src/components/shared/kritzel-color/kritzel-color.tsx"],"names":[],"mappings":"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","sourcesContent":["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() value: string;\r\n @Prop() 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"]}
@@ -34,10 +34,15 @@
34
34
  box-sizing: border-box;
35
35
  }
36
36
 
37
+ .color-container:focus-visible {
38
+ outline: var(--kritzel-color-palette-focus-outline, 2px auto #e3e3e3);
39
+ }
40
+
37
41
  .color-container:hover {
38
42
  background-color: var(--kritzel-color-palette-hover-background-color, #ebebeb);
39
43
  }
40
44
 
45
+
41
46
  .color-container.selected {
42
47
  border-color: var(--kritzel-selection-border-color, #007AFF);
43
48
  background-color: var(--kritzel-color-palette-selected-background-color);
@@ -19,12 +19,12 @@ export class KritzelColorPalette {
19
19
  render() {
20
20
  const displayedColors = this.isExpanded ? this.colors : this.colors.slice(0, 6);
21
21
  const expandedHeight = this.isExpanded ? this.calculateHeight() : '32px';
22
- return (h(Host, { key: 'dddc32b0904800092d45727e833181af32eb8766' }, h("div", { key: '293cbed8e9c62b5f409b7dcdca0df5de9d65b758', class: {
22
+ return (h(Host, { key: '2ead7cd530ce181856e5f582f086a22a1fe69390' }, h("div", { key: 'fcc75b267f36e271d50615bfde42a29c28aa2536', class: {
23
23
  'color-grid': true,
24
24
  'expanded': this.isExpanded,
25
25
  }, style: {
26
- height: expandedHeight
27
- } }, displayedColors.map(color => (h("div", { class: {
26
+ height: expandedHeight,
27
+ } }, displayedColors.map(color => (h("div", { tabIndex: 0, class: {
28
28
  'color-container': true,
29
29
  'selected': this.selectedColor === color,
30
30
  }, onClick: () => this.handleColorClick(color) }, h("kritzel-color", { value: color })))))));
@@ -1 +1 @@
1
- {"version":3,"file":"kritzel-color-palette.js","sourceRoot":"","sources":["../../../../src/components/shared/kritzel-color-palette/kritzel-color-palette.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAgB,KAAK,EAAE,MAAM,eAAe,CAAC;AAO9E,MAAM,OAAO,mBAAmB;IAE9B,MAAM,GAAa,EAAE,CAAC;IAGtB,aAAa,GAAkB,IAAI,CAAC;IAGpC,UAAU,GAAY,KAAK,CAAC;IAG5B,QAAQ,GAAY,KAAK,CAAC;IAG1B,WAAW,CAAuB;IAE1B,gBAAgB,CAAC,KAAa;QACpC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEO,eAAe;QACrB,MAAM,YAAY,GAAG,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,CAAC,CAAC;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;QAC9D,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;IAC5D,CAAC;IAED,MAAM;QACJ,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAEzE,OAAO,CACL,EAAC,IAAI;YACH,4DACE,KAAK,EAAE;oBACL,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,EACD,KAAK,EAAE;oBACL,MAAM,EAAE,cAAc;iBACvB,IAEA,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAC5B,WACE,KAAK,EAAE;oBACL,iBAAiB,EAAE,IAAI;oBACvB,UAAU,EAAE,IAAI,CAAC,aAAa,KAAK,KAAK;iBACzC,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAE3C,qBAAe,KAAK,EAAE,KAAK,GAAkB,CACzC,CACP,CAAC,CACE,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Prop, EventEmitter, Event } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'kritzel-color-palette',\r\n styleUrl: 'kritzel-color-palette.css',\r\n shadow: true,\r\n})\r\nexport class KritzelColorPalette {\r\n @Prop()\r\n colors: string[] = [];\r\n\r\n @Prop({ mutable: true })\r\n selectedColor: string | null = null;\r\n\r\n @Prop()\r\n isExpanded: boolean = false;\r\n\r\n @Prop()\r\n isOpaque: boolean = false;\r\n\r\n @Event()\r\n colorChange: EventEmitter<string>;\r\n\r\n private handleColorClick(color: string) {\r\n this.selectedColor = color;\r\n this.colorChange.emit(color);\r\n }\r\n\r\n private calculateHeight(): string {\r\n const colorsPerRow = 6;\r\n const rowHeight = 32;\r\n const gap = 8;\r\n const rowCount = Math.ceil(this.colors.length / colorsPerRow);\r\n return `${rowCount * rowHeight + (rowCount - 1) * gap}px`;\r\n }\r\n\r\n render() {\r\n const displayedColors = this.isExpanded ? this.colors : this.colors.slice(0, 6);\r\n const expandedHeight = this.isExpanded ? this.calculateHeight() : '32px';\r\n\r\n return (\r\n <Host>\r\n <div\r\n class={{\r\n 'color-grid': true,\r\n 'expanded': this.isExpanded,\r\n }}\r\n style={{\r\n height: expandedHeight\r\n }}\r\n >\r\n {displayedColors.map(color => (\r\n <div\r\n class={{\r\n 'color-container': true,\r\n 'selected': this.selectedColor === color,\r\n }}\r\n onClick={() => this.handleColorClick(color)}\r\n >\r\n <kritzel-color value={color}></kritzel-color>\r\n </div>\r\n ))}\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"kritzel-color-palette.js","sourceRoot":"","sources":["../../../../src/components/shared/kritzel-color-palette/kritzel-color-palette.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAgB,KAAK,EAAE,MAAM,eAAe,CAAC;AAO9E,MAAM,OAAO,mBAAmB;IACtB,MAAM,GAAa,EAAE,CAAC;IACL,aAAa,GAAkB,IAAI,CAAC;IACrD,UAAU,GAAY,KAAK,CAAC;IAC5B,QAAQ,GAAY,KAAK,CAAC;IAEzB,WAAW,CAAuB;IAEnC,gBAAgB,CAAC,KAAa;QACpC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEO,eAAe;QACrB,MAAM,YAAY,GAAG,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,CAAC,CAAC;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;QAC9D,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;IAC5D,CAAC;IAED,MAAM;QACJ,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAEzE,OAAO,CACL,EAAC,IAAI;YACH,4DACE,KAAK,EAAE;oBACL,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,EACD,KAAK,EAAE;oBACL,MAAM,EAAE,cAAc;iBACvB,IAEA,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAC5B,WACE,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE;oBACL,iBAAiB,EAAE,IAAI;oBACvB,UAAU,EAAE,IAAI,CAAC,aAAa,KAAK,KAAK;iBACzC,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAE3C,qBAAe,KAAK,EAAE,KAAK,GAAkB,CACzC,CACP,CAAC,CACE,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Prop, EventEmitter, Event } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'kritzel-color-palette',\r\n styleUrl: 'kritzel-color-palette.css',\r\n shadow: true,\r\n})\r\nexport class KritzelColorPalette {\r\n @Prop() colors: string[] = [];\r\n @Prop({ mutable: true }) selectedColor: string | null = null;\r\n @Prop() isExpanded: boolean = false;\r\n @Prop() isOpaque: boolean = false;\r\n\r\n @Event() colorChange: EventEmitter<string>;\r\n\r\n private handleColorClick(color: string) {\r\n this.selectedColor = color;\r\n this.colorChange.emit(color);\r\n }\r\n\r\n private calculateHeight(): string {\r\n const colorsPerRow = 6;\r\n const rowHeight = 32;\r\n const gap = 8;\r\n const rowCount = Math.ceil(this.colors.length / colorsPerRow);\r\n return `${rowCount * rowHeight + (rowCount - 1) * gap}px`;\r\n }\r\n\r\n render() {\r\n const displayedColors = this.isExpanded ? this.colors : this.colors.slice(0, 6);\r\n const expandedHeight = this.isExpanded ? this.calculateHeight() : '32px';\r\n\r\n return (\r\n <Host>\r\n <div\r\n class={{\r\n 'color-grid': true,\r\n 'expanded': this.isExpanded,\r\n }}\r\n style={{\r\n height: expandedHeight,\r\n }}\r\n >\r\n {displayedColors.map(color => (\r\n <div\r\n tabIndex={0}\r\n class={{\r\n 'color-container': true,\r\n 'selected': this.selectedColor === color,\r\n }}\r\n onClick={() => this.handleColorClick(color)}\r\n >\r\n <kritzel-color value={color}></kritzel-color>\r\n </div>\r\n ))}\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -1,7 +1,15 @@
1
1
  import { Host, h } from "@stencil/core";
2
2
  export class KritzelDropdown {
3
3
  options = [];
4
+ optionsChanged() {
5
+ this.updateInternalValue(this.internalValue, true);
6
+ }
4
7
  value;
8
+ externalValueChanged(newValue) {
9
+ if (newValue !== this.internalValue) {
10
+ this.updateInternalValue(newValue, false);
11
+ }
12
+ }
5
13
  width;
6
14
  selectStyles = {};
7
15
  internalValue;
@@ -15,14 +23,6 @@ export class KritzelDropdown {
15
23
  this.evaluateSuffixContent();
16
24
  this.evaluatePrefixContent();
17
25
  }
18
- externalValueChanged(newValue) {
19
- if (newValue !== this.internalValue) {
20
- this.updateInternalValue(newValue, false);
21
- }
22
- }
23
- optionsChanged() {
24
- this.updateInternalValue(this.internalValue, true);
25
- }
26
26
  updateInternalValue(proposedValue, emitChange) {
27
27
  let finalValue = proposedValue;
28
28
  if (this.options && this.options.length > 0) {
@@ -80,7 +80,7 @@ export class KritzelDropdown {
80
80
  'has-suffix-border': this.hasSuffixContent,
81
81
  'has-prefix-border': this.hasPrefixContent,
82
82
  };
83
- return (h(Host, { key: '32c5f5a4f807c1e316c91b795c005b8d30ce6189' }, h("div", { key: 'b1cbeff18e688da4a2f7472be290b9527a619f07', class: "dropdown-wrapper" }, h("slot", { key: 'b3bbb7e21c6f5620cab41aa4b1c7206b6c75fd86', name: "prefix", ref: el => this.prefixSlotElement = el, onSlotchange: this.evaluatePrefixContent }), h("select", { key: '8b2dcdc125bee59cf29fce7c980b755e78d5816e', class: selectClasses, style: { ...this.selectStyles, width: this.width }, onInput: this.handleSelectChange }, this.options.map(option => (h("option", { value: option.value, style: option.style, selected: option.value === this.internalValue }, option.label)))), h("slot", { key: '8d83f0dea41ac959bf2392948efef33bb70d0154', name: "suffix", ref: el => this.suffixSlotElement = el, onSlotchange: this.evaluateSuffixContent }))));
83
+ return (h(Host, { key: 'f24911715685ced571843ba7be6631248c8519b7' }, h("div", { key: '520fdb74afdef8bd5228f76074e51981f44b910d', class: "dropdown-wrapper" }, h("slot", { key: 'cf6628437946b57ad0b27c066639e0b64b5a28f8', name: "prefix", ref: el => (this.prefixSlotElement = el), onSlotchange: this.evaluatePrefixContent }), h("select", { key: '3203ccd5b9c8b84e8f41bddfcb07786e879f0035', class: selectClasses, style: { ...this.selectStyles, width: this.width }, onInput: this.handleSelectChange }, this.options.map(option => (h("option", { value: option.value, style: option.style, selected: option.value === this.internalValue }, option.label)))), h("slot", { key: 'd0abb52e082db81860c09d2c48b7c065adb406f3', name: "suffix", ref: el => (this.suffixSlotElement = el), onSlotchange: this.evaluateSuffixContent }))));
84
84
  }
85
85
  static get is() { return "kritzel-dropdown"; }
86
86
  static get encapsulation() { return "shadow"; }
@@ -208,11 +208,11 @@ export class KritzelDropdown {
208
208
  }
209
209
  static get watchers() {
210
210
  return [{
211
- "propName": "value",
212
- "methodName": "externalValueChanged"
213
- }, {
214
211
  "propName": "options",
215
212
  "methodName": "optionsChanged"
213
+ }, {
214
+ "propName": "value",
215
+ "methodName": "externalValueChanged"
216
216
  }];
217
217
  }
218
218
  }
@@ -1 +1 @@
1
- {"version":3,"file":"kritzel-dropdown.js","sourceRoot":"","sources":["../../../../src/components/shared/kritzel-dropdown/kritzel-dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State, Event, EventEmitter, Watch } from '@stencil/core';\r\n\r\nexport interface DropdownOption {\r\n value: string;\r\n label: string;\r\n style?: any; // For individual option styling, e.g., font family\r\n}\r\n\r\n@Component({\r\n tag: 'kritzel-dropdown',\r\n styleUrl: 'kritzel-dropdown.css',\r\n shadow: true,\r\n})\r\nexport class KritzelDropdown {\r\n @Prop() \r\n options: DropdownOption[] = [];\r\n \r\n @Prop() \r\n value: string;\r\n \r\n @Prop() \r\n width?: string;\r\n \r\n @Prop() \r\n selectStyles?: any = {}; \r\n\r\n @State() \r\n internalValue: string;\r\n\r\n @State() \r\n hasSuffixContent: boolean = false;\r\n\r\n @State()\r\n hasPrefixContent: boolean = false;\r\n\r\n @Event() \r\n valueChanged: EventEmitter<string>;\r\n\r\n private suffixSlotElement?: HTMLSlotElement;\r\n private prefixSlotElement?: HTMLSlotElement;\r\n\r\n componentWillLoad() {\r\n this.updateInternalValue(this.value, false);\r\n this.evaluateSuffixContent();\r\n this.evaluatePrefixContent();\r\n }\r\n\r\n @Watch('value')\r\n externalValueChanged(newValue: string) {\r\n if (newValue !== this.internalValue) {\r\n this.updateInternalValue(newValue, false);\r\n }\r\n }\r\n \r\n @Watch('options')\r\n optionsChanged() {\r\n this.updateInternalValue(this.internalValue, true);\r\n }\r\n\r\n private updateInternalValue(proposedValue: string, emitChange: boolean) {\r\n let finalValue = proposedValue;\r\n if (this.options && this.options.length > 0) {\r\n const isValidValue = this.options.some(opt => opt.value === finalValue);\r\n if (!finalValue || !isValidValue) {\r\n finalValue = this.options[0].value;\r\n }\r\n } else {\r\n finalValue = undefined;\r\n }\r\n\r\n if (this.internalValue !== finalValue) {\r\n this.internalValue = finalValue;\r\n if (emitChange || (proposedValue !== finalValue && proposedValue !== undefined)) {\r\n this.valueChanged.emit(this.internalValue);\r\n }\r\n }\r\n }\r\n\r\n private handleSelectChange = (event: Event) => {\r\n const newValue = (event.target as HTMLSelectElement).value;\r\n if (this.internalValue !== newValue) {\r\n this.internalValue = newValue;\r\n this.valueChanged.emit(this.internalValue);\r\n }\r\n };\r\n\r\n private evaluateSuffixContent = () => {\r\n if (this.suffixSlotElement) {\r\n const newHasContent = this.suffixSlotElement.assignedNodes({ flatten: true }).length > 0;\r\n if (this.hasSuffixContent !== newHasContent) {\r\n this.hasSuffixContent = newHasContent;\r\n }\r\n } else {\r\n if (this.hasSuffixContent !== false) {\r\n this.hasSuffixContent = false;\r\n }\r\n }\r\n }\r\n\r\n private evaluatePrefixContent = () => {\r\n if (this.prefixSlotElement) {\r\n const newHasContent = this.prefixSlotElement.assignedNodes({ flatten: true }).length > 0;\r\n if (this.hasPrefixContent !== newHasContent) {\r\n this.hasPrefixContent = newHasContent;\r\n }\r\n } else {\r\n if (this.hasPrefixContent !== false) {\r\n this.hasPrefixContent = false;\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const selectClasses = {\r\n 'custom-select': true,\r\n 'has-suffix-border': this.hasSuffixContent,\r\n 'has-prefix-border': this.hasPrefixContent,\r\n };\r\n\r\n return (\r\n <Host>\r\n <div class=\"dropdown-wrapper\">\r\n <slot\r\n name=\"prefix\"\r\n ref={el => this.prefixSlotElement = el as HTMLSlotElement}\r\n onSlotchange={this.evaluatePrefixContent}\r\n ></slot>\r\n <select\r\n class={selectClasses}\r\n style={{ ...this.selectStyles, width: this.width }}\r\n onInput={this.handleSelectChange}\r\n >\r\n {this.options.map(option => (\r\n <option\r\n value={option.value}\r\n style={option.style}\r\n selected={option.value === this.internalValue}\r\n >\r\n {option.label}\r\n </option>\r\n ))}\r\n </select>\r\n <slot \r\n name=\"suffix\"\r\n ref={el => this.suffixSlotElement = el as HTMLSlotElement}\r\n onSlotchange={this.evaluateSuffixContent}\r\n ></slot>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"kritzel-dropdown.js","sourceRoot":"","sources":["../../../../src/components/shared/kritzel-dropdown/kritzel-dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State, Event, EventEmitter, Watch } from '@stencil/core';\r\n\r\nexport interface DropdownOption {\r\n value: string;\r\n label: string;\r\n style?: any; // For individual option styling, e.g., font family\r\n}\r\n\r\n@Component({\r\n tag: 'kritzel-dropdown',\r\n styleUrl: 'kritzel-dropdown.css',\r\n shadow: true,\r\n})\r\nexport class KritzelDropdown {\r\n @Prop() options: DropdownOption[] = [];\r\n @Watch('options')\r\n optionsChanged() {\r\n this.updateInternalValue(this.internalValue, true);\r\n }\r\n @Prop() value: string;\r\n @Watch('value')\r\n externalValueChanged(newValue: string) {\r\n if (newValue !== this.internalValue) {\r\n this.updateInternalValue(newValue, false);\r\n }\r\n }\r\n @Prop() width?: string;\r\n @Prop() selectStyles?: any = {};\r\n\r\n @State() internalValue: string;\r\n @State() hasSuffixContent: boolean = false;\r\n @State() hasPrefixContent: boolean = false;\r\n\r\n @Event() valueChanged: EventEmitter<string>;\r\n\r\n private suffixSlotElement?: HTMLSlotElement;\r\n private prefixSlotElement?: HTMLSlotElement;\r\n\r\n componentWillLoad() {\r\n this.updateInternalValue(this.value, false);\r\n this.evaluateSuffixContent();\r\n this.evaluatePrefixContent();\r\n }\r\n\r\n private updateInternalValue(proposedValue: string, emitChange: boolean) {\r\n let finalValue = proposedValue;\r\n if (this.options && this.options.length > 0) {\r\n const isValidValue = this.options.some(opt => opt.value === finalValue);\r\n if (!finalValue || !isValidValue) {\r\n finalValue = this.options[0].value;\r\n }\r\n } else {\r\n finalValue = undefined;\r\n }\r\n\r\n if (this.internalValue !== finalValue) {\r\n this.internalValue = finalValue;\r\n if (emitChange || (proposedValue !== finalValue && proposedValue !== undefined)) {\r\n this.valueChanged.emit(this.internalValue);\r\n }\r\n }\r\n }\r\n\r\n private handleSelectChange = (event: Event) => {\r\n const newValue = (event.target as HTMLSelectElement).value;\r\n if (this.internalValue !== newValue) {\r\n this.internalValue = newValue;\r\n this.valueChanged.emit(this.internalValue);\r\n }\r\n };\r\n\r\n private evaluateSuffixContent = () => {\r\n if (this.suffixSlotElement) {\r\n const newHasContent = this.suffixSlotElement.assignedNodes({ flatten: true }).length > 0;\r\n if (this.hasSuffixContent !== newHasContent) {\r\n this.hasSuffixContent = newHasContent;\r\n }\r\n } else {\r\n if (this.hasSuffixContent !== false) {\r\n this.hasSuffixContent = false;\r\n }\r\n }\r\n };\r\n\r\n private evaluatePrefixContent = () => {\r\n if (this.prefixSlotElement) {\r\n const newHasContent = this.prefixSlotElement.assignedNodes({ flatten: true }).length > 0;\r\n if (this.hasPrefixContent !== newHasContent) {\r\n this.hasPrefixContent = newHasContent;\r\n }\r\n } else {\r\n if (this.hasPrefixContent !== false) {\r\n this.hasPrefixContent = false;\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n const selectClasses = {\r\n 'custom-select': true,\r\n 'has-suffix-border': this.hasSuffixContent,\r\n 'has-prefix-border': this.hasPrefixContent,\r\n };\r\n\r\n return (\r\n <Host>\r\n <div class=\"dropdown-wrapper\">\r\n <slot name=\"prefix\" ref={el => (this.prefixSlotElement = el as HTMLSlotElement)} onSlotchange={this.evaluatePrefixContent}></slot>\r\n <select class={selectClasses} style={{ ...this.selectStyles, width: this.width }} onInput={this.handleSelectChange}>\r\n {this.options.map(option => (\r\n <option value={option.value} style={option.style} selected={option.value === this.internalValue}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </select>\r\n <slot name=\"suffix\" ref={el => (this.suffixSlotElement = el as HTMLSlotElement)} onSlotchange={this.evaluateSuffixContent}></slot>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -4,7 +4,7 @@ export class KritzelFont {
4
4
  size = 24;
5
5
  color = '#000000';
6
6
  render() {
7
- return (h(Host, { key: 'd318355704f1bf66468dd793e5e38da827076d3b' }, h("div", { key: '447b4fba97f5d1900060859943438733667aed08', class: "font-preview", style: {
7
+ return (h(Host, { key: '0d0f0f75b64f579ca236950334fafde7f0ef2a38' }, h("div", { key: 'e71524879ded9727891bdd43f1a41ae5eef49175', class: "font-preview", style: {
8
8
  fontFamily: this.fontFamily,
9
9
  fontSize: `${this.size}px`,
10
10
  color: this.color
@@ -1 +1 @@
1
- {"version":3,"file":"kritzel-font.js","sourceRoot":"","sources":["../../../../src/components/shared/kritzel-font/kritzel-font.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAOzD,MAAM,OAAO,WAAW;IAEtB,UAAU,GAAW,mBAAmB,CAAC;IAGzC,IAAI,GAAW,EAAE,CAAC;IAGlB,KAAK,GAAW,SAAS,CAAC;IAE1B,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DACE,KAAK,EAAC,cAAc,EACpB,KAAK,EAAE;oBACL,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI;oBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,QAGG,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, Prop, h } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'kritzel-font',\r\n styleUrl: 'kritzel-font.css',\r\n shadow: true,\r\n})\r\nexport class KritzelFont {\r\n @Prop()\r\n fontFamily: string = 'Arial, sans-serif';\r\n\r\n @Prop()\r\n size: number = 24;\r\n\r\n @Prop()\r\n color: string = '#000000';\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <div\r\n class=\"font-preview\"\r\n style={{\r\n fontFamily: this.fontFamily,\r\n fontSize: `${this.size}px`,\r\n color: this.color\r\n }}\r\n >\r\n A\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"kritzel-font.js","sourceRoot":"","sources":["../../../../src/components/shared/kritzel-font/kritzel-font.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAOzD,MAAM,OAAO,WAAW;IACd,UAAU,GAAW,mBAAmB,CAAC;IACzC,IAAI,GAAW,EAAE,CAAC;IAClB,KAAK,GAAW,SAAS,CAAC;IAElC,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DACE,KAAK,EAAC,cAAc,EACpB,KAAK,EAAE;oBACL,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI;oBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,QAGG,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, Prop, h } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'kritzel-font',\r\n styleUrl: 'kritzel-font.css',\r\n shadow: true,\r\n})\r\nexport class KritzelFont {\r\n @Prop() fontFamily: string = 'Arial, sans-serif';\r\n @Prop() size: number = 24;\r\n @Prop() color: string = '#000000';\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <div\r\n class=\"font-preview\"\r\n style={{\r\n fontFamily: this.fontFamily,\r\n fontSize: `${this.size}px`,\r\n color: this.color\r\n }}\r\n >\r\n A\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -31,7 +31,7 @@ export class KritzelFontFamily {
31
31
  label: option.label,
32
32
  style: { fontFamily: option.value },
33
33
  }));
34
- return (h(Host, { key: '801b1dbc2b7da7d00fb00ed6a8d8ee7be3e9ef17' }, h("kritzel-dropdown", { key: '5f774c0b31ca16a1c8acda1c73ea3aacc2784649', options: dropdownOptions, value: this.selectedFontFamily, onValueChanged: this.handleDropdownValueChange, selectStyles: { fontFamily: this.selectedFontFamily } }, h("button", { key: '3c101155ff08854f665750f8988fb3691a77c04a', class: "font-style-button", slot: "suffix" }, "B"), h("button", { key: '48d2ead137a8a35f06fb8b5487431e2ce613c755', class: "font-style-button italic-text", slot: "suffix" }, "I"))));
34
+ return (h(Host, { key: 'd05a099adf8623b8c67d68f3861c1cd401e86e2c' }, h("kritzel-dropdown", { key: 'b95af194feaaf5748bb0d584617d217e4b3b8180', options: dropdownOptions, value: this.selectedFontFamily, onValueChanged: this.handleDropdownValueChange, selectStyles: { fontFamily: this.selectedFontFamily } }, h("button", { key: '04a0a72f9297dc6c34a2a2019cae111d8725bcf4', class: "font-style-button", slot: "suffix" }, "B"), h("button", { key: 'f14b59f29bcce33f890b74c1fb8d1dad0ad6fd31', class: "font-style-button italic-text", slot: "suffix" }, "I"))));
35
35
  }
36
36
  static get is() { return "kritzel-font-family"; }
37
37
  static get encapsulation() { return "shadow"; }