@wardic/solid 0.0.0-stage → 1.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (994) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -2
  3. package/THIRD_PARTY_NOTICES.md +145 -0
  4. package/dist/browser/animation-controls.js +150 -0
  5. package/dist/browser/animation-controls.js.map +1 -0
  6. package/dist/browser/animation-frame.js +29 -0
  7. package/dist/browser/animation-frame.js.map +1 -0
  8. package/dist/browser/appear.js +727 -0
  9. package/dist/browser/appear.js.map +1 -0
  10. package/dist/browser/arc.js +21 -0
  11. package/dist/browser/arc.js.map +1 -0
  12. package/dist/browser/bridge.js +69 -0
  13. package/dist/browser/bridge.js.map +1 -0
  14. package/dist/browser/complete.js +30 -0
  15. package/dist/browser/complete.js.map +1 -0
  16. package/dist/browser/config.js +2 -0
  17. package/dist/browser/config.js.map +1 -0
  18. package/dist/browser/create-animate.js +41 -0
  19. package/dist/browser/create-animate.js.map +1 -0
  20. package/dist/browser/create-ward.js +1001 -0
  21. package/dist/browser/create-ward.js.map +1 -0
  22. package/dist/browser/cycle-index.js +17 -0
  23. package/dist/browser/cycle-index.js.map +1 -0
  24. package/dist/browser/cycle.js +31 -0
  25. package/dist/browser/cycle.js.map +1 -0
  26. package/dist/browser/directive.js +80 -0
  27. package/dist/browser/directive.js.map +1 -0
  28. package/dist/browser/drag-constraints.js +76 -0
  29. package/dist/browser/drag-constraints.js.map +1 -0
  30. package/dist/browser/drag-controls.js +51 -0
  31. package/dist/browser/drag-controls.js.map +1 -0
  32. package/dist/browser/drag-samples.js +40 -0
  33. package/dist/browser/drag-samples.js.map +1 -0
  34. package/dist/browser/drag-sensor.js +35 -0
  35. package/dist/browser/drag-sensor.js.map +1 -0
  36. package/dist/browser/drag-track.js +817 -0
  37. package/dist/browser/drag-track.js.map +1 -0
  38. package/dist/browser/drag-transition.js +56 -0
  39. package/dist/browser/drag-transition.js.map +1 -0
  40. package/dist/browser/drag.js +44 -0
  41. package/dist/browser/drag.js.map +1 -0
  42. package/dist/browser/element-style.js +67 -0
  43. package/dist/browser/element-style.js.map +1 -0
  44. package/dist/browser/element.js +353 -0
  45. package/dist/browser/element.js.map +1 -0
  46. package/dist/browser/feature-section.js +17 -0
  47. package/dist/browser/feature-section.js.map +1 -0
  48. package/dist/browser/feature.js +261 -0
  49. package/dist/browser/feature.js.map +1 -0
  50. package/dist/browser/features/all.js +10 -0
  51. package/dist/browser/features/all.js.map +1 -0
  52. package/dist/browser/features/colors.js +33 -0
  53. package/dist/browser/features/colors.js.map +1 -0
  54. package/dist/browser/features/dom-animation.js +7 -0
  55. package/dist/browser/features/dom-animation.js.map +1 -0
  56. package/dist/browser/features/dom-max.js +4 -0
  57. package/dist/browser/features/dom-max.js.map +1 -0
  58. package/dist/browser/features/drag.js +28 -0
  59. package/dist/browser/features/drag.js.map +1 -0
  60. package/dist/browser/features/focus.js +18 -0
  61. package/dist/browser/features/focus.js.map +1 -0
  62. package/dist/browser/features/hover.js +18 -0
  63. package/dist/browser/features/hover.js.map +1 -0
  64. package/dist/browser/features/in-view.js +18 -0
  65. package/dist/browser/features/in-view.js.map +1 -0
  66. package/dist/browser/features/input.js +30 -0
  67. package/dist/browser/features/input.js.map +1 -0
  68. package/dist/browser/features/keys.js +19 -0
  69. package/dist/browser/features/keys.js.map +1 -0
  70. package/dist/browser/features/layout.js +33 -0
  71. package/dist/browser/features/layout.js.map +1 -0
  72. package/dist/browser/features/pan.js +18 -0
  73. package/dist/browser/features/pan.js.map +1 -0
  74. package/dist/browser/features/press.js +12 -0
  75. package/dist/browser/features/press.js.map +1 -0
  76. package/dist/browser/focus-sensor.js +23 -0
  77. package/dist/browser/focus-sensor.js.map +1 -0
  78. package/dist/browser/frame-time.js +40 -0
  79. package/dist/browser/frame-time.js.map +1 -0
  80. package/dist/browser/gesture-callbacks.js +172 -0
  81. package/dist/browser/gesture-callbacks.js.map +1 -0
  82. package/dist/browser/gesture-features.js +29 -0
  83. package/dist/browser/gesture-features.js.map +1 -0
  84. package/dist/browser/gesture-info.js +43 -0
  85. package/dist/browser/gesture-info.js.map +1 -0
  86. package/dist/browser/hover-sensor.js +29 -0
  87. package/dist/browser/hover-sensor.js.map +1 -0
  88. package/dist/browser/imperative.js +614 -0
  89. package/dist/browser/imperative.js.map +1 -0
  90. package/dist/browser/index.js +165 -0
  91. package/dist/browser/index.js.map +1 -0
  92. package/dist/browser/instant.js +51 -0
  93. package/dist/browser/instant.js.map +1 -0
  94. package/dist/browser/layout-group.js +27 -0
  95. package/dist/browser/layout-group.js.map +1 -0
  96. package/dist/browser/layout-member.js +362 -0
  97. package/dist/browser/layout-member.js.map +1 -0
  98. package/dist/browser/layout-projection.js +19 -0
  99. package/dist/browser/layout-projection.js.map +1 -0
  100. package/dist/browser/layout.js +91 -0
  101. package/dist/browser/layout.js.map +1 -0
  102. package/dist/browser/live-style.js +313 -0
  103. package/dist/browser/live-style.js.map +1 -0
  104. package/dist/browser/live-value.js +252 -0
  105. package/dist/browser/live-value.js.map +1 -0
  106. package/dist/browser/motion-props.js +172 -0
  107. package/dist/browser/motion-props.js.map +1 -0
  108. package/dist/browser/owner-scope.js +29 -0
  109. package/dist/browser/owner-scope.js.map +1 -0
  110. package/dist/browser/page-point.js +92 -0
  111. package/dist/browser/page-point.js.map +1 -0
  112. package/dist/browser/presence-controller.js +1324 -0
  113. package/dist/browser/presence-controller.js.map +1 -0
  114. package/dist/browser/presence-record.js +27 -0
  115. package/dist/browser/presence-record.js.map +1 -0
  116. package/dist/browser/presence.js +207 -0
  117. package/dist/browser/presence.js.map +1 -0
  118. package/dist/browser/press-sensor.js +30 -0
  119. package/dist/browser/press-sensor.js.map +1 -0
  120. package/dist/browser/press.js +24 -0
  121. package/dist/browser/press.js.map +1 -0
  122. package/dist/browser/provider.js +445 -0
  123. package/dist/browser/provider.js.map +1 -0
  124. package/dist/browser/reactivity.js +9 -0
  125. package/dist/browser/reactivity.js.map +1 -0
  126. package/dist/browser/reorder-input.js +46 -0
  127. package/dist/browser/reorder-input.js.map +1 -0
  128. package/dist/browser/reorder.js +543 -0
  129. package/dist/browser/reorder.js.map +1 -0
  130. package/dist/browser/retarget-legs.js +1019 -0
  131. package/dist/browser/retarget-legs.js.map +1 -0
  132. package/dist/browser/runtime.js +249 -0
  133. package/dist/browser/runtime.js.map +1 -0
  134. package/dist/browser/sensors.js +172 -0
  135. package/dist/browser/sensors.js.map +1 -0
  136. package/dist/browser/server-interpolators.js +20 -0
  137. package/dist/browser/server-interpolators.js.map +1 -0
  138. package/dist/browser/server.js +20 -0
  139. package/dist/browser/server.js.map +1 -0
  140. package/dist/browser/solid-reactivity.js +26 -0
  141. package/dist/browser/solid-reactivity.js.map +1 -0
  142. package/dist/browser/spine.js +2939 -0
  143. package/dist/browser/spine.js.map +1 -0
  144. package/dist/browser/stagger.js +13 -0
  145. package/dist/browser/stagger.js.map +1 -0
  146. package/dist/browser/unstable/v2/bridge.js +76 -0
  147. package/dist/browser/unstable/v2/bridge.js.map +1 -0
  148. package/dist/browser/unstable/v2/complete.js +29 -0
  149. package/dist/browser/unstable/v2/complete.js.map +1 -0
  150. package/dist/browser/unstable/v2/config-view.js +111 -0
  151. package/dist/browser/unstable/v2/config-view.js.map +1 -0
  152. package/dist/browser/unstable/v2/create-animate.js +102 -0
  153. package/dist/browser/unstable/v2/create-animate.js.map +1 -0
  154. package/dist/browser/unstable/v2/cycle.js +30 -0
  155. package/dist/browser/unstable/v2/cycle.js.map +1 -0
  156. package/dist/browser/unstable/v2/drag-sensor.js +34 -0
  157. package/dist/browser/unstable/v2/drag-sensor.js.map +1 -0
  158. package/dist/browser/unstable/v2/element.js +393 -0
  159. package/dist/browser/unstable/v2/element.js.map +1 -0
  160. package/dist/browser/unstable/v2/feature-section.js +27 -0
  161. package/dist/browser/unstable/v2/feature-section.js.map +1 -0
  162. package/dist/browser/unstable/v2/focus-sensor.js +23 -0
  163. package/dist/browser/unstable/v2/focus-sensor.js.map +1 -0
  164. package/dist/browser/unstable/v2/hover-sensor.js +28 -0
  165. package/dist/browser/unstable/v2/hover-sensor.js.map +1 -0
  166. package/dist/browser/unstable/v2/index.js +114 -0
  167. package/dist/browser/unstable/v2/index.js.map +1 -0
  168. package/dist/browser/unstable/v2/layout-projection.js +18 -0
  169. package/dist/browser/unstable/v2/layout-projection.js.map +1 -0
  170. package/dist/browser/unstable/v2/layout.js +71 -0
  171. package/dist/browser/unstable/v2/layout.js.map +1 -0
  172. package/dist/browser/unstable/v2/lifecycle.js +455 -0
  173. package/dist/browser/unstable/v2/lifecycle.js.map +1 -0
  174. package/dist/browser/unstable/v2/live-value.js +264 -0
  175. package/dist/browser/unstable/v2/live-value.js.map +1 -0
  176. package/dist/browser/unstable/v2/presence-handle.js +146 -0
  177. package/dist/browser/unstable/v2/presence-handle.js.map +1 -0
  178. package/dist/browser/unstable/v2/presence-hooks.js +142 -0
  179. package/dist/browser/unstable/v2/presence-hooks.js.map +1 -0
  180. package/dist/browser/unstable/v2/presence.js +124 -0
  181. package/dist/browser/unstable/v2/presence.js.map +1 -0
  182. package/dist/browser/unstable/v2/press-sensor.js +29 -0
  183. package/dist/browser/unstable/v2/press-sensor.js.map +1 -0
  184. package/dist/browser/unstable/v2/provider.js +457 -0
  185. package/dist/browser/unstable/v2/provider.js.map +1 -0
  186. package/dist/browser/unstable/v2/reorder.js +663 -0
  187. package/dist/browser/unstable/v2/reorder.js.map +1 -0
  188. package/dist/browser/unstable/v2/sensors.js +138 -0
  189. package/dist/browser/unstable/v2/sensors.js.map +1 -0
  190. package/dist/browser/unstable/v2/solid-reactivity.js +82 -0
  191. package/dist/browser/unstable/v2/solid-reactivity.js.map +1 -0
  192. package/dist/browser/unstable/v2/variant-node.js +395 -0
  193. package/dist/browser/unstable/v2/variant-node.js.map +1 -0
  194. package/dist/browser/unstable/v2/w.js +23 -0
  195. package/dist/browser/unstable/v2/w.js.map +1 -0
  196. package/dist/browser/unstable/v2/waiters.js +185 -0
  197. package/dist/browser/unstable/v2/waiters.js.map +1 -0
  198. package/dist/browser/unstable/v2/ward.js +1620 -0
  199. package/dist/browser/unstable/v2/ward.js.map +1 -0
  200. package/dist/browser/unstable/v2/wardic-config.js +40 -0
  201. package/dist/browser/unstable/v2/wardic-config.js.map +1 -0
  202. package/dist/browser/unstable/v2/wardic.js +16 -0
  203. package/dist/browser/unstable/v2/wardic.js.map +1 -0
  204. package/dist/browser/variant-node.js +308 -0
  205. package/dist/browser/variant-node.js.map +1 -0
  206. package/dist/browser/variant-target.js +224 -0
  207. package/dist/browser/variant-target.js.map +1 -0
  208. package/dist/browser/variant-tree.js +394 -0
  209. package/dist/browser/variant-tree.js.map +1 -0
  210. package/dist/browser/variants.js +43 -0
  211. package/dist/browser/variants.js.map +1 -0
  212. package/dist/browser/w.js +25 -0
  213. package/dist/browser/w.js.map +1 -0
  214. package/dist/browser/ward-keys.js +2 -0
  215. package/dist/browser/ward-keys.js.map +1 -0
  216. package/dist/browser/wardic-component.js +74 -0
  217. package/dist/browser/wardic-component.js.map +1 -0
  218. package/dist/browser/wardic-config-value.js +91 -0
  219. package/dist/browser/wardic-config-value.js.map +1 -0
  220. package/dist/browser/wardic-config.js +42 -0
  221. package/dist/browser/wardic-config.js.map +1 -0
  222. package/dist/browser/wardic.js +31 -0
  223. package/dist/browser/wardic.js.map +1 -0
  224. package/dist/server/animation-controls.js +150 -0
  225. package/dist/server/animation-controls.js.map +1 -0
  226. package/dist/server/animation-frame.js +29 -0
  227. package/dist/server/animation-frame.js.map +1 -0
  228. package/dist/server/appear.js +727 -0
  229. package/dist/server/appear.js.map +1 -0
  230. package/dist/server/arc.js +21 -0
  231. package/dist/server/arc.js.map +1 -0
  232. package/dist/server/bridge.js +69 -0
  233. package/dist/server/bridge.js.map +1 -0
  234. package/dist/server/complete.js +30 -0
  235. package/dist/server/complete.js.map +1 -0
  236. package/dist/server/config.js +2 -0
  237. package/dist/server/config.js.map +1 -0
  238. package/dist/server/create-animate.js +41 -0
  239. package/dist/server/create-animate.js.map +1 -0
  240. package/dist/server/create-ward.js +1001 -0
  241. package/dist/server/create-ward.js.map +1 -0
  242. package/dist/server/cycle-index.js +17 -0
  243. package/dist/server/cycle-index.js.map +1 -0
  244. package/dist/server/cycle.js +31 -0
  245. package/dist/server/cycle.js.map +1 -0
  246. package/dist/server/directive.js +80 -0
  247. package/dist/server/directive.js.map +1 -0
  248. package/dist/server/drag-constraints.js +76 -0
  249. package/dist/server/drag-constraints.js.map +1 -0
  250. package/dist/server/drag-controls.js +51 -0
  251. package/dist/server/drag-controls.js.map +1 -0
  252. package/dist/server/drag-samples.js +40 -0
  253. package/dist/server/drag-samples.js.map +1 -0
  254. package/dist/server/drag-sensor.js +35 -0
  255. package/dist/server/drag-sensor.js.map +1 -0
  256. package/dist/server/drag-track.js +817 -0
  257. package/dist/server/drag-track.js.map +1 -0
  258. package/dist/server/drag-transition.js +56 -0
  259. package/dist/server/drag-transition.js.map +1 -0
  260. package/dist/server/drag.js +44 -0
  261. package/dist/server/drag.js.map +1 -0
  262. package/dist/server/element-style.js +67 -0
  263. package/dist/server/element-style.js.map +1 -0
  264. package/dist/server/element.js +353 -0
  265. package/dist/server/element.js.map +1 -0
  266. package/dist/server/feature-section.js +17 -0
  267. package/dist/server/feature-section.js.map +1 -0
  268. package/dist/server/feature.js +261 -0
  269. package/dist/server/feature.js.map +1 -0
  270. package/dist/server/features/all.js +10 -0
  271. package/dist/server/features/all.js.map +1 -0
  272. package/dist/server/features/colors.js +33 -0
  273. package/dist/server/features/colors.js.map +1 -0
  274. package/dist/server/features/dom-animation.js +7 -0
  275. package/dist/server/features/dom-animation.js.map +1 -0
  276. package/dist/server/features/dom-max.js +4 -0
  277. package/dist/server/features/dom-max.js.map +1 -0
  278. package/dist/server/features/drag.js +28 -0
  279. package/dist/server/features/drag.js.map +1 -0
  280. package/dist/server/features/focus.js +18 -0
  281. package/dist/server/features/focus.js.map +1 -0
  282. package/dist/server/features/hover.js +18 -0
  283. package/dist/server/features/hover.js.map +1 -0
  284. package/dist/server/features/in-view.js +18 -0
  285. package/dist/server/features/in-view.js.map +1 -0
  286. package/dist/server/features/input.js +30 -0
  287. package/dist/server/features/input.js.map +1 -0
  288. package/dist/server/features/keys.js +19 -0
  289. package/dist/server/features/keys.js.map +1 -0
  290. package/dist/server/features/layout.js +33 -0
  291. package/dist/server/features/layout.js.map +1 -0
  292. package/dist/server/features/pan.js +18 -0
  293. package/dist/server/features/pan.js.map +1 -0
  294. package/dist/server/features/press.js +12 -0
  295. package/dist/server/features/press.js.map +1 -0
  296. package/dist/server/focus-sensor.js +23 -0
  297. package/dist/server/focus-sensor.js.map +1 -0
  298. package/dist/server/frame-time.js +40 -0
  299. package/dist/server/frame-time.js.map +1 -0
  300. package/dist/server/gesture-callbacks.js +172 -0
  301. package/dist/server/gesture-callbacks.js.map +1 -0
  302. package/dist/server/gesture-features.js +29 -0
  303. package/dist/server/gesture-features.js.map +1 -0
  304. package/dist/server/gesture-info.js +43 -0
  305. package/dist/server/gesture-info.js.map +1 -0
  306. package/dist/server/hover-sensor.js +29 -0
  307. package/dist/server/hover-sensor.js.map +1 -0
  308. package/dist/server/imperative.js +614 -0
  309. package/dist/server/imperative.js.map +1 -0
  310. package/dist/server/index.js +165 -0
  311. package/dist/server/index.js.map +1 -0
  312. package/dist/server/instant.js +51 -0
  313. package/dist/server/instant.js.map +1 -0
  314. package/dist/server/layout-group.js +27 -0
  315. package/dist/server/layout-group.js.map +1 -0
  316. package/dist/server/layout-member.js +362 -0
  317. package/dist/server/layout-member.js.map +1 -0
  318. package/dist/server/layout-projection.js +19 -0
  319. package/dist/server/layout-projection.js.map +1 -0
  320. package/dist/server/layout.js +90 -0
  321. package/dist/server/layout.js.map +1 -0
  322. package/dist/server/live-style.js +313 -0
  323. package/dist/server/live-style.js.map +1 -0
  324. package/dist/server/live-value.js +252 -0
  325. package/dist/server/live-value.js.map +1 -0
  326. package/dist/server/motion-props.js +172 -0
  327. package/dist/server/motion-props.js.map +1 -0
  328. package/dist/server/owner-scope.js +29 -0
  329. package/dist/server/owner-scope.js.map +1 -0
  330. package/dist/server/page-point.js +92 -0
  331. package/dist/server/page-point.js.map +1 -0
  332. package/dist/server/presence-controller.js +1324 -0
  333. package/dist/server/presence-controller.js.map +1 -0
  334. package/dist/server/presence-record.js +27 -0
  335. package/dist/server/presence-record.js.map +1 -0
  336. package/dist/server/presence.js +207 -0
  337. package/dist/server/presence.js.map +1 -0
  338. package/dist/server/press-sensor.js +30 -0
  339. package/dist/server/press-sensor.js.map +1 -0
  340. package/dist/server/press.js +24 -0
  341. package/dist/server/press.js.map +1 -0
  342. package/dist/server/provider.js +439 -0
  343. package/dist/server/provider.js.map +1 -0
  344. package/dist/server/reactivity.js +9 -0
  345. package/dist/server/reactivity.js.map +1 -0
  346. package/dist/server/reorder-input.js +46 -0
  347. package/dist/server/reorder-input.js.map +1 -0
  348. package/dist/server/reorder.js +543 -0
  349. package/dist/server/reorder.js.map +1 -0
  350. package/dist/server/retarget-legs.js +1019 -0
  351. package/dist/server/retarget-legs.js.map +1 -0
  352. package/dist/server/runtime.js +249 -0
  353. package/dist/server/runtime.js.map +1 -0
  354. package/dist/server/sensors.js +172 -0
  355. package/dist/server/sensors.js.map +1 -0
  356. package/dist/server/server-interpolators.js +20 -0
  357. package/dist/server/server-interpolators.js.map +1 -0
  358. package/dist/server/server.js +20 -0
  359. package/dist/server/server.js.map +1 -0
  360. package/dist/server/solid-reactivity.js +26 -0
  361. package/dist/server/solid-reactivity.js.map +1 -0
  362. package/dist/server/spine.js +2939 -0
  363. package/dist/server/spine.js.map +1 -0
  364. package/dist/server/stagger.js +13 -0
  365. package/dist/server/stagger.js.map +1 -0
  366. package/dist/server/unstable/v2/bridge.js +76 -0
  367. package/dist/server/unstable/v2/bridge.js.map +1 -0
  368. package/dist/server/unstable/v2/complete.js +29 -0
  369. package/dist/server/unstable/v2/complete.js.map +1 -0
  370. package/dist/server/unstable/v2/config-view.js +111 -0
  371. package/dist/server/unstable/v2/config-view.js.map +1 -0
  372. package/dist/server/unstable/v2/create-animate.js +102 -0
  373. package/dist/server/unstable/v2/create-animate.js.map +1 -0
  374. package/dist/server/unstable/v2/cycle.js +30 -0
  375. package/dist/server/unstable/v2/cycle.js.map +1 -0
  376. package/dist/server/unstable/v2/drag-sensor.js +34 -0
  377. package/dist/server/unstable/v2/drag-sensor.js.map +1 -0
  378. package/dist/server/unstable/v2/element.js +402 -0
  379. package/dist/server/unstable/v2/element.js.map +1 -0
  380. package/dist/server/unstable/v2/feature-section.js +27 -0
  381. package/dist/server/unstable/v2/feature-section.js.map +1 -0
  382. package/dist/server/unstable/v2/focus-sensor.js +23 -0
  383. package/dist/server/unstable/v2/focus-sensor.js.map +1 -0
  384. package/dist/server/unstable/v2/hover-sensor.js +28 -0
  385. package/dist/server/unstable/v2/hover-sensor.js.map +1 -0
  386. package/dist/server/unstable/v2/index.js +114 -0
  387. package/dist/server/unstable/v2/index.js.map +1 -0
  388. package/dist/server/unstable/v2/layout-projection.js +18 -0
  389. package/dist/server/unstable/v2/layout-projection.js.map +1 -0
  390. package/dist/server/unstable/v2/layout.js +88 -0
  391. package/dist/server/unstable/v2/layout.js.map +1 -0
  392. package/dist/server/unstable/v2/lifecycle.js +455 -0
  393. package/dist/server/unstable/v2/lifecycle.js.map +1 -0
  394. package/dist/server/unstable/v2/live-value.js +264 -0
  395. package/dist/server/unstable/v2/live-value.js.map +1 -0
  396. package/dist/server/unstable/v2/presence-handle.js +146 -0
  397. package/dist/server/unstable/v2/presence-handle.js.map +1 -0
  398. package/dist/server/unstable/v2/presence-hooks.js +142 -0
  399. package/dist/server/unstable/v2/presence-hooks.js.map +1 -0
  400. package/dist/server/unstable/v2/presence.js +142 -0
  401. package/dist/server/unstable/v2/presence.js.map +1 -0
  402. package/dist/server/unstable/v2/press-sensor.js +29 -0
  403. package/dist/server/unstable/v2/press-sensor.js.map +1 -0
  404. package/dist/server/unstable/v2/provider.js +475 -0
  405. package/dist/server/unstable/v2/provider.js.map +1 -0
  406. package/dist/server/unstable/v2/reorder.js +733 -0
  407. package/dist/server/unstable/v2/reorder.js.map +1 -0
  408. package/dist/server/unstable/v2/sensors.js +138 -0
  409. package/dist/server/unstable/v2/sensors.js.map +1 -0
  410. package/dist/server/unstable/v2/solid-reactivity.js +82 -0
  411. package/dist/server/unstable/v2/solid-reactivity.js.map +1 -0
  412. package/dist/server/unstable/v2/variant-node.js +395 -0
  413. package/dist/server/unstable/v2/variant-node.js.map +1 -0
  414. package/dist/server/unstable/v2/w.js +23 -0
  415. package/dist/server/unstable/v2/w.js.map +1 -0
  416. package/dist/server/unstable/v2/waiters.js +185 -0
  417. package/dist/server/unstable/v2/waiters.js.map +1 -0
  418. package/dist/server/unstable/v2/ward.js +1653 -0
  419. package/dist/server/unstable/v2/ward.js.map +1 -0
  420. package/dist/server/unstable/v2/wardic-config.js +49 -0
  421. package/dist/server/unstable/v2/wardic-config.js.map +1 -0
  422. package/dist/server/unstable/v2/wardic.js +16 -0
  423. package/dist/server/unstable/v2/wardic.js.map +1 -0
  424. package/dist/server/variant-node.js +308 -0
  425. package/dist/server/variant-node.js.map +1 -0
  426. package/dist/server/variant-target.js +224 -0
  427. package/dist/server/variant-target.js.map +1 -0
  428. package/dist/server/variant-tree.js +394 -0
  429. package/dist/server/variant-tree.js.map +1 -0
  430. package/dist/server/variants.js +43 -0
  431. package/dist/server/variants.js.map +1 -0
  432. package/dist/server/w.js +25 -0
  433. package/dist/server/w.js.map +1 -0
  434. package/dist/server/ward-keys.js +2 -0
  435. package/dist/server/ward-keys.js.map +1 -0
  436. package/dist/server/wardic-component.js +74 -0
  437. package/dist/server/wardic-component.js.map +1 -0
  438. package/dist/server/wardic-config-value.js +91 -0
  439. package/dist/server/wardic-config-value.js.map +1 -0
  440. package/dist/server/wardic-config.js +42 -0
  441. package/dist/server/wardic-config.js.map +1 -0
  442. package/dist/server/wardic.js +31 -0
  443. package/dist/server/wardic.js.map +1 -0
  444. package/dist/solid/animation-controls.d.ts +104 -0
  445. package/dist/solid/animation-controls.d.ts.map +1 -0
  446. package/dist/solid/animation-controls.js +129 -0
  447. package/dist/solid/animation-controls.js.map +1 -0
  448. package/dist/solid/animation-frame.d.ts +11 -0
  449. package/dist/solid/animation-frame.d.ts.map +1 -0
  450. package/dist/solid/animation-frame.js +31 -0
  451. package/dist/solid/animation-frame.js.map +1 -0
  452. package/dist/solid/appear.d.ts +205 -0
  453. package/dist/solid/appear.d.ts.map +1 -0
  454. package/dist/solid/appear.js +519 -0
  455. package/dist/solid/appear.js.map +1 -0
  456. package/dist/solid/arc.d.ts +25 -0
  457. package/dist/solid/arc.d.ts.map +1 -0
  458. package/dist/solid/arc.js +21 -0
  459. package/dist/solid/arc.js.map +1 -0
  460. package/dist/solid/bridge.d.ts +53 -0
  461. package/dist/solid/bridge.d.ts.map +1 -0
  462. package/dist/solid/bridge.js +66 -0
  463. package/dist/solid/bridge.js.map +1 -0
  464. package/dist/solid/complete.d.ts +31 -0
  465. package/dist/solid/complete.d.ts.map +1 -0
  466. package/dist/solid/complete.js +27 -0
  467. package/dist/solid/complete.js.map +1 -0
  468. package/dist/solid/config.d.ts +693 -0
  469. package/dist/solid/config.d.ts.map +1 -0
  470. package/dist/solid/config.js +2 -0
  471. package/dist/solid/config.js.map +1 -0
  472. package/dist/solid/create-animate.d.ts +17 -0
  473. package/dist/solid/create-animate.d.ts.map +1 -0
  474. package/dist/solid/create-animate.js +42 -0
  475. package/dist/solid/create-animate.js.map +1 -0
  476. package/dist/solid/create-ward.d.ts +278 -0
  477. package/dist/solid/create-ward.d.ts.map +1 -0
  478. package/dist/solid/create-ward.jsx +874 -0
  479. package/dist/solid/create-ward.jsx.map +1 -0
  480. package/dist/solid/cycle-index.d.ts +7 -0
  481. package/dist/solid/cycle-index.d.ts.map +1 -0
  482. package/dist/solid/cycle-index.js +17 -0
  483. package/dist/solid/cycle-index.js.map +1 -0
  484. package/dist/solid/cycle.d.ts +21 -0
  485. package/dist/solid/cycle.d.ts.map +1 -0
  486. package/dist/solid/cycle.js +31 -0
  487. package/dist/solid/cycle.js.map +1 -0
  488. package/dist/solid/directive.d.ts +21 -0
  489. package/dist/solid/directive.d.ts.map +1 -0
  490. package/dist/solid/directive.js +76 -0
  491. package/dist/solid/directive.js.map +1 -0
  492. package/dist/solid/drag-constraints.d.ts +46 -0
  493. package/dist/solid/drag-constraints.d.ts.map +1 -0
  494. package/dist/solid/drag-constraints.js +49 -0
  495. package/dist/solid/drag-constraints.js.map +1 -0
  496. package/dist/solid/drag-controls.d.ts +50 -0
  497. package/dist/solid/drag-controls.d.ts.map +1 -0
  498. package/dist/solid/drag-controls.js +51 -0
  499. package/dist/solid/drag-controls.js.map +1 -0
  500. package/dist/solid/drag-samples.d.ts +34 -0
  501. package/dist/solid/drag-samples.d.ts.map +1 -0
  502. package/dist/solid/drag-samples.js +28 -0
  503. package/dist/solid/drag-samples.js.map +1 -0
  504. package/dist/solid/drag-sensor.d.ts +23 -0
  505. package/dist/solid/drag-sensor.d.ts.map +1 -0
  506. package/dist/solid/drag-sensor.js +33 -0
  507. package/dist/solid/drag-sensor.js.map +1 -0
  508. package/dist/solid/drag-track.d.ts +227 -0
  509. package/dist/solid/drag-track.d.ts.map +1 -0
  510. package/dist/solid/drag-track.js +631 -0
  511. package/dist/solid/drag-track.js.map +1 -0
  512. package/dist/solid/drag-transition.d.ts +20 -0
  513. package/dist/solid/drag-transition.d.ts.map +1 -0
  514. package/dist/solid/drag-transition.js +31 -0
  515. package/dist/solid/drag-transition.js.map +1 -0
  516. package/dist/solid/drag.d.ts +23 -0
  517. package/dist/solid/drag.d.ts.map +1 -0
  518. package/dist/solid/drag.js +44 -0
  519. package/dist/solid/drag.js.map +1 -0
  520. package/dist/solid/element-style.d.ts +60 -0
  521. package/dist/solid/element-style.d.ts.map +1 -0
  522. package/dist/solid/element-style.js +50 -0
  523. package/dist/solid/element-style.js.map +1 -0
  524. package/dist/solid/element.d.ts +73 -0
  525. package/dist/solid/element.d.ts.map +1 -0
  526. package/dist/solid/element.jsx +326 -0
  527. package/dist/solid/element.jsx.map +1 -0
  528. package/dist/solid/feature-section.d.ts +18 -0
  529. package/dist/solid/feature-section.d.ts.map +1 -0
  530. package/dist/solid/feature-section.js +13 -0
  531. package/dist/solid/feature-section.js.map +1 -0
  532. package/dist/solid/feature.d.ts +114 -0
  533. package/dist/solid/feature.d.ts.map +1 -0
  534. package/dist/solid/feature.js +248 -0
  535. package/dist/solid/feature.js.map +1 -0
  536. package/dist/solid/features/all.d.ts +10 -0
  537. package/dist/solid/features/all.d.ts.map +1 -0
  538. package/dist/solid/features/all.js +10 -0
  539. package/dist/solid/features/all.js.map +1 -0
  540. package/dist/solid/features/colors.d.ts +12 -0
  541. package/dist/solid/features/colors.d.ts.map +1 -0
  542. package/dist/solid/features/colors.js +34 -0
  543. package/dist/solid/features/colors.js.map +1 -0
  544. package/dist/solid/features/dom-animation.d.ts +11 -0
  545. package/dist/solid/features/dom-animation.d.ts.map +1 -0
  546. package/dist/solid/features/dom-animation.js +7 -0
  547. package/dist/solid/features/dom-animation.js.map +1 -0
  548. package/dist/solid/features/dom-max.d.ts +10 -0
  549. package/dist/solid/features/dom-max.d.ts.map +1 -0
  550. package/dist/solid/features/dom-max.js +4 -0
  551. package/dist/solid/features/dom-max.js.map +1 -0
  552. package/dist/solid/features/drag.d.ts +5 -0
  553. package/dist/solid/features/drag.d.ts.map +1 -0
  554. package/dist/solid/features/drag.js +28 -0
  555. package/dist/solid/features/drag.js.map +1 -0
  556. package/dist/solid/features/focus.d.ts +5 -0
  557. package/dist/solid/features/focus.d.ts.map +1 -0
  558. package/dist/solid/features/focus.js +16 -0
  559. package/dist/solid/features/focus.js.map +1 -0
  560. package/dist/solid/features/hover.d.ts +5 -0
  561. package/dist/solid/features/hover.d.ts.map +1 -0
  562. package/dist/solid/features/hover.js +16 -0
  563. package/dist/solid/features/hover.js.map +1 -0
  564. package/dist/solid/features/in-view.d.ts +5 -0
  565. package/dist/solid/features/in-view.d.ts.map +1 -0
  566. package/dist/solid/features/in-view.js +16 -0
  567. package/dist/solid/features/in-view.js.map +1 -0
  568. package/dist/solid/features/input.d.ts +26 -0
  569. package/dist/solid/features/input.d.ts.map +1 -0
  570. package/dist/solid/features/input.js +31 -0
  571. package/dist/solid/features/input.js.map +1 -0
  572. package/dist/solid/features/keys.d.ts +70 -0
  573. package/dist/solid/features/keys.d.ts.map +1 -0
  574. package/dist/solid/features/keys.js +26 -0
  575. package/dist/solid/features/keys.js.map +1 -0
  576. package/dist/solid/features/layout.d.ts +32 -0
  577. package/dist/solid/features/layout.d.ts.map +1 -0
  578. package/dist/solid/features/layout.js +34 -0
  579. package/dist/solid/features/layout.js.map +1 -0
  580. package/dist/solid/features/pan.d.ts +5 -0
  581. package/dist/solid/features/pan.d.ts.map +1 -0
  582. package/dist/solid/features/pan.js +16 -0
  583. package/dist/solid/features/pan.js.map +1 -0
  584. package/dist/solid/features/press.d.ts +11 -0
  585. package/dist/solid/features/press.d.ts.map +1 -0
  586. package/dist/solid/features/press.js +10 -0
  587. package/dist/solid/features/press.js.map +1 -0
  588. package/dist/solid/focus-sensor.d.ts +19 -0
  589. package/dist/solid/focus-sensor.d.ts.map +1 -0
  590. package/dist/solid/focus-sensor.js +23 -0
  591. package/dist/solid/focus-sensor.js.map +1 -0
  592. package/dist/solid/frame-time.d.ts +21 -0
  593. package/dist/solid/frame-time.d.ts.map +1 -0
  594. package/dist/solid/frame-time.js +41 -0
  595. package/dist/solid/frame-time.js.map +1 -0
  596. package/dist/solid/gesture-callbacks.d.ts +53 -0
  597. package/dist/solid/gesture-callbacks.d.ts.map +1 -0
  598. package/dist/solid/gesture-callbacks.js +184 -0
  599. package/dist/solid/gesture-callbacks.js.map +1 -0
  600. package/dist/solid/gesture-features.d.ts +28 -0
  601. package/dist/solid/gesture-features.d.ts.map +1 -0
  602. package/dist/solid/gesture-features.js +29 -0
  603. package/dist/solid/gesture-features.js.map +1 -0
  604. package/dist/solid/gesture-info.d.ts +59 -0
  605. package/dist/solid/gesture-info.d.ts.map +1 -0
  606. package/dist/solid/gesture-info.js +23 -0
  607. package/dist/solid/gesture-info.js.map +1 -0
  608. package/dist/solid/hover-sensor.d.ts +19 -0
  609. package/dist/solid/hover-sensor.d.ts.map +1 -0
  610. package/dist/solid/hover-sensor.js +23 -0
  611. package/dist/solid/hover-sensor.js.map +1 -0
  612. package/dist/solid/imperative.d.ts +195 -0
  613. package/dist/solid/imperative.d.ts.map +1 -0
  614. package/dist/solid/imperative.js +536 -0
  615. package/dist/solid/imperative.js.map +1 -0
  616. package/dist/solid/index.d.ts +180 -0
  617. package/dist/solid/index.d.ts.map +1 -0
  618. package/dist/solid/index.js +165 -0
  619. package/dist/solid/index.js.map +1 -0
  620. package/dist/solid/instant.d.ts +44 -0
  621. package/dist/solid/instant.d.ts.map +1 -0
  622. package/dist/solid/instant.js +49 -0
  623. package/dist/solid/instant.js.map +1 -0
  624. package/dist/solid/layout-group.d.ts +14 -0
  625. package/dist/solid/layout-group.d.ts.map +1 -0
  626. package/dist/solid/layout-group.js +27 -0
  627. package/dist/solid/layout-group.js.map +1 -0
  628. package/dist/solid/layout-member.d.ts +117 -0
  629. package/dist/solid/layout-member.d.ts.map +1 -0
  630. package/dist/solid/layout-member.js +164 -0
  631. package/dist/solid/layout-member.js.map +1 -0
  632. package/dist/solid/layout-projection.d.ts +22 -0
  633. package/dist/solid/layout-projection.d.ts.map +1 -0
  634. package/dist/solid/layout-projection.js +19 -0
  635. package/dist/solid/layout-projection.js.map +1 -0
  636. package/dist/solid/layout.d.ts +76 -0
  637. package/dist/solid/layout.d.ts.map +1 -0
  638. package/dist/solid/layout.jsx +80 -0
  639. package/dist/solid/layout.jsx.map +1 -0
  640. package/dist/solid/live-style.d.ts +147 -0
  641. package/dist/solid/live-style.d.ts.map +1 -0
  642. package/dist/solid/live-style.js +304 -0
  643. package/dist/solid/live-style.js.map +1 -0
  644. package/dist/solid/live-value.d.ts +144 -0
  645. package/dist/solid/live-value.d.ts.map +1 -0
  646. package/dist/solid/live-value.js +223 -0
  647. package/dist/solid/live-value.js.map +1 -0
  648. package/dist/solid/motion-props.d.ts +75 -0
  649. package/dist/solid/motion-props.d.ts.map +1 -0
  650. package/dist/solid/motion-props.js +314 -0
  651. package/dist/solid/motion-props.js.map +1 -0
  652. package/dist/solid/owner-scope.d.ts +16 -0
  653. package/dist/solid/owner-scope.d.ts.map +1 -0
  654. package/dist/solid/owner-scope.js +31 -0
  655. package/dist/solid/owner-scope.js.map +1 -0
  656. package/dist/solid/page-point.d.ts +35 -0
  657. package/dist/solid/page-point.d.ts.map +1 -0
  658. package/dist/solid/page-point.js +87 -0
  659. package/dist/solid/page-point.js.map +1 -0
  660. package/dist/solid/presence-controller.d.ts +122 -0
  661. package/dist/solid/presence-controller.d.ts.map +1 -0
  662. package/dist/solid/presence-controller.js +1207 -0
  663. package/dist/solid/presence-controller.js.map +1 -0
  664. package/dist/solid/presence-record.d.ts +167 -0
  665. package/dist/solid/presence-record.d.ts.map +1 -0
  666. package/dist/solid/presence-record.js +26 -0
  667. package/dist/solid/presence-record.js.map +1 -0
  668. package/dist/solid/presence.d.ts +95 -0
  669. package/dist/solid/presence.d.ts.map +1 -0
  670. package/dist/solid/presence.jsx +195 -0
  671. package/dist/solid/presence.jsx.map +1 -0
  672. package/dist/solid/press-sensor.d.ts +20 -0
  673. package/dist/solid/press-sensor.d.ts.map +1 -0
  674. package/dist/solid/press-sensor.js +24 -0
  675. package/dist/solid/press-sensor.js.map +1 -0
  676. package/dist/solid/press.d.ts +24 -0
  677. package/dist/solid/press.d.ts.map +1 -0
  678. package/dist/solid/press.js +19 -0
  679. package/dist/solid/press.js.map +1 -0
  680. package/dist/solid/provider.d.ts +263 -0
  681. package/dist/solid/provider.d.ts.map +1 -0
  682. package/dist/solid/provider.jsx +411 -0
  683. package/dist/solid/provider.jsx.map +1 -0
  684. package/dist/solid/reactivity.d.ts +27 -0
  685. package/dist/solid/reactivity.d.ts.map +1 -0
  686. package/dist/solid/reactivity.js +9 -0
  687. package/dist/solid/reactivity.js.map +1 -0
  688. package/dist/solid/reorder-input.d.ts +22 -0
  689. package/dist/solid/reorder-input.d.ts.map +1 -0
  690. package/dist/solid/reorder-input.js +45 -0
  691. package/dist/solid/reorder-input.js.map +1 -0
  692. package/dist/solid/reorder.d.ts +241 -0
  693. package/dist/solid/reorder.d.ts.map +1 -0
  694. package/dist/solid/reorder.jsx +427 -0
  695. package/dist/solid/reorder.jsx.map +1 -0
  696. package/dist/solid/retarget-legs.d.ts +189 -0
  697. package/dist/solid/retarget-legs.d.ts.map +1 -0
  698. package/dist/solid/retarget-legs.js +825 -0
  699. package/dist/solid/retarget-legs.js.map +1 -0
  700. package/dist/solid/runtime.d.ts +179 -0
  701. package/dist/solid/runtime.d.ts.map +1 -0
  702. package/dist/solid/runtime.js +237 -0
  703. package/dist/solid/runtime.js.map +1 -0
  704. package/dist/solid/sensors.d.ts +95 -0
  705. package/dist/solid/sensors.d.ts.map +1 -0
  706. package/dist/solid/sensors.js +154 -0
  707. package/dist/solid/sensors.js.map +1 -0
  708. package/dist/solid/server-interpolators.d.ts +13 -0
  709. package/dist/solid/server-interpolators.d.ts.map +1 -0
  710. package/dist/solid/server-interpolators.js +20 -0
  711. package/dist/solid/server-interpolators.js.map +1 -0
  712. package/dist/solid/server.d.ts +9 -0
  713. package/dist/solid/server.d.ts.map +1 -0
  714. package/dist/solid/server.js +20 -0
  715. package/dist/solid/server.js.map +1 -0
  716. package/dist/solid/solid-reactivity.d.ts +3 -0
  717. package/dist/solid/solid-reactivity.d.ts.map +1 -0
  718. package/dist/solid/solid-reactivity.js +19 -0
  719. package/dist/solid/solid-reactivity.js.map +1 -0
  720. package/dist/solid/spine.d.ts +597 -0
  721. package/dist/solid/spine.d.ts.map +1 -0
  722. package/dist/solid/spine.js +2761 -0
  723. package/dist/solid/spine.js.map +1 -0
  724. package/dist/solid/stagger.d.ts +29 -0
  725. package/dist/solid/stagger.d.ts.map +1 -0
  726. package/dist/solid/stagger.js +13 -0
  727. package/dist/solid/stagger.js.map +1 -0
  728. package/dist/solid/unstable/v2/bridge.d.ts +33 -0
  729. package/dist/solid/unstable/v2/bridge.d.ts.map +1 -0
  730. package/dist/solid/unstable/v2/bridge.js +76 -0
  731. package/dist/solid/unstable/v2/bridge.js.map +1 -0
  732. package/dist/solid/unstable/v2/complete.d.ts +21 -0
  733. package/dist/solid/unstable/v2/complete.d.ts.map +1 -0
  734. package/dist/solid/unstable/v2/complete.js +27 -0
  735. package/dist/solid/unstable/v2/complete.js.map +1 -0
  736. package/dist/solid/unstable/v2/config-view.d.ts +49 -0
  737. package/dist/solid/unstable/v2/config-view.d.ts.map +1 -0
  738. package/dist/solid/unstable/v2/config-view.js +114 -0
  739. package/dist/solid/unstable/v2/config-view.js.map +1 -0
  740. package/dist/solid/unstable/v2/create-animate.d.ts +31 -0
  741. package/dist/solid/unstable/v2/create-animate.d.ts.map +1 -0
  742. package/dist/solid/unstable/v2/create-animate.js +102 -0
  743. package/dist/solid/unstable/v2/create-animate.js.map +1 -0
  744. package/dist/solid/unstable/v2/cycle.d.ts +20 -0
  745. package/dist/solid/unstable/v2/cycle.d.ts.map +1 -0
  746. package/dist/solid/unstable/v2/cycle.js +30 -0
  747. package/dist/solid/unstable/v2/cycle.js.map +1 -0
  748. package/dist/solid/unstable/v2/drag-sensor.d.ts +23 -0
  749. package/dist/solid/unstable/v2/drag-sensor.d.ts.map +1 -0
  750. package/dist/solid/unstable/v2/drag-sensor.js +32 -0
  751. package/dist/solid/unstable/v2/drag-sensor.js.map +1 -0
  752. package/dist/solid/unstable/v2/element.d.ts +178 -0
  753. package/dist/solid/unstable/v2/element.d.ts.map +1 -0
  754. package/dist/solid/unstable/v2/element.jsx +325 -0
  755. package/dist/solid/unstable/v2/element.jsx.map +1 -0
  756. package/dist/solid/unstable/v2/feature-section.d.ts +12 -0
  757. package/dist/solid/unstable/v2/feature-section.d.ts.map +1 -0
  758. package/dist/solid/unstable/v2/feature-section.js +23 -0
  759. package/dist/solid/unstable/v2/feature-section.js.map +1 -0
  760. package/dist/solid/unstable/v2/focus-sensor.d.ts +13 -0
  761. package/dist/solid/unstable/v2/focus-sensor.d.ts.map +1 -0
  762. package/dist/solid/unstable/v2/focus-sensor.js +23 -0
  763. package/dist/solid/unstable/v2/focus-sensor.js.map +1 -0
  764. package/dist/solid/unstable/v2/hover-sensor.d.ts +12 -0
  765. package/dist/solid/unstable/v2/hover-sensor.d.ts.map +1 -0
  766. package/dist/solid/unstable/v2/hover-sensor.js +22 -0
  767. package/dist/solid/unstable/v2/hover-sensor.js.map +1 -0
  768. package/dist/solid/unstable/v2/index.d.ts +131 -0
  769. package/dist/solid/unstable/v2/index.d.ts.map +1 -0
  770. package/dist/solid/unstable/v2/index.js +114 -0
  771. package/dist/solid/unstable/v2/index.js.map +1 -0
  772. package/dist/solid/unstable/v2/layout-projection.d.ts +21 -0
  773. package/dist/solid/unstable/v2/layout-projection.d.ts.map +1 -0
  774. package/dist/solid/unstable/v2/layout-projection.js +18 -0
  775. package/dist/solid/unstable/v2/layout-projection.js.map +1 -0
  776. package/dist/solid/unstable/v2/layout.d.ts +47 -0
  777. package/dist/solid/unstable/v2/layout.d.ts.map +1 -0
  778. package/dist/solid/unstable/v2/layout.jsx +62 -0
  779. package/dist/solid/unstable/v2/layout.jsx.map +1 -0
  780. package/dist/solid/unstable/v2/lifecycle.d.ts +267 -0
  781. package/dist/solid/unstable/v2/lifecycle.d.ts.map +1 -0
  782. package/dist/solid/unstable/v2/lifecycle.js +457 -0
  783. package/dist/solid/unstable/v2/lifecycle.js.map +1 -0
  784. package/dist/solid/unstable/v2/live-value.d.ts +146 -0
  785. package/dist/solid/unstable/v2/live-value.d.ts.map +1 -0
  786. package/dist/solid/unstable/v2/live-value.js +235 -0
  787. package/dist/solid/unstable/v2/live-value.js.map +1 -0
  788. package/dist/solid/unstable/v2/presence-handle.d.ts +55 -0
  789. package/dist/solid/unstable/v2/presence-handle.d.ts.map +1 -0
  790. package/dist/solid/unstable/v2/presence-handle.js +119 -0
  791. package/dist/solid/unstable/v2/presence-handle.js.map +1 -0
  792. package/dist/solid/unstable/v2/presence-hooks.d.ts +51 -0
  793. package/dist/solid/unstable/v2/presence-hooks.d.ts.map +1 -0
  794. package/dist/solid/unstable/v2/presence-hooks.js +115 -0
  795. package/dist/solid/unstable/v2/presence-hooks.js.map +1 -0
  796. package/dist/solid/unstable/v2/presence.d.ts +89 -0
  797. package/dist/solid/unstable/v2/presence.d.ts.map +1 -0
  798. package/dist/solid/unstable/v2/presence.jsx +107 -0
  799. package/dist/solid/unstable/v2/presence.jsx.map +1 -0
  800. package/dist/solid/unstable/v2/press-sensor.d.ts +13 -0
  801. package/dist/solid/unstable/v2/press-sensor.d.ts.map +1 -0
  802. package/dist/solid/unstable/v2/press-sensor.js +23 -0
  803. package/dist/solid/unstable/v2/press-sensor.js.map +1 -0
  804. package/dist/solid/unstable/v2/provider.d.ts +239 -0
  805. package/dist/solid/unstable/v2/provider.d.ts.map +1 -0
  806. package/dist/solid/unstable/v2/provider.jsx +423 -0
  807. package/dist/solid/unstable/v2/provider.jsx.map +1 -0
  808. package/dist/solid/unstable/v2/reorder.d.ts +292 -0
  809. package/dist/solid/unstable/v2/reorder.d.ts.map +1 -0
  810. package/dist/solid/unstable/v2/reorder.jsx +525 -0
  811. package/dist/solid/unstable/v2/reorder.jsx.map +1 -0
  812. package/dist/solid/unstable/v2/sensors.d.ts +91 -0
  813. package/dist/solid/unstable/v2/sensors.d.ts.map +1 -0
  814. package/dist/solid/unstable/v2/sensors.js +124 -0
  815. package/dist/solid/unstable/v2/sensors.js.map +1 -0
  816. package/dist/solid/unstable/v2/solid-reactivity.d.ts +61 -0
  817. package/dist/solid/unstable/v2/solid-reactivity.d.ts.map +1 -0
  818. package/dist/solid/unstable/v2/solid-reactivity.js +62 -0
  819. package/dist/solid/unstable/v2/solid-reactivity.js.map +1 -0
  820. package/dist/solid/unstable/v2/variant-node.d.ts +51 -0
  821. package/dist/solid/unstable/v2/variant-node.d.ts.map +1 -0
  822. package/dist/solid/unstable/v2/variant-node.js +336 -0
  823. package/dist/solid/unstable/v2/variant-node.js.map +1 -0
  824. package/dist/solid/unstable/v2/w.d.ts +42 -0
  825. package/dist/solid/unstable/v2/w.d.ts.map +1 -0
  826. package/dist/solid/unstable/v2/w.jsx +22 -0
  827. package/dist/solid/unstable/v2/w.jsx.map +1 -0
  828. package/dist/solid/unstable/v2/waiters.d.ts +72 -0
  829. package/dist/solid/unstable/v2/waiters.d.ts.map +1 -0
  830. package/dist/solid/unstable/v2/waiters.js +175 -0
  831. package/dist/solid/unstable/v2/waiters.js.map +1 -0
  832. package/dist/solid/unstable/v2/ward.d.ts +393 -0
  833. package/dist/solid/unstable/v2/ward.d.ts.map +1 -0
  834. package/dist/solid/unstable/v2/ward.jsx +1475 -0
  835. package/dist/solid/unstable/v2/ward.jsx.map +1 -0
  836. package/dist/solid/unstable/v2/wardic-config.d.ts +68 -0
  837. package/dist/solid/unstable/v2/wardic-config.d.ts.map +1 -0
  838. package/dist/solid/unstable/v2/wardic-config.jsx +28 -0
  839. package/dist/solid/unstable/v2/wardic-config.jsx.map +1 -0
  840. package/dist/solid/unstable/v2/wardic.d.ts +28 -0
  841. package/dist/solid/unstable/v2/wardic.d.ts.map +1 -0
  842. package/dist/solid/unstable/v2/wardic.jsx +16 -0
  843. package/dist/solid/unstable/v2/wardic.jsx.map +1 -0
  844. package/dist/solid/variant-node.d.ts +32 -0
  845. package/dist/solid/variant-node.d.ts.map +1 -0
  846. package/dist/solid/variant-node.js +257 -0
  847. package/dist/solid/variant-node.js.map +1 -0
  848. package/dist/solid/variant-target.d.ts +102 -0
  849. package/dist/solid/variant-target.d.ts.map +1 -0
  850. package/dist/solid/variant-target.js +180 -0
  851. package/dist/solid/variant-target.js.map +1 -0
  852. package/dist/solid/variant-tree.d.ts +349 -0
  853. package/dist/solid/variant-tree.d.ts.map +1 -0
  854. package/dist/solid/variant-tree.js +358 -0
  855. package/dist/solid/variant-tree.js.map +1 -0
  856. package/dist/solid/variants.d.ts +21 -0
  857. package/dist/solid/variants.d.ts.map +1 -0
  858. package/dist/solid/variants.js +43 -0
  859. package/dist/solid/variants.js.map +1 -0
  860. package/dist/solid/w.d.ts +42 -0
  861. package/dist/solid/w.d.ts.map +1 -0
  862. package/dist/solid/w.jsx +23 -0
  863. package/dist/solid/w.jsx.map +1 -0
  864. package/dist/solid/ward-keys.d.ts +236 -0
  865. package/dist/solid/ward-keys.d.ts.map +1 -0
  866. package/dist/solid/ward-keys.js +2 -0
  867. package/dist/solid/ward-keys.js.map +1 -0
  868. package/dist/solid/wardic-component.d.ts +50 -0
  869. package/dist/solid/wardic-component.d.ts.map +1 -0
  870. package/dist/solid/wardic-component.js +74 -0
  871. package/dist/solid/wardic-component.js.map +1 -0
  872. package/dist/solid/wardic-config-value.d.ts +87 -0
  873. package/dist/solid/wardic-config-value.d.ts.map +1 -0
  874. package/dist/solid/wardic-config-value.js +106 -0
  875. package/dist/solid/wardic-config-value.js.map +1 -0
  876. package/dist/solid/wardic-config.d.ts +69 -0
  877. package/dist/solid/wardic-config.d.ts.map +1 -0
  878. package/dist/solid/wardic-config.jsx +30 -0
  879. package/dist/solid/wardic-config.jsx.map +1 -0
  880. package/dist/solid/wardic.d.ts +45 -0
  881. package/dist/solid/wardic.d.ts.map +1 -0
  882. package/dist/solid/wardic.jsx +31 -0
  883. package/dist/solid/wardic.jsx.map +1 -0
  884. package/package.json +98 -4
  885. package/src/animation-controls.ts +204 -0
  886. package/src/animation-frame.ts +32 -0
  887. package/src/appear.ts +804 -0
  888. package/src/arc.ts +34 -0
  889. package/src/bridge.ts +98 -0
  890. package/src/complete.ts +45 -0
  891. package/src/config.ts +805 -0
  892. package/src/create-animate.ts +41 -0
  893. package/src/create-ward.tsx +1271 -0
  894. package/src/cycle-index.ts +18 -0
  895. package/src/cycle.ts +34 -0
  896. package/src/directive.ts +87 -0
  897. package/src/drag-constraints.ts +103 -0
  898. package/src/drag-controls.ts +94 -0
  899. package/src/drag-samples.ts +54 -0
  900. package/src/drag-sensor.ts +46 -0
  901. package/src/drag-track.ts +937 -0
  902. package/src/drag-transition.ts +43 -0
  903. package/src/drag.ts +58 -0
  904. package/src/element-style.ts +112 -0
  905. package/src/element.tsx +400 -0
  906. package/src/feature-section.ts +33 -0
  907. package/src/feature.ts +342 -0
  908. package/src/features/all.ts +18 -0
  909. package/src/features/colors.ts +36 -0
  910. package/src/features/dom-animation.ts +15 -0
  911. package/src/features/dom-max.ts +11 -0
  912. package/src/features/drag.ts +30 -0
  913. package/src/features/focus.ts +17 -0
  914. package/src/features/hover.ts +17 -0
  915. package/src/features/in-view.ts +17 -0
  916. package/src/features/input.ts +42 -0
  917. package/src/features/keys.ts +89 -0
  918. package/src/features/layout.ts +54 -0
  919. package/src/features/pan.ts +17 -0
  920. package/src/features/press.ts +17 -0
  921. package/src/focus-sensor.ts +32 -0
  922. package/src/frame-time.ts +45 -0
  923. package/src/gesture-callbacks.ts +212 -0
  924. package/src/gesture-features.ts +35 -0
  925. package/src/gesture-info.ts +81 -0
  926. package/src/hover-sensor.ts +32 -0
  927. package/src/imperative.ts +782 -0
  928. package/src/index.ts +334 -0
  929. package/src/instant.ts +90 -0
  930. package/src/layout-group.ts +32 -0
  931. package/src/layout-member.ts +300 -0
  932. package/src/layout-projection.ts +28 -0
  933. package/src/layout.tsx +127 -0
  934. package/src/live-style.ts +449 -0
  935. package/src/live-value.ts +378 -0
  936. package/src/motion-props.ts +325 -0
  937. package/src/owner-scope.ts +31 -0
  938. package/src/page-point.ts +98 -0
  939. package/src/presence-controller.ts +1483 -0
  940. package/src/presence-record.ts +189 -0
  941. package/src/presence.tsx +269 -0
  942. package/src/press-sensor.ts +33 -0
  943. package/src/press.ts +40 -0
  944. package/src/provider.tsx +526 -0
  945. package/src/reactivity.ts +29 -0
  946. package/src/reorder-input.ts +53 -0
  947. package/src/reorder.tsx +703 -0
  948. package/src/retarget-legs.ts +1048 -0
  949. package/src/runtime.ts +388 -0
  950. package/src/sensors.ts +189 -0
  951. package/src/server-interpolators.ts +33 -0
  952. package/src/server.ts +21 -0
  953. package/src/solid-reactivity.ts +21 -0
  954. package/src/spine.ts +3385 -0
  955. package/src/stagger.ts +31 -0
  956. package/src/unstable/v2/bridge.ts +79 -0
  957. package/src/unstable/v2/complete.ts +47 -0
  958. package/src/unstable/v2/config-view.ts +156 -0
  959. package/src/unstable/v2/create-animate.ts +123 -0
  960. package/src/unstable/v2/cycle.ts +33 -0
  961. package/src/unstable/v2/drag-sensor.ts +44 -0
  962. package/src/unstable/v2/element.tsx +478 -0
  963. package/src/unstable/v2/feature-section.ts +32 -0
  964. package/src/unstable/v2/focus-sensor.ts +31 -0
  965. package/src/unstable/v2/hover-sensor.ts +30 -0
  966. package/src/unstable/v2/index.ts +270 -0
  967. package/src/unstable/v2/layout-projection.ts +27 -0
  968. package/src/unstable/v2/layout.tsx +89 -0
  969. package/src/unstable/v2/lifecycle.ts +612 -0
  970. package/src/unstable/v2/live-value.ts +414 -0
  971. package/src/unstable/v2/presence-handle.ts +159 -0
  972. package/src/unstable/v2/presence-hooks.ts +157 -0
  973. package/src/unstable/v2/presence.tsx +174 -0
  974. package/src/unstable/v2/press-sensor.ts +31 -0
  975. package/src/unstable/v2/provider.tsx +524 -0
  976. package/src/unstable/v2/reorder.tsx +880 -0
  977. package/src/unstable/v2/sensors.ts +169 -0
  978. package/src/unstable/v2/solid-reactivity.ts +69 -0
  979. package/src/unstable/v2/variant-node.ts +446 -0
  980. package/src/unstable/v2/w.tsx +49 -0
  981. package/src/unstable/v2/waiters.ts +212 -0
  982. package/src/unstable/v2/ward.tsx +2068 -0
  983. package/src/unstable/v2/wardic-config.tsx +84 -0
  984. package/src/unstable/v2/wardic.tsx +41 -0
  985. package/src/variant-node.ts +368 -0
  986. package/src/variant-target.ts +234 -0
  987. package/src/variant-tree.ts +638 -0
  988. package/src/variants.ts +47 -0
  989. package/src/w.tsx +59 -0
  990. package/src/ward-keys.ts +343 -0
  991. package/src/wardic-component.ts +96 -0
  992. package/src/wardic-config-value.ts +150 -0
  993. package/src/wardic-config.tsx +78 -0
  994. package/src/wardic.tsx +59 -0
