kritzel-stencil 0.0.171 → 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 (406) 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 +4 -5
  6. package/dist/cjs/kritzel-color_22.cjs.entry.js +291 -106
  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 +1 -2
  54. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +2 -3
  55. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +6 -7
  56. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +1 -2
  57. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -3
  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 +151 -21
  60. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +192 -23
  61. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -2
  62. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +1 -2
  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 +1 -2
  66. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -3
  67. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -2
  68. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -2
  69. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -2
  70. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +2 -3
  71. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +1 -2
  72. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +2 -3
  73. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +2 -3
  74. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +1 -2
  75. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +3 -4
  76. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -2
  77. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +0 -1
  78. package/dist/collection/configs/default-brush-tool.config.js +0 -1
  79. package/dist/collection/configs/default-engine-config.js +0 -1
  80. package/dist/collection/configs/default-line-tool.config.js +0 -1
  81. package/dist/collection/configs/default-shape-tool.config.js +0 -1
  82. package/dist/collection/configs/default-sync.config.js +0 -1
  83. package/dist/collection/configs/default-text-tool.config.js +0 -1
  84. package/dist/collection/constants/core.constants.js +0 -1
  85. package/dist/collection/constants/engine.constants.js +0 -1
  86. package/dist/collection/enums/event-button.enum.js +0 -1
  87. package/dist/collection/enums/handle-type.enum.js +0 -1
  88. package/dist/collection/enums/shape-type.enum.js +0 -1
  89. package/dist/collection/helpers/class.helper.js +0 -1
  90. package/dist/collection/helpers/cursor.helper.js +0 -1
  91. package/dist/collection/helpers/devices.helper.js +0 -1
  92. package/dist/collection/helpers/event.helper.js +0 -1
  93. package/dist/collection/helpers/geometry.helper.js +0 -1
  94. package/dist/collection/helpers/html.helper.js +0 -1
  95. package/dist/collection/helpers/keyboard.helper.js +0 -1
  96. package/dist/collection/helpers/math.helper.js +0 -1
  97. package/dist/collection/helpers/object.helper.js +0 -1
  98. package/dist/collection/index.js +0 -1
  99. package/dist/collection/interfaces/anchor.interface.js +0 -1
  100. package/dist/collection/interfaces/arrow-head.interface.js +0 -1
  101. package/dist/collection/interfaces/bounding-box.interface.js +0 -1
  102. package/dist/collection/interfaces/clonable.interface.js +0 -1
  103. package/dist/collection/interfaces/context-menu-item.interface.js +0 -1
  104. package/dist/collection/interfaces/debug-info.interface.js +0 -1
  105. package/dist/collection/interfaces/engine-state.interface.js +0 -1
  106. package/dist/collection/interfaces/line-options.interface.js +0 -1
  107. package/dist/collection/interfaces/menu-item.interface.js +0 -1
  108. package/dist/collection/interfaces/object.interface.js +0 -1
  109. package/dist/collection/interfaces/path-options.interface.js +0 -1
  110. package/dist/collection/interfaces/point.interface.js +0 -1
  111. package/dist/collection/interfaces/polygon.interface.js +0 -1
  112. package/dist/collection/interfaces/selection-state.interface.js +0 -1
  113. package/dist/collection/interfaces/serializable.interface.js +0 -1
  114. package/dist/collection/interfaces/shortcut.interface.js +0 -1
  115. package/dist/collection/interfaces/sync-config.interface.js +0 -1
  116. package/dist/collection/interfaces/sync-provider.interface.js +0 -1
  117. package/dist/collection/interfaces/tool.interface.js +0 -1
  118. package/dist/collection/interfaces/toolbar-control.interface.js +0 -1
  119. package/dist/collection/interfaces/undo-state.interface.js +0 -1
  120. package/dist/collection/types/deep-readonly.type.js +0 -1
  121. package/dist/collection/types/state.types.js +0 -1
  122. package/dist/components/index.d.ts +1 -0
  123. package/dist/components/index.js +1 -1477
  124. package/dist/components/kritzel-brush-style.js +1 -67
  125. package/dist/components/kritzel-color-palette.js +1 -9
  126. package/dist/components/kritzel-color.js +1 -9
  127. package/dist/components/kritzel-context-menu.js +1 -9
  128. package/dist/components/kritzel-control-brush-config.js +1 -9
  129. package/dist/components/kritzel-control-text-config.js +1 -9
  130. package/dist/components/kritzel-controls.js +1 -9
  131. package/dist/components/kritzel-cursor-trail.js +1 -9
  132. package/dist/components/kritzel-dropdown.js +1 -9
  133. package/dist/components/kritzel-editor.js +1 -605
  134. package/dist/components/kritzel-engine.js +1 -9
  135. package/dist/components/kritzel-font-family.js +1 -9
  136. package/dist/components/kritzel-font-size.js +1 -9
  137. package/dist/components/kritzel-font.js +1 -9
  138. package/dist/components/kritzel-icon.js +1 -9
  139. package/dist/components/kritzel-menu-item.js +1 -9
  140. package/dist/components/kritzel-menu.js +1 -9
  141. package/dist/components/kritzel-portal.js +1 -9
  142. package/dist/components/kritzel-split-button.js +1 -9
  143. package/dist/components/kritzel-stroke-size.js +1 -9
  144. package/dist/components/kritzel-tooltip.js +1 -9
  145. package/dist/components/kritzel-utility-panel.js +1 -9
  146. package/dist/components/kritzel-workspace-manager.js +1 -9
  147. package/dist/components/p-1z-ds26_.js +1 -0
  148. package/dist/components/p-4FEa4ADy.js +1 -0
  149. package/dist/components/p-B0kd2rUI.js +1 -16
  150. package/dist/components/p-B7Fdo5QJ.js +1 -0
  151. package/dist/components/p-BXaWhpO2.js +1 -0
  152. package/dist/components/p-Bj_Og27M.js +1 -0
  153. package/dist/components/p-BtuXeItZ.js +1 -0
  154. package/dist/components/p-C-d2IH4v.js +1 -0
  155. package/dist/components/p-C3UriJh7.js +1 -0
  156. package/dist/components/p-C4krHoUl.js +1 -0
  157. package/dist/components/p-C6qB08BS.js +1 -68
  158. package/dist/components/p-CF5L2Gdl.js +1 -0
  159. package/dist/components/p-CXzfYQ_u.js +1 -0
  160. package/dist/components/p-CeKT_dTd.js +1 -0
  161. package/dist/components/p-Cp15toXH.js +1 -0
  162. package/dist/components/p-Cy77SpWt.js +1 -0
  163. package/dist/components/p-D1tfzpy8.js +1 -0
  164. package/dist/components/p-D3LRBk2t.js +9 -0
  165. package/dist/components/p-D5ZsALCP.js +1 -0
  166. package/dist/components/p-D8W6LE-c.js +1 -11
  167. package/dist/components/p-DB5s1NY4.js +1 -0
  168. package/dist/components/p-DTezr6w9.js +1 -0
  169. package/dist/components/p-Du1vxHy8.js +1 -0
  170. package/dist/components/p-IAqZFssU.js +1 -0
  171. package/dist/components/p-g0N9j_uT.js +1 -0
  172. package/dist/components/p-l10It7Nm.js +1 -30
  173. package/dist/components/p-n789Y3S-.js +1 -45
  174. package/dist/esm/app-globals-DQuL1Twl.js +0 -3
  175. package/dist/esm/{default-line-tool.config-CuBm2vpW.js → default-line-tool.config-CD5sTKH-.js} +1515 -205
  176. package/dist/esm/index-BqhmuUH2.js +3253 -0
  177. package/dist/esm/index.js +11 -8
  178. package/dist/esm/kritzel-brush-style.entry.js +4 -5
  179. package/dist/esm/kritzel-color_22.entry.js +291 -106
  180. package/dist/esm/loader.js +3 -4
  181. package/dist/esm/stencil.js +4 -5
  182. package/dist/stencil/index.esm.js +1 -2
  183. package/dist/stencil/p-09295079.entry.js +1 -0
  184. package/dist/stencil/p-381c0e9c.entry.js +9 -0
  185. package/dist/stencil/p-BqhmuUH2.js +2 -0
  186. package/dist/stencil/p-CD5sTKH-.js +1 -0
  187. package/dist/stencil/p-DQuL1Twl.js +1 -2
  188. package/dist/stencil/stencil.esm.js +1 -2
  189. package/dist/types/components/shared/kritzel-color-palette/kritzel-color-palette.d.ts +1 -0
  190. package/dist/types/components/shared/kritzel-dropdown/kritzel-dropdown.d.ts +22 -3
  191. package/dist/types/components/shared/kritzel-font-size/kritzel-font-size.d.ts +1 -0
  192. package/dist/types/components.d.ts +2 -2
  193. package/dist/types/stencil-public-runtime.d.ts +57 -3
  194. package/package.json +6 -1
  195. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
  196. package/dist/cjs/default-line-tool.config-JuTDR6PF.js.map +0 -1
  197. package/dist/cjs/index-Cj__YTlG.js +0 -1650
  198. package/dist/cjs/index-Cj__YTlG.js.map +0 -1
  199. package/dist/cjs/index.cjs.js.map +0 -1
  200. package/dist/cjs/kritzel-brush-style.entry.cjs.js.map +0 -1
  201. package/dist/cjs/loader.cjs.js.map +0 -1
  202. package/dist/cjs/stencil.cjs.js.map +0 -1
  203. package/dist/collection/classes/core/core.class.js.map +0 -1
  204. package/dist/collection/classes/core/reviver.class.js.map +0 -1
  205. package/dist/collection/classes/core/store.class.js.map +0 -1
  206. package/dist/collection/classes/core/viewport.class.js.map +0 -1
  207. package/dist/collection/classes/core/workspace.class.js.map +0 -1
  208. package/dist/collection/classes/handlers/base.handler.js.map +0 -1
  209. package/dist/collection/classes/handlers/context-menu.handler.js.map +0 -1
  210. package/dist/collection/classes/handlers/hover.handler.js.map +0 -1
  211. package/dist/collection/classes/handlers/key.handler.js.map +0 -1
  212. package/dist/collection/classes/handlers/line-handle.handler.js.map +0 -1
  213. package/dist/collection/classes/handlers/move.handler.js.map +0 -1
  214. package/dist/collection/classes/handlers/resize.handler.js.map +0 -1
  215. package/dist/collection/classes/handlers/rotation.handler.js.map +0 -1
  216. package/dist/collection/classes/handlers/selection.handler.js.map +0 -1
  217. package/dist/collection/classes/managers/anchor.manager.js.map +0 -1
  218. package/dist/collection/classes/managers/cursor.manager.js.map +0 -1
  219. package/dist/collection/classes/objects/base-object.class.js.map +0 -1
  220. package/dist/collection/classes/objects/custom-element.class.js.map +0 -1
  221. package/dist/collection/classes/objects/group.class.js.map +0 -1
  222. package/dist/collection/classes/objects/image.class.js.map +0 -1
  223. package/dist/collection/classes/objects/line.class.js.map +0 -1
  224. package/dist/collection/classes/objects/path.class.js.map +0 -1
  225. package/dist/collection/classes/objects/selection-box.class.js.map +0 -1
  226. package/dist/collection/classes/objects/selection-group.class.js.map +0 -1
  227. package/dist/collection/classes/objects/shape.class.js.map +0 -1
  228. package/dist/collection/classes/objects/text.class.js.map +0 -1
  229. package/dist/collection/classes/providers/broadcast-sync-provider.class.js.map +0 -1
  230. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js.map +0 -1
  231. package/dist/collection/classes/providers/indexeddb-sync-provider.class.js.map +0 -1
  232. package/dist/collection/classes/providers/websocket-sync-provider.class.js.map +0 -1
  233. package/dist/collection/classes/registries/icon-registry.class.js.map +0 -1
  234. package/dist/collection/classes/registries/tool.registry.js.map +0 -1
  235. package/dist/collection/classes/structures/app-state-map.structure.js.map +0 -1
  236. package/dist/collection/classes/structures/object-map.structure.js.map +0 -1
  237. package/dist/collection/classes/structures/quadtree.structure.js.map +0 -1
  238. package/dist/collection/classes/tools/base-tool.class.js.map +0 -1
  239. package/dist/collection/classes/tools/brush-tool.class.js.map +0 -1
  240. package/dist/collection/classes/tools/eraser-tool.class.js.map +0 -1
  241. package/dist/collection/classes/tools/image-tool.class.js.map +0 -1
  242. package/dist/collection/classes/tools/line-tool.class.js.map +0 -1
  243. package/dist/collection/classes/tools/selection-tool.class.js.map +0 -1
  244. package/dist/collection/classes/tools/shape-tool.class.js.map +0 -1
  245. package/dist/collection/classes/tools/text-tool.class.js.map +0 -1
  246. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +0 -1
  247. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +0 -1
  248. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +0 -1
  249. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +0 -1
  250. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +0 -1
  251. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +0 -1
  252. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +0 -1
  253. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +0 -1
  254. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +0 -1
  255. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +0 -1
  256. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +0 -1
  257. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +0 -1
  258. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +0 -1
  259. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +0 -1
  260. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +0 -1
  261. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +0 -1
  262. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +0 -1
  263. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +0 -1
  264. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +0 -1
  265. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +0 -1
  266. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +0 -1
  267. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +0 -1
  268. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +0 -1
  269. package/dist/collection/configs/default-brush-tool.config.js.map +0 -1
  270. package/dist/collection/configs/default-engine-config.js.map +0 -1
  271. package/dist/collection/configs/default-line-tool.config.js.map +0 -1
  272. package/dist/collection/configs/default-shape-tool.config.js.map +0 -1
  273. package/dist/collection/configs/default-sync.config.js.map +0 -1
  274. package/dist/collection/configs/default-text-tool.config.js.map +0 -1
  275. package/dist/collection/constants/core.constants.js.map +0 -1
  276. package/dist/collection/constants/engine.constants.js.map +0 -1
  277. package/dist/collection/enums/event-button.enum.js.map +0 -1
  278. package/dist/collection/enums/handle-type.enum.js.map +0 -1
  279. package/dist/collection/enums/shape-type.enum.js.map +0 -1
  280. package/dist/collection/helpers/class.helper.js.map +0 -1
  281. package/dist/collection/helpers/cursor.helper.js.map +0 -1
  282. package/dist/collection/helpers/devices.helper.js.map +0 -1
  283. package/dist/collection/helpers/event.helper.js.map +0 -1
  284. package/dist/collection/helpers/geometry.helper.js.map +0 -1
  285. package/dist/collection/helpers/html.helper.js.map +0 -1
  286. package/dist/collection/helpers/keyboard.helper.js.map +0 -1
  287. package/dist/collection/helpers/math.helper.js.map +0 -1
  288. package/dist/collection/helpers/object.helper.js.map +0 -1
  289. package/dist/collection/index.js.map +0 -1
  290. package/dist/collection/interfaces/anchor.interface.js.map +0 -1
  291. package/dist/collection/interfaces/arrow-head.interface.js.map +0 -1
  292. package/dist/collection/interfaces/bounding-box.interface.js.map +0 -1
  293. package/dist/collection/interfaces/clonable.interface.js.map +0 -1
  294. package/dist/collection/interfaces/context-menu-item.interface.js.map +0 -1
  295. package/dist/collection/interfaces/debug-info.interface.js.map +0 -1
  296. package/dist/collection/interfaces/engine-state.interface.js.map +0 -1
  297. package/dist/collection/interfaces/line-options.interface.js.map +0 -1
  298. package/dist/collection/interfaces/menu-item.interface.js.map +0 -1
  299. package/dist/collection/interfaces/object.interface.js.map +0 -1
  300. package/dist/collection/interfaces/path-options.interface.js.map +0 -1
  301. package/dist/collection/interfaces/point.interface.js.map +0 -1
  302. package/dist/collection/interfaces/polygon.interface.js.map +0 -1
  303. package/dist/collection/interfaces/selection-state.interface.js.map +0 -1
  304. package/dist/collection/interfaces/serializable.interface.js.map +0 -1
  305. package/dist/collection/interfaces/shortcut.interface.js.map +0 -1
  306. package/dist/collection/interfaces/sync-config.interface.js.map +0 -1
  307. package/dist/collection/interfaces/sync-provider.interface.js.map +0 -1
  308. package/dist/collection/interfaces/tool.interface.js.map +0 -1
  309. package/dist/collection/interfaces/toolbar-control.interface.js.map +0 -1
  310. package/dist/collection/interfaces/undo-state.interface.js.map +0 -1
  311. package/dist/collection/types/deep-readonly.type.js.map +0 -1
  312. package/dist/collection/types/state.types.js.map +0 -1
  313. package/dist/components/index.js.map +0 -1
  314. package/dist/components/kritzel-brush-style.js.map +0 -1
  315. package/dist/components/kritzel-color-palette.js.map +0 -1
  316. package/dist/components/kritzel-color.js.map +0 -1
  317. package/dist/components/kritzel-context-menu.js.map +0 -1
  318. package/dist/components/kritzel-control-brush-config.js.map +0 -1
  319. package/dist/components/kritzel-control-text-config.js.map +0 -1
  320. package/dist/components/kritzel-controls.js.map +0 -1
  321. package/dist/components/kritzel-cursor-trail.js.map +0 -1
  322. package/dist/components/kritzel-dropdown.js.map +0 -1
  323. package/dist/components/kritzel-editor.js.map +0 -1
  324. package/dist/components/kritzel-engine.js.map +0 -1
  325. package/dist/components/kritzel-font-family.js.map +0 -1
  326. package/dist/components/kritzel-font-size.js.map +0 -1
  327. package/dist/components/kritzel-font.js.map +0 -1
  328. package/dist/components/kritzel-icon.js.map +0 -1
  329. package/dist/components/kritzel-menu-item.js.map +0 -1
  330. package/dist/components/kritzel-menu.js.map +0 -1
  331. package/dist/components/kritzel-portal.js.map +0 -1
  332. package/dist/components/kritzel-split-button.js.map +0 -1
  333. package/dist/components/kritzel-stroke-size.js.map +0 -1
  334. package/dist/components/kritzel-tooltip.js.map +0 -1
  335. package/dist/components/kritzel-utility-panel.js.map +0 -1
  336. package/dist/components/kritzel-workspace-manager.js.map +0 -1
  337. package/dist/components/p-B0kd2rUI.js.map +0 -1
  338. package/dist/components/p-B6r22FSC.js +0 -57
  339. package/dist/components/p-B6r22FSC.js.map +0 -1
  340. package/dist/components/p-BUsg2vtg.js +0 -14897
  341. package/dist/components/p-BUsg2vtg.js.map +0 -1
  342. package/dist/components/p-B_3OZeom.js +0 -119
  343. package/dist/components/p-B_3OZeom.js.map +0 -1
  344. package/dist/components/p-BdwB-S9G.js +0 -130
  345. package/dist/components/p-BdwB-S9G.js.map +0 -1
  346. package/dist/components/p-BhLtP5Cg.js +0 -308
  347. package/dist/components/p-BhLtP5Cg.js.map +0 -1
  348. package/dist/components/p-Brd9SxWS.js +0 -73
  349. package/dist/components/p-Brd9SxWS.js.map +0 -1
  350. package/dist/components/p-C29Efgmc.js +0 -106
  351. package/dist/components/p-C29Efgmc.js.map +0 -1
  352. package/dist/components/p-C6-tSCMR.js +0 -272
  353. package/dist/components/p-C6-tSCMR.js.map +0 -1
  354. package/dist/components/p-C6qB08BS.js.map +0 -1
  355. package/dist/components/p-CFH6XRL5.js +0 -75
  356. package/dist/components/p-CFH6XRL5.js.map +0 -1
  357. package/dist/components/p-CIts5Uma.js +0 -110
  358. package/dist/components/p-CIts5Uma.js.map +0 -1
  359. package/dist/components/p-CO8bwl_3.js +0 -103
  360. package/dist/components/p-CO8bwl_3.js.map +0 -1
  361. package/dist/components/p-CRGwaUcp.js +0 -55
  362. package/dist/components/p-CRGwaUcp.js.map +0 -1
  363. package/dist/components/p-Ck4lGnmt.js +0 -46
  364. package/dist/components/p-Ck4lGnmt.js.map +0 -1
  365. package/dist/components/p-CwkUrTy1.js +0 -1367
  366. package/dist/components/p-CwkUrTy1.js.map +0 -1
  367. package/dist/components/p-D0UgEnEL.js +0 -39586
  368. package/dist/components/p-D0UgEnEL.js.map +0 -1
  369. package/dist/components/p-D8W6LE-c.js.map +0 -1
  370. package/dist/components/p-DGnDUmrk.js +0 -62
  371. package/dist/components/p-DGnDUmrk.js.map +0 -1
  372. package/dist/components/p-DO4auCYf.js +0 -111
  373. package/dist/components/p-DO4auCYf.js.map +0 -1
  374. package/dist/components/p-LAsVgL2e.js +0 -83
  375. package/dist/components/p-LAsVgL2e.js.map +0 -1
  376. package/dist/components/p-aeYt0bPO.js +0 -231
  377. package/dist/components/p-aeYt0bPO.js.map +0 -1
  378. package/dist/components/p-l10It7Nm.js.map +0 -1
  379. package/dist/components/p-n789Y3S-.js.map +0 -1
  380. package/dist/components/p-nIBAWFcK.js +0 -132
  381. package/dist/components/p-nIBAWFcK.js.map +0 -1
  382. package/dist/components/p-nZdy-Ii5.js +0 -157
  383. package/dist/components/p-nZdy-Ii5.js.map +0 -1
  384. package/dist/components/p-y25EBKEA.js +0 -201
  385. package/dist/components/p-y25EBKEA.js.map +0 -1
  386. package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
  387. package/dist/esm/default-line-tool.config-CuBm2vpW.js.map +0 -1
  388. package/dist/esm/index-SGde3HXB.js +0 -1623
  389. package/dist/esm/index-SGde3HXB.js.map +0 -1
  390. package/dist/esm/index.js.map +0 -1
  391. package/dist/esm/kritzel-brush-style.entry.js.map +0 -1
  392. package/dist/esm/loader.js.map +0 -1
  393. package/dist/esm/stencil.js.map +0 -1
  394. package/dist/stencil/index.esm.js.map +0 -1
  395. package/dist/stencil/kritzel-brush-style.entry.esm.js.map +0 -1
  396. package/dist/stencil/loader.esm.js.map +0 -1
  397. package/dist/stencil/p-385bab97.entry.js +0 -2
  398. package/dist/stencil/p-385bab97.entry.js.map +0 -1
  399. package/dist/stencil/p-CuBm2vpW.js +0 -2
  400. package/dist/stencil/p-CuBm2vpW.js.map +0 -1
  401. package/dist/stencil/p-DQuL1Twl.js.map +0 -1
  402. package/dist/stencil/p-SGde3HXB.js +0 -3
  403. package/dist/stencil/p-SGde3HXB.js.map +0 -1
  404. package/dist/stencil/p-d3f7214e.entry.js +0 -10
  405. package/dist/stencil/p-d3f7214e.entry.js.map +0 -1
  406. package/dist/stencil/stencil.esm.js.map +0 -1
