kritzel-stencil 0.0.126 → 0.0.128

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
  2. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
  3. package/dist/cjs/index-C7Read21.js +2638 -0
  4. package/dist/cjs/index-C7Read21.js.map +1 -0
  5. package/dist/cjs/index-CUSIflVf.js +1597 -0
  6. package/dist/cjs/index-CUSIflVf.js.map +1 -0
  7. package/dist/cjs/index.cjs.js +17 -0
  8. package/dist/cjs/index.cjs.js.map +1 -0
  9. package/dist/cjs/kritzel-brush-style_22.cjs.entry.js +3133 -0
  10. package/dist/cjs/loader.cjs.js +14 -0
  11. package/dist/cjs/loader.cjs.js.map +1 -0
  12. package/dist/cjs/stencil.cjs.js +26 -0
  13. package/dist/cjs/stencil.cjs.js.map +1 -0
  14. package/dist/collection/classes/commands/add-object.command.js +17 -0
  15. package/dist/collection/classes/commands/add-object.command.js.map +1 -0
  16. package/dist/collection/classes/commands/add-selection-group.command.js +20 -0
  17. package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -0
  18. package/dist/collection/classes/commands/base.command.js +15 -0
  19. package/dist/collection/classes/commands/base.command.js.map +1 -0
  20. package/dist/collection/classes/commands/batch.command.js +14 -0
  21. package/dist/collection/classes/commands/batch.command.js.map +1 -0
  22. package/dist/collection/classes/commands/move-selection-group.command.js +25 -0
  23. package/dist/collection/classes/commands/move-selection-group.command.js.map +1 -0
  24. package/dist/collection/classes/commands/remove-object.command.js +20 -0
  25. package/dist/collection/classes/commands/remove-object.command.js.map +1 -0
  26. package/dist/collection/classes/commands/remove-selection-group.command.js +18 -0
  27. package/dist/collection/classes/commands/remove-selection-group.command.js.map +1 -0
  28. package/dist/collection/classes/commands/resize-selection-group.command.js +18 -0
  29. package/dist/collection/classes/commands/resize-selection-group.command.js.map +1 -0
  30. package/dist/collection/classes/commands/rotate-selection-group.command.js +24 -0
  31. package/dist/collection/classes/commands/rotate-selection-group.command.js.map +1 -0
  32. package/dist/collection/classes/commands/update-object.command.js +32 -0
  33. package/dist/collection/classes/commands/update-object.command.js.map +1 -0
  34. package/dist/collection/classes/commands/update-viewport.command.js +23 -0
  35. package/dist/collection/classes/commands/update-viewport.command.js.map +1 -0
  36. package/dist/collection/classes/database.class.js +227 -0
  37. package/dist/collection/classes/database.class.js.map +1 -0
  38. package/dist/collection/classes/handlers/base.handler.js +7 -0
  39. package/dist/collection/classes/handlers/base.handler.js.map +1 -0
  40. package/dist/collection/classes/handlers/context-menu.handler.js +47 -0
  41. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -0
  42. package/dist/collection/classes/handlers/hover.handler.js +19 -0
  43. package/dist/collection/classes/handlers/hover.handler.js.map +1 -0
  44. package/dist/collection/classes/handlers/key.handler.js +80 -0
  45. package/dist/collection/classes/handlers/key.handler.js.map +1 -0
  46. package/dist/collection/classes/handlers/move.handler.js +100 -0
  47. package/dist/collection/classes/handlers/move.handler.js.map +1 -0
  48. package/dist/collection/classes/handlers/resize.handler.js +158 -0
  49. package/dist/collection/classes/handlers/resize.handler.js.map +1 -0
  50. package/dist/collection/classes/handlers/rotation.handler.js +118 -0
  51. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -0
  52. package/dist/collection/classes/handlers/selection.handler.js +200 -0
  53. package/dist/collection/classes/handlers/selection.handler.js.map +1 -0
  54. package/dist/collection/classes/history.class.js +84 -0
  55. package/dist/collection/classes/history.class.js.map +1 -0
  56. package/dist/collection/classes/objects/base-object.class.js +205 -0
  57. package/dist/collection/classes/objects/base-object.class.js.map +1 -0
  58. package/dist/collection/classes/objects/custom-element.class.js +53 -0
  59. package/dist/collection/classes/objects/custom-element.class.js.map +1 -0
  60. package/dist/collection/classes/objects/image.class.js +54 -0
  61. package/dist/collection/classes/objects/image.class.js.map +1 -0
  62. package/dist/collection/classes/objects/path.class.js +269 -0
  63. package/dist/collection/classes/objects/path.class.js.map +1 -0
  64. package/dist/collection/classes/objects/selection-box.class.js +23 -0
  65. package/dist/collection/classes/objects/selection-box.class.js.map +1 -0
  66. package/dist/collection/classes/objects/selection-group.class.js +158 -0
  67. package/dist/collection/classes/objects/selection-group.class.js.map +1 -0
  68. package/dist/collection/classes/objects/text.class.js +144 -0
  69. package/dist/collection/classes/objects/text.class.js.map +1 -0
  70. package/dist/{stencil/icon-registry.class-Bw5YkOTi.js → collection/classes/registries/icon-registry.class.js} +7 -7
  71. package/dist/collection/classes/registries/icon-registry.class.js.map +1 -0
  72. package/dist/collection/classes/registries/tool.registry.js +18 -0
  73. package/dist/collection/classes/registries/tool.registry.js.map +1 -0
  74. package/dist/collection/classes/reviver.class.js +66 -0
  75. package/dist/collection/classes/reviver.class.js.map +1 -0
  76. package/dist/collection/classes/store.class.js +410 -0
  77. package/dist/collection/classes/store.class.js.map +1 -0
  78. package/dist/collection/classes/structures/circular-buffer.structure.js +46 -0
  79. package/dist/collection/classes/structures/circular-buffer.structure.js.map +1 -0
  80. package/dist/collection/classes/structures/octree.structure.js +115 -0
  81. package/dist/collection/classes/structures/octree.structure.js.map +1 -0
  82. package/dist/collection/classes/tools/base-tool.class.js +31 -0
  83. package/dist/collection/classes/tools/base-tool.class.js.map +1 -0
  84. package/dist/collection/classes/tools/brush-tool.class.js +116 -0
  85. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -0
  86. package/dist/collection/classes/tools/eraser-tool.class.js +86 -0
  87. package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -0
  88. package/dist/collection/classes/tools/image-tool.class.js +91 -0
  89. package/dist/collection/classes/tools/image-tool.class.js.map +1 -0
  90. package/dist/collection/classes/tools/selection-tool.class.js +156 -0
  91. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -0
  92. package/dist/collection/classes/tools/text-tool.class.js +116 -0
  93. package/dist/collection/classes/tools/text-tool.class.js.map +1 -0
  94. package/dist/collection/classes/viewport.class.js +152 -0
  95. package/dist/collection/classes/viewport.class.js.map +1 -0
  96. package/dist/collection/classes/workspace.class.js +10 -0
  97. package/dist/collection/classes/workspace.class.js.map +1 -0
  98. package/dist/collection/collection-manifest.json +33 -0
  99. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -0
  100. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +154 -0
  101. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -0
  102. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +29 -0
  103. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +670 -0
  104. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -0
  105. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +60 -0
  106. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +1483 -0
  107. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -0
  108. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +44 -0
  109. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +100 -0
  110. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -0
  111. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +21 -0
  112. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +108 -0
  113. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -0
  114. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +46 -0
  115. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +147 -0
  116. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +1 -0
  117. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +53 -0
  118. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +215 -0
  119. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -0
  120. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -0
  121. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +92 -0
  122. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -0
  123. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -0
  124. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +115 -0
  125. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -0
  126. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -0
  127. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +112 -0
  128. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -0
  129. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +17 -0
  130. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +94 -0
  131. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +1 -0
  132. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +166 -0
  133. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +272 -0
  134. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -0
  135. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +218 -0
  136. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -0
  137. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +74 -0
  138. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +324 -0
  139. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -0
  140. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +28 -0
  141. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +91 -0
  142. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +1 -0
  143. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +17 -0
  144. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +181 -0
  145. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -0
  146. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +55 -0
  147. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +141 -0
  148. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -0
  149. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +19 -0
  150. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +136 -0
  151. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -0
  152. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.css +19 -0
  153. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +116 -0
  154. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +1 -0
  155. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +124 -0
  156. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +280 -0
  157. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -0
  158. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +33 -0
  159. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +79 -0
  160. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +1 -0
  161. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.css +5 -0
  162. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +209 -0
  163. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -0
  164. package/dist/{stencil/default-text-tool.config-DvOZmpuR.js → collection/configs/default-brush-tool.config.js} +2 -38
  165. package/dist/collection/configs/default-brush-tool.config.js.map +1 -0
  166. package/dist/collection/configs/default-engine-state.js +61 -0
  167. package/dist/collection/configs/default-engine-state.js.map +1 -0
  168. package/dist/collection/configs/default-text-tool.config.js +32 -0
  169. package/dist/collection/configs/default-text-tool.config.js.map +1 -0
  170. package/dist/collection/constants/engine.constants.js +3 -0
  171. package/dist/collection/constants/engine.constants.js.map +1 -0
  172. package/dist/collection/enums/event-button.enum.js +7 -0
  173. package/dist/collection/enums/event-button.enum.js.map +1 -0
  174. package/dist/collection/enums/handle-type.enum.js +8 -0
  175. package/dist/collection/enums/handle-type.enum.js.map +1 -0
  176. package/dist/collection/helpers/class.helper.js +6 -0
  177. package/dist/collection/helpers/class.helper.js.map +1 -0
  178. package/dist/collection/helpers/devices.helper.js +6 -0
  179. package/dist/collection/helpers/devices.helper.js.map +1 -0
  180. package/dist/collection/helpers/event.helper.js +58 -0
  181. package/dist/collection/helpers/event.helper.js.map +1 -0
  182. package/dist/collection/helpers/geometry.helper.js +53 -0
  183. package/dist/collection/helpers/geometry.helper.js.map +1 -0
  184. package/dist/collection/helpers/html.helper.js +36 -0
  185. package/dist/collection/helpers/html.helper.js.map +1 -0
  186. package/dist/collection/helpers/keyboard.helper.js +31 -0
  187. package/dist/collection/helpers/keyboard.helper.js.map +1 -0
  188. package/dist/collection/helpers/math.helper.js +6 -0
  189. package/dist/collection/helpers/math.helper.js.map +1 -0
  190. package/dist/collection/helpers/object.helper.js +38 -0
  191. package/dist/collection/helpers/object.helper.js.map +1 -0
  192. package/dist/collection/index.js +21 -0
  193. package/dist/collection/index.js.map +1 -0
  194. package/dist/collection/interfaces/bounding-box.interface.js +2 -0
  195. package/dist/collection/interfaces/bounding-box.interface.js.map +1 -0
  196. package/dist/collection/interfaces/command.interface.js +2 -0
  197. package/dist/collection/interfaces/command.interface.js.map +1 -0
  198. package/dist/collection/interfaces/context-menu-item.interface.js +2 -0
  199. package/dist/collection/interfaces/context-menu-item.interface.js.map +1 -0
  200. package/dist/collection/interfaces/debug-info.interface.js +2 -0
  201. package/dist/collection/interfaces/debug-info.interface.js.map +1 -0
  202. package/dist/collection/interfaces/engine-state.interface.js +2 -0
  203. package/dist/collection/interfaces/engine-state.interface.js.map +1 -0
  204. package/dist/collection/interfaces/menu-item.interface.js +2 -0
  205. package/dist/collection/interfaces/menu-item.interface.js.map +1 -0
  206. package/dist/collection/interfaces/object.interface.js +2 -0
  207. package/dist/collection/interfaces/object.interface.js.map +1 -0
  208. package/dist/collection/interfaces/path-options.interface.js +2 -0
  209. package/dist/collection/interfaces/path-options.interface.js.map +1 -0
  210. package/dist/collection/interfaces/point.interface.js +2 -0
  211. package/dist/collection/interfaces/point.interface.js.map +1 -0
  212. package/dist/collection/interfaces/polygon.interface.js +2 -0
  213. package/dist/collection/interfaces/polygon.interface.js.map +1 -0
  214. package/dist/collection/interfaces/selection-state.interface.js +2 -0
  215. package/dist/collection/interfaces/selection-state.interface.js.map +1 -0
  216. package/dist/collection/interfaces/serializable.interface.js +2 -0
  217. package/dist/collection/interfaces/serializable.interface.js.map +1 -0
  218. package/dist/collection/interfaces/tool.interface.js +2 -0
  219. package/dist/collection/interfaces/tool.interface.js.map +1 -0
  220. package/dist/collection/interfaces/toolbar-control.interface.js +2 -0
  221. package/dist/collection/interfaces/toolbar-control.interface.js.map +1 -0
  222. package/dist/collection/types/state.types.js +2 -0
  223. package/dist/collection/types/state.types.js.map +1 -0
  224. package/dist/components/index.d.ts +8 -0
  225. package/dist/components/index.js +28 -0
  226. package/dist/components/index.js.map +1 -0
  227. package/dist/components/kritzel-brush-style.js +9 -0
  228. package/dist/components/kritzel-brush-style.js.map +1 -0
  229. package/dist/components/kritzel-color-palette.js +9 -0
  230. package/dist/components/kritzel-color-palette.js.map +1 -0
  231. package/dist/components/kritzel-color.js +9 -0
  232. package/dist/components/kritzel-color.js.map +1 -0
  233. package/dist/components/kritzel-context-menu.js +9 -0
  234. package/dist/components/kritzel-context-menu.js.map +1 -0
  235. package/dist/components/kritzel-control-brush-config.js +9 -0
  236. package/dist/components/kritzel-control-brush-config.js.map +1 -0
  237. package/dist/components/kritzel-control-text-config.js +9 -0
  238. package/dist/components/kritzel-control-text-config.js.map +1 -0
  239. package/dist/components/kritzel-controls.js +9 -0
  240. package/dist/components/kritzel-controls.js.map +1 -0
  241. package/dist/components/kritzel-cursor-trail.js +9 -0
  242. package/dist/components/kritzel-cursor-trail.js.map +1 -0
  243. package/dist/components/kritzel-dropdown.js +9 -0
  244. package/dist/components/kritzel-dropdown.js.map +1 -0
  245. package/dist/components/kritzel-editor.js +439 -0
  246. package/dist/components/kritzel-editor.js.map +1 -0
  247. package/dist/components/kritzel-engine.js +9 -0
  248. package/dist/components/kritzel-engine.js.map +1 -0
  249. package/dist/components/kritzel-font-family.js +9 -0
  250. package/dist/components/kritzel-font-family.js.map +1 -0
  251. package/dist/components/kritzel-font-size.js +9 -0
  252. package/dist/components/kritzel-font-size.js.map +1 -0
  253. package/dist/components/kritzel-font.js +9 -0
  254. package/dist/components/kritzel-font.js.map +1 -0
  255. package/dist/components/kritzel-icon.js +9 -0
  256. package/dist/components/kritzel-icon.js.map +1 -0
  257. package/dist/components/kritzel-menu.d.ts +11 -0
  258. package/dist/components/kritzel-menu.js +9 -0
  259. package/dist/components/kritzel-menu.js.map +1 -0
  260. package/dist/components/kritzel-portal.d.ts +11 -0
  261. package/dist/components/kritzel-portal.js +9 -0
  262. package/dist/components/kritzel-portal.js.map +1 -0
  263. package/dist/components/kritzel-split-button.d.ts +11 -0
  264. package/dist/components/kritzel-split-button.js +9 -0
  265. package/dist/components/kritzel-split-button.js.map +1 -0
  266. package/dist/components/kritzel-stroke-size.js +9 -0
  267. package/dist/components/kritzel-stroke-size.js.map +1 -0
  268. package/dist/components/kritzel-tooltip.js +9 -0
  269. package/dist/components/kritzel-tooltip.js.map +1 -0
  270. package/dist/components/kritzel-utility-panel.js +9 -0
  271. package/dist/components/kritzel-utility-panel.js.map +1 -0
  272. package/dist/components/kritzel-workspace-manager.d.ts +11 -0
  273. package/dist/components/kritzel-workspace-manager.js +9 -0
  274. package/dist/components/kritzel-workspace-manager.js.map +1 -0
  275. package/dist/{stencil/kritzel-color.entry.js → components/p-5CJxFNEE.js} +31 -11
  276. package/dist/components/p-5CJxFNEE.js.map +1 -0
  277. package/dist/{stencil/brush-tool.class-D1U3x9_Y.js → components/p-B7VrEdgP.js} +77 -110
  278. package/dist/components/p-B7VrEdgP.js.map +1 -0
  279. package/dist/{stencil/kritzel-color-palette.entry.js → components/p-BAPUTr3K.js} +40 -12
  280. package/dist/components/p-BAPUTr3K.js.map +1 -0
  281. package/dist/{stencil/kritzel-controls.entry.js → components/p-BB22cVkU.js} +135 -27
  282. package/dist/components/p-BB22cVkU.js.map +1 -0
  283. package/dist/components/p-BLmFBe2a.js +96 -0
  284. package/dist/components/p-BLmFBe2a.js.map +1 -0
  285. package/dist/components/p-BU2q3PRS.js +84 -0
  286. package/dist/components/p-BU2q3PRS.js.map +1 -0
  287. package/dist/components/p-BZ-j_4CK.js +46 -0
  288. package/dist/components/p-BZ-j_4CK.js.map +1 -0
  289. package/dist/components/p-BaKb8ZLg.js +104 -0
  290. package/dist/components/p-BaKb8ZLg.js.map +1 -0
  291. package/dist/components/p-Bb6od8He.js +42 -0
  292. package/dist/components/p-Bb6od8He.js.map +1 -0
  293. package/dist/components/p-BcQTDgzV.js +56 -0
  294. package/dist/components/p-BcQTDgzV.js.map +1 -0
  295. package/dist/components/p-BeVv4o5c.js +14 -0
  296. package/dist/components/p-BeVv4o5c.js.map +1 -0
  297. package/dist/components/p-BmJbJwkH.js +167 -0
  298. package/dist/components/p-BmJbJwkH.js.map +1 -0
  299. package/dist/components/p-BqrTPNyu.js +1330 -0
  300. package/dist/components/p-BqrTPNyu.js.map +1 -0
  301. package/dist/{stencil/kritzel-dropdown.entry.js → components/p-BvlGgLAQ.js} +39 -11
  302. package/dist/components/p-BvlGgLAQ.js.map +1 -0
  303. package/dist/components/p-BzSz74Ci.js +56 -0
  304. package/dist/components/p-BzSz74Ci.js.map +1 -0
  305. package/dist/components/p-D-zg05gA.js +3148 -0
  306. package/dist/components/p-D-zg05gA.js.map +1 -0
  307. package/dist/{stencil/event-button.enum-D8W6LE-c.js → components/p-D8W6LE-c.js} +2 -2
  308. package/dist/components/p-D8W6LE-c.js.map +1 -0
  309. package/dist/components/p-DV4ERZv5.js +112 -0
  310. package/dist/components/p-DV4ERZv5.js.map +1 -0
  311. package/dist/{stencil/kritzel-cursor-trail.entry.js → components/p-DtmZW6eP.js} +32 -11
  312. package/dist/components/p-DtmZW6eP.js.map +1 -0
  313. package/dist/components/p-V4ui5aWj.js +63 -0
  314. package/dist/components/p-V4ui5aWj.js.map +1 -0
  315. package/dist/{stencil/kritzel-font-family.entry.js → components/p-_ntxNi8v.js} +37 -11
  316. package/dist/components/p-_ntxNi8v.js.map +1 -0
  317. package/dist/components/p-a7KmQzo4.js +113 -0
  318. package/dist/components/p-a7KmQzo4.js.map +1 -0
  319. package/dist/components/p-hSuNJiIq.js +152 -0
  320. package/dist/components/p-hSuNJiIq.js.map +1 -0
  321. package/dist/{stencil/kritzel-tooltip.entry.js → components/p-jG1e48OE.js} +39 -14
  322. package/dist/components/p-jG1e48OE.js.map +1 -0
  323. package/dist/components/p-rQeWFfPG.js +54 -0
  324. package/dist/components/p-rQeWFfPG.js.map +1 -0
  325. package/dist/components/p-sQmW5NRu.js +156 -0
  326. package/dist/components/p-sQmW5NRu.js.map +1 -0
  327. package/dist/esm/app-globals-DQuL1Twl.js +6 -0
  328. package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
  329. package/dist/esm/index-J4NpPimy.js +2611 -0
  330. package/dist/esm/index-J4NpPimy.js.map +1 -0
  331. package/dist/esm/index-NiIEUDzj.js +1570 -0
  332. package/dist/esm/index-NiIEUDzj.js.map +1 -0
  333. package/dist/esm/index.js +2 -0
  334. package/dist/esm/index.js.map +1 -0
  335. package/dist/esm/kritzel-brush-style_22.entry.js +3110 -0
  336. package/dist/esm/loader.js +12 -0
  337. package/dist/esm/loader.js.map +1 -0
  338. package/dist/esm/stencil.js +22 -0
  339. package/dist/esm/stencil.js.map +1 -0
  340. package/dist/index.cjs.js +1 -0
  341. package/dist/index.js +1 -0
  342. package/dist/stencil/index.esm.js +1 -16
  343. package/dist/stencil/index.esm.js.map +1 -1
  344. package/dist/stencil/loader.esm.js.map +1 -1
  345. package/dist/stencil/p-4a0009e7.entry.js +2 -0
  346. package/dist/stencil/p-4a0009e7.entry.js.map +1 -0
  347. package/dist/stencil/p-DQuL1Twl.js +2 -0
  348. package/dist/stencil/p-DQuL1Twl.js.map +1 -0
  349. package/dist/stencil/p-J4NpPimy.js +2 -0
  350. package/dist/stencil/p-J4NpPimy.js.map +1 -0
  351. package/dist/stencil/p-NiIEUDzj.js +3 -0
  352. package/dist/stencil/p-NiIEUDzj.js.map +1 -0
  353. package/dist/stencil/stencil.esm.js +1 -49
  354. package/dist/stencil/stencil.esm.js.map +1 -1
  355. package/dist/types/classes/commands/add-object.command.d.ts +1 -1
  356. package/dist/types/classes/commands/add-selection-group.command.d.ts +1 -1
  357. package/dist/types/classes/commands/base.command.d.ts +2 -2
  358. package/dist/types/classes/commands/batch.command.d.ts +1 -1
  359. package/dist/types/classes/commands/move-selection-group.command.d.ts +1 -1
  360. package/dist/types/classes/commands/remove-object.command.d.ts +1 -1
  361. package/dist/types/classes/commands/remove-selection-group.command.d.ts +1 -1
  362. package/dist/types/classes/commands/resize-selection-group.command.d.ts +1 -1
  363. package/dist/types/classes/commands/rotate-selection-group.command.d.ts +1 -1
  364. package/dist/types/classes/commands/update-object.command.d.ts +1 -1
  365. package/dist/types/classes/commands/update-viewport.command.d.ts +1 -1
  366. package/dist/types/classes/database.class.d.ts +28 -0
  367. package/dist/types/classes/history.class.d.ts +1 -0
  368. package/dist/types/classes/objects/base-object.class.d.ts +2 -0
  369. package/dist/types/classes/objects/path.class.d.ts +1 -0
  370. package/dist/types/classes/objects/text.class.d.ts +1 -1
  371. package/dist/types/classes/store.class.d.ts +19 -2
  372. package/dist/types/classes/structures/octree.structure.d.ts +1 -0
  373. package/dist/types/classes/workspace.class.d.ts +16 -0
  374. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +6 -1
  375. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +12 -2
  376. package/dist/types/components/shared/kritzel-menu/kritzel-menu.d.ts +24 -0
  377. package/dist/types/components/shared/kritzel-portal/kritzel-portal.d.ts +24 -0
  378. package/dist/types/components/shared/kritzel-split-button/kritzel-split-button.d.ts +24 -0
  379. package/dist/types/components/ui/kritzel-context-menu/kritzel-context-menu.d.ts +3 -4
  380. package/dist/types/components/ui/kritzel-controls/kritzel-controls.d.ts +2 -1
  381. package/dist/types/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.d.ts +25 -0
  382. package/dist/types/components.d.ts +250 -2
  383. package/dist/types/helpers/html.helper.d.ts +3 -1
  384. package/dist/types/interfaces/command.interface.d.ts +1 -1
  385. package/dist/types/interfaces/debug-info.interface.d.ts +1 -0
  386. package/dist/types/interfaces/engine-state.interface.d.ts +3 -0
  387. package/dist/types/interfaces/menu-item.interface.d.ts +9 -0
  388. package/dist/types/interfaces/object.interface.d.ts +2 -0
  389. package/dist/types/stencil-public-runtime.d.ts +21 -0
  390. package/package.json +63 -62
  391. package/dist/stencil/brush-tool.class-D1U3x9_Y.js.map +0 -1
  392. package/dist/stencil/default-text-tool.config-DvOZmpuR.js.map +0 -1
  393. package/dist/stencil/engine.constants-DsjjAmnl.js +0 -7
  394. package/dist/stencil/engine.constants-DsjjAmnl.js.map +0 -1
  395. package/dist/stencil/event-button.enum-D8W6LE-c.js.map +0 -1
  396. package/dist/stencil/icon-registry.class-Bw5YkOTi.js.map +0 -1
  397. package/dist/stencil/image-tool.class-uKAmXFSl.js +0 -1341
  398. package/dist/stencil/image-tool.class-uKAmXFSl.js.map +0 -1
  399. package/dist/stencil/index-Df69oUcb.js +0 -4334
  400. package/dist/stencil/index-Df69oUcb.js.map +0 -1
  401. package/dist/stencil/kritzel-brush-style.entry.esm.js.map +0 -1
  402. package/dist/stencil/kritzel-brush-style.entry.js +0 -31
  403. package/dist/stencil/kritzel-brush-style.entry.js.map +0 -1
  404. package/dist/stencil/kritzel-color-palette.entry.esm.js.map +0 -1
  405. package/dist/stencil/kritzel-color-palette.entry.js.map +0 -1
  406. package/dist/stencil/kritzel-color.entry.esm.js.map +0 -1
  407. package/dist/stencil/kritzel-color.entry.js.map +0 -1
  408. package/dist/stencil/kritzel-context-menu-B2p1_Ffh.js +0 -91
  409. package/dist/stencil/kritzel-context-menu-B2p1_Ffh.js.map +0 -1
  410. package/dist/stencil/kritzel-context-menu-DPHV6MRm.js +0 -91
  411. package/dist/stencil/kritzel-context-menu-DPHV6MRm.js.map +0 -1
  412. package/dist/stencil/kritzel-context-menu.entry.esm.js.map +0 -1
  413. package/dist/stencil/kritzel-context-menu.entry.js +0 -5
  414. package/dist/stencil/kritzel-context-menu.entry.js.map +0 -1
  415. package/dist/stencil/kritzel-control-brush-config.entry.esm.js.map +0 -1
  416. package/dist/stencil/kritzel-control-brush-config.entry.js +0 -54
  417. package/dist/stencil/kritzel-control-brush-config.entry.js.map +0 -1
  418. package/dist/stencil/kritzel-control-text-config.entry.esm.js.map +0 -1
  419. package/dist/stencil/kritzel-control-text-config.entry.js +0 -42
  420. package/dist/stencil/kritzel-control-text-config.entry.js.map +0 -1
  421. package/dist/stencil/kritzel-controls.entry.esm.js.map +0 -1
  422. package/dist/stencil/kritzel-controls.entry.js.map +0 -1
  423. package/dist/stencil/kritzel-cursor-trail.entry.esm.js.map +0 -1
  424. package/dist/stencil/kritzel-cursor-trail.entry.js.map +0 -1
  425. package/dist/stencil/kritzel-dropdown.entry.esm.js.map +0 -1
  426. package/dist/stencil/kritzel-dropdown.entry.js.map +0 -1
  427. package/dist/stencil/kritzel-editor.entry.esm.js.map +0 -1
  428. package/dist/stencil/kritzel-editor.entry.js +0 -180
  429. package/dist/stencil/kritzel-editor.entry.js.map +0 -1
  430. package/dist/stencil/kritzel-engine.entry.esm.js.map +0 -1
  431. package/dist/stencil/kritzel-engine.entry.js +0 -1318
  432. package/dist/stencil/kritzel-engine.entry.js.map +0 -1
  433. package/dist/stencil/kritzel-font-family.entry.esm.js.map +0 -1
  434. package/dist/stencil/kritzel-font-family.entry.js.map +0 -1
  435. package/dist/stencil/kritzel-font-size.entry.esm.js.map +0 -1
  436. package/dist/stencil/kritzel-font-size.entry.js +0 -29
  437. package/dist/stencil/kritzel-font-size.entry.js.map +0 -1
  438. package/dist/stencil/kritzel-font.entry.esm.js.map +0 -1
  439. package/dist/stencil/kritzel-font.entry.js +0 -25
  440. package/dist/stencil/kritzel-font.entry.js.map +0 -1
  441. package/dist/stencil/kritzel-icon.entry.esm.js.map +0 -1
  442. package/dist/stencil/kritzel-icon.entry.js +0 -29
  443. package/dist/stencil/kritzel-icon.entry.js.map +0 -1
  444. package/dist/stencil/kritzel-stroke-size.entry.esm.js.map +0 -1
  445. package/dist/stencil/kritzel-stroke-size.entry.js +0 -28
  446. package/dist/stencil/kritzel-stroke-size.entry.js.map +0 -1
  447. package/dist/stencil/kritzel-tooltip.entry.esm.js.map +0 -1
  448. package/dist/stencil/kritzel-tooltip.entry.js.map +0 -1
  449. package/dist/stencil/kritzel-utility-panel.entry.esm.js.map +0 -1
  450. package/dist/stencil/kritzel-utility-panel.entry.js +0 -33
  451. package/dist/stencil/kritzel-utility-panel.entry.js.map +0 -1
