@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,1103 @@
1
+ import { t as createAnatomy } from "../../create-anatomy-BbDZbHpC.mjs";
2
+ import { S as queryAll, T as trackPointerMove, lt as getEventKey, ut as getEventPoint, vn as dataAttr, yt as isLeftClick } from "../../dom-query-DFCRhyj1.mjs";
3
+ import { Dt as prev, dt as isEqual, n as ensureProps, s as setRafTimeout, t as ensure, u as createSplitProps, wt as next } from "../../utils-BZyrxWWR.mjs";
4
+ import { a as createMachine } from "../../core-DCFNMTZF.mjs";
5
+ import { t as createProps } from "../../create-props-BnF_vl-E.mjs";
6
+
7
+ //#region src/machines/splitter/splitter.anatomy.ts
8
+ const anatomy = createAnatomy("splitter").parts("root", "panel", "resizeTrigger", "resizeTriggerIndicator");
9
+ const parts = anatomy.build();
10
+
11
+ //#endregion
12
+ //#region src/machines/splitter/splitter.dom.ts
13
+ const getRootId = (ctx) => ctx.ids?.root ?? `splitter:${ctx.id}`;
14
+ const getResizeTriggerId = (ctx, id) => ctx.ids?.resizeTrigger?.(id) ?? `splitter:${ctx.id}:resize-trigger:${id}`;
15
+ const getPanelId = (ctx, id) => ctx.ids?.panel?.(id) ?? `splitter:${ctx.id}:panel:${id}`;
16
+ const getGlobalCursorId = (ctx) => `splitter:${ctx.id}:global-cursor`;
17
+ const getRootEl = (ctx) => ctx.getById(getRootId(ctx));
18
+ const getResizeTriggerEl = (ctx, id) => ctx.getById(getResizeTriggerId(ctx, id));
19
+ const getCursor = (state, x) => {
20
+ let cursor = x ? "col-resize" : "row-resize";
21
+ if (state.isAtMin) cursor = x ? "e-resize" : "s-resize";
22
+ if (state.isAtMax) cursor = x ? "w-resize" : "n-resize";
23
+ return cursor;
24
+ };
25
+ const getResizeTriggerEls = (ctx) => {
26
+ return queryAll(getRootEl(ctx), `[role=separator][data-ownedby='${CSS.escape(getRootId(ctx))}']`);
27
+ };
28
+ const setupGlobalCursor = (ctx, state, x, nonce) => {
29
+ const styleEl = ctx.getById(getGlobalCursorId(ctx));
30
+ const textContent = `* { cursor: ${getCursor(state, x)} !important; }`;
31
+ if (styleEl) styleEl.textContent = textContent;
32
+ else {
33
+ const style = ctx.getDoc().createElement("style");
34
+ if (nonce) style.nonce = nonce;
35
+ style.id = getGlobalCursorId(ctx);
36
+ style.textContent = textContent;
37
+ ctx.getDoc().head.appendChild(style);
38
+ }
39
+ };
40
+ const removeGlobalCursor = (ctx) => {
41
+ ctx.getById(getGlobalCursorId(ctx))?.remove();
42
+ };
43
+
44
+ //#endregion
45
+ //#region src/machines/splitter/utils/aria.ts
46
+ function calculateAriaValues({ size, panels, pivotIndices }) {
47
+ let currentMinSize = 0;
48
+ let currentMaxSize = 100;
49
+ let totalMinSize = 0;
50
+ let totalMaxSize = 0;
51
+ const firstIndex = pivotIndices[0];
52
+ ensure(firstIndex, () => "No pivot index found");
53
+ panels.forEach((panel, index) => {
54
+ const { maxSize = 100, minSize = 0 } = panel;
55
+ if (index === firstIndex) {
56
+ currentMinSize = minSize;
57
+ currentMaxSize = maxSize;
58
+ } else {
59
+ totalMinSize += minSize;
60
+ totalMaxSize += maxSize;
61
+ }
62
+ });
63
+ return {
64
+ valueMax: Math.min(currentMaxSize, 100 - totalMinSize),
65
+ valueMin: Math.max(currentMinSize, 100 - totalMaxSize),
66
+ valueNow: size[firstIndex]
67
+ };
68
+ }
69
+ function getAriaValue(size, panels, handleId) {
70
+ const [beforeId, afterId] = handleId.split(":");
71
+ const { valueMax, valueMin, valueNow } = calculateAriaValues({
72
+ size,
73
+ panels,
74
+ pivotIndices: [panels.findIndex((panel) => panel.id === beforeId), panels.findIndex((panel) => panel.id === afterId)]
75
+ });
76
+ return {
77
+ beforeId,
78
+ afterId,
79
+ valueMax: Math.round(valueMax),
80
+ valueMin: Math.round(valueMin),
81
+ valueNow: valueNow != null ? Math.round(valueNow) : void 0
82
+ };
83
+ }
84
+
85
+ //#endregion
86
+ //#region src/machines/splitter/utils/fuzzy.ts
87
+ const PRECISION = 10;
88
+ function fuzzyCompareNumbers(actual, expected, fractionDigits = PRECISION) {
89
+ if (actual.toFixed(fractionDigits) === expected.toFixed(fractionDigits)) return 0;
90
+ else return actual > expected ? 1 : -1;
91
+ }
92
+ function fuzzyNumbersEqual(actual, expected, fractionDigits = PRECISION) {
93
+ if (actual == null || expected == null) return false;
94
+ return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;
95
+ }
96
+ function fuzzySizeEqual(actual, expected, fractionDigits) {
97
+ if (actual.length !== expected.length) return false;
98
+ for (let index = 0; index < actual.length; index++) {
99
+ const actualSize = actual[index];
100
+ const expectedSize = expected[index];
101
+ if (!fuzzyNumbersEqual(actualSize, expectedSize, fractionDigits)) return false;
102
+ }
103
+ return true;
104
+ }
105
+
106
+ //#endregion
107
+ //#region src/machines/splitter/utils/panel.ts
108
+ function getPanelById(panels, id) {
109
+ const panel = panels.find((panel$1) => panel$1.id === id);
110
+ ensure(panel, () => `Panel data not found for id "${id}"`);
111
+ return panel;
112
+ }
113
+ function findPanelDataIndex(panels, panel) {
114
+ return panels.findIndex((prevPanel) => prevPanel === panel || prevPanel.id === panel.id);
115
+ }
116
+ function findPanelIndex(panels, id) {
117
+ return panels.findIndex((panel) => panel.id === id);
118
+ }
119
+ function panelDataHelper(panels, panel, sizes) {
120
+ const index = findPanelIndex(panels, panel.id);
121
+ const pivotIndices = index === panels.length - 1 ? [index - 1, index] : [index, index + 1];
122
+ const panelSize = sizes[index];
123
+ return {
124
+ ...panel,
125
+ panelSize,
126
+ pivotIndices
127
+ };
128
+ }
129
+ function sortPanels(panels) {
130
+ return panels.sort((panelA, panelB) => {
131
+ const orderA = panelA.order;
132
+ const orderB = panelB.order;
133
+ if (orderA == null && orderB == null) return 0;
134
+ else if (orderA == null) return -1;
135
+ else if (orderB == null) return 1;
136
+ else return orderA - orderB;
137
+ });
138
+ }
139
+ function getPanelLayout(panels) {
140
+ return panels.map((panel) => panel.id).sort().join(":");
141
+ }
142
+ function serializePanels(panels) {
143
+ return panels.map((panel) => panel.id).sort().map((key) => {
144
+ const panel = panels.find((panel$1) => panel$1.id === key);
145
+ return JSON.stringify(panel);
146
+ }).join(",");
147
+ }
148
+ function getPanelFlexBoxStyle({ defaultSize, dragState, sizes, panels, panelIndex, precision = 3 }) {
149
+ const size = sizes[panelIndex];
150
+ let flexGrow;
151
+ if (size == null) flexGrow = defaultSize != void 0 ? defaultSize.toPrecision(precision) : "1";
152
+ else if (panels.length === 1) flexGrow = "1";
153
+ else flexGrow = size.toPrecision(precision);
154
+ return {
155
+ flexBasis: 0,
156
+ flexGrow,
157
+ flexShrink: 1,
158
+ overflow: "hidden",
159
+ pointerEvents: dragState !== null ? "none" : void 0
160
+ };
161
+ }
162
+ function getUnsafeDefaultSize({ panels, size: sizes }) {
163
+ const finalSizes = Array(panels.length);
164
+ let numPanelsWithSizes = 0;
165
+ let remainingSize = 100;
166
+ for (let index = 0; index < panels.length; index++) {
167
+ const panel = panels[index];
168
+ ensure(panel, () => `Panel data not found for index ${index}`);
169
+ const defaultSize = sizes[index];
170
+ if (defaultSize != null) {
171
+ numPanelsWithSizes++;
172
+ finalSizes[index] = defaultSize;
173
+ remainingSize -= defaultSize;
174
+ }
175
+ }
176
+ for (let index = 0; index < panels.length; index++) {
177
+ const panel = panels[index];
178
+ ensure(panel, () => `Panel data not found for index ${index}`);
179
+ if (sizes[index] != null) continue;
180
+ const numRemainingPanels = panels.length - numPanelsWithSizes;
181
+ const size = remainingSize / numRemainingPanels;
182
+ numPanelsWithSizes++;
183
+ finalSizes[index] = size;
184
+ remainingSize -= size;
185
+ }
186
+ return finalSizes;
187
+ }
188
+
189
+ //#endregion
190
+ //#region src/machines/splitter/splitter.connect.ts
191
+ function connect(service, normalize) {
192
+ const { state, send, prop, computed, context, scope } = service;
193
+ const horizontal = computed("horizontal");
194
+ const dragging = state.matches("dragging");
195
+ const orientation = prop("orientation");
196
+ const getPanelStyle = (id) => {
197
+ const panels = prop("panels");
198
+ const panelIndex = panels.findIndex((panel) => panel.id === id);
199
+ const defaultSize = context.initial("size")[panelIndex];
200
+ return getPanelFlexBoxStyle({
201
+ defaultSize,
202
+ dragState: context.get("dragState"),
203
+ sizes: context.get("size"),
204
+ panels,
205
+ panelIndex
206
+ });
207
+ };
208
+ const getResizeTriggerState = (props$1) => {
209
+ const { id, disabled } = props$1;
210
+ const dragging$1 = context.get("dragState")?.resizeTriggerId === id;
211
+ return {
212
+ dragging: dragging$1,
213
+ focused: dragging$1 || context.get("keyboardState")?.resizeTriggerId === id,
214
+ disabled: !!disabled
215
+ };
216
+ };
217
+ return {
218
+ dragging,
219
+ orientation,
220
+ getPanels() {
221
+ return prop("panels");
222
+ },
223
+ getPanelById(id) {
224
+ return getPanelById(prop("panels"), id);
225
+ },
226
+ getItems() {
227
+ return prop("panels").flatMap((panel, index, arr) => {
228
+ const nextPanel = arr[index + 1];
229
+ if (panel && nextPanel) return [{
230
+ type: "panel",
231
+ id: panel.id
232
+ }, {
233
+ type: "handle",
234
+ id: `${panel.id}:${nextPanel.id}`
235
+ }];
236
+ return [{
237
+ type: "panel",
238
+ id: panel.id
239
+ }];
240
+ });
241
+ },
242
+ getSizes() {
243
+ return context.get("size");
244
+ },
245
+ setSizes(size) {
246
+ send({
247
+ type: "SIZE.SET",
248
+ size
249
+ });
250
+ },
251
+ resetSizes() {
252
+ send({
253
+ type: "SIZE.SET",
254
+ size: context.initial("size")
255
+ });
256
+ },
257
+ collapsePanel(id) {
258
+ send({
259
+ type: "PANEL.COLLAPSE",
260
+ id
261
+ });
262
+ },
263
+ expandPanel(id, minSize) {
264
+ send({
265
+ type: "PANEL.EXPAND",
266
+ id,
267
+ minSize
268
+ });
269
+ },
270
+ resizePanel(id, unsafePanelSize) {
271
+ send({
272
+ type: "PANEL.RESIZE",
273
+ id,
274
+ size: unsafePanelSize
275
+ });
276
+ },
277
+ getPanelSize(id) {
278
+ const panels = prop("panels");
279
+ const size = context.get("size");
280
+ const panelData = getPanelById(panels, id);
281
+ const { panelSize } = panelDataHelper(panels, panelData, size);
282
+ ensure(panelSize, () => `Panel size not found for panel "${panelData.id}"`);
283
+ return panelSize;
284
+ },
285
+ isPanelCollapsed(id) {
286
+ const panels = prop("panels");
287
+ const size = context.get("size");
288
+ const panelData = getPanelById(panels, id);
289
+ const { collapsedSize = 0, collapsible, panelSize } = panelDataHelper(panels, panelData, size);
290
+ ensure(panelSize, () => `Panel size not found for panel "${panelData.id}"`);
291
+ return collapsible === true && fuzzyNumbersEqual(panelSize, collapsedSize);
292
+ },
293
+ isPanelExpanded(id) {
294
+ const panels = prop("panels");
295
+ const size = context.get("size");
296
+ const panelData = getPanelById(panels, id);
297
+ const { collapsedSize = 0, collapsible, panelSize } = panelDataHelper(panels, panelData, size);
298
+ ensure(panelSize, () => `Panel size not found for panel "${panelData.id}"`);
299
+ return !collapsible || fuzzyCompareNumbers(panelSize, collapsedSize) > 0;
300
+ },
301
+ getLayout() {
302
+ return getPanelLayout(prop("panels"));
303
+ },
304
+ getRootProps() {
305
+ return normalize.element({
306
+ ...parts.root.attrs,
307
+ "data-orientation": orientation,
308
+ "data-dragging": dataAttr(dragging),
309
+ id: getRootId(scope),
310
+ dir: prop("dir"),
311
+ style: {
312
+ display: "flex",
313
+ flexDirection: horizontal ? "row" : "column",
314
+ height: "100%",
315
+ width: "100%",
316
+ overflow: "hidden"
317
+ }
318
+ });
319
+ },
320
+ getPanelProps(props$1) {
321
+ const { id } = props$1;
322
+ return normalize.element({
323
+ ...parts.panel.attrs,
324
+ "data-orientation": orientation,
325
+ "data-dragging": dataAttr(dragging),
326
+ dir: prop("dir"),
327
+ "data-id": id,
328
+ "data-index": findPanelIndex(prop("panels"), id),
329
+ id: getPanelId(scope, id),
330
+ "data-ownedby": getRootId(scope),
331
+ style: getPanelStyle(id)
332
+ });
333
+ },
334
+ getResizeTriggerState,
335
+ getResizeTriggerIndicator(props$1) {
336
+ const triggerState = getResizeTriggerState(props$1);
337
+ return normalize.element({
338
+ ...parts.resizeTriggerIndicator.attrs,
339
+ "data-orientation": orientation,
340
+ "data-focus": dataAttr(triggerState.focused),
341
+ "data-dragging": dataAttr(triggerState.dragging),
342
+ "data-disabled": dataAttr(triggerState.disabled),
343
+ "data-ownedby": getRootId(scope)
344
+ });
345
+ },
346
+ getResizeTriggerProps(props$1) {
347
+ const { id } = props$1;
348
+ const triggerState = getResizeTriggerState(props$1);
349
+ const aria = getAriaValue(context.get("size"), prop("panels"), id);
350
+ return normalize.element({
351
+ ...parts.resizeTrigger.attrs,
352
+ dir: prop("dir"),
353
+ id: getResizeTriggerId(scope, id),
354
+ role: "separator",
355
+ "data-id": id,
356
+ "data-ownedby": getRootId(scope),
357
+ tabIndex: triggerState.disabled ? void 0 : 0,
358
+ "aria-valuenow": aria.valueNow,
359
+ "aria-valuemin": aria.valueMin,
360
+ "aria-valuemax": aria.valueMax,
361
+ "data-orientation": orientation,
362
+ "aria-orientation": orientation,
363
+ "aria-controls": `${getPanelId(scope, aria.beforeId)} ${getPanelId(scope, aria.afterId)}`,
364
+ "data-focus": dataAttr(triggerState.focused),
365
+ "data-dragging": dataAttr(triggerState.dragging),
366
+ "data-disabled": dataAttr(triggerState.disabled),
367
+ style: {
368
+ touchAction: "none",
369
+ userSelect: "none",
370
+ WebkitUserSelect: "none",
371
+ flex: "0 0 auto",
372
+ pointerEvents: triggerState.disabled ? "none" : triggerState.dragging && !triggerState.focused ? "none" : void 0,
373
+ cursor: triggerState.disabled ? void 0 : horizontal ? "col-resize" : "row-resize",
374
+ [horizontal ? "minHeight" : "minWidth"]: "0"
375
+ },
376
+ onPointerDown(event) {
377
+ if (!isLeftClick(event)) return;
378
+ if (triggerState.disabled) {
379
+ event.preventDefault();
380
+ return;
381
+ }
382
+ send({
383
+ type: "POINTER_DOWN",
384
+ id,
385
+ point: getEventPoint(event)
386
+ });
387
+ event.currentTarget.setPointerCapture(event.pointerId);
388
+ event.preventDefault();
389
+ event.stopPropagation();
390
+ },
391
+ onPointerUp(event) {
392
+ if (triggerState.disabled) return;
393
+ if (event.currentTarget.hasPointerCapture(event.pointerId)) event.currentTarget.releasePointerCapture(event.pointerId);
394
+ },
395
+ onPointerOver() {
396
+ if (triggerState.disabled) return;
397
+ send({
398
+ type: "POINTER_OVER",
399
+ id
400
+ });
401
+ },
402
+ onPointerLeave() {
403
+ if (triggerState.disabled) return;
404
+ send({
405
+ type: "POINTER_LEAVE",
406
+ id
407
+ });
408
+ },
409
+ onBlur() {
410
+ if (triggerState.disabled) return;
411
+ send({ type: "BLUR" });
412
+ },
413
+ onFocus() {
414
+ if (triggerState.disabled) return;
415
+ send({
416
+ type: "FOCUS",
417
+ id
418
+ });
419
+ },
420
+ onKeyDown(event) {
421
+ if (event.defaultPrevented) return;
422
+ if (triggerState.disabled) return;
423
+ const keyboardResizeBy = prop("keyboardResizeBy");
424
+ let delta = 0;
425
+ if (event.shiftKey) delta = 10;
426
+ else if (keyboardResizeBy != null) delta = keyboardResizeBy;
427
+ else delta = 1;
428
+ const exec = {
429
+ Enter() {
430
+ send({
431
+ type: "ENTER",
432
+ id
433
+ });
434
+ },
435
+ ArrowUp() {
436
+ send({
437
+ type: "KEYBOARD_MOVE",
438
+ id,
439
+ delta: horizontal ? 0 : -delta
440
+ });
441
+ },
442
+ ArrowDown() {
443
+ send({
444
+ type: "KEYBOARD_MOVE",
445
+ id,
446
+ delta: horizontal ? 0 : delta
447
+ });
448
+ },
449
+ ArrowLeft() {
450
+ send({
451
+ type: "KEYBOARD_MOVE",
452
+ id,
453
+ delta: horizontal ? -delta : 0
454
+ });
455
+ },
456
+ ArrowRight() {
457
+ send({
458
+ type: "KEYBOARD_MOVE",
459
+ id,
460
+ delta: horizontal ? delta : 0
461
+ });
462
+ },
463
+ Home() {
464
+ send({
465
+ type: "KEYBOARD_MOVE",
466
+ id,
467
+ delta: -100
468
+ });
469
+ },
470
+ End() {
471
+ send({
472
+ type: "KEYBOARD_MOVE",
473
+ id,
474
+ delta: 100
475
+ });
476
+ },
477
+ F6() {
478
+ send({
479
+ type: "FOCUS.CYCLE",
480
+ id,
481
+ shiftKey: event.shiftKey
482
+ });
483
+ }
484
+ }[getEventKey(event, {
485
+ dir: prop("dir"),
486
+ orientation
487
+ })];
488
+ if (exec) {
489
+ exec(event);
490
+ event.preventDefault();
491
+ }
492
+ }
493
+ });
494
+ }
495
+ };
496
+ }
497
+
498
+ //#endregion
499
+ //#region src/machines/splitter/utils/resize-panel.ts
500
+ function resizePanel({ panels, index, size }) {
501
+ const panel = panels[index];
502
+ ensure(panel, () => `Panel data not found for index ${index}`);
503
+ let { collapsedSize = 0, collapsible, maxSize = 100, minSize = 0 } = panel;
504
+ if (fuzzyCompareNumbers(size, minSize) < 0) if (collapsible) {
505
+ const halfwayPoint = (collapsedSize + minSize) / 2;
506
+ if (fuzzyCompareNumbers(size, halfwayPoint) < 0) size = collapsedSize;
507
+ else size = minSize;
508
+ } else size = minSize;
509
+ size = Math.min(maxSize, size);
510
+ size = parseFloat(size.toFixed(PRECISION));
511
+ return size;
512
+ }
513
+
514
+ //#endregion
515
+ //#region src/machines/splitter/utils/resize-by-delta.ts
516
+ function resizeByDelta(props$1) {
517
+ let { delta, initialSize, panels, pivotIndices, prevSize, trigger } = props$1;
518
+ if (fuzzyNumbersEqual(delta, 0)) return initialSize;
519
+ const nextSize = [...initialSize];
520
+ const [firstPivotIndex, secondPivotIndex] = pivotIndices;
521
+ ensure(firstPivotIndex, () => "Invalid first pivot index");
522
+ ensure(secondPivotIndex, () => "Invalid second pivot index");
523
+ let deltaApplied = 0;
524
+ if (trigger === "keyboard") {
525
+ {
526
+ const index = delta < 0 ? secondPivotIndex : firstPivotIndex;
527
+ const panel = panels[index];
528
+ ensure(panel, () => `Panel data not found for index ${index}`);
529
+ const { collapsedSize = 0, collapsible, minSize = 0 } = panel;
530
+ if (collapsible) {
531
+ const prevSize$1 = initialSize[index];
532
+ ensure(prevSize$1, () => `Previous size not found for panel index ${index}`);
533
+ if (fuzzyNumbersEqual(prevSize$1, collapsedSize)) {
534
+ const localDelta = minSize - prevSize$1;
535
+ if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) delta = delta < 0 ? 0 - localDelta : localDelta;
536
+ }
537
+ }
538
+ }
539
+ {
540
+ const index = delta < 0 ? firstPivotIndex : secondPivotIndex;
541
+ const panel = panels[index];
542
+ ensure(panel, () => `No panel data found for index ${index}`);
543
+ const { collapsedSize = 0, collapsible, minSize = 0 } = panel;
544
+ if (collapsible) {
545
+ const prevSize$1 = initialSize[index];
546
+ ensure(prevSize$1, () => `Previous size not found for panel index ${index}`);
547
+ if (fuzzyNumbersEqual(prevSize$1, minSize)) {
548
+ const localDelta = prevSize$1 - collapsedSize;
549
+ if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) delta = delta < 0 ? 0 - localDelta : localDelta;
550
+ }
551
+ }
552
+ }
553
+ }
554
+ {
555
+ const increment = delta < 0 ? 1 : -1;
556
+ let index = delta < 0 ? secondPivotIndex : firstPivotIndex;
557
+ let maxAvailableDelta = 0;
558
+ while (true) {
559
+ const prevSize$1 = initialSize[index];
560
+ ensure(prevSize$1, () => `Previous size not found for panel index ${index}`);
561
+ const delta$1 = resizePanel({
562
+ panels,
563
+ index,
564
+ size: 100
565
+ }) - prevSize$1;
566
+ maxAvailableDelta += delta$1;
567
+ index += increment;
568
+ if (index < 0 || index >= panels.length) break;
569
+ }
570
+ const minAbsDelta = Math.min(Math.abs(delta), Math.abs(maxAvailableDelta));
571
+ delta = delta < 0 ? 0 - minAbsDelta : minAbsDelta;
572
+ }
573
+ {
574
+ let index = delta < 0 ? firstPivotIndex : secondPivotIndex;
575
+ while (index >= 0 && index < panels.length) {
576
+ const deltaRemaining = Math.abs(delta) - Math.abs(deltaApplied);
577
+ const prevSize$1 = initialSize[index];
578
+ ensure(prevSize$1, () => `Previous size not found for panel index ${index}`);
579
+ const unsafeSize = prevSize$1 - deltaRemaining;
580
+ const safeSize = resizePanel({
581
+ panels,
582
+ index,
583
+ size: unsafeSize
584
+ });
585
+ if (!fuzzyNumbersEqual(prevSize$1, safeSize)) {
586
+ deltaApplied += prevSize$1 - safeSize;
587
+ nextSize[index] = safeSize;
588
+ if (deltaApplied.toPrecision(3).localeCompare(Math.abs(delta).toPrecision(3), void 0, { numeric: true }) >= 0) break;
589
+ }
590
+ if (delta < 0) index--;
591
+ else index++;
592
+ }
593
+ }
594
+ if (fuzzySizeEqual(prevSize, nextSize)) return prevSize;
595
+ {
596
+ const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex;
597
+ const prevSize$1 = initialSize[pivotIndex];
598
+ ensure(prevSize$1, () => `Previous size not found for panel index ${pivotIndex}`);
599
+ const unsafeSize = prevSize$1 + deltaApplied;
600
+ const safeSize = resizePanel({
601
+ panels,
602
+ index: pivotIndex,
603
+ size: unsafeSize
604
+ });
605
+ nextSize[pivotIndex] = safeSize;
606
+ if (!fuzzyNumbersEqual(safeSize, unsafeSize)) {
607
+ let deltaRemaining = unsafeSize - safeSize;
608
+ let index = delta < 0 ? secondPivotIndex : firstPivotIndex;
609
+ while (index >= 0 && index < panels.length) {
610
+ const prevSize$2 = nextSize[index];
611
+ ensure(prevSize$2, () => `Previous size not found for panel index ${index}`);
612
+ const unsafeSize$1 = prevSize$2 + deltaRemaining;
613
+ const safeSize$1 = resizePanel({
614
+ panels,
615
+ index,
616
+ size: unsafeSize$1
617
+ });
618
+ if (!fuzzyNumbersEqual(prevSize$2, safeSize$1)) {
619
+ deltaRemaining -= safeSize$1 - prevSize$2;
620
+ nextSize[index] = safeSize$1;
621
+ }
622
+ if (fuzzyNumbersEqual(deltaRemaining, 0)) break;
623
+ if (delta > 0) index--;
624
+ else index++;
625
+ }
626
+ }
627
+ }
628
+ if (!fuzzyNumbersEqual(nextSize.reduce((total, size) => size + total, 0), 100)) return prevSize;
629
+ return nextSize;
630
+ }
631
+
632
+ //#endregion
633
+ //#region src/machines/splitter/utils/validate-sizes.ts
634
+ function validateSizes({ size: prevSize, panels }) {
635
+ const nextSize = [...prevSize];
636
+ const nextSizeTotalSize = nextSize.reduce((accumulated, current) => accumulated + current, 0);
637
+ if (nextSize.length !== panels.length) throw Error(`Invalid ${panels.length} panel size: ${nextSize.map((size) => `${size}%`).join(", ")}`);
638
+ else if (!fuzzyNumbersEqual(nextSizeTotalSize, 100) && nextSize.length > 0) for (let index = 0; index < panels.length; index++) {
639
+ const unsafeSize = nextSize[index];
640
+ ensure(unsafeSize, () => `No size data found for index ${index}`);
641
+ nextSize[index] = 100 / nextSizeTotalSize * unsafeSize;
642
+ }
643
+ let remainingSize = 0;
644
+ for (let index = 0; index < panels.length; index++) {
645
+ const unsafeSize = nextSize[index];
646
+ ensure(unsafeSize, () => `No size data found for index ${index}`);
647
+ const safeSize = resizePanel({
648
+ panels,
649
+ index,
650
+ size: unsafeSize
651
+ });
652
+ if (unsafeSize != safeSize) {
653
+ remainingSize += unsafeSize - safeSize;
654
+ nextSize[index] = safeSize;
655
+ }
656
+ }
657
+ if (!fuzzyNumbersEqual(remainingSize, 0)) for (let index = 0; index < panels.length; index++) {
658
+ const prevSize$1 = nextSize[index];
659
+ ensure(prevSize$1, () => `No size data found for index ${index}`);
660
+ const unsafeSize = prevSize$1 + remainingSize;
661
+ const safeSize = resizePanel({
662
+ panels,
663
+ index,
664
+ size: unsafeSize
665
+ });
666
+ if (prevSize$1 !== safeSize) {
667
+ remainingSize -= safeSize - prevSize$1;
668
+ nextSize[index] = safeSize;
669
+ if (fuzzyNumbersEqual(remainingSize, 0)) break;
670
+ }
671
+ }
672
+ return nextSize;
673
+ }
674
+
675
+ //#endregion
676
+ //#region src/machines/splitter/splitter.machine.ts
677
+ const machine = createMachine({
678
+ props({ props: props$1 }) {
679
+ ensureProps(props$1, ["panels"]);
680
+ return {
681
+ orientation: "horizontal",
682
+ defaultSize: [],
683
+ dir: "ltr",
684
+ ...props$1,
685
+ panels: sortPanels(props$1.panels)
686
+ };
687
+ },
688
+ initialState() {
689
+ return "idle";
690
+ },
691
+ context({ prop, bindable, getContext, getRefs }) {
692
+ return {
693
+ size: bindable(() => ({
694
+ value: prop("size"),
695
+ defaultValue: prop("defaultSize"),
696
+ isEqual(a, b) {
697
+ return b != null && fuzzySizeEqual(a, b);
698
+ },
699
+ onChange(value) {
700
+ const ctx = getContext();
701
+ const sizesBeforeCollapse = getRefs().get("panelSizeBeforeCollapse");
702
+ const expandToSizes = Object.fromEntries(sizesBeforeCollapse.entries());
703
+ const resizeTriggerId = ctx.get("dragState")?.resizeTriggerId ?? null;
704
+ const layout = getPanelLayout(prop("panels"));
705
+ prop("onResize")?.({
706
+ size: value,
707
+ layout,
708
+ resizeTriggerId,
709
+ expandToSizes
710
+ });
711
+ }
712
+ })),
713
+ dragState: bindable(() => ({ defaultValue: null })),
714
+ keyboardState: bindable(() => ({ defaultValue: null }))
715
+ };
716
+ },
717
+ watch({ track, action, prop }) {
718
+ track([() => serializePanels(prop("panels"))], () => {
719
+ action(["syncSize"]);
720
+ });
721
+ },
722
+ refs() {
723
+ return {
724
+ panelSizeBeforeCollapse: /* @__PURE__ */ new Map(),
725
+ prevDelta: 0,
726
+ panelIdToLastNotifiedSizeMap: /* @__PURE__ */ new Map()
727
+ };
728
+ },
729
+ computed: { horizontal({ prop }) {
730
+ return prop("orientation") === "horizontal";
731
+ } },
732
+ on: {
733
+ "SIZE.SET": { actions: ["setSize"] },
734
+ "PANEL.COLLAPSE": { actions: ["collapsePanel"] },
735
+ "PANEL.EXPAND": { actions: ["expandPanel"] },
736
+ "PANEL.RESIZE": { actions: ["resizePanel"] }
737
+ },
738
+ entry: ["syncSize"],
739
+ exit: ["clearGlobalCursor"],
740
+ states: {
741
+ idle: {
742
+ entry: ["clearDraggingState", "clearKeyboardState"],
743
+ on: {
744
+ POINTER_OVER: {
745
+ target: "hover:temp",
746
+ actions: ["setKeyboardState"]
747
+ },
748
+ FOCUS: {
749
+ target: "focused",
750
+ actions: ["setKeyboardState"]
751
+ },
752
+ POINTER_DOWN: {
753
+ target: "dragging",
754
+ actions: ["setDraggingState"]
755
+ }
756
+ }
757
+ },
758
+ "hover:temp": {
759
+ effects: ["waitForHoverDelay"],
760
+ on: {
761
+ HOVER_DELAY: { target: "hover" },
762
+ POINTER_DOWN: {
763
+ target: "dragging",
764
+ actions: ["setDraggingState"]
765
+ },
766
+ POINTER_LEAVE: { target: "idle" }
767
+ }
768
+ },
769
+ hover: {
770
+ tags: ["focus"],
771
+ on: {
772
+ POINTER_DOWN: {
773
+ target: "dragging",
774
+ actions: ["setDraggingState"]
775
+ },
776
+ POINTER_LEAVE: { target: "idle" }
777
+ }
778
+ },
779
+ focused: {
780
+ tags: ["focus"],
781
+ on: {
782
+ BLUR: { target: "idle" },
783
+ ENTER: { actions: ["collapseOrExpandPanel"] },
784
+ POINTER_DOWN: {
785
+ target: "dragging",
786
+ actions: ["setDraggingState"]
787
+ },
788
+ KEYBOARD_MOVE: { actions: [
789
+ "invokeOnResizeStart",
790
+ "setKeyboardValue",
791
+ "invokeOnResizeEnd"
792
+ ] },
793
+ "FOCUS.CYCLE": { actions: ["focusNextResizeTrigger"] }
794
+ }
795
+ },
796
+ dragging: {
797
+ tags: ["focus"],
798
+ effects: ["trackPointerMove"],
799
+ entry: ["invokeOnResizeStart"],
800
+ on: {
801
+ POINTER_MOVE: { actions: ["setPointerValue", "setGlobalCursor"] },
802
+ POINTER_UP: {
803
+ target: "idle",
804
+ actions: ["invokeOnResizeEnd", "clearGlobalCursor"]
805
+ }
806
+ }
807
+ }
808
+ },
809
+ implementations: {
810
+ effects: {
811
+ waitForHoverDelay: ({ send }) => {
812
+ return setRafTimeout(() => {
813
+ send({ type: "HOVER_DELAY" });
814
+ }, 250);
815
+ },
816
+ trackPointerMove: ({ scope, send }) => {
817
+ return trackPointerMove(scope.getDoc(), {
818
+ onPointerMove(info) {
819
+ send({
820
+ type: "POINTER_MOVE",
821
+ point: info.point
822
+ });
823
+ },
824
+ onPointerUp() {
825
+ send({ type: "POINTER_UP" });
826
+ }
827
+ });
828
+ }
829
+ },
830
+ actions: {
831
+ setSize(params) {
832
+ const { context, event, prop } = params;
833
+ const unsafeSize = event.size;
834
+ const prevSize = context.get("size");
835
+ const safeSize = validateSizes({
836
+ size: unsafeSize,
837
+ panels: prop("panels")
838
+ });
839
+ if (!isEqual(prevSize, safeSize)) setSize(params, safeSize);
840
+ },
841
+ syncSize({ context, prop }) {
842
+ const panels = prop("panels");
843
+ let prevSize = context.get("size");
844
+ let unsafeSize = null;
845
+ if (prevSize.length === 0) unsafeSize = getUnsafeDefaultSize({
846
+ panels,
847
+ size: context.initial("size")
848
+ });
849
+ const nextSize = validateSizes({
850
+ size: unsafeSize ?? prevSize,
851
+ panels
852
+ });
853
+ if (!isEqual(prevSize, nextSize)) context.set("size", nextSize);
854
+ },
855
+ setDraggingState({ context, event, prop, scope }) {
856
+ const orientation = prop("orientation");
857
+ const size = context.get("size");
858
+ const resizeTriggerId = event.id;
859
+ if (!getRootEl(scope)) return;
860
+ const handleElement = getResizeTriggerEl(scope, resizeTriggerId);
861
+ ensure(handleElement, () => `Drag handle element not found for id "${resizeTriggerId}"`);
862
+ const initialCursorPosition = orientation === "horizontal" ? event.point.x : event.point.y;
863
+ context.set("dragState", {
864
+ resizeTriggerId: event.id,
865
+ resizeTriggerRect: handleElement.getBoundingClientRect(),
866
+ initialCursorPosition,
867
+ initialSize: size
868
+ });
869
+ },
870
+ clearDraggingState({ context }) {
871
+ context.set("dragState", null);
872
+ },
873
+ setKeyboardState({ context, event }) {
874
+ context.set("keyboardState", { resizeTriggerId: event.id });
875
+ },
876
+ clearKeyboardState({ context }) {
877
+ context.set("keyboardState", null);
878
+ },
879
+ collapsePanel(params) {
880
+ const { context, prop, event, refs } = params;
881
+ const prevSize = context.get("size");
882
+ const panels = prop("panels");
883
+ const panel = panels.find((panel$1) => panel$1.id === event.id);
884
+ ensure(panel, () => `Panel data not found for id "${event.id}"`);
885
+ if (panel.collapsible) {
886
+ const { collapsedSize = 0, panelSize, pivotIndices } = panelDataHelper(panels, panel, prevSize);
887
+ ensure(panelSize, () => `Panel size not found for panel "${panel.id}"`);
888
+ if (!fuzzyNumbersEqual(panelSize, collapsedSize)) {
889
+ refs.get("panelSizeBeforeCollapse").set(panel.id, panelSize);
890
+ const nextSize = resizeByDelta({
891
+ delta: findPanelDataIndex(panels, panel) === panels.length - 1 ? panelSize - collapsedSize : collapsedSize - panelSize,
892
+ initialSize: prevSize,
893
+ panels,
894
+ pivotIndices,
895
+ prevSize,
896
+ trigger: "imperative-api"
897
+ });
898
+ if (!isEqual(prevSize, nextSize)) setSize(params, nextSize);
899
+ }
900
+ }
901
+ },
902
+ expandPanel(params) {
903
+ const { context, prop, event, refs } = params;
904
+ const panels = prop("panels");
905
+ const prevSize = context.get("size");
906
+ const panel = panels.find((panel$1) => panel$1.id === event.id);
907
+ ensure(panel, () => `Panel data not found for id "${event.id}"`);
908
+ if (panel.collapsible) {
909
+ const { collapsedSize = 0, panelSize = 0, minSize: minSizeFromProps = 0, pivotIndices } = panelDataHelper(panels, panel, prevSize);
910
+ const minSize = event.minSize ?? minSizeFromProps;
911
+ if (fuzzyNumbersEqual(panelSize, collapsedSize)) {
912
+ const prevPanelSize = refs.get("panelSizeBeforeCollapse").get(panel.id);
913
+ const baseSize = prevPanelSize != null && prevPanelSize >= minSize ? prevPanelSize : minSize;
914
+ const nextSize = resizeByDelta({
915
+ delta: findPanelDataIndex(panels, panel) === panels.length - 1 ? panelSize - baseSize : baseSize - panelSize,
916
+ initialSize: prevSize,
917
+ panels,
918
+ pivotIndices,
919
+ prevSize,
920
+ trigger: "imperative-api"
921
+ });
922
+ if (!isEqual(prevSize, nextSize)) setSize(params, nextSize);
923
+ }
924
+ }
925
+ },
926
+ resizePanel(params) {
927
+ const { context, prop, event } = params;
928
+ const prevSize = context.get("size");
929
+ const panels = prop("panels");
930
+ const panel = getPanelById(panels, event.id);
931
+ const unsafePanelSize = event.size;
932
+ const { panelSize, pivotIndices } = panelDataHelper(panels, panel, prevSize);
933
+ ensure(panelSize, () => `Panel size not found for panel "${panel.id}"`);
934
+ const nextSize = resizeByDelta({
935
+ delta: findPanelDataIndex(panels, panel) === panels.length - 1 ? panelSize - unsafePanelSize : unsafePanelSize - panelSize,
936
+ initialSize: prevSize,
937
+ panels,
938
+ pivotIndices,
939
+ prevSize,
940
+ trigger: "imperative-api"
941
+ });
942
+ if (!isEqual(prevSize, nextSize)) setSize(params, nextSize);
943
+ },
944
+ setPointerValue(params) {
945
+ const { context, event, prop, scope } = params;
946
+ const dragState = context.get("dragState");
947
+ if (!dragState) return;
948
+ const { resizeTriggerId, initialSize, initialCursorPosition } = dragState;
949
+ const panels = prop("panels");
950
+ const panelGroupElement = getRootEl(scope);
951
+ ensure(panelGroupElement, () => `Panel group element not found`);
952
+ const pivotIndices = resizeTriggerId.split(":").map((id) => panels.findIndex((panel) => panel.id === id));
953
+ const horizontal = prop("orientation") === "horizontal";
954
+ const cursorPosition = horizontal ? event.point.x : event.point.y;
955
+ const groupRect = panelGroupElement.getBoundingClientRect();
956
+ const groupSizeInPixels = horizontal ? groupRect.width : groupRect.height;
957
+ const offsetPercentage = (cursorPosition - initialCursorPosition) / groupSizeInPixels * 100;
958
+ const prevSize = context.get("size");
959
+ const nextSize = resizeByDelta({
960
+ delta: offsetPercentage,
961
+ initialSize: initialSize ?? prevSize,
962
+ panels,
963
+ pivotIndices,
964
+ prevSize,
965
+ trigger: "mouse-or-touch"
966
+ });
967
+ if (!isEqual(prevSize, nextSize)) setSize(params, nextSize);
968
+ },
969
+ setKeyboardValue(params) {
970
+ const { context, event, prop } = params;
971
+ const panelDataArray = prop("panels");
972
+ const resizeTriggerId = event.id;
973
+ const delta = event.delta;
974
+ const pivotIndices = resizeTriggerId.split(":").map((id) => panelDataArray.findIndex((panelData) => panelData.id === id));
975
+ const prevSize = context.get("size");
976
+ const nextSize = resizeByDelta({
977
+ delta,
978
+ initialSize: prevSize,
979
+ panels: panelDataArray,
980
+ pivotIndices,
981
+ prevSize,
982
+ trigger: "keyboard"
983
+ });
984
+ if (!isEqual(prevSize, nextSize)) setSize(params, nextSize);
985
+ },
986
+ invokeOnResizeEnd({ context, prop }) {
987
+ queueMicrotask(() => {
988
+ const dragState = context.get("dragState");
989
+ prop("onResizeEnd")?.({
990
+ size: context.get("size"),
991
+ resizeTriggerId: dragState?.resizeTriggerId ?? null
992
+ });
993
+ });
994
+ },
995
+ invokeOnResizeStart({ prop }) {
996
+ queueMicrotask(() => {
997
+ prop("onResizeStart")?.();
998
+ });
999
+ },
1000
+ collapseOrExpandPanel(params) {
1001
+ const { context, prop } = params;
1002
+ const panelDataArray = prop("panels");
1003
+ const sizes = context.get("size");
1004
+ const [idBefore, idAfter] = (context.get("keyboardState")?.resizeTriggerId)?.split(":") ?? [];
1005
+ const index = panelDataArray.findIndex((panelData$1) => panelData$1.id === idBefore);
1006
+ if (index === -1) return;
1007
+ const panelData = panelDataArray[index];
1008
+ ensure(panelData, () => `No panel data found for index ${index}`);
1009
+ const size = sizes[index];
1010
+ const { collapsedSize = 0, collapsible, minSize = 0 } = panelData;
1011
+ if (size != null && collapsible) {
1012
+ const pivotIndices = [idBefore, idAfter].map((id) => panelDataArray.findIndex((panelData$1) => panelData$1.id === id));
1013
+ const nextSize = resizeByDelta({
1014
+ delta: fuzzyNumbersEqual(size, collapsedSize) ? minSize - collapsedSize : collapsedSize - size,
1015
+ initialSize: context.initial("size"),
1016
+ panels: panelDataArray,
1017
+ pivotIndices,
1018
+ prevSize: sizes,
1019
+ trigger: "keyboard"
1020
+ });
1021
+ if (!isEqual(sizes, nextSize)) setSize(params, nextSize);
1022
+ }
1023
+ },
1024
+ setGlobalCursor({ context, scope, prop }) {
1025
+ const dragState = context.get("dragState");
1026
+ if (!dragState) return;
1027
+ const panels = prop("panels");
1028
+ const horizontal = prop("orientation") === "horizontal";
1029
+ const [idBefore] = dragState.resizeTriggerId.split(":");
1030
+ const panel = panels[panels.findIndex((panel$1) => panel$1.id === idBefore)];
1031
+ const aria = getAriaValue(context.get("size"), panels, dragState.resizeTriggerId);
1032
+ const cursorState = {
1033
+ isAtMin: fuzzyNumbersEqual(aria.valueNow, aria.valueMin) || fuzzyNumbersEqual(aria.valueNow, panel.collapsedSize),
1034
+ isAtMax: fuzzyNumbersEqual(aria.valueNow, aria.valueMax)
1035
+ };
1036
+ setupGlobalCursor(scope, cursorState, horizontal, prop("nonce"));
1037
+ },
1038
+ clearGlobalCursor({ scope }) {
1039
+ removeGlobalCursor(scope);
1040
+ },
1041
+ focusNextResizeTrigger({ event, scope }) {
1042
+ const resizeTriggers = getResizeTriggerEls(scope);
1043
+ const index = resizeTriggers.findIndex((el) => el.dataset.id === event.id);
1044
+ (event.shiftKey ? prev(resizeTriggers, index) : next(resizeTriggers, index))?.focus();
1045
+ }
1046
+ }
1047
+ }
1048
+ });
1049
+ function setSize(params, sizes) {
1050
+ const { refs, prop, context } = params;
1051
+ const panelsArray = prop("panels");
1052
+ const onCollapse = prop("onCollapse");
1053
+ const onExpand = prop("onExpand");
1054
+ const panelIdToLastNotifiedSizeMap = refs.get("panelIdToLastNotifiedSizeMap");
1055
+ context.set("size", sizes);
1056
+ sizes.forEach((size, index) => {
1057
+ const panelData = panelsArray[index];
1058
+ ensure(panelData, () => `Panel data not found for index ${index}`);
1059
+ const { collapsedSize = 0, collapsible, id: panelId } = panelData;
1060
+ const lastNotifiedSize = panelIdToLastNotifiedSizeMap.get(panelId);
1061
+ if (lastNotifiedSize == null || size !== lastNotifiedSize) {
1062
+ panelIdToLastNotifiedSizeMap.set(panelId, size);
1063
+ if (collapsible && (onCollapse || onExpand)) {
1064
+ if ((lastNotifiedSize == null || fuzzyNumbersEqual(lastNotifiedSize, collapsedSize)) && !fuzzyNumbersEqual(size, collapsedSize)) onExpand?.({
1065
+ panelId,
1066
+ size
1067
+ });
1068
+ if (onCollapse && (lastNotifiedSize == null || !fuzzyNumbersEqual(lastNotifiedSize, collapsedSize)) && fuzzyNumbersEqual(size, collapsedSize)) onCollapse?.({
1069
+ panelId,
1070
+ size
1071
+ });
1072
+ }
1073
+ }
1074
+ });
1075
+ }
1076
+
1077
+ //#endregion
1078
+ //#region src/machines/splitter/splitter.props.ts
1079
+ const props = createProps()([
1080
+ "dir",
1081
+ "getRootNode",
1082
+ "id",
1083
+ "ids",
1084
+ "onResize",
1085
+ "onResizeStart",
1086
+ "onResizeEnd",
1087
+ "onCollapse",
1088
+ "onExpand",
1089
+ "orientation",
1090
+ "size",
1091
+ "defaultSize",
1092
+ "panels",
1093
+ "keyboardResizeBy",
1094
+ "nonce"
1095
+ ]);
1096
+ const splitProps = createSplitProps(props);
1097
+ const panelProps = createProps()(["id"]);
1098
+ const splitPanelProps = createSplitProps(panelProps);
1099
+ const resizeTriggerProps = createProps()(["disabled", "id"]);
1100
+ const splitResizeTriggerProps = createSplitProps(resizeTriggerProps);
1101
+
1102
+ //#endregion
1103
+ export { anatomy, connect, getPanelLayout as layout, machine, panelProps, props, resizeTriggerProps, splitPanelProps, splitProps, splitResizeTriggerProps };