@@ -1 +0,0 @@
1
- {"file":"p-D8W6LE-c.js","mappings":"AAAY,IAAA;AAAZ,CAAA,UAAY,kBAAkB,EAAA;IAC5B,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;IACR,kBAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;IACV,kBAAA,CAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACX,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,GAI7B,EAAA,CAAA,CAAA;;;;","names":[],"sources":["src/enums/event-button.enum.ts"],"sourcesContent":["export enum KritzelMouseButton {\r\n Left = 0,\r\n Middle = 1,\r\n Right = 2\r\n}\r\n"],"version":3}
@@ -1,62 +0,0 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-CwkUrTy1.js';
2
- import { d as defineCustomElement$1 } from './p-CIts5Uma.js';
3
-
4
- const kritzelUtilityPanelCss = ":host{display:flex;flex-direction:row;align-items:center;padding:4px;gap:8px;border-top-left-radius:12px;border-top-right-radius:12px;background-color:rgb(226, 226, 226);width:fit-content;user-select:none}.utility-button{display:flex;justify-content:center;align-items:center;width:28px;height:28px;padding:8px 4px;border:none;background:none;cursor:var(--kritzel-pointer-cursor, pointer);color:#333333;-webkit-tap-highlight-color:transparent;border-radius:var(--kritzel-utility-panel-button-border-radius, 8px)}.utility-button:hover,.utility-button:focus-visible{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.utility-button:disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}.utility-separator{width:1px;height:16px;background-color:hsl(0, 0%, 0%, 4.3%)}";
5
-
6
- const KritzelUtilityPanel = /*@__PURE__*/ proxyCustomElement(class KritzelUtilityPanel extends H {
7
- constructor(registerHost) {
8
- super();
9
- if (registerHost !== false) {
10
- this.__registerHost();
11
- }
12
- this.__attachShadow();
13
- this.undo = createEvent(this, "undo");
14
- this.redo = createEvent(this, "redo");
15
- this.delete = createEvent(this, "delete");
16
- }
17
- undoState = null;
18
- undo;
19
- redo;
20
- delete;
21
- handleUndo(event) {
22
- if (event.cancelable) {
23
- event.preventDefault();
24
- event.stopPropagation();
25
- this.undo.emit();
26
- }
27
- }
28
- handleRedo(event) {
29
- event.preventDefault();
30
- event.stopPropagation();
31
- this.redo.emit();
32
- }
33
- render() {
34
- return (h(Host, { key: '05ec19a2b644f00680139513c97650e6e7c612f2' }, h("button", { key: 'a62b621b7a1abe33fbf3fc0aa1f8e1d6c7ed8be3', class: "utility-button", disabled: !this.undoState?.canUndo, onClick: event => this.handleUndo(event) }, h("kritzel-icon", { key: 'ca8d0f9c9e5cebaf20ffc239602c4b4ce37b7e6b', name: "undo" })), h("button", { key: '7f1ba8b6ae3b8edf0ac0127fee30f3c070d47b44', class: "utility-button", disabled: !this.undoState?.canRedo, onClick: event => this.handleRedo(event) }, h("kritzel-icon", { key: '4680f7f9523fe6c17924662e025f5e6dfc3e9d78', name: "redo" })), h("div", { key: '77148d676ed708e4029b32e25a3daac628302478', class: "utility-separator" }), h("button", { key: 'b740674dc96d41c0b7b4d2cfb365d45c0f453a27', class: "utility-button" }, h("kritzel-icon", { key: '73d2ed9b6b400106521b0f53915e93516f9d3aad', name: "delete", onClick: () => this.delete.emit() }))));
35
- }
36
- static get style() { return kritzelUtilityPanelCss; }
37
- }, [769, "kritzel-utility-panel", {
38
- "undoState": [16]
39
- }]);
40
- function defineCustomElement() {
41
- if (typeof customElements === "undefined") {
42
- return;
43
- }
44
- const components = ["kritzel-utility-panel", "kritzel-icon"];
45
- components.forEach(tagName => { switch (tagName) {
46
- case "kritzel-utility-panel":
47
- if (!customElements.get(tagName)) {
48
- customElements.define(tagName, KritzelUtilityPanel);
49
- }
50
- break;
51
- case "kritzel-icon":
52
- if (!customElements.get(tagName)) {
53
- defineCustomElement$1();
54
- }
55
- break;
56
- } });
57
- }
58
-
59
- export { KritzelUtilityPanel as K, defineCustomElement as d };
60
- //# sourceMappingURL=p-DGnDUmrk.js.map
61
-
62
- //# sourceMappingURL=p-DGnDUmrk.js.map
@@ -1 +0,0 @@
1
- {"file":"p-DGnDUmrk.js","mappings":";;;AAAA,MAAM,sBAAsB,GAAG,+yBAA+yB;;MCQj0B,mBAAmB,iBAAAA,kBAAA,CAAA,MAAA,mBAAA,SAAAC,CAAA,CAAA;;;;;;;;;;;IACtB,SAAS,GAAqB,IAAI;AAEjC,IAAA,IAAI;AACJ,IAAA,IAAI;AACJ,IAAA,MAAM;AAEf,IAAA,UAAU,CAAC,KAAY,EAAA;AACrB,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;;;AAIpB,IAAA,UAAU,CAAC,KAAY,EAAA;QACrB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;;IAGlB,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAQ,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,gBAAgB,EAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAA,EACzG,CAAA,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAc,IAAI,EAAC,MAAM,EAAA,CAAgB,CAClC,EACT,CAAQ,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,gBAAgB,EAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAA,EACzG,CAAA,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAc,IAAI,EAAC,MAAM,EAAA,CAAgB,CAClC,EAET,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,mBAAmB,EAAO,CAAA,EAErC,CAAQ,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,gBAAgB,EAAA,EAC5B,CAAA,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAc,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAiB,CACvE,CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/ui/kritzel-utility-panel/kritzel-utility-panel.css?tag=kritzel-utility-panel&encapsulation=shadow","src/components/ui/kritzel-utility-panel/kritzel-utility-panel.tsx"],"sourcesContent":[":host {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 4px;\r\n gap: 8px;\r\n border-top-left-radius: 12px;\r\n border-top-right-radius: 12px;\r\n background-color: rgb(226, 226, 226);\r\n width: fit-content;\r\n user-select: none;\r\n}\r\n\r\n.utility-button {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 28px;\r\n height: 28px;\r\n padding: 8px 4px;\r\n border: none;\r\n background: none;\r\n cursor: var(--kritzel-pointer-cursor, pointer);\r\n color: #333333;\r\n -webkit-tap-highlight-color: transparent;\r\n border-radius: var(--kritzel-utility-panel-button-border-radius, 8px);\r\n}\r\n\r\n.utility-button:hover,\r\n.utility-button:focus-visible {\r\n background-color: var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%));\r\n}\r\n\r\n.utility-button:disabled {\r\n opacity: 0.4;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\n.utility-separator {\r\n width: 1px;\r\n height: 16px;\r\n background-color: hsl(0, 0%, 0%, 4.3%);\r\n}","import { Component, Host, h, Event, EventEmitter, Prop } from '@stencil/core';\r\nimport { KritzelUndoState } from '../../../interfaces/undo-state.interface';\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 @Prop() undoState: KritzelUndoState = null;\r\n\r\n @Event() undo: EventEmitter<void>;\r\n @Event() redo: EventEmitter<void>;\r\n @Event() 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\" disabled={!this.undoState?.canUndo} onClick={event => this.handleUndo(event)}>\r\n <kritzel-icon name=\"undo\"></kritzel-icon>\r\n </button>\r\n <button class=\"utility-button\" disabled={!this.undoState?.canRedo} 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"],"version":3}
@@ -1,111 +0,0 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-CwkUrTy1.js';
2
- import { K as KritzelHTMLHelper } from './p-C6qB08BS.js';
3
-
4
- const kritzelTooltipCss = ":host{width:auto}.tooltip-content{position:relative;padding:8px 12px;border-radius:4px;width:fit-content;background-color:var(--kritzel-controls-tooltip-background-color, #ffffff);color:var(--kritzel-controls-tooltip-color, #000000);padding:var(--kritzel-controls-tooltip-padding, 8px);border-radius:var(--kritzel-controls-tooltip-border-radius, 16px);white-space:nowrap;box-shadow:var(--kritzel-controls-tooltip-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12))}";
5
-
6
- const KritzelTooltip = /*@__PURE__*/ proxyCustomElement(class KritzelTooltip extends H {
7
- constructor(registerHost) {
8
- super();
9
- if (registerHost !== false) {
10
- this.__registerHost();
11
- }
12
- this.__attachShadow();
13
- this.tooltipClosed = createEvent(this, "tooltipClosed");
14
- }
15
- get host() { return this; }
16
- isVisible = false;
17
- anchorElement;
18
- offsetY = 24;
19
- tooltipClosed;
20
- positionX = 0;
21
- positionY = 0;
22
- handleOutsideClick(event) {
23
- if (!this.isVisible)
24
- return;
25
- const target = event.target;
26
- if (!this.host.contains(target)) {
27
- this.tooltipClosed.emit();
28
- }
29
- }
30
- handleWindowResize() {
31
- this.calculateAdjustedPosition();
32
- }
33
- async focusContent() {
34
- const focusableElements = KritzelHTMLHelper.getFocusableElements(this.host);
35
- if (focusableElements.length > 0) {
36
- focusableElements[0].focus();
37
- }
38
- }
39
- componentDidLoad() {
40
- this.focusSlottedContent();
41
- }
42
- componentWillLoad() {
43
- this.calculateAdjustedPosition();
44
- }
45
- componentWillUpdate() {
46
- this.calculateAdjustedPosition();
47
- }
48
- focusSlottedContent() {
49
- const slot = this.host.shadowRoot?.querySelector('slot');
50
- const assignedElements = slot?.assignedElements() || [];
51
- if (assignedElements.length > 0) {
52
- const firstElement = assignedElements[0];
53
- firstElement.focus();
54
- }
55
- }
56
- calculateAdjustedPosition() {
57
- if (this.isVisible && this.anchorElement) {
58
- const anchorRect = this.anchorElement.getBoundingClientRect();
59
- const tooltipContent = this.host.shadowRoot?.querySelector('.tooltip-content');
60
- const tooltipRect = tooltipContent?.getBoundingClientRect();
61
- const tooltipWidth = tooltipRect?.width || 0;
62
- const viewportPadding = 12; // Minimum distance from viewport edges
63
- const anchorCenterX = anchorRect.left + anchorRect.width / 2;
64
- // Step 1: Try to center the tooltip above the anchor
65
- let idealLeft = anchorCenterX - tooltipWidth / 2;
66
- // Step 2: Clamp to viewport bounds
67
- const minLeft = viewportPadding;
68
- const maxLeft = window.innerWidth - tooltipWidth - viewportPadding;
69
- // Apply clamping - adjust if tooltip would overflow
70
- this.positionX = Math.max(minLeft, Math.min(idealLeft, maxLeft));
71
- // Step 3: Calculate bottom position (distance from viewport bottom to top of anchor + offset)
72
- this.positionY = window.innerHeight - anchorRect.top + this.offsetY;
73
- }
74
- }
75
- render() {
76
- return (h(Host, { key: 'b6e220084f7ce3eead25bf60cef965322f59f3e0', style: {
77
- position: 'fixed',
78
- zIndex: '9999',
79
- transition: 'opacity 0.3s ease-in-out, transform 0.3s ease-in-out',
80
- visibility: this.isVisible ? 'visible' : 'hidden',
81
- left: `${this.positionX}px`,
82
- bottom: `${this.positionY}px`,
83
- } }, h("div", { key: '0ab91fedc3301b0c42fa773607ce6aa335b73c2e', class: "tooltip-content", onClick: event => event.stopPropagation() }, h("slot", { key: 'bde0c798a393d006737c1d2c54660b6bbdace9e5' }))));
84
- }
85
- static get style() { return kritzelTooltipCss; }
86
- }, [769, "kritzel-tooltip", {
87
- "isVisible": [4, "is-visible"],
88
- "anchorElement": [16],
89
- "offsetY": [2, "offset-y"],
90
- "positionX": [32],
91
- "positionY": [32],
92
- "focusContent": [64]
93
- }, [[4, "click", "handleOutsideClick"], [9, "resize", "handleWindowResize"]]]);
94
- function defineCustomElement() {
95
- if (typeof customElements === "undefined") {
96
- return;
97
- }
98
- const components = ["kritzel-tooltip"];
99
- components.forEach(tagName => { switch (tagName) {
100
- case "kritzel-tooltip":
101
- if (!customElements.get(tagName)) {
102
- customElements.define(tagName, KritzelTooltip);
103
- }
104
- break;
105
- } });
106
- }
107
-
108
- export { KritzelTooltip as K, defineCustomElement as d };
109
- //# sourceMappingURL=p-DO4auCYf.js.map
110
-
111
- //# sourceMappingURL=p-DO4auCYf.js.map
@@ -1 +0,0 @@
1
- {"file":"p-DO4auCYf.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/shared/kritzel-tooltip/kritzel-tooltip.css?tag=kritzel-tooltip&encapsulation=shadow","src/components/shared/kritzel-tooltip/kritzel-tooltip.tsx"],"sourcesContent":[":host {\r\n width: auto;\r\n}\r\n\r\n.tooltip-content {\r\n position: relative;\r\n padding: 8px 12px;\r\n border-radius: 4px;\r\n width: fit-content;\r\n background-color: var(--kritzel-controls-tooltip-background-color, #ffffff);\r\n color: var(--kritzel-controls-tooltip-color, #000000);\r\n padding: var(--kritzel-controls-tooltip-padding, 8px);\r\n border-radius: var(--kritzel-controls-tooltip-border-radius, 16px);\r\n white-space: nowrap;\r\n box-shadow: var(--kritzel-controls-tooltip-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));\r\n}\r\n\r\n","import { Component, Host, Prop, h, Element, State, Listen, Method, Event, EventEmitter } from '@stencil/core';\r\nimport { KritzelHTMLHelper } from '../../../helpers/html.helper';\r\n\r\n@Component({\r\n tag: 'kritzel-tooltip',\r\n styleUrl: 'kritzel-tooltip.css',\r\n shadow: true,\r\n})\r\nexport class KritzelTooltip {\r\n @Element() host: HTMLElement;\r\n\r\n @Prop() isVisible: boolean = false;\r\n @Prop() anchorElement: HTMLElement;\r\n @Prop() offsetY: number = 24;\r\n\r\n @Event() tooltipClosed: EventEmitter<void>;\r\n\r\n @State() positionX: number = 0;\r\n @State() positionY: number = 0;\r\n\r\n @Listen('click', { target: 'document' })\r\n handleOutsideClick(event: MouseEvent) {\r\n if( !this.isVisible ) return;\r\n const target = event.target as HTMLElement;\r\n if (!this.host.contains(target)) {\r\n this.tooltipClosed.emit();\r\n }\r\n }\r\n\r\n @Listen('resize', { target: 'window' })\r\n handleWindowResize() {\r\n this.calculateAdjustedPosition();\r\n }\r\n\r\n @Method()\r\n async focusContent() {\r\n const focusableElements = KritzelHTMLHelper.getFocusableElements(this.host);\r\n if (focusableElements.length > 0) {\r\n focusableElements[0].focus();\r\n }\r\n }\r\n\r\n componentDidLoad() {\r\n this.focusSlottedContent();\r\n }\r\n\r\n componentWillLoad() {\r\n this.calculateAdjustedPosition();\r\n }\r\n\r\n componentWillUpdate() {\r\n this.calculateAdjustedPosition();\r\n }\r\n\r\n private focusSlottedContent() {\r\n const slot = this.host.shadowRoot?.querySelector('slot');\r\n const assignedElements = slot?.assignedElements() || [];\r\n if (assignedElements.length > 0) {\r\n const firstElement = assignedElements[0] as HTMLElement;\r\n firstElement.focus();\r\n }\r\n }\r\n\r\n private calculateAdjustedPosition() {\r\n if (this.isVisible && this.anchorElement) {\r\n const anchorRect = this.anchorElement.getBoundingClientRect();\r\n const tooltipContent = this.host.shadowRoot?.querySelector('.tooltip-content') as HTMLElement;\r\n const tooltipRect = tooltipContent?.getBoundingClientRect();\r\n const tooltipWidth = tooltipRect?.width || 0;\r\n \r\n const viewportPadding = 12; // Minimum distance from viewport edges\r\n const anchorCenterX = anchorRect.left + anchorRect.width / 2;\r\n \r\n // Step 1: Try to center the tooltip above the anchor\r\n let idealLeft = anchorCenterX - tooltipWidth / 2;\r\n \r\n // Step 2: Clamp to viewport bounds\r\n const minLeft = viewportPadding;\r\n const maxLeft = window.innerWidth - tooltipWidth - viewportPadding;\r\n \r\n // Apply clamping - adjust if tooltip would overflow\r\n this.positionX = Math.max(minLeft, Math.min(idealLeft, maxLeft));\r\n \r\n // Step 3: Calculate bottom position (distance from viewport bottom to top of anchor + offset)\r\n this.positionY = window.innerHeight - anchorRect.top + this.offsetY;\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <Host\r\n style={{\r\n position: 'fixed',\r\n zIndex: '9999',\r\n transition: 'opacity 0.3s ease-in-out, transform 0.3s ease-in-out',\r\n visibility: this.isVisible ? 'visible' : 'hidden',\r\n left: `${this.positionX}px`,\r\n bottom: `${this.positionY}px`,\r\n }}\r\n >\r\n <div class=\"tooltip-content\" onClick={event => event.stopPropagation()}>\r\n <slot></slot>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -1,83 +0,0 @@
1
- import { p as proxyCustomElement, H, h, d as Host } from './p-CwkUrTy1.js';
2
-
3
- const kritzelColorCss = ":host{display:flex}.checkerboard-bg{background:repeating-conic-gradient(#ccc 0% 25%, #fff 0% 50%) 50% / 8px 8px;position:relative;overflow:hidden}.color-circle{width:24px;height:24px;border-radius:50%;box-sizing:border-box;display:block}.color-circle.white{border:1px solid var(--kritzel-color-palette-circle-border-color, #dddcdc)}";
4
-
5
- const KritzelColor = /*@__PURE__*/ proxyCustomElement(class KritzelColor extends H {
6
- constructor(registerHost) {
7
- super();
8
- if (registerHost !== false) {
9
- this.__registerHost();
10
- }
11
- this.__attachShadow();
12
- }
13
- value;
14
- size = 24;
15
- isLightColor(hexColor) {
16
- if (!hexColor)
17
- return false;
18
- let r = 0, g = 0, b = 0;
19
- let sanitizedHex = hexColor.startsWith('#') ? hexColor.slice(1) : hexColor;
20
- if (sanitizedHex.length === 3) {
21
- r = parseInt(sanitizedHex[0] + sanitizedHex[0], 16);
22
- g = parseInt(sanitizedHex[1] + sanitizedHex[1], 16);
23
- b = parseInt(sanitizedHex[2] + sanitizedHex[2], 16);
24
- }
25
- else if (sanitizedHex.length === 6) {
26
- r = parseInt(sanitizedHex.substring(0, 2), 16);
27
- g = parseInt(sanitizedHex.substring(2, 4), 16);
28
- b = parseInt(sanitizedHex.substring(4, 6), 16);
29
- }
30
- else {
31
- return false;
32
- }
33
- if (isNaN(r) || isNaN(g) || isNaN(b)) {
34
- return false;
35
- }
36
- const luminance = 0.299 * r + 0.587 * g + 0.114 * b;
37
- return luminance > 220;
38
- }
39
- render() {
40
- const isColorVeryLight = this.isLightColor(this.value);
41
- return (h(Host, { key: 'bd867d9ff750588e41fb364b2192a6c2c5832e59' }, h("div", { key: '858e97d057d7ba19869cbacc4e9f31ae6c64defa', class: "checkerboard-bg", style: {
42
- width: `${this.size}px`,
43
- height: `${this.size}px`,
44
- borderRadius: '50%',
45
- display: 'inline-block',
46
- position: 'relative',
47
- } }, h("div", { key: '0c983b133716e048f29d7e51979068fbde178abd', class: {
48
- 'color-circle': true,
49
- 'white': isColorVeryLight,
50
- }, style: {
51
- backgroundColor: this.value,
52
- width: `${this.size}px`,
53
- height: `${this.size}px`,
54
- borderRadius: '50%',
55
- position: 'absolute',
56
- top: '0',
57
- left: '0',
58
- display: 'inline-block',
59
- } }))));
60
- }
61
- static get style() { return kritzelColorCss; }
62
- }, [769, "kritzel-color", {
63
- "value": [1],
64
- "size": [2]
65
- }]);
66
- function defineCustomElement() {
67
- if (typeof customElements === "undefined") {
68
- return;
69
- }
70
- const components = ["kritzel-color"];
71
- components.forEach(tagName => { switch (tagName) {
72
- case "kritzel-color":
73
- if (!customElements.get(tagName)) {
74
- customElements.define(tagName, KritzelColor);
75
- }
76
- break;
77
- } });
78
- }
79
-
80
- export { KritzelColor as K, defineCustomElement as d };
81
- //# sourceMappingURL=p-LAsVgL2e.js.map
82
-
83
- //# sourceMappingURL=p-LAsVgL2e.js.map
@@ -1 +0,0 @@
1
- {"file":"p-LAsVgL2e.js","mappings":";;AAAA,MAAM,eAAe,GAAG,8UAA8U;;MCOzV,YAAY,iBAAAA,kBAAA,CAAA,MAAA,YAAA,SAAAC,CAAA,CAAA;;;;;;;;AACf,IAAA,KAAK;IACL,IAAI,GAAW,EAAE;AAEjB,IAAA,YAAY,CAAC,QAAgB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,KAAK;QAE3B,IAAI,CAAC,GAAG,CAAC,EACP,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC;QAEP,IAAI,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ;AAE1E,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,YAAA,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnD,YAAA,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnD,YAAA,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;;AAC9C,aAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,YAAA,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9C,YAAA,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9C,YAAA,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;;aACzC;AACL,YAAA,OAAO,KAAK;;AAGd,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AACpC,YAAA,OAAO,KAAK;;AAGd,QAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;QAEnD,OAAO,SAAS,GAAG,GAAG;;IAGxB,MAAM,GAAA;QACJ,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QACtD,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,iBAAiB,EACvB,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAI,EAAA,CAAA;AACvB,gBAAA,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAI,EAAA,CAAA;AACxB,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,QAAQ,EAAE,UAAU;aACrB,EAAA,EAED,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE;AACL,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,OAAO,EAAE,gBAAgB;AAC1B,aAAA,EACD,KAAK,EAAE;gBACL,eAAe,EAAE,IAAI,CAAC,KAAK;AAC3B,gBAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAI,EAAA,CAAA;AACvB,gBAAA,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAI,EAAA,CAAA;AACxB,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,IAAI,EAAE,GAAG;AACT,gBAAA,OAAO,EAAE,cAAc;AACxB,aAAA,EACI,CAAA,CACH,CACD;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/shared/kritzel-color/kritzel-color.css?tag=kritzel-color&encapsulation=shadow","src/components/shared/kritzel-color/kritzel-color.tsx"],"sourcesContent":[":host {\r\n display: flex;\r\n}\r\n\r\n.checkerboard-bg {\r\n background: repeating-conic-gradient(#ccc 0% 25%, #fff 0% 50%) 50% / 8px 8px;\r\n position: relative;\r\n overflow: hidden;\r\n}\r\n\r\n.color-circle {\r\n width: 24px;\r\n height: 24px;\r\n border-radius: 50%;\r\n box-sizing: border-box;\r\n display: block;\r\n}\r\n\r\n.color-circle.white {\r\n border: 1px solid var(--kritzel-color-palette-circle-border-color, #dddcdc);\r\n}","import { Component, Host, Prop, h } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'kritzel-color',\r\n styleUrl: 'kritzel-color.css',\r\n shadow: true,\r\n})\r\nexport class KritzelColor {\r\n @Prop() value: string;\r\n @Prop() size: number = 24;\r\n\r\n private isLightColor(hexColor: string): boolean {\r\n if (!hexColor) return false;\r\n\r\n let r = 0,\r\n g = 0,\r\n b = 0;\r\n\r\n let sanitizedHex = hexColor.startsWith('#') ? hexColor.slice(1) : hexColor;\r\n\r\n if (sanitizedHex.length === 3) {\r\n r = parseInt(sanitizedHex[0] + sanitizedHex[0], 16);\r\n g = parseInt(sanitizedHex[1] + sanitizedHex[1], 16);\r\n b = parseInt(sanitizedHex[2] + sanitizedHex[2], 16);\r\n } else if (sanitizedHex.length === 6) {\r\n r = parseInt(sanitizedHex.substring(0, 2), 16);\r\n g = parseInt(sanitizedHex.substring(2, 4), 16);\r\n b = parseInt(sanitizedHex.substring(4, 6), 16);\r\n } else {\r\n return false;\r\n }\r\n\r\n if (isNaN(r) || isNaN(g) || isNaN(b)) {\r\n return false;\r\n }\r\n\r\n const luminance = 0.299 * r + 0.587 * g + 0.114 * b;\r\n\r\n return luminance > 220;\r\n }\r\n\r\n render() {\r\n const isColorVeryLight = this.isLightColor(this.value);\r\n return (\r\n <Host>\r\n <div\r\n class=\"checkerboard-bg\"\r\n style={{\r\n width: `${this.size}px`,\r\n height: `${this.size}px`,\r\n borderRadius: '50%',\r\n display: 'inline-block',\r\n position: 'relative',\r\n }}\r\n >\r\n <div\r\n class={{\r\n 'color-circle': true,\r\n 'white': isColorVeryLight,\r\n }}\r\n style={{\r\n backgroundColor: this.value,\r\n width: `${this.size}px`,\r\n height: `${this.size}px`,\r\n borderRadius: '50%',\r\n position: 'absolute',\r\n top: '0',\r\n left: '0',\r\n display: 'inline-block',\r\n }}\r\n ></div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -1,231 +0,0 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-CwkUrTy1.js';
2
- import { O as ObjectHelper } from './p-B0kd2rUI.js';
3
- import { K as KritzelHTMLHelper } from './p-C6qB08BS.js';
4
-
5
- const KritzelPortal = /*@__PURE__*/ proxyCustomElement(class KritzelPortal extends H {
6
- constructor(registerHost) {
7
- super();
8
- if (registerHost !== false) {
9
- this.__registerHost();
10
- }
11
- this.__attachShadow();
12
- this.close = createEvent(this, "close");
13
- }
14
- get host() { return this; }
15
- anchor;
16
- anchorChanged(newValue) {
17
- if (newValue) {
18
- this.openPortal();
19
- this.calculatePosition();
20
- if (this.autoFocus) {
21
- this.focusFirstElement();
22
- }
23
- }
24
- else {
25
- this.closePortal();
26
- }
27
- }
28
- offsetX;
29
- offsetY;
30
- autoFocus = true;
31
- close;
32
- handleOutsideClick(event) {
33
- event.stopPropagation();
34
- const isLastPortal = this.lastAddedPortal === this.portal;
35
- if (!isLastPortal)
36
- return;
37
- const target = event.target;
38
- if (!this.host.contains(target)) {
39
- this.close.emit();
40
- this.closePortal();
41
- }
42
- }
43
- handleKeyDown(event) {
44
- event.stopPropagation();
45
- const isLastPortal = this.lastAddedPortal === this.portal;
46
- if (!isLastPortal)
47
- return;
48
- if (event.key === 'Escape') {
49
- this.anchor.focus();
50
- this.close.emit();
51
- this.closePortal();
52
- }
53
- if (event.key === 'Tab') {
54
- this.trapFocus(event);
55
- }
56
- if (event.key === 'Enter') {
57
- const activeElement = this.getDeepActiveElement();
58
- if (activeElement?.click) {
59
- event.preventDefault();
60
- activeElement.click();
61
- }
62
- }
63
- }
64
- handleResize() {
65
- this.calculatePosition();
66
- }
67
- handleWindowScroll() {
68
- const isInViewport = KritzelHTMLHelper.isElementInViewport(this.anchor);
69
- if (!isInViewport) {
70
- this.anchor?.blur();
71
- this.closePortal();
72
- return;
73
- }
74
- this.calculatePosition();
75
- }
76
- portal;
77
- id = `portal-${ObjectHelper.generateUUID()}`;
78
- defaultOffset = 0;
79
- minLeft = 0;
80
- focusFirstElement() {
81
- requestAnimationFrame(() => {
82
- this.firstFocusableElement?.focus?.();
83
- });
84
- }
85
- getDeepActiveElement() {
86
- let activeEl = document.activeElement;
87
- while (activeEl?.shadowRoot?.activeElement) {
88
- activeEl = activeEl.shadowRoot.activeElement;
89
- }
90
- return activeEl;
91
- }
92
- trapFocus(event) {
93
- const focusableElements = KritzelHTMLHelper.getFocusableElements(this.host);
94
- if (focusableElements.length === 0)
95
- return;
96
- const firstFocusable = focusableElements[0];
97
- const lastFocusable = focusableElements[focusableElements.length - 1];
98
- const activeElement = this.getDeepActiveElement();
99
- if (event.shiftKey) {
100
- /* shift + tab */
101
- if (activeElement === firstFocusable) {
102
- lastFocusable.focus();
103
- event.preventDefault();
104
- }
105
- }
106
- else {
107
- /* tab */
108
- if (activeElement === lastFocusable) {
109
- firstFocusable.focus();
110
- event.preventDefault();
111
- }
112
- }
113
- }
114
- get firstFocusableElement() {
115
- const slotEl = this.host.shadowRoot?.querySelector('slot');
116
- const firstAssigned = slotEl?.assignedElements({ flatten: true })[0];
117
- if (!firstAssigned)
118
- return null;
119
- const focusable = KritzelHTMLHelper.getFocusableElements(firstAssigned);
120
- return focusable[0] ?? firstAssigned;
121
- }
122
- get lastAddedPortal() {
123
- const portals = Array.from(document.querySelectorAll('[id^="portal-"]'));
124
- return portals.length ? portals[portals.length - 1] : null;
125
- }
126
- calculateLeft() {
127
- if (!this.anchor || !this.portal)
128
- return 0;
129
- const refRect = this.anchor.getBoundingClientRect();
130
- const portalRect = this.portal.getBoundingClientRect();
131
- const offset = this.offsetX ?? this.defaultOffset;
132
- let left = refRect.left + offset;
133
- const maxLeft = window.innerWidth - portalRect.width - this.minLeft;
134
- if (left < this.minLeft)
135
- left = this.minLeft;
136
- if (left > maxLeft)
137
- left = maxLeft;
138
- return Math.round(left + window.scrollX);
139
- }
140
- calculateTop() {
141
- if (!this.anchor || !this.portal)
142
- return 0;
143
- const refRect = this.anchor.getBoundingClientRect();
144
- const portalRect = this.portal.getBoundingClientRect();
145
- const offset = this.offsetY ?? this.defaultOffset;
146
- const padding = 8; // Minimum padding from viewport edges
147
- let top = refRect.bottom + offset;
148
- const spaceBelow = window.innerHeight - refRect.bottom - offset - padding;
149
- const spaceAbove = refRect.top - offset - padding;
150
- // Reset max-height CSS custom property
151
- this.host.style.removeProperty('--kritzel-portal-max-height');
152
- if (portalRect.height <= spaceBelow) {
153
- // Fits below the anchor
154
- top = refRect.bottom + offset;
155
- }
156
- else if (portalRect.height <= spaceAbove) {
157
- // Fits above the anchor
158
- top = refRect.top - portalRect.height - offset;
159
- }
160
- else {
161
- // Doesn't fit above or below - constrain the height
162
- if (spaceBelow >= spaceAbove) {
163
- // More space below, keep it below with constrained height
164
- top = refRect.bottom + offset;
165
- this.host.style.setProperty('--kritzel-portal-max-height', `${spaceBelow}px`);
166
- }
167
- else {
168
- // More space above, position above with constrained height
169
- top = padding;
170
- this.host.style.setProperty('--kritzel-portal-max-height', `${spaceAbove}px`);
171
- }
172
- }
173
- return Math.round(top + window.scrollY);
174
- }
175
- openPortal() {
176
- this.portal = document.createElement('div');
177
- this.portal.setAttribute('id', this.id);
178
- this.portal.style.zIndex = '1';
179
- this.portal.style.position = 'absolute';
180
- this.portal.style.top = '0px';
181
- this.portal.style.left = '0px';
182
- this.portal.appendChild(this.host);
183
- document.body.append(this.portal);
184
- }
185
- closePortal() {
186
- const portal = document.getElementById(this.id);
187
- if (!portal)
188
- return;
189
- document.body.removeChild(portal);
190
- this.host.remove();
191
- }
192
- calculatePosition() {
193
- if (!this.anchor || !this.portal)
194
- return;
195
- const top = this.calculateTop();
196
- const left = this.calculateLeft();
197
- this.portal.style.top = `${top}px`;
198
- this.portal.style.left = `${left}px`;
199
- }
200
- render() {
201
- return (h(Host, { key: 'aa7399f8a2e744eaa89e881bc9e710bd8a0c6c53', style: { display: this.anchor ? 'block' : 'none' } }, h("slot", { key: 'df4d8446cf770dfd98476d19c6b18511e2531574' })));
202
- }
203
- static get watchers() { return {
204
- "anchor": ["anchorChanged"]
205
- }; }
206
- }, [769, "kritzel-portal", {
207
- "anchor": [16],
208
- "offsetX": [2, "offset-x"],
209
- "offsetY": [2, "offset-y"],
210
- "autoFocus": [4, "auto-focus"]
211
- }, [[8, "click", "handleOutsideClick"], [8, "keydown", "handleKeyDown"], [11, "resize", "handleResize"], [11, "scroll", "handleWindowScroll"]], {
212
- "anchor": ["anchorChanged"]
213
- }]);
214
- function defineCustomElement() {
215
- if (typeof customElements === "undefined") {
216
- return;
217
- }
218
- const components = ["kritzel-portal"];
219
- components.forEach(tagName => { switch (tagName) {
220
- case "kritzel-portal":
221
- if (!customElements.get(tagName)) {
222
- customElements.define(tagName, KritzelPortal);
223
- }
224
- break;
225
- } });
226
- }
227
-
228
- export { KritzelPortal as K, defineCustomElement as d };
229
- //# sourceMappingURL=p-aeYt0bPO.js.map
230
-
231
- //# sourceMappingURL=p-aeYt0bPO.js.map
@@ -1 +0,0 @@
1
- {"file":"p-aeYt0bPO.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/shared/kritzel-portal/kritzel-portal.tsx"],"sourcesContent":["import { Component, Host, Listen, Prop, Watch, h, Event, EventEmitter, Element } from '@stencil/core';\r\nimport { ObjectHelper } from '../../../helpers/object.helper';\r\nimport { KritzelHTMLHelper } from '../../../helpers/html.helper';\r\n\r\n@Component({\r\n tag: 'kritzel-portal',\r\n shadow: true,\r\n})\r\nexport class KritzelPortal {\r\n @Element() host: HTMLElement;\r\n\r\n @Prop() anchor: HTMLElement;\r\n @Watch('anchor')\r\n anchorChanged(newValue: HTMLElement) {\r\n if (newValue) {\r\n this.openPortal();\r\n this.calculatePosition();\r\n if (this.autoFocus) {\r\n this.focusFirstElement();\r\n }\r\n } else {\r\n this.closePortal();\r\n }\r\n }\r\n\r\n @Prop() offsetX: number;\r\n @Prop() offsetY: number;\r\n @Prop() autoFocus: boolean = true;\r\n\r\n @Event() close: EventEmitter<void>;\r\n\r\n @Listen('click', { target: 'window' })\r\n handleOutsideClick(event: MouseEvent) {\r\n event.stopPropagation();\r\n\r\n const isLastPortal = this.lastAddedPortal === this.portal;\r\n if (!isLastPortal) return;\r\n\r\n const target = event.target as HTMLElement;\r\n if (!this.host.contains(target)) {\r\n this.close.emit();\r\n this.closePortal();\r\n }\r\n }\r\n\r\n @Listen('keydown', { target: 'window' })\r\n handleKeyDown(event: KeyboardEvent) {\r\n event.stopPropagation();\r\n\r\n const isLastPortal = this.lastAddedPortal === this.portal;\r\n if (!isLastPortal) return;\r\n\r\n if (event.key === 'Escape') {\r\n this.anchor.focus();\r\n this.close.emit();\r\n this.closePortal();\r\n }\r\n\r\n if (event.key === 'Tab') {\r\n this.trapFocus(event);\r\n }\r\n\r\n if (event.key === 'Enter') {\r\n const activeElement = this.getDeepActiveElement() as HTMLElement;\r\n if (activeElement?.click) {\r\n event.preventDefault();\r\n activeElement.click();\r\n }\r\n }\r\n }\r\n\r\n @Listen('resize', { target: 'window', capture: true })\r\n handleResize() {\r\n this.calculatePosition();\r\n }\r\n\r\n @Listen('scroll', { target: 'window', capture: true })\r\n handleWindowScroll() {\r\n const isInViewport = KritzelHTMLHelper.isElementInViewport(this.anchor);\r\n\r\n if (!isInViewport) {\r\n this.anchor?.blur();\r\n this.closePortal();\r\n return;\r\n }\r\n\r\n this.calculatePosition();\r\n }\r\n\r\n private portal: HTMLElement;\r\n private id: string = `portal-${ObjectHelper.generateUUID()}`;\r\n private defaultOffset = 0;\r\n private minLeft = 0;\r\n\r\n private focusFirstElement() {\r\n requestAnimationFrame(() => {\r\n this.firstFocusableElement?.focus?.();\r\n });\r\n }\r\n\r\n private getDeepActiveElement(): Element {\r\n let activeEl = document.activeElement;\r\n while (activeEl?.shadowRoot?.activeElement) {\r\n activeEl = activeEl.shadowRoot.activeElement;\r\n }\r\n return activeEl;\r\n }\r\n\r\n private trapFocus(event: KeyboardEvent) {\r\n const focusableElements = KritzelHTMLHelper.getFocusableElements(this.host);\r\n if (focusableElements.length === 0) return;\r\n\r\n const firstFocusable = focusableElements[0];\r\n const lastFocusable = focusableElements[focusableElements.length - 1];\r\n const activeElement = this.getDeepActiveElement();\r\n\r\n if (event.shiftKey) {\r\n /* shift + tab */\r\n if (activeElement === firstFocusable) {\r\n lastFocusable.focus();\r\n event.preventDefault();\r\n }\r\n } else {\r\n /* tab */\r\n if (activeElement === lastFocusable) {\r\n firstFocusable.focus();\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n private get firstFocusableElement(): HTMLElement | null {\r\n const slotEl = this.host.shadowRoot?.querySelector('slot') as HTMLSlotElement | null;\r\n const firstAssigned = slotEl?.assignedElements({ flatten: true })[0] as HTMLElement | undefined;\r\n if (!firstAssigned) return null;\r\n\r\n const focusable = KritzelHTMLHelper.getFocusableElements(firstAssigned);\r\n return focusable[0] ?? firstAssigned;\r\n }\r\n\r\n private get lastAddedPortal(): HTMLElement | null {\r\n const portals = Array.from(document.querySelectorAll<HTMLElement>('[id^=\"portal-\"]'));\r\n return portals.length ? portals[portals.length - 1] : null;\r\n }\r\n\r\n private calculateLeft() {\r\n if (!this.anchor || !this.portal) return 0;\r\n const refRect = this.anchor.getBoundingClientRect();\r\n const portalRect = this.portal.getBoundingClientRect();\r\n\r\n const offset = this.offsetX ?? this.defaultOffset;\r\n let left = refRect.left + offset;\r\n\r\n const maxLeft = window.innerWidth - portalRect.width - this.minLeft;\r\n if (left < this.minLeft) left = this.minLeft;\r\n if (left > maxLeft) left = maxLeft;\r\n\r\n return Math.round(left + window.scrollX);\r\n }\r\n\r\n private calculateTop() {\r\n if (!this.anchor || !this.portal) return 0;\r\n const refRect = this.anchor.getBoundingClientRect();\r\n const portalRect = this.portal.getBoundingClientRect();\r\n const offset = this.offsetY ?? this.defaultOffset;\r\n const padding = 8; // Minimum padding from viewport edges\r\n\r\n let top = refRect.bottom + offset;\r\n const spaceBelow = window.innerHeight - refRect.bottom - offset - padding;\r\n const spaceAbove = refRect.top - offset - padding;\r\n\r\n // Reset max-height CSS custom property \r\n this.host.style.removeProperty('--kritzel-portal-max-height');\r\n\r\n if (portalRect.height <= spaceBelow) {\r\n // Fits below the anchor\r\n top = refRect.bottom + offset;\r\n } else if (portalRect.height <= spaceAbove) {\r\n // Fits above the anchor\r\n top = refRect.top - portalRect.height - offset;\r\n } else {\r\n // Doesn't fit above or below - constrain the height\r\n if (spaceBelow >= spaceAbove) {\r\n // More space below, keep it below with constrained height\r\n top = refRect.bottom + offset;\r\n this.host.style.setProperty('--kritzel-portal-max-height', `${spaceBelow}px`);\r\n } else {\r\n // More space above, position above with constrained height\r\n top = padding;\r\n this.host.style.setProperty('--kritzel-portal-max-height', `${spaceAbove}px`);\r\n }\r\n }\r\n\r\n return Math.round(top + window.scrollY);\r\n }\r\n\r\n private openPortal() {\r\n this.portal = document.createElement('div');\r\n this.portal.setAttribute('id', this.id);\r\n this.portal.style.zIndex = '1';\r\n this.portal.style.position = 'absolute';\r\n this.portal.style.top = '0px';\r\n this.portal.style.left = '0px';\r\n this.portal.appendChild(this.host);\r\n document.body.append(this.portal);\r\n }\r\n\r\n private closePortal() {\r\n const portal = document.getElementById(this.id);\r\n if (!portal) return;\r\n document.body.removeChild(portal);\r\n this.host.remove();\r\n }\r\n\r\n private calculatePosition() {\r\n if (!this.anchor || !this.portal) return;\r\n const top = this.calculateTop();\r\n const left = this.calculateLeft();\r\n this.portal.style.top = `${top}px`;\r\n this.portal.style.left = `${left}px`;\r\n }\r\n\r\n render() {\r\n return (\r\n <Host style={{ display: this.anchor ? 'block' : 'none' }}>\r\n <slot />\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"p-l10It7Nm.js","mappings":"MAAa,oBAAoB,CAAA;AAC/B,IAAA,OAAO,aAAa,GAAA;QAClB,OAAO,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,OAAO;;AAG3D,IAAA,OAAO,SAAS,GAAA;QACd,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;AAG7C,IAAA,OAAO,KAAK,GAAA;QACV,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;AAGrD,IAAA,OAAO,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,OAAO,KAAK;;AACP,aAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAC3B,YAAA,OAAO,SAAS;;aACX;AACL,YAAA,OAAO,OAAO;;;AAIlB,IAAA,OAAO,SAAS,GAAA;QACd,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;AAE9C;;;;","names":[],"sources":["src/helpers/devices.helper.ts"],"sourcesContent":["export class KritzelDevicesHelper {\r\n static isTouchDevice(): boolean {\r\n return window.matchMedia('(any-pointer: coarse)').matches;\r\n }\r\n\r\n static isAndroid(): boolean {\r\n return /android/i.test(navigator.userAgent);\r\n }\r\n\r\n static isIOS(): boolean {\r\n return /iPad|iPhone|iPod/.test(navigator.userAgent);\r\n }\r\n\r\n static detectOS(): 'iOS' | 'Android' | 'Other' {\r\n if (this.isIOS()) {\r\n return 'iOS';\r\n } else if (this.isAndroid()) {\r\n return 'Android';\r\n } else {\r\n return 'Other';\r\n }\r\n }\r\n\r\n static isFirefox(): boolean {\r\n return /firefox/i.test(navigator.userAgent);\r\n }\r\n}\r\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"p-n789Y3S-.js","mappings":"MAGa,gBAAgB,CAAA;IAC3B,SAAS,GAAG,kBAAkB;AAE9B,IAAA,EAAE;AACF,IAAA,IAAI;AACJ,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,QAAQ;AAMR,IAAA,KAAK;AAEL,IAAA,WAAA,CAAY,EAAU,EAAE,IAAY,EAAG,QAAA,GAAsE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAA;AACrJ,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE;AACZ,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAG1B,IAAA,OAAO,MAAM,CAAC,IAAiB,EAAE,GAAG,EAAA;AAClC,QAAA,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC;AACtE,QAAA,SAAS,CAAC,KAAK,GAAG,IAAI;AACtB,QAAA,OAAO,SAAS;;AAGlB,IAAA,SAAS,CAAC,GAAQ,EAAA;QAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;;IAGlC,SAAS,GAAA;QACP,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AACvC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;;AAGH,IAAA,WAAW,CAAC,MAAW,EAAA;AACrB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAC3C,QAAA,OAAO,IAAI;;AAEd;;;;","names":[],"sources":["src/classes/core/workspace.class.ts"],"sourcesContent":["import { KritzelCore } from \"../..\";\r\nimport { KritzelSerializable } from \"../../interfaces/serializable.interface\";\r\n\r\nexport class KritzelWorkspace implements KritzelSerializable{\r\n __class__ = 'KritzelWorkspace';\r\n\r\n id: string;\r\n name: string;\r\n createdAt: Date;\r\n updatedAt: Date;\r\n viewport: {\r\n translateX: number;\r\n translateY: number;\r\n scale: number;\r\n };\r\n\r\n _core: KritzelCore;\r\n\r\n constructor(id: string, name: string, viewport: { translateX: number; translateY: number; scale: number } = { translateX: 0, translateY: 0, scale: 1 }) {\r\n this.id = id;\r\n this.name = name;\r\n this.createdAt = new Date();\r\n this.updatedAt = new Date();\r\n this.viewport = viewport;\r\n }\r\n\r\n static create(core: KritzelCore, obj): KritzelWorkspace {\r\n const workspace = new KritzelWorkspace(obj.id, obj.name, obj.viewport);\r\n workspace._core = core;\r\n return workspace;\r\n }\r\n\r\n addObject(obj: any): void {\r\n this._core.engine.addObject(obj);\r\n }\r\n\r\n serialize(): any {\r\n return {\r\n __class__: this.__class__,\r\n id: this.id,\r\n name: this.name,\r\n createdAt: this.createdAt.toISOString(),\r\n updatedAt: this.updatedAt.toISOString(),\r\n viewport: this.viewport,\r\n };\r\n }\r\n\r\n deserialize(object: any): KritzelSerializable {\r\n Object.assign(this, object);\r\n this.createdAt = new Date(object.createdAt);\r\n this.updatedAt = new Date(object.updatedAt);\r\n return this;\r\n }\r\n}\r\n"],"version":3}