@wardic/solid 0.0.0-stage → 1.0.0-rc.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 (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,43 @@
1
+ /**
2
+ * An element's drag transition (ADR-0016, *Amendment (#140)*), Solid-free (#209): what every release
3
+ * runs on, a Fling, a snap back to the origin, and a layout node's Release offset, in both bindings.
4
+ *
5
+ * @module
6
+ */
7
+ import type * as ProjectionSystem from "@wardic/dom/ProjectionSystem"
8
+ import * as Bool from "effect/Boolean"
9
+ import { identity } from "effect/Function"
10
+ import * as UndefinedOr from "effect/UndefinedOr"
11
+ import type { WardicDragTransition } from "./config.ts"
12
+
13
+ /** Motion's `dragElastic` default (`defaultElastic`, ADR-0016 *Amendment (#140)*). */
14
+ export const DEFAULT_DRAG_ELASTIC = 0.35
15
+
16
+ /** A drag's `dragElastic`, or Motion's default. */
17
+ export const elasticOf = (elastic: number | undefined): number =>
18
+ UndefinedOr.match(elastic, { onUndefined: () => DEFAULT_DRAG_ELASTIC, onDefined: identity })
19
+
20
+ /** Motion's release (`startAnimation`), in seconds: a 0.75 s time constant, power 0.8, at rest within 1 px and 10 px/s. */
21
+ const MOTION_RELEASE = { power: 0.8, timeConstant: 0.75, restDelta: 1, restSpeed: 10 } as const
22
+ /** The bounce with an elastic drag, Motion's `dragElastic ? 200 : …`. */
23
+ const ELASTIC_BOUNCE = { bounceStiffness: 200, bounceDamping: 40 } as const
24
+ /** The bounce with none, a wall: Motion's `… : 1000000` and `10000000`. */
25
+ const RIGID_BOUNCE = { bounceStiffness: 1e6, bounceDamping: 1e7 } as const
26
+
27
+ /**
28
+ * An element's drag transition, resolved (ADR-0016, *Amendment (#140)*): Motion's release, its bounce
29
+ * from `dragElastic` (a wall with none), then the element's own `dragTransition` over it, its
30
+ * `timeConstant` from milliseconds to seconds. What every release runs on: a Fling, a snap back to the
31
+ * origin, and a projection node's Release offset.
32
+ */
33
+ export const dragTransitionOf = (elastic: number | undefined, own: WardicDragTransition | undefined): ProjectionSystem.DragTransition => ({
34
+ ...MOTION_RELEASE,
35
+ ...Bool.match(elasticOf(elastic) !== 0, { onTrue: () => ELASTIC_BOUNCE, onFalse: () => RIGID_BOUNCE }),
36
+ ...UndefinedOr.match(own, {
37
+ onUndefined: () => ({}),
38
+ onDefined: ({ timeConstant, ...rest }) => ({
39
+ ...rest,
40
+ ...UndefinedOr.match(timeConstant, { onUndefined: () => ({}), onDefined: (ms) => ({ timeConstant: ms / 1000 }) }),
41
+ }),
42
+ }),
43
+ })
package/src/drag.ts ADDED
@@ -0,0 +1,58 @@
1
+ /**
2
+ * `runDragTrack` (ADR-0004): the Solid 1 binding's drag track, the shared one (`drag-track.ts`), its
3
+ * watches run by `runWatch` in a Scope the caller's owner closes, and its responses forked on the
4
+ * provider runtime (#379). The track is the `drag` Feature's (#511): `runDragTrack` brings it.
5
+ */
6
+ import * as InputSource from "@wardic/core/InputSource"
7
+ import * as Effect from "effect/Effect"
8
+ import { DEFAULT_DRAG_ELASTIC, dragTransitionOf } from "./drag-transition.ts"
9
+ import { driveDragTrack, type DragTrack, type DragTrackOptions } from "./drag-track.ts"
10
+ import type { Feature } from "./feature.ts"
11
+ import { drag } from "./features/drag.ts"
12
+ import { inputIn } from "./gesture-features.ts"
13
+ import { runWatch, useBrought } from "./provider.tsx"
14
+ import type { WardicRuntime } from "./runtime.ts"
15
+ import { type DragGesture } from "./features/keys.ts"
16
+
17
+ export { DEFAULT_DRAG_ELASTIC, dragTransitionOf }
18
+ export type { DragSnapshot, DragTrack, DragTrackConfig } from "./drag-track.ts"
19
+
20
+ /** `runDragTrack`'s options: the element, its drag config, the spine's snapshot and callbacks, and the provider's runtime. */
21
+ export interface RunDragTrackOptions extends Omit<DragTrackOptions, "watch" | "fork"> {
22
+ /** The provider runtime the track's watches and responses run on. */
23
+ readonly runtime: WardicRuntime
24
+ }
25
+
26
+ /**
27
+ * Runs a drag on `opts.element` as a Wardic element's own drag runs: its gesture, constraints, elastic,
28
+ * release and drag claims, writing `x` and `y` through the element's snapshot. For an element of your
29
+ * own built on Wardic's drag. Stopped as the current owner is cleaned up. Brings the `drag` Feature.
30
+ * Solid 1 only.
31
+ *
32
+ * @see https://wardic.dev/reference/solid/advanced/run-drag-track
33
+ */
34
+ // `drag-track.ts`, ADR-0004: its watches in a Scope of their own via `runWatch`, no fiber at rest, closed
35
+ // by the caller's owner, which stops the watches and an in-flight release (#379). Its hold on x/y goes
36
+ // to the spine (#340).
37
+ export const runDragTrack = (opts: RunDragTrackOptions): DragTrack => {
38
+ // The gestures' input, read as the track first watches, on the client: a server render runs no watch.
39
+ const services = useBrought(BRINGS)
40
+ const given = <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, Exclude<R, InputSource.InputSource>> =>
41
+ Effect.provideService(effect, InputSource.InputSource, inputIn(services()))
42
+ return driveDragTrack({
43
+ ...opts,
44
+ watch: (track) => runWatch(opts.runtime, (onDefect) => given(track(onDefect))),
45
+ fork: (response) => void opts.runtime.runFork(given(response)),
46
+ })
47
+ }
48
+
49
+ /** What {@link runDragTrack} brings (ADR-0067 decision 12): the `drag` Feature, whatever its section has (#511). */
50
+ const BRINGS: ReadonlyArray<Feature> = [drag]
51
+
52
+ /** {@link runDragTrack} through `drive`: an element's section's `drag` Feature's (#511), where `runDragTrack` brings it. Internal. */
53
+ export const runDragTrackWith = (drive: DragGesture["Service"]["drive"], opts: RunDragTrackOptions): DragTrack =>
54
+ drive({
55
+ ...opts,
56
+ watch: (track) => runWatch(opts.runtime, track),
57
+ fork: (response) => void opts.runtime.runFork(response),
58
+ })
@@ -0,0 +1,112 @@
1
+ /**
2
+ * The `style` a Wardic element is rendered with, for a `createWard` spread and a
3
+ * `wardic.create(Component)` wrap (ADR-0021 decision 6, ADR-0034). The flush gate commits every
4
+ * frame onto the element, so `style` carries Wardic's values only until the first commit:
5
+ *
6
+ * - until then, the user's style with the Starting style on top: what a server renders, what
7
+ * hydration keeps, and what the element shows before its first frame;
8
+ * - from the first commit, the fallback: the user's style without the keys the gate holds on the
9
+ * element. Wardic writes those while it drives them; a key the gate lets go of comes back.
10
+ *
11
+ * The gate switches it through the sink's hooks, outside its commits: `beforeFirstCommit`, and
12
+ * `onHeld` whenever the keys it holds change. Only a change to a key the element's own style
13
+ * sets re-runs `style`, so a frame never does. A ward's element that comes after the last one left
14
+ * the page enters fresh (#414): `restart` puts a Starting style back on until its first commit.
15
+ *
16
+ * The user's routed keys (#130, ADR-0043: its Live values and transform keys) are never Solid's:
17
+ * the Starting style carries their values, and from mount the gate holds them. Each style the
18
+ * user gives is seen by the element's {@link LiveStyle} here, where it's read reactively.
19
+ *
20
+ * Solid-free (#209): its state is plain, and one {@link Trigger} re-runs `style`, so it reads the
21
+ * same under Solid 2, where a signal's read lags its write until the flush.
22
+ */
23
+ import type * as Renderer from "@wardic/core/Renderer"
24
+ import type * as Values from "@wardic/core/Values"
25
+ import type * as FlushGate from "@wardic/dom/FlushGate"
26
+ import * as Style from "@wardic/dom/Style"
27
+ import * as Bool from "effect/Boolean"
28
+ import { constUndefined } from "effect/Function"
29
+ import * as Rec from "effect/Record"
30
+ import type { LiveStyle } from "./live-style.ts"
31
+ import type { Reactivity } from "./reactivity.ts"
32
+
33
+ /** What {@link createElementStyle} reads. */
34
+ export interface ElementStyleOptions {
35
+ /** The user's current style, read when the keys the gate holds change. */
36
+ readonly userStyle: () => object | string | undefined
37
+ /** The element's Starting style, with no routed key. */
38
+ readonly starting: Renderer.Patch
39
+ /** The element's Starting style with its routed keys at `routed` (#130). */
40
+ readonly startingWith: (routed: Values.Values) => Renderer.Patch
41
+ /** The element's routed `style` keys (#130). */
42
+ readonly live: LiveStyle
43
+ /** A drag element's defaults, under the user's style. */
44
+ readonly defaults: Style.DragDefaults | undefined
45
+ /** A `<Reorder>` item's base style, under the user's style. */
46
+ readonly base?: (() => object | undefined) | undefined
47
+ /** The binding's Solid (#209). */
48
+ readonly reactivity: Reactivity
49
+ }
50
+
51
+ /** An element's `style` and the sink hooks that switch it. */
52
+ export interface ElementStyle {
53
+ /** The element's style, given the user's: reactive, read inside the element's JSX. */
54
+ readonly style: (user: object | string | undefined) => Style.Style
55
+ /** The hooks the element's flush sink carries. */
56
+ readonly hooks: Required<Pick<FlushGate.Sink, "beforeFirstCommit" | "onHeld">>
57
+ /**
58
+ * Put `starting` on as the Starting style again, until the gate's next first commit: a new
59
+ * element entering fresh (#414), its sink registered after this call.
60
+ */
61
+ readonly restart: (starting: Renderer.Patch) => void
62
+ }
63
+
64
+ /** An element's `style`, switched by its flush sink's hooks. Call within a Solid owner. */
65
+ export const createElementStyle = (options: ElementStyleOptions): ElementStyle => {
66
+ const { userStyle, startingWith, live, defaults, base = constUndefined, reactivity } = options
67
+ const { untrack } = reactivity
68
+ // The Starting style: the element's first, or a fresh entry's (#414).
69
+ let starting = options.starting
70
+ // Whether the gate has committed: `style` re-runs once, at the first commit.
71
+ let committed = false
72
+ // Every key the gate holds, current whenever `style` runs. A change that touches the
73
+ // element's own style re-runs it; any other change waits for the next run.
74
+ let held: ReadonlyArray<string> = []
75
+ const changed = reactivity.trigger()
76
+
77
+ // The Starting style with the routed keys' values now: read before the first commit only.
78
+ const startingNow = (): Renderer.Patch => {
79
+ const routed = live.values()
80
+ return Bool.match(Rec.isEmptyRecord(routed), { onTrue: () => starting, onFalse: () => startingWith(routed) })
81
+ }
82
+
83
+ const style = (user: object | string | undefined): Style.Style => {
84
+ changed.track()
85
+ const css = live.css(user)
86
+ return Bool.match(committed, {
87
+ onFalse: () => Style.over(Style.over(Style.over(startingNow(), css), base()), defaults),
88
+ onTrue: () => Style.without(Style.over(Style.over(css, base()), defaults), held),
89
+ })
90
+ }
91
+
92
+ const onHeld = (next: ReadonlyArray<string>): void => {
93
+ const prev = held
94
+ held = next
95
+ if (!committed) return
96
+ const style = Style.over(Style.over(live.css(untrack(userStyle)), untrack(base)), defaults)
97
+ if (Style.heldTouches(style, prev, next)) changed.notify()
98
+ }
99
+
100
+ const beforeFirstCommit = (): void => {
101
+ committed = true
102
+ changed.notify()
103
+ }
104
+
105
+ const restart = (next: Renderer.Patch): void => {
106
+ starting = next
107
+ committed = false
108
+ changed.notify()
109
+ }
110
+
111
+ return { style, hooks: { beforeFirstCommit, onHeld }, restart }
112
+ }
@@ -0,0 +1,400 @@
1
+ /**
2
+ * What every Wardic element's component form shares, for the Solid 1 binding (#511): `createWith`,
3
+ * which makes `wardic.create`'s component and `w.create`'s, a Complete element's or a Slim one's by the
4
+ * `kind` it's given, and the forms' proxy. `wardic.tsx` holds the Complete forms, `w.tsx` the Slim ones;
5
+ * this module names no Feature, so a Slim element's app ships none it doesn't choose (ADR-0067).
6
+ *
7
+ * `create(tag)` returns a Solid component that accepts the element's own props PLUS Wardic's motion
8
+ * props (`initial` / `animate` / `whileHover` / ...), wires them through {@link createWardWith}, and
9
+ * renders the underlying element with the user's props passed through. The flush gate commits each
10
+ * frame onto the element (ADR-0034). `create(Component)` is the same over the component, which
11
+ * forwards its `ref` to its root element (#253).
12
+ *
13
+ * Locked merge policy (Option A) — the merge now lives in `ward()`
14
+ * ({@link createWardWith}); this HOC just forwards the user's `ref` + `style` into it:
15
+ * - Motion props are split off so none leak to the DOM (even ones not yet
16
+ * wired by {@link createWardWith}).
17
+ * - The user's `ref` AND Wardic's ref are both invoked (via `mergeRefs`).
18
+ * - Wardic's keys win: the Starting style goes over the user's `style` until the first
19
+ * commit; from then on the user's `style` is the fallback, without the keys the
20
+ * gate holds, which Wardic writes onto the element (ADR-0034). A reactive user
21
+ * `style` re-runs the spread's `style`; a frame never does.
22
+ *
23
+ * SSR-correct: {@link createWardWith} computes the Starting style synchronously, so the
24
+ * `<Dynamic>` renders with the merged Starting style on the very first render.
25
+ *
26
+ * REACTIVITY (component props): each motion prop is a plain VALUE, not an
27
+ * accessor. Solid's reactive prop getters already make a component prop tracked —
28
+ * reading `motion.animate` INSIDE {@link motionToConfig}'s config accessor
29
+ * subscribes to whatever signals back the prop. So write a TRACKED EXPRESSION as
30
+ * the value (`animate={open() ? { opacity: 1 } : { opacity: 0 }}`), NOT a function
31
+ * (`animate={() => expr}` is a type error — props are values, not accessors). A
32
+ * signal flip in that expression re-runs the config accessor and drives a Retarget.
33
+ */
34
+ import { mergeRefs } from "@solid-primitives/refs"
35
+ import * as Arr from "effect/Array"
36
+ import * as Bool from "effect/Boolean"
37
+ import * as Option from "effect/Option"
38
+ import * as Predicate from "effect/Predicate"
39
+ import * as Rec from "effect/Record"
40
+ import * as UndefinedOr from "effect/UndefinedOr"
41
+ import { $PROXY, type Accessor, children, type Component, createComponent, createEffect, createRenderEffect, type JSX, sharedConfig, splitProps, untrack } from "solid-js"
42
+ import { assign, Dynamic, getNextElement, insert, spread, SVGElements, use } from "solid-js/web"
43
+ import { isServer } from "./server.ts"
44
+ import { GESTURE_KEYS } from "./gesture-callbacks.ts"
45
+ import { renderServerElement, serverAppearOfWard, createWardWith, type SpineInternals, type WardStyle, type WardUserProps } from "./create-ward.tsx"
46
+ import type { WardConfig, WardicVariantLabels } from "./config.ts"
47
+ import type { InferredMotion, TargetKey } from "./ward-keys.ts"
48
+ import { changesContext } from "./variant-tree.ts"
49
+ import { MOTION_PROPS, motionToConfig, type WardicMotionProps } from "./motion-props.ts"
50
+ import { droppedKeysOf, markWardic, routingTagOf, type WardicCreateOptions } from "./wardic-component.ts"
51
+ import { useWardicConfig } from "./wardic-config.tsx"
52
+ import { isValidPropOf } from "./wardic-config-value.ts"
53
+
54
+ export { MOTION_PROPS, motionToConfig, type WardicMotionProps } from "./motion-props.ts"
55
+
56
+ /**
57
+ * Props for a `wardic.<tag>` element: the tag's intrinsic props + motion props `M`, with a `style`
58
+ * that takes the transform keys and Live values too ({@link WardStyle}). A `wardic.<tag>`
59
+ * component's `M` has its keys inferred ({@link WardicComponent}).
60
+ */
61
+ export type WardicProps<Tag extends keyof JSX.IntrinsicElements, M = WardicMotionProps> =
62
+ // `onAnimationStart` is Motion's (#257), not the DOM's CSS `animationstart` event's, as on Motion.
63
+ & Omit<JSX.IntrinsicElements[Tag], "style" | "onAnimationStart" | "onDrag" | "onDragStart" | "onDragEnd">
64
+ & M
65
+ & { readonly style?: WardStyle | string | undefined }
66
+
67
+ /**
68
+ * A `wardic.<tag>` component: generic over the keys its targets set, so its `transition` takes
69
+ * entries for those keys, `default` and `layout`, and a target's own takes them and `default`
70
+ * ({@link InferredMotion}). A name an entry gives that the element doesn't animate is an error, and
71
+ * completion inside a `transition` offers the keys it drives.
72
+ */
73
+ export type WardicComponent<Tag extends keyof JSX.IntrinsicElements> = <
74
+ K extends TargetKey = never,
75
+ N extends string = never,
76
+ LI extends WardicVariantLabels = never,
77
+ LA extends WardicVariantLabels = never,
78
+ D extends boolean | "x" | "y" = never,
79
+ >(props: WardicProps<Tag, InferredMotion<WardicMotionProps, K, N, LI, LA, D>>) => JSX.Element
80
+
81
+ /**
82
+ * The shape `wardic.create(Component)` requires of a wrapped component: it must
83
+ * forward `props.ref` to its single root DOM element so the spine can wire up
84
+ * (ADR-0008's ref-forwarding contract). All motion is committed through that
85
+ * ref, so the wrapped component owns its own root JSX.
86
+ */
87
+ export type WardicWrappable = { ref?: (el: HTMLElement) => void }
88
+
89
+ /**
90
+ * A client element's config from its split-off motion props: their keys are fixed unless they're a
91
+ * proxy (over a reactive spread), so the gesture callbacks the element wasn't given are never read
92
+ * (#273).
93
+ */
94
+ export const configOfMotion = (motion: WardicMotionProps): Accessor<WardConfig> => motionToConfig(motion, Bool.not($PROXY in motion))
95
+
96
+ /**
97
+ * `create(tag | Component)` of a form (`wardic.create`, `w.create`): a Wardic component, a Complete
98
+ * element's or a Slim one's as `kind` says (#511).
99
+ *
100
+ * Both are an element with a Ward on it, made by {@link createWardWith} (#253, as the Solid 2
101
+ * binding's `create` is, ADR-0045): the Starting style in `style` until the gate's first frame
102
+ * is committed (so on a server and in the hydration render), then the user's style (over the drag
103
+ * defaults) without the keys the gate holds (ADR-0034).
104
+ * - `create("div")` (element-string): renders `<Dynamic component={tag}>`.
105
+ * - `create(Component)` (a component function): the wrapped component must forward `props.ref`
106
+ * to its single root element, where the gate commits each frame; that is the only
107
+ * requirement. It also gets `style` and `draggable`: one that applies `props.style` renders
108
+ * its Starting style on a server, and one that doesn't still animates, the drag defaults
109
+ * set on its element at mount (ADR-0021, decision 6). One that never forwards its ref is a
110
+ * clear error once mounted (ADR-0008).
111
+ *
112
+ * `options` (#443, Motion's `motion.create` options): `forwardMotionProps` hands the motion props on
113
+ * to what it renders as well, and `type` says what its element is for its server render and Starting
114
+ * style ({@link WardicCreateOptions}).
115
+ */
116
+ export function createWith(arg: string | Component<Record<string, unknown> & WardicWrappable>, options: WardicCreateOptions, kind: SpineInternals): Component<Record<string, unknown>> {
117
+ const forward = options.forwardMotionProps === true
118
+ const made = Bool.match(Predicate.isString(arg), {
119
+ onTrue: () => wardComponent(arg as string, { ...kind, tag: routingTagOf(arg as string, options.type) }, forward),
120
+ onFalse: () => wardComponent(arg as Component<Record<string, unknown> & WardicWrappable>, { ...WRAPPED, ...kind, tag: routingTagOf(undefined, options.type) }, forward),
121
+ })
122
+ // Marked with what it wraps (#443): `isWardicComponent`, `unwrapWardicComponent`.
123
+ return markWardic(made, arg)
124
+ }
125
+
126
+ /** The `create` of a form: {@link createWith}'s overloads. */
127
+ export interface Create {
128
+ <Tag extends keyof JSX.IntrinsicElements>(tag: Tag, options?: WardicCreateOptions): WardicComponent<Tag>
129
+ // A component's stays a plain `Component`, its keys not inferred: a generic return type would stop
130
+ // TS carrying a generic component's own type parameters through (Kobalte's `<T extends ValidComponent>`).
131
+ <P>(component: Component<P & WardicWrappable>, options?: WardicCreateOptions): Component<P & WardicMotionProps>
132
+ (tag: string, options?: WardicCreateOptions): Component<WardicProps<keyof JSX.IntrinsicElements>>
133
+ }
134
+
135
+ /** A form's `create`, its elements of `kind`. */
136
+ export const createOf =
137
+ (kind: SpineInternals): Create =>
138
+ ((arg: string | Component<Record<string, unknown> & WardicWrappable>, options: WardicCreateOptions = {}) => createWith(arg, options, kind)) as Create
139
+
140
+ /**
141
+ * A form's proxy (`wardic`, `w`): called, it's the form's directive; `create` and the form's
142
+ * `extras` are its properties, and `<form>.<tag>` is `create(tag)`, cached so `wardic.div ===
143
+ * wardic.div` (stable component identity across reads). Any non-string key is `undefined`.
144
+ */
145
+ export const formOf = <F,>(directive: (el: HTMLElement, value: Accessor<WardConfig>) => void, create: Create, extras: Readonly<Record<string, unknown>>): F => {
146
+ const cache = new Map<string, Component<WardicProps<keyof JSX.IntrinsicElements>>>()
147
+ return new Proxy(directive, {
148
+ get(_, prop) {
149
+ if (prop === "create") return create
150
+ if (Predicate.isString(prop)) {
151
+ if (Object.hasOwn(extras, prop)) return extras[prop]
152
+ return Option.getOrElse(Option.fromUndefinedOr(cache.get(prop)), () => {
153
+ const c = create(prop)
154
+ cache.set(prop, c)
155
+ return c
156
+ })
157
+ }
158
+ return undefined
159
+ },
160
+ }) as unknown as F
161
+ }
162
+
163
+ /** What wraps a component tells {@link createWardWith}: its component may not pass `style` on. */
164
+ const WRAPPED: SpineInternals = { defaultsOnElement: true }
165
+
166
+ /** What a form's `create` renders: an element's tag, or the component it wraps. */
167
+ type Rendered = string | Component<Record<string, unknown> & WardicWrappable>
168
+
169
+ /** The namespace an svg tag's element is made in, as Solid's `createDynamic` makes it. */
170
+ const SVG_NAMESPACE = "http://www.w3.org/2000/svg"
171
+
172
+ /**
173
+ * What `<Dynamic component={component}>` renders, for a form's tag or component, which never changes
174
+ * (#525). Still a component boundary, as `Dynamic` is, so the hydration keys land where the server's
175
+ * `Dynamic` puts them. Without `Dynamic`'s `splitProps`, which copied every prop to take `component`
176
+ * out, and without `createDynamic`'s two memos over a component that can't change.
177
+ */
178
+ const fixedElement = (component: Rendered): Component<Record<string, unknown>> => {
179
+ if (Predicate.isFunction(component)) return (props) => untrack(() => component(props))
180
+ const tag = component
181
+ const isSvg = SVGElements.has(tag)
182
+ return (props) => {
183
+ const el = tagElementOf(tag, isSvg, props)
184
+ spreadOnto(el, props, isSvg)
185
+ return el
186
+ }
187
+ }
188
+
189
+ /** `tag`'s element: the server's while hydrating, else a new one, as `createDynamic` makes it. */
190
+ const tagElementOf = (tag: string, isSvg: boolean, props: Record<string, unknown>): Element => {
191
+ if (Predicate.isNotNullish(sharedConfig.context)) return getNextElement()
192
+ if (isSvg) return document.createElementNS(SVG_NAMESPACE, tag)
193
+ const is = untrack(() => props.is)
194
+ if (Predicate.isString(is)) return document.createElement(tag, { is })
195
+ return document.createElement(tag)
196
+ }
197
+
198
+ /**
199
+ * Solid's `spread` for props whose keys are fixed (#525): their children's effect only when they have
200
+ * children, and their ref called once, as JSX calls its own `ref`, where `spread` gives each a render
201
+ * effect an element. A proxy's keys can change (a reactive spread), so it takes Solid's `spread`.
202
+ */
203
+ const spreadOnto = (el: Element, props: Record<string, unknown>, isSvg: boolean): void => {
204
+ if ($PROXY in props) {
205
+ spread(el, props, isSvg)
206
+ return
207
+ }
208
+ if ("children" in props) insert(el, () => props.children)
209
+ untrack(() => {
210
+ const ref = props.ref
211
+ if (Predicate.isFunction(ref)) use(ref as (node: Element) => void, el)
212
+ })
213
+ const prev = {}
214
+ createRenderEffect(() => assign(el, props, isSvg, true, prev, true))
215
+ }
216
+
217
+ /**
218
+ * `<form>.<tag>` and `<form>.create(Component)`: the element, or the wrapped component, with a
219
+ * Ward from {@link createWardWith} spread on it, its variant context's Provider around it when it
220
+ * changes what its children read (#50). `forward`: its motion props are handed on too (#443).
221
+ */
222
+ const wardComponent = (component: Rendered, internal: SpineInternals, forward: boolean): Component<Record<string, unknown>> => {
223
+ const Rendered = fixedElement(component)
224
+ // What an element that can never want a gesture runs with (#525): made once a form.
225
+ const gestureless: SpineInternals = { ...internal, gestureless: true }
226
+ return (props) => {
227
+ // The nearest `WardicConfig`'s `isValidProp`, as the element is made (#443).
228
+ const isValidProp = isValidPropOf(useWardicConfig())
229
+ // A server render takes the lean path (ADR-0021, decision 4).
230
+ if (isServer) return serverElement(component, internal, props, forward, isValidProp)
231
+
232
+ // 3-way split: motion props (consumed, and only handed on when forwarded, #443), then ref+style
233
+ // (merged), then everything else (rest) passes through to the element or component, but a tag's
234
+ // props a `WardicConfig`'s `isValidProp` keeps off it.
235
+ const [motion, refStyle, own] = splitProps(props as WardicProps<keyof JSX.IntrinsicElements>, MOTION_PROPS, ["ref", "style"])
236
+ const dropped = droppedKeysOf(() => Object.keys(own), isValidProp, Predicate.isString(component))
237
+ // Split again only when it keeps any off (most elements have no `isValidProp` above them).
238
+ const rest = Bool.match(Arr.isReadonlyArrayEmpty(dropped), {
239
+ onTrue: () => own,
240
+ onFalse: () => splitProps(own, dropped as Array<keyof typeof own>)[1],
241
+ })
242
+ const handedOn = Bool.match(forward, { onTrue: () => motion, onFalse: () => NO_PROPS })
243
+
244
+ // Reactive config accessor: motionToConfig reads each (reactive) prop getter
245
+ // inside the accessor, so a changed `animate` / `whileHover` / `transition`
246
+ // (a tracked expression) drives a Retarget. The tag lets an svg-inner element
247
+ // render its Starting style's attribute keys as attributes (ADR-0021).
248
+ const cfg = configOfMotion(motion)
249
+ // Its keys fixed (no reactive spread) and none of them a gesture's, it can never want one (#525).
250
+ let spineInternal = internal
251
+ if (Bool.not($PROXY in motion)) {
252
+ if (Bool.not(Arr.some(GESTURE_KEYS, (key) => key in motion))) spineInternal = gestureless
253
+ }
254
+ const ward = createWardWith(cfg, spineInternal)
255
+
256
+ // Delegate the ref + style merge entirely to ward(): it invokes both the
257
+ // user's ref and ward's internal ref, and gives the element its `style`: the
258
+ // Starting style over the user's, then the user's without the keys the gate
259
+ // holds (ADR-0034).
260
+ //
261
+ // `style` is threaded as a LIVE GETTER, not a value read once at setup:
262
+ // `refStyle.style` is a reactive `splitProps` getter, so a reactive user
263
+ // `style` prop (e.g. `style={{ left: pos() }}` on a non-animated key) is
264
+ // tracked by ward()'s reactive style getter and re-merged on change. Reading
265
+ // it into a `const` here would freeze it at its initial value. `ref` is wired
266
+ // once at mount (refs don't change), so it stays a one-time read.
267
+ const forwarding = forwardingOf(component, (refStyle as { ref?: (el: HTMLElement) => void }).ref)
268
+ const ref = forwarding.ref
269
+ const userProps: WardUserProps = {
270
+ ...UndefinedOr.match(ref, { onUndefined: () => ({}), onDefined: (defined) => ({ ref: defined }) }),
271
+ get style() {
272
+ return (refStyle as { style?: JSX.CSSProperties }).style
273
+ },
274
+ }
275
+
276
+ // An element that changes what its children read renders its variant context's Provider
277
+ // around them (#50); any other renders none (`changesContext`, decided once, as on a server).
278
+ // The Ward's props, made once: a call spread in JSX compiles to a function source, which made
279
+ // `mergeProps` a proxy that the spread read every key through (#525). Their `style` is a getter.
280
+ const wardProps = ward(userProps)
281
+ const element = (): JSX.Element => <Rendered {...handedOn} {...rest} {...wardProps} />
282
+ return Bool.match(changesContext(untrack(cfg)), {
283
+ onFalse: () => forwarding.render(element),
284
+ onTrue: () => <ward.Provider>{forwarding.render(element)}</ward.Provider>,
285
+ })
286
+ }
287
+ }
288
+
289
+ /** The user's ref, merged with what checks the Ward's, and how the element renders. */
290
+ interface Forwarding {
291
+ readonly ref: ((el: HTMLElement) => void) | undefined
292
+ readonly render: (element: () => JSX.Element) => JSX.Element
293
+ }
294
+
295
+ /** A tag's: the user's ref, and its element as it is. */
296
+ const ownElement = (element: () => JSX.Element): JSX.Element => element()
297
+
298
+ /**
299
+ * The user's ref, and, for a wrapped component, the check that it forwards the Ward's (ADR-0008,
300
+ * narrowed by #414): one that renders an element and forwards its ref to none of what it renders
301
+ * leaves the gate no element to commit to, a clear error. One that renders nothing yet (a component
302
+ * library's part that shows only while open or selected) is waited on: its element is driven when it
303
+ * comes. Checked each time what it renders changes, inside the wrap's Provider (#50).
304
+ */
305
+ const forwardingOf = (component: Rendered, userRef: ((el: HTMLElement) => void) | undefined): Forwarding => {
306
+ if (Predicate.isString(component)) return { ref: userRef, render: ownElement }
307
+ let reached: HTMLElement | undefined
308
+ const ref = mergeRefs(userRef, (el: HTMLElement) => {
309
+ reached = el
310
+ })
311
+ const render = (element: () => JSX.Element): JSX.Element => {
312
+ const rendered = children(element)
313
+ createEffect(() => {
314
+ const elements = Arr.filter(rendered.toArray(), isElement)
315
+ if (Arr.isArrayEmpty(elements)) return
316
+ if (Arr.some(elements, (inside) => Predicate.isNotUndefined(reached) && inside.contains(reached))) return
317
+ const name = component.name || "anonymous component"
318
+ throw new Error(
319
+ `wardic.create(${name}): the wrapped component rendered an element but did not forward its ref to it. ` +
320
+ "The component must forward props.ref to a single root DOM element " +
321
+ "(e.g. <div ref={props.ref}>...</div>). Element-only motion is wired through the ref.",
322
+ )
323
+ })
324
+ return rendered as unknown as JSX.Element
325
+ }
326
+ return { ref, render }
327
+ }
328
+
329
+ /** Whether a rendered node is an element. */
330
+ const isElement = (node: unknown): node is Element => node instanceof Element
331
+
332
+ /** No props: what an element that doesn't forward its motion props hands on of them. */
333
+ const NO_PROPS: Readonly<Record<string, never>> = {}
334
+
335
+ /** The motion props, as a set for the server path's one pass. */
336
+ const MOTION_KEYS: ReadonlySet<string> = new Set(MOTION_PROPS)
337
+
338
+ /**
339
+ * Set each of `values` on `out` as a plain data property. A key copied from the user's props
340
+ * may be a getter (a reactive prop like `cx={cx()}`), which an assignment can't overwrite;
341
+ * Wardic's value wins, as `mergeProps` makes it on the client.
342
+ */
343
+ const override = (out: Record<string, unknown>, values: Record<string, unknown>): void =>
344
+ Arr.forEach(Rec.keys(values), (key) => {
345
+ Object.defineProperty(out, key, { value: values[key], enumerable: true, configurable: true, writable: true })
346
+ })
347
+
348
+ /**
349
+ * Everything in `props` but `ref`, `style`, the motion props unless `forward`, and the keys `dropped`
350
+ * (#443), in one pass; getters stay getters.
351
+ */
352
+ const passThrough = (props: Record<string, unknown>, forward: boolean, dropped: ReadonlyArray<string>): Record<string, unknown> => {
353
+ const descriptors = Object.getOwnPropertyDescriptors(props)
354
+ const out: Record<string, unknown> = {}
355
+ const off = new Set(dropped)
356
+ Arr.forEach(Rec.keys(descriptors), (key) => {
357
+ if (key === "ref" || key === "style" || off.has(key)) return
358
+ if (MOTION_KEYS.has(key) && !forward) return
359
+ Object.defineProperty(out, key, UndefinedOr.getOrThrow(descriptors[key]))
360
+ })
361
+ return out
362
+ }
363
+
364
+ /**
365
+ * `wardic.<tag>` and `wardic.create(Component)` during a server render (ADR-0021, decisions 4 and
366
+ * 6): the element, or the component, with its Starting style and static attributes, built in one
367
+ * pass over the props. Solid's server `splitProps` and `mergeProps` cost most of a wrapped
368
+ * element's server time, and none of their reactivity matters there. The client's
369
+ * `createUniqueId` (inside `createWardWith`) and its `Dynamic` boundary are kept, so every
370
+ * hydration key lands where the client's render puts it.
371
+ */
372
+ const serverElement = (
373
+ component: Rendered,
374
+ internal: SpineInternals,
375
+ props: Record<string, unknown>,
376
+ forward: boolean,
377
+ isValidProp: ((key: string) => boolean) | undefined,
378
+ ): JSX.Element => {
379
+ // A tag's props `isValidProp` keeps off it, as the client's (#443): of its own, the motion props, `ref` and `style` aside.
380
+ const ownKeys = (): ReadonlyArray<string> => Arr.filter(Object.keys(props), (key) => !MOTION_KEYS.has(key) && key !== "ref" && key !== "style")
381
+ const out = passThrough(props, forward, droppedKeysOf(ownKeys, isValidProp, Predicate.isString(component)))
382
+ const cfg = motionToConfig(props as WardicMotionProps)
383
+ const ward = createWardWith(cfg, internal)
384
+ override(out, { ...ward({ style: props.style as JSX.CSSProperties | undefined }), component })
385
+ // The client's nesting: the element's `ward.Provider` when it changes what its children read
386
+ // (#50), then the element; a late chunk's root then its chunk's style (#245).
387
+ const element = (): JSX.Element => createComponent(Dynamic, out as Parameters<typeof Dynamic>[0])
388
+ const render = (): JSX.Element =>
389
+ Bool.match(changesContext(cfg()), {
390
+ onFalse: element,
391
+ onTrue: () =>
392
+ createComponent(ward.Provider, {
393
+ get children() {
394
+ return element()
395
+ },
396
+ }),
397
+ })
398
+ return renderServerElement(serverAppearOfWard(ward), render)
399
+ }
400
+
@@ -0,0 +1,33 @@
1
+ /**
2
+ * A section's **Features** (#511, ADR-0067), for the Solid 1 binding: the context each `LazyWardic`
3
+ * puts its section in (`feature.ts`'s `makeSection`), so a Slim element has its provider's Features
4
+ * and every `LazyWardic`'s between them (decision 2). A provider's own section isn't in it: the
5
+ * provider keeps it (`provider.tsx`), so a provider renders no second context, and every hydration
6
+ * key stays where it was.
7
+ *
8
+ * @module
9
+ */
10
+ import type * as Cause from "effect/Cause"
11
+ import { createContext, onCleanup, useContext } from "solid-js"
12
+ import { type FeatureRegistry, type FeatureSection, type FeaturesProp, makeSection, type SectionHost } from "./feature.ts"
13
+ import { isServer } from "./server.ts"
14
+ import { reactivity } from "./solid-reactivity.ts"
15
+
16
+ const FeatureSectionContext = createContext<FeatureSection | undefined>(undefined)
17
+
18
+ /** The nearest `LazyWardic`'s section, or `undefined` under none: its provider's then. */
19
+ export const useLazySection = (): FeatureSection | undefined => useContext(FeatureSectionContext)
20
+
21
+ /** The Provider a `LazyWardic`'s subtree renders under. */
22
+ export const FeatureSectionProvider = FeatureSectionContext.Provider
23
+
24
+ const HOST: SectionHost = { reactivity, server: isServer, onCleanup }
25
+
26
+ /** A section under `parent`, made under the current owner (`feature.ts`'s `makeSection`). */
27
+ export const sectionUnder = (
28
+ parent: FeatureSection,
29
+ registry: FeatureRegistry,
30
+ prop: FeaturesProp | undefined,
31
+ strict: boolean,
32
+ report: (cause: Cause.Cause<unknown>) => void,
33
+ ): FeatureSection => makeSection(parent, registry, prop, strict, report, HOST)