@@ -0,0 +1,280 @@
1
+ import { h, Host } from "@stencil/core";
2
+ import { KritzelBrushTool } from "../../../classes/tools/brush-tool.class";
3
+ import { KritzelTextTool } from "../../../classes/tools/text-tool.class";
4
+ import { KritzelDevicesHelper } from "../../../helpers/devices.helper";
5
+ export class KritzelControls {
6
+ constructor() {
7
+ this.controls = [];
8
+ this.activeControl = null;
9
+ this.isUtilityPanelVisible = true;
10
+ this.firstConfig = null;
11
+ this.isTooltipVisible = false;
12
+ this.isTouchDevice = KritzelDevicesHelper.isTouchDevice();
13
+ this.kritzelEngine = null;
14
+ }
15
+ handleDocumentClick(event) {
16
+ const element = event.target;
17
+ if (!this.kritzelEngine || element.closest('.kritzel-tooltip')) {
18
+ return;
19
+ }
20
+ this.isTooltipVisible = false;
21
+ }
22
+ handleKeyDown(event) {
23
+ var _a;
24
+ if (event.key === 'Escape') {
25
+ event.preventDefault();
26
+ this.closeTooltip();
27
+ (_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.enable();
28
+ }
29
+ }
30
+ async handleActiveToolChange(event) {
31
+ var _a;
32
+ this.activeControl = this.controls.find(control => control.tool === event.detail) || null;
33
+ await ((_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.setFocus());
34
+ }
35
+ async closeTooltip() {
36
+ this.isTooltipVisible = false;
37
+ }
38
+ get activeToolAsTextTool() {
39
+ var _a;
40
+ return (_a = this.activeControl) === null || _a === void 0 ? void 0 : _a.tool;
41
+ }
42
+ get activeToolAsBrushTool() {
43
+ var _a;
44
+ return (_a = this.activeControl) === null || _a === void 0 ? void 0 : _a.tool;
45
+ }
46
+ async componentWillLoad() {
47
+ await this.initializeEngine();
48
+ await this.initializeTools();
49
+ this.isControlsReady.emit();
50
+ }
51
+ async initializeEngine() {
52
+ await customElements.whenDefined('kritzel-engine');
53
+ this.kritzelEngine = this.host.parentElement.querySelector('kritzel-engine');
54
+ if (!this.kritzelEngine) {
55
+ throw new Error('kritzel-engine not found in parent element.');
56
+ }
57
+ }
58
+ async initializeTools() {
59
+ for (const c of this.controls) {
60
+ if (c.type === 'tool' && c.tool) {
61
+ c.tool = await this.kritzelEngine.registerTool(c.name, c.tool, c.config);
62
+ }
63
+ if (c.type === 'tool' && c.isDefault && c.tool) {
64
+ await this.kritzelEngine.changeActiveTool(c.tool);
65
+ this.activeControl = c;
66
+ }
67
+ if (c.type === 'config') {
68
+ if (this.firstConfig === null) {
69
+ this.firstConfig = c;
70
+ }
71
+ else {
72
+ console.warn('Only one config control is allowed. The first one will be used.');
73
+ }
74
+ }
75
+ }
76
+ }
77
+ async handleControlClick(control) {
78
+ this.activeControl = control;
79
+ if (this.activeControl.type === 'tool') {
80
+ await this.kritzelEngine.changeActiveTool(this.activeControl.tool);
81
+ }
82
+ }
83
+ handleConfigClick(event) {
84
+ var _a;
85
+ event.stopPropagation();
86
+ this.isTooltipVisible = !this.isTooltipVisible;
87
+ (_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.disable();
88
+ }
89
+ async handleToolChange(event) {
90
+ this.activeControl = Object.assign(Object.assign({}, this.activeControl), { tool: event.detail });
91
+ await this.kritzelEngine.changeActiveTool(this.activeControl.tool);
92
+ }
93
+ render() {
94
+ var _a, _b;
95
+ const hasNoConfig = ((_a = this.activeControl) === null || _a === void 0 ? void 0 : _a.config) === undefined || ((_b = this.activeControl) === null || _b === void 0 ? void 0 : _b.config) === null;
96
+ return (h(Host, { key: 'af04746b6eaa04a51482cd9d25ba3ab303d631f1', class: {
97
+ mobile: this.isTouchDevice,
98
+ } }, this.isUtilityPanelVisible && (h("kritzel-utility-panel", { key: 'd6ecb1087a332162f3fc809ed4321fc48f72c3e7', style: {
99
+ position: 'absolute',
100
+ bottom: '56px',
101
+ left: '12px',
102
+ }, onUndo: () => { var _a; return (_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.undo(); }, onRedo: () => { var _a; return (_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.redo(); }, onDelete: () => { var _a; return (_a = this.kritzelEngine) === null || _a === void 0 ? void 0 : _a.delete(); } })), h("div", { key: '34723e47249d53fd544848d2d577deba4df1f131', class: "kritzel-controls" }, this.controls.map(control => {
103
+ var _a, _b, _c, _d, _e, _f, _g, _h;
104
+ if (control.type === 'tool') {
105
+ return (h("button", { class: {
106
+ 'kritzel-control': true,
107
+ 'selected': ((_a = this.activeControl) === null || _a === void 0 ? void 0 : _a.name) === (control === null || control === void 0 ? void 0 : control.name),
108
+ }, key: control.name, onClick: _event => { var _a; return (_a = this.handleControlClick) === null || _a === void 0 ? void 0 : _a.call(this, control); } }, h("kritzel-icon", { name: control.icon })));
109
+ }
110
+ if (control.type === 'divider') {
111
+ return h("div", { class: "kritzel-divider", key: control.name });
112
+ }
113
+ if (control.type === 'config' && control.name === ((_b = this.firstConfig) === null || _b === void 0 ? void 0 : _b.name) && this.activeControl) {
114
+ return (h("div", { class: "kritzel-config-container", key: control.name }, h("kritzel-tooltip", { isVisible: this.isTooltipVisible, anchorElement: (_c = this.host.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.kritzel-config-container') }, h("div", { style: { width: '294px', height: '100%' } }, this.activeControl.name === 'brush' && (h("kritzel-control-brush-config", { tool: this.activeToolAsBrushTool, onToolChange: event => { var _a; return (_a = this.handleToolChange) === null || _a === void 0 ? void 0 : _a.call(this, event); } })), this.activeControl.name === 'text' && (h("kritzel-control-text-config", { tool: this.activeToolAsTextTool, onToolChange: event => { var _a; return (_a = this.handleToolChange) === null || _a === void 0 ? void 0 : _a.call(this, event); } })))), h("div", { class: "kritzel-config", onClick: event => { var _a; return (_a = this.handleConfigClick) === null || _a === void 0 ? void 0 : _a.call(this, event); }, style: {
115
+ cursor: this.activeControl.config ? 'pointer' : 'default',
116
+ pointerEvents: hasNoConfig ? 'none' : 'auto',
117
+ } }, this.activeControl.tool instanceof KritzelBrushTool && (h("div", { class: "color-container" }, h("kritzel-color", { value: (_d = this.activeToolAsBrushTool) === null || _d === void 0 ? void 0 : _d.color, size: (_e = this.activeToolAsBrushTool) === null || _e === void 0 ? void 0 : _e.size, style: {
118
+ borderRadius: '50%',
119
+ border: 'none',
120
+ } }))), this.activeControl.tool instanceof KritzelTextTool && (h("div", { class: "font-container" }, h("kritzel-font", { fontFamily: (_f = this.activeToolAsTextTool) === null || _f === void 0 ? void 0 : _f.fontFamily, size: (_g = this.activeToolAsTextTool) === null || _g === void 0 ? void 0 : _g.fontSize, color: (_h = this.activeToolAsTextTool) === null || _h === void 0 ? void 0 : _h.fontColor }))), hasNoConfig && h("div", { class: "no-config" }))));
121
+ }
122
+ }))));
123
+ }
124
+ static get is() { return "kritzel-controls"; }
125
+ static get encapsulation() { return "shadow"; }
126
+ static get originalStyleUrls() {
127
+ return {
128
+ "$": ["kritzel-controls.css"]
129
+ };
130
+ }
131
+ static get styleUrls() {
132
+ return {
133
+ "$": ["kritzel-controls.css"]
134
+ };
135
+ }
136
+ static get assetsDirs() { return ["../assets"]; }
137
+ static get properties() {
138
+ return {
139
+ "controls": {
140
+ "type": "unknown",
141
+ "attribute": "controls",
142
+ "mutable": false,
143
+ "complexType": {
144
+ "original": "KritzelToolbarControl[]",
145
+ "resolved": "KritzelToolbarControl[]",
146
+ "references": {
147
+ "KritzelToolbarControl": {
148
+ "location": "import",
149
+ "path": "../../../interfaces/toolbar-control.interface",
150
+ "id": "src/interfaces/toolbar-control.interface.ts::KritzelToolbarControl"
151
+ }
152
+ }
153
+ },
154
+ "required": false,
155
+ "optional": false,
156
+ "docs": {
157
+ "tags": [],
158
+ "text": ""
159
+ },
160
+ "getter": false,
161
+ "setter": false,
162
+ "defaultValue": "[]"
163
+ },
164
+ "activeControl": {
165
+ "type": "unknown",
166
+ "attribute": "active-control",
167
+ "mutable": true,
168
+ "complexType": {
169
+ "original": "KritzelToolbarControl | null",
170
+ "resolved": "KritzelToolbarControl",
171
+ "references": {
172
+ "KritzelToolbarControl": {
173
+ "location": "import",
174
+ "path": "../../../interfaces/toolbar-control.interface",
175
+ "id": "src/interfaces/toolbar-control.interface.ts::KritzelToolbarControl"
176
+ }
177
+ }
178
+ },
179
+ "required": false,
180
+ "optional": false,
181
+ "docs": {
182
+ "tags": [],
183
+ "text": ""
184
+ },
185
+ "getter": false,
186
+ "setter": false,
187
+ "defaultValue": "null"
188
+ },
189
+ "isUtilityPanelVisible": {
190
+ "type": "boolean",
191
+ "attribute": "is-utility-panel-visible",
192
+ "mutable": false,
193
+ "complexType": {
194
+ "original": "boolean",
195
+ "resolved": "boolean",
196
+ "references": {}
197
+ },
198
+ "required": false,
199
+ "optional": false,
200
+ "docs": {
201
+ "tags": [],
202
+ "text": ""
203
+ },
204
+ "getter": false,
205
+ "setter": false,
206
+ "reflect": false,
207
+ "defaultValue": "true"
208
+ }
209
+ };
210
+ }
211
+ static get states() {
212
+ return {
213
+ "firstConfig": {},
214
+ "isTooltipVisible": {},
215
+ "isTouchDevice": {}
216
+ };
217
+ }
218
+ static get events() {
219
+ return [{
220
+ "method": "isControlsReady",
221
+ "name": "isControlsReady",
222
+ "bubbles": true,
223
+ "cancelable": true,
224
+ "composed": true,
225
+ "docs": {
226
+ "tags": [],
227
+ "text": ""
228
+ },
229
+ "complexType": {
230
+ "original": "void",
231
+ "resolved": "void",
232
+ "references": {}
233
+ }
234
+ }];
235
+ }
236
+ static get methods() {
237
+ return {
238
+ "closeTooltip": {
239
+ "complexType": {
240
+ "signature": "() => Promise<void>",
241
+ "parameters": [],
242
+ "references": {
243
+ "Promise": {
244
+ "location": "global",
245
+ "id": "global::Promise"
246
+ }
247
+ },
248
+ "return": "Promise<void>"
249
+ },
250
+ "docs": {
251
+ "text": "",
252
+ "tags": []
253
+ }
254
+ }
255
+ };
256
+ }
257
+ static get elementRef() { return "host"; }
258
+ static get listeners() {
259
+ return [{
260
+ "name": "click",
261
+ "method": "handleDocumentClick",
262
+ "target": "document",
263
+ "capture": false,
264
+ "passive": false
265
+ }, {
266
+ "name": "keydown",
267
+ "method": "handleKeyDown",
268
+ "target": "window",
269
+ "capture": false,
270
+ "passive": false
271
+ }, {
272
+ "name": "activeToolChange",
273
+ "method": "handleActiveToolChange",
274
+ "target": "document",
275
+ "capture": false,
276
+ "passive": false
277
+ }];
278
+ }
279
+ }
280
+ //# sourceMappingURL=kritzel-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kritzel-controls.js","sourceRoot":"","sources":["../../../../src/components/ui/kritzel-controls/kritzel-controls.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, State, Element, Host, Listen, Event, EventEmitter, Method } from '@stencil/core';\r\nimport { KritzelBrushTool } from '../../../classes/tools/brush-tool.class';\r\nimport { KritzelTextTool } from '../../../classes/tools/text-tool.class';\r\nimport { KritzelToolbarControl } from '../../../interfaces/toolbar-control.interface';\r\nimport { KritzelBaseTool } from '../../../classes/tools/base-tool.class';\r\nimport { KritzelDevicesHelper } from '../../../helpers/devices.helper';\r\n\r\ntype ToolConfig = Record<string, any>;\r\n\r\n@Component({\r\n tag: 'kritzel-controls',\r\n styleUrl: 'kritzel-controls.css',\r\n shadow: true,\r\n assetsDirs: ['../assets'],\r\n})\r\nexport class KritzelControls {\r\n @Prop()\r\n controls: KritzelToolbarControl[] = [];\r\n\r\n @Prop({ mutable: true })\r\n activeControl: KritzelToolbarControl | null = null;\r\n\r\n @Prop()\r\n isUtilityPanelVisible: boolean = true;\r\n\r\n @Event()\r\n isControlsReady: EventEmitter<void>;\r\n\r\n @State()\r\n firstConfig: ToolConfig | null = null;\r\n\r\n @State()\r\n isTooltipVisible: boolean = false;\r\n\r\n @State()\r\n isTouchDevice: boolean = KritzelDevicesHelper.isTouchDevice();\r\n\r\n @Element()\r\n host!: HTMLElement;\r\n\r\n @Listen('click', { target: 'document' })\r\n handleDocumentClick(event: MouseEvent) {\r\n const element = event.target as HTMLElement;\r\n\r\n if (!this.kritzelEngine || element.closest('.kritzel-tooltip')) {\r\n return;\r\n }\r\n\r\n this.isTooltipVisible = false;\r\n }\r\n\r\n @Listen('keydown', { target: 'window' })\r\n handleKeyDown(event) {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.closeTooltip();\r\n this.kritzelEngine?.enable();\r\n }\r\n }\r\n\r\n @Listen('activeToolChange', { target: 'document' })\r\n async handleActiveToolChange(event: CustomEvent) {\r\n this.activeControl = this.controls.find(control => control.tool === event.detail) || null;\r\n await this.kritzelEngine?.setFocus();\r\n }\r\n\r\n @Method()\r\n async closeTooltip() {\r\n this.isTooltipVisible = false;\r\n }\r\n\r\n kritzelEngine: HTMLKritzelEngineElement | null = null;\r\n\r\n get activeToolAsTextTool() {\r\n return this.activeControl?.tool as KritzelTextTool;\r\n }\r\n\r\n get activeToolAsBrushTool() {\r\n return this.activeControl?.tool as KritzelBrushTool;\r\n }\r\n\r\n async componentWillLoad() {\r\n await this.initializeEngine();\r\n await this.initializeTools();\r\n this.isControlsReady.emit();\r\n }\r\n\r\n private async initializeEngine() {\r\n await customElements.whenDefined('kritzel-engine');\r\n this.kritzelEngine = this.host.parentElement.querySelector('kritzel-engine');\r\n\r\n if (!this.kritzelEngine) {\r\n throw new Error('kritzel-engine not found in parent element.');\r\n }\r\n }\r\n\r\n private async initializeTools() {\r\n for (const c of this.controls) {\r\n if (c.type === 'tool' && c.tool) {\r\n c.tool = await this.kritzelEngine.registerTool(c.name, c.tool, c.config);\r\n }\r\n\r\n if (c.type === 'tool' && c.isDefault && c.tool) {\r\n await this.kritzelEngine.changeActiveTool(c.tool as KritzelBaseTool);\r\n this.activeControl = c;\r\n }\r\n\r\n if (c.type === 'config') {\r\n if (this.firstConfig === null) {\r\n this.firstConfig = c;\r\n } else {\r\n console.warn('Only one config control is allowed. The first one will be used.');\r\n }\r\n }\r\n }\r\n }\r\n\r\n private async handleControlClick(control: KritzelToolbarControl) {\r\n this.activeControl = control;\r\n\r\n if (this.activeControl.type === 'tool') {\r\n await this.kritzelEngine.changeActiveTool(this.activeControl.tool as KritzelBaseTool);\r\n }\r\n }\r\n\r\n private handleConfigClick(event: MouseEvent) {\r\n event.stopPropagation();\r\n this.isTooltipVisible = !this.isTooltipVisible;\r\n this.kritzelEngine?.disable();\r\n }\r\n\r\n private async handleToolChange(event: CustomEvent) {\r\n this.activeControl = { ...this.activeControl, tool: event.detail };\r\n await this.kritzelEngine.changeActiveTool((this.activeControl as any).tool);\r\n }\r\n\r\n render() {\r\n const hasNoConfig = this.activeControl?.config === undefined || this.activeControl?.config === null;\r\n\r\n return (\r\n <Host\r\n class={{\r\n mobile: this.isTouchDevice,\r\n }}\r\n >\r\n {this.isUtilityPanelVisible && (\r\n <kritzel-utility-panel\r\n style={{\r\n position: 'absolute',\r\n bottom: '56px',\r\n left: '12px',\r\n }}\r\n onUndo={() => this.kritzelEngine?.undo()}\r\n onRedo={() => this.kritzelEngine?.redo()}\r\n onDelete={() => this.kritzelEngine?.delete()}\r\n ></kritzel-utility-panel>\r\n )}\r\n\r\n <div class=\"kritzel-controls\">\r\n {this.controls.map(control => {\r\n if (control.type === 'tool') {\r\n return (\r\n <button\r\n class={{\r\n 'kritzel-control': true,\r\n 'selected': this.activeControl?.name === control?.name,\r\n }}\r\n key={control.name}\r\n onClick={_event => this.handleControlClick?.(control)}\r\n >\r\n <kritzel-icon name={control.icon}></kritzel-icon>\r\n </button>\r\n );\r\n }\r\n\r\n if (control.type === 'divider') {\r\n return <div class=\"kritzel-divider\" key={control.name}></div>;\r\n }\r\n\r\n if (control.type === 'config' && control.name === this.firstConfig?.name && this.activeControl) {\r\n return (\r\n <div class=\"kritzel-config-container\" key={control.name}>\r\n <kritzel-tooltip isVisible={this.isTooltipVisible} anchorElement={this.host.shadowRoot?.querySelector('.kritzel-config-container') as HTMLElement}>\r\n <div style={{ width: '294px', height: '100%' }}>\r\n {this.activeControl.name === 'brush' && (\r\n <kritzel-control-brush-config tool={this.activeToolAsBrushTool} onToolChange={event => this.handleToolChange?.(event)}></kritzel-control-brush-config>\r\n )}\r\n\r\n {this.activeControl.name === 'text' && (\r\n <kritzel-control-text-config tool={this.activeToolAsTextTool} onToolChange={event => this.handleToolChange?.(event)}></kritzel-control-text-config>\r\n )}\r\n </div>\r\n </kritzel-tooltip>\r\n\r\n <div\r\n class=\"kritzel-config\"\r\n onClick={event => this.handleConfigClick?.(event)}\r\n style={{\r\n cursor: this.activeControl.config ? 'pointer' : 'default',\r\n pointerEvents: hasNoConfig ? 'none' : 'auto',\r\n }}\r\n >\r\n {this.activeControl.tool instanceof KritzelBrushTool && (\r\n <div class=\"color-container\">\r\n <kritzel-color\r\n value={this.activeToolAsBrushTool?.color}\r\n size={this.activeToolAsBrushTool?.size}\r\n style={{\r\n borderRadius: '50%',\r\n border: 'none',\r\n }}\r\n ></kritzel-color>\r\n </div>\r\n )}\r\n\r\n {this.activeControl.tool instanceof KritzelTextTool && (\r\n <div class=\"font-container\">\r\n <kritzel-font\r\n fontFamily={this.activeToolAsTextTool?.fontFamily}\r\n size={this.activeToolAsTextTool?.fontSize}\r\n color={this.activeToolAsTextTool?.fontColor}\r\n ></kritzel-font>\r\n </div>\r\n )}\r\n\r\n {hasNoConfig && <div class=\"no-config\"></div>}\r\n </div>\r\n </div>\r\n );\r\n }\r\n })}\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -0,0 +1,33 @@
1
+ :host {
2
+ display: flex;
3
+ flex-direction: row;
4
+ align-items: center;
5
+ padding: 4px;
6
+ gap: 8px;
7
+ border-top-left-radius: 12px;
8
+ border-top-right-radius: 12px;
9
+ background-color: rgb(226, 226, 226);
10
+ width: fit-content;
11
+ user-select: none;
12
+ }
13
+
14
+ .utility-button {
15
+ display: flex;
16
+ justify-content: center;
17
+ align-items: center;
18
+ width: 28px;
19
+ height: 28px;
20
+ padding: 8px 4px;
21
+ border: none;
22
+ outline: none;
23
+ background: none;
24
+ cursor: pointer;
25
+ color: #333333;
26
+ -webkit-tap-highlight-color: transparent;
27
+ }
28
+
29
+ .utility-separator {
30
+ width: 1px;
31
+ height: 16px;
32
+ background-color: hsl(0, 0%, 0%, 4.3%);
33
+ }
@@ -0,0 +1,79 @@
1
+ import { Host, h } from "@stencil/core";
2
+ export class KritzelUtilityPanel {
3
+ handleUndo(event) {
4
+ if (event.cancelable) {
5
+ event.preventDefault();
6
+ event.stopPropagation();
7
+ this.undo.emit();
8
+ }
9
+ }
10
+ handleRedo(event) {
11
+ event.preventDefault();
12
+ event.stopPropagation();
13
+ this.redo.emit();
14
+ }
15
+ render() {
16
+ return (h(Host, { key: 'cf7b5c501b6535fda22b17ea218e90bd60223c6e' }, h("button", { key: '05db2cee7f2e191674167ef503e70718200bf904', class: "utility-button", onClick: event => this.handleUndo(event) }, h("kritzel-icon", { key: '10412c038b9d4e66851c8a0c9b51b99607bac397', name: "undo" })), h("button", { key: 'edf0289de8ce5cddd9341bc1855eae095274226c', class: "utility-button", onClick: event => this.handleRedo(event) }, h("kritzel-icon", { key: '46263e3d3f166b224c9a18ba383085e020fac51a', name: "redo" })), h("div", { key: '3a6c0eca21f44887683d6308ca5741b095eceb77', class: "utility-separator" }), h("button", { key: 'ced83e0c47fc920edabdc5b3379a8805f1827374', class: "utility-button" }, h("kritzel-icon", { key: 'd49c6412d778d34fe21e86482f2114631621106a', name: "delete", onClick: () => this.delete.emit() }))));
17
+ }
18
+ static get is() { return "kritzel-utility-panel"; }
19
+ static get encapsulation() { return "shadow"; }
20
+ static get originalStyleUrls() {
21
+ return {
22
+ "$": ["kritzel-utility-panel.css"]
23
+ };
24
+ }
25
+ static get styleUrls() {
26
+ return {
27
+ "$": ["kritzel-utility-panel.css"]
28
+ };
29
+ }
30
+ static get events() {
31
+ return [{
32
+ "method": "undo",
33
+ "name": "undo",
34
+ "bubbles": true,
35
+ "cancelable": true,
36
+ "composed": true,
37
+ "docs": {
38
+ "tags": [],
39
+ "text": ""
40
+ },
41
+ "complexType": {
42
+ "original": "void",
43
+ "resolved": "void",
44
+ "references": {}
45
+ }
46
+ }, {
47
+ "method": "redo",
48
+ "name": "redo",
49
+ "bubbles": true,
50
+ "cancelable": true,
51
+ "composed": true,
52
+ "docs": {
53
+ "tags": [],
54
+ "text": ""
55
+ },
56
+ "complexType": {
57
+ "original": "void",
58
+ "resolved": "void",
59
+ "references": {}
60
+ }
61
+ }, {
62
+ "method": "delete",
63
+ "name": "delete",
64
+ "bubbles": true,
65
+ "cancelable": true,
66
+ "composed": true,
67
+ "docs": {
68
+ "tags": [],
69
+ "text": ""
70
+ },
71
+ "complexType": {
72
+ "original": "void",
73
+ "resolved": "void",
74
+ "references": {}
75
+ }
76
+ }];
77
+ }
78
+ }
79
+ //# sourceMappingURL=kritzel-utility-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kritzel-utility-panel.js","sourceRoot":"","sources":["../../../../src/components/ui/kritzel-utility-panel/kritzel-utility-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AAOxE,MAAM,OAAO,mBAAmB;IAU9B,UAAU,CAAC,KAAY;QACrB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAY;QACrB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,+DAAQ,KAAK,EAAC,gBAAgB,EAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBACrE,qEAAc,IAAI,EAAC,MAAM,GAAgB,CAClC;YACT,+DAAQ,KAAK,EAAC,gBAAgB,EAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBACrE,qEAAc,IAAI,EAAC,MAAM,GAAgB,CAClC;YAET,4DAAK,KAAK,EAAC,mBAAmB,GAAO;YAErC,+DAAQ,KAAK,EAAC,gBAAgB;gBAC5B,qEAAc,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAiB,CACvE,CACJ,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Event, EventEmitter } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'kritzel-utility-panel',\r\n styleUrl: 'kritzel-utility-panel.css',\r\n shadow: true,\r\n})\r\nexport class KritzelUtilityPanel {\r\n @Event()\r\n undo: EventEmitter<void>;\r\n\r\n @Event()\r\n redo: EventEmitter<void>;\r\n\r\n @Event()\r\n delete: EventEmitter<void>;\r\n\r\n handleUndo(event: Event) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.undo.emit();\r\n }\r\n }\r\n\r\n handleRedo(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.redo.emit();\r\n }\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <button class=\"utility-button\" onClick={event => this.handleUndo(event)}>\r\n <kritzel-icon name=\"undo\"></kritzel-icon>\r\n </button>\r\n <button class=\"utility-button\" onClick={event => this.handleRedo(event)}>\r\n <kritzel-icon name=\"redo\"></kritzel-icon>\r\n </button>\r\n\r\n <div class=\"utility-separator\"></div>\r\n\r\n <button class=\"utility-button\">\r\n <kritzel-icon name=\"delete\" onClick={() => this.delete.emit()}></kritzel-icon>\r\n </button>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -0,0 +1,5 @@
1
+ :host {
2
+ display: flex;
3
+ flex-direction: column;
4
+ z-index: 1;
5
+ }
@@ -0,0 +1,209 @@
1
+ import { Host, h } from "@stencil/core";
2
+ import { KritzelWorkspace } from "../../../classes/workspace.class";
3
+ import { ObjectHelper } from "../../../helpers/object.helper";
4
+ export class KritzelWorkspaceManager {
5
+ constructor() {
6
+ this.workspaces = [];
7
+ this.editingIndex = null;
8
+ this.newWorkspace = null;
9
+ this.kritzelEngine = null;
10
+ this.handleNewWorkspace = async () => {
11
+ var _a;
12
+ await ((_a = this.splitButtonRef) === null || _a === void 0 ? void 0 : _a.openMenu());
13
+ requestAnimationFrame(() => {
14
+ this.newWorkspace = new KritzelWorkspace(ObjectHelper.generateUUID(), 'New Workspace');
15
+ this.editingIndex = 0;
16
+ });
17
+ };
18
+ this.handleMenuClosed = () => {
19
+ this.editingIndex = null;
20
+ this.newWorkspace = null;
21
+ };
22
+ this.handleSave = async (item) => {
23
+ const workspace = item.value;
24
+ const updatedWorkspace = Object.assign(Object.assign({}, workspace), { name: item.label });
25
+ if (this.newWorkspace) {
26
+ await this.kritzelEngine.createWorkspace(updatedWorkspace);
27
+ this.selectWorkspace(updatedWorkspace);
28
+ }
29
+ else {
30
+ await this.kritzelEngine.updateWorkspace(updatedWorkspace);
31
+ }
32
+ this.editingIndex = null;
33
+ this.newWorkspace = null;
34
+ };
35
+ this.handleRename = (index) => {
36
+ this.editingIndex = index;
37
+ };
38
+ this.handleDelete = async (workspaceToDelete) => {
39
+ var _a;
40
+ await this.kritzelEngine.deleteWorkspace(workspaceToDelete);
41
+ if (((_a = this.activeWorkspace) === null || _a === void 0 ? void 0 : _a.id) === workspaceToDelete.id) {
42
+ const newActiveWorkspace = this.sortedWorkspaces.find(w => w.id !== workspaceToDelete.id) || null;
43
+ this.selectWorkspace(newActiveWorkspace);
44
+ }
45
+ };
46
+ }
47
+ get sortedWorkspaces() {
48
+ const uniqueWorkspaces = [...new Map(this.workspaces.map(workspace => [workspace.id, workspace])).values()];
49
+ return [this.newWorkspace, ...uniqueWorkspaces].filter(ws => ws !== null).sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
50
+ }
51
+ get activeItemIndex() {
52
+ return this.sortedWorkspaces.findIndex(ws => { var _a; return ws.id === ((_a = this.activeWorkspace) === null || _a === void 0 ? void 0 : _a.id); });
53
+ }
54
+ async componentWillLoad() {
55
+ await this.initializeEngine();
56
+ this.isWorkspaceManagerReady.emit();
57
+ }
58
+ async initializeEngine() {
59
+ await customElements.whenDefined('kritzel-engine');
60
+ this.kritzelEngine = this.host.parentElement.querySelector('kritzel-engine');
61
+ if (!this.kritzelEngine) {
62
+ throw new Error('kritzel-engine not found in parent element.');
63
+ }
64
+ }
65
+ handleSelect(workspace) {
66
+ this.selectWorkspace(workspace);
67
+ }
68
+ selectWorkspace(workspace) {
69
+ if (this.editingIndex !== null)
70
+ return;
71
+ this.activeWorkspace = this.sortedWorkspaces.find(ws => ws.id === workspace.id);
72
+ this.workspaceChange.emit(workspace);
73
+ }
74
+ render() {
75
+ const workspaceSelectionOptions = this.sortedWorkspaces.map((ws, index) => ({
76
+ label: ws.name,
77
+ value: ws,
78
+ select: () => this.handleSelect(ws),
79
+ cancel: this.handleMenuClosed,
80
+ save: this.handleSave,
81
+ children: [
82
+ {
83
+ label: 'Rename',
84
+ value: 'rename',
85
+ select: () => this.handleRename(index),
86
+ },
87
+ {
88
+ label: 'Delete',
89
+ value: 'delete',
90
+ disabled: this.sortedWorkspaces.length <= 1,
91
+ select: () => this.handleDelete(ws),
92
+ },
93
+ ],
94
+ }));
95
+ return (h(Host, { key: '1703451717d5583d6520edfbcdbe38a5b8f6840f' }, h("kritzel-split-button", { key: 'efd5d9b714ee72b23fd28c9b20ea6985957fe9b9', ref: el => (this.splitButtonRef = el), buttonIcon: "plus", options: workspaceSelectionOptions, activeItemIndex: this.activeItemIndex, editingIndex: this.editingIndex, onButtonClick: this.handleNewWorkspace, onMenuClosed: this.handleMenuClosed })));
96
+ }
97
+ static get is() { return "kritzel-workspace-manager"; }
98
+ static get encapsulation() { return "shadow"; }
99
+ static get originalStyleUrls() {
100
+ return {
101
+ "$": ["kritzel-workspace-manager.css"]
102
+ };
103
+ }
104
+ static get styleUrls() {
105
+ return {
106
+ "$": ["kritzel-workspace-manager.css"]
107
+ };
108
+ }
109
+ static get properties() {
110
+ return {
111
+ "workspaces": {
112
+ "type": "unknown",
113
+ "attribute": "workspaces",
114
+ "mutable": false,
115
+ "complexType": {
116
+ "original": "KritzelWorkspace[]",
117
+ "resolved": "KritzelWorkspace[]",
118
+ "references": {
119
+ "KritzelWorkspace": {
120
+ "location": "import",
121
+ "path": "../../../classes/workspace.class",
122
+ "id": "src/classes/workspace.class.ts::KritzelWorkspace"
123
+ }
124
+ }
125
+ },
126
+ "required": false,
127
+ "optional": false,
128
+ "docs": {
129
+ "tags": [],
130
+ "text": ""
131
+ },
132
+ "getter": false,
133
+ "setter": false,
134
+ "defaultValue": "[]"
135
+ },
136
+ "activeWorkspace": {
137
+ "type": "unknown",
138
+ "attribute": "active-workspace",
139
+ "mutable": true,
140
+ "complexType": {
141
+ "original": "KritzelWorkspace",
142
+ "resolved": "KritzelWorkspace",
143
+ "references": {
144
+ "KritzelWorkspace": {
145
+ "location": "import",
146
+ "path": "../../../classes/workspace.class",
147
+ "id": "src/classes/workspace.class.ts::KritzelWorkspace"
148
+ }
149
+ }
150
+ },
151
+ "required": false,
152
+ "optional": false,
153
+ "docs": {
154
+ "tags": [],
155
+ "text": ""
156
+ },
157
+ "getter": false,
158
+ "setter": false
159
+ }
160
+ };
161
+ }
162
+ static get states() {
163
+ return {
164
+ "editingIndex": {},
165
+ "newWorkspace": {}
166
+ };
167
+ }
168
+ static get events() {
169
+ return [{
170
+ "method": "isWorkspaceManagerReady",
171
+ "name": "isWorkspaceManagerReady",
172
+ "bubbles": true,
173
+ "cancelable": true,
174
+ "composed": true,
175
+ "docs": {
176
+ "tags": [],
177
+ "text": ""
178
+ },
179
+ "complexType": {
180
+ "original": "void",
181
+ "resolved": "void",
182
+ "references": {}
183
+ }
184
+ }, {
185
+ "method": "workspaceChange",
186
+ "name": "workspaceChange",
187
+ "bubbles": true,
188
+ "cancelable": true,
189
+ "composed": true,
190
+ "docs": {
191
+ "tags": [],
192
+ "text": ""
193
+ },
194
+ "complexType": {
195
+ "original": "KritzelWorkspace",
196
+ "resolved": "KritzelWorkspace",
197
+ "references": {
198
+ "KritzelWorkspace": {
199
+ "location": "import",
200
+ "path": "../../../classes/workspace.class",
201
+ "id": "src/classes/workspace.class.ts::KritzelWorkspace"
202
+ }
203
+ }
204
+ }
205
+ }];
206
+ }
207
+ static get elementRef() { return "host"; }
208
+ }
209
+ //# sourceMappingURL=kritzel-workspace-manager.js.map