kritzel-stencil 0.0.172 → 0.1.0

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 (403) hide show
  1. package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -3
  2. package/dist/cjs/{default-line-tool.config-JuTDR6PF.js → default-line-tool.config-7eJND6Jb.js} +1516 -206
  3. package/dist/cjs/index-BeKMS-Zt.js +3280 -0
  4. package/dist/cjs/index.cjs.js +10 -7
  5. package/dist/cjs/kritzel-brush-style.cjs.entry.js +3 -4
  6. package/dist/cjs/kritzel-color_22.cjs.entry.js +103 -66
  7. package/dist/cjs/loader.cjs.js +2 -3
  8. package/dist/cjs/stencil.cjs.js +3 -4
  9. package/dist/collection/classes/core/core.class.js +0 -1
  10. package/dist/collection/classes/core/reviver.class.js +0 -1
  11. package/dist/collection/classes/core/store.class.js +0 -1
  12. package/dist/collection/classes/core/viewport.class.js +0 -1
  13. package/dist/collection/classes/core/workspace.class.js +0 -1
  14. package/dist/collection/classes/handlers/base.handler.js +0 -1
  15. package/dist/collection/classes/handlers/context-menu.handler.js +0 -1
  16. package/dist/collection/classes/handlers/hover.handler.js +0 -1
  17. package/dist/collection/classes/handlers/key.handler.js +0 -1
  18. package/dist/collection/classes/handlers/line-handle.handler.js +0 -1
  19. package/dist/collection/classes/handlers/move.handler.js +0 -1
  20. package/dist/collection/classes/handlers/resize.handler.js +0 -1
  21. package/dist/collection/classes/handlers/rotation.handler.js +0 -1
  22. package/dist/collection/classes/handlers/selection.handler.js +0 -1
  23. package/dist/collection/classes/managers/anchor.manager.js +0 -1
  24. package/dist/collection/classes/managers/cursor.manager.js +0 -1
  25. package/dist/collection/classes/objects/base-object.class.js +0 -1
  26. package/dist/collection/classes/objects/custom-element.class.js +0 -1
  27. package/dist/collection/classes/objects/group.class.js +0 -1
  28. package/dist/collection/classes/objects/image.class.js +0 -1
  29. package/dist/collection/classes/objects/line.class.js +0 -1
  30. package/dist/collection/classes/objects/path.class.js +0 -1
  31. package/dist/collection/classes/objects/selection-box.class.js +0 -1
  32. package/dist/collection/classes/objects/selection-group.class.js +0 -1
  33. package/dist/collection/classes/objects/shape.class.js +0 -1
  34. package/dist/collection/classes/objects/text.class.js +0 -1
  35. package/dist/collection/classes/providers/broadcast-sync-provider.class.js +0 -1
  36. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js +0 -1
  37. package/dist/collection/classes/providers/indexeddb-sync-provider.class.js +0 -1
  38. package/dist/collection/classes/providers/websocket-sync-provider.class.js +0 -1
  39. package/dist/collection/classes/registries/icon-registry.class.js +0 -1
  40. package/dist/collection/classes/registries/tool.registry.js +0 -1
  41. package/dist/collection/classes/structures/app-state-map.structure.js +0 -1
  42. package/dist/collection/classes/structures/object-map.structure.js +0 -1
  43. package/dist/collection/classes/structures/quadtree.structure.js +0 -1
  44. package/dist/collection/classes/tools/base-tool.class.js +0 -1
  45. package/dist/collection/classes/tools/brush-tool.class.js +0 -1
  46. package/dist/collection/classes/tools/eraser-tool.class.js +0 -1
  47. package/dist/collection/classes/tools/image-tool.class.js +0 -1
  48. package/dist/collection/classes/tools/line-tool.class.js +0 -1
  49. package/dist/collection/classes/tools/selection-tool.class.js +0 -1
  50. package/dist/collection/classes/tools/shape-tool.class.js +0 -1
  51. package/dist/collection/classes/tools/text-tool.class.js +0 -1
  52. package/dist/collection/collection-manifest.json +2 -2
  53. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +0 -1
  54. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +1 -2
  55. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +3 -4
  56. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +0 -1
  57. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +0 -1
  58. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +8 -3
  59. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +8 -20
  60. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +1 -2
  61. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +0 -1
  62. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +0 -1
  63. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +8 -3
  64. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +0 -1
  65. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +0 -1
  66. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +0 -1
  67. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +0 -1
  68. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +0 -1
  69. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +0 -1
  70. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +0 -1
  71. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +0 -1
  72. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +0 -1
  73. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +1 -2
  74. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +0 -1
  75. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +0 -1
  76. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +0 -1
  77. package/dist/collection/configs/default-brush-tool.config.js +0 -1
  78. package/dist/collection/configs/default-engine-config.js +0 -1
  79. package/dist/collection/configs/default-line-tool.config.js +0 -1
  80. package/dist/collection/configs/default-shape-tool.config.js +0 -1
  81. package/dist/collection/configs/default-sync.config.js +0 -1
  82. package/dist/collection/configs/default-text-tool.config.js +0 -1
  83. package/dist/collection/constants/core.constants.js +0 -1
  84. package/dist/collection/constants/engine.constants.js +0 -1
  85. package/dist/collection/enums/event-button.enum.js +0 -1
  86. package/dist/collection/enums/handle-type.enum.js +0 -1
  87. package/dist/collection/enums/shape-type.enum.js +0 -1
  88. package/dist/collection/helpers/class.helper.js +0 -1
  89. package/dist/collection/helpers/cursor.helper.js +0 -1
  90. package/dist/collection/helpers/devices.helper.js +0 -1
  91. package/dist/collection/helpers/event.helper.js +0 -1
  92. package/dist/collection/helpers/geometry.helper.js +0 -1
  93. package/dist/collection/helpers/html.helper.js +0 -1
  94. package/dist/collection/helpers/keyboard.helper.js +0 -1
  95. package/dist/collection/helpers/math.helper.js +0 -1
  96. package/dist/collection/helpers/object.helper.js +0 -1
  97. package/dist/collection/index.js +0 -1
  98. package/dist/collection/interfaces/anchor.interface.js +0 -1
  99. package/dist/collection/interfaces/arrow-head.interface.js +0 -1
  100. package/dist/collection/interfaces/bounding-box.interface.js +0 -1
  101. package/dist/collection/interfaces/clonable.interface.js +0 -1
  102. package/dist/collection/interfaces/context-menu-item.interface.js +0 -1
  103. package/dist/collection/interfaces/debug-info.interface.js +0 -1
  104. package/dist/collection/interfaces/engine-state.interface.js +0 -1
  105. package/dist/collection/interfaces/line-options.interface.js +0 -1
  106. package/dist/collection/interfaces/menu-item.interface.js +0 -1
  107. package/dist/collection/interfaces/object.interface.js +0 -1
  108. package/dist/collection/interfaces/path-options.interface.js +0 -1
  109. package/dist/collection/interfaces/point.interface.js +0 -1
  110. package/dist/collection/interfaces/polygon.interface.js +0 -1
  111. package/dist/collection/interfaces/selection-state.interface.js +0 -1
  112. package/dist/collection/interfaces/serializable.interface.js +0 -1
  113. package/dist/collection/interfaces/shortcut.interface.js +0 -1
  114. package/dist/collection/interfaces/sync-config.interface.js +0 -1
  115. package/dist/collection/interfaces/sync-provider.interface.js +0 -1
  116. package/dist/collection/interfaces/tool.interface.js +0 -1
  117. package/dist/collection/interfaces/toolbar-control.interface.js +0 -1
  118. package/dist/collection/interfaces/undo-state.interface.js +0 -1
  119. package/dist/collection/types/deep-readonly.type.js +0 -1
  120. package/dist/collection/types/state.types.js +0 -1
  121. package/dist/components/index.d.ts +1 -0
  122. package/dist/components/index.js +1 -1477
  123. package/dist/components/kritzel-brush-style.js +1 -67
  124. package/dist/components/kritzel-color-palette.js +1 -9
  125. package/dist/components/kritzel-color.js +1 -9
  126. package/dist/components/kritzel-context-menu.js +1 -9
  127. package/dist/components/kritzel-control-brush-config.js +1 -9
  128. package/dist/components/kritzel-control-text-config.js +1 -9
  129. package/dist/components/kritzel-controls.js +1 -9
  130. package/dist/components/kritzel-cursor-trail.js +1 -9
  131. package/dist/components/kritzel-dropdown.js +1 -9
  132. package/dist/components/kritzel-editor.js +1 -605
  133. package/dist/components/kritzel-engine.js +1 -9
  134. package/dist/components/kritzel-font-family.js +1 -9
  135. package/dist/components/kritzel-font-size.js +1 -9
  136. package/dist/components/kritzel-font.js +1 -9
  137. package/dist/components/kritzel-icon.js +1 -9
  138. package/dist/components/kritzel-menu-item.js +1 -9
  139. package/dist/components/kritzel-menu.js +1 -9
  140. package/dist/components/kritzel-portal.js +1 -9
  141. package/dist/components/kritzel-split-button.js +1 -9
  142. package/dist/components/kritzel-stroke-size.js +1 -9
  143. package/dist/components/kritzel-tooltip.js +1 -9
  144. package/dist/components/kritzel-utility-panel.js +1 -9
  145. package/dist/components/kritzel-workspace-manager.js +1 -9
  146. package/dist/components/p-1z-ds26_.js +1 -0
  147. package/dist/components/p-4FEa4ADy.js +1 -0
  148. package/dist/components/p-B0kd2rUI.js +1 -16
  149. package/dist/components/p-B7Fdo5QJ.js +1 -0
  150. package/dist/components/p-BXaWhpO2.js +1 -0
  151. package/dist/components/p-Bj_Og27M.js +1 -0
  152. package/dist/components/p-BtuXeItZ.js +1 -0
  153. package/dist/components/p-C-d2IH4v.js +1 -0
  154. package/dist/components/p-C3UriJh7.js +1 -0
  155. package/dist/components/p-C4krHoUl.js +1 -0
  156. package/dist/components/p-C6qB08BS.js +1 -68
  157. package/dist/components/p-CF5L2Gdl.js +1 -0
  158. package/dist/components/p-CXzfYQ_u.js +1 -0
  159. package/dist/components/p-CeKT_dTd.js +1 -0
  160. package/dist/components/p-Cp15toXH.js +1 -0
  161. package/dist/components/p-Cy77SpWt.js +1 -0
  162. package/dist/components/p-D1tfzpy8.js +1 -0
  163. package/dist/components/p-D3LRBk2t.js +9 -0
  164. package/dist/components/p-D5ZsALCP.js +1 -0
  165. package/dist/components/p-D8W6LE-c.js +1 -11
  166. package/dist/components/p-DB5s1NY4.js +1 -0
  167. package/dist/components/p-DTezr6w9.js +1 -0
  168. package/dist/components/p-Du1vxHy8.js +1 -0
  169. package/dist/components/p-IAqZFssU.js +1 -0
  170. package/dist/components/p-g0N9j_uT.js +1 -0
  171. package/dist/components/p-l10It7Nm.js +1 -30
  172. package/dist/components/p-n789Y3S-.js +1 -45
  173. package/dist/esm/app-globals-DQuL1Twl.js +0 -3
  174. package/dist/esm/{default-line-tool.config-CuBm2vpW.js → default-line-tool.config-CD5sTKH-.js} +1515 -205
  175. package/dist/esm/index-BqhmuUH2.js +3253 -0
  176. package/dist/esm/index.js +11 -8
  177. package/dist/esm/kritzel-brush-style.entry.js +3 -4
  178. package/dist/esm/kritzel-color_22.entry.js +103 -66
  179. package/dist/esm/loader.js +3 -4
  180. package/dist/esm/stencil.js +4 -5
  181. package/dist/stencil/index.esm.js +1 -2
  182. package/dist/stencil/p-09295079.entry.js +1 -0
  183. package/dist/stencil/p-381c0e9c.entry.js +9 -0
  184. package/dist/stencil/p-BqhmuUH2.js +2 -0
  185. package/dist/stencil/p-CD5sTKH-.js +1 -0
  186. package/dist/stencil/p-DQuL1Twl.js +1 -2
  187. package/dist/stencil/stencil.esm.js +1 -2
  188. package/dist/types/components/shared/kritzel-color-palette/kritzel-color-palette.d.ts +1 -0
  189. package/dist/types/components/shared/kritzel-font-size/kritzel-font-size.d.ts +1 -0
  190. package/dist/types/stencil-public-runtime.d.ts +57 -3
  191. package/package.json +6 -1
  192. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
  193. package/dist/cjs/default-line-tool.config-JuTDR6PF.js.map +0 -1
  194. package/dist/cjs/index-Cj__YTlG.js +0 -1650
  195. package/dist/cjs/index-Cj__YTlG.js.map +0 -1
  196. package/dist/cjs/index.cjs.js.map +0 -1
  197. package/dist/cjs/kritzel-brush-style.entry.cjs.js.map +0 -1
  198. package/dist/cjs/loader.cjs.js.map +0 -1
  199. package/dist/cjs/stencil.cjs.js.map +0 -1
  200. package/dist/collection/classes/core/core.class.js.map +0 -1
  201. package/dist/collection/classes/core/reviver.class.js.map +0 -1
  202. package/dist/collection/classes/core/store.class.js.map +0 -1
  203. package/dist/collection/classes/core/viewport.class.js.map +0 -1
  204. package/dist/collection/classes/core/workspace.class.js.map +0 -1
  205. package/dist/collection/classes/handlers/base.handler.js.map +0 -1
  206. package/dist/collection/classes/handlers/context-menu.handler.js.map +0 -1
  207. package/dist/collection/classes/handlers/hover.handler.js.map +0 -1
  208. package/dist/collection/classes/handlers/key.handler.js.map +0 -1
  209. package/dist/collection/classes/handlers/line-handle.handler.js.map +0 -1
  210. package/dist/collection/classes/handlers/move.handler.js.map +0 -1
  211. package/dist/collection/classes/handlers/resize.handler.js.map +0 -1
  212. package/dist/collection/classes/handlers/rotation.handler.js.map +0 -1
  213. package/dist/collection/classes/handlers/selection.handler.js.map +0 -1
  214. package/dist/collection/classes/managers/anchor.manager.js.map +0 -1
  215. package/dist/collection/classes/managers/cursor.manager.js.map +0 -1
  216. package/dist/collection/classes/objects/base-object.class.js.map +0 -1
  217. package/dist/collection/classes/objects/custom-element.class.js.map +0 -1
  218. package/dist/collection/classes/objects/group.class.js.map +0 -1
  219. package/dist/collection/classes/objects/image.class.js.map +0 -1
  220. package/dist/collection/classes/objects/line.class.js.map +0 -1
  221. package/dist/collection/classes/objects/path.class.js.map +0 -1
  222. package/dist/collection/classes/objects/selection-box.class.js.map +0 -1
  223. package/dist/collection/classes/objects/selection-group.class.js.map +0 -1
  224. package/dist/collection/classes/objects/shape.class.js.map +0 -1
  225. package/dist/collection/classes/objects/text.class.js.map +0 -1
  226. package/dist/collection/classes/providers/broadcast-sync-provider.class.js.map +0 -1
  227. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js.map +0 -1
  228. package/dist/collection/classes/providers/indexeddb-sync-provider.class.js.map +0 -1
  229. package/dist/collection/classes/providers/websocket-sync-provider.class.js.map +0 -1
  230. package/dist/collection/classes/registries/icon-registry.class.js.map +0 -1
  231. package/dist/collection/classes/registries/tool.registry.js.map +0 -1
  232. package/dist/collection/classes/structures/app-state-map.structure.js.map +0 -1
  233. package/dist/collection/classes/structures/object-map.structure.js.map +0 -1
  234. package/dist/collection/classes/structures/quadtree.structure.js.map +0 -1
  235. package/dist/collection/classes/tools/base-tool.class.js.map +0 -1
  236. package/dist/collection/classes/tools/brush-tool.class.js.map +0 -1
  237. package/dist/collection/classes/tools/eraser-tool.class.js.map +0 -1
  238. package/dist/collection/classes/tools/image-tool.class.js.map +0 -1
  239. package/dist/collection/classes/tools/line-tool.class.js.map +0 -1
  240. package/dist/collection/classes/tools/selection-tool.class.js.map +0 -1
  241. package/dist/collection/classes/tools/shape-tool.class.js.map +0 -1
  242. package/dist/collection/classes/tools/text-tool.class.js.map +0 -1
  243. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +0 -1
  244. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +0 -1
  245. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +0 -1
  246. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +0 -1
  247. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +0 -1
  248. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +0 -1
  249. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +0 -1
  250. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +0 -1
  251. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +0 -1
  252. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +0 -1
  253. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +0 -1
  254. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +0 -1
  255. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +0 -1
  256. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +0 -1
  257. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +0 -1
  258. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +0 -1
  259. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +0 -1
  260. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +0 -1
  261. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +0 -1
  262. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +0 -1
  263. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +0 -1
  264. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +0 -1
  265. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +0 -1
  266. package/dist/collection/configs/default-brush-tool.config.js.map +0 -1
  267. package/dist/collection/configs/default-engine-config.js.map +0 -1
  268. package/dist/collection/configs/default-line-tool.config.js.map +0 -1
  269. package/dist/collection/configs/default-shape-tool.config.js.map +0 -1
  270. package/dist/collection/configs/default-sync.config.js.map +0 -1
  271. package/dist/collection/configs/default-text-tool.config.js.map +0 -1
  272. package/dist/collection/constants/core.constants.js.map +0 -1
  273. package/dist/collection/constants/engine.constants.js.map +0 -1
  274. package/dist/collection/enums/event-button.enum.js.map +0 -1
  275. package/dist/collection/enums/handle-type.enum.js.map +0 -1
  276. package/dist/collection/enums/shape-type.enum.js.map +0 -1
  277. package/dist/collection/helpers/class.helper.js.map +0 -1
  278. package/dist/collection/helpers/cursor.helper.js.map +0 -1
  279. package/dist/collection/helpers/devices.helper.js.map +0 -1
  280. package/dist/collection/helpers/event.helper.js.map +0 -1
  281. package/dist/collection/helpers/geometry.helper.js.map +0 -1
  282. package/dist/collection/helpers/html.helper.js.map +0 -1
  283. package/dist/collection/helpers/keyboard.helper.js.map +0 -1
  284. package/dist/collection/helpers/math.helper.js.map +0 -1
  285. package/dist/collection/helpers/object.helper.js.map +0 -1
  286. package/dist/collection/index.js.map +0 -1
  287. package/dist/collection/interfaces/anchor.interface.js.map +0 -1
  288. package/dist/collection/interfaces/arrow-head.interface.js.map +0 -1
  289. package/dist/collection/interfaces/bounding-box.interface.js.map +0 -1
  290. package/dist/collection/interfaces/clonable.interface.js.map +0 -1
  291. package/dist/collection/interfaces/context-menu-item.interface.js.map +0 -1
  292. package/dist/collection/interfaces/debug-info.interface.js.map +0 -1
  293. package/dist/collection/interfaces/engine-state.interface.js.map +0 -1
  294. package/dist/collection/interfaces/line-options.interface.js.map +0 -1
  295. package/dist/collection/interfaces/menu-item.interface.js.map +0 -1
  296. package/dist/collection/interfaces/object.interface.js.map +0 -1
  297. package/dist/collection/interfaces/path-options.interface.js.map +0 -1
  298. package/dist/collection/interfaces/point.interface.js.map +0 -1
  299. package/dist/collection/interfaces/polygon.interface.js.map +0 -1
  300. package/dist/collection/interfaces/selection-state.interface.js.map +0 -1
  301. package/dist/collection/interfaces/serializable.interface.js.map +0 -1
  302. package/dist/collection/interfaces/shortcut.interface.js.map +0 -1
  303. package/dist/collection/interfaces/sync-config.interface.js.map +0 -1
  304. package/dist/collection/interfaces/sync-provider.interface.js.map +0 -1
  305. package/dist/collection/interfaces/tool.interface.js.map +0 -1
  306. package/dist/collection/interfaces/toolbar-control.interface.js.map +0 -1
  307. package/dist/collection/interfaces/undo-state.interface.js.map +0 -1
  308. package/dist/collection/types/deep-readonly.type.js.map +0 -1
  309. package/dist/collection/types/state.types.js.map +0 -1
  310. package/dist/components/index.js.map +0 -1
  311. package/dist/components/kritzel-brush-style.js.map +0 -1
  312. package/dist/components/kritzel-color-palette.js.map +0 -1
  313. package/dist/components/kritzel-color.js.map +0 -1
  314. package/dist/components/kritzel-context-menu.js.map +0 -1
  315. package/dist/components/kritzel-control-brush-config.js.map +0 -1
  316. package/dist/components/kritzel-control-text-config.js.map +0 -1
  317. package/dist/components/kritzel-controls.js.map +0 -1
  318. package/dist/components/kritzel-cursor-trail.js.map +0 -1
  319. package/dist/components/kritzel-dropdown.js.map +0 -1
  320. package/dist/components/kritzel-editor.js.map +0 -1
  321. package/dist/components/kritzel-engine.js.map +0 -1
  322. package/dist/components/kritzel-font-family.js.map +0 -1
  323. package/dist/components/kritzel-font-size.js.map +0 -1
  324. package/dist/components/kritzel-font.js.map +0 -1
  325. package/dist/components/kritzel-icon.js.map +0 -1
  326. package/dist/components/kritzel-menu-item.js.map +0 -1
  327. package/dist/components/kritzel-menu.js.map +0 -1
  328. package/dist/components/kritzel-portal.js.map +0 -1
  329. package/dist/components/kritzel-split-button.js.map +0 -1
  330. package/dist/components/kritzel-stroke-size.js.map +0 -1
  331. package/dist/components/kritzel-tooltip.js.map +0 -1
  332. package/dist/components/kritzel-utility-panel.js.map +0 -1
  333. package/dist/components/kritzel-workspace-manager.js.map +0 -1
  334. package/dist/components/p-B0kd2rUI.js.map +0 -1
  335. package/dist/components/p-B80ry-r4.js +0 -103
  336. package/dist/components/p-B80ry-r4.js.map +0 -1
  337. package/dist/components/p-BC5-_yPs.js +0 -75
  338. package/dist/components/p-BC5-_yPs.js.map +0 -1
  339. package/dist/components/p-BUsg2vtg.js +0 -14897
  340. package/dist/components/p-BUsg2vtg.js.map +0 -1
  341. package/dist/components/p-Bo-NQ68K.js +0 -132
  342. package/dist/components/p-Bo-NQ68K.js.map +0 -1
  343. package/dist/components/p-C6qB08BS.js.map +0 -1
  344. package/dist/components/p-C720oASC.js +0 -201
  345. package/dist/components/p-C720oASC.js.map +0 -1
  346. package/dist/components/p-C92UCXyc.js +0 -308
  347. package/dist/components/p-C92UCXyc.js.map +0 -1
  348. package/dist/components/p-CAxHKvww.js +0 -119
  349. package/dist/components/p-CAxHKvww.js.map +0 -1
  350. package/dist/components/p-CD9cCvhR.js +0 -272
  351. package/dist/components/p-CD9cCvhR.js.map +0 -1
  352. package/dist/components/p-CIlIrPRp.js +0 -83
  353. package/dist/components/p-CIlIrPRp.js.map +0 -1
  354. package/dist/components/p-CIts5Uma.js +0 -110
  355. package/dist/components/p-CIts5Uma.js.map +0 -1
  356. package/dist/components/p-Cdw55iW6.js +0 -281
  357. package/dist/components/p-Cdw55iW6.js.map +0 -1
  358. package/dist/components/p-CwkUrTy1.js +0 -1367
  359. package/dist/components/p-CwkUrTy1.js.map +0 -1
  360. package/dist/components/p-D8W6LE-c.js.map +0 -1
  361. package/dist/components/p-DI7JQMsC.js +0 -46
  362. package/dist/components/p-DI7JQMsC.js.map +0 -1
  363. package/dist/components/p-DmYjCy-z.js +0 -62
  364. package/dist/components/p-DmYjCy-z.js.map +0 -1
  365. package/dist/components/p-DoD6F7Y4.js +0 -157
  366. package/dist/components/p-DoD6F7Y4.js.map +0 -1
  367. package/dist/components/p-DyVWaSSc.js +0 -55
  368. package/dist/components/p-DyVWaSSc.js.map +0 -1
  369. package/dist/components/p-WLXyD_eY.js +0 -111
  370. package/dist/components/p-WLXyD_eY.js.map +0 -1
  371. package/dist/components/p-c7AGmG3p.js +0 -73
  372. package/dist/components/p-c7AGmG3p.js.map +0 -1
  373. package/dist/components/p-fm-bG_zL.js +0 -231
  374. package/dist/components/p-fm-bG_zL.js.map +0 -1
  375. package/dist/components/p-fqLbEfE0.js +0 -39586
  376. package/dist/components/p-fqLbEfE0.js.map +0 -1
  377. package/dist/components/p-l10It7Nm.js.map +0 -1
  378. package/dist/components/p-n789Y3S-.js.map +0 -1
  379. package/dist/components/p-qWf2T62p.js +0 -57
  380. package/dist/components/p-qWf2T62p.js.map +0 -1
  381. package/dist/components/p-vLN8eXFe.js +0 -106
  382. package/dist/components/p-vLN8eXFe.js.map +0 -1
  383. package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
  384. package/dist/esm/default-line-tool.config-CuBm2vpW.js.map +0 -1
  385. package/dist/esm/index-SGde3HXB.js +0 -1623
  386. package/dist/esm/index-SGde3HXB.js.map +0 -1
  387. package/dist/esm/index.js.map +0 -1
  388. package/dist/esm/kritzel-brush-style.entry.js.map +0 -1
  389. package/dist/esm/loader.js.map +0 -1
  390. package/dist/esm/stencil.js.map +0 -1
  391. package/dist/stencil/index.esm.js.map +0 -1
  392. package/dist/stencil/kritzel-brush-style.entry.esm.js.map +0 -1
  393. package/dist/stencil/loader.esm.js.map +0 -1
  394. package/dist/stencil/p-0a9b6696.entry.js +0 -2
  395. package/dist/stencil/p-0a9b6696.entry.js.map +0 -1
  396. package/dist/stencil/p-0fdce6ce.entry.js +0 -10
  397. package/dist/stencil/p-0fdce6ce.entry.js.map +0 -1
  398. package/dist/stencil/p-CuBm2vpW.js +0 -2
  399. package/dist/stencil/p-CuBm2vpW.js.map +0 -1
  400. package/dist/stencil/p-DQuL1Twl.js.map +0 -1
  401. package/dist/stencil/p-SGde3HXB.js +0 -3
  402. package/dist/stencil/p-SGde3HXB.js.map +0 -1
  403. package/dist/stencil/stencil.esm.js.map +0 -1
