@sprawlify/primitives 0.0.1

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 (378) hide show
  1. package/dist/anatomy.cjs +3 -0
  2. package/dist/anatomy.d.cts +2 -0
  3. package/dist/anatomy.d.mts +2 -0
  4. package/dist/anatomy.mjs +3 -0
  5. package/dist/aria-hidden-DqYx0f_y.mjs +177 -0
  6. package/dist/aria-hidden-DtLU6hSU.cjs +182 -0
  7. package/dist/aria-hidden.cjs +4 -0
  8. package/dist/aria-hidden.d.cts +16 -0
  9. package/dist/aria-hidden.d.mts +16 -0
  10. package/dist/aria-hidden.mjs +4 -0
  11. package/dist/auto-resize-D3qHtFy1.mjs +114 -0
  12. package/dist/auto-resize-xzlPFDyD.cjs +125 -0
  13. package/dist/auto-resize.cjs +5 -0
  14. package/dist/auto-resize.d.cts +17 -0
  15. package/dist/auto-resize.d.mts +17 -0
  16. package/dist/auto-resize.mjs +4 -0
  17. package/dist/chunk-CbDLau6x.cjs +34 -0
  18. package/dist/collection-8XqaNHs_.mjs +1279 -0
  19. package/dist/collection-DIoIDISa.cjs +1326 -0
  20. package/dist/collection.cjs +11 -0
  21. package/dist/collection.d.cts +5 -0
  22. package/dist/collection.d.mts +5 -0
  23. package/dist/collection.mjs +4 -0
  24. package/dist/color-BkAP1Tkd.d.mts +60 -0
  25. package/dist/color-VKewNv2e.d.cts +60 -0
  26. package/dist/color-utils-Cc5GVXZh.mjs +657 -0
  27. package/dist/color-utils-LER_6Zwu.cjs +680 -0
  28. package/dist/color-utils.cjs +7 -0
  29. package/dist/color-utils.d.cts +19 -0
  30. package/dist/color-utils.d.mts +19 -0
  31. package/dist/color-utils.mjs +4 -0
  32. package/dist/core-30pJjyC2.d.mts +49 -0
  33. package/dist/core-CQFbMdTl.cjs +176 -0
  34. package/dist/core-CefBjbst.d.cts +49 -0
  35. package/dist/core-DCFNMTZF.mjs +129 -0
  36. package/dist/core.cjs +12 -0
  37. package/dist/core.d.cts +3 -0
  38. package/dist/core.d.mts +3 -0
  39. package/dist/core.mjs +5 -0
  40. package/dist/create-anatomy-B3XYc-qG.d.mts +70 -0
  41. package/dist/create-anatomy-BGQ8pv8J.d.cts +70 -0
  42. package/dist/create-anatomy-BbDZbHpC.mjs +39 -0
  43. package/dist/create-anatomy-CDsIFUXg.cjs +45 -0
  44. package/dist/create-props-BnF_vl-E.mjs +5 -0
  45. package/dist/create-props-YKy7JIKj.cjs +11 -0
  46. package/dist/data-url-C3ITPVRX.d.cts +10 -0
  47. package/dist/data-url-DLwZ9M77.d.mts +10 -0
  48. package/dist/date-utils-D2xPHa_I.cjs +738 -0
  49. package/dist/date-utils-wEa1hhpc.mjs +474 -0
  50. package/dist/date-utils.cjs +46 -0
  51. package/dist/date-utils.d.cts +101 -0
  52. package/dist/date-utils.d.mts +2 -0
  53. package/dist/date-utils.mjs +3 -0
  54. package/dist/defineProperty-BoUOT9Ie.cjs +49 -0
  55. package/dist/defineProperty-DrXfyjd4.mjs +43 -0
  56. package/dist/dismissable-CTfKZ4OG.cjs +282 -0
  57. package/dist/dismissable-DDrx0xnH.mjs +271 -0
  58. package/dist/dismissable-layer-C7pZU2wi.d.cts +39 -0
  59. package/dist/dismissable-layer-t_b0fk-p.d.mts +39 -0
  60. package/dist/dismissable.cjs +7 -0
  61. package/dist/dismissable.d.cts +3 -0
  62. package/dist/dismissable.d.mts +3 -0
  63. package/dist/dismissable.mjs +6 -0
  64. package/dist/dom-query-CWZdWUGp.cjs +2141 -0
  65. package/dist/dom-query-DFCRhyj1.mjs +1374 -0
  66. package/dist/dom-query.cjs +130 -0
  67. package/dist/dom-query.d.cts +307 -0
  68. package/dist/dom-query.d.mts +307 -0
  69. package/dist/dom-query.mjs +3 -0
  70. package/dist/file-utils.cjs +220 -0
  71. package/dist/file-utils.d.cts +51 -0
  72. package/dist/file-utils.d.mts +51 -0
  73. package/dist/file-utils.mjs +210 -0
  74. package/dist/focus-trap-D-bypQEJ.mjs +485 -0
  75. package/dist/focus-trap-D4i52S9A.cjs +496 -0
  76. package/dist/focus-trap.cjs +5 -0
  77. package/dist/focus-trap.d.cts +88 -0
  78. package/dist/focus-trap.d.mts +88 -0
  79. package/dist/focus-trap.mjs +4 -0
  80. package/dist/focus-visible-DYTWdWpa.cjs +210 -0
  81. package/dist/focus-visible-irppYatv.mjs +175 -0
  82. package/dist/focus-visible.cjs +9 -0
  83. package/dist/focus-visible.d.cts +31 -0
  84. package/dist/focus-visible.d.mts +31 -0
  85. package/dist/focus-visible.mjs +4 -0
  86. package/dist/functions-BOkTDEFM.d.cts +15 -0
  87. package/dist/functions-IZtWcC8Q.d.mts +15 -0
  88. package/dist/highlight-word.cjs +100 -0
  89. package/dist/highlight-word.d.cts +24 -0
  90. package/dist/highlight-word.d.mts +24 -0
  91. package/dist/highlight-word.mjs +99 -0
  92. package/dist/hotkeys.cjs +758 -0
  93. package/dist/hotkeys.d.cts +130 -0
  94. package/dist/hotkeys.d.mts +130 -0
  95. package/dist/hotkeys.mjs +754 -0
  96. package/dist/i18n-utils.cjs +450 -0
  97. package/dist/i18n-utils.d.cts +61 -0
  98. package/dist/i18n-utils.d.mts +61 -0
  99. package/dist/i18n-utils.mjs +440 -0
  100. package/dist/index-BkzYij2j.d.mts +25 -0
  101. package/dist/index-Bqw3r34-.d.cts +1383 -0
  102. package/dist/index-C0MKXQmE.d.mts +1383 -0
  103. package/dist/index-C9-feK5c.d.cts +25 -0
  104. package/dist/index-CD5FN7kY.d.mts +114 -0
  105. package/dist/index-CJji6wHl.d.cts +15 -0
  106. package/dist/index-CNi5FkPe.d.mts +15 -0
  107. package/dist/index-D96rs8B0.d.mts +115 -0
  108. package/dist/index.cjs +0 -0
  109. package/dist/index.d.cts +1 -0
  110. package/dist/index.d.mts +1 -0
  111. package/dist/index.mjs +1 -0
  112. package/dist/interact-outside-BplxR9cR.mjs +200 -0
  113. package/dist/interact-outside-C8-oFBpB.cjs +205 -0
  114. package/dist/interact-outside.cjs +5 -0
  115. package/dist/interact-outside.d.cts +2 -0
  116. package/dist/interact-outside.d.mts +2 -0
  117. package/dist/interact-outside.mjs +5 -0
  118. package/dist/json-tree-utils.cjs +1512 -0
  119. package/dist/json-tree-utils.d.cts +117 -0
  120. package/dist/json-tree-utils.d.mts +117 -0
  121. package/dist/json-tree-utils.mjs +1463 -0
  122. package/dist/list-collection-BIMJGQjn.d.cts +61 -0
  123. package/dist/list-collection-Db3eixRU.d.mts +61 -0
  124. package/dist/live-region-CcZPGo89.cjs +52 -0
  125. package/dist/live-region-CnPh21WH.mjs +46 -0
  126. package/dist/live-region.cjs +3 -0
  127. package/dist/live-region.d.cts +2 -0
  128. package/dist/live-region.d.mts +2 -0
  129. package/dist/live-region.mjs +3 -0
  130. package/dist/machines/accordion/index.cjs +328 -0
  131. package/dist/machines/accordion/index.d.cts +83 -0
  132. package/dist/machines/accordion/index.d.mts +83 -0
  133. package/dist/machines/accordion/index.mjs +322 -0
  134. package/dist/machines/async-list/index.cjs +311 -0
  135. package/dist/machines/async-list/index.d.cts +89 -0
  136. package/dist/machines/async-list/index.d.mts +89 -0
  137. package/dist/machines/async-list/index.mjs +310 -0
  138. package/dist/machines/avatar/index.cjs +169 -0
  139. package/dist/machines/avatar/index.d.cts +63 -0
  140. package/dist/machines/avatar/index.d.mts +63 -0
  141. package/dist/machines/avatar/index.mjs +165 -0
  142. package/dist/machines/bottom-sheet/index.cjs +676 -0
  143. package/dist/machines/bottom-sheet/index.d.cts +239 -0
  144. package/dist/machines/bottom-sheet/index.d.mts +239 -0
  145. package/dist/machines/bottom-sheet/index.mjs +672 -0
  146. package/dist/machines/carousel/index.cjs +859 -0
  147. package/dist/machines/carousel/index.d.cts +146 -0
  148. package/dist/machines/carousel/index.d.mts +146 -0
  149. package/dist/machines/carousel/index.mjs +851 -0
  150. package/dist/machines/checkbox/index.cjs +316 -0
  151. package/dist/machines/checkbox/index.d.cts +81 -0
  152. package/dist/machines/checkbox/index.d.mts +81 -0
  153. package/dist/machines/checkbox/index.mjs +312 -0
  154. package/dist/machines/clipboard/index.cjs +225 -0
  155. package/dist/machines/clipboard/index.d.cts +68 -0
  156. package/dist/machines/clipboard/index.d.mts +68 -0
  157. package/dist/machines/clipboard/index.mjs +219 -0
  158. package/dist/machines/collapsible/index.cjs +362 -0
  159. package/dist/machines/collapsible/index.d.cts +82 -0
  160. package/dist/machines/collapsible/index.d.mts +82 -0
  161. package/dist/machines/collapsible/index.mjs +358 -0
  162. package/dist/machines/color-picker/index.cjs +1529 -0
  163. package/dist/machines/color-picker/index.d.cts +205 -0
  164. package/dist/machines/color-picker/index.d.mts +205 -0
  165. package/dist/machines/color-picker/index.mjs +1514 -0
  166. package/dist/machines/combobox/index.cjs +1593 -0
  167. package/dist/machines/combobox/index.d.cts +214 -0
  168. package/dist/machines/combobox/index.d.mts +214 -0
  169. package/dist/machines/combobox/index.mjs +1582 -0
  170. package/dist/machines/date-picker/index.cjs +2177 -0
  171. package/dist/machines/date-picker/index.d.cts +350 -0
  172. package/dist/machines/date-picker/index.d.mts +350 -0
  173. package/dist/machines/date-picker/index.mjs +2161 -0
  174. package/dist/machines/dialog/index.cjs +325 -0
  175. package/dist/machines/dialog/index.d.cts +80 -0
  176. package/dist/machines/dialog/index.d.mts +80 -0
  177. package/dist/machines/dialog/index.mjs +321 -0
  178. package/dist/machines/editable/index.cjs +551 -0
  179. package/dist/machines/editable/index.d.cts +114 -0
  180. package/dist/machines/editable/index.d.mts +114 -0
  181. package/dist/machines/editable/index.mjs +547 -0
  182. package/dist/machines/floating-panel/index.cjs +995 -0
  183. package/dist/machines/floating-panel/index.d.cts +147 -0
  184. package/dist/machines/floating-panel/index.d.mts +147 -0
  185. package/dist/machines/floating-panel/index.mjs +988 -0
  186. package/dist/machines/hover-card/index.cjs +383 -0
  187. package/dist/machines/hover-card/index.d.cts +69 -0
  188. package/dist/machines/hover-card/index.d.mts +69 -0
  189. package/dist/machines/hover-card/index.mjs +379 -0
  190. package/dist/machines/image-cropper/index.cjs +1995 -0
  191. package/dist/machines/image-cropper/index.d.cts +182 -0
  192. package/dist/machines/image-cropper/index.d.mts +182 -0
  193. package/dist/machines/image-cropper/index.mjs +1990 -0
  194. package/dist/machines/listbox/index.cjs +794 -0
  195. package/dist/machines/listbox/index.d.cts +168 -0
  196. package/dist/machines/listbox/index.d.mts +168 -0
  197. package/dist/machines/listbox/index.mjs +782 -0
  198. package/dist/machines/marquee/index.cjs +395 -0
  199. package/dist/machines/marquee/index.d.cts +102 -0
  200. package/dist/machines/marquee/index.d.mts +102 -0
  201. package/dist/machines/marquee/index.mjs +391 -0
  202. package/dist/machines/menu/index.cjs +1298 -0
  203. package/dist/machines/menu/index.d.cts +175 -0
  204. package/dist/machines/menu/index.d.mts +175 -0
  205. package/dist/machines/menu/index.mjs +1286 -0
  206. package/dist/machines/navigation-menu/index.cjs +861 -0
  207. package/dist/machines/navigation-menu/index.d.cts +127 -0
  208. package/dist/machines/navigation-menu/index.d.mts +127 -0
  209. package/dist/machines/navigation-menu/index.mjs +857 -0
  210. package/dist/machines/number-input/index.cjs +996 -0
  211. package/dist/machines/number-input/index.d.cts +134 -0
  212. package/dist/machines/number-input/index.d.mts +134 -0
  213. package/dist/machines/number-input/index.mjs +991 -0
  214. package/dist/machines/pagination/index.cjs +419 -0
  215. package/dist/machines/pagination/index.d.cts +139 -0
  216. package/dist/machines/pagination/index.d.mts +139 -0
  217. package/dist/machines/pagination/index.mjs +411 -0
  218. package/dist/machines/password-input/index.cjs +228 -0
  219. package/dist/machines/password-input/index.d.cts +71 -0
  220. package/dist/machines/password-input/index.d.mts +71 -0
  221. package/dist/machines/password-input/index.mjs +224 -0
  222. package/dist/machines/pin-input/index.cjs +523 -0
  223. package/dist/machines/pin-input/index.d.cts +105 -0
  224. package/dist/machines/pin-input/index.d.mts +105 -0
  225. package/dist/machines/pin-input/index.mjs +519 -0
  226. package/dist/machines/popover/index.cjs +430 -0
  227. package/dist/machines/popover/index.d.cts +88 -0
  228. package/dist/machines/popover/index.d.mts +88 -0
  229. package/dist/machines/popover/index.mjs +426 -0
  230. package/dist/machines/presence/index.cjs +192 -0
  231. package/dist/machines/presence/index.d.cts +44 -0
  232. package/dist/machines/presence/index.d.mts +44 -0
  233. package/dist/machines/presence/index.mjs +190 -0
  234. package/dist/machines/progress/index.cjs +288 -0
  235. package/dist/machines/progress/index.d.cts +96 -0
  236. package/dist/machines/progress/index.d.mts +96 -0
  237. package/dist/machines/progress/index.mjs +284 -0
  238. package/dist/machines/qr-code/index.cjs +172 -0
  239. package/dist/machines/qr-code/index.d.cts +70 -0
  240. package/dist/machines/qr-code/index.d.mts +70 -0
  241. package/dist/machines/qr-code/index.mjs +167 -0
  242. package/dist/machines/radio-group/index.cjs +436 -0
  243. package/dist/machines/radio-group/index.d.cts +106 -0
  244. package/dist/machines/radio-group/index.d.mts +106 -0
  245. package/dist/machines/radio-group/index.mjs +430 -0
  246. package/dist/machines/rating-group/index.cjs +405 -0
  247. package/dist/machines/rating-group/index.d.cts +101 -0
  248. package/dist/machines/rating-group/index.d.mts +101 -0
  249. package/dist/machines/rating-group/index.mjs +399 -0
  250. package/dist/machines/scroll-area/index.cjs +857 -0
  251. package/dist/machines/scroll-area/index.d.cts +159 -0
  252. package/dist/machines/scroll-area/index.d.mts +159 -0
  253. package/dist/machines/scroll-area/index.mjs +853 -0
  254. package/dist/machines/select/index.cjs +1165 -0
  255. package/dist/machines/select/index.d.cts +183 -0
  256. package/dist/machines/select/index.d.mts +183 -0
  257. package/dist/machines/select/index.mjs +1154 -0
  258. package/dist/machines/signature-pad/index.cjs +334 -0
  259. package/dist/machines/signature-pad/index.d.cts +108 -0
  260. package/dist/machines/signature-pad/index.d.mts +108 -0
  261. package/dist/machines/signature-pad/index.mjs +328 -0
  262. package/dist/machines/slider/index.cjs +957 -0
  263. package/dist/machines/slider/index.d.cts +149 -0
  264. package/dist/machines/slider/index.d.mts +149 -0
  265. package/dist/machines/slider/index.mjs +949 -0
  266. package/dist/machines/splitter/index.cjs +1112 -0
  267. package/dist/machines/splitter/index.d.cts +155 -0
  268. package/dist/machines/splitter/index.d.mts +155 -0
  269. package/dist/machines/splitter/index.mjs +1103 -0
  270. package/dist/machines/steps/index.cjs +289 -0
  271. package/dist/machines/steps/index.d.cts +97 -0
  272. package/dist/machines/steps/index.d.mts +97 -0
  273. package/dist/machines/steps/index.mjs +285 -0
  274. package/dist/machines/switch/index.cjs +305 -0
  275. package/dist/machines/switch/index.d.cts +80 -0
  276. package/dist/machines/switch/index.d.mts +80 -0
  277. package/dist/machines/switch/index.mjs +301 -0
  278. package/dist/machines/tabs/index.cjs +508 -0
  279. package/dist/machines/tabs/index.d.cts +111 -0
  280. package/dist/machines/tabs/index.d.mts +111 -0
  281. package/dist/machines/tabs/index.mjs +500 -0
  282. package/dist/machines/tags-input/index.cjs +1127 -0
  283. package/dist/machines/tags-input/index.d.cts +179 -0
  284. package/dist/machines/tags-input/index.d.mts +179 -0
  285. package/dist/machines/tags-input/index.mjs +1121 -0
  286. package/dist/machines/timer/index.cjs +329 -0
  287. package/dist/machines/timer/index.d.cts +98 -0
  288. package/dist/machines/timer/index.d.mts +98 -0
  289. package/dist/machines/timer/index.mjs +324 -0
  290. package/dist/machines/toast/index.cjs +1155 -0
  291. package/dist/machines/toast/index.d.cts +195 -0
  292. package/dist/machines/toast/index.d.mts +195 -0
  293. package/dist/machines/toast/index.mjs +1151 -0
  294. package/dist/machines/toggle/index.cjs +103 -0
  295. package/dist/machines/toggle/index.d.cts +46 -0
  296. package/dist/machines/toggle/index.d.mts +46 -0
  297. package/dist/machines/toggle/index.mjs +99 -0
  298. package/dist/machines/toggle-group/index.cjs +328 -0
  299. package/dist/machines/toggle-group/index.d.cts +81 -0
  300. package/dist/machines/toggle-group/index.d.mts +81 -0
  301. package/dist/machines/toggle-group/index.mjs +322 -0
  302. package/dist/machines/tooltip/index.cjs +516 -0
  303. package/dist/machines/tooltip/index.d.cts +71 -0
  304. package/dist/machines/tooltip/index.d.mts +71 -0
  305. package/dist/machines/tooltip/index.mjs +512 -0
  306. package/dist/machines/tour/index.cjs +1108 -0
  307. package/dist/machines/tour/index.d.cts +206 -0
  308. package/dist/machines/tour/index.d.mts +206 -0
  309. package/dist/machines/tour/index.mjs +1101 -0
  310. package/dist/machines/tree-view/index.cjs +1271 -0
  311. package/dist/machines/tree-view/index.d.cts +215 -0
  312. package/dist/machines/tree-view/index.d.mts +215 -0
  313. package/dist/machines/tree-view/index.mjs +1263 -0
  314. package/dist/node-BctU8GXk.d.mts +24 -0
  315. package/dist/node-CSsuPZVZ.d.cts +24 -0
  316. package/dist/popper-BPJeAtcA.mjs +349 -0
  317. package/dist/popper-D0FAW_p7.cjs +373 -0
  318. package/dist/popper.cjs +8 -0
  319. package/dist/popper.d.cts +74 -0
  320. package/dist/popper.d.mts +2 -0
  321. package/dist/popper.mjs +5 -0
  322. package/dist/raf-BnlYUlDi.d.mts +15 -0
  323. package/dist/raf-Cd2FGy0z.d.cts +15 -0
  324. package/dist/rect-utils-0ellN0a_.mjs +854 -0
  325. package/dist/rect-utils-DKLRhP8G.cjs +1147 -0
  326. package/dist/rect-utils.cjs +51 -0
  327. package/dist/rect-utils.d.cts +198 -0
  328. package/dist/rect-utils.d.mts +198 -0
  329. package/dist/rect-utils.mjs +3 -0
  330. package/dist/remove-scroll-Lrfv79X_.mjs +58 -0
  331. package/dist/remove-scroll-Uvzg1L9r.cjs +63 -0
  332. package/dist/remove-scroll.cjs +0 -0
  333. package/dist/remove-scroll.d.cts +1 -0
  334. package/dist/remove-scroll.d.mts +1 -0
  335. package/dist/remove-scroll.mjs +1 -0
  336. package/dist/scroll-snap-CrTmQRzA.mjs +152 -0
  337. package/dist/scroll-snap-zyiZLv7W.cjs +175 -0
  338. package/dist/scroll-snap.cjs +7 -0
  339. package/dist/scroll-snap.d.cts +14 -0
  340. package/dist/scroll-snap.d.mts +14 -0
  341. package/dist/scroll-snap.mjs +4 -0
  342. package/dist/selection-BIhSzkF7.d.mts +50 -0
  343. package/dist/selection-CS1GBp8e.d.cts +50 -0
  344. package/dist/store-BZcXv49B.cjs +305 -0
  345. package/dist/store-DEojWy9H.mjs +263 -0
  346. package/dist/store.cjs +9 -0
  347. package/dist/store.d.cts +26 -0
  348. package/dist/store.d.mts +26 -0
  349. package/dist/store.mjs +3 -0
  350. package/dist/stringify-state.cjs +49 -0
  351. package/dist/stringify-state.d.cts +8 -0
  352. package/dist/stringify-state.d.mts +8 -0
  353. package/dist/stringify-state.mjs +46 -0
  354. package/dist/tree-collection-BwU5WhGQ.d.mts +78 -0
  355. package/dist/tree-collection-DP_eznnI.d.cts +78 -0
  356. package/dist/typeahead-BdNwVP09.d.cts +45 -0
  357. package/dist/typeahead-XN6lZ7G9.d.mts +45 -0
  358. package/dist/types-BivBkYg9.d.cts +57 -0
  359. package/dist/types-Bl_6JtPQ.d.mts +57 -0
  360. package/dist/types-CPUMVt7c.d.mts +54 -0
  361. package/dist/types-CT_W6HWr.d.cts +54 -0
  362. package/dist/types-DDTcG99l.d.mts +201 -0
  363. package/dist/types-DejIu60O.d.cts +201 -0
  364. package/dist/types-DiIdKZ3K.d.cts +45 -0
  365. package/dist/types-GxLIgJib.d.cts +17 -0
  366. package/dist/types.cjs +15 -0
  367. package/dist/types.d.cts +2 -0
  368. package/dist/types.d.mts +2 -0
  369. package/dist/types.mjs +14 -0
  370. package/dist/utils-BZyrxWWR.mjs +525 -0
  371. package/dist/utils-_6frwjgJ.cjs +1040 -0
  372. package/dist/utils.cjs +88 -0
  373. package/dist/utils.d.cts +144 -0
  374. package/dist/utils.d.mts +144 -0
  375. package/dist/utils.mjs +3 -0
  376. package/dist/wait-for-CMjPsqWk.d.cts +10 -0
  377. package/dist/wait-for-D2nkdD4z.d.mts +10 -0
  378. package/package.json +399 -0
