@wirekyt/dom 0.0.1 → 0.0.2

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 (476) hide show
  1. package/dist/anatomy-DMuSMbOP.d.cts +18 -0
  2. package/dist/anatomy-DMuSMbOP.d.ts +18 -0
  3. package/dist/anatomy.cjs +3 -0
  4. package/dist/anatomy.d.cts +2 -0
  5. package/dist/anatomy.d.ts +2 -0
  6. package/dist/anatomy.js +2 -0
  7. package/dist/angle-3hqP0Mp5.cjs +13 -0
  8. package/dist/angle-oNt8uGHQ.js +8 -0
  9. package/dist/aria-hidden-CEXexb2I.js +127 -0
  10. package/dist/aria-hidden-Y7iJHPMr.cjs +132 -0
  11. package/dist/aria-hidden.cjs +3 -0
  12. package/dist/aria-hidden.d.cts +10 -0
  13. package/dist/aria-hidden.d.ts +10 -0
  14. package/dist/aria-hidden.js +2 -0
  15. package/dist/array-BGtygd0o.cjs +198 -0
  16. package/dist/array-C4KbHsha.js +73 -0
  17. package/dist/auto-resize-5F5iiKZb.cjs +106 -0
  18. package/dist/auto-resize-KkNfCcBt.js +95 -0
  19. package/dist/auto-resize.cjs +4 -0
  20. package/dist/auto-resize.d.cts +7 -0
  21. package/dist/auto-resize.d.ts +7 -0
  22. package/dist/auto-resize.js +2 -0
  23. package/dist/caret-CHqaP4XG.cjs +30 -0
  24. package/dist/caret-aiDJ6mAS.js +19 -0
  25. package/dist/closest-Clo6ODcK.js +117 -0
  26. package/dist/closest-IiRz1GIJ.cjs +176 -0
  27. package/dist/collection-CJU0oDtX.js +1295 -0
  28. package/dist/collection-CwzUJwBJ.cjs +1342 -0
  29. package/dist/collection.cjs +15 -0
  30. package/dist/collection.d.cts +34 -0
  31. package/dist/collection.d.ts +34 -0
  32. package/dist/collection.js +3 -0
  33. package/dist/color-CsugZjq6.d.cts +60 -0
  34. package/dist/color-CsugZjq6.d.ts +60 -0
  35. package/dist/color-utils-DzeOVYlL.cjs +662 -0
  36. package/dist/color-utils-lDDg9FEh.js +639 -0
  37. package/dist/color-utils.cjs +6 -0
  38. package/dist/color-utils.d.cts +18 -0
  39. package/dist/color-utils.d.ts +18 -0
  40. package/dist/color-utils.js +2 -0
  41. package/dist/computed-style-B1MKlCoo.js +9 -0
  42. package/dist/computed-style-DLArEFNw.cjs +14 -0
  43. package/dist/controller-B8E8ZJCI.cjs +133 -0
  44. package/dist/controller-Dv7lWHDr.js +92 -0
  45. package/dist/core-BF6G2RiC.d.cts +1 -0
  46. package/dist/core-BNMw-JId.cjs +372 -0
  47. package/dist/core-BdeZuSX6.d.ts +1 -0
  48. package/dist/core-CJ0MZr3D.js +289 -0
  49. package/dist/core.cjs +19 -0
  50. package/dist/core.d.cts +3 -0
  51. package/dist/core.d.ts +3 -0
  52. package/dist/core.js +3 -0
  53. package/dist/create-anatomy-B2q3wiaw.js +22 -0
  54. package/dist/create-anatomy-BwDn25ph.cjs +27 -0
  55. package/dist/create-props-CgtcN_Qu.js +4 -0
  56. package/dist/create-props-CjLx2oS8.cjs +9 -0
  57. package/dist/data-url-C-Uk31Q9.cjs +42 -0
  58. package/dist/data-url-DHUHj7UF.js +37 -0
  59. package/dist/data-url-Gx_SWG-k.d.cts +10 -0
  60. package/dist/data-url-Gx_SWG-k.d.ts +10 -0
  61. package/dist/date-utils-D-JJHedx.cjs +868 -0
  62. package/dist/date-utils-D5zXW-Cs.js +569 -0
  63. package/dist/date-utils.cjs +52 -0
  64. package/dist/date-utils.d.cts +7 -0
  65. package/dist/date-utils.d.ts +7 -0
  66. package/dist/date-utils.js +2 -0
  67. package/dist/dismissable-C0bixtzl.cjs +348 -0
  68. package/dist/dismissable-KM1jPtNQ.js +337 -0
  69. package/dist/dismissable-layer-BTX5EvXw.d.ts +40 -0
  70. package/dist/dismissable-layer-Ch5niVaq.d.cts +40 -0
  71. package/dist/dismissable.cjs +4 -0
  72. package/dist/dismissable.d.cts +3 -0
  73. package/dist/dismissable.d.ts +3 -0
  74. package/dist/dismissable.js +2 -0
  75. package/dist/dom-query-CQzY93XU.cjs +488 -0
  76. package/dist/dom-query-e7fh0TEH.js +243 -0
  77. package/dist/dom-query.cjs +180 -0
  78. package/dist/dom-query.d.cts +142 -0
  79. package/dist/dom-query.d.ts +142 -0
  80. package/dist/dom-query.js +43 -0
  81. package/dist/equal-C927y7MN.cjs +30 -0
  82. package/dist/equal-DtrP8DPh.js +25 -0
  83. package/dist/event-DDz-mMhM.cjs +242 -0
  84. package/dist/event-bTItRgiw.js +117 -0
  85. package/dist/file-utils-6EXCdfHx.js +116 -0
  86. package/dist/file-utils-B7OJigQq.cjs +151 -0
  87. package/dist/file-utils.cjs +92 -0
  88. package/dist/file-utils.d.cts +40 -0
  89. package/dist/file-utils.d.ts +40 -0
  90. package/dist/file-utils.js +82 -0
  91. package/dist/focus-trap-89E5I9nm.js +487 -0
  92. package/dist/focus-trap-D7jKsfHW.cjs +498 -0
  93. package/dist/focus-trap.cjs +4 -0
  94. package/dist/focus-trap.d.cts +89 -0
  95. package/dist/focus-trap.d.ts +89 -0
  96. package/dist/focus-trap.js +2 -0
  97. package/dist/focus-visible-DWdQf__4.js +176 -0
  98. package/dist/focus-visible-G4cmlWqq.cjs +217 -0
  99. package/dist/focus-visible.cjs +9 -0
  100. package/dist/focus-visible.d.cts +32 -0
  101. package/dist/focus-visible.d.ts +32 -0
  102. package/dist/focus-visible.js +2 -0
  103. package/dist/form-B1DW_w_3.js +89 -0
  104. package/dist/form-CoupKpuP.cjs +130 -0
  105. package/dist/from-window-5ZhzSURC.js +68 -0
  106. package/dist/from-window-B9DKtaoR.cjs +115 -0
  107. package/dist/functions-isw5Ovcx.d.cts +16 -0
  108. package/dist/functions-isw5Ovcx.d.ts +16 -0
  109. package/dist/highlight-word.cjs +95 -0
  110. package/dist/highlight-word.d.cts +24 -0
  111. package/dist/highlight-word.d.ts +24 -0
  112. package/dist/highlight-word.js +94 -0
  113. package/dist/hotkeys.cjs +1183 -0
  114. package/dist/hotkeys.d.cts +199 -0
  115. package/dist/hotkeys.d.ts +199 -0
  116. package/dist/hotkeys.js +1173 -0
  117. package/dist/i18n-utils-BD4VtonY.cjs +345 -0
  118. package/dist/i18n-utils-C4FQZ39m.js +280 -0
  119. package/dist/i18n-utils.cjs +216 -0
  120. package/dist/i18n-utils.d.cts +71 -0
  121. package/dist/i18n-utils.d.ts +71 -0
  122. package/dist/i18n-utils.js +204 -0
  123. package/dist/index-3tNJficI.d.cts +117 -0
  124. package/dist/index-3tNJficI.d.ts +117 -0
  125. package/dist/index-BEfvdGE2.d.cts +116 -0
  126. package/dist/index-BEfvdGE2.d.ts +116 -0
  127. package/dist/index-BF6G2RiC.d.cts +1 -0
  128. package/dist/index-BKgxIVbE.d.cts +285 -0
  129. package/dist/index-BMtpmaRD.d.cts +16 -0
  130. package/dist/index-BMtpmaRD.d.ts +16 -0
  131. package/dist/index-BWiYePx8.d.cts +216 -0
  132. package/dist/index-BXfunVyD.d.cts +1342 -0
  133. package/dist/index-BXfunVyD.d.ts +1342 -0
  134. package/dist/index-BdeZuSX6.d.ts +1 -0
  135. package/dist/index-C2865AJq.d.cts +25 -0
  136. package/dist/index-C2865AJq.d.ts +25 -0
  137. package/dist/index-CFoN0L3C.d.ts +285 -0
  138. package/dist/index-vPrqYDHu.d.ts +216 -0
  139. package/dist/index.cjs +19 -0
  140. package/dist/index.d.cts +3 -0
  141. package/dist/index.d.ts +3 -0
  142. package/dist/index.js +3 -0
  143. package/dist/initial-focus-BQxRRFPa.cjs +37 -0
  144. package/dist/initial-focus-BrN5tT2X.js +26 -0
  145. package/dist/interact-outside-BjqIunFx.js +211 -0
  146. package/dist/interact-outside-Dphjr2Zh.cjs +216 -0
  147. package/dist/interact-outside.cjs +3 -0
  148. package/dist/interact-outside.d.cts +2 -0
  149. package/dist/interact-outside.d.ts +2 -0
  150. package/dist/interact-outside.js +2 -0
  151. package/dist/json-tree-utils.cjs +1518 -0
  152. package/dist/json-tree-utils.d.cts +117 -0
  153. package/dist/json-tree-utils.d.ts +117 -0
  154. package/dist/json-tree-utils.js +1469 -0
  155. package/dist/list-collection-D_eNKrot.d.cts +60 -0
  156. package/dist/list-collection-RqYEWHb4.d.ts +60 -0
  157. package/dist/live-region-BD0OgmrH.cjs +68 -0
  158. package/dist/live-region-F8YMmbrY.js +63 -0
  159. package/dist/live-region.cjs +3 -0
  160. package/dist/live-region.d.cts +2 -0
  161. package/dist/live-region.d.ts +2 -0
  162. package/dist/live-region.js +2 -0
  163. package/dist/machines/accordion/index.cjs +328 -0
  164. package/dist/machines/accordion/index.d.cts +83 -0
  165. package/dist/machines/accordion/index.d.ts +83 -0
  166. package/dist/machines/accordion/index.js +321 -0
  167. package/dist/machines/angle-slider/index.cjs +420 -0
  168. package/dist/machines/angle-slider/index.d.cts +84 -0
  169. package/dist/machines/angle-slider/index.d.ts +84 -0
  170. package/dist/machines/angle-slider/index.js +415 -0
  171. package/dist/machines/async-list/index.cjs +310 -0
  172. package/dist/machines/async-list/index.d.cts +90 -0
  173. package/dist/machines/async-list/index.d.ts +90 -0
  174. package/dist/machines/async-list/index.js +308 -0
  175. package/dist/machines/avatar/index.cjs +165 -0
  176. package/dist/machines/avatar/index.d.cts +63 -0
  177. package/dist/machines/avatar/index.d.ts +63 -0
  178. package/dist/machines/avatar/index.js +160 -0
  179. package/dist/machines/carousel/index.cjs +929 -0
  180. package/dist/machines/carousel/index.d.cts +146 -0
  181. package/dist/machines/carousel/index.d.ts +146 -0
  182. package/dist/machines/carousel/index.js +920 -0
  183. package/dist/machines/cascade-select/index.cjs +1426 -0
  184. package/dist/machines/cascade-select/index.d.cts +167 -0
  185. package/dist/machines/cascade-select/index.d.ts +167 -0
  186. package/dist/machines/cascade-select/index.js +1419 -0
  187. package/dist/machines/checkbox/index.cjs +316 -0
  188. package/dist/machines/checkbox/index.d.cts +81 -0
  189. package/dist/machines/checkbox/index.d.ts +81 -0
  190. package/dist/machines/checkbox/index.js +311 -0
  191. package/dist/machines/clipboard/index.cjs +228 -0
  192. package/dist/machines/clipboard/index.d.cts +72 -0
  193. package/dist/machines/clipboard/index.d.ts +72 -0
  194. package/dist/machines/clipboard/index.js +221 -0
  195. package/dist/machines/collapsible/index.cjs +363 -0
  196. package/dist/machines/collapsible/index.d.cts +82 -0
  197. package/dist/machines/collapsible/index.d.ts +82 -0
  198. package/dist/machines/collapsible/index.js +358 -0
  199. package/dist/machines/color-picker/index.cjs +1534 -0
  200. package/dist/machines/color-picker/index.d.cts +207 -0
  201. package/dist/machines/color-picker/index.d.ts +207 -0
  202. package/dist/machines/color-picker/index.js +1518 -0
  203. package/dist/machines/combobox/index.cjs +1554 -0
  204. package/dist/machines/combobox/index.d.cts +219 -0
  205. package/dist/machines/combobox/index.d.ts +219 -0
  206. package/dist/machines/combobox/index.js +1542 -0
  207. package/dist/machines/date-input/index.cjs +1974 -0
  208. package/dist/machines/date-input/index.d.cts +230 -0
  209. package/dist/machines/date-input/index.d.ts +230 -0
  210. package/dist/machines/date-input/index.js +1958 -0
  211. package/dist/machines/date-picker/index.cjs +2424 -0
  212. package/dist/machines/date-picker/index.d.cts +378 -0
  213. package/dist/machines/date-picker/index.d.ts +378 -0
  214. package/dist/machines/date-picker/index.js +2408 -0
  215. package/dist/machines/dialog/index.cjs +378 -0
  216. package/dist/machines/dialog/index.d.cts +94 -0
  217. package/dist/machines/dialog/index.d.ts +94 -0
  218. package/dist/machines/dialog/index.js +373 -0
  219. package/dist/machines/drawer/index.cjs +2066 -0
  220. package/dist/machines/drawer/index.d.cts +334 -0
  221. package/dist/machines/drawer/index.d.ts +334 -0
  222. package/dist/machines/drawer/index.js +2059 -0
  223. package/dist/machines/editable/index.cjs +550 -0
  224. package/dist/machines/editable/index.d.cts +114 -0
  225. package/dist/machines/editable/index.d.ts +114 -0
  226. package/dist/machines/editable/index.js +545 -0
  227. package/dist/machines/file-upload/index.cjs +648 -0
  228. package/dist/machines/file-upload/index.d.cts +150 -0
  229. package/dist/machines/file-upload/index.d.ts +150 -0
  230. package/dist/machines/file-upload/index.js +641 -0
  231. package/dist/machines/floating-panel/index.cjs +1020 -0
  232. package/dist/machines/floating-panel/index.d.cts +149 -0
  233. package/dist/machines/floating-panel/index.d.ts +149 -0
  234. package/dist/machines/floating-panel/index.js +1012 -0
  235. package/dist/machines/hover-card/index.cjs +441 -0
  236. package/dist/machines/hover-card/index.d.cts +82 -0
  237. package/dist/machines/hover-card/index.d.ts +82 -0
  238. package/dist/machines/hover-card/index.js +436 -0
  239. package/dist/machines/image-cropper/index.cjs +2082 -0
  240. package/dist/machines/image-cropper/index.d.cts +182 -0
  241. package/dist/machines/image-cropper/index.d.ts +182 -0
  242. package/dist/machines/image-cropper/index.js +2076 -0
  243. package/dist/machines/listbox/index.cjs +873 -0
  244. package/dist/machines/listbox/index.d.cts +175 -0
  245. package/dist/machines/listbox/index.d.ts +175 -0
  246. package/dist/machines/listbox/index.js +860 -0
  247. package/dist/machines/marquee/index.cjs +387 -0
  248. package/dist/machines/marquee/index.d.cts +102 -0
  249. package/dist/machines/marquee/index.d.ts +102 -0
  250. package/dist/machines/marquee/index.js +382 -0
  251. package/dist/machines/menu/index.cjs +1562 -0
  252. package/dist/machines/menu/index.d.cts +188 -0
  253. package/dist/machines/menu/index.d.ts +188 -0
  254. package/dist/machines/menu/index.js +1549 -0
  255. package/dist/machines/navigation-menu/index.cjs +860 -0
  256. package/dist/machines/navigation-menu/index.d.cts +131 -0
  257. package/dist/machines/navigation-menu/index.d.ts +131 -0
  258. package/dist/machines/navigation-menu/index.js +855 -0
  259. package/dist/machines/number-input/index.cjs +1014 -0
  260. package/dist/machines/number-input/index.d.cts +136 -0
  261. package/dist/machines/number-input/index.d.ts +136 -0
  262. package/dist/machines/number-input/index.js +1009 -0
  263. package/dist/machines/pagination/index.cjs +413 -0
  264. package/dist/machines/pagination/index.d.cts +139 -0
  265. package/dist/machines/pagination/index.d.ts +139 -0
  266. package/dist/machines/pagination/index.js +404 -0
  267. package/dist/machines/password-input/index.cjs +224 -0
  268. package/dist/machines/password-input/index.d.cts +71 -0
  269. package/dist/machines/password-input/index.d.ts +71 -0
  270. package/dist/machines/password-input/index.js +219 -0
  271. package/dist/machines/pin-input/index.cjs +595 -0
  272. package/dist/machines/pin-input/index.d.cts +107 -0
  273. package/dist/machines/pin-input/index.d.ts +107 -0
  274. package/dist/machines/pin-input/index.js +590 -0
  275. package/dist/machines/popover/index.cjs +516 -0
  276. package/dist/machines/popover/index.d.cts +107 -0
  277. package/dist/machines/popover/index.d.ts +107 -0
  278. package/dist/machines/popover/index.js +511 -0
  279. package/dist/machines/presence/index.cjs +193 -0
  280. package/dist/machines/presence/index.d.cts +44 -0
  281. package/dist/machines/presence/index.d.ts +44 -0
  282. package/dist/machines/presence/index.js +190 -0
  283. package/dist/machines/progress/index.cjs +282 -0
  284. package/dist/machines/progress/index.d.cts +96 -0
  285. package/dist/machines/progress/index.d.ts +96 -0
  286. package/dist/machines/progress/index.js +277 -0
  287. package/dist/machines/qr-code/index.cjs +167 -0
  288. package/dist/machines/qr-code/index.d.cts +71 -0
  289. package/dist/machines/qr-code/index.d.ts +71 -0
  290. package/dist/machines/qr-code/index.js +162 -0
  291. package/dist/machines/radio-group/index.cjs +465 -0
  292. package/dist/machines/radio-group/index.d.cts +218 -0
  293. package/dist/machines/radio-group/index.d.ts +218 -0
  294. package/dist/machines/radio-group/index.js +458 -0
  295. package/dist/machines/rating-group/index.cjs +405 -0
  296. package/dist/machines/rating-group/index.d.cts +101 -0
  297. package/dist/machines/rating-group/index.d.ts +101 -0
  298. package/dist/machines/rating-group/index.js +398 -0
  299. package/dist/machines/scroll-area/index.cjs +865 -0
  300. package/dist/machines/scroll-area/index.d.cts +126 -0
  301. package/dist/machines/scroll-area/index.d.ts +126 -0
  302. package/dist/machines/scroll-area/index.js +860 -0
  303. package/dist/machines/select/index.cjs +1226 -0
  304. package/dist/machines/select/index.d.cts +190 -0
  305. package/dist/machines/select/index.d.ts +190 -0
  306. package/dist/machines/select/index.js +1214 -0
  307. package/dist/machines/signature-pad/index.cjs +337 -0
  308. package/dist/machines/signature-pad/index.d.cts +108 -0
  309. package/dist/machines/signature-pad/index.d.ts +108 -0
  310. package/dist/machines/signature-pad/index.js +330 -0
  311. package/dist/machines/slider/index.cjs +1103 -0
  312. package/dist/machines/slider/index.d.cts +154 -0
  313. package/dist/machines/slider/index.d.ts +154 -0
  314. package/dist/machines/slider/index.js +1094 -0
  315. package/dist/machines/splitter/index.cjs +1686 -0
  316. package/dist/machines/splitter/index.d.cts +282 -0
  317. package/dist/machines/splitter/index.d.ts +282 -0
  318. package/dist/machines/splitter/index.js +1675 -0
  319. package/dist/machines/steps/index.cjs +330 -0
  320. package/dist/machines/steps/index.d.cts +109 -0
  321. package/dist/machines/steps/index.d.ts +109 -0
  322. package/dist/machines/steps/index.js +325 -0
  323. package/dist/machines/switch/index.cjs +307 -0
  324. package/dist/machines/switch/index.d.cts +80 -0
  325. package/dist/machines/switch/index.d.ts +80 -0
  326. package/dist/machines/switch/index.js +302 -0
  327. package/dist/machines/tabs/index.cjs +542 -0
  328. package/dist/machines/tabs/index.d.cts +113 -0
  329. package/dist/machines/tabs/index.d.ts +113 -0
  330. package/dist/machines/tabs/index.js +533 -0
  331. package/dist/machines/tags-input/index.cjs +1151 -0
  332. package/dist/machines/tags-input/index.d.cts +182 -0
  333. package/dist/machines/tags-input/index.d.ts +182 -0
  334. package/dist/machines/tags-input/index.js +1144 -0
  335. package/dist/machines/timer/index.cjs +329 -0
  336. package/dist/machines/timer/index.d.cts +102 -0
  337. package/dist/machines/timer/index.d.ts +102 -0
  338. package/dist/machines/timer/index.js +323 -0
  339. package/dist/machines/toast/index.cjs +1185 -0
  340. package/dist/machines/toast/index.d.cts +204 -0
  341. package/dist/machines/toast/index.d.ts +204 -0
  342. package/dist/machines/toast/index.js +1180 -0
  343. package/dist/machines/toc/index.cjs +358 -0
  344. package/dist/machines/toc/index.d.cts +98 -0
  345. package/dist/machines/toc/index.d.ts +98 -0
  346. package/dist/machines/toc/index.js +351 -0
  347. package/dist/machines/toggle/index.cjs +99 -0
  348. package/dist/machines/toggle/index.d.cts +46 -0
  349. package/dist/machines/toggle/index.d.ts +46 -0
  350. package/dist/machines/toggle/index.js +94 -0
  351. package/dist/machines/toggle-group/index.cjs +329 -0
  352. package/dist/machines/toggle-group/index.d.cts +81 -0
  353. package/dist/machines/toggle-group/index.d.ts +81 -0
  354. package/dist/machines/toggle-group/index.js +322 -0
  355. package/dist/machines/tooltip/index.cjs +638 -0
  356. package/dist/machines/tooltip/index.d.cts +84 -0
  357. package/dist/machines/tooltip/index.d.ts +84 -0
  358. package/dist/machines/tooltip/index.js +633 -0
  359. package/dist/machines/tour/index.cjs +1123 -0
  360. package/dist/machines/tour/index.d.cts +207 -0
  361. package/dist/machines/tour/index.d.ts +207 -0
  362. package/dist/machines/tour/index.js +1115 -0
  363. package/dist/machines/tree-view/index.cjs +1288 -0
  364. package/dist/machines/tree-view/index.d.cts +221 -0
  365. package/dist/machines/tree-view/index.d.ts +221 -0
  366. package/dist/machines/tree-view/index.js +1279 -0
  367. package/dist/mutation-observer-_LbwtN3W.cjs +61 -0
  368. package/dist/mutation-observer-qObPUo3D.js +50 -0
  369. package/dist/navigate-CJOaL3vx.js +31 -0
  370. package/dist/navigate-uJG-006f.cjs +42 -0
  371. package/dist/overflow-BBihfMxX.cjs +67 -0
  372. package/dist/overflow-C-zO1CWA.js +44 -0
  373. package/dist/platform-BDB0wXUk.js +26 -0
  374. package/dist/platform-BZS-dkZN.cjs +109 -0
  375. package/dist/point-C9A4dk1i.js +27 -0
  376. package/dist/point-DxnCrJBy.cjs +32 -0
  377. package/dist/pointer-lock-BvfSjt_s.cjs +31 -0
  378. package/dist/pointer-lock-WezxTqu-.js +26 -0
  379. package/dist/pointer-move-CGzan38r.cjs +42 -0
  380. package/dist/pointer-move-Tijb8Ptk.js +37 -0
  381. package/dist/polygon-BvdwYRBw.js +76 -0
  382. package/dist/polygon-CTR1kEoU.cjs +93 -0
  383. package/dist/popper-DkAAS9VE.cjs +487 -0
  384. package/dist/popper-DzBZzAe4.js +464 -0
  385. package/dist/popper.cjs +6 -0
  386. package/dist/popper.d.cts +2 -0
  387. package/dist/popper.d.ts +2 -0
  388. package/dist/popper.js +2 -0
  389. package/dist/press-B7XLrLGR.js +65 -0
  390. package/dist/press-BdD5suLQ.cjs +70 -0
  391. package/dist/proxy-tab-focus-DWMXvAfO.js +54 -0
  392. package/dist/proxy-tab-focus-NthYgHdY.cjs +59 -0
  393. package/dist/raf-BSDcY4UD.cjs +85 -0
  394. package/dist/raf-DgINgykK.d.cts +15 -0
  395. package/dist/raf-DgINgykK.d.ts +15 -0
  396. package/dist/raf-Dhvm7f1e.js +62 -0
  397. package/dist/rect-utils-DiT4k3jS.cjs +548 -0
  398. package/dist/rect-utils-d_3gZVsc.js +459 -0
  399. package/dist/rect-utils.cjs +165 -0
  400. package/dist/rect-utils.d.cts +197 -0
  401. package/dist/rect-utils.d.ts +197 -0
  402. package/dist/rect-utils.js +116 -0
  403. package/dist/remove-scroll-DTVA5f4w.cjs +86 -0
  404. package/dist/remove-scroll-WEheFCiq.js +81 -0
  405. package/dist/remove-scroll.cjs +3 -0
  406. package/dist/remove-scroll.d.cts +4 -0
  407. package/dist/remove-scroll.d.ts +4 -0
  408. package/dist/remove-scroll.js +2 -0
  409. package/dist/rolldown-runtime-D6vf50IK.cjs +28 -0
  410. package/dist/scale-C5BBHVgH.js +17 -0
  411. package/dist/scale-C7iiUGhS.cjs +22 -0
  412. package/dist/scope-CysKlKe9.cjs +28 -0
  413. package/dist/scope-D1873Mzi.js +23 -0
  414. package/dist/scroll-CVJ40w2e.js +46 -0
  415. package/dist/scroll-Dyd1QLrc.cjs +63 -0
  416. package/dist/scroll-snap-Cuaqdevf.cjs +224 -0
  417. package/dist/scroll-snap-DqMiFASa.js +201 -0
  418. package/dist/scroll-snap.cjs +6 -0
  419. package/dist/scroll-snap.d.cts +14 -0
  420. package/dist/scroll-snap.d.ts +14 -0
  421. package/dist/scroll-snap.js +2 -0
  422. package/dist/selection-ClKhnWit.d.cts +49 -0
  423. package/dist/selection-DzLiSVkg.d.ts +49 -0
  424. package/dist/selection-map-962WvX2k.js +45 -0
  425. package/dist/selection-map-BwlZr1LH.cjs +68 -0
  426. package/dist/set-CFNGOW5W.js +50 -0
  427. package/dist/set-DrtWCLFb.cjs +73 -0
  428. package/dist/store-BLpJlMxz.js +257 -0
  429. package/dist/store-Btfrm2bs.cjs +47 -0
  430. package/dist/store-C5HvdLyc.js +42 -0
  431. package/dist/store-Wg8KVwNv.cjs +298 -0
  432. package/dist/store.cjs +9 -0
  433. package/dist/store.d.cts +26 -0
  434. package/dist/store.d.ts +26 -0
  435. package/dist/store.js +2 -0
  436. package/dist/stringify-state.cjs +48 -0
  437. package/dist/stringify-state.d.cts +8 -0
  438. package/dist/stringify-state.d.ts +8 -0
  439. package/dist/stringify-state.js +44 -0
  440. package/dist/tabbable-Bz1-1GAY.cjs +206 -0
  441. package/dist/tabbable-CDA1YMjZ.js +147 -0
  442. package/dist/text-selection-B3OQpQGy.cjs +75 -0
  443. package/dist/text-selection-DXvWvm6k.js +64 -0
  444. package/dist/timers-BRyPrXIX.js +82 -0
  445. package/dist/timers-Beu4SfAj.cjs +99 -0
  446. package/dist/tree-collection-3QX3EIhq.d.ts +77 -0
  447. package/dist/tree-collection-C6oDQGUJ.d.cts +77 -0
  448. package/dist/typeahead-DremEgML.d.cts +45 -0
  449. package/dist/typeahead-DremEgML.d.ts +45 -0
  450. package/dist/types-BFuHIo7S.js +10 -0
  451. package/dist/types-CczqoQLL.d.cts +57 -0
  452. package/dist/types-CczqoQLL.d.ts +57 -0
  453. package/dist/types-CjocssbC.d.cts +13 -0
  454. package/dist/types-CjocssbC.d.ts +13 -0
  455. package/dist/types-D7oF7eWh.d.cts +54 -0
  456. package/dist/types-D7oF7eWh.d.ts +54 -0
  457. package/dist/types-HCvp3Bhv.cjs +21 -0
  458. package/dist/types.cjs +14 -0
  459. package/dist/types.d.cts +6 -0
  460. package/dist/types.d.ts +6 -0
  461. package/dist/types.js +12 -0
  462. package/dist/utils-BH-oBBz2.cjs +614 -0
  463. package/dist/utils-Cht5XaHf.js +267 -0
  464. package/dist/utils.cjs +95 -0
  465. package/dist/utils.d.cts +144 -0
  466. package/dist/utils.d.ts +144 -0
  467. package/dist/utils.js +7 -0
  468. package/dist/visually-hidden-BgSCFLz_.cjs +29 -0
  469. package/dist/visually-hidden-yDJ517KZ.js +18 -0
  470. package/dist/wait-for-3n85JcCU.d.cts +15 -0
  471. package/dist/wait-for-3n85JcCU.d.ts +15 -0
  472. package/dist/wait-for-CI5Ye-Lo.js +69 -0
  473. package/dist/wait-for-Db73VpZQ.cjs +86 -0
  474. package/dist/warning-CrzBpWT1.js +19 -0
  475. package/dist/warning-HAmFXLHm.cjs +42 -0
  476. package/package.json +349 -6