@@ -1 +0,0 @@
1
- {"file":"p-CIts5Uma.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/classes/registries/icon-registry.class.ts","src/components/shared/kritzel-icon/kritzel-icon.css?tag=kritzel-icon&encapsulation=shadow","src/components/shared/kritzel-icon/kritzel-icon.tsx"],"sourcesContent":["export class KritzelIconRegistry {\r\n private static registry = new Map<string, string>();\r\n\r\n public static register(name: string, svgContent: string): void {\r\n if (this.registry.has(name)) {\r\n console.warn(`[IconRegistry] Icon \"${name}\" is already registered. It will be overwritten.`);\r\n }\r\n this.registry.set(name, svgContent);\r\n }\r\n\r\n public static get(name: string): string | undefined {\r\n return this.registry.get(name);\r\n }\r\n\r\n public static registerIcons(icons: { [key: string]: string }): void {\r\n for (const name in icons) {\r\n if (Object.prototype.hasOwnProperty.call(icons, name)) {\r\n this.register(name, icons[name]);\r\n }\r\n }\r\n }\r\n\r\n public static has(name: string): boolean {\r\n return this.registry.has(name);\r\n }\r\n}\r\n\r\nKritzelIconRegistry.registerIcons({\r\n 'cursor': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z\"/></svg>',\r\n 'pen': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\"/></svg>',\r\n 'arrow': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"19\" x2=\"19\" y2=\"5\"/><path d=\"M15 5h4v4\"/></svg>',\r\n 'highlighter': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-highlighter-icon lucide-highlighter\"><path d=\"m9 11-6 6v3h9l3-3\"/><path d=\"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4\"/></svg>',\r\n 'eraser': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21\"/><path d=\"M22 21H7\"/><path d=\"m5 11 9 9\"/></svg>',\r\n 'type': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"4 7 4 4 20 4 20 7\"/><line x1=\"9\" x2=\"15\" y1=\"20\" y2=\"20\"/><line x1=\"12\" x2=\"12\" y1=\"4\" y2=\"20\"/></svg>',\r\n 'shapes': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"/><circle cx=\"17.5\" cy=\"17.5\" r=\"3.5\"/></svg>',\r\n 'shape-rectangle': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/></svg>',\r\n 'shape-ellipse': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><ellipse cx=\"12\" cy=\"12\" rx=\"10\" ry=\"8\"/></svg>',\r\n 'shape-triangle': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 3L22 21H2L12 3Z\"/></svg>',\r\n 'image': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/><path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"/></svg>',\r\n 'chevron-down': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>',\r\n 'chevron-up': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m18 15-6-6-6 6\"/></svg>',\r\n 'copy': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-copy-icon lucide-copy\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/></svg>',\r\n 'paste': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-clipboard-paste-icon lucide-clipboard-paste\"><path d=\"M11 14h10\"/><path d=\"M16 4h2a2 2 0 0 1 2 2v1.344\"/><path d=\"m17 18 4-4-4-4\"/><path d=\"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113\"/><rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\"/></svg>',\r\n 'cut': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-scissors-icon lucide-scissors\"><circle cx=\"6\" cy=\"6\" r=\"3\"/><path d=\"M8.12 8.12 12 12\"/><path d=\"M20 4 8.12 15.88\"/><circle cx=\"6\" cy=\"18\" r=\"3\"/><path d=\"M14.8 14.8 20 20\"/></svg>',\r\n 'delete': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-trash2-icon lucide-trash-2\"><path d=\"M3 6h18\"/><path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\"/><path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\"/><line x1=\"10\" x2=\"10\" y1=\"11\" y2=\"17\"/><line x1=\"14\" x2=\"14\" y1=\"11\" y2=\"17\"/></svg>',\r\n 'bring-to-front': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-to-line-icon lucide-arrow-up-to-line\"><path d=\"M5 3h14\"/><path d=\"m18 13-6-6-6 6\"/><path d=\"M12 7v14\"/></svg>',\r\n 'send-to-back': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-to-line-icon lucide-arrow-down-to-line\"><path d=\"M12 17V3\"/><path d=\"m6 11 6 6 6-6\"/><path d=\"M19 21H5\"/></svg>',\r\n 'select-all': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-square-mouse-pointer-icon lucide-square-mouse-pointer\"><path d=\"M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z\"/><path d=\"M21 11V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6\"/></svg>',\r\n 'download': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-download-icon lucide-download\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"12\" x2=\"12\" y1=\"15\" y2=\"3\"/></svg>',\r\n 'undo': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-undo-icon lucide-undo\"><path d=\"M3 7v6h6\"/><path d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\"/></svg>',\r\n 'redo': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-redo-icon lucide-redo\"><path d=\"M21 7v6h-6\"/><path d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\"/></svg>',\r\n 'plus': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus-icon lucide-plus\"><path d=\"M5 12h14\"/><path d=\"M12 5v14\"/></svg>',\r\n 'ellipsis-vertical': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-ellipsis-vertical-icon lucide-ellipsis-vertical\"><circle cx=\"12\" cy=\"12\" r=\"1\"/><circle cx=\"12\" cy=\"5\" r=\"1\"/><circle cx=\"12\" cy=\"19\" r=\"1\"/></svg>',\r\n 'x': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-x-icon lucide-x\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>',\r\n 'check': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-check-icon lucide-check\"><path d=\"M20 6 9 17l-5-5\"/></svg>',\r\n 'group': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-group-icon lucide-group\"><path d=\"M3 7V5c0-1.1.9-2 2-2h2\"/><path d=\"M17 3h2c1.1 0 2 .9 2 2v2\"/><path d=\"M21 17v2c0 1.1-.9 2-2 2h-2\"/><path d=\"M7 21H5c-1.1 0-2-.9-2-2v-2\"/><rect width=\"7\" height=\"5\" x=\"7\" y=\"7\" rx=\"1\"/><rect width=\"7\" height=\"5\" x=\"10\" y=\"12\" rx=\"1\"/></svg>',\r\n 'ungroup': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-ungroup-icon lucide-ungroup\"><rect width=\"8\" height=\"6\" x=\"5\" y=\"4\" rx=\"1\"/><rect width=\"8\" height=\"6\" x=\"11\" y=\"14\" rx=\"1\"/></svg>',\r\n 'move-vertical': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-move-vertical-icon lucide-move-vertical\" version=\"1.1\" id=\"svg3\"> <defs id=\"defs3\" /> <path d=\"M12 2v20\" id=\"path1\" /> <path style=\"fill:#ffffff;stroke-width:2.5;stroke-dasharray:none;stroke-linejoin:round;paint-order:stroke fill markers\" d=\"m 11.735575,22.661865 c -0.09259,-0.02798 -0.204674,-0.07661 -0.249076,-0.108068 -0.04441,-0.03147 -1.167275,-0.979853 -2.4952713,-2.10755 -1.8557024,-1.57581 -2.4300904,-2.079639 -2.4817336,-2.17687 -0.086514,-0.162885 -0.089504,-0.422449 -0.00664,-0.576334 0.1483053,-0.275409 0.437667,-0.436207 0.7830634,-0.435147 0.3692925,0.0011 0.3517326,-0.01122 2.168748,1.525599 L 11.12348,20.194964 V 11.999996 3.8050256 L 9.4546663,5.2164943 C 7.6376509,6.7533118 7.6552109,6.7409594 7.2859184,6.7420935 6.6681409,6.7439906 6.253658,6.1955854 6.5159903,5.723396 6.5738626,5.6192278 7.1368766,5.1267427 9.0629381,3.4955044 11.738128,1.2298067 11.640395,1.3026868 12.00355,1.3026868 c 0.363154,0 0.265421,-0.07288 2.940611,2.1928176 1.926062,1.6312383 2.489076,2.1237234 2.546948,2.2278916 0.262332,0.4721894 -0.15215,1.0205946 -0.769928,1.0186975 -0.369293,-0.00114 -0.351733,0.011218 -2.168748,-1.5255992 L 12.88362,3.8050256 v 8.1949704 8.194968 l 1.668813,-1.411469 c 1.817015,-1.536817 1.799455,-1.524464 2.168748,-1.525599 0.617772,-0.0019 1.032269,0.546521 0.769928,1.018687 -0.103474,0.18623 -4.919006,4.273935 -5.130582,4.355136 -0.20796,0.07981 -0.425829,0.09033 -0.624952,0.03014 z\" id=\"path4\" /> </svg>',\r\n 'hand': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-hand-icon lucide-hand\" version=\"1.1\" id=\"svg4\"> <defs id=\"defs4\" /> <path d=\"M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2\" id=\"path1\" /> <path d=\"M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2\" id=\"path2\" /> <path d=\"M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8\" id=\"path3\" /> <path d=\"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15\" id=\"path4\" /> <path style=\"fill:#ffffff;stroke-width:0.0423032\" d=\"M 11.478261,21.222477 C 9.6854059,21.139331 8.3341788,20.647346 7.1297169,19.639159 6.9698298,19.505327 5.949644,18.508708 4.8626374,17.42445 3.0780314,15.644357 2.8775851,15.435367 2.7968392,15.270602 2.5896561,14.847836 2.616354,14.436649 2.8771894,14.033085 c 0.136522,-0.211226 0.3837159,-0.398688 0.6367632,-0.482897 0.1529977,-0.05091 0.2326803,-0.05992 0.4470908,-0.05054 0.2250407,0.0098 0.2876577,0.02439 0.4554568,0.105827 0.1747854,0.08483 0.2933718,0.192702 1.1675186,1.062064 0.7182021,0.714271 1.0062041,0.982633 1.0998825,1.024878 0.1680197,0.07577 0.4756439,0.07817 0.6368269,0.005 0.1370772,-0.06226 0.2976691,-0.220818 0.3691296,-0.364463 0.072561,-0.145855 0.071573,-0.543545 -0.00169,-0.681911 -0.028747,-0.05429 -0.2476439,-0.296131 -0.4864385,-0.537426 l -0.4341716,-0.438718 0.00753,-3.989014 0.00753,-3.9890137 0.089246,-0.1883791 c 0.244787,-0.516692 0.7711718,-0.809716 1.3059705,-0.7269981 0.3973687,0.061462 0.7569953,0.3284904 0.9363122,0.6952277 l 0.093853,0.1919473 0.014101,2.4958872 0.014101,2.4958877 0.067385,0.149123 c 0.1186861,0.262654 0.4140438,0.457222 0.6940724,0.457222 0.2764172,0 0.5690532,-0.187563 0.6965992,-0.446482 l 0.06486,-0.131661 0.0141,-3.4970626 0.0141,-3.4970623 0.08982,-0.1896121 C 11.096301,3.0422103 11.506844,2.7755634 12,2.7755634 c 0.493156,0 0.903699,0.2666469 1.122868,0.7293016 l 0.08982,0.1896121 0.0141,3.2432432 c 0.01405,3.2315947 0.01432,3.2437077 0.07397,3.3726737 0.124721,0.269649 0.355908,0.424566 0.661411,0.443206 0.237954,0.01452 0.429018,-0.0627 0.591626,-0.239109 0.223655,-0.242637 0.208338,-0.06565 0.224113,-2.5896966 l 0.0141,-2.2561693 0.09385,-0.1919473 c 0.179317,-0.3667373 0.538944,-0.6337662 0.936313,-0.6952277 0.609359,-0.09425 1.208067,0.3054956 1.370981,0.9153772 0.03013,0.1127929 0.03773,0.6662436 0.038,2.7657391 3.74e-4,2.9328416 -0.008,2.8034316 0.197044,3.0364016 0.234927,0.266892 0.603828,0.337117 0.920407,0.175213 0.181933,-0.09304 0.329759,-0.261686 0.376309,-0.4293 0.01848,-0.06654 0.02929,-0.683932 0.0295,-1.684364 1.78e-4,-0.8783075 0.01239,-1.6530128 0.02751,-1.745346 0.08579,-0.5238478 0.505382,-0.9420803 1.039546,-1.0361716 0.607538,-0.1070155 1.25615,0.3485846 1.385876,0.973471 0.02211,0.1064847 0.02843,1.1397236 0.02169,3.5455556 -0.0093,3.324725 -0.01078,3.403075 -0.07062,3.770606 -0.126399,0.776213 -0.328814,1.41352 -0.669031,2.106456 -0.36657,0.746612 -0.72118,1.250303 -1.297841,1.843464 -1.185731,1.21966 -2.604527,1.933174 -4.300822,2.162889 -0.38234,0.05178 -2.604621,0.0785 -3.412456,0.04104 z\" id=\"path16\" /> </svg>',\r\n 'hand-grab': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-hand-grab-icon lucide-hand-grab\" version=\"1.1\" id=\"svg5\"> <defs id=\"defs5\" /> <path d=\"M18 11.5V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1.4\" id=\"path1\" /> <path d=\"M14 10V8a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2\" id=\"path2\" /> <path d=\"M10 9.9V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v5\" id=\"path3\" /> <path d=\"M6 14a2 2 0 0 0-2-2a2 2 0 0 0-2 2\" id=\"path4\" /> <path d=\"M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-4a8 8 0 0 1-8-8 2 2 0 1 1 4 0\" id=\"path5\" /> <path style=\"fill:#ffffff;stroke-width:0.0423032\" d=\"M 9.5887192,21.221364 C 8.0526856,21.128375 6.6533474,20.587008 5.4571093,19.622953 5.3019976,19.497947 5.0101058,19.225967 4.8084606,19.018552 4.2300382,18.423579 3.8474097,17.879011 3.4960953,17.150756 3.1017715,16.333345 2.9014937,15.633198 2.8052391,14.735605 c -0.097577,-0.909922 -0.019834,-1.263323 0.3569794,-1.622742 0.753018,-0.718257 1.9463784,-0.256949 2.0619296,0.797066 0.037839,0.345154 0.089701,0.477674 0.2472582,0.631806 0.2464521,0.241095 0.5958008,0.287445 0.9036474,0.119894 0.1478567,-0.08047 0.2303871,-0.16866 0.3266699,-0.349056 0.050118,-0.0939 0.05337,-0.2326 0.066784,-2.848413 L 6.7826087,8.7144536 6.8458627,8.559342 C 6.9736603,8.2459558 7.2463773,7.9734987 7.5581669,7.8477164 c 0.1253804,-0.050581 0.2118709,-0.062705 0.4512338,-0.063254 0.275392,-6.312e-4 0.3094658,0.00564 0.4867271,0.089609 0.264676,0.1253746 0.4771417,0.334346 0.6070085,0.5970252 l 0.1048543,0.212087 0.017338,0.7488899 c 0.019395,0.8377165 0.026343,0.8713745 0.2242006,1.0860245 0.1591067,0.172611 0.3522021,0.249908 0.5883018,0.235502 0.305503,-0.01864 0.53669,-0.173557 0.661411,-0.443206 0.05734,-0.123963 0.0605,-0.181852 0.07486,-1.3703236 0.01626,-1.3456629 0.0141,-1.3267758 0.182667,-1.5938092 0.257891,-0.4085268 0.77099,-0.6442307 1.228943,-0.5645435 0.471012,0.08196 0.850379,0.4102836 0.989676,0.8565175 0.04663,0.149383 0.0514,0.2860903 0.0514,1.4721724 0,0.8344844 0.01108,1.3591794 0.03064,1.4503554 0.04109,0.191585 0.179844,0.390224 0.342505,0.490321 0.27721,0.170587 0.693425,0.126085 0.92529,-0.09893 0.228986,-0.222224 0.234357,-0.25046 0.251582,-1.3227071 l 0.0152,-0.9463484 0.104855,-0.2120434 c 0.129872,-0.2626357 0.342372,-0.471626 0.607008,-0.5969817 0.177262,-0.083967 0.211335,-0.09024 0.486727,-0.089609 0.239363,5.486e-4 0.325854,0.012673 0.451234,0.063254 0.31179,0.1257823 0.584507,0.3982394 0.712304,0.7116256 0.0621,0.1522783 0.06351,0.1824139 0.07736,1.649824 0.01408,1.492435 0.0142,1.494914 0.07947,1.627432 0.0771,0.156535 0.2216,0.291061 0.395058,0.367789 0.09695,0.04289 0.169789,0.05275 0.325757,0.04411 0.230544,-0.01277 0.363779,-0.06826 0.506411,-0.21089 0.177062,-0.177061 0.198302,-0.25307 0.219359,-0.784959 0.02002,-0.505773 0.05012,-0.6549 0.175297,-0.868492 0.498409,-0.850471 1.728484,-0.8041941 2.173478,0.08177 0.131751,0.262312 0.134447,0.313526 0.122615,2.328965 -0.0104,1.771638 -0.01517,1.923481 -0.0714,2.273746 -0.123689,0.770512 -0.327108,1.411813 -0.668163,2.106456 -0.36657,0.746612 -0.72118,1.250303 -1.297841,1.843464 -1.180268,1.214041 -2.600612,1.930754 -4.287083,2.163284 -0.28697,0.03957 -0.685446,0.04782 -2.636536,0.05459 -1.26416,0.0044 -2.4698005,-0.0024 -2.6792012,-0.01507 z\" id=\"path6\" /> </svg>',\r\n 'mouse-pointer': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-mouse-pointer2-icon lucide-mouse-pointer-2\" version=\"1.1\" id=\"svg1\"> <defs id=\"defs1\" /> <path d=\"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z\" id=\"path1\" /> <path style=\"fill:#ffffff;stroke-width:0.0972651;stroke-linejoin:round;paint-order:stroke fill markers\" d=\"M 7.8509196,12.314844 C 6.127071,8.1920568 4.7235325,4.8125504 4.7319449,4.8048299 c 0.01847,-0.016951 15.4787861,6.0801241 15.4610371,6.0973581 -0.0069,0.0067 -1.32633,0.341226 -2.93219,0.743509 -1.858829,0.465652 -3.011462,0.772855 -3.172161,0.845453 -0.688426,0.310999 -1.245788,0.879167 -1.498145,1.527185 -0.06251,0.160512 -0.440389,1.529576 -0.839733,3.042364 -0.399346,1.512788 -0.734966,2.750433 -0.745822,2.750322 -0.01086,-1.09e-4 -1.430163,-3.373391 -3.1540114,-7.496177 z\" id=\"path2\" /> <path style=\"fill:#ffffff;stroke-width:0.0705053;stroke-linejoin:round;paint-order:stroke fill markers\" d=\"M 10.777831,19.240865 C 9.3899089,15.977493 4.7567738,4.8648478 4.7760705,4.8455511 c 0.013084,-0.013084 4.7618079,1.8507077 10.7773965,4.2299406 4.467495,1.7669453 4.558837,1.8037523 4.533848,1.8269883 -0.01183,0.011 -0.96064,0.257045 -2.108467,0.546768 -3.445281,0.869623 -3.777157,0.960825 -4.075205,1.119907 -0.597122,0.31871 -1.103666,0.864485 -1.309236,1.410635 -0.09642,0.256167 -0.312339,1.032806 -0.943226,3.392713 -0.641066,2.39798 -0.629171,2.354884 -0.649929,2.354849 -0.0091,-1.5e-5 -0.10963,-0.218934 -0.223421,-0.486487 z\" id=\"path6\" /> </svg>',\r\n 'pointer': '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-pointer-icon lucide-pointer\" version=\"1.1\" id=\"svg5\"> <defs id=\"defs5\" /> <path d=\"M22 14a8 8 0 0 1-8 8\" id=\"path1\" /> <path d=\"M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2\" id=\"path2\" /> <path d=\"M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1\" id=\"path3\" /> <path d=\"M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10\" id=\"path4\" /> <path d=\"M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15\" id=\"path5\" /> <path style=\"fill:#ffffff;stroke-width:0.0930233;stroke-linejoin:round;paint-order:stroke fill markers\" d=\"M 11.2,21.203517 C 9.5092536,21.041493 8.4838422,20.667261 7.3116279,19.784423 7.1888372,19.691945 6.139155,18.670017 4.9790008,17.513473 2.5649891,15.106974 2.6562686,15.220427 2.6869266,14.664621 c 0.020277,-0.367608 0.1272548,-0.601802 0.3822766,-0.836873 0.2609241,-0.240511 0.4631523,-0.319555 0.8191689,-0.320185 0.509345,-9.02e-4 0.5815472,0.04845 1.7102825,1.168976 0.532833,0.528958 1.0223742,0.98871 1.0878697,1.021671 0.1699959,0.08555 0.4741793,0.07658 0.6733897,-0.01985 0.303161,-0.146758 0.4720469,-0.543298 0.3791811,-0.890307 -0.036373,-0.135913 -0.1250717,-0.246717 -0.506083,-0.632208 l -0.4619807,-0.467411 0.00983,-5.002356 0.00983,-5.0023561 0.080405,-0.1739784 C 6.9849846,3.2633288 7.2288893,3.0140593 7.4738043,2.8937849 7.6531903,2.8056908 7.7297209,2.7906977 8,2.7906977 c 0.2702791,0 0.3468097,0.014993 0.5261957,0.1030872 0.244915,0.1202744 0.4888197,0.3695439 0.6027014,0.6159576 0.079998,0.1730976 0.080499,0.1905559 0.09901,3.448397 0.020472,3.6031325 0.00418,3.3665775 0.2478407,3.5980265 0.2810043,0.266918 0.6822132,0.283308 1.0083162,0.04119 0.232339,-0.172501 0.25913,-0.280173 0.275933,-1.1089849 0.01456,-0.7180841 0.01869,-0.7520168 0.117805,-0.9674419 0.454637,-0.9881395 1.789759,-0.9881395 2.244396,0 0.09912,0.2154251 0.103248,0.2493578 0.117805,0.9674419 0.0168,0.8288119 0.04359,0.9364839 0.275933,1.1089849 0.326103,0.242117 0.727312,0.225727 1.008316,-0.04119 0.160426,-0.152384 0.218977,-0.294978 0.250819,-0.610832 C 14.845142,9.2502593 15.336916,8.7840275 16,8.7840275 c 0.478554,0 0.847992,0.2240614 1.082489,0.6565225 l 0.126813,0.2338686 0.01869,0.7813954 c 0.02069,0.865066 0.03258,0.913549 0.276595,1.127795 0.239244,0.210059 0.56665,0.239738 0.88018,0.07979 0.219744,-0.112104 0.324993,-0.301479 0.383515,-0.690054 0.06437,-0.427406 0.125794,-0.56694 0.357358,-0.811785 C 19.38604,9.8862229 19.614832,9.7882106 20,9.7869898 c 0.380153,-0.0012 0.636641,0.1145641 0.905451,0.4086842 0.318537,0.348531 0.317259,0.340596 0.332734,2.064791 0.02055,2.290001 -0.04576,2.983129 -0.383655,4.009983 -0.878739,2.670467 -3.284504,4.613238 -6.090273,4.918188 -0.322415,0.03504 -3.227312,0.04717 -3.564257,0.01488 z\" id=\"path6\" /> <path style=\"fill:#ffffff;stroke-width:0.0705053;stroke-linejoin:round;paint-order:stroke fill markers\" d=\"m 11.942854,21.190957 c -1.015003,-0.01704 -1.131723,-0.02688 -1.806535,-0.1522 C 9.5352183,20.927122 8.8225664,20.681951 8.319624,20.413766 7.7570149,20.113766 7.3758537,19.827607 6.7836127,19.260598 5.774345,18.294328 3.1746828,15.68636 2.994305,15.459184 2.7288345,15.124838 2.6970674,15.049109 2.7026798,14.763988 c 0.00827,-0.420163 0.1162058,-0.679868 0.3844475,-0.925026 0.2382303,-0.217729 0.416008,-0.293073 0.7303102,-0.309513 0.5101451,-0.02668 0.6329728,0.04799 1.5378542,0.934977 0.8479274,0.831158 1.2429087,1.199656 1.342282,1.252283 0.11819,0.06259 0.4442817,0.06081 0.6122724,-0.0033 0.1482348,-0.05661 0.3410696,-0.248342 0.4107195,-0.408368 0.063024,-0.144802 0.06179,-0.498 -0.00216,-0.618376 C 7.6917315,14.63641 7.4736023,14.388937 7.2336742,14.136678 L 6.797441,13.678026 6.7970753,8.6903755 6.7967098,3.7027253 6.9021002,3.502167 C 7.0320375,3.2548956 7.2343175,3.0487286 7.4743519,2.9189189 c 0.1797064,-0.097185 0.1877434,-0.098707 0.5209477,-0.098707 0.3169743,0 0.349151,0.00524 0.5076381,0.082665 0.2190605,0.1070166 0.4871239,0.3748528 0.5931342,0.592632 l 0.081613,0.1676584 0.019992,1.3834579 c 0.010995,0.7609018 0.021403,2.0560783 0.023128,2.87817 0.00341,1.6233162 0.028863,2.2876938 0.093598,2.4426258 0.089047,0.213119 0.4255042,0.419889 0.683247,0.419889 0.1563141,0 0.3731941,-0.08265 0.5187231,-0.197689 0.205546,-0.162474 0.225694,-0.250142 0.256177,-1.1146856 C 10.79418,8.8613623 10.8052,8.7492253 10.85668,8.6186115 11.053264,8.1198873 11.50183,7.7978848 12,7.7978848 c 0.49817,0 0.946736,0.3220025 1.143315,0.8207259 0.05148,0.1306138 0.0625,0.2427508 0.08413,0.8563239 0.02897,0.8216044 0.05497,0.9507864 0.218548,1.0859664 0.341252,0.282005 0.756809,0.293493 1.057036,0.02922 0.169206,-0.148941 0.234219,-0.2921 0.288276,-0.6347773 0.103115,-0.6536616 0.472737,-1.0621772 1.030077,-1.1384664 0.547738,-0.074975 0.986339,0.1608863 1.276145,0.6862578 l 0.105758,0.1917223 7.68e-4,0.3699606 c 0.0011,0.553623 0.04553,1.179579 0.09141,1.289176 0.04428,0.105777 0.219161,0.276182 0.364423,0.355092 0.06913,0.03755 0.155512,0.05067 0.333059,0.05055 0.204058,-1.3e-4 0.260695,-0.01118 0.380729,-0.07426 0.239564,-0.12591 0.320531,-0.265583 0.407786,-0.703455 0.08382,-0.420648 0.125337,-0.527172 0.279883,-0.718174 0.321102,-0.3968443 0.77117,-0.5469022 1.259123,-0.4198065 0.21344,0.055594 0.39756,0.1739295 0.578279,0.3716645 0.286251,0.313205 0.299377,0.389392 0.324444,1.883099 0.02888,1.721047 -0.03379,2.808669 -0.20314,3.525265 -0.307591,1.301561 -0.970113,2.493177 -1.91312,3.440943 -1.060413,1.065767 -2.34115,1.742909 -3.849589,2.035329 -0.348478,0.06755 -0.462014,0.07524 -1.340342,0.09078 -0.527787,0.0093 -1.416154,0.0093 -1.974148,-6.4e-5 z\" id=\"path7\" /> </svg>'\r\n});",":host {\r\n display: inline-flex; /* Changed from block to inline-flex for better alignment */\r\n justify-content: center; /* Center content horizontally */\r\n align-items: center; /* Center content vertically */\r\n color: var(--kritzel-icon-color, inherited);\r\n}\r\n\r\nspan {\r\n display: flex;\r\n align-items: center;\r\n width: 100%; /* Make span fill host width */\r\n height: 100%; /* Make span fill host height */\r\n}\r\n\r\nspan > svg { /* Ensure SVG scales within the span */\r\n width: 100%;\r\n height: 100%;\r\n}\r\n","import { Component, h, Prop, Host } from '@stencil/core';\r\nimport { KritzelIconRegistry } from '../../../classes/registries/icon-registry.class';\r\n\r\n@Component({\r\n tag: 'kritzel-icon',\r\n styleUrl: 'kritzel-icon.css',\r\n shadow: true,\r\n})\r\nexport class KritzelIcon {\r\n @Prop() name: string;\r\n @Prop() label?: string;\r\n @Prop() size: number = 24;\r\n\r\n render() {\r\n const svgContent = KritzelIconRegistry.get(this.name);\r\n\r\n if (!svgContent) {\r\n console.error(`[kritzel-icon] Icon \"${this.name}\" not found in registry.`);\r\n return <span class=\"error-icon\" aria-label={`Error: Icon ${this.name} not found`}>?</span>;\r\n }\r\n\r\n const styles = {\r\n width: `${this.size}px`,\r\n height: `${this.size}px`,\r\n };\r\n\r\n return (\r\n <Host style={styles}>\r\n <span\r\n aria-hidden={!this.label}\r\n role={this.label ? 'img' : undefined}\r\n aria-label={this.label}\r\n innerHTML={svgContent}\r\n ></span>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -1,281 +0,0 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-CwkUrTy1.js';
2
-
3
- const kritzelDropdownCss = ":host{display:inline-flex;vertical-align:middle;width:100%;position:relative}.dropdown-wrapper{display:flex;align-items:center;border:1px solid #333333;border-radius:var(--kritzel-controls-control-border-radius, 12px);overflow:visible;height:32px;width:100%;position:relative}.dropdown-container{flex:1;height:100%;min-width:0}.dropdown-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px;height:100%;width:100%;box-sizing:border-box;border-radius:var(--kritzel-controls-control-border-radius, 12px);border:none;background-color:#fff;cursor:var(--kritzel-pointer-cursor, pointer);outline:none;font-size:inherit;font-family:inherit;color:var(--kritzel-controls-text-color, #333333);-webkit-tap-highlight-color:transparent;text-align:left}.dropdown-trigger:focus-visible{outline:2px solid var(--kritzel-controls-focus-color, #0066cc);outline-offset:-2px}.dropdown-trigger.has-suffix-border{border-right:1px solid #333333;border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-trigger.has-prefix-border{border-left:1px solid #333333;border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-trigger-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.dropdown-trigger-arrow{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;transition:transform 0.2s ease}.dropdown-trigger-arrow svg{width:100%;height:100%}.dropdown-trigger.is-open .dropdown-trigger-arrow{transform:rotate(180deg)}.dropdown-trigger.is-open.open-up .dropdown-trigger-arrow{transform:rotate(0deg)}.dropdown-menu{position:absolute;left:0;right:0;margin:0;padding:4px 0;list-style:none;background-color:#fff;border:1px solid #333333;border-radius:var(--kritzel-controls-control-border-radius, 12px);box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);z-index:1000;max-height:240px;overflow-y:auto;opacity:0;visibility:hidden;transition:opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;outline:none}.dropdown-menu.open-down{top:calc(100% + 4px);bottom:auto;transform:translateY(-8px)}.dropdown-menu.open-up{bottom:calc(100% + 4px);top:auto;transform:translateY(8px)}.dropdown-menu.is-open{opacity:1;visibility:visible;transform:translateY(0)}.dropdown-menu.open-up{box-shadow:0 -4px 12px rgba(0, 0, 0, 0.15)}.dropdown-option{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;cursor:var(--kritzel-pointer-cursor, pointer);color:var(--kritzel-controls-text-color, #333333);transition:background-color 0.1s ease;-webkit-tap-highlight-color:transparent}.dropdown-option.is-focused{background-color:var(--kritzel-controls-hover-bg, #f0f0f0)}.dropdown-option.is-selected{font-weight:600}.dropdown-option-check{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;color:var(--kritzel-controls-accent-color, #0066cc)}.dropdown-option-check svg{width:100%;height:100%}.dropdown-menu::-webkit-scrollbar{width:6px}.dropdown-menu::-webkit-scrollbar-track{background:transparent}.dropdown-menu::-webkit-scrollbar-thumb{background-color:rgba(0, 0, 0, 0.2);border-radius:3px}.dropdown-menu::-webkit-scrollbar-thumb:hover{background-color:rgba(0, 0, 0, 0.3)}::slotted(*){height:100%;box-sizing:border-box}";
4
-
5
- const KritzelDropdown = /*@__PURE__*/ proxyCustomElement(class KritzelDropdown extends H {
6
- constructor(registerHost) {
7
- super();
8
- if (registerHost !== false) {
9
- this.__registerHost();
10
- }
11
- this.__attachShadow();
12
- this.valueChanged = createEvent(this, "valueChanged");
13
- }
14
- get el() { return this; }
15
- options = [];
16
- optionsChanged() {
17
- this.updateInternalValue(this.internalValue, true);
18
- }
19
- value;
20
- externalValueChanged(newValue) {
21
- if (newValue !== this.internalValue) {
22
- this.updateInternalValue(newValue, false);
23
- }
24
- }
25
- width;
26
- selectStyles = {};
27
- internalValue;
28
- hasSuffixContent = false;
29
- hasPrefixContent = false;
30
- isOpen = false;
31
- focusedIndex = -1;
32
- openDirection = 'down';
33
- valueChanged;
34
- suffixSlotElement;
35
- prefixSlotElement;
36
- triggerElement;
37
- menuElement;
38
- wrapperElement;
39
- componentWillLoad() {
40
- this.updateInternalValue(this.value, false);
41
- this.evaluateSuffixContent();
42
- this.evaluatePrefixContent();
43
- }
44
- handleDocumentClick(event) {
45
- if (this.isOpen && !this.el.contains(event.target)) {
46
- this.closeMenu();
47
- }
48
- }
49
- handleDocumentKeydown(event) {
50
- if (this.isOpen && event.key === 'Escape') {
51
- event.stopPropagation();
52
- event.preventDefault();
53
- this.closeMenu();
54
- this.triggerElement?.focus();
55
- }
56
- }
57
- updateInternalValue(proposedValue, emitChange) {
58
- let finalValue = proposedValue;
59
- if (this.options && this.options.length > 0) {
60
- const isValidValue = this.options.some(opt => opt.value === finalValue);
61
- if (!finalValue || !isValidValue) {
62
- finalValue = this.options[0].value;
63
- }
64
- }
65
- else {
66
- finalValue = undefined;
67
- }
68
- if (this.internalValue !== finalValue) {
69
- this.internalValue = finalValue;
70
- if (emitChange || (proposedValue !== finalValue && proposedValue !== undefined)) {
71
- this.valueChanged.emit(this.internalValue);
72
- }
73
- }
74
- }
75
- toggleMenu = () => {
76
- if (this.isOpen) {
77
- this.closeMenu();
78
- }
79
- else {
80
- this.openMenu();
81
- }
82
- };
83
- openMenu = () => {
84
- this.calculateMenuDirection();
85
- this.isOpen = true;
86
- const currentIndex = this.options.findIndex(opt => opt.value === this.internalValue);
87
- this.focusedIndex = currentIndex >= 0 ? currentIndex : 0;
88
- // Focus the menu after it opens
89
- requestAnimationFrame(() => {
90
- this.menuElement?.focus();
91
- });
92
- };
93
- calculateMenuDirection = () => {
94
- if (!this.wrapperElement) {
95
- this.openDirection = 'down';
96
- return;
97
- }
98
- const wrapperRect = this.wrapperElement.getBoundingClientRect();
99
- const viewportHeight = window.innerHeight;
100
- const spaceBelow = viewportHeight - wrapperRect.bottom;
101
- const spaceAbove = wrapperRect.top;
102
- // Estimate menu height (max 240px or fewer based on options)
103
- const estimatedOptionHeight = 36; // padding + content
104
- const menuPadding = 8; // 4px top + 4px bottom
105
- const estimatedMenuHeight = Math.min(240, this.options.length * estimatedOptionHeight + menuPadding);
106
- // Prefer opening downward, but switch to upward if not enough space below
107
- // and there's more space above
108
- if (spaceBelow < estimatedMenuHeight && spaceAbove > spaceBelow) {
109
- this.openDirection = 'up';
110
- }
111
- else {
112
- this.openDirection = 'down';
113
- }
114
- };
115
- closeMenu = () => {
116
- this.isOpen = false;
117
- this.focusedIndex = -1;
118
- // Note: openDirection is intentionally NOT reset here to allow the close animation
119
- // to play in the same direction the menu was opened
120
- };
121
- selectOption = (option) => {
122
- if (this.internalValue !== option.value) {
123
- this.internalValue = option.value;
124
- this.valueChanged.emit(this.internalValue);
125
- }
126
- this.closeMenu();
127
- this.triggerElement?.focus();
128
- };
129
- handleTriggerKeyDown = (event) => {
130
- switch (event.key) {
131
- case 'Enter':
132
- case ' ':
133
- case 'ArrowDown':
134
- case 'ArrowUp':
135
- event.preventDefault();
136
- this.openMenu();
137
- break;
138
- }
139
- };
140
- handleMenuKeyDown = (event) => {
141
- switch (event.key) {
142
- case 'ArrowDown':
143
- event.preventDefault();
144
- this.focusedIndex = Math.min(this.focusedIndex + 1, this.options.length - 1);
145
- this.scrollFocusedOptionIntoView();
146
- break;
147
- case 'ArrowUp':
148
- event.preventDefault();
149
- this.focusedIndex = Math.max(this.focusedIndex - 1, 0);
150
- this.scrollFocusedOptionIntoView();
151
- break;
152
- case 'Enter':
153
- case ' ':
154
- event.preventDefault();
155
- if (this.focusedIndex >= 0 && this.focusedIndex < this.options.length) {
156
- this.selectOption(this.options[this.focusedIndex]);
157
- }
158
- break;
159
- case 'Home':
160
- event.preventDefault();
161
- this.focusedIndex = 0;
162
- this.scrollFocusedOptionIntoView();
163
- break;
164
- case 'End':
165
- event.preventDefault();
166
- this.focusedIndex = this.options.length - 1;
167
- this.scrollFocusedOptionIntoView();
168
- break;
169
- case 'Tab':
170
- this.closeMenu();
171
- break;
172
- }
173
- };
174
- scrollFocusedOptionIntoView = () => {
175
- if (!this.menuElement || this.focusedIndex < 0) {
176
- return;
177
- }
178
- // Use requestAnimationFrame to ensure the DOM has updated with the new focused class
179
- requestAnimationFrame(() => {
180
- const focusedOption = this.menuElement?.querySelector('.dropdown-option.is-focused');
181
- if (focusedOption) {
182
- focusedOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
183
- }
184
- });
185
- };
186
- handleOptionMouseEnter = (index) => {
187
- this.focusedIndex = index;
188
- };
189
- evaluateSuffixContent = () => {
190
- if (this.suffixSlotElement) {
191
- const newHasContent = this.suffixSlotElement.assignedNodes({ flatten: true }).length > 0;
192
- if (this.hasSuffixContent !== newHasContent) {
193
- this.hasSuffixContent = newHasContent;
194
- }
195
- }
196
- else if (this.hasSuffixContent !== false) {
197
- this.hasSuffixContent = false;
198
- }
199
- };
200
- evaluatePrefixContent = () => {
201
- if (this.prefixSlotElement) {
202
- const newHasContent = this.prefixSlotElement.assignedNodes({ flatten: true }).length > 0;
203
- if (this.hasPrefixContent !== newHasContent) {
204
- this.hasPrefixContent = newHasContent;
205
- }
206
- }
207
- else if (this.hasPrefixContent !== false) {
208
- this.hasPrefixContent = false;
209
- }
210
- };
211
- getSelectedLabel() {
212
- const selectedOption = this.options.find(opt => opt.value === this.internalValue);
213
- return selectedOption?.label ?? '';
214
- }
215
- getSelectedStyle() {
216
- const selectedOption = this.options.find(opt => opt.value === this.internalValue);
217
- return selectedOption?.style;
218
- }
219
- render() {
220
- const triggerClasses = {
221
- 'dropdown-trigger': true,
222
- 'has-suffix-border': this.hasSuffixContent,
223
- 'has-prefix-border': this.hasPrefixContent,
224
- 'is-open': this.isOpen,
225
- 'open-up': this.openDirection === 'up',
226
- };
227
- const menuClasses = {
228
- 'dropdown-menu': true,
229
- 'is-open': this.isOpen,
230
- 'open-up': this.openDirection === 'up',
231
- 'open-down': this.openDirection === 'down',
232
- };
233
- return (h(Host, { key: '29d076eb2ef76527c0930ab82ace0d05c896ab6c' }, h("div", { key: '1afac5cc0b7f408849670b8cb62fe0bd0f3b27f1', class: "dropdown-wrapper", ref: el => (this.wrapperElement = el) }, h("slot", { key: '3cfcf787c3b3eedbd6bf30c7506a0a4912429672', name: "prefix", ref: el => (this.prefixSlotElement = el), onSlotchange: this.evaluatePrefixContent }), h("div", { key: 'b88120ed3e44871220e6ba61e8bef457651a2086', class: "dropdown-container", style: { width: this.width } }, h("button", { key: '79082189066f3d0b4f5797420ec222847792fe52', type: "button", class: triggerClasses, style: { ...this.selectStyles, ...this.getSelectedStyle() }, onClick: this.toggleMenu, onKeyDown: this.handleTriggerKeyDown, "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', ref: el => (this.triggerElement = el) }, h("span", { key: 'a490bb6689ec1820144fe82f6833bee82e6ead0e', class: "dropdown-trigger-label" }, this.getSelectedLabel()), h("span", { key: '8bd7768f6fdd3c507bbca54d7d135adabe04901f', class: "dropdown-trigger-arrow", "aria-hidden": "true" }, h("svg", { key: 'e1b854d2c93e3067181108f8d782e1393ddb615c', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("polyline", { key: '3622cbf8964f4e50aa55be5209240dfd252f1d84', points: "6 9 12 15 18 9" }))))), h("slot", { key: 'b91317736904cbeee0f87058b822bd77c6b163ca', name: "suffix", ref: el => (this.suffixSlotElement = el), onSlotchange: this.evaluateSuffixContent }), h("ul", { key: '0ca8690345974e9b7ad184f4c7ab7cf5367b183c', class: menuClasses, role: "listbox", tabindex: "-1", onKeyDown: this.handleMenuKeyDown, ref: el => (this.menuElement = el) }, this.options.map((option, index) => {
234
- const isSelected = option.value === this.internalValue;
235
- const isFocused = index === this.focusedIndex;
236
- const optionClasses = {
237
- 'dropdown-option': true,
238
- 'is-selected': isSelected,
239
- 'is-focused': isFocused,
240
- };
241
- return (h("li", { class: optionClasses, role: "option", "aria-selected": isSelected ? 'true' : 'false', style: option.style, onClick: () => this.selectOption(option), onMouseEnter: () => this.handleOptionMouseEnter(index) }, option.label, isSelected && (h("span", { class: "dropdown-option-check", "aria-hidden": "true" }, h("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("polyline", { points: "20 6 9 17 4 12" }))))));
242
- })))));
243
- }
244
- static get watchers() { return {
245
- "options": ["optionsChanged"],
246
- "value": ["externalValueChanged"]
247
- }; }
248
- static get style() { return kritzelDropdownCss; }
249
- }, [769, "kritzel-dropdown", {
250
- "options": [16],
251
- "value": [1],
252
- "width": [1],
253
- "selectStyles": [16],
254
- "internalValue": [32],
255
- "hasSuffixContent": [32],
256
- "hasPrefixContent": [32],
257
- "isOpen": [32],
258
- "focusedIndex": [32],
259
- "openDirection": [32]
260
- }, [[4, "click", "handleDocumentClick"], [4, "keydown", "handleDocumentKeydown"]], {
261
- "options": ["optionsChanged"],
262
- "value": ["externalValueChanged"]
263
- }]);
264
- function defineCustomElement() {
265
- if (typeof customElements === "undefined") {
266
- return;
267
- }
268
- const components = ["kritzel-dropdown"];
269
- components.forEach(tagName => { switch (tagName) {
270
- case "kritzel-dropdown":
271
- if (!customElements.get(tagName)) {
272
- customElements.define(tagName, KritzelDropdown);
273
- }
274
- break;
275
- } });
276
- }
277
-
278
- export { KritzelDropdown as K, defineCustomElement as d };
279
- //# sourceMappingURL=p-Cdw55iW6.js.map
280
-
281
- //# sourceMappingURL=p-Cdw55iW6.js.map
@@ -1 +0,0 @@
1
- {"file":"p-Cdw55iW6.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/shared/kritzel-dropdown/kritzel-dropdown.css?tag=kritzel-dropdown&encapsulation=shadow","src/components/shared/kritzel-dropdown/kritzel-dropdown.tsx"],"sourcesContent":[":host {\r\n display: inline-flex;\r\n vertical-align: middle;\r\n width: 100%;\r\n position: relative;\r\n}\r\n\r\n.dropdown-wrapper {\r\n display: flex;\r\n align-items: center;\r\n border: 1px solid #333333;\r\n border-radius: var(--kritzel-controls-control-border-radius, 12px);\r\n overflow: visible;\r\n height: 32px;\r\n width: 100%;\r\n position: relative;\r\n}\r\n\r\n.dropdown-container {\r\n flex: 1;\r\n height: 100%;\r\n min-width: 0;\r\n}\r\n\r\n.dropdown-trigger {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 8px;\r\n padding: 0 8px;\r\n height: 100%;\r\n width: 100%;\r\n box-sizing: border-box;\r\n border-radius: var(--kritzel-controls-control-border-radius, 12px);\r\n border: none;\r\n background-color: #fff;\r\n cursor: var(--kritzel-pointer-cursor, pointer);\r\n outline: none;\r\n font-size: inherit;\r\n font-family: inherit;\r\n color: var(--kritzel-controls-text-color, #333333);\r\n -webkit-tap-highlight-color: transparent;\r\n text-align: left;\r\n}\r\n\r\n.dropdown-trigger:focus-visible {\r\n outline: 2px solid var(--kritzel-controls-focus-color, #0066cc);\r\n outline-offset: -2px;\r\n}\r\n\r\n.dropdown-trigger.has-suffix-border {\r\n border-right: 1px solid #333333;\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\r\n}\r\n\r\n.dropdown-trigger.has-prefix-border {\r\n border-left: 1px solid #333333;\r\n border-top-left-radius: 0;\r\n border-bottom-left-radius: 0;\r\n}\r\n\r\n.dropdown-trigger-label {\r\n flex: 1;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n min-width: 0;\r\n}\r\n\r\n.dropdown-trigger-arrow {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 16px;\r\n height: 16px;\r\n flex-shrink: 0;\r\n transition: transform 0.2s ease;\r\n}\r\n\r\n.dropdown-trigger-arrow svg {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.dropdown-trigger.is-open .dropdown-trigger-arrow {\r\n transform: rotate(180deg);\r\n}\r\n\r\n.dropdown-trigger.is-open.open-up .dropdown-trigger-arrow {\r\n transform: rotate(0deg);\r\n}\r\n\r\n.dropdown-menu {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n margin: 0;\r\n padding: 4px 0;\r\n list-style: none;\r\n background-color: #fff;\r\n border: 1px solid #333333;\r\n border-radius: var(--kritzel-controls-control-border-radius, 12px);\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n z-index: 1000;\r\n max-height: 240px;\r\n overflow-y: auto;\r\n opacity: 0;\r\n visibility: hidden;\r\n transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;\r\n outline: none;\r\n}\r\n\r\n/* Open downward (default) */\r\n.dropdown-menu.open-down {\r\n top: calc(100% + 4px);\r\n bottom: auto;\r\n transform: translateY(-8px);\r\n}\r\n\r\n/* Open upward */\r\n.dropdown-menu.open-up {\r\n bottom: calc(100% + 4px);\r\n top: auto;\r\n transform: translateY(8px);\r\n}\r\n\r\n.dropdown-menu.is-open {\r\n opacity: 1;\r\n visibility: visible;\r\n transform: translateY(0);\r\n}\r\n\r\n/* Adjust box shadow for upward opening */\r\n.dropdown-menu.open-up {\r\n box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.dropdown-option {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 8px;\r\n padding: 8px 12px;\r\n cursor: var(--kritzel-pointer-cursor, pointer);\r\n color: var(--kritzel-controls-text-color, #333333);\r\n transition: background-color 0.1s ease;\r\n -webkit-tap-highlight-color: transparent;\r\n}\r\n\r\n.dropdown-option.is-focused {\r\n background-color: var(--kritzel-controls-hover-bg, #f0f0f0);\r\n}\r\n\r\n.dropdown-option.is-selected {\r\n font-weight: 600;\r\n}\r\n\r\n.dropdown-option-check {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 16px;\r\n height: 16px;\r\n flex-shrink: 0;\r\n color: var(--kritzel-controls-accent-color, #0066cc);\r\n}\r\n\r\n.dropdown-option-check svg {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n/* Scrollbar styling */\r\n.dropdown-menu::-webkit-scrollbar {\r\n width: 6px;\r\n}\r\n\r\n.dropdown-menu::-webkit-scrollbar-track {\r\n background: transparent;\r\n}\r\n\r\n.dropdown-menu::-webkit-scrollbar-thumb {\r\n background-color: rgba(0, 0, 0, 0.2);\r\n border-radius: 3px;\r\n}\r\n\r\n.dropdown-menu::-webkit-scrollbar-thumb:hover {\r\n background-color: rgba(0, 0, 0, 0.3);\r\n}\r\n\r\n::slotted(*) {\r\n height: 100%;\r\n box-sizing: border-box;\r\n}\r\n","import { Component, Host, h, Prop, State, Event, EventEmitter, Watch, Element, Listen } from '@stencil/core';\r\n\r\nexport interface DropdownOption {\r\n value: string;\r\n label: string;\r\n style?: Record<string, string>; // 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 @Element() el: HTMLElement;\r\n\r\n @Prop() options: DropdownOption[] = [];\r\n @Watch('options')\r\n optionsChanged() {\r\n this.updateInternalValue(this.internalValue, true);\r\n }\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\r\n @Prop() width?: string;\r\n @Prop() selectStyles?: Record<string, string> = {};\r\n\r\n @State() internalValue: string;\r\n @State() hasSuffixContent = false;\r\n @State() hasPrefixContent = false;\r\n @State() isOpen = false;\r\n @State() focusedIndex = -1;\r\n @State() openDirection: 'down' | 'up' = 'down';\r\n\r\n @Event() valueChanged: EventEmitter<string>;\r\n\r\n private suffixSlotElement?: HTMLSlotElement;\r\n private prefixSlotElement?: HTMLSlotElement;\r\n private triggerElement?: HTMLButtonElement;\r\n private menuElement?: HTMLUListElement;\r\n private wrapperElement?: HTMLDivElement;\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 @Listen('click', { target: 'document' })\r\n handleDocumentClick(event: MouseEvent) {\r\n if (this.isOpen && !this.el.contains(event.target as Node)) {\r\n this.closeMenu();\r\n }\r\n }\r\n\r\n @Listen('keydown', { target: 'document' })\r\n handleDocumentKeydown(event: KeyboardEvent) {\r\n if (this.isOpen && event.key === 'Escape') {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.closeMenu();\r\n this.triggerElement?.focus();\r\n }\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 toggleMenu = () => {\r\n if (this.isOpen) {\r\n this.closeMenu();\r\n } else {\r\n this.openMenu();\r\n }\r\n };\r\n\r\n private openMenu = () => {\r\n this.calculateMenuDirection();\r\n this.isOpen = true;\r\n const currentIndex = this.options.findIndex(opt => opt.value === this.internalValue);\r\n this.focusedIndex = currentIndex >= 0 ? currentIndex : 0;\r\n // Focus the menu after it opens\r\n requestAnimationFrame(() => {\r\n this.menuElement?.focus();\r\n });\r\n };\r\n\r\n private calculateMenuDirection = () => {\r\n if (!this.wrapperElement) {\r\n this.openDirection = 'down';\r\n return;\r\n }\r\n\r\n const wrapperRect = this.wrapperElement.getBoundingClientRect();\r\n const viewportHeight = window.innerHeight;\r\n const spaceBelow = viewportHeight - wrapperRect.bottom;\r\n const spaceAbove = wrapperRect.top;\r\n\r\n // Estimate menu height (max 240px or fewer based on options)\r\n const estimatedOptionHeight = 36; // padding + content\r\n const menuPadding = 8; // 4px top + 4px bottom\r\n const estimatedMenuHeight = Math.min(\r\n 240,\r\n this.options.length * estimatedOptionHeight + menuPadding\r\n );\r\n\r\n // Prefer opening downward, but switch to upward if not enough space below\r\n // and there's more space above\r\n if (spaceBelow < estimatedMenuHeight && spaceAbove > spaceBelow) {\r\n this.openDirection = 'up';\r\n } else {\r\n this.openDirection = 'down';\r\n }\r\n };\r\n\r\n private closeMenu = () => {\r\n this.isOpen = false;\r\n this.focusedIndex = -1;\r\n // Note: openDirection is intentionally NOT reset here to allow the close animation\r\n // to play in the same direction the menu was opened\r\n };\r\n\r\n private selectOption = (option: DropdownOption) => {\r\n if (this.internalValue !== option.value) {\r\n this.internalValue = option.value;\r\n this.valueChanged.emit(this.internalValue);\r\n }\r\n this.closeMenu();\r\n this.triggerElement?.focus();\r\n };\r\n\r\n private handleTriggerKeyDown = (event: KeyboardEvent) => {\r\n switch (event.key) {\r\n case 'Enter':\r\n case ' ':\r\n case 'ArrowDown':\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.openMenu();\r\n break;\r\n }\r\n };\r\n\r\n private handleMenuKeyDown = (event: KeyboardEvent) => {\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.focusedIndex = Math.min(this.focusedIndex + 1, this.options.length - 1);\r\n this.scrollFocusedOptionIntoView();\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\r\n this.scrollFocusedOptionIntoView();\r\n break;\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n if (this.focusedIndex >= 0 && this.focusedIndex < this.options.length) {\r\n this.selectOption(this.options[this.focusedIndex]);\r\n }\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n this.focusedIndex = 0;\r\n this.scrollFocusedOptionIntoView();\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n this.focusedIndex = this.options.length - 1;\r\n this.scrollFocusedOptionIntoView();\r\n break;\r\n case 'Tab':\r\n this.closeMenu();\r\n break;\r\n }\r\n };\r\n\r\n private scrollFocusedOptionIntoView = () => {\r\n if (!this.menuElement || this.focusedIndex < 0) {\r\n return;\r\n }\r\n // Use requestAnimationFrame to ensure the DOM has updated with the new focused class\r\n requestAnimationFrame(() => {\r\n const focusedOption = this.menuElement?.querySelector('.dropdown-option.is-focused') as HTMLElement;\r\n if (focusedOption) {\r\n focusedOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\r\n }\r\n });\r\n };\r\n\r\n private handleOptionMouseEnter = (index: number) => {\r\n this.focusedIndex = index;\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 if (this.hasSuffixContent !== false) {\r\n this.hasSuffixContent = false;\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 if (this.hasPrefixContent !== false) {\r\n this.hasPrefixContent = false;\r\n }\r\n };\r\n\r\n private getSelectedLabel(): string {\r\n const selectedOption = this.options.find(opt => opt.value === this.internalValue);\r\n return selectedOption?.label ?? '';\r\n }\r\n\r\n private getSelectedStyle(): Record<string, string> | undefined {\r\n const selectedOption = this.options.find(opt => opt.value === this.internalValue);\r\n return selectedOption?.style;\r\n }\r\n\r\n render() {\r\n const triggerClasses = {\r\n 'dropdown-trigger': true,\r\n 'has-suffix-border': this.hasSuffixContent,\r\n 'has-prefix-border': this.hasPrefixContent,\r\n 'is-open': this.isOpen,\r\n 'open-up': this.openDirection === 'up',\r\n };\r\n\r\n const menuClasses = {\r\n 'dropdown-menu': true,\r\n 'is-open': this.isOpen,\r\n 'open-up': this.openDirection === 'up',\r\n 'open-down': this.openDirection === 'down',\r\n };\r\n\r\n return (\r\n <Host>\r\n <div class=\"dropdown-wrapper\" ref={el => (this.wrapperElement = el)}>\r\n <slot name=\"prefix\" ref={el => (this.prefixSlotElement = el as HTMLSlotElement)} onSlotchange={this.evaluatePrefixContent}></slot>\r\n <div class=\"dropdown-container\" style={{ width: this.width }}>\r\n <button\r\n type=\"button\"\r\n class={triggerClasses}\r\n style={{ ...this.selectStyles, ...this.getSelectedStyle() }}\r\n onClick={this.toggleMenu}\r\n onKeyDown={this.handleTriggerKeyDown}\r\n aria-haspopup=\"listbox\"\r\n aria-expanded={this.isOpen ? 'true' : 'false'}\r\n ref={el => (this.triggerElement = el)}\r\n >\r\n <span class=\"dropdown-trigger-label\">{this.getSelectedLabel()}</span>\r\n <span class=\"dropdown-trigger-arrow\" aria-hidden=\"true\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <polyline points=\"6 9 12 15 18 9\" />\r\n </svg>\r\n </span>\r\n </button>\r\n </div>\r\n <slot name=\"suffix\" ref={el => (this.suffixSlotElement = el as HTMLSlotElement)} onSlotchange={this.evaluateSuffixContent}></slot>\r\n <ul\r\n class={menuClasses}\r\n role=\"listbox\"\r\n tabindex=\"-1\"\r\n onKeyDown={this.handleMenuKeyDown}\r\n ref={el => (this.menuElement = el)}\r\n >\r\n {this.options.map((option, index) => {\r\n const isSelected = option.value === this.internalValue;\r\n const isFocused = index === this.focusedIndex;\r\n const optionClasses = {\r\n 'dropdown-option': true,\r\n 'is-selected': isSelected,\r\n 'is-focused': isFocused,\r\n };\r\n return (\r\n <li\r\n class={optionClasses}\r\n role=\"option\"\r\n aria-selected={isSelected ? 'true' : 'false'}\r\n style={option.style}\r\n onClick={() => this.selectOption(option)}\r\n onMouseEnter={() => this.handleOptionMouseEnter(index)}\r\n >\r\n {option.label}\r\n {isSelected && (\r\n <span class=\"dropdown-option-check\" aria-hidden=\"true\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n </span>\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}