@@ -0,0 +1,857 @@
1
+ import { t as createAnatomy } from "../../create-anatomy-BbDZbHpC.mjs";
2
+ import { $ as getTabbables, Ct as isSelfTarget, L as navigate, S as queryAll, U as raf, Xt as contains, i as visuallyHiddenStyle, rn as getWindow, st as addDomEvent, vn as dataAttr } from "../../dom-query-DFCRhyj1.mjs";
3
+ import { H as toPx, W as callAll, n as ensureProps, u as createSplitProps } from "../../utils-BZyrxWWR.mjs";
4
+ import { o as setup } from "../../core-DCFNMTZF.mjs";
5
+ import "../../interact-outside-BplxR9cR.mjs";
6
+ import { n as trackDismissableElement } from "../../dismissable-DDrx0xnH.mjs";
7
+ import { t as createProps } from "../../create-props-BnF_vl-E.mjs";
8
+
9
+ //#region src/machines/navigation-menu/navigation-menu.anatomy.ts
10
+ const anatomy = createAnatomy("navigation-menu").parts("root", "viewportPositioner", "viewport", "trigger", "content", "list", "item", "link", "indicator", "itemIndicator", "arrow");
11
+ const parts = anatomy.build();
12
+
13
+ //#endregion
14
+ //#region src/machines/navigation-menu/navigation-menu.dom.ts
15
+ const getRootId = (ctx) => ctx.ids?.root ?? `navigation-menu:${ctx.id}`;
16
+ const getTriggerId = (ctx, value) => ctx.ids?.trigger?.(value) ?? `navigation-menu:${ctx.id}:trigger:${value}`;
17
+ const getTriggerProxyId = (ctx, value) => ctx.ids?.triggerProxy?.(value) ?? `navigation-menu:${ctx.id}:trigger-proxy:${value}`;
18
+ const getContentId = (ctx, value) => ctx.ids?.content?.(value) ?? `navigation-menu:${ctx.id}:content:${value}`;
19
+ const getViewportId = (ctx) => ctx.ids?.viewport ?? `navigation-menu:${ctx.id}:viewport`;
20
+ const getListId = (ctx) => ctx.ids?.list ?? `navigation-menu:${ctx.id}:list`;
21
+ const getItemId = (ctx, value) => ctx.ids?.item?.(value) ?? `navigation-menu:${ctx.id}:item:${value}`;
22
+ const getRootEl = (ctx) => ctx.getById(getRootId(ctx));
23
+ const getViewportEl = (ctx) => ctx.getById(getViewportId(ctx));
24
+ const getTriggerEl = (ctx, value) => {
25
+ if (!value) return null;
26
+ return ctx.getById(getTriggerId(ctx, value));
27
+ };
28
+ const getTriggerProxyEl = (ctx, value) => {
29
+ if (!value) return null;
30
+ return ctx.getById(getTriggerProxyId(ctx, value));
31
+ };
32
+ const getListEl = (ctx) => ctx.getById(getListId(ctx));
33
+ const getContentEl = (ctx, value) => {
34
+ if (!value) return null;
35
+ return ctx.getById(getContentId(ctx, value));
36
+ };
37
+ const getContentEls = (ctx) => queryAll(ctx.getDoc(), `[data-scope=navigation-menu][data-part=content][data-uid='${ctx.id}']`);
38
+ const getTabbableEls = (ctx, value) => {
39
+ return getTabbables(getContentEl(ctx, value));
40
+ };
41
+ const getTriggerEls = (ctx) => queryAll(getListEl(ctx), `[data-part=trigger][data-uid='${ctx.id}']`);
42
+ const getLinkEls = (ctx, value) => {
43
+ return queryAll(getContentEl(ctx, value), `[data-part=link][data-ownedby="${getContentId(ctx, value)}"]`);
44
+ };
45
+ const getElements = (ctx) => {
46
+ const topLevelTriggerSelector = `[data-part=trigger][data-uid='${ctx.id}']:not([data-disabled])`;
47
+ return queryAll(getListEl(ctx), `${topLevelTriggerSelector}, [data-part=item] > [data-part=link]`);
48
+ };
49
+ function trackResizeObserver(element, onResize) {
50
+ if (!element.length) return;
51
+ let frame = 0;
52
+ const obs = new (getWindow(element[0])).ResizeObserver(() => {
53
+ cancelAnimationFrame(frame);
54
+ frame = requestAnimationFrame(onResize);
55
+ });
56
+ element.forEach((el) => {
57
+ if (el) obs.observe(el);
58
+ });
59
+ return () => {
60
+ cancelAnimationFrame(frame);
61
+ element.forEach((el) => {
62
+ if (el) obs.unobserve(el);
63
+ });
64
+ };
65
+ }
66
+ function setMotionAttr(scope, value, previousValue) {
67
+ const triggers = getTriggerEls(scope);
68
+ const dir = triggers[0].dir;
69
+ let values = triggers.map((trigger) => trigger.getAttribute("data-value"));
70
+ if (dir === "rtl") values.reverse();
71
+ const index = values.indexOf(value);
72
+ const prevIndex = values.indexOf(previousValue);
73
+ getContentEls(scope).forEach((contentEl) => {
74
+ const itemValue = contentEl.dataset.value;
75
+ const selected = value === itemValue;
76
+ const prevSelected = prevIndex === values.indexOf(itemValue);
77
+ if (!selected && !prevSelected) {
78
+ delete contentEl.dataset.motion;
79
+ return;
80
+ }
81
+ const attribute = (() => {
82
+ if (index !== prevIndex) {
83
+ if (selected && prevIndex !== -1) return index > prevIndex ? "from-end" : "from-start";
84
+ if (prevSelected && index !== -1) return index > prevIndex ? "to-start" : "to-end";
85
+ }
86
+ return null;
87
+ })();
88
+ if (attribute) contentEl.dataset.motion = attribute;
89
+ else delete contentEl.dataset.motion;
90
+ });
91
+ }
92
+ function focusFirst(scope, candidates) {
93
+ const previouslyFocusedElement = scope.getActiveElement();
94
+ return candidates.some((candidate) => {
95
+ if (candidate === previouslyFocusedElement) return true;
96
+ candidate.focus();
97
+ return scope.getActiveElement() !== previouslyFocusedElement;
98
+ });
99
+ }
100
+ function removeFromTabOrder(candidates) {
101
+ candidates.forEach((candidate) => {
102
+ candidate.dataset.tabindex = candidate.getAttribute("tabindex") || "";
103
+ candidate.setAttribute("tabindex", "-1");
104
+ });
105
+ return () => {
106
+ candidates.forEach((candidate) => {
107
+ const prevTabIndex = candidate.dataset.tabindex;
108
+ candidate.setAttribute("tabindex", prevTabIndex);
109
+ });
110
+ };
111
+ }
112
+
113
+ //#endregion
114
+ //#region src/machines/navigation-menu/navigation-menu.connect.ts
115
+ function connect(service, normalize) {
116
+ const { context, send, prop, scope } = service;
117
+ const triggerRect = context.get("triggerRect");
118
+ const viewportSize = context.get("viewportSize");
119
+ const viewportPosition = context.get("viewportPosition");
120
+ const value = context.get("value");
121
+ const previousValue = context.get("previousValue");
122
+ const open = Boolean(value);
123
+ const isViewportRendered = context.get("isViewportRendered");
124
+ const preventTransition = value && !previousValue;
125
+ function getItemState(props$1) {
126
+ const selected = value === props$1.value;
127
+ const wasSelected = !value && previousValue === props$1.value;
128
+ return {
129
+ itemId: getItemId(scope, props$1.value),
130
+ triggerId: getTriggerId(scope, props$1.value),
131
+ triggerProxyId: getTriggerProxyId(scope, props$1.value),
132
+ contentId: getContentId(scope, props$1.value),
133
+ selected,
134
+ wasSelected,
135
+ open: selected || wasSelected,
136
+ disabled: !!props$1.disabled
137
+ };
138
+ }
139
+ return {
140
+ open,
141
+ value,
142
+ orientation: prop("orientation"),
143
+ isViewportRendered,
144
+ getViewportNode() {
145
+ return getViewportEl(scope);
146
+ },
147
+ setValue(value$1) {
148
+ send({
149
+ type: "VALUE.SET",
150
+ value: value$1
151
+ });
152
+ },
153
+ reposition() {
154
+ send({ type: "VIEWPORT.POSITION" });
155
+ },
156
+ getRootProps() {
157
+ return normalize.element({
158
+ ...parts.root.attrs,
159
+ id: getRootId(scope),
160
+ "aria-label": "Main Navigation",
161
+ "data-orientation": prop("orientation"),
162
+ dir: prop("dir"),
163
+ style: {
164
+ "--trigger-width": toPx(triggerRect?.width),
165
+ "--trigger-height": toPx(triggerRect?.height),
166
+ "--trigger-x": toPx(triggerRect?.x),
167
+ "--trigger-y": toPx(triggerRect?.y),
168
+ "--viewport-width": toPx(viewportSize?.width),
169
+ "--viewport-height": toPx(viewportSize?.height),
170
+ "--viewport-x": toPx(viewportPosition?.x),
171
+ "--viewport-y": toPx(viewportPosition?.y)
172
+ }
173
+ });
174
+ },
175
+ getListProps() {
176
+ return normalize.element({
177
+ ...parts.list.attrs,
178
+ id: getListId(scope),
179
+ dir: prop("dir"),
180
+ "data-orientation": prop("orientation"),
181
+ style: { position: "relative" }
182
+ });
183
+ },
184
+ getItemProps(props$1) {
185
+ const itemState = getItemState(props$1);
186
+ return normalize.element({
187
+ ...parts.item.attrs,
188
+ id: itemState.itemId,
189
+ dir: prop("dir"),
190
+ "data-value": props$1.value,
191
+ "data-state": itemState.open ? "open" : "closed",
192
+ "data-orientation": prop("orientation"),
193
+ "data-disabled": dataAttr(itemState.disabled),
194
+ onKeyDown(event) {
195
+ switch (event.key) {
196
+ case "ArrowDown":
197
+ case "ArrowUp":
198
+ case "ArrowLeft":
199
+ case "ArrowRight":
200
+ case "Home":
201
+ case "End":
202
+ send({
203
+ type: "ITEM.NAVIGATE",
204
+ value: props$1.value,
205
+ key: event.key
206
+ });
207
+ event.preventDefault();
208
+ event.stopPropagation();
209
+ break;
210
+ default: break;
211
+ }
212
+ }
213
+ });
214
+ },
215
+ getIndicatorProps() {
216
+ return normalize.element({
217
+ ...parts.indicator.attrs,
218
+ "aria-hidden": true,
219
+ dir: prop("dir"),
220
+ hidden: !open,
221
+ "data-state": open ? "open" : "closed",
222
+ "data-orientation": prop("orientation"),
223
+ style: {
224
+ position: "absolute",
225
+ transition: preventTransition ? "none" : void 0
226
+ }
227
+ });
228
+ },
229
+ getArrowProps() {
230
+ return normalize.element({
231
+ ...parts.arrow.attrs,
232
+ "aria-hidden": true,
233
+ dir: prop("dir"),
234
+ "data-orientation": prop("orientation")
235
+ });
236
+ },
237
+ getTriggerProps(props$1) {
238
+ const itemState = getItemState(props$1);
239
+ return normalize.button({
240
+ ...parts.trigger.attrs,
241
+ id: itemState.triggerId,
242
+ "data-uid": prop("id"),
243
+ "data-trigger-proxy-id": getTriggerProxyId(scope, props$1.value),
244
+ dir: prop("dir"),
245
+ disabled: itemState.disabled,
246
+ "data-value": props$1.value,
247
+ "data-state": itemState.selected ? "open" : "closed",
248
+ "data-disabled": dataAttr(itemState.disabled),
249
+ "aria-controls": itemState.contentId,
250
+ "aria-expanded": itemState.selected,
251
+ onPointerEnter(event) {
252
+ if (prop("disableHoverTrigger")) return;
253
+ if (event.pointerType !== "mouse") return;
254
+ if (itemState.disabled) return;
255
+ send({
256
+ type: "TRIGGER.POINTERENTER",
257
+ value: props$1.value
258
+ });
259
+ },
260
+ onPointerLeave(event) {
261
+ if (prop("disableHoverTrigger")) return;
262
+ if (event.pointerType !== "mouse") return;
263
+ if (itemState.disabled) return;
264
+ send({
265
+ type: "TRIGGER.POINTERLEAVE",
266
+ value: props$1.value
267
+ });
268
+ },
269
+ onClick() {
270
+ if (prop("disableClickTrigger")) return;
271
+ send({
272
+ type: "TRIGGER.CLICK",
273
+ value: props$1.value
274
+ });
275
+ },
276
+ onKeyDown(event) {
277
+ const entryKey = {
278
+ horizontal: "ArrowDown",
279
+ vertical: prop("dir") === "rtl" ? "ArrowLeft" : "ArrowRight"
280
+ }[prop("orientation")];
281
+ if (open && event.key === entryKey) {
282
+ send({
283
+ type: "CONTENT.FOCUS",
284
+ side: "start"
285
+ });
286
+ event.preventDefault();
287
+ event.stopPropagation();
288
+ return;
289
+ }
290
+ const elements = getElements(scope);
291
+ const currentElement = event.currentTarget;
292
+ const nextElement = navigate(elements, currentElement, {
293
+ key: event.key,
294
+ orientation: prop("orientation"),
295
+ dir: prop("dir"),
296
+ loop: false
297
+ });
298
+ if (nextElement) {
299
+ nextElement.focus();
300
+ event.preventDefault();
301
+ event.stopPropagation();
302
+ }
303
+ }
304
+ });
305
+ },
306
+ getTriggerProxyProps(props$1) {
307
+ const itemState = getItemState(props$1);
308
+ return normalize.element({
309
+ "aria-hidden": true,
310
+ tabIndex: 0,
311
+ "data-trigger-proxy": "",
312
+ id: itemState.triggerProxyId,
313
+ "data-trigger-id": itemState.triggerId,
314
+ hidden: !itemState.selected,
315
+ style: visuallyHiddenStyle,
316
+ onFocus(event) {
317
+ const contentEl = getContentEl(scope, props$1.value);
318
+ if (!contentEl) return;
319
+ const prevFocusedEl = event.relatedTarget;
320
+ const wasTriggerFocused = prevFocusedEl === getTriggerEl(scope, props$1.value);
321
+ const wasFocusFromContent = contains(contentEl, prevFocusedEl);
322
+ if (wasTriggerFocused || !wasFocusFromContent) send({
323
+ type: "CONTENT.FOCUS",
324
+ side: wasTriggerFocused ? "start" : "end"
325
+ });
326
+ }
327
+ });
328
+ },
329
+ getViewportProxyProps(props$1) {
330
+ if (!getItemState(props$1).selected || !isViewportRendered) return { hidden: true };
331
+ return normalize.element({ "aria-owns": getContentId(scope, props$1.value) });
332
+ },
333
+ getLinkProps(props$1) {
334
+ const { closeOnClick = true } = props$1;
335
+ return normalize.element({
336
+ ...parts.link.attrs,
337
+ dir: prop("dir"),
338
+ "data-value": props$1.value,
339
+ "data-current": dataAttr(props$1.current),
340
+ "aria-current": props$1.current ? "page" : void 0,
341
+ "data-ownedby": getContentId(scope, props$1.value),
342
+ onClick(event) {
343
+ const target = event.currentTarget;
344
+ const win = getWindow(target);
345
+ const onSelect = props$1.onSelect;
346
+ target.addEventListener("link.select", onSelect, { once: true });
347
+ const linkSelectEvent = new win.CustomEvent("link.select", {
348
+ bubbles: true,
349
+ cancelable: true,
350
+ detail: { originalEvent: event }
351
+ });
352
+ target.dispatchEvent(linkSelectEvent);
353
+ if (closeOnClick && !linkSelectEvent.defaultPrevented && !event.metaKey) send({ type: "CLOSE" });
354
+ },
355
+ onKeyDown(event) {
356
+ const currentElement = event.currentTarget;
357
+ const nextElement = navigate(currentElement.closest("[data-scope=\"navigation-menu\"][data-part=\"content\"]") ? getLinkEls(scope, props$1.value) : getElements(scope), currentElement, {
358
+ key: event.key,
359
+ orientation: prop("orientation"),
360
+ dir: prop("dir"),
361
+ loop: false
362
+ });
363
+ if (nextElement) {
364
+ nextElement.focus();
365
+ event.preventDefault();
366
+ event.stopPropagation();
367
+ }
368
+ }
369
+ });
370
+ },
371
+ getContentProps(props$1) {
372
+ const itemState = getItemState(props$1);
373
+ const currentValue = context.get("value") || context.get("previousValue");
374
+ const selected = isViewportRendered ? currentValue === props$1.value : itemState.selected;
375
+ return normalize.element({
376
+ ...parts.content.attrs,
377
+ id: itemState.contentId,
378
+ dir: prop("dir"),
379
+ hidden: !selected,
380
+ "aria-labelledby": itemState.triggerId,
381
+ "data-uid": prop("id"),
382
+ "data-state": selected ? "open" : "closed",
383
+ "data-orientation": prop("orientation"),
384
+ "data-value": props$1.value,
385
+ onPointerEnter(event) {
386
+ if (event.pointerType !== "mouse") return;
387
+ send({
388
+ type: "CONTENT.POINTERENTER",
389
+ value: props$1.value
390
+ });
391
+ },
392
+ onPointerLeave(event) {
393
+ if (event.pointerType !== "mouse") return;
394
+ send({
395
+ type: "CONTENT.POINTERLEAVE",
396
+ value: props$1.value
397
+ });
398
+ },
399
+ onKeyDown(event) {
400
+ if (event.defaultPrevented) return;
401
+ if (event.currentTarget.closest("[data-scope=navigation-menu][data-part=root]") !== getRootEl(scope)) return;
402
+ const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;
403
+ const isTabKey = event.key === "Tab" && !isMetaKey;
404
+ const candidates = getTabbables(event.currentTarget);
405
+ if (isTabKey) {
406
+ const focusedElement = scope.getActiveElement();
407
+ const index = candidates.findIndex((candidate) => candidate === focusedElement);
408
+ const nextCandidates = event.shiftKey ? candidates.slice(0, index).reverse() : candidates.slice(index + 1, candidates.length);
409
+ if (focusFirst(scope, nextCandidates)) event.preventDefault();
410
+ else {
411
+ getTriggerProxyEl(scope, props$1.value)?.focus();
412
+ return;
413
+ }
414
+ }
415
+ if (!isSelfTarget(event)) return;
416
+ const el = navigate(candidates, scope.getActiveElement(), {
417
+ key: event.key,
418
+ dir: prop("dir"),
419
+ loop: false
420
+ });
421
+ if (el) {
422
+ el.focus();
423
+ event.preventDefault();
424
+ event.stopPropagation();
425
+ }
426
+ }
427
+ });
428
+ },
429
+ getViewportPositionerProps(props$1 = {}) {
430
+ const { align = "center" } = props$1;
431
+ return normalize.element({
432
+ ...parts.viewportPositioner.attrs,
433
+ dir: prop("dir"),
434
+ "data-orientation": prop("orientation"),
435
+ "data-align": align
436
+ });
437
+ },
438
+ getViewportProps(props$1 = {}) {
439
+ const { align = "center" } = props$1;
440
+ const open$1 = Boolean(value);
441
+ return normalize.element({
442
+ ...parts.viewport.attrs,
443
+ id: getViewportId(scope),
444
+ dir: prop("dir"),
445
+ hidden: !open$1,
446
+ "data-state": open$1 ? "open" : "closed",
447
+ "data-orientation": prop("orientation"),
448
+ "data-align": align,
449
+ style: {
450
+ transition: preventTransition ? "none" : void 0,
451
+ pointerEvents: !open$1 ? "none" : void 0,
452
+ "--viewport-width": toPx(viewportSize?.width),
453
+ "--viewport-height": toPx(viewportSize?.height),
454
+ "--viewport-x": toPx(viewportPosition?.x),
455
+ "--viewport-y": toPx(viewportPosition?.y)
456
+ },
457
+ onPointerEnter() {
458
+ send({ type: "CONTENT.POINTERENTER" });
459
+ },
460
+ onPointerLeave(event) {
461
+ if (prop("disablePointerLeaveClose")) return;
462
+ if (event.pointerType !== "mouse") return;
463
+ send({ type: "CONTENT.POINTERLEAVE" });
464
+ }
465
+ });
466
+ },
467
+ getItemState,
468
+ getItemIndicatorProps(props$1) {
469
+ const itemState = getItemState(props$1);
470
+ return normalize.element({
471
+ ...parts.itemIndicator.attrs,
472
+ "aria-hidden": true,
473
+ dir: prop("dir"),
474
+ hidden: !itemState.selected,
475
+ "data-state": itemState.selected ? "open" : "closed",
476
+ "data-orientation": prop("orientation"),
477
+ "data-value": props$1.value
478
+ });
479
+ }
480
+ };
481
+ }
482
+
483
+ //#endregion
484
+ //#region src/machines/navigation-menu/navigation-menu.utils.ts
485
+ function setCloseTimeout(refs, context, prop) {
486
+ clearCloseTimeout(refs);
487
+ const closeTimeoutId = window.setTimeout(() => {
488
+ context.set("value", "");
489
+ }, prop("closeDelay"));
490
+ refs.set("closeTimeoutId", closeTimeoutId);
491
+ }
492
+ function clearCloseTimeout(refs) {
493
+ const closeTimeoutId = refs.get("closeTimeoutId");
494
+ if (closeTimeoutId) {
495
+ clearTimeout(closeTimeoutId);
496
+ refs.set("closeTimeoutId", null);
497
+ }
498
+ }
499
+ function setOpenTimeout(refs, value, timeoutId) {
500
+ const openTimeoutIds = refs.get("openTimeoutIds");
501
+ refs.set("openTimeoutIds", {
502
+ ...openTimeoutIds,
503
+ [value]: timeoutId
504
+ });
505
+ }
506
+ function clearOpenTimeout(refs, value) {
507
+ const openTimeoutIds = refs.get("openTimeoutIds");
508
+ const timeoutId = openTimeoutIds[value];
509
+ if (timeoutId) {
510
+ clearTimeout(timeoutId);
511
+ const { ...rest } = openTimeoutIds;
512
+ refs.set("openTimeoutIds", rest);
513
+ }
514
+ }
515
+ function clearAllOpenTimeouts(refs) {
516
+ const openTimeoutIds = refs.get("openTimeoutIds");
517
+ Object.values(openTimeoutIds).forEach((timeoutId) => {
518
+ if (timeoutId) clearTimeout(timeoutId);
519
+ });
520
+ refs.set("openTimeoutIds", {});
521
+ }
522
+
523
+ //#endregion
524
+ //#region src/machines/navigation-menu/navigation-menu.machine.ts
525
+ const { createMachine } = setup();
526
+ const machine = createMachine({
527
+ props({ props: props$1 }) {
528
+ ensureProps(props$1, ["id"]);
529
+ return {
530
+ dir: "ltr",
531
+ openDelay: 200,
532
+ closeDelay: 300,
533
+ orientation: "horizontal",
534
+ defaultValue: "",
535
+ ...props$1
536
+ };
537
+ },
538
+ context({ prop, bindable }) {
539
+ return {
540
+ value: bindable(() => ({
541
+ defaultValue: prop("defaultValue"),
542
+ value: prop("value"),
543
+ sync: true,
544
+ onChange(value) {
545
+ prop("onValueChange")?.({ value });
546
+ }
547
+ })),
548
+ previousValue: bindable(() => ({
549
+ defaultValue: "",
550
+ sync: true
551
+ })),
552
+ viewportSize: bindable(() => ({
553
+ defaultValue: null,
554
+ sync: true
555
+ })),
556
+ isViewportRendered: bindable(() => ({ defaultValue: false })),
557
+ viewportPosition: bindable(() => ({ defaultValue: null })),
558
+ contentNode: bindable(() => ({ defaultValue: null })),
559
+ triggerRect: bindable(() => ({
560
+ defaultValue: null,
561
+ sync: true
562
+ })),
563
+ triggerNode: bindable(() => ({ defaultValue: null }))
564
+ };
565
+ },
566
+ computed: { open: ({ context }) => context.get("value") != null },
567
+ watch({ track, action, context }) {
568
+ track([() => context.get("value")], () => {
569
+ action([
570
+ "restoreTabOrder",
571
+ "setTriggerNode",
572
+ "syncContentNode",
573
+ "syncMotionAttribute"
574
+ ]);
575
+ });
576
+ },
577
+ refs() {
578
+ return {
579
+ restoreContentTabOrder: void 0,
580
+ contentResizeObserverCleanup: void 0,
581
+ contentDismissableCleanup: void 0,
582
+ contentExitCompleteCleanup: void 0,
583
+ triggerResizeObserverCleanup: void 0,
584
+ closeTimeoutId: null,
585
+ openTimeoutIds: {}
586
+ };
587
+ },
588
+ entry: ["checkViewportNode"],
589
+ exit: ["cleanupObservers"],
590
+ effects: ["trackDocumentResize"],
591
+ initialState() {
592
+ return "idle";
593
+ },
594
+ on: {
595
+ "VALUE.SET": { actions: ["setValue"] },
596
+ "VIEWPORT.POSITION": { actions: ["setViewportPosition"] },
597
+ "TRIGGER.POINTERENTER": { actions: ["clearCloseTimeout", "setValueWithDelay"] },
598
+ "TRIGGER.POINTERLEAVE": [{ actions: ["setCloseTimeout", "resetValueWithDelay"] }],
599
+ "TRIGGER.CLICK": [{
600
+ guard: "isItemOpen",
601
+ actions: ["deselectValue"]
602
+ }, { actions: ["selectValue"] }],
603
+ "CONTENT.FOCUS": { actions: ["restoreTabOrder", "focusFirstTabbableEl"] },
604
+ "CONTENT.BLUR": { actions: ["removeFromTabOrder"] },
605
+ "CONTENT.POINTERENTER": { actions: ["clearCloseTimeout"] },
606
+ "CONTENT.POINTERLEAVE": { actions: ["setCloseTimeout"] },
607
+ "ITEM.NAVIGATE": { actions: ["focusNextLink"] },
608
+ "ITEM.CLOSE": { actions: ["focusTrigger", "deselectValue"] },
609
+ CLOSE: { actions: [
610
+ "clearAllOpenTimeouts",
611
+ "deselectValue",
612
+ "focusTriggerIfNeeded",
613
+ "removeFromTabOrder"
614
+ ] }
615
+ },
616
+ states: { idle: {} },
617
+ implementations: {
618
+ guards: { isItemOpen: ({ context, event }) => context.get("value") === event.value },
619
+ effects: { trackDocumentResize({ scope, send }) {
620
+ const doc = scope.getDoc();
621
+ return trackResizeObserver([doc.body, getRootEl(scope)], () => {
622
+ send({ type: "VIEWPORT.POSITION" });
623
+ });
624
+ } },
625
+ actions: {
626
+ setValue({ context, event }) {
627
+ context.set("value", event.value);
628
+ },
629
+ clearCloseTimeout({ refs }) {
630
+ clearCloseTimeout(refs);
631
+ },
632
+ clearAllOpenTimeouts({ refs }) {
633
+ clearAllOpenTimeouts(refs);
634
+ },
635
+ setCloseTimeout({ refs, context, prop }) {
636
+ setCloseTimeout(refs, context, prop);
637
+ },
638
+ resetValueWithDelay({ event, refs }) {
639
+ clearOpenTimeout(refs, event.value);
640
+ },
641
+ setValueWithDelay({ event, prop, context, refs }) {
642
+ const shouldSkipDelay = context.get("value") !== "";
643
+ const openTimeoutId = window.setTimeout(() => {
644
+ setTimeout(() => {
645
+ context.set("previousValue", context.get("value"));
646
+ context.set("value", event.value);
647
+ });
648
+ }, shouldSkipDelay ? 0 : prop("openDelay"));
649
+ setOpenTimeout(refs, event.value, openTimeoutId);
650
+ },
651
+ selectValue: ({ context, event }) => {
652
+ context.set("previousValue", context.get("value"));
653
+ context.set("value", event.value);
654
+ },
655
+ deselectValue: ({ context }) => {
656
+ context.set("value", "");
657
+ context.set("previousValue", "");
658
+ },
659
+ syncContentNode({ context, scope, refs, send }) {
660
+ refs.get("contentResizeObserverCleanup")?.();
661
+ refs.get("contentDismissableCleanup")?.();
662
+ refs.get("contentExitCompleteCleanup")?.();
663
+ const previousValue = context.get("previousValue");
664
+ if (previousValue) {
665
+ const previousContentEl = getContentEl(scope, previousValue);
666
+ const viewportEl = getViewportEl(scope);
667
+ if (previousContentEl) {
668
+ const onExitComplete = () => context.set("previousValue", "");
669
+ refs.set("contentExitCompleteCleanup", callAll(addDomEvent(previousContentEl, "exitcomplete", onExitComplete), addDomEvent(viewportEl, "exitcomplete", onExitComplete)));
670
+ }
671
+ }
672
+ const contentEl = getContentEl(scope, context.get("value"));
673
+ if (!contentEl) return;
674
+ context.set("contentNode", contentEl);
675
+ if (context.get("isViewportRendered")) {
676
+ const contentResizeObserver = trackResizeObserver([contentEl], () => {
677
+ const contentEl$1 = getContentEl(scope, context.get("value"));
678
+ if (!contentEl$1) return;
679
+ context.set("viewportSize", {
680
+ width: contentEl$1.offsetWidth,
681
+ height: contentEl$1.offsetHeight
682
+ });
683
+ send({ type: "VIEWPORT.POSITION" });
684
+ });
685
+ refs.set("contentResizeObserverCleanup", contentResizeObserver);
686
+ }
687
+ const getContentEl$1 = () => {
688
+ return getViewportEl(scope) || getContentEl(scope, context.get("value"));
689
+ };
690
+ const contentDismissable = trackDismissableElement(getContentEl$1, {
691
+ defer: true,
692
+ onFocusOutside(event) {
693
+ const target = event.detail.target;
694
+ if (target.matches("[data-scope=navigation-menu][data-part=trigger]") || target.matches("[data-trigger-proxy]")) event.preventDefault();
695
+ if (!event.defaultPrevented) {
696
+ send({ type: "CONTENT.BLUR" });
697
+ if (contains(getRootEl(scope), target)) event.preventDefault();
698
+ }
699
+ },
700
+ onPointerDownOutside(event) {
701
+ const target = event.detail.target;
702
+ if (!event.defaultPrevented) {
703
+ const isTrigger = getTriggerEls(scope).some((node) => node.contains(target));
704
+ const isRootViewport = contains(getViewportEl(scope), target);
705
+ if (isTrigger || isRootViewport) event.preventDefault();
706
+ }
707
+ },
708
+ onDismiss() {
709
+ send({
710
+ type: "CLOSE",
711
+ value: context.get("value")
712
+ });
713
+ }
714
+ });
715
+ refs.set("contentDismissableCleanup", contentDismissable);
716
+ },
717
+ setTriggerNode({ context, scope, refs }) {
718
+ refs.get("triggerResizeObserverCleanup")?.();
719
+ const node = getTriggerEl(scope, context.get("value"));
720
+ if (!node) return;
721
+ context.set("triggerNode", node);
722
+ const exec = () => {
723
+ const rect = {
724
+ x: node.offsetLeft,
725
+ y: node.offsetTop,
726
+ width: node.offsetWidth,
727
+ height: node.offsetHeight
728
+ };
729
+ context.set("triggerRect", rect);
730
+ };
731
+ const listEl = getListEl(scope);
732
+ const triggerResizeObserver = trackResizeObserver([node, listEl], exec);
733
+ refs.set("triggerResizeObserverCleanup", triggerResizeObserver);
734
+ },
735
+ syncMotionAttribute({ context, scope }) {
736
+ if (!context.get("isViewportRendered")) return;
737
+ setMotionAttr(scope, context.get("value"), context.get("previousValue"));
738
+ },
739
+ focusFirstTabbableEl({ event, scope, context }) {
740
+ raf(() => {
741
+ const value = event.value || context.get("value");
742
+ const candidates = getTabbableEls(scope, value);
743
+ const elements = event.side === "start" ? candidates : candidates.reverse();
744
+ if (elements.length) focusFirst(scope, elements);
745
+ });
746
+ },
747
+ focusNextLink({ event, scope }) {
748
+ const activeEl = scope.getActiveElement();
749
+ const linkEls = getLinkEls(scope, event.value);
750
+ if (activeEl == null || !linkEls.includes(activeEl)) return;
751
+ navigate(linkEls, activeEl, {
752
+ key: event.key,
753
+ loop: false
754
+ })?.focus();
755
+ },
756
+ focusTrigger({ scope, event, context }) {
757
+ const value = event.value ?? context.get("value");
758
+ getTriggerEl(scope, value)?.focus();
759
+ },
760
+ focusTriggerIfNeeded({ event, scope }) {
761
+ const value = event.value;
762
+ if (!contains(getContentEl(scope, value), scope.getActiveElement())) return;
763
+ getTriggerEl(scope, value)?.focus();
764
+ },
765
+ removeFromTabOrder({ event, scope, refs, context }) {
766
+ const value = event.value ?? context.get("value");
767
+ const candidates = getTabbableEls(scope, value);
768
+ if (candidates.length) refs.set("restoreContentTabOrder", removeFromTabOrder(candidates));
769
+ },
770
+ restoreTabOrder({ refs }) {
771
+ refs.get("restoreContentTabOrder")?.();
772
+ },
773
+ cleanupObservers({ refs }) {
774
+ refs.get("contentResizeObserverCleanup")?.();
775
+ refs.get("contentDismissableCleanup")?.();
776
+ refs.get("triggerResizeObserverCleanup")?.();
777
+ refs.get("restoreContentTabOrder")?.();
778
+ refs.get("contentExitCompleteCleanup")?.();
779
+ },
780
+ checkViewportNode({ context, scope }) {
781
+ context.set("isViewportRendered", !!getViewportEl(scope));
782
+ },
783
+ setViewportPosition({ context, scope }) {
784
+ const triggerNode = context.get("triggerNode");
785
+ const contentNode = context.get("contentNode");
786
+ const rootEl = getRootEl(scope);
787
+ const doc = scope.getDoc();
788
+ const align = getViewportEl(scope)?.dataset.align || "center";
789
+ if (contentNode && triggerNode && rootEl) {
790
+ const bodyWidth = doc.documentElement.offsetWidth;
791
+ const bodyHeight = doc.documentElement.offsetHeight;
792
+ const rootRect = rootEl.getBoundingClientRect();
793
+ const triggerRect = triggerNode.getBoundingClientRect();
794
+ const { offsetWidth, offsetHeight } = contentNode;
795
+ const startPositionLeft = triggerRect.left - rootRect.left;
796
+ const startPositionTop = triggerRect.top - rootRect.top;
797
+ let x = null;
798
+ let y = null;
799
+ switch (align) {
800
+ case "start":
801
+ x = startPositionLeft;
802
+ y = startPositionTop;
803
+ break;
804
+ case "end":
805
+ x = startPositionLeft - offsetWidth + triggerRect.width;
806
+ y = startPositionTop - offsetHeight + triggerRect.height;
807
+ break;
808
+ default:
809
+ x = startPositionLeft - offsetWidth / 2 + triggerRect.width / 2;
810
+ y = startPositionTop - offsetHeight / 2 + triggerRect.height / 2;
811
+ }
812
+ const screenOffset = 10;
813
+ if (x + rootRect.left < screenOffset) x = screenOffset - rootRect.left;
814
+ const rightOffset = x + rootRect.left + offsetWidth;
815
+ if (rightOffset > bodyWidth - screenOffset) {
816
+ x -= rightOffset - bodyWidth + screenOffset;
817
+ if (x < screenOffset - rootRect.left) x = screenOffset - rootRect.left;
818
+ }
819
+ if (y + rootRect.top < screenOffset) y = screenOffset - rootRect.top;
820
+ const bottomOffset = y + rootRect.top + offsetHeight;
821
+ if (bottomOffset > bodyHeight - screenOffset) {
822
+ y -= bottomOffset - bodyHeight + screenOffset;
823
+ if (y < screenOffset - rootRect.top) y = screenOffset - rootRect.top;
824
+ }
825
+ x = Math.round(x);
826
+ y = Math.round(y);
827
+ context.set("viewportPosition", {
828
+ x,
829
+ y
830
+ });
831
+ }
832
+ }
833
+ }
834
+ }
835
+ });
836
+
837
+ //#endregion
838
+ //#region src/machines/navigation-menu/navigation-menu.props.ts
839
+ const props = createProps()([
840
+ "id",
841
+ "dir",
842
+ "getRootNode",
843
+ "value",
844
+ "defaultValue",
845
+ "onValueChange",
846
+ "openDelay",
847
+ "closeDelay",
848
+ "orientation",
849
+ "ids",
850
+ "disableClickTrigger",
851
+ "disableHoverTrigger",
852
+ "disablePointerLeaveClose"
853
+ ]);
854
+ const splitProps = createSplitProps(props);
855
+
856
+ //#endregion
857
+ export { anatomy, connect, machine, props, splitProps };