@@ -0,0 +1,1518 @@
1
+ import { t as createAnatomy } from "../../create-anatomy-B2q3wiaw.js";
2
+ import { d as query, f as queryAll, z as dataAttr } from "../../dom-query-e7fh0TEH.js";
3
+ import { a as getEventStep, h as isModifierKey, i as getEventPoint, l as isComposingEvent, m as isLeftClick, r as getEventKey } from "../../event-bTItRgiw.js";
4
+ import { n as dispatchInputValueEvent, o as setElementValue, s as trackFormControl } from "../../form-B1DW_w_3.js";
5
+ import { t as getInitialFocus } from "../../initial-focus-BrN5tT2X.js";
6
+ import { i as raf } from "../../raf-Dhvm7f1e.js";
7
+ import { t as getRelativePoint } from "../../point-C9A4dk1i.js";
8
+ import { t as disableTextSelection } from "../../text-selection-DXvWvm6k.js";
9
+ import { t as trackPointerMove } from "../../pointer-move-Tijb8Ptk.js";
10
+ import { n as visuallyHiddenStyle } from "../../visually-hidden-yDJ517KZ.js";
11
+ import { K as tryCatch, n as createSplitProps } from "../../utils-Cht5XaHf.js";
12
+ import { i as getColorAreaGradient, n as parseColor, t as normalizeColor } from "../../color-utils-lDDg9FEh.js";
13
+ import { n as createGuards, r as createMachine } from "../../core-CJ0MZr3D.js";
14
+ import { n as trackDismissableElement } from "../../dismissable-KM1jPtNQ.js";
15
+ import { n as getPlacement, r as getPlacementSide, t as getPlacementStyles } from "../../popper-DzBZzAe4.js";
16
+ import { t as createProps } from "../../create-props-CgtcN_Qu.js";
17
+ //#region src/machines/color-picker/anatomy.ts
18
+ const anatomy = createAnatomy("color-picker", [
19
+ "root",
20
+ "label",
21
+ "control",
22
+ "trigger",
23
+ "positioner",
24
+ "content",
25
+ "area",
26
+ "areaThumb",
27
+ "valueText",
28
+ "areaBackground",
29
+ "channelSlider",
30
+ "channelSliderLabel",
31
+ "channelSliderTrack",
32
+ "channelSliderThumb",
33
+ "channelSliderValueText",
34
+ "channelInput",
35
+ "transparencyGrid",
36
+ "swatchGroup",
37
+ "swatchTrigger",
38
+ "swatchIndicator",
39
+ "swatch",
40
+ "eyeDropperTrigger",
41
+ "formatTrigger",
42
+ "formatSelect"
43
+ ]);
44
+ const parts = anatomy.build();
45
+ //#endregion
46
+ //#region src/machines/color-picker/dom.ts
47
+ const getRootId = (ctx) => ctx.ids?.root ?? `color-picker:${ctx.id}`;
48
+ const getLabelId = (ctx) => ctx.ids?.label ?? `color-picker:${ctx.id}:label`;
49
+ const getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `color-picker:${ctx.id}:hidden-input`;
50
+ const getControlId = (ctx) => ctx.ids?.control ?? `color-picker:${ctx.id}:control`;
51
+ const getTriggerId = (ctx) => ctx.ids?.trigger ?? `color-picker:${ctx.id}:trigger`;
52
+ const getContentId = (ctx) => ctx.ids?.content ?? `color-picker:${ctx.id}:content`;
53
+ const getPositionerId = (ctx) => ctx.ids?.positioner ?? `color-picker:${ctx.id}:positioner`;
54
+ const getFormatSelectId = (ctx) => ctx.ids?.formatSelect ?? `color-picker:${ctx.id}:format-select`;
55
+ const getAreaId = (ctx) => ctx.ids?.area ?? `color-picker:${ctx.id}:area`;
56
+ const getAreaGradientId = (ctx) => ctx.ids?.areaGradient ?? `color-picker:${ctx.id}:area-gradient`;
57
+ const getAreaThumbId = (ctx) => ctx.ids?.areaThumb ?? `color-picker:${ctx.id}:area-thumb`;
58
+ const getChannelSliderTrackId = (ctx, channel) => ctx.ids?.channelSliderTrack?.(channel) ?? `color-picker:${ctx.id}:slider-track:${channel}`;
59
+ const getChannelSliderThumbId = (ctx, channel) => ctx.ids?.channelSliderThumb?.(channel) ?? `color-picker:${ctx.id}:slider-thumb:${channel}`;
60
+ const getContentEl = (ctx) => ctx.getById(getContentId(ctx));
61
+ const getAreaThumbEl = (ctx) => ctx.getById(getAreaThumbId(ctx));
62
+ const getChannelSliderThumbEl = (ctx, channel) => ctx.getById(getChannelSliderThumbId(ctx, channel));
63
+ const getFormatSelectEl = (ctx) => ctx.getById(getFormatSelectId(ctx));
64
+ const getHiddenInputEl = (ctx) => ctx.getById(getHiddenInputId(ctx));
65
+ const getAreaEl = (ctx) => ctx.getById(getAreaId(ctx));
66
+ const getAreaValueFromPoint = (ctx, point, dir) => {
67
+ const areaEl = getAreaEl(ctx);
68
+ if (!areaEl) return;
69
+ const { getPercentValue } = getRelativePoint(point, areaEl);
70
+ return {
71
+ x: getPercentValue({
72
+ dir,
73
+ orientation: "horizontal"
74
+ }),
75
+ y: getPercentValue({ orientation: "vertical" })
76
+ };
77
+ };
78
+ const getControlEl = (ctx) => ctx.getById(getControlId(ctx));
79
+ const getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));
80
+ const getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));
81
+ const getChannelSliderTrackEl = (ctx, channel) => ctx.getById(getChannelSliderTrackId(ctx, channel));
82
+ const getChannelSliderValueFromPoint = (ctx, point, channel, dir) => {
83
+ const trackEl = getChannelSliderTrackEl(ctx, channel);
84
+ if (!trackEl) return;
85
+ const { getPercentValue } = getRelativePoint(point, trackEl);
86
+ return {
87
+ x: getPercentValue({
88
+ dir,
89
+ orientation: "horizontal"
90
+ }),
91
+ y: getPercentValue({ orientation: "vertical" })
92
+ };
93
+ };
94
+ const getChannelInputEls = (ctx) => {
95
+ return [...queryAll(getContentEl(ctx), "input[data-channel]"), ...queryAll(getControlEl(ctx), "input[data-channel]")];
96
+ };
97
+ //#endregion
98
+ //#region src/machines/color-picker/utils/get-channel-display-color.ts
99
+ function getChannelDisplayColor(color, channel) {
100
+ switch (channel) {
101
+ case "hue": return parseColor(`hsl(${color.getChannelValue("hue")}, 100%, 50%)`);
102
+ case "lightness":
103
+ case "brightness":
104
+ case "saturation":
105
+ case "red":
106
+ case "green":
107
+ case "blue": return color.withChannelValue("alpha", 1);
108
+ case "alpha": return color;
109
+ default: throw new Error("Unknown color channel: " + channel);
110
+ }
111
+ }
112
+ //#endregion
113
+ //#region src/machines/color-picker/utils/get-channel-input-value.ts
114
+ function getChannelValue(color, channel) {
115
+ if (channel == null) return "";
116
+ if (channel === "hex") return color.toString("hex");
117
+ if (channel === "css") return color.toString("css");
118
+ if (channel in color) return color.getChannelValue(channel).toString();
119
+ const isHSL = color.getFormat() === "hsla";
120
+ switch (channel) {
121
+ case "hue": return isHSL ? color.toFormat("hsla").getChannelValue("hue").toString() : color.toFormat("hsba").getChannelValue("hue").toString();
122
+ case "saturation": return isHSL ? color.toFormat("hsla").getChannelValue("saturation").toString() : color.toFormat("hsba").getChannelValue("saturation").toString();
123
+ case "lightness": return color.toFormat("hsla").getChannelValue("lightness").toString();
124
+ case "brightness": return color.toFormat("hsba").getChannelValue("brightness").toString();
125
+ case "red":
126
+ case "green":
127
+ case "blue": return color.toFormat("rgba").getChannelValue(channel).toString();
128
+ default: return color.getChannelValue(channel).toString();
129
+ }
130
+ }
131
+ function getChannelRange(color, channel) {
132
+ switch (channel) {
133
+ case "hex":
134
+ const minColor = parseColor("#000000");
135
+ const maxColor = parseColor("#FFFFFF");
136
+ return {
137
+ minValue: minColor.toHexInt(),
138
+ maxValue: maxColor.toHexInt(),
139
+ pageSize: 10,
140
+ step: 1
141
+ };
142
+ case "css": return;
143
+ case "hue":
144
+ case "saturation":
145
+ case "lightness": return color.toFormat("hsla").getChannelRange(channel);
146
+ case "brightness": return color.toFormat("hsba").getChannelRange(channel);
147
+ case "red":
148
+ case "green":
149
+ case "blue": return color.toFormat("rgba").getChannelRange(channel);
150
+ default: return color.getChannelRange(channel);
151
+ }
152
+ }
153
+ //#endregion
154
+ //#region src/machines/color-picker/utils/get-slider-background.ts
155
+ function getSliderBackgroundDirection(orientation, dir) {
156
+ if (orientation === "vertical") return "top";
157
+ else if (dir === "ltr") return "right";
158
+ else return "left";
159
+ }
160
+ const getSliderBackground = (props) => {
161
+ const { channel, value, dir, orientation } = props;
162
+ const bgDirection = getSliderBackgroundDirection(orientation, dir);
163
+ const { minValue, maxValue } = value.getChannelRange(channel);
164
+ switch (channel) {
165
+ case "hue": return `linear-gradient(to ${bgDirection}, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%)`;
166
+ case "lightness": return `linear-gradient(to ${bgDirection}, ${value.withChannelValue(channel, minValue).toString("css")}, ${value.withChannelValue(channel, (maxValue - minValue) / 2).toString("css")}, ${value.withChannelValue(channel, maxValue).toString("css")})`;
167
+ case "saturation":
168
+ case "brightness":
169
+ case "red":
170
+ case "green":
171
+ case "blue":
172
+ case "alpha": return `linear-gradient(to ${bgDirection}, ${value.withChannelValue(channel, minValue).toString("css")}, ${value.withChannelValue(channel, maxValue).toString("css")})`;
173
+ default: throw new Error("Unknown color channel: " + channel);
174
+ }
175
+ };
176
+ //#endregion
177
+ //#region src/machines/color-picker/connect.ts
178
+ function connect(service, normalize) {
179
+ const { context, send, prop, computed, state, scope } = service;
180
+ const value = context.get("value");
181
+ const format = context.get("format");
182
+ const areaValue = computed("areaValue");
183
+ const valueAsString = computed("valueAsString");
184
+ const disabled = computed("disabled");
185
+ const readOnly = !!prop("readOnly");
186
+ const invalid = !!prop("invalid");
187
+ const required = !!prop("required");
188
+ const interactive = computed("interactive");
189
+ const dragging = state.hasTag("dragging");
190
+ const open = state.hasTag("open");
191
+ const focused = state.hasTag("focused");
192
+ const getAreaChannels = (props) => {
193
+ const channels = areaValue.getChannels();
194
+ return {
195
+ xChannel: props.xChannel ?? channels[1],
196
+ yChannel: props.yChannel ?? channels[2]
197
+ };
198
+ };
199
+ const currentPlacement = context.get("currentPlacement");
200
+ const currentPlacementSide = currentPlacement ? getPlacementSide(currentPlacement) : void 0;
201
+ const popperStyles = getPlacementStyles({
202
+ ...prop("positioning"),
203
+ placement: currentPlacement
204
+ });
205
+ function getSwatchTriggerState(props) {
206
+ const color = normalizeColor(props.value).toFormat(context.get("format"));
207
+ return {
208
+ value: color,
209
+ valueAsString: color.toString("hex"),
210
+ checked: color.isEqual(value),
211
+ disabled: props.disabled || !interactive
212
+ };
213
+ }
214
+ return {
215
+ dragging,
216
+ open,
217
+ valueAsString,
218
+ value,
219
+ inline: !!prop("inline"),
220
+ setOpen(nextOpen) {
221
+ if (prop("inline")) return;
222
+ if (state.hasTag("open") === nextOpen) return;
223
+ send({ type: nextOpen ? "OPEN" : "CLOSE" });
224
+ },
225
+ setValue(value) {
226
+ send({
227
+ type: "VALUE.SET",
228
+ value: normalizeColor(value),
229
+ src: "set-color"
230
+ });
231
+ },
232
+ getChannelValue(channel) {
233
+ return getChannelValue(value, channel);
234
+ },
235
+ getChannelValueText(channel, locale) {
236
+ return value.formatChannelValue(channel, locale);
237
+ },
238
+ setChannelValue(channel, channelValue) {
239
+ const color = value.withChannelValue(channel, channelValue);
240
+ send({
241
+ type: "VALUE.SET",
242
+ value: color,
243
+ src: "set-channel"
244
+ });
245
+ },
246
+ format: context.get("format"),
247
+ setFormat(format) {
248
+ const formatValue = value.toFormat(format);
249
+ send({
250
+ type: "VALUE.SET",
251
+ value: formatValue,
252
+ src: "set-format"
253
+ });
254
+ },
255
+ alpha: value.getChannelValue("alpha"),
256
+ setAlpha(alphaValue) {
257
+ const color = value.withChannelValue("alpha", alphaValue);
258
+ send({
259
+ type: "VALUE.SET",
260
+ value: color,
261
+ src: "set-alpha"
262
+ });
263
+ },
264
+ getRootProps() {
265
+ return normalize.element({
266
+ ...parts.root.attrs,
267
+ dir: prop("dir"),
268
+ id: getRootId(scope),
269
+ "data-disabled": dataAttr(disabled),
270
+ "data-readonly": dataAttr(readOnly),
271
+ "data-invalid": dataAttr(invalid),
272
+ style: { "--value": value.toString("css") }
273
+ });
274
+ },
275
+ getLabelProps() {
276
+ return normalize.element({
277
+ ...parts.label.attrs,
278
+ dir: prop("dir"),
279
+ id: getLabelId(scope),
280
+ htmlFor: getHiddenInputId(scope),
281
+ "data-disabled": dataAttr(disabled),
282
+ "data-readonly": dataAttr(readOnly),
283
+ "data-invalid": dataAttr(invalid),
284
+ "data-required": dataAttr(required),
285
+ "data-focus": dataAttr(focused),
286
+ onClick(event) {
287
+ event.preventDefault();
288
+ query(getControlEl(scope), "[data-channel=hex]")?.focus({ preventScroll: true });
289
+ }
290
+ });
291
+ },
292
+ getControlProps() {
293
+ return normalize.element({
294
+ ...parts.control.attrs,
295
+ id: getControlId(scope),
296
+ dir: prop("dir"),
297
+ "data-disabled": dataAttr(disabled),
298
+ "data-readonly": dataAttr(readOnly),
299
+ "data-invalid": dataAttr(invalid),
300
+ "data-state": open ? "open" : "closed",
301
+ "data-focus": dataAttr(focused)
302
+ });
303
+ },
304
+ getTriggerProps() {
305
+ return normalize.button({
306
+ ...parts.trigger.attrs,
307
+ id: getTriggerId(scope),
308
+ dir: prop("dir"),
309
+ disabled,
310
+ "aria-label": `select color. current color is ${valueAsString}`,
311
+ "aria-controls": getContentId(scope),
312
+ "aria-labelledby": getLabelId(scope),
313
+ "aria-haspopup": prop("inline") ? void 0 : "dialog",
314
+ "data-disabled": dataAttr(disabled),
315
+ "data-readonly": dataAttr(readOnly),
316
+ "data-invalid": dataAttr(invalid),
317
+ "data-placement": currentPlacement,
318
+ "data-side": currentPlacementSide,
319
+ "aria-expanded": open,
320
+ "data-state": open ? "open" : "closed",
321
+ "data-focus": dataAttr(focused),
322
+ type: "button",
323
+ onClick() {
324
+ if (!interactive) return;
325
+ send({ type: "TRIGGER.CLICK" });
326
+ },
327
+ onBlur() {
328
+ if (!interactive) return;
329
+ send({ type: "TRIGGER.BLUR" });
330
+ },
331
+ style: { position: "relative" }
332
+ });
333
+ },
334
+ getPositionerProps() {
335
+ return normalize.element({
336
+ ...parts.positioner.attrs,
337
+ id: getPositionerId(scope),
338
+ dir: prop("dir"),
339
+ style: popperStyles.floating
340
+ });
341
+ },
342
+ getContentProps() {
343
+ return normalize.element({
344
+ ...parts.content.attrs,
345
+ id: getContentId(scope),
346
+ dir: prop("dir"),
347
+ role: prop("inline") ? void 0 : "dialog",
348
+ tabIndex: -1,
349
+ "data-placement": currentPlacement,
350
+ "data-side": currentPlacementSide,
351
+ "data-state": open ? "open" : "closed",
352
+ hidden: !open
353
+ });
354
+ },
355
+ getValueTextProps() {
356
+ return normalize.element({
357
+ ...parts.valueText.attrs,
358
+ dir: prop("dir"),
359
+ "data-disabled": dataAttr(disabled),
360
+ "data-focus": dataAttr(focused)
361
+ });
362
+ },
363
+ getAreaProps(props = {}) {
364
+ const { xChannel, yChannel } = getAreaChannels(props);
365
+ const { areaStyles } = getColorAreaGradient(areaValue, {
366
+ xChannel,
367
+ yChannel,
368
+ dir: prop("dir")
369
+ });
370
+ return normalize.element({
371
+ ...parts.area.attrs,
372
+ id: getAreaId(scope),
373
+ role: "group",
374
+ "data-invalid": dataAttr(invalid),
375
+ "data-disabled": dataAttr(disabled),
376
+ "data-readonly": dataAttr(readOnly),
377
+ onPointerDown(event) {
378
+ if (!interactive) return;
379
+ if (!isLeftClick(event)) return;
380
+ if (isModifierKey(event)) return;
381
+ const point = getEventPoint(event);
382
+ send({
383
+ type: "AREA.POINTER_DOWN",
384
+ point,
385
+ channel: {
386
+ xChannel,
387
+ yChannel
388
+ },
389
+ id: "area"
390
+ });
391
+ event.preventDefault();
392
+ },
393
+ style: {
394
+ position: "relative",
395
+ touchAction: "none",
396
+ forcedColorAdjust: "none",
397
+ ...areaStyles
398
+ }
399
+ });
400
+ },
401
+ getAreaBackgroundProps(props = {}) {
402
+ const { xChannel, yChannel } = getAreaChannels(props);
403
+ const { areaGradientStyles } = getColorAreaGradient(areaValue, {
404
+ xChannel,
405
+ yChannel,
406
+ dir: prop("dir")
407
+ });
408
+ return normalize.element({
409
+ ...parts.areaBackground.attrs,
410
+ id: getAreaGradientId(scope),
411
+ "data-invalid": dataAttr(invalid),
412
+ "data-disabled": dataAttr(disabled),
413
+ "data-readonly": dataAttr(readOnly),
414
+ style: {
415
+ position: "relative",
416
+ touchAction: "none",
417
+ forcedColorAdjust: "none",
418
+ ...areaGradientStyles
419
+ }
420
+ });
421
+ },
422
+ getAreaThumbProps(props = {}) {
423
+ const { xChannel, yChannel } = getAreaChannels(props);
424
+ const channel = {
425
+ xChannel,
426
+ yChannel
427
+ };
428
+ const xPercent = areaValue.getChannelValuePercent(xChannel);
429
+ const yPercent = 1 - areaValue.getChannelValuePercent(yChannel);
430
+ const finalXPercent = prop("dir") === "rtl" ? 1 - xPercent : xPercent;
431
+ const xValue = areaValue.getChannelValue(xChannel);
432
+ const yValue = areaValue.getChannelValue(yChannel);
433
+ const color = areaValue.withChannelValue("alpha", 1).toString("css");
434
+ return normalize.element({
435
+ ...parts.areaThumb.attrs,
436
+ id: getAreaThumbId(scope),
437
+ dir: prop("dir"),
438
+ tabIndex: disabled ? void 0 : 0,
439
+ "data-disabled": dataAttr(disabled),
440
+ "data-invalid": dataAttr(invalid),
441
+ "data-readonly": dataAttr(readOnly),
442
+ role: "slider",
443
+ "aria-valuemin": 0,
444
+ "aria-valuemax": 100,
445
+ "aria-valuenow": xValue,
446
+ "aria-label": `${xChannel} and ${yChannel}`,
447
+ "aria-roledescription": "2d slider",
448
+ "aria-valuetext": `${xChannel} ${xValue}, ${yChannel} ${yValue}`,
449
+ style: {
450
+ position: "absolute",
451
+ left: `${finalXPercent * 100}%`,
452
+ top: `${yPercent * 100}%`,
453
+ transform: "translate(-50%, -50%)",
454
+ touchAction: "none",
455
+ forcedColorAdjust: "none",
456
+ "--color": color,
457
+ background: color
458
+ },
459
+ onFocus() {
460
+ if (!interactive) return;
461
+ send({
462
+ type: "AREA.FOCUS",
463
+ id: "area",
464
+ channel
465
+ });
466
+ },
467
+ onKeyDown(event) {
468
+ if (event.defaultPrevented) return;
469
+ if (!interactive) return;
470
+ const step = getEventStep(event);
471
+ const exec = {
472
+ ArrowUp() {
473
+ send({
474
+ type: "AREA.ARROW_UP",
475
+ channel,
476
+ step
477
+ });
478
+ },
479
+ ArrowDown() {
480
+ send({
481
+ type: "AREA.ARROW_DOWN",
482
+ channel,
483
+ step
484
+ });
485
+ },
486
+ ArrowLeft() {
487
+ send({
488
+ type: "AREA.ARROW_LEFT",
489
+ channel,
490
+ step
491
+ });
492
+ },
493
+ ArrowRight() {
494
+ send({
495
+ type: "AREA.ARROW_RIGHT",
496
+ channel,
497
+ step
498
+ });
499
+ },
500
+ PageUp() {
501
+ send({
502
+ type: "AREA.PAGE_UP",
503
+ channel,
504
+ step
505
+ });
506
+ },
507
+ PageDown() {
508
+ send({
509
+ type: "AREA.PAGE_DOWN",
510
+ channel,
511
+ step
512
+ });
513
+ },
514
+ Escape(event) {
515
+ event.stopPropagation();
516
+ }
517
+ }[getEventKey(event, { dir: prop("dir") })];
518
+ if (exec) {
519
+ exec(event);
520
+ event.preventDefault();
521
+ }
522
+ }
523
+ });
524
+ },
525
+ getTransparencyGridProps(props = {}) {
526
+ const { size = "12px" } = props;
527
+ return normalize.element({
528
+ ...parts.transparencyGrid.attrs,
529
+ style: {
530
+ "--size": size,
531
+ width: "100%",
532
+ height: "100%",
533
+ position: "absolute",
534
+ backgroundColor: "#fff",
535
+ backgroundImage: "conic-gradient(#eeeeee 0 25%, transparent 0 50%, #eeeeee 0 75%, transparent 0)",
536
+ backgroundSize: "var(--size) var(--size)",
537
+ inset: "0px",
538
+ zIndex: "auto",
539
+ pointerEvents: "none"
540
+ }
541
+ });
542
+ },
543
+ getChannelSliderProps(props) {
544
+ const { orientation = "horizontal", channel, format } = props;
545
+ return normalize.element({
546
+ ...parts.channelSlider.attrs,
547
+ "data-channel": channel,
548
+ "data-orientation": orientation,
549
+ role: "presentation",
550
+ onPointerDown(event) {
551
+ if (!interactive) return;
552
+ if (!isLeftClick(event)) return;
553
+ if (isModifierKey(event)) return;
554
+ const point = getEventPoint(event);
555
+ send({
556
+ type: "CHANNEL_SLIDER.POINTER_DOWN",
557
+ channel,
558
+ format,
559
+ point,
560
+ id: channel,
561
+ orientation
562
+ });
563
+ event.preventDefault();
564
+ },
565
+ style: {
566
+ position: "relative",
567
+ touchAction: "none"
568
+ }
569
+ });
570
+ },
571
+ getChannelSliderTrackProps(props) {
572
+ const { orientation = "horizontal", channel, format } = props;
573
+ const normalizedValue = format ? value.toFormat(format) : areaValue;
574
+ return normalize.element({
575
+ ...parts.channelSliderTrack.attrs,
576
+ id: getChannelSliderTrackId(scope, channel),
577
+ role: "group",
578
+ "data-channel": channel,
579
+ "data-orientation": orientation,
580
+ style: {
581
+ position: "relative",
582
+ forcedColorAdjust: "none",
583
+ backgroundImage: getSliderBackground({
584
+ orientation,
585
+ channel,
586
+ dir: prop("dir"),
587
+ value: normalizedValue
588
+ })
589
+ }
590
+ });
591
+ },
592
+ getChannelSliderLabelProps(props) {
593
+ const { channel } = props;
594
+ return normalize.element({
595
+ ...parts.channelSliderLabel.attrs,
596
+ "data-channel": channel,
597
+ onClick(event) {
598
+ if (!interactive) return;
599
+ event.preventDefault();
600
+ const thumbId = getChannelSliderThumbId(scope, channel);
601
+ scope.getById(thumbId)?.focus({ preventScroll: true });
602
+ },
603
+ style: {
604
+ userSelect: "none",
605
+ WebkitUserSelect: "none"
606
+ }
607
+ });
608
+ },
609
+ getChannelSliderValueTextProps(props) {
610
+ return normalize.element({
611
+ ...parts.channelSliderValueText.attrs,
612
+ "data-channel": props.channel
613
+ });
614
+ },
615
+ getChannelSliderThumbProps(props) {
616
+ const { orientation = "horizontal", channel, format } = props;
617
+ const normalizedValue = format ? value.toFormat(format) : areaValue;
618
+ const channelRange = normalizedValue.getChannelRange(channel);
619
+ const channelValue = normalizedValue.getChannelValue(channel);
620
+ const offset = (channelValue - channelRange.minValue) / (channelRange.maxValue - channelRange.minValue);
621
+ const isRtl = prop("dir") === "rtl";
622
+ const finalOffset = orientation === "horizontal" && isRtl ? 1 - offset : offset;
623
+ const placementStyles = orientation === "horizontal" ? {
624
+ left: `${finalOffset * 100}%`,
625
+ top: "50%"
626
+ } : {
627
+ top: `${offset * 100}%`,
628
+ left: "50%"
629
+ };
630
+ return normalize.element({
631
+ ...parts.channelSliderThumb.attrs,
632
+ id: getChannelSliderThumbId(scope, channel),
633
+ role: "slider",
634
+ "aria-label": channel,
635
+ tabIndex: disabled ? void 0 : 0,
636
+ "data-channel": channel,
637
+ "data-disabled": dataAttr(disabled),
638
+ "data-orientation": orientation,
639
+ "aria-disabled": dataAttr(disabled),
640
+ "aria-orientation": orientation,
641
+ "aria-valuemax": channelRange.maxValue,
642
+ "aria-valuemin": channelRange.minValue,
643
+ "aria-valuenow": channelValue,
644
+ "aria-valuetext": `${channel} ${channelValue}`,
645
+ style: {
646
+ forcedColorAdjust: "none",
647
+ position: "absolute",
648
+ background: getChannelDisplayColor(areaValue, channel).toString("css"),
649
+ ...placementStyles
650
+ },
651
+ onFocus() {
652
+ if (!interactive) return;
653
+ send({
654
+ type: "CHANNEL_SLIDER.FOCUS",
655
+ channel
656
+ });
657
+ },
658
+ onKeyDown(event) {
659
+ if (event.defaultPrevented) return;
660
+ if (!interactive) return;
661
+ const step = getEventStep(event) * channelRange.step;
662
+ const exec = {
663
+ ArrowUp() {
664
+ send({
665
+ type: "CHANNEL_SLIDER.ARROW_UP",
666
+ channel,
667
+ step
668
+ });
669
+ },
670
+ ArrowDown() {
671
+ send({
672
+ type: "CHANNEL_SLIDER.ARROW_DOWN",
673
+ channel,
674
+ step
675
+ });
676
+ },
677
+ ArrowLeft() {
678
+ send({
679
+ type: "CHANNEL_SLIDER.ARROW_LEFT",
680
+ channel,
681
+ step
682
+ });
683
+ },
684
+ ArrowRight() {
685
+ send({
686
+ type: "CHANNEL_SLIDER.ARROW_RIGHT",
687
+ channel,
688
+ step
689
+ });
690
+ },
691
+ PageUp() {
692
+ send({
693
+ type: "CHANNEL_SLIDER.PAGE_UP",
694
+ channel
695
+ });
696
+ },
697
+ PageDown() {
698
+ send({
699
+ type: "CHANNEL_SLIDER.PAGE_DOWN",
700
+ channel
701
+ });
702
+ },
703
+ Home() {
704
+ send({
705
+ type: "CHANNEL_SLIDER.HOME",
706
+ channel
707
+ });
708
+ },
709
+ End() {
710
+ send({
711
+ type: "CHANNEL_SLIDER.END",
712
+ channel
713
+ });
714
+ },
715
+ Escape(event) {
716
+ event.stopPropagation();
717
+ }
718
+ }[getEventKey(event, { dir: prop("dir") })];
719
+ if (exec) {
720
+ exec(event);
721
+ event.preventDefault();
722
+ }
723
+ }
724
+ });
725
+ },
726
+ getChannelInputProps(props) {
727
+ const { channel } = props;
728
+ const isTextField = channel === "hex" || channel === "css";
729
+ const channelRange = getChannelRange(value, channel);
730
+ return normalize.input({
731
+ ...parts.channelInput.attrs,
732
+ dir: prop("dir"),
733
+ type: isTextField ? "text" : "number",
734
+ "data-channel": channel,
735
+ "aria-label": channel,
736
+ spellCheck: false,
737
+ autoComplete: "off",
738
+ disabled,
739
+ "data-disabled": dataAttr(disabled),
740
+ "data-invalid": dataAttr(invalid),
741
+ "data-readonly": dataAttr(readOnly),
742
+ readOnly,
743
+ defaultValue: getChannelValue(value, channel),
744
+ min: channelRange?.minValue,
745
+ max: channelRange?.maxValue,
746
+ step: channelRange?.step,
747
+ onBeforeInput(event) {
748
+ if (isTextField || !interactive) return;
749
+ if (event.currentTarget.value.match(/[^0-9.]/g)) event.preventDefault();
750
+ },
751
+ onFocus(event) {
752
+ if (!interactive) return;
753
+ send({
754
+ type: "CHANNEL_INPUT.FOCUS",
755
+ channel
756
+ });
757
+ event.currentTarget.select();
758
+ },
759
+ onBlur(event) {
760
+ if (!interactive) return;
761
+ const value = isTextField ? event.currentTarget.value : event.currentTarget.valueAsNumber;
762
+ send({
763
+ type: "CHANNEL_INPUT.BLUR",
764
+ channel,
765
+ value,
766
+ isTextField
767
+ });
768
+ },
769
+ onKeyDown(event) {
770
+ if (event.defaultPrevented) return;
771
+ if (!interactive) return;
772
+ if (isComposingEvent(event)) return;
773
+ if (event.key === "Enter") {
774
+ const value = isTextField ? event.currentTarget.value : event.currentTarget.valueAsNumber;
775
+ send({
776
+ type: "CHANNEL_INPUT.CHANGE",
777
+ channel,
778
+ value,
779
+ isTextField
780
+ });
781
+ event.preventDefault();
782
+ }
783
+ },
784
+ style: {
785
+ appearance: "none",
786
+ WebkitAppearance: "none",
787
+ MozAppearance: "textfield"
788
+ }
789
+ });
790
+ },
791
+ getHiddenInputProps() {
792
+ return normalize.input({
793
+ type: "text",
794
+ disabled,
795
+ name: prop("name"),
796
+ tabIndex: -1,
797
+ readOnly,
798
+ required,
799
+ id: getHiddenInputId(scope),
800
+ style: visuallyHiddenStyle,
801
+ defaultValue: valueAsString
802
+ });
803
+ },
804
+ getEyeDropperTriggerProps() {
805
+ return normalize.button({
806
+ ...parts.eyeDropperTrigger.attrs,
807
+ type: "button",
808
+ dir: prop("dir"),
809
+ disabled,
810
+ "data-disabled": dataAttr(disabled),
811
+ "data-invalid": dataAttr(invalid),
812
+ "data-readonly": dataAttr(readOnly),
813
+ "aria-label": "Pick a color from the screen",
814
+ onClick() {
815
+ if (!interactive) return;
816
+ send({ type: "EYEDROPPER.CLICK" });
817
+ }
818
+ });
819
+ },
820
+ getSwatchGroupProps() {
821
+ return normalize.element({
822
+ ...parts.swatchGroup.attrs,
823
+ role: "group"
824
+ });
825
+ },
826
+ getSwatchTriggerState,
827
+ getSwatchTriggerProps(props) {
828
+ const swatchState = getSwatchTriggerState(props);
829
+ return normalize.button({
830
+ ...parts.swatchTrigger.attrs,
831
+ disabled: swatchState.disabled,
832
+ dir: prop("dir"),
833
+ type: "button",
834
+ "aria-label": `select ${swatchState.valueAsString} as the color`,
835
+ "data-state": swatchState.checked ? "checked" : "unchecked",
836
+ "data-value": swatchState.valueAsString,
837
+ "data-disabled": dataAttr(swatchState.disabled),
838
+ onClick() {
839
+ if (swatchState.disabled) return;
840
+ send({
841
+ type: "SWATCH_TRIGGER.CLICK",
842
+ value: swatchState.value
843
+ });
844
+ },
845
+ style: {
846
+ "--color": swatchState.valueAsString,
847
+ position: "relative"
848
+ }
849
+ });
850
+ },
851
+ getSwatchIndicatorProps(props) {
852
+ const swatchState = getSwatchTriggerState(props);
853
+ return normalize.element({
854
+ ...parts.swatchIndicator.attrs,
855
+ dir: prop("dir"),
856
+ hidden: !swatchState.checked
857
+ });
858
+ },
859
+ getSwatchProps(props) {
860
+ const { respectAlpha = true } = props;
861
+ const swatchState = getSwatchTriggerState(props);
862
+ const color = swatchState.value.toString(respectAlpha ? "css" : "hex");
863
+ return normalize.element({
864
+ ...parts.swatch.attrs,
865
+ dir: prop("dir"),
866
+ "data-state": swatchState.checked ? "checked" : "unchecked",
867
+ "data-value": swatchState.valueAsString,
868
+ style: {
869
+ "--color": color,
870
+ position: "relative",
871
+ background: color
872
+ }
873
+ });
874
+ },
875
+ getFormatTriggerProps() {
876
+ return normalize.button({
877
+ ...parts.formatTrigger.attrs,
878
+ dir: prop("dir"),
879
+ type: "button",
880
+ "aria-label": `change color format to ${getNextFormat(format)}`,
881
+ onClick(event) {
882
+ if (event.currentTarget.disabled) return;
883
+ const nextFormat = getNextFormat(format);
884
+ send({
885
+ type: "FORMAT.SET",
886
+ format: nextFormat,
887
+ src: "format-trigger"
888
+ });
889
+ }
890
+ });
891
+ },
892
+ getFormatSelectProps() {
893
+ return normalize.select({
894
+ ...parts.formatSelect.attrs,
895
+ "aria-label": "change color format",
896
+ dir: prop("dir"),
897
+ defaultValue: prop("format"),
898
+ disabled,
899
+ onChange(event) {
900
+ const format = assertFormat(event.currentTarget.value);
901
+ send({
902
+ type: "FORMAT.SET",
903
+ format,
904
+ src: "format-select"
905
+ });
906
+ }
907
+ });
908
+ }
909
+ };
910
+ }
911
+ const formats = [
912
+ "hsba",
913
+ "hsla",
914
+ "rgba"
915
+ ];
916
+ const formatRegex = new RegExp(`^(${formats.join("|")})$`);
917
+ function getNextFormat(format) {
918
+ const index = formats.indexOf(format);
919
+ return formats[index + 1] ?? formats[0];
920
+ }
921
+ function assertFormat(format) {
922
+ if (formatRegex.test(format)) return format;
923
+ throw new Error(`Unsupported color format: ${format}`);
924
+ }
925
+ //#endregion
926
+ //#region src/machines/color-picker/parse.ts
927
+ const parse = (colorString) => {
928
+ return parseColor(colorString);
929
+ };
930
+ //#endregion
931
+ //#region src/machines/color-picker/utils/is-valid-hex.ts
932
+ const HEX_REGEX = /^[0-9a-fA-F]{3,8}$/;
933
+ function isValidHex(value) {
934
+ return HEX_REGEX.test(value);
935
+ }
936
+ function prefixHex(value) {
937
+ if (value.startsWith("#")) return value;
938
+ if (isValidHex(value)) return `#${value}`;
939
+ return value;
940
+ }
941
+ //#endregion
942
+ //#region src/machines/color-picker/machine.ts
943
+ const { and } = createGuards();
944
+ const hashObject = (obj) => {
945
+ let hash = "";
946
+ for (const key in obj) hash += `${key}:${obj[key] ?? ""};`;
947
+ return hash;
948
+ };
949
+ const DEFAULT_COLOR = parse("#000000");
950
+ const machine = createMachine({
951
+ props({ props }) {
952
+ const color = props.value ?? props.defaultValue ?? DEFAULT_COLOR;
953
+ return {
954
+ dir: "ltr",
955
+ defaultValue: DEFAULT_COLOR,
956
+ defaultFormat: color.getFormat(),
957
+ openAutoFocus: true,
958
+ ...props,
959
+ positioning: {
960
+ placement: "bottom",
961
+ ...props.positioning
962
+ }
963
+ };
964
+ },
965
+ initialState({ prop }) {
966
+ return prop("open") || prop("defaultOpen") || prop("inline") ? "open" : "idle";
967
+ },
968
+ context({ prop, bindable, getContext }) {
969
+ return {
970
+ value: bindable(() => ({
971
+ defaultValue: prop("defaultValue").toFormat(prop("format") ?? prop("defaultFormat")),
972
+ value: prop("value")?.toFormat(prop("format") ?? prop("defaultFormat")),
973
+ isEqual(a, b) {
974
+ return b != null && a.isEqual(b);
975
+ },
976
+ hash(a) {
977
+ return hashObject(a.toJSON());
978
+ },
979
+ onChange(value) {
980
+ const format = getContext().get("format");
981
+ prop("onValueChange")?.({
982
+ value,
983
+ valueAsString: value.toString(format)
984
+ });
985
+ }
986
+ })),
987
+ format: bindable(() => ({
988
+ defaultValue: prop("defaultFormat"),
989
+ value: prop("format"),
990
+ onChange(format) {
991
+ prop("onFormatChange")?.({ format });
992
+ }
993
+ })),
994
+ activeId: bindable(() => ({ defaultValue: null })),
995
+ activeChannel: bindable(() => ({ defaultValue: null })),
996
+ activeOrientation: bindable(() => ({ defaultValue: null })),
997
+ fieldsetDisabled: bindable(() => ({ defaultValue: false })),
998
+ restoreFocus: bindable(() => ({ defaultValue: true })),
999
+ currentPlacement: bindable(() => ({ defaultValue: void 0 }))
1000
+ };
1001
+ },
1002
+ computed: {
1003
+ rtl: ({ prop }) => prop("dir") === "rtl",
1004
+ disabled: ({ prop, context }) => !!prop("disabled") || context.get("fieldsetDisabled"),
1005
+ interactive: ({ prop }) => !(prop("disabled") || prop("readOnly")),
1006
+ valueAsString: ({ context }) => context.get("value").toString(context.get("format")),
1007
+ areaValue: ({ context }) => {
1008
+ const format = context.get("format").startsWith("hsl") ? "hsla" : "hsba";
1009
+ return context.get("value").toFormat(format);
1010
+ }
1011
+ },
1012
+ effects: ["trackFormControl"],
1013
+ watch({ prop, context, action, track }) {
1014
+ track([() => context.hash("value")], () => {
1015
+ action(["syncInputElements", "dispatchChangeEvent"]);
1016
+ });
1017
+ track([() => context.get("format")], () => {
1018
+ action(["syncFormatSelectElement", "syncValueWithFormat"]);
1019
+ });
1020
+ track([() => prop("open")], () => {
1021
+ action(["toggleVisibility"]);
1022
+ });
1023
+ },
1024
+ on: {
1025
+ "VALUE.SET": { actions: ["setValue"] },
1026
+ "FORMAT.SET": { actions: ["setFormat"] },
1027
+ "CHANNEL_INPUT.CHANGE": { actions: ["setChannelColorFromInput"] },
1028
+ "EYEDROPPER.CLICK": { actions: ["openEyeDropper"] },
1029
+ "SWATCH_TRIGGER.CLICK": { actions: ["setValue"] }
1030
+ },
1031
+ states: {
1032
+ idle: {
1033
+ tags: ["closed"],
1034
+ on: {
1035
+ "CONTROLLED.OPEN": {
1036
+ target: "open",
1037
+ actions: ["setInitialFocus"]
1038
+ },
1039
+ OPEN: [{
1040
+ guard: "isOpenControlled",
1041
+ actions: ["invokeOnOpen"]
1042
+ }, {
1043
+ target: "open",
1044
+ actions: ["invokeOnOpen", "setInitialFocus"]
1045
+ }],
1046
+ "TRIGGER.CLICK": [{
1047
+ guard: "isOpenControlled",
1048
+ actions: ["invokeOnOpen"]
1049
+ }, {
1050
+ target: "open",
1051
+ actions: ["invokeOnOpen", "setInitialFocus"]
1052
+ }],
1053
+ "CHANNEL_INPUT.FOCUS": {
1054
+ target: "focused",
1055
+ actions: ["setActiveChannel"]
1056
+ }
1057
+ }
1058
+ },
1059
+ focused: {
1060
+ id: "color-picker-focused",
1061
+ tags: ["closed", "focused"],
1062
+ on: {
1063
+ "CONTROLLED.OPEN": {
1064
+ target: "open",
1065
+ actions: ["setInitialFocus"]
1066
+ },
1067
+ OPEN: [{
1068
+ guard: "isOpenControlled",
1069
+ actions: ["invokeOnOpen"]
1070
+ }, {
1071
+ target: "open",
1072
+ actions: ["invokeOnOpen", "setInitialFocus"]
1073
+ }],
1074
+ "TRIGGER.CLICK": [{
1075
+ guard: "isOpenControlled",
1076
+ actions: ["invokeOnOpen"]
1077
+ }, {
1078
+ target: "open",
1079
+ actions: ["invokeOnOpen", "setInitialFocus"]
1080
+ }],
1081
+ "CHANNEL_INPUT.FOCUS": { actions: ["setActiveChannel"] },
1082
+ "CHANNEL_INPUT.BLUR": {
1083
+ target: "idle",
1084
+ actions: ["setChannelColorFromInput"]
1085
+ },
1086
+ "TRIGGER.BLUR": { target: "idle" }
1087
+ }
1088
+ },
1089
+ open: {
1090
+ tags: ["open"],
1091
+ effects: ["trackPositioning", "trackDismissableElement"],
1092
+ initial: "idle",
1093
+ on: {
1094
+ "CONTROLLED.CLOSE": [{
1095
+ guard: "shouldRestoreFocus",
1096
+ target: "focused",
1097
+ actions: ["setReturnFocus"]
1098
+ }, { target: "idle" }],
1099
+ INTERACT_OUTSIDE: [
1100
+ {
1101
+ guard: "isOpenControlled",
1102
+ actions: ["invokeOnClose"]
1103
+ },
1104
+ {
1105
+ guard: "shouldRestoreFocus",
1106
+ target: "focused",
1107
+ actions: ["invokeOnClose", "setReturnFocus"]
1108
+ },
1109
+ {
1110
+ target: "idle",
1111
+ actions: ["invokeOnClose"]
1112
+ }
1113
+ ],
1114
+ CLOSE: [{
1115
+ guard: "isOpenControlled",
1116
+ actions: ["invokeOnClose"]
1117
+ }, {
1118
+ target: "idle",
1119
+ actions: ["invokeOnClose"]
1120
+ }]
1121
+ },
1122
+ states: {
1123
+ idle: { on: {
1124
+ "TRIGGER.CLICK": [{
1125
+ guard: "isOpenControlled",
1126
+ actions: ["invokeOnClose"]
1127
+ }, {
1128
+ target: "#color-picker-focused",
1129
+ actions: ["invokeOnClose"]
1130
+ }],
1131
+ "AREA.POINTER_DOWN": {
1132
+ target: "dragging",
1133
+ actions: [
1134
+ "setActiveChannel",
1135
+ "setAreaColorFromPoint",
1136
+ "focusAreaThumb"
1137
+ ]
1138
+ },
1139
+ "AREA.FOCUS": { actions: ["setActiveChannel"] },
1140
+ "CHANNEL_SLIDER.POINTER_DOWN": {
1141
+ target: "dragging",
1142
+ actions: [
1143
+ "setActiveChannel",
1144
+ "setChannelColorFromPoint",
1145
+ "focusChannelThumb"
1146
+ ]
1147
+ },
1148
+ "CHANNEL_SLIDER.FOCUS": { actions: ["setActiveChannel"] },
1149
+ "AREA.ARROW_LEFT": { actions: ["decrementAreaXChannel"] },
1150
+ "AREA.ARROW_RIGHT": { actions: ["incrementAreaXChannel"] },
1151
+ "AREA.ARROW_UP": { actions: ["incrementAreaYChannel"] },
1152
+ "AREA.ARROW_DOWN": { actions: ["decrementAreaYChannel"] },
1153
+ "AREA.PAGE_UP": { actions: ["incrementAreaXChannel"] },
1154
+ "AREA.PAGE_DOWN": { actions: ["decrementAreaXChannel"] },
1155
+ "CHANNEL_SLIDER.ARROW_LEFT": { actions: ["decrementChannel"] },
1156
+ "CHANNEL_SLIDER.ARROW_RIGHT": { actions: ["incrementChannel"] },
1157
+ "CHANNEL_SLIDER.ARROW_UP": { actions: ["incrementChannel"] },
1158
+ "CHANNEL_SLIDER.ARROW_DOWN": { actions: ["decrementChannel"] },
1159
+ "CHANNEL_SLIDER.PAGE_UP": { actions: ["incrementChannel"] },
1160
+ "CHANNEL_SLIDER.PAGE_DOWN": { actions: ["decrementChannel"] },
1161
+ "CHANNEL_SLIDER.HOME": { actions: ["setChannelToMin"] },
1162
+ "CHANNEL_SLIDER.END": { actions: ["setChannelToMax"] },
1163
+ "CHANNEL_INPUT.BLUR": { actions: ["setChannelColorFromInput"] },
1164
+ "SWATCH_TRIGGER.CLICK": [
1165
+ {
1166
+ guard: and("isOpenControlled", "closeOnSelect"),
1167
+ actions: ["setValue", "invokeOnClose"]
1168
+ },
1169
+ {
1170
+ guard: "closeOnSelect",
1171
+ target: "focused",
1172
+ actions: [
1173
+ "setValue",
1174
+ "invokeOnClose",
1175
+ "setReturnFocus"
1176
+ ]
1177
+ },
1178
+ { actions: ["setValue"] }
1179
+ ]
1180
+ } },
1181
+ dragging: {
1182
+ tags: ["dragging"],
1183
+ exit: ["clearActiveChannel"],
1184
+ effects: ["trackPointerMove", "disableTextSelection"],
1185
+ on: {
1186
+ "AREA.POINTER_MOVE": { actions: ["setAreaColorFromPoint", "focusAreaThumb"] },
1187
+ "AREA.POINTER_UP": {
1188
+ target: "idle",
1189
+ actions: ["invokeOnChangeEnd"]
1190
+ },
1191
+ "CHANNEL_SLIDER.POINTER_MOVE": { actions: ["setChannelColorFromPoint", "focusChannelThumb"] },
1192
+ "CHANNEL_SLIDER.POINTER_UP": {
1193
+ target: "idle",
1194
+ actions: ["invokeOnChangeEnd"]
1195
+ }
1196
+ }
1197
+ }
1198
+ }
1199
+ }
1200
+ },
1201
+ implementations: {
1202
+ guards: {
1203
+ closeOnSelect: ({ prop }) => !!prop("closeOnSelect"),
1204
+ isOpenControlled: ({ prop }) => prop("open") != null || !!prop("inline"),
1205
+ shouldRestoreFocus: ({ context }) => !!context.get("restoreFocus")
1206
+ },
1207
+ effects: {
1208
+ trackPositioning({ context, prop, scope }) {
1209
+ if (prop("inline")) return;
1210
+ if (!context.get("currentPlacement")) context.set("currentPlacement", prop("positioning")?.placement);
1211
+ const anchorEl = getTriggerEl(scope);
1212
+ const getPositionerEl$1 = () => getPositionerEl(scope);
1213
+ return getPlacement(anchorEl, getPositionerEl$1, {
1214
+ ...prop("positioning"),
1215
+ defer: true,
1216
+ onComplete(data) {
1217
+ context.set("currentPlacement", data.placement);
1218
+ }
1219
+ });
1220
+ },
1221
+ trackDismissableElement({ context, scope, prop, send }) {
1222
+ if (prop("inline")) return;
1223
+ const getContentEl$1 = () => getContentEl(scope);
1224
+ return trackDismissableElement(getContentEl$1, {
1225
+ type: "popover",
1226
+ exclude: getTriggerEl(scope),
1227
+ defer: true,
1228
+ onInteractOutside(event) {
1229
+ prop("onInteractOutside")?.(event);
1230
+ if (event.defaultPrevented) return;
1231
+ context.set("restoreFocus", !(event.detail.focusable || event.detail.contextmenu));
1232
+ },
1233
+ onPointerDownOutside: prop("onPointerDownOutside"),
1234
+ onFocusOutside: prop("onFocusOutside"),
1235
+ onDismiss() {
1236
+ send({ type: "INTERACT_OUTSIDE" });
1237
+ }
1238
+ });
1239
+ },
1240
+ trackFormControl({ context, scope, send }) {
1241
+ return trackFormControl(getHiddenInputEl(scope), {
1242
+ onFieldsetDisabledChange(disabled) {
1243
+ context.set("fieldsetDisabled", disabled);
1244
+ },
1245
+ onFormReset() {
1246
+ send({
1247
+ type: "VALUE.SET",
1248
+ value: context.initial("value"),
1249
+ src: "form.reset"
1250
+ });
1251
+ }
1252
+ });
1253
+ },
1254
+ trackPointerMove({ context, scope, event, send }) {
1255
+ return trackPointerMove(scope.getDoc(), {
1256
+ onPointerMove({ point }) {
1257
+ send({
1258
+ type: context.get("activeId") === "area" ? "AREA.POINTER_MOVE" : "CHANNEL_SLIDER.POINTER_MOVE",
1259
+ point,
1260
+ format: event.format,
1261
+ orientation: context.get("activeOrientation") ?? void 0
1262
+ });
1263
+ },
1264
+ onPointerUp() {
1265
+ send({ type: context.get("activeId") === "area" ? "AREA.POINTER_UP" : "CHANNEL_SLIDER.POINTER_UP" });
1266
+ }
1267
+ });
1268
+ },
1269
+ disableTextSelection({ scope }) {
1270
+ return disableTextSelection({
1271
+ doc: scope.getDoc(),
1272
+ target: getContentEl(scope)
1273
+ });
1274
+ }
1275
+ },
1276
+ actions: {
1277
+ openEyeDropper({ scope, context, prop }) {
1278
+ const win = scope.getWin();
1279
+ if (!("EyeDropper" in win)) return;
1280
+ new win.EyeDropper().open().then(({ sRGBHex }) => {
1281
+ const format = context.get("value").getFormat();
1282
+ const color = parseColor(sRGBHex).toFormat(format);
1283
+ context.set("value", color);
1284
+ return color;
1285
+ }).then((value) => {
1286
+ prop("onValueChangeEnd")?.({
1287
+ value,
1288
+ valueAsString: value.toString(context.get("format"))
1289
+ });
1290
+ }).catch(() => void 0);
1291
+ },
1292
+ setActiveChannel({ context, event }) {
1293
+ context.set("activeId", event.id);
1294
+ if (event.channel) context.set("activeChannel", event.channel);
1295
+ if (event.orientation) context.set("activeOrientation", event.orientation);
1296
+ },
1297
+ clearActiveChannel({ context }) {
1298
+ context.set("activeChannel", null);
1299
+ context.set("activeId", null);
1300
+ context.set("activeOrientation", null);
1301
+ },
1302
+ setAreaColorFromPoint({ context, event, computed, scope, prop }) {
1303
+ const v = event.format ? context.get("value").toFormat(event.format) : computed("areaValue");
1304
+ const { xChannel, yChannel } = event.channel || context.get("activeChannel");
1305
+ const percent = getAreaValueFromPoint(scope, event.point, prop("dir"));
1306
+ if (!percent) return;
1307
+ const xValue = v.getChannelPercentValue(xChannel, percent.x);
1308
+ const yValue = v.getChannelPercentValue(yChannel, 1 - percent.y);
1309
+ const color = v.withChannelValue(xChannel, xValue).withChannelValue(yChannel, yValue);
1310
+ context.set("value", color);
1311
+ },
1312
+ setChannelColorFromPoint({ context, event, computed, scope, prop }) {
1313
+ const channel = event.channel || context.get("activeId");
1314
+ const normalizedValue = event.format ? context.get("value").toFormat(event.format) : computed("areaValue");
1315
+ const percent = getChannelSliderValueFromPoint(scope, event.point, channel, prop("dir"));
1316
+ if (!percent) return;
1317
+ const channelPercent = (event.orientation || context.get("activeOrientation") || "horizontal") === "horizontal" ? percent.x : percent.y;
1318
+ const value = normalizedValue.getChannelPercentValue(channel, channelPercent);
1319
+ const color = normalizedValue.withChannelValue(channel, value);
1320
+ context.set("value", color);
1321
+ },
1322
+ setValue({ context, event }) {
1323
+ const format = context.get("format");
1324
+ context.set("value", event.value.toFormat(format));
1325
+ },
1326
+ setFormat({ context, event }) {
1327
+ context.set("format", event.format);
1328
+ },
1329
+ dispatchChangeEvent({ scope, computed }) {
1330
+ dispatchInputValueEvent(getHiddenInputEl(scope), { value: computed("valueAsString") });
1331
+ },
1332
+ syncInputElements({ context, scope }) {
1333
+ syncChannelInputs(scope, context.get("value"));
1334
+ },
1335
+ invokeOnChangeEnd({ context, prop, computed }) {
1336
+ prop("onValueChangeEnd")?.({
1337
+ value: context.get("value"),
1338
+ valueAsString: computed("valueAsString")
1339
+ });
1340
+ },
1341
+ setChannelColorFromInput({ context, event, scope, prop }) {
1342
+ const { channel, isTextField, value } = event;
1343
+ const currentAlpha = context.get("value").getChannelValue("alpha");
1344
+ let color;
1345
+ if (channel === "alpha") {
1346
+ let valueAsNumber = parseFloat(value);
1347
+ valueAsNumber = Number.isNaN(valueAsNumber) ? currentAlpha : valueAsNumber;
1348
+ color = context.get("value").withChannelValue("alpha", valueAsNumber);
1349
+ } else if (isTextField) color = tryCatch(() => {
1350
+ return parse(channel === "hex" ? prefixHex(value) : value).withChannelValue("alpha", currentAlpha);
1351
+ }, () => context.get("value"));
1352
+ else {
1353
+ const current = context.get("value").toFormat(context.get("format"));
1354
+ const valueAsNumber = Number.isNaN(value) ? current.getChannelValue(channel) : value;
1355
+ color = current.withChannelValue(channel, valueAsNumber);
1356
+ }
1357
+ syncChannelInputs(scope, context.get("value"), color);
1358
+ context.set("value", color);
1359
+ prop("onValueChangeEnd")?.({
1360
+ value: color,
1361
+ valueAsString: color.toString(context.get("format"))
1362
+ });
1363
+ },
1364
+ incrementChannel({ context, event }) {
1365
+ const color = context.get("value").incrementChannel(event.channel, event.step);
1366
+ context.set("value", color);
1367
+ },
1368
+ decrementChannel({ context, event }) {
1369
+ const color = context.get("value").decrementChannel(event.channel, event.step);
1370
+ context.set("value", color);
1371
+ },
1372
+ incrementAreaXChannel({ context, event, computed }) {
1373
+ const { xChannel } = event.channel;
1374
+ const color = computed("areaValue").incrementChannel(xChannel, event.step);
1375
+ context.set("value", color);
1376
+ },
1377
+ decrementAreaXChannel({ context, event, computed }) {
1378
+ const { xChannel } = event.channel;
1379
+ const color = computed("areaValue").decrementChannel(xChannel, event.step);
1380
+ context.set("value", color);
1381
+ },
1382
+ incrementAreaYChannel({ context, event, computed }) {
1383
+ const { yChannel } = event.channel;
1384
+ const color = computed("areaValue").incrementChannel(yChannel, event.step);
1385
+ context.set("value", color);
1386
+ },
1387
+ decrementAreaYChannel({ context, event, computed }) {
1388
+ const { yChannel } = event.channel;
1389
+ const color = computed("areaValue").decrementChannel(yChannel, event.step);
1390
+ context.set("value", color);
1391
+ },
1392
+ setChannelToMax({ context, event }) {
1393
+ const value = context.get("value");
1394
+ const range = value.getChannelRange(event.channel);
1395
+ const color = value.withChannelValue(event.channel, range.maxValue);
1396
+ context.set("value", color);
1397
+ },
1398
+ setChannelToMin({ context, event }) {
1399
+ const value = context.get("value");
1400
+ const range = value.getChannelRange(event.channel);
1401
+ const color = value.withChannelValue(event.channel, range.minValue);
1402
+ context.set("value", color);
1403
+ },
1404
+ focusAreaThumb({ scope }) {
1405
+ raf(() => {
1406
+ getAreaThumbEl(scope)?.focus({ preventScroll: true });
1407
+ });
1408
+ },
1409
+ focusChannelThumb({ event, scope }) {
1410
+ raf(() => {
1411
+ getChannelSliderThumbEl(scope, event.channel)?.focus({ preventScroll: true });
1412
+ });
1413
+ },
1414
+ setInitialFocus({ prop, scope }) {
1415
+ if (!prop("openAutoFocus")) return;
1416
+ raf(() => {
1417
+ getInitialFocus({
1418
+ root: getContentEl(scope),
1419
+ getInitialEl: prop("initialFocusEl")
1420
+ })?.focus({ preventScroll: true });
1421
+ });
1422
+ },
1423
+ setReturnFocus({ scope }) {
1424
+ raf(() => {
1425
+ getTriggerEl(scope)?.focus({ preventScroll: true });
1426
+ });
1427
+ },
1428
+ syncFormatSelectElement({ context, scope }) {
1429
+ syncFormatSelect(scope, context.get("format"));
1430
+ },
1431
+ syncValueWithFormat({ context }) {
1432
+ const value = context.get("value");
1433
+ const newValue = value.toFormat(context.get("format"));
1434
+ if (newValue.isEqual(value)) return;
1435
+ context.set("value", newValue);
1436
+ },
1437
+ invokeOnOpen({ prop, context }) {
1438
+ if (prop("inline")) return;
1439
+ prop("onOpenChange")?.({
1440
+ open: true,
1441
+ value: context.get("value")
1442
+ });
1443
+ },
1444
+ invokeOnClose({ prop, context }) {
1445
+ if (prop("inline")) return;
1446
+ prop("onOpenChange")?.({
1447
+ open: false,
1448
+ value: context.get("value")
1449
+ });
1450
+ },
1451
+ toggleVisibility({ prop, event, send }) {
1452
+ send({
1453
+ type: prop("open") ? "CONTROLLED.OPEN" : "CONTROLLED.CLOSE",
1454
+ previousEvent: event
1455
+ });
1456
+ }
1457
+ }
1458
+ }
1459
+ });
1460
+ function syncChannelInputs(scope, currentValue, nextValue) {
1461
+ const channelInputEls = getChannelInputEls(scope);
1462
+ raf(() => {
1463
+ channelInputEls.forEach((inputEl) => {
1464
+ const channel = inputEl.dataset.channel;
1465
+ setElementValue(inputEl, getChannelValue(nextValue || currentValue, channel));
1466
+ });
1467
+ });
1468
+ }
1469
+ function syncFormatSelect(scope, format) {
1470
+ const selectEl = getFormatSelectEl(scope);
1471
+ if (!selectEl) return;
1472
+ raf(() => setElementValue(selectEl, format));
1473
+ }
1474
+ //#endregion
1475
+ //#region src/machines/color-picker/props.ts
1476
+ const props = createProps()([
1477
+ "closeOnSelect",
1478
+ "dir",
1479
+ "disabled",
1480
+ "format",
1481
+ "defaultFormat",
1482
+ "getRootNode",
1483
+ "id",
1484
+ "ids",
1485
+ "initialFocusEl",
1486
+ "inline",
1487
+ "name",
1488
+ "positioning",
1489
+ "onFocusOutside",
1490
+ "onFormatChange",
1491
+ "onInteractOutside",
1492
+ "onOpenChange",
1493
+ "onPointerDownOutside",
1494
+ "onValueChange",
1495
+ "onValueChangeEnd",
1496
+ "defaultOpen",
1497
+ "open",
1498
+ "positioning",
1499
+ "required",
1500
+ "readOnly",
1501
+ "value",
1502
+ "defaultValue",
1503
+ "invalid",
1504
+ "openAutoFocus"
1505
+ ]);
1506
+ const splitProps = createSplitProps(props);
1507
+ const areaProps = createProps()(["xChannel", "yChannel"]);
1508
+ const splitAreaProps = createSplitProps(areaProps);
1509
+ const channelProps = createProps()(["channel", "orientation"]);
1510
+ const splitChannelProps = createSplitProps(channelProps);
1511
+ const swatchTriggerProps = createProps()(["value", "disabled"]);
1512
+ const splitSwatchTriggerProps = createSplitProps(swatchTriggerProps);
1513
+ const swatchProps = createProps()(["value", "respectAlpha"]);
1514
+ const splitSwatchProps = createSplitProps(swatchProps);
1515
+ const transparencyGridProps = createProps()(["size"]);
1516
+ const splitTransparencyGridProps = createSplitProps(transparencyGridProps);
1517
+ //#endregion
1518
+ export { anatomy, areaProps, channelProps, connect, machine, parse, props, splitAreaProps, splitChannelProps, splitProps, splitSwatchProps, splitSwatchTriggerProps, splitTransparencyGridProps, swatchProps, swatchTriggerProps, transparencyGridProps };