@@ -0,0 +1,703 @@
1
+ /**
2
+ * `<Reorder>` for Solid (ADR-0020): drag items to reorder a list, built headless first
3
+ * (D8). `createReorderGroup` and `createReorderItem` are spreads for any elements and
4
+ * `use:reorderItem` a directive, so a list outside JSX components (a web component, a
5
+ * plain element) reorders the same way; `Reorder.Group` / `Reorder.Item` are built on
6
+ * them.
7
+ *
8
+ * The **Reorder group** is `@wardic/dom`'s `makeReorderController` (core's
9
+ * `Reorder.Group` underneath): it reads each item's slot, drag offset and layout
10
+ * version from its projection node's handle, runs the **Crossover** on each drag
11
+ * sample, calls the app's `onReorder`, runs **Auto-scroll**, and detects the axis after
12
+ * every Measure pass. This file adds Solid's half: the reactive config, the lifecycle,
13
+ * the elements and the components. The app owns `values` and keys its items with
14
+ * `<For>`. Each item is a `layout` node with a drag the group's axis decides per
15
+ * gesture, raised while dragged, whose `touch-action` follows the group's axis. A
16
+ * `values` change re-measures, so a reorder the app makes itself animates.
17
+ *
18
+ * Each item is also a tab stop for the group's **Keyboard reorder** (ADR-0037): `tabindex="0"`
19
+ * unless the app gives its own, and `aria-describedby` pointing at the group's instructions (on
20
+ * the client, with the app's ids kept). Its keys, blurs and presses reach the controller, which
21
+ * speaks through the Environment's `Announcer`; a lift turns its `whileDrag` on. `keyboard: false`
22
+ * on the group turns all of that off; `move` still announces.
23
+ *
24
+ * Observability: the controller logs its own `wardic.reorder:` events through the
25
+ * runtime (cold path: once per reorder, wait, gesture, edge or axis change, never per
26
+ * sample); this file logs nothing.
27
+ */
28
+ import * as InputSource from "@wardic/core/InputSource"
29
+ import * as CoreReorder from "@wardic/core/Reorder"
30
+ import * as DomAnnouncer from "@wardic/dom/DomAnnouncer"
31
+ import * as ReorderController from "@wardic/dom/ReorderController"
32
+ import * as Style from "@wardic/dom/Style"
33
+ import { mergeRefs } from "@solid-primitives/refs"
34
+ import * as Arr from "effect/Array"
35
+ import * as Bool from "effect/Boolean"
36
+ import * as Effect from "effect/Effect"
37
+ import { constUndefined, identity, pipe } from "effect/Function"
38
+ import * as Match from "effect/Match"
39
+ import * as Option from "effect/Option"
40
+ import * as Predicate from "effect/Predicate"
41
+ import * as Scope from "effect/Scope"
42
+ import * as UndefinedOr from "effect/UndefinedOr"
43
+ import {
44
+ type Accessor,
45
+ type Component,
46
+ createContext,
47
+ createEffect,
48
+ createMemo,
49
+ createSignal,
50
+ createUniqueId,
51
+ type JSX,
52
+ mergeProps,
53
+ on,
54
+ onCleanup,
55
+ splitProps,
56
+ untrack,
57
+ useContext,
58
+ } from "solid-js"
59
+ import { Dynamic } from "solid-js/web"
60
+ import * as OwnerScope from "./owner-scope.ts"
61
+ import { runWatch, useBrought, useWardicGate, useWardicRuntime } from "./provider.tsx"
62
+ import { useLayoutServices } from "./layout-projection.ts"
63
+ import { watchItemInput } from "./reorder-input.ts"
64
+ import type { Feature } from "./feature.ts"
65
+ import { drag } from "./features/drag.ts"
66
+ import { focus } from "./features/focus.ts"
67
+ import { hover } from "./features/hover.ts"
68
+ import { inView } from "./features/in-view.ts"
69
+ import { layout } from "./features/layout.ts"
70
+ import { pan } from "./features/pan.ts"
71
+ import { press } from "./features/press.ts"
72
+ import { inputIn } from "./gesture-features.ts"
73
+ import type { WardicRuntime } from "./runtime.ts"
74
+ import { controlledOf, runSpine, type SpineInternals, createWardWith, type Ward, type WardProps, type WardUserProps } from "./create-ward.tsx"
75
+ import type { WardConfig } from "./config.ts"
76
+ import { isServer } from "./server.ts"
77
+ import { createVariantNode } from "./variant-node.ts"
78
+ import { accessorOf } from "./spine.ts"
79
+ import { changesContext } from "./variant-tree.ts"
80
+ import { useVariantContext } from "./variants.ts"
81
+ import { configOfMotion, type WardicProps } from "./element.tsx"
82
+ import { MOTION_PROPS, type WardicMotionProps } from "./motion-props.ts"
83
+ import { w } from "./w.tsx"
84
+
85
+ /**
86
+ * A Reorder group's config: its `values` in order, and `onReorder`, given each new order to set them
87
+ * from. Give an accessor of it for values that change.
88
+ */
89
+ export interface ReorderGroupConfig<V> {
90
+ /** The list's values, in order. Your app owns them. */
91
+ readonly values: ReadonlyArray<V>
92
+ /** Given each new order, as an item crosses another: set `values` from it. */
93
+ readonly onReorder: (values: Array<V>) => void
94
+ /**
95
+ * Called once at the end of a reorder that changed the order: a drag let go, or a keyboard lift
96
+ * dropped, with the order, the item that moved, and its index `from` and `to`. What an app saves.
97
+ * Not called for a keyboard cancel, nor for `move`.
98
+ */
99
+ // #257 item 3.
100
+ readonly onReorderEnd?: (end: ReorderController.End<V>) => void
101
+ /**
102
+ * Called as an item is taken in hand, by a drag starting (past its threshold, not at the press) or a
103
+ * keyboard lift, with its index then.
104
+ */
105
+ // A Reorder hold's start (#348, ADR-0020 *Amendment (#348)*).
106
+ readonly onHoldStart?: (start: ReorderController.HoldStart<V>) => void
107
+ /**
108
+ * Called once as an item in hand is let go, however: let go or dropped (`how: "drop"`), put back with
109
+ * Escape (`"cancel"`), or unmounted (`"unmount"`). After `onReorderEnd` when it moved.
110
+ */
111
+ // A Reorder hold's end (#348).
112
+ readonly onHoldEnd?: (end: ReorderController.HoldEnd<V>) => void
113
+ /** The list's direction: `"y"`, a column, or `"x"`, a row. Left out, it's found from the items' boxes. */
114
+ readonly axis?: CoreReorder.Axis
115
+ /** The keyboard reorder: on unless `false`. Off, the items have no keys, no tab stop and no instructions. */
116
+ // ADR-0037.
117
+ readonly keyboard?: boolean
118
+ /**
119
+ * What a screen reader hears at each step of a keyboard reorder, over the English defaults: `lift`,
120
+ * `step`, `drop`, `cancel`, and `move` for a move in code, each a function of the item's `label`,
121
+ * `position` and the list's `count`.
122
+ */
123
+ readonly announcements?: Partial<CoreReorder.Announcements<V>>
124
+ /** What each item's `aria-describedby` reads, over the English default. */
125
+ readonly instructions?: string
126
+ }
127
+
128
+ /** What a group's spread takes from the app: its `ref` and its `style`, which may be a live getter. */
129
+ export interface ReorderGroupUserProps {
130
+ readonly ref?: (el: HTMLElement) => void
131
+ readonly style?: JSX.CSSProperties | undefined
132
+ }
133
+
134
+ /** What a group's spread gives its element: its `ref`, and its `style` over `overflow-anchor: none`. */
135
+ export interface ReorderGroupSpread {
136
+ readonly ref: (el: HTMLElement) => void
137
+ readonly style: JSX.CSSProperties
138
+ }
139
+
140
+ /**
141
+ * `createReorderGroup`'s group: call it to spread on the list's element, `{...list()}`, or
142
+ * `{...list({ ref, style })}` with a `ref` and a `style` of your own.
143
+ */
144
+ export type ReorderGroup<V> = ((userProps?: ReorderGroupUserProps) => ReorderGroupSpread) & {
145
+ /** The group's state: `@wardic/core`'s `Reorder.Group`. */
146
+ readonly group: CoreReorder.Group<V>
147
+ /** The list's direction: the config's, else the one found from the items' boxes. */
148
+ readonly axis: Accessor<CoreReorder.Axis>
149
+ /** Moves `value` to `toIndex`, as a button of your own would, and announces it to a screen reader. */
150
+ readonly move: (value: V, toIndex: number) => void
151
+ /** Whether the items reorder from the keyboard. */
152
+ readonly keyboard: Accessor<boolean>
153
+ /** The instructions the items' `aria-describedby` reads. */
154
+ readonly instructions: Accessor<string>
155
+ /** @internal for the items: the group's controller. */
156
+ readonly controller: ReorderController.ReorderController<V>
157
+ }
158
+
159
+ /**
160
+ * A `<Reorder>` item's `layout`: `true`, its place and size animating (the default), or `"position"`,
161
+ * its place alone, its size changing at once, as Motion's `Reorder.Item` takes.
162
+ */
163
+ // Its Layout mode (ADR-0009, *Amendment (#42)*).
164
+ export type ReorderItemLayout = true | "position"
165
+
166
+ /**
167
+ * A `<Reorder>` item's config: its `value`, its `layout` ({@link ReorderItemLayout}), and any motion
168
+ * prop but `layoutId` and `drag`, which the group sets.
169
+ */
170
+ export type ReorderItemConfig<V> = { readonly value: V; readonly layout?: ReorderItemLayout } & Omit<WardConfig, "layout" | "layoutId" | "drag">
171
+
172
+ /** An item's `layout` as its Layout mode: `"position"`, else `true` (ADR-0009, *Amendment (#42)*). */
173
+ const itemLayoutOf = (layout: unknown): ReorderItemLayout =>
174
+ Bool.match(layout === "position", { onTrue: (): ReorderItemLayout => "position", onFalse: (): ReorderItemLayout => true })
175
+
176
+ /** What a group's Scope reports when one of its finalizers fails as its owner goes. */
177
+ const CLOSE_FAILED = "wardic.reorder: a finalizer failed"
178
+
179
+ /**
180
+ * Makes a list of your own elements reorderable, by dragging or from the keyboard: spread the group on
181
+ * the list's element, and make each item with `createReorderItem`, keyed with `<For>`. Your app owns
182
+ * `values`, and sets them from `onReorder`. It gives the element `overflow-anchor: none`, so the
183
+ * browser doesn't scroll the page as items move. `Reorder.Group` is built on it.
184
+ *
185
+ * @example
186
+ * const list = createReorderGroup(() => ({ values: items(), onReorder: setItems }))
187
+ * <ul {...list()}>
188
+ * <For each={items()}>
189
+ * {(item) => {
190
+ * const row = createReorderItem(list, { value: item })
191
+ * return <li {...row()}>{item}</li>
192
+ * }}
193
+ * </For>
194
+ * </ul>
195
+ * @see https://wardic.dev/reference/solid/reorder/reorder-group
196
+ */
197
+ // ADR-0020. `overflow-anchor: none` goes under the app's style, as Motion's Group.tsx:187-195 at
198
+ // 16c6122 does. The axis is the config's, else detected from the items' boxes after every Measure pass
199
+ // (for their touch-action); a drag resolves its own at its start. On a server it renders the
200
+ // element's style and nothing else: no controller, no runtime; its `group`, `move` and `controller` do
201
+ // nothing (ADR-0021).
202
+ export function createReorderGroup<V>(config: ReorderGroupConfig<V> | Accessor<ReorderGroupConfig<V>>): ReorderGroup<V> {
203
+ const cfg: Accessor<ReorderGroupConfig<V>> = accessorOf(config)
204
+ if (isServer) {
205
+ useWardicRuntime()
206
+ return serverReorderGroup(cfg)
207
+ }
208
+ const [detected, setDetected] = createSignal<CoreReorder.Axis>("y")
209
+ const runtime = useWardicRuntime()
210
+ // The group's controller, over the provider's projection system and the Environment's channel to
211
+ // assistive technology (ADR-0037), in a Scope of the group's own, closed on unmount (#132's PR 3),
212
+ // set before the controller is built, so one that fails as it's built leaves nothing (#618).
213
+ const scope = OwnerScope.open(runtime)
214
+ onCleanup(() => OwnerScope.close(runtime, scope, CLOSE_FAILED))
215
+ const controller = runtime.runSync(
216
+ ReorderController.make<V>({
217
+ values: () => untrack(cfg).values,
218
+ onReorder: (values) => untrack(cfg).onReorder(values),
219
+ onReorderEnd: (end) => UndefinedOr.map(untrack(cfg).onReorderEnd, (tell) => tell(end)),
220
+ onHoldStart: (start) => UndefinedOr.map(untrack(cfg).onHoldStart, (tell) => tell(start)),
221
+ onHoldEnd: (end) => UndefinedOr.map(untrack(cfg).onHoldEnd, (tell) => tell(end)),
222
+ axis: () => Option.fromUndefinedOr(untrack(cfg).axis),
223
+ onAxis: setDetected,
224
+ keyedWith: "<For>",
225
+ keyboard: () => untrack(cfg).keyboard !== false,
226
+ announcements: () => Option.fromUndefinedOr(untrack(cfg).announcements),
227
+ }).pipe(Effect.provide(useLayoutServices()), Scope.provide(scope)),
228
+ )
229
+ // The app's axis, else the detected one. When the app's is cleared, detected here, from the boxes the
230
+ // engine holds, so the items' touch-action follows in the same update (#257's audit: an effect that
231
+ // detected it wrote a signal the items read a step late). A Measure pass's change comes through `onAxis`.
232
+ const axis: Accessor<CoreReorder.Axis> = createMemo(() =>
233
+ UndefinedOr.match(cfg().axis, {
234
+ onDefined: identity,
235
+ onUndefined: () => {
236
+ detected()
237
+ return controller.detect()
238
+ },
239
+ }),
240
+ )
241
+
242
+ // A `values` change re-measures, so the items animate to their new slots whoever
243
+ // reordered them (as LayoutGroup's layoutDependency does).
244
+ createEffect(on(() => cfg().values, () => controller.valuesChanged(), { defer: true }))
245
+
246
+ const spread = (userProps: ReorderGroupUserProps = NO_GROUP_PROPS): ReorderGroupSpread => ({
247
+ ref: mergeRefs(userProps.ref, (el: HTMLElement) => controller.attach(el)),
248
+ get style() {
249
+ return pipe(userProps.style, Style.over(ReorderController.GROUP_STYLE)) as JSX.CSSProperties
250
+ },
251
+ })
252
+
253
+ const move = (value: V, toIndex: number): void => controller.move(value, toIndex)
254
+ return Object.assign(spread, { group: controller.group, axis, move, controller, ...keyboardOf(cfg) })
255
+ }
256
+
257
+ /** A group's keyboard reorder settings, as accessors (ADR-0037). */
258
+ const keyboardOf = <V,>(cfg: Accessor<ReorderGroupConfig<V>>) => ({
259
+ keyboard: (): boolean => cfg().keyboard !== false,
260
+ instructions: (): string => UndefinedOr.match(cfg().instructions, { onUndefined: () => ReorderController.DEFAULT_INSTRUCTIONS, onDefined: (text: string) => text }),
261
+ })
262
+
263
+ /**
264
+ * The spine additions of an item with `value` in `group` (D8: shared by
265
+ * {@link createReorderItem} and `use:reorderItem`): a `layout` node registered with the
266
+ * group, raised while dragged, whose drag takes the group's axis at each start and
267
+ * feeds the controller its samples, and whose `touch-action` follows the group's axis.
268
+ */
269
+ /**
270
+ * What an item reads from its group: its controller's driver for the item, and the group's
271
+ * axis. Any {@link ReorderGroup} is one. Its value type appears only in `item`'s
272
+ * parameters, so `ItemGroup<never>` accepts a group of any value type.
273
+ */
274
+ type ItemGroup<V> = {
275
+ readonly controller: Pick<ReorderController.ReorderController<V>, "item">
276
+ readonly axis: Accessor<CoreReorder.Axis>
277
+ readonly keyboard: Accessor<boolean>
278
+ readonly instructions: Accessor<string>
279
+ }
280
+
281
+ /**
282
+ * An item's `touch-action`, its group's axis's, under its style: none when its own presses don't drag
283
+ * it (`dragListener={false}`, #431), as with its other drag defaults, so a list dragged by its handles
284
+ * scrolls by touch.
285
+ */
286
+ const touchActionOf = <V,>(group: ItemGroup<V>, listens: boolean): SpineInternals["baseStyle"] =>
287
+ Bool.match(listens, { onTrue: () => () => ({ "touch-action": Style.reorderTouchAction(group.axis()) }), onFalse: constUndefined })
288
+
289
+ /**
290
+ * What an item brings (ADR-0067 decision 12), whatever its section has (#511): its layout node, its
291
+ * drag, and every other gesture, so `whileHover` or `whileTap` on an item works as on Motion's, for
292
+ * about 0.5 KB gzipped beside the drag's.
293
+ */
294
+ const ITEM_BRINGS: ReadonlyArray<Feature> = [layout, drag, hover, press, focus, inView, pan]
295
+
296
+ const itemInternals = <V,>(group: ItemGroup<V>, value: V, element: Accessor<HTMLElement | undefined>, runtime: WardicRuntime, listens: boolean): SpineInternals => {
297
+ // Its keys' input, the `drag` Feature's it brings (#511).
298
+ const services = useBrought(ITEM_BRINGS)
299
+ // A keyboard lift turns the item's `whileDrag` on (ADR-0037).
300
+ const [lifted, setLifted] = createSignal(false)
301
+ const driver = group.controller.item(value, () => Option.fromUndefinedOr(element()), setLifted)
302
+ // An item unmounted mid-gesture gets no end sample: its disposal ends the gesture (and a lift).
303
+ onCleanup(driver.dispose)
304
+ // Its keys, blurs and presses (ADR-0037), watched in a Scope of their own for as long as the element
305
+ // is this one, with no fiber at rest (#379).
306
+ createEffect(
307
+ on(element, (el) => {
308
+ if (Predicate.isNotUndefined(el)) {
309
+ runWatch(runtime, (onDefect) =>
310
+ Effect.provideService(watchItemInput(el, driver, (effect) => void runtime.runFork(effect), onDefect), InputSource.InputSource, inputIn(services())),
311
+ )
312
+ }
313
+ }),
314
+ )
315
+ return {
316
+ brings: ITEM_BRINGS,
317
+ dragAxis: () => dragAxisFor(driver.dragAxis()),
318
+ onDragSample: driver.onSample,
319
+ onLayoutHandle: (handle) => onCleanup(driver.register(handle)),
320
+ raiseWhileDragged: true,
321
+ keysTaken: true,
322
+ lifted,
323
+ baseStyle: touchActionOf(group, listens),
324
+ }
325
+ }
326
+
327
+ /**
328
+ * What an item adds to its element for the keyboard reorder (ADR-0037): `tabindex="0"` while the
329
+ * group's keyboard is on and the app gave no `tabIndex` of its own, and `aria-describedby` with
330
+ * the group's instructions (`describedBy`, set on the client) after the app's own ids.
331
+ */
332
+ const keyboardAttributes = (group: ItemGroup<never>, user: ReorderItemUserProps = NO_ITEM_PROPS, describedBy: Accessor<string | undefined>) => ({
333
+ get tabindex() {
334
+ return UndefinedOr.match(user.tabIndex, {
335
+ onDefined: identity,
336
+ onUndefined: () => Bool.match(group.keyboard(), { onTrue: () => 0, onFalse: constUndefined }),
337
+ })
338
+ },
339
+ get "aria-describedby"() {
340
+ const ids = Arr.filter([user["aria-describedby"], Bool.match(group.keyboard(), { onTrue: describedBy, onFalse: constUndefined })], Predicate.isNotUndefined)
341
+ return Bool.match(ids.length === 0, { onTrue: () => undefined, onFalse: () => ids.join(" ") })
342
+ },
343
+ })
344
+
345
+ /**
346
+ * What an item's spread takes from the app: a ward's `ref` and `style`, plus its own `tabIndex`, which
347
+ * wins over the keyboard reorder's, and its own `aria-describedby` ids, kept before the instructions'.
348
+ */
349
+ export type ReorderItemUserProps = WardUserProps & {
350
+ readonly tabIndex?: number | undefined
351
+ readonly "aria-describedby"?: string | undefined
352
+ }
353
+
354
+ /** A `<Reorder>` item's spread: a {@link WardProps}, plus its keyboard reorder's `tabindex` and `aria-describedby`. */
355
+ export type ReorderItemSpread = WardProps & {
356
+ readonly tabindex?: number | undefined
357
+ readonly "aria-describedby"?: string | undefined
358
+ }
359
+
360
+ /** {@link createReorderItem}'s result: call it to spread onto the item's element, as a `Ward`. */
361
+ export type ReorderItemWard = ((userProps?: ReorderItemUserProps) => ReorderItemSpread) & Pick<Ward, "Provider">
362
+
363
+ /**
364
+ * Makes an element an item of a Reorder group: spread it on the element, `{...row()}`, as a ward.
365
+ * `value` is its value in the group's `values`, read once; the rest are its motion props, but
366
+ * `layout` (`true` or `"position"`), `layoutId` and `drag`, which the group sets. It's a tab stop for
367
+ * the keyboard reorder: give your own `tabIndex` and `aria-describedby` in the spread's props.
368
+ *
369
+ * @example
370
+ * const row = createReorderItem(list, { value: item, whileDrag: { scale: 1.05 } })
371
+ * <li {...row()}>{item.name}</li>
372
+ * @see https://wardic.dev/reference/solid/reorder/reorder-item
373
+ */
374
+ // ADR-0020, ADR-0037. The element takes the drag defaults, with the group's axis's touch-action, which
375
+ // its style can override.
376
+ export function createReorderItem<V>(group: ReorderGroup<V>, config: ReorderItemConfig<V> | Accessor<ReorderItemConfig<V>>): ReorderItemWard {
377
+ const cfg: Accessor<ReorderItemConfig<V>> = accessorOf(config)
378
+ const value = untrack(cfg).value
379
+ const listens = untrack(cfg).dragListener !== false
380
+ const [element, setElement] = createSignal<HTMLElement>()
381
+ // On a server the item renders the drag defaults with its group's touch-action and
382
+ // joins no controller (ADR-0021).
383
+ const internals: SpineInternals = Bool.match(isServer, {
384
+ onTrue: (): SpineInternals => ({ brings: ITEM_BRINGS, dragAxis: () => true, baseStyle: touchActionOf(group, listens) }),
385
+ onFalse: () => itemInternals(group, value, element, useWardicRuntime(), listens),
386
+ })
387
+ const ward = createWardWith(() => ({ ...withoutValue(cfg()), layout: itemLayoutOf(cfg().layout) }), internals)
388
+ // The instructions element exists on the client only, so `aria-describedby` waits for the mount.
389
+ const [describedBy, setDescribedBy] = createSignal<string>()
390
+ if (!isServer) {
391
+ createEffect(on([element, group.instructions] as const, ([el, text]) => {
392
+ if (Predicate.isNotUndefined(el)) setDescribedBy(DomAnnouncer.instructionsId(DomAnnouncer.documentOf(el), text))
393
+ }))
394
+ }
395
+ // The item's element, for Auto-scroll's held scroll shift.
396
+ // The user's style is passed on as a getter, so a live one stays live (WardUserProps).
397
+ const item = (userProps: ReorderItemUserProps = NO_ITEM_PROPS): ReorderItemSpread =>
398
+ mergeProps(
399
+ ward({
400
+ ref: mergeRefs(userProps.ref, setElement),
401
+ get style() {
402
+ return userProps.style
403
+ },
404
+ }),
405
+ keyboardAttributes(group as unknown as ItemGroup<never>, userProps, describedBy),
406
+ )
407
+ return Object.assign(item, {
408
+ Provider: ward.Provider,
409
+ })
410
+ }
411
+
412
+ const noop = (): void => {}
413
+
414
+ /** A group's spread's user props when it's given none. */
415
+ const NO_GROUP_PROPS: ReorderGroupUserProps = {}
416
+ const NO_ITEM_PROPS: ReorderItemUserProps = {}
417
+
418
+ /** A Reorder item's drag axis for its gesture's axis: a grid's `xy` is a free drag. Built once, at module load. */
419
+ const dragAxisFor: (axis: CoreReorder.Axis) => true | "x" | "y" = Match.type<CoreReorder.Axis>().pipe(
420
+ Match.when("xy", (): true => true),
421
+ Match.orElse((axis) => axis as "x" | "y"),
422
+ )
423
+
424
+ /**
425
+ * {@link createReorderGroup} during a server render (ADR-0021): the group's element style
426
+ * (`overflow-anchor: none` under the user's) and the app's axis, else `"y"`; its `group`,
427
+ * `move` and `controller` do nothing.
428
+ */
429
+ const serverReorderGroup = <V,>(cfg: Accessor<ReorderGroupConfig<V>>): ReorderGroup<V> => {
430
+ const spread = (userProps: ReorderGroupUserProps = NO_GROUP_PROPS): ReorderGroupSpread => ({
431
+ ref: UndefinedOr.match(userProps.ref, { onUndefined: () => noop, onDefined: identity }),
432
+ style: pipe(userProps.style, Style.over(ReorderController.GROUP_STYLE)) as JSX.CSSProperties,
433
+ })
434
+ const controller = ReorderController.inert as unknown as ReorderController.ReorderController<V>
435
+ const axis = (): CoreReorder.Axis => UndefinedOr.match(cfg().axis, { onUndefined: () => "y" as const, onDefined: (a: CoreReorder.Axis) => a })
436
+ return Object.assign(spread, { group: controller.group, axis, move: noop, controller, ...keyboardOf(cfg) })
437
+ }
438
+
439
+ const withoutValue = <V,>(config: ReorderItemConfig<V>): WardConfig => {
440
+ const { value: _value, ...rest } = config
441
+ return rest
442
+ }
443
+
444
+ /** `use:reorderItem`'s value: the item's `group` and its `value`, and its motion props. */
445
+ // The group of any value type, as an `ItemGroup<never>`.
446
+ export type ReorderItemDirectiveValue = {
447
+ readonly group: ItemGroup<never>
448
+ readonly value: unknown
449
+ readonly layout?: ReorderItemLayout
450
+ } & Omit<WardConfig, "layout" | "layoutId" | "drag">
451
+
452
+ /**
453
+ * `use:reorderItem`: makes an element an item of a Reorder group, as `use:wardic` makes it a Wardic
454
+ * element: `<li use:reorderItem={{ group: list, value: item }}>`. In the browser only: its drag
455
+ * defaults and `touch-action` are set as it mounts, not in the server's markup, so a server-rendered
456
+ * item takes `createReorderItem` or `Reorder.Item`. Import `reorderItem` in the module that uses it.
457
+ *
458
+ * @see https://wardic.dev/reference/solid/reorder/reorder-item
459
+ */
460
+ // ADR-0003: a directive is client-only. The import keeps `reorderItem` from being dropped as unused, as
461
+ // for `wardic`.
462
+ export function reorderItem(el: HTMLElement, value: Accessor<ReorderItemDirectiveValue>): void {
463
+ const first = untrack(value)
464
+ // Animation controls for its `animate` (#433): each change they make is its entry.
465
+ const { cfg, controls } = controlledOf((): WardConfig => {
466
+ const { group: _group, value: _value, ...rest } = value()
467
+ return { ...rest, layout: itemLayoutOf(rest.layout) }
468
+ })
469
+ // As `use:wardic`: a Variant child joins the nearest variant context; it provides none (#50).
470
+ const node = createVariantNode(cfg, useVariantContext(), UndefinedOr.map(controls, (c) => c.change))
471
+ const runtime = useWardicRuntime()
472
+ const group = first.group as ItemGroup<unknown>
473
+ // The keyboard reorder's tab stop and instructions (ADR-0037), on the element itself: the app's
474
+ // own `tabindex` wins, and its `aria-describedby` ids are kept.
475
+ createEffect(() => {
476
+ if (Bool.not(group.keyboard())) return
477
+ if (!el.hasAttribute("tabindex")) el.setAttribute("tabindex", "0")
478
+ const id = DomAnnouncer.instructionsId(DomAnnouncer.documentOf(el), group.instructions())
479
+ const ids = Option.getOrElse(Option.fromNullishOr(el.getAttribute("aria-describedby")), () => "").split(" ").filter((t) => t !== "")
480
+ if (!ids.includes(id)) el.setAttribute("aria-describedby", [...ids, id].join(" "))
481
+ })
482
+ runSpine({
483
+ runtime,
484
+ gate: useWardicGate(),
485
+ id: createUniqueId(),
486
+ el: () => el,
487
+ cfg,
488
+ controls,
489
+ parent: node.inherited,
490
+ extraDelay: node.extraDelay,
491
+ byName: node.names,
492
+ canStart: node.canStart,
493
+ bindGestures: node.bindGestures,
494
+ onFrame: node.onFrame,
495
+ makeSink: (element) => ({ target: element }),
496
+ internal: itemInternals(group, first.value, () => el, runtime, first.dragListener !== false),
497
+ })
498
+ }
499
+
500
+ declare module "solid-js" {
501
+ // biome-ignore lint/style/useNamingConvention: augmenting Solid's JSX namespace.
502
+ namespace JSX {
503
+ interface Directives {
504
+ reorderItem: ReorderItemDirectiveValue
505
+ }
506
+ }
507
+ }
508
+
509
+ // --- Components (ADR-0020, D8: built on the headless API) --------------------------
510
+
511
+ const GroupContext = createContext<ReorderGroup<unknown>>()
512
+
513
+ /** An element tag a `<Reorder>` group or item can render. */
514
+ export type ReorderElementTag = keyof JSX.IntrinsicElements
515
+
516
+ /**
517
+ * `Reorder.Group`'s props: its group's config, `as`, and the props of the element it renders, motion
518
+ * props included.
519
+ */
520
+ export type ReorderGroupProps<V, Tag extends ReorderElementTag = "ul"> = {
521
+ /** The list's values, in order. Your app owns them. */
522
+ readonly values: ReadonlyArray<V>
523
+ /** Given each new order, as an item crosses another: set `values` from it. */
524
+ readonly onReorder: (values: Array<V>) => void
525
+ /** Called once at the end of a reorder that changed the order, with the order and the item that moved: what an app saves. */
526
+ readonly onReorderEnd?: ((end: ReorderController.End<V>) => void) | undefined
527
+ /** Called as an item is taken in hand, by a drag starting or a keyboard lift. */
528
+ readonly onHoldStart?: ((start: ReorderController.HoldStart<V>) => void) | undefined
529
+ /** Called once as an item in hand is let go, however; after `onReorderEnd` when it moved. */
530
+ readonly onHoldEnd?: ((end: ReorderController.HoldEnd<V>) => void) | undefined
531
+ /** The list's direction: `"y"`, a column, or `"x"`, a row. Left out, it's found from the items' boxes. */
532
+ readonly axis?: CoreReorder.Axis | undefined
533
+ /** The keyboard reorder: on unless `false`. */
534
+ readonly keyboard?: boolean | undefined
535
+ /** What a screen reader hears at each step of a keyboard reorder, over the English defaults. */
536
+ readonly announcements?: Partial<CoreReorder.Announcements<V>> | undefined
537
+ /** What each item's `aria-describedby` reads, over the English default. */
538
+ readonly instructions?: string | undefined
539
+ /** The element it renders: `"ul"` by default. Read once. */
540
+ readonly as?: Tag
541
+ } & Omit<WardicProps<Tag>, "onReorder">
542
+
543
+ /**
544
+ * `Reorder.Item`'s props: its `value`, `as`, its `layout`, and the props of the element it renders,
545
+ * motion props included, but `layoutId` and `drag`, which the group sets.
546
+ */
547
+ export type ReorderItemProps<V, Tag extends ReorderElementTag = "li"> = {
548
+ /** Its value in the group's `values`. Read once. */
549
+ readonly value: V
550
+ /** The element it renders: `"li"` by default. Read once. */
551
+ readonly as?: Tag
552
+ /** `true`, its place and size animating (the default), or `"position"`, its place alone. */
553
+ readonly layout?: ReorderItemLayout
554
+ } & Omit<WardicProps<Tag>, "layout" | "layoutId" | "drag">
555
+
556
+ /**
557
+ * The props a component body reads, as plain records: instantiating the public prop
558
+ * types over every element tag (`WardicProps<keyof JSX.IntrinsicElements>`) makes a
559
+ * type checker build a union of every element's props, which a consumer's checker
560
+ * can run out of memory on.
561
+ */
562
+ interface GroupLocal<V> {
563
+ readonly values: ReadonlyArray<V>
564
+ readonly onReorder: (values: Array<V>) => void
565
+ readonly onReorderEnd?: ((end: ReorderController.End<V>) => void) | undefined
566
+ readonly onHoldStart?: ((start: ReorderController.HoldStart<V>) => void) | undefined
567
+ readonly onHoldEnd?: ((end: ReorderController.HoldEnd<V>) => void) | undefined
568
+ readonly axis?: CoreReorder.Axis | undefined
569
+ readonly keyboard?: boolean | undefined
570
+ readonly announcements?: Partial<CoreReorder.Announcements<V>> | undefined
571
+ readonly instructions?: string | undefined
572
+ readonly as?: string | undefined
573
+ readonly ref?: ((el: HTMLElement) => void) | undefined
574
+ readonly style?: JSX.CSSProperties | undefined
575
+ readonly children?: JSX.Element
576
+ }
577
+ interface ItemLocal<V> {
578
+ readonly value: V
579
+ readonly as?: string | undefined
580
+ readonly ref?: ((el: HTMLElement) => void) | undefined
581
+ readonly style?: JSX.CSSProperties | undefined
582
+ readonly children?: JSX.Element
583
+ readonly tabIndex?: number | undefined
584
+ readonly "aria-describedby"?: string | undefined
585
+ }
586
+
587
+ /**
588
+ * The Wardic element for `tag`, typed as a plain component: a Slim element's (`w[tag]`, #511), so a
589
+ * Reorder brings no Feature but its own (ADR-0067 decision 12) and renders under a `strict` section.
590
+ */
591
+ const wardicTag = (tag: string): Component<Record<string, unknown>> =>
592
+ UndefinedOr.getOrThrow((w as unknown as Record<string, Component<Record<string, unknown>> | undefined>)[tag])
593
+
594
+ /**
595
+ * A list put in order by dragging its items, or from the keyboard, rendered as `as`, `"ul"` by
596
+ * default. Your app owns `values`, and sets them from `onReorder`. Key its `Reorder.Item`s with `<For>`.
597
+ *
598
+ * @see https://wardic.dev/reference/solid/reorder/reorder
599
+ */
600
+ // ADR-0020: a `createReorderGroup` rendered as `w[as]`, the group in context for its items.
601
+ function Group<V, Tag extends ReorderElementTag = "ul">(props: ReorderGroupProps<V, Tag>): JSX.Element {
602
+ const [local, rest] = splitProps(props as unknown as GroupLocal<V> & Record<string, unknown>, [
603
+ "values",
604
+ "onReorder",
605
+ "onReorderEnd",
606
+ "onHoldStart",
607
+ "onHoldEnd",
608
+ "axis",
609
+ "keyboard",
610
+ "announcements",
611
+ "instructions",
612
+ "as",
613
+ "ref",
614
+ "style",
615
+ "children",
616
+ ])
617
+ const group = createReorderGroup<V>(() => ({
618
+ values: local.values,
619
+ onReorder: local.onReorder,
620
+ ...UndefinedOr.match(local.onReorderEnd, { onUndefined: () => ({}), onDefined: (onReorderEnd) => ({ onReorderEnd }) }),
621
+ ...UndefinedOr.match(local.onHoldStart, { onUndefined: () => ({}), onDefined: (onHoldStart) => ({ onHoldStart }) }),
622
+ ...UndefinedOr.match(local.onHoldEnd, { onUndefined: () => ({}), onDefined: (onHoldEnd) => ({ onHoldEnd }) }),
623
+ ...UndefinedOr.match(local.axis, { onUndefined: () => ({}), onDefined: (axis) => ({ axis }) }),
624
+ ...UndefinedOr.match(local.keyboard, { onUndefined: () => ({}), onDefined: (keyboard) => ({ keyboard }) }),
625
+ ...UndefinedOr.match(local.announcements, { onUndefined: () => ({}), onDefined: (announcements) => ({ announcements }) }),
626
+ ...UndefinedOr.match(local.instructions, { onUndefined: () => ({}), onDefined: (instructions) => ({ instructions }) }),
627
+ }))
628
+ const Tag = wardicTag(UndefinedOr.match(untrack(() => local.as), { onUndefined: () => "ul", onDefined: identity }))
629
+ const userRef = local.ref
630
+ const spread = group({
631
+ ...UndefinedOr.match(userRef, { onUndefined: () => ({}), onDefined: (ref) => ({ ref }) }),
632
+ get style() {
633
+ return local.style
634
+ },
635
+ })
636
+ return (
637
+ <GroupContext.Provider value={group as ReorderGroup<unknown>}>
638
+ <Tag {...rest} {...spread}>
639
+ {local.children}
640
+ </Tag>
641
+ </GroupContext.Provider>
642
+ )
643
+ }
644
+
645
+ /**
646
+ * An item of the `Reorder.Group` around it, rendered as `as`, `"li"` by default. Outside a group it
647
+ * throws, as Motion's does.
648
+ *
649
+ * @see https://wardic.dev/reference/solid/reorder/reorder
650
+ */
651
+ // ADR-0020: a `createReorderItem` on the nearest group.
652
+ function Item<V, Tag extends ReorderElementTag = "li">(props: ReorderItemProps<V, Tag>): JSX.Element {
653
+ const group = useContext(GroupContext) as ReorderGroup<V> | undefined
654
+ if (Predicate.isUndefined(group)) throw new Error("Reorder.Item must be a child of Reorder.Group")
655
+ // The item consumes every motion prop name (layoutId / drag included, though its type
656
+ // omits them), so none reaches the DOM.
657
+ const [local, motion, rest] = splitProps(
658
+ props as unknown as ItemLocal<V> & WardicMotionProps & Record<string, unknown>,
659
+ ["value", "as", "ref", "style", "children", "tabIndex", "aria-describedby"],
660
+ MOTION_PROPS,
661
+ )
662
+ const config = configOfMotion(motion as WardicMotionProps)
663
+ const item = createReorderItem<V>(group, () => ({ ...config(), layout: itemLayoutOf(config().layout), value: local.value }))
664
+ const tag = UndefinedOr.match(untrack(() => local.as), { onUndefined: () => "li", onDefined: identity })
665
+ const userRef = local.ref
666
+ const spread = item({
667
+ ...UndefinedOr.match(userRef, { onUndefined: () => ({}), onDefined: (ref) => ({ ref }) }),
668
+ get style() {
669
+ return local.style
670
+ },
671
+ get tabIndex() {
672
+ return local.tabIndex
673
+ },
674
+ get "aria-describedby"() {
675
+ return local["aria-describedby"]
676
+ },
677
+ })
678
+ const element = (): JSX.Element => (
679
+ <Dynamic component={tag} {...rest} {...spread}>
680
+ {local.children}
681
+ </Dynamic>
682
+ )
683
+ // An item that changes what its children read renders its variant context's Provider around
684
+ // them (#50), as every Wardic element does; any other renders none.
685
+ return Bool.match(changesContext(untrack(config)), {
686
+ onFalse: element,
687
+ onTrue: () => <item.Provider>{element()}</item.Provider>,
688
+ })
689
+ }
690
+
691
+ /**
692
+ * A list put in order by dragging its items, or from the keyboard: `Reorder.Group` and `Reorder.Item`.
693
+ * Your app owns the order: the group takes it as `values`, and `onReorder` hands each new one back.
694
+ * Motion's `Reorder`.
695
+ *
696
+ * @example
697
+ * <Reorder.Group values={items()} onReorder={setItems}>
698
+ * <For each={items()}>{(item) => <Reorder.Item value={item}>{item}</Reorder.Item>}</For>
699
+ * </Reorder.Group>
700
+ * @see https://wardic.dev/reference/solid/reorder/reorder
701
+ */
702
+ // ADR-0020.
703
+ export const Reorder = { Group, Item } as const