@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,1653 @@
1
+ var _m$ = Symbol(),
2
+ _m$2 = Symbol();
3
+ var _d$ = {
4
+ get() {
5
+ const node = this[_m$];
6
+ return contextOf(node.provided);
7
+ },
8
+ enumerable: true,
9
+ configurable: true
10
+ },
11
+ _d$2 = {
12
+ get() {
13
+ const props = this[_m$2];
14
+ return props.children;
15
+ },
16
+ enumerable: true,
17
+ configurable: true
18
+ };
19
+ function _P$(_p, _p2) {
20
+ this[_m$] = _p;
21
+ this[_m$2] = _p2;
22
+ Object.defineProperty(this, "value", _d$);
23
+ Object.defineProperty(this, "children", _d$2);
24
+ }
25
+ _P$.prototype = Object.prototype;
26
+ var _d$3 = {
27
+ get() {
28
+ const appear = this[_m$];
29
+ return contextOf(appear.provided);
30
+ },
31
+ enumerable: true,
32
+ configurable: true
33
+ },
34
+ _d$4 = {
35
+ get() {
36
+ const props = this[_m$2];
37
+ return props.children;
38
+ },
39
+ enumerable: true,
40
+ configurable: true
41
+ };
42
+ function _P$2(_p3, _p4) {
43
+ this[_m$] = _p3;
44
+ this[_m$2] = _p4;
45
+ Object.defineProperty(this, "value", _d$3);
46
+ Object.defineProperty(this, "children", _d$4);
47
+ }
48
+ _P$2.prototype = Object.prototype;
49
+ import { tapPropagates } from "../../press.js";
50
+ import * as Report from "@wardic/dom/Report";
51
+ import * as Renderer from "@wardic/core/Renderer";
52
+ import * as DomRenderer from "@wardic/dom/DomRenderer";
53
+ import * as Style from "@wardic/dom/Style";
54
+ import * as Svg from "@wardic/dom/Svg";
55
+ import * as Arr from "effect/Array";
56
+ import * as Bool from "effect/Boolean";
57
+ import * as Cause from "effect/Cause";
58
+ import * as Effect from "effect/Effect";
59
+ import * as Scope from "effect/Scope";
60
+ import { constFalse, constTrue, constUndefined, constVoid, identity, pipe } from "effect/Function";
61
+ import * as Option from "effect/Option";
62
+ import * as Predicate from "effect/Predicate";
63
+ import * as UndefinedOr from "effect/UndefinedOr";
64
+ import { Atom } from "effect/reactivity";
65
+ import { isServer, useHead } from "@solidjs/web";
66
+ import { createEffect, createMemo, createSignal, createUniqueId, DEV, getOwner, isHydrating, onCleanup, runWithOwner, untrack } from "solid-js";
67
+ import { MOTION_PROPS_V2 } from "../../motion-props.js";
68
+ import * as OwnerScope from "../../owner-scope.js";
69
+ import { GESTURE_WORDS, serviceIn } from "../../gesture-features.js";
70
+ import { inViewOptionsOf } from "../../gesture-callbacks.js";
71
+ import { projectionIn } from "../../runtime.js";
72
+ import { createElementStyle } from "../../element-style.js";
73
+ import { createLiveStyle, readLive, serverRegistryOf, split } from "../../live-style.js";
74
+ import { dragTransitionOf } from "../../drag-transition.js";
75
+ import { layoutOptionsOf, registrationOf, wantsLayoutNode } from "../../layout-member.js";
76
+ import { useLayoutGroupId } from "./layout.js";
77
+ import { registerAnimatable } from "../../imperative.js";
78
+ import { controlledConfigOf, controlledElement, isAnimationControls, subscribe, uncontrolledOf } from "../../animation-controls.js";
79
+ import { settingOf } from "../../wardic-config-value.js";
80
+ import { presenceBlocksInitial, presenceHold, presenceSeedOf } from "../../presence-record.js";
81
+ import { handoffOf, setsAnimation } from "../../appear.js";
82
+ import { appearEntryOf, applyDragDefaults, dragAxisOf, dragDefaultsOf, draggingWithWillChange, drawnAtRest, followTemplate, heldTransformFor, registeredValuesOf, flagStartingStyle, isLayoutNode, makeElementSpine, makeReuse, exitConfigOf, exitTargetOf, presenceTreeOf, NO_EXIT_CONFIG, madeWith, presenceRecordOf, recordFrameOf, registryOf, releasingAppear, resolutionOf, restingOf, sameResolution, serverStartingStyle, snapshotOf, startLinksOf, startOf, warnDroppedTransform, withOnUpdate } from "../../spine.js";
83
+ import { inheritedContext, serverVariantNode, startsAtAnimate, startsQuiet } from "../../variant-tree.js";
84
+ import { followAtom } from "./bridge.js";
85
+ import { appearStyle, useWardicAppear, useWardicGate, useWardicPositionalKeys, useWardicDefaultTransition, useBuiltProjection, useWardicReducedMotion, useWardicRenderer, useWardicRuntime, useWardicSkipAnimations, useElementFeatures, useFeatureRegistry } from "./provider.js";
86
+ import { LAYOUT_PROPS, missingMessage, unreadColorIn } from "../../feature.js";
87
+ import { CLIENT_ONLY, CLIENT_ONLY_DEFERRED, CLIENT_ONLY_SYNC, CLIENT_ONLY_SYNC_DEFERRED, reactivityIn } from "./solid-reactivity.js";
88
+ import { useWardicConfig } from "./wardic-config.js";
89
+ import { pointMapOptionOf, transformPagePointOf } from "../../wardic-config-value.js";
90
+ import { configView } from "./config-view.js";
91
+ import { Lifecycle } from "./lifecycle.js";
92
+ import { neverLands, NO_EVENTS, serverWhen } from "./waiters.js";
93
+ import { usePresenceContext } from "./presence.js";
94
+ import { createVariantNode, useVariantContext, WardicVariantContext } from "./variant-node.js";
95
+ import { DragGesture, FocusGesture, HoverGesture, InViewGesture, PanGesture, PressGesture } from "../../features/keys.js";
96
+ /** Every key a ward reads, its callbacks among them. */
97
+ const WARD_KEYS = ["initial", "animate", "variants", "custom", "inherit", "whileHover", "whileTap", "whileInView", "whileFocus", "viewport", "drag", "whileDrag", "dragConstraints", "dragElastic", "dragMomentum", "dragSnapToOrigin", "dragTransition", "dragPropagation", "propagate", "dragDirectionLock", "dragControls", "dragListener", "onMeasureDragConstraints", "transition", "exit", "layout", "layoutDependency", "layoutId", "layoutScroll", "layoutRoot", "layoutAnchor", "layoutCrossfade", "onUpdate", "transformTemplate", "onBeforeLayoutMeasure", "onLayoutMeasure", "appear", "style", "key"];
98
+ const everyKeyRead = true;
99
+ void everyKeyRead;
100
+ const everyPropRead = true;
101
+ void everyPropRead;
102
+ /**
103
+ * The target memo's comparison (#337): {@link sameResolution}, and a change when there's nothing to
104
+ * compare with. Solid 2 calls a memo's `equals` with no previous value when the memo was made inside
105
+ * an action's transaction, as a ward an optimistic write makes is, before anything has committed.
106
+ */
107
+ const sameTarget = (a, b) => {
108
+ if (Predicate.isUndefined(a)) return false;
109
+ if (Predicate.isUndefined(b)) return false;
110
+ return sameResolution(a, b);
111
+ };
112
+ /** A ward's config read per key (#259). */
113
+ const WARD_VIEW = configView(WARD_KEYS, ["onUpdate", "dragConstraints", "onMeasureDragConstraints", "transformTemplate", "onBeforeLayoutMeasure", "onLayoutMeasure"]);
114
+ /** `config` read per key (#259), for a read outside a ward: a `wardic.<tag>`'s props at setup. Internal. */
115
+ export const wardConfigView = config => WARD_VIEW.of(config);
116
+ /** A config given whole as an accessor, which the Solid 2 binding no longer reads (#259). */
117
+ const WHOLE_ACCESSOR = "ward(config) takes its config as an object, read per key (#259): make a key reactive with an accessor " + "(`ward({ animate: () => ({ x: x() }) })`), a getter, a store or a component's props, not the whole config " + "(`ward(() => ({ … }))`).";
118
+ /**
119
+ * A ward's mark (#349): what tells a ward given to a component's `wardRef` from a function handed the
120
+ * component's own ward. Internal: its value is the ward's {@link WardShare}.
121
+ */
122
+ export const WARD = Symbol("wardic.ward");
123
+ /** Where a ward keeps its {@link WardState}: on itself, not enumerable, so a spread never sees it. */
124
+ const WARD_STATE = Symbol("wardic.wardState");
125
+ /** A ward's {@link WardState}. */
126
+ const stateOf = ward => ward[WARD_STATE];
127
+ /**
128
+ * The members every client ward shares (#525): one prototype over `Function.prototype`, so a ward is
129
+ * still a function, Solid's ref. Each is a getter: its closure is made at its first read and kept on
130
+ * that ward, so one taken off the ward still works and one never read is never made. A ward was
131
+ * given each as its own property, a descriptor and most a closure apiece, in one `defineProperties` a
132
+ * ward: the line a Solid 2 mount spent most in. A ward keeps `ref`, `style` and its attributes as its
133
+ * own, enumerable, as a spread and `Object.keys` read them.
134
+ */
135
+ const WARD_MEMBER_KEYS = {
136
+ [WARD]: {
137
+ get() {
138
+ return stateOf(this).shared();
139
+ }
140
+ },
141
+ Provider: {
142
+ get() {
143
+ return stateOf(this).Provider;
144
+ }
145
+ },
146
+ read: {
147
+ get() {
148
+ return stateOf(this).read;
149
+ }
150
+ },
151
+ atom: {
152
+ get() {
153
+ return stateOf(this).atom;
154
+ }
155
+ },
156
+ with: {
157
+ get() {
158
+ return stateOf(this).with;
159
+ }
160
+ },
161
+ settled: {
162
+ get() {
163
+ const state = stateOf(this);
164
+ if (Predicate.isNotUndefined(state.settled)) return state.settled;
165
+ const lifecycle = state.lifecycle;
166
+ state.settled = () => lifecycle.read();
167
+ return state.settled;
168
+ }
169
+ },
170
+ tapped: {
171
+ get() {
172
+ const state = stateOf(this);
173
+ if (Predicate.isNotUndefined(state.tapped)) return state.tapped;
174
+ const lifecycle = state.lifecycle;
175
+ state.tapped = () => lifecycle.tapped();
176
+ return state.tapped;
177
+ }
178
+ },
179
+ next: {
180
+ get() {
181
+ const state = stateOf(this);
182
+ if (Predicate.isNotUndefined(state.next)) return state.next;
183
+ const lifecycle = state.lifecycle;
184
+ const next = name => lifecycle.wait(name);
185
+ state.next = next;
186
+ return next;
187
+ }
188
+ },
189
+ each: {
190
+ get() {
191
+ const state = stateOf(this);
192
+ if (Predicate.isNotUndefined(state.each)) return state.each;
193
+ const lifecycle = state.lifecycle;
194
+ const each = name => lifecycle.each(name);
195
+ state.each = each;
196
+ return each;
197
+ }
198
+ },
199
+ when: {
200
+ get() {
201
+ const state = stateOf(this);
202
+ if (Predicate.isNotUndefined(state.when)) return state.when;
203
+ const lifecycle = state.lifecycle;
204
+ const when = name => lifecycle.when(name);
205
+ state.when = when;
206
+ return when;
207
+ }
208
+ }
209
+ };
210
+ /** {@link WARD_MEMBER_KEYS} on one prototype over `Function.prototype`. */
211
+ const WARD_MEMBERS = /*#__PURE__*/Object.create(Function.prototype, WARD_MEMBER_KEYS);
212
+ /** What a `wardic.*` component or a `<Reorder>` item adds to a ward. Internal. */
213
+ /**
214
+ * The config keys that want a gesture on Solid 2 (#525), as the ward's `wants*` read them: an element
215
+ * given none, its keys fixed, is `gestureless`. Pan is wanted only through the lifecycle.
216
+ */
217
+ export const GESTURE_KEYS = ["whileHover", "whileTap", "whileInView", "whileFocus"];
218
+ /** A ward's share, or `undefined` for anything else (a function handed a component's own ward). */
219
+ export const shareOf = value => {
220
+ if (Bool.not(Predicate.hasProperty(value, WARD))) return undefined;
221
+ return value[WARD];
222
+ };
223
+ /** A ward driving an element while another is: a ward drives one element at a time (#349's Q5). */
224
+ const secondElement = name => `${name}: this ward is already on another element. A ward drives one element at a time: make one for each element, ` + "in the <For> callback or a component of its own, rather than giving or spreading the same one twice.";
225
+ /** Whether `other` is an element other than `el` still on the page (#349's Q5). */
226
+ const stillOn = (other, el) => {
227
+ if (Predicate.isUndefined(other)) return false;
228
+ return Bool.and(other !== el, other.isConnected);
229
+ };
230
+ /** What a ward's errors call it: the component it drives an element for, else `ward(config)`. */
231
+ const nameOf = internal => UndefinedOr.match(internal.name, {
232
+ onUndefined: () => "ward(config)",
233
+ onDefined: identity
234
+ });
235
+ /** What a Slim element tells its ward: it brings no Feature of its own (#511). */
236
+ export const SLIM = {};
237
+ /** A ward's internals from `ward()`'s options: its chosen parent, if any. */
238
+ export const internalsOf = (options, kind) => {
239
+ if (Predicate.isUndefined(options)) return kind;
240
+ if (Predicate.isUndefined(options.parent)) return kind;
241
+ return {
242
+ ...kind,
243
+ parent: options.parent
244
+ };
245
+ };
246
+ const NO_GESTURES = {
247
+ element: undefined,
248
+ inView: false,
249
+ focused: false,
250
+ hovered: false,
251
+ pressed: false,
252
+ dragging: false
253
+ };
254
+ /** Whether a ward's call is Solid applying it as a ref. */
255
+ const isElement = value => Predicate.hasProperty(value, "nodeType");
256
+ /** A context value as Solid 2's context takes it: `null` for none. */
257
+ const contextOf = value => Option.getOrNull(Option.fromUndefinedOr(value));
258
+ /**
259
+ * Says, once per provider, that a colour of the element's needs the `colors` Feature (#511, ADR-0067
260
+ * decision 7): a value naming a wide-gamut space, while the page reads none, outside a lazy load.
261
+ * Development only (its caller's `DEV`).
262
+ */
263
+ const warnUnreadColors = (registry, features, values) => {
264
+ createEffect(() => {
265
+ if (features.pending()) return undefined;
266
+ return unreadColorIn(values());
267
+ }, unread => {
268
+ if (Predicate.isUndefined(unread)) return;
269
+ registry.warnOnce("colors", missingMessage("colors", `The colour \`${unread}\``, "@wardic/solid/unstable/v2"));
270
+ }, CLIENT_ONLY);
271
+ };
272
+ /** Whether a config carries its variants (#398): it sets `variants` or `inherit`. */
273
+ const carriesVariants = config => Bool.or(Predicate.isNotUndefined(config.variants), Predicate.isNotUndefined(config.inherit));
274
+ /** A child made with `{ parent }` naming a Listening ward (#398's Q10). */
275
+ const LISTENING_PARENT = "ward(config, { parent }): the parent given carries no variants (no `variants` or `inherit` in its ward({ … })): it only listens, " + "and its element's props hold its variants, so a child can't join it by `{ parent }` (#398). Render the child inside that " + "ward's element, where it joins through the tree, or put the variants in the parent's ward({ … }).";
276
+ /**
277
+ * The **Layout group** a ward's `layoutId` goes in (#432): the one it's made in, as its presence and
278
+ * variant parent are; a driving ward's is its given ward's, where that was made, unless the element's
279
+ * own props set the `layoutId` (#398), which is then the element's.
280
+ */
281
+ const layoutGroupFor = (share, fixed) => {
282
+ if (Predicate.isUndefined(share)) return useLayoutGroupId();
283
+ if (Bool.and(Predicate.isNotUndefined(fixed), Predicate.hasProperty(fixed, "layoutId"))) return useLayoutGroupId();
284
+ return share.layoutGroup;
285
+ };
286
+ /**
287
+ * The variant context a ward is made under (#349): a driving ward's given ward's, else its given
288
+ * parent's, else the one around it. A driving ward for a Listening ward (#398) takes the one around
289
+ * its element instead, unless the ward's parent was chosen: its element builds its own node there.
290
+ */
291
+ const variantParentOf = internal => {
292
+ const share = internal.share;
293
+ if (Predicate.isNotUndefined(share)) {
294
+ if (Bool.or(share.carries, share.chosen)) return share.parent;
295
+ return useVariantContext();
296
+ }
297
+ const parent = shareOf(internal.parent);
298
+ if (Predicate.isNotUndefined(parent)) {
299
+ if (Bool.not(parent.carries)) throw new Error(LISTENING_PARENT);
300
+ return parent.provided;
301
+ }
302
+ return useVariantContext();
303
+ };
304
+ /**
305
+ * A ward's variant node: a driving ward's is its given ward's (#349), unless that ward listens
306
+ * (#398), when its element builds its own from its props; any other ward's is its own, made now.
307
+ */
308
+ const nodeFor = (share, cfg, config, parent, change) => {
309
+ if (Predicate.isNotUndefined(share)) {
310
+ const node = share.node;
311
+ if (Predicate.isNotUndefined(node)) {
312
+ if (share.carries) return node;
313
+ }
314
+ }
315
+ return createVariantNode(cfg, config, parent, change);
316
+ };
317
+ /** No change: a ward without Animation controls. */
318
+ const NO_CHANGE = constUndefined;
319
+ /**
320
+ * A ward's config with its `animate` read once, at setup (#433): **Animation controls** make each change
321
+ * they make its entry, over the rest of its keys as given, the view marked controlled; anything else, none.
322
+ */
323
+ const controlsOf = (given, animate) => {
324
+ if (Bool.not(isAnimationControls(animate))) return undefined;
325
+ const [change, setChange] = createSignal(undefined);
326
+ const view = Object.create(given, {
327
+ animate: {
328
+ enumerable: true,
329
+ get: () => UndefinedOr.map(change(), made => made.definition)
330
+ },
331
+ controlled: {
332
+ enumerable: true,
333
+ value: true
334
+ }
335
+ });
336
+ return {
337
+ controls: animate,
338
+ view,
339
+ change,
340
+ set: made => setChange(() => made)
341
+ };
342
+ };
343
+ /**
344
+ * `view` with its **Config transition** as its own when it gives none (#434, Motion's
345
+ * `{ ...config, ...props }`), read per read as its keys are; `view` itself with no `WardicConfig` above.
346
+ */
347
+ const configuredView = (view, config) => {
348
+ if (Predicate.isUndefined(config)) return view;
349
+ return Object.create(view, {
350
+ transition: {
351
+ enumerable: true,
352
+ get: () => UndefinedOr.match(view.transition, {
353
+ onUndefined: config.transition,
354
+ onDefined: identity
355
+ })
356
+ }
357
+ });
358
+ };
359
+ /**
360
+ * Whether a node's `when` gate lets a Retarget start (ADR-0007), as a memo, so only a flip of it
361
+ * re-runs what reads it. A plain node's gate never shuts (its `canStart` is `constTrue`), so it has
362
+ * none (#525).
363
+ */
364
+ const gateOf = node => {
365
+ if (node.canStart === constTrue) return constTrue;
366
+ return createMemo(() => node.canStart(), CLIENT_ONLY);
367
+ };
368
+ /** A ward's lifecycle: a driving ward's is its given ward's (#349), any other its own, made now. */
369
+ const lifecycleFor = (share, owner, want) => {
370
+ const shared = UndefinedOr.map(share, lifecycleOfShare);
371
+ if (Predicate.isNotUndefined(shared)) return shared;
372
+ return new Lifecycle(owner, want);
373
+ };
374
+ const lifecycleOfShare = share => share.lifecycle;
375
+ /** A mount's element. */
376
+ const elementOfMount = m => m.element;
377
+ /**
378
+ * A ward mounting an element another ward left in the same task: a spread's expression
379
+ * (`{...ward(config)}`), which Solid 2 runs again on every run of the element's props, making a new
380
+ * ward each time.
381
+ */
382
+ const REMADE = "ward(config) made a new ward for an element another ward just left: Solid 2 runs a spread's expression " + "(`<div {...ward(config)} />`) again on every run of the element's props. Make it once, in the component's body, " + "and spread that: `const card = ward(config)` then `<div {...card} />`. Or give it to `ref={ward(config)}`, client-only.";
383
+ /**
384
+ * The keys a ward reads as it goes, through its target or its style (#257 item 1): one still loading
385
+ * when the ward is made holds its region until it lands. Any other key is fixed at setup.
386
+ */
387
+ const LOADS_AS_IT_GOES = new Set(["animate", "whileHover", "whileTap", "whileFocus", "whileInView", "whileDrag", "transition", "style", "custom"]);
388
+ /** A ward's setup key still loading when it's made (#257 item 1). */
389
+ const loadingAtSetup = key => `ward(config): \`${key}\` was still loading when the ward was made. A ward reads it once, when it's made: give it a value, or make the ward once its data is in.`;
390
+ /** A ward that starts at its `animate`, still loading when it's made (#257 item 1). */
391
+ const STARTS_AT_PENDING = "ward(config): `animate` was still loading when the ward was made, and with `initial={false}` a ward starts there. Give it an `initial`, or make the ward once its data is in.";
392
+ /** A name list standing for an `animate` still loading at setup, on a ward with `variants` (#257 item 1). */
393
+ const LOADING_NAMES = [];
394
+ /**
395
+ * The config setup reads: a key still loading that setup fixes is an error (#257 item 1). A loading
396
+ * `animate` names the ward's own variants when it has `variants` (what it can name), and is a target
397
+ * of values otherwise: setup reads it only to tell which.
398
+ */
399
+ const configAtSetup = setup => {
400
+ if (setup.pending.length === 0) return setup.config;
401
+ const fixed = Arr.findFirst(setup.pending, key => Bool.not(LOADS_AS_IT_GOES.has(key)));
402
+ if (Option.isSome(fixed)) throw new Error(loadingAtSetup(fixed.value));
403
+ const config = setup.config;
404
+ if (Bool.and(Arr.contains(setup.pending, "animate"), Predicate.isNotUndefined(config.variants))) return {
405
+ ...config,
406
+ animate: LOADING_NAMES
407
+ };
408
+ return config;
409
+ };
410
+ /**
411
+ * Elements a ward has left in this task: a ward mounting one is {@link REMADE}. Cleared once, at the
412
+ * task's end, by one microtask however many leave (#259: one a ward cost 0.2 ms an unmount of 1,000).
413
+ */
414
+ // Module state (#460, Q7): the page's one end-of-task batch: cleared by one microtask at the task's end.
415
+ const justLeft = new Set();
416
+ const forgetJustLeft = () => justLeft.clear();
417
+ /** {@link ward} with a `wardic.<tag>`'s additions. Internal. */
418
+ /**
419
+ * Makes a mounted element's layout node with `arrive` if it was on its way as the element mounted and
420
+ * `services` has `layout` now (#582). A module's function, not a ward's: a ward makes none.
421
+ */
422
+ const layoutArrivedIn = (arrive, services) => {
423
+ UndefinedOr.map(arrive, make => UndefinedOr.map(projectionIn(services), make));
424
+ };
425
+ export function wardWith(config, internal) {
426
+ if (Predicate.isFunction(config)) throw new Error(WHOLE_ACCESSOR);
427
+ const runtime = useWardicRuntime();
428
+ // Its Features (#511, ADR-0067), a Complete element's every one: what they register, a server
429
+ // render's elements read too (the `colors` Feature's spaces).
430
+ const features = useElementFeatures(internal.brings, internal.complete === true);
431
+ // A server render takes the lean path: the Starting style only, no spine (ADR-0021).
432
+ if (isServer) return serverWard(config, internal);
433
+ const gate = useWardicGate();
434
+ // Its section's projection system, the `layout` Feature's (#511): `undefined` without it. Read now,
435
+ // which builds the Features given to its section at once: the first element to ask builds them.
436
+ const layoutProjection = projectionIn(untrack(features.services));
437
+ // The provider's, once any section has built it: what its values register with.
438
+ const builtProjection = useBuiltProjection();
439
+ const reducedMotion = useWardicReducedMotion();
440
+ // Whether its animations are skipped (#468): its nearest WardicConfig's, read as each starts.
441
+ const skipAnimations = useWardicSkipAnimations();
442
+ // Where its drag's and pan's points are (#443): its nearest WardicConfig's, read as each starts.
443
+ const pagePoint = transformPagePointOf(useWardicConfig());
444
+ const positionalKeys = useWardicPositionalKeys();
445
+ const defaultTransition = useWardicDefaultTransition();
446
+ const owner = getOwner();
447
+ const reactivity = reactivityIn(owner);
448
+ const registry = registryOf(runtime);
449
+ // SSR/hydration-stable: the server ward makes the same one call.
450
+ const id = createUniqueId();
451
+ // Its config, read per key where it's read (#259): a change re-runs only what reads the key. With
452
+ // Animation controls for its `animate` (#433), read once, each change they make is its entry.
453
+ // Under a `WardicConfig`, its Config transition is its own when it gives none (#434).
454
+ const asGiven = configuredView(WARD_VIEW.of(config, internal.fixed), useWardicConfig());
455
+ // The config at setup, a plain copy read untracked: what setup reads, the keys read once among it.
456
+ // A key still loading (#257 item 1) is left out of it: one the ward reads as it goes holds its
457
+ // region until it lands; one setup fixes is an error, naming it. Its `animate` there tells
458
+ // Animation controls; one still loading is none.
459
+ const givenSetup = WARD_VIEW.setupOf(asGiven);
460
+ const controls = controlsOf(asGiven, givenSetup.config.animate);
461
+ const view = UndefinedOr.match(controls, {
462
+ onUndefined: () => asGiven,
463
+ onDefined: c => c.view
464
+ });
465
+ const cfg = () => view;
466
+ const setup = UndefinedOr.match(controls, {
467
+ onUndefined: () => givenSetup,
468
+ onDefined: () => WARD_VIEW.setupOf(view)
469
+ });
470
+ const initialConfig = UndefinedOr.match(controls, {
471
+ onUndefined: () => configAtSetup(setup),
472
+ onDefined: () => controlledConfigOf(configAtSetup(setup), undefined)
473
+ });
474
+ // Its Animation controls' change (#433), read with the Override stack: none without them.
475
+ const ownChange = UndefinedOr.match(controls, {
476
+ onUndefined: () => NO_CHANGE,
477
+ onDefined: c => c.change
478
+ });
479
+ // A ward a component was given (#349), whose element this one drives: its variant node and its
480
+ // lifecycle are that ward's, so its children, stagger and `next` readers are where it was made.
481
+ const share = internal.share;
482
+ // Its place in variant orchestration (ADR-0007, #50): where it's made, its given parent's (#349),
483
+ // or its given ward's.
484
+ const parent = variantParentOf(internal);
485
+ const node = nodeFor(share, cfg, initialConfig, parent, UndefinedOr.map(controls, c => c.change));
486
+ // The nearest <AnimatePresence> (ADR-0007), or none.
487
+ const presence = usePresenceContext();
488
+ // The Layout group its `layoutId` goes in (#432): where it's made, or a given ward's.
489
+ const layoutGroup = layoutGroupFor(share, internal.fixed);
490
+ // The values it starts from, read once (ADR-0003): its `initial`, or the one it inherits, or its
491
+ // `animate` with `initial={false}` (its own, inherited, or its presence's first render, #134).
492
+ const presenceBlocks = presenceBlocksInitial(presence);
493
+ if (Bool.and(Arr.contains(setup.pending, "animate"), startsAtAnimate(initialConfig, node.inherited, presenceBlocks))) throw new Error(STARTS_AT_PENDING);
494
+ const start = startOf(initialConfig, node.inherited, presenceBlocks, untrack);
495
+ // Read once by the provider (#618, M1).
496
+ const {
497
+ project
498
+ } = useWardicRenderer();
499
+ // The Starting style: the projected `initial`, carried by `style` until the gate's first commit
500
+ // (ADR-0021 decision 6, ADR-0034); an svg-inner tag's attribute keys as attributes. While
501
+ // hydrating, what the server rendered, the DOM's project (the Hydration hold). A layout node's is
502
+ // drawn through its projection at rest, as its first commit draws it (#245).
503
+ const layoutNode = isLayoutNode(initialConfig);
504
+ const drawnStart = drawnAtRest(start.initialValues, layoutNode, initialConfig.transformTemplate);
505
+ const projected = project(drawnStart);
506
+ const hydrating = isHydrating();
507
+ const startingPatch = Bool.match(hydrating, {
508
+ onTrue: () => DomRenderer.project(drawnStart),
509
+ onFalse: () => projected
510
+ });
511
+ if (hydrating) flagStartingStyle(runtime, id, startingPatch, projected);
512
+ const seed = Svg.splitPatchForTag(internal.tag, startingPatch);
513
+ // Its drag axis and a drag element's defaults (ADR-0004, ADR-0019 *Amendment (Reorder)*), under
514
+ // the user's style: `drag` is read once, as on the Solid 1 binding.
515
+ const dragAxis = dragAxisOf(initialConfig, internal);
516
+ const dragDefaults = dragDefaultsOf(initialConfig, internal);
517
+ // Its routed `style` keys (#130, ADR-0043), and its `style`, switched by the gate's hooks.
518
+ const live = createLiveStyle({
519
+ registry: registryOf(runtime),
520
+ onDroppedTransform: () => warnDroppedTransform(runtime, id),
521
+ reactivity
522
+ });
523
+ const projectStarting = Bool.match(hydrating, {
524
+ onTrue: () => DomRenderer.project,
525
+ onFalse: () => project
526
+ });
527
+ // The element's style (#264): the config's, with the latest `.with()` style over it, key by key.
528
+ // `.with()` runs in the spread's computation, an owned scope: it tells `read(key)` through a
529
+ // signal written there (`ownedWrite`), and never `style`, whose spread would run `.with` again.
530
+ let given = NO_WITH;
531
+ // Made at the first `read(key)` or `.with()`: most elements call neither.
532
+ let withCalls;
533
+ const withCallsOf = () => {
534
+ if (Predicate.isUndefined(withCalls)) withCalls = runWithOwner(owner, () => createSignal(undefined, {
535
+ equals: false,
536
+ ownedWrite: true
537
+ }));
538
+ return withCalls;
539
+ };
540
+ const userStyle = () => withStyleOver(cfg().style, given.style);
541
+ const elementStyle = createElementStyle({
542
+ userStyle,
543
+ starting: seed.style,
544
+ startingWith: routed => Svg.splitPatchForTag(internal.tag, projectStarting(drawnAtRest({
545
+ ...routed,
546
+ ...start.initialValues
547
+ }, layoutNode, initialConfig.transformTemplate))).style,
548
+ live,
549
+ defaults: dragDefaults,
550
+ base: internal.baseStyle,
551
+ reactivity
552
+ });
553
+ const snapshot = snapshotOf(start);
554
+ const reuse = makeReuse();
555
+ // Where its element starts (#414): the ward's start, or a fresh one for an element given after the
556
+ // last one left the page, as a mount after the first render's (no presence holds its `initial`
557
+ // back). Its Snapshot goes back to it, and its Starting style comes back on until its first commit.
558
+ let begun = start;
559
+ const beginFresh = () => {
560
+ // The config now, a plain copy read untracked, as setup reads it: this runs in the mount effect.
561
+ const now = WARD_VIEW.setupOf(view).config;
562
+ begun = startOf(now, node.inherited, false, untrack);
563
+ snapshot.values = {
564
+ ...begun.initialValues
565
+ };
566
+ snapshot.velocities = {};
567
+ snapshot.drawnAt = {};
568
+ elementStyle.restart(Svg.splitPatchForTag(internal.tag, project(drawnAtRest(begun.initialValues, layoutNode, now.transformTemplate))).style);
569
+ };
570
+ const configNow = () => view;
571
+ const styleNow = () => untrack(userStyle);
572
+ // What its exit resolves from under an <AnimatePresence> (#277: its `exit`, `variants`, `custom` and
573
+ // transition), kept current while it's alive: the presence resolves it as the ward leaves (ADR-0007).
574
+ const exitConfig = {
575
+ current: NO_EXIT_CONFIG
576
+ };
577
+ if (Predicate.isNotUndefined(presence)) {
578
+ // Its inherited transition is read untracked here: the effect keeps it current.
579
+ exitConfig.current = untrack(() => exitConfigOf(initialConfig, node.inherited));
580
+ createEffect(() => exitConfigOf(cfg(), node.inherited), config => {
581
+ exitConfig.current = config;
582
+ }, CLIENT_ONLY_DEFERRED);
583
+ }
584
+ // Its layout node (ADR-0009): the projection system it registers one with, decided at setup, as
585
+ // `layout` is read once, and what a release runs on, its Release offset (ADR-0016, *Amendment
586
+ // (#140)*). Its section's `layout` makes its node (#511): without it, its layout props do nothing,
587
+ // and development says so once, unless `layout` is on its way.
588
+ const wantsNode = wantsLayoutNode(initialConfig);
589
+ if (DEV && wantsNode && Predicate.isUndefined(layoutProjection) && Bool.not(untrack(features.pending))) {
590
+ useFeatureRegistry().warnOnce("layout", missingMessage("layout", LAYOUT_PROPS, "@wardic/solid/unstable/v2"));
591
+ }
592
+ const layoutNodes = Bool.match(wantsNode, {
593
+ onTrue: () => layoutProjection,
594
+ onFalse: constUndefined
595
+ });
596
+ const dragTransition = dragTransitionOf(initialConfig.dragElastic, initialConfig.dragTransition);
597
+ // The element, set by the ref during render. Its write is the one a ward makes in an owned scope: a
598
+ // ward called with its element in a component's body (WT2), not given to `ref`.
599
+ const [element, setElement] = createSignal(undefined, {
600
+ ownedWrite: true
601
+ });
602
+ // Its gesture layers' states (ADR-0005), one signal for the three, so the target reads one (#259),
603
+ // each recorded on its element: the hover and press recognizers, each started on its element the
604
+ // first time its `while*` target is set (#87, ADR-0040), and the drag's. A write that changes
605
+ // nothing keeps the same object.
606
+ const [gestureState, setGestureState] = createSignal(NO_GESTURES);
607
+ /** Set `layer` on `el`: a state recorded on another element starts again from none. */
608
+ const setGesture = (el, layer, on) => {
609
+ setGestureState(g => {
610
+ if (g.element !== el) return Bool.match(on, {
611
+ onTrue: () => ({
612
+ ...NO_GESTURES,
613
+ element: el,
614
+ [layer]: true
615
+ }),
616
+ onFalse: () => g
617
+ });
618
+ if (g[layer] === on) return g;
619
+ return {
620
+ ...g,
621
+ [layer]: on
622
+ };
623
+ });
624
+ };
625
+ // The layers on the element mounted now: a state recorded on one the ward has left reads as none, so
626
+ // a move resets nothing by writing (#257's audit: the reset, written in the mount's effect, fed the
627
+ // target memo and re-ran the effect, EFFECT_WRITES_OWN_SOURCE). With none recorded there's nothing
628
+ // to compare, so the element isn't read: its arrival doesn't re-run the target memo (#320).
629
+ const gestures = () => {
630
+ const g = gestureState();
631
+ if (g === NO_GESTURES) return g;
632
+ if (g.element === element()) return g;
633
+ return NO_GESTURES;
634
+ };
635
+ const dragging = () => gestures().dragging;
636
+ // The keys these read are `GESTURE_KEYS` (#525).
637
+ const wantsHover = () => Predicate.isNotUndefined(cfg().whileHover);
638
+ const wantsPress = () => Predicate.isNotUndefined(cfg().whileTap);
639
+ const wantsInView = () => Predicate.isNotUndefined(cfg().whileInView);
640
+ const wantsFocus = () => Predicate.isNotUndefined(cfg().whileFocus);
641
+ // The Override stack, compared by value: a change that resolves the same target doesn't Retarget.
642
+ // A keyboard lift turns `whileDrag` on, as a drag does (ADR-0037).
643
+ const lifted = UndefinedOr.match(internal.lifted, {
644
+ onUndefined: () => constFalse,
645
+ onDefined: identity
646
+ });
647
+ const target = createMemo(() => {
648
+ const g = gestures();
649
+ return resolutionOf(cfg(), node.inherited, start.initialLink, {
650
+ inView: g.inView,
651
+ focused: g.focused,
652
+ hovered: g.hovered,
653
+ pressed: g.pressed,
654
+ dragged: Bool.or(g.dragging, lifted()),
655
+ dragging: g.dragging
656
+ }, snapshot, ownChange());
657
+ }, {
658
+ equals: sameTarget,
659
+ transparent: true
660
+ });
661
+ // A colour only the `colors` Feature reads, on a Slim element without it (#511, decision 7): said
662
+ // once per provider, in development only, and not while a lazy load is on its way.
663
+ // eslint-disable-next-line solid/reactivity -- read inside the warning's effect, where it tracks
664
+ if (DEV && internal.complete !== true) warnUnreadColors(useFeatureRegistry(), features, () => target().resolved);
665
+ // Its gesture states, for what its variant node hands down (#291): bound at setup, before its
666
+ // children read them. Read from the gestures themselves, not the target: a gesture whose layer
667
+ // resolves to nothing new leaves the target as it was (`sameResolution`), but is on all the same.
668
+ // Only a provider has one: a guard, so other wards make nothing here.
669
+ const bindGestures = node.bindGestures;
670
+ if (Predicate.isNotUndefined(bindGestures)) {
671
+ // eslint-disable-next-line solid/reactivity -- read inside the variant node's gestures memo, where it tracks
672
+ bindGestures(() => {
673
+ const g = gestures();
674
+ return {
675
+ inView: g.inView,
676
+ focused: g.focused,
677
+ hovered: g.hovered,
678
+ pressed: g.pressed,
679
+ dragged: Bool.or(g.dragging, lifted())
680
+ };
681
+ });
682
+ }
683
+ // Its Retargets' starts and landings (#257, ADR-0046): `settled()` and `next("settled")`, each with
684
+ // the gesture layers its target was resolved with.
685
+ // A gesture's event asked for starts its recognizer on the mounted element (and on later mounts).
686
+ // The ward driving an element for this one, given to a component (#349): its `read`, `atom` and
687
+ // `next` follow that element. Followed through an Atom made at the first `read`, `atom` or drive.
688
+ let driver;
689
+ let driven;
690
+ const drivenAtom = () => {
691
+ if (Predicate.isNotUndefined(driven)) return driven;
692
+ const atom = Atom.make(driver);
693
+ runWithOwner(owner, () => onCleanup(registry().mount(atom)));
694
+ driven = atom;
695
+ return atom;
696
+ };
697
+ // A driving ward's are its given ward's (#349), whose `next` starts them on the element it drives.
698
+ const lifecycle = lifecycleFor(share, owner, () => {
699
+ watchLateGestures();
700
+ UndefinedOr.map(mounted, startRecognizers);
701
+ UndefinedOr.map(driver, d => d.wanted());
702
+ });
703
+ /** A handler's throw, reported as a fiber's failure is (ADR-0030, decision 4); the watch goes on. */
704
+ const onDefect = cause => {
705
+ runtime.runFork(Report.failure("wardic.ward: a gesture handler failed", cause));
706
+ };
707
+ // The provider's Features, for development's word on a missing one (#511).
708
+ const featureRegistry = useFeatureRegistry();
709
+ /**
710
+ * A gesture's service when the element `wanted` it: its section's Feature's (#511), `undefined`
711
+ * without it, which development says once, unless it's on its way.
712
+ */
713
+ const gestureIn = (services, name, key, wanted) => {
714
+ if (Bool.not(wanted)) return undefined;
715
+ const service = serviceIn(services, key);
716
+ if (DEV && Predicate.isUndefined(service) && Bool.not(untrack(features.pending))) {
717
+ featureRegistry.warnOnce(name, missingMessage(name, GESTURE_WORDS[name], "@wardic/solid/unstable/v2"));
718
+ }
719
+ return service;
720
+ };
721
+ /**
722
+ * Start the hover, press and pan recognizers its config or a `next` now wants, each once a mount:
723
+ * each hover or press transition sets its gesture layer, and every event is told to the lifecycle
724
+ * for `next` (#257, #273).
725
+ */
726
+ const startRecognizers = m => {
727
+ // Each through its section's Feature (#511), read as it starts: one that arrives lazily starts from
728
+ // then on, as the effect below runs this again.
729
+ const services = untrack(features.services);
730
+ const hover = gestureIn(services, "hover", HoverGesture, Bool.or(untrack(wantsHover), lifecycle.wantsHover));
731
+ if (Predicate.isNotUndefined(hover) && Bool.not(m.hover)) {
732
+ m.hover = true;
733
+ m.watch(hover.watch(m.element, {
734
+ on: transition => {
735
+ setGesture(m.element, "hovered", transition.active);
736
+ lifecycle.hovered(transition, m.element);
737
+ },
738
+ // Each move while it's hovered, for `hover` (#397): told only to a `next` or `when` that asked.
739
+ onMove: event => lifecycle.hoverMoved(event, m.element),
740
+ onDefect
741
+ }));
742
+ }
743
+ const press = gestureIn(services, "press", PressGesture, Bool.or(untrack(wantsPress), lifecycle.wantsPress));
744
+ if (Predicate.isNotUndefined(press) && Bool.not(m.press)) {
745
+ m.press = true;
746
+ m.watch(press.watch(m.element, {
747
+ on: press => {
748
+ setGesture(m.element, "pressed", press.phase === "start");
749
+ lifecycle.pressed(press, m.element);
750
+ },
751
+ onDefect
752
+ }, internal.keysTaken === true, () => tapPropagates(untrack(cfg).propagate)));
753
+ }
754
+ // A pan sets no layer: only a `next` wants it (#273).
755
+ const pan = gestureIn(services, "pan", PanGesture, lifecycle.wantsPan);
756
+ if (Predicate.isNotUndefined(pan) && Bool.not(m.pan)) {
757
+ m.pan = true;
758
+ m.watch(pan.watch(m.element, {
759
+ on: sample => lifecycle.panned(sample, m.element),
760
+ onDefect
761
+ }, {
762
+ mapPoint: pointMapOptionOf(pagePoint)
763
+ }));
764
+ }
765
+ // In view as its `viewport` says, read when it starts (#273).
766
+ const inView = gestureIn(services, "inView", InViewGesture, Bool.or(untrack(wantsInView), lifecycle.wantsInView));
767
+ if (Predicate.isNotUndefined(inView) && Bool.not(m.inView)) {
768
+ m.inView = true;
769
+ m.watch(inView.watch(m.element, inViewOptionsOf(untrack(cfg).viewport), {
770
+ on: transition => {
771
+ setGesture(m.element, "inView", transition.active);
772
+ lifecycle.viewed(transition);
773
+ },
774
+ onDefect
775
+ }));
776
+ }
777
+ // Focused as the browser shows it (`:focus-visible`, #273).
778
+ const focus = gestureIn(services, "focus", FocusGesture, untrack(wantsFocus));
779
+ if (Predicate.isNotUndefined(focus) && Bool.not(m.focus)) {
780
+ m.focus = true;
781
+ m.watch(focus.watch(m.element, {
782
+ visible: true
783
+ }, {
784
+ on: focused => setGesture(m.element, "focused", focused),
785
+ onDefect
786
+ }));
787
+ }
788
+ };
789
+ let mounted;
790
+ // The last two elements given to its ref, for a second one still on the page as it mounts (#349's Q5).
791
+ let refdLast;
792
+ let refdBefore;
793
+ // One given after the last one left the page, which enters fresh (#414). Read as the ref is called,
794
+ // before Solid inserts it: one replacing the last in the same update finds it still on the page.
795
+ let fresh;
796
+ // Inside a child `mode="wait"` holds off the page (#277, ADR-0048), it mounts once the child is on
797
+ // it: `shown` ticks then, and the mount effect, which reads `ticked`, runs again. Only under a
798
+ // presence: with none, its compute calls a no-op and makes nothing. `held` cancels the wait.
799
+ let ticked = constUndefined;
800
+ let shown;
801
+ if (Predicate.isNotUndefined(presence)) {
802
+ const [read, tick] = createSignal(undefined, {
803
+ equals: false
804
+ });
805
+ ticked = read;
806
+ shown = () => tick(undefined);
807
+ }
808
+ let held;
809
+ const unhold = () => {
810
+ if (Predicate.isUndefined(held)) return;
811
+ held();
812
+ held = undefined;
813
+ };
814
+ /** Whether `el` waits off the page for its held child: its mount queued with the presence. */
815
+ const heldBack = el => {
816
+ unhold();
817
+ if (Predicate.isUndefined(shown)) return false;
818
+ held = presenceHold(presence, el, shown);
819
+ return Predicate.isNotUndefined(held);
820
+ };
821
+ const unmount = () => {
822
+ unhold();
823
+ if (Predicate.isUndefined(mounted)) return;
824
+ const left = mounted.element;
825
+ mounted.dispose();
826
+ mounted = undefined;
827
+ if (justLeft.size === 0) queueMicrotask(forgetJustLeft);
828
+ justLeft.add(left);
829
+ };
830
+ // Its element's mount goes, and its lifecycle's waits are rejected (#257): one cleanup.
831
+ // A driving ward's lifecycle is its given ward's, which outlives the element (#349).
832
+ onCleanup(() => {
833
+ unmount();
834
+ if (Predicate.isUndefined(share)) lifecycle.dispose();
835
+ });
836
+ const mount = el => {
837
+ if (justLeft.has(el)) throw new Error(REMADE);
838
+ // The ward a component was given follows this element while it's mounted (#349): one at a time.
839
+ let undrive;
840
+ if (Predicate.isNotUndefined(share)) {
841
+ undrive = share.drive({
842
+ wanted: () => {
843
+ UndefinedOr.map(mounted, startRecognizers);
844
+ },
845
+ readAtom: key => readEntry(key).atom,
846
+ atom: key => gate.valueOf(id, key)
847
+ }, nameOf(internal));
848
+ }
849
+ // The gate commits each frame onto the element (ADR-0006, ADR-0034); the hooks switch its
850
+ // `style`. An element with `onUpdate` at mount is told each committed frame (#233). While
851
+ // hydrating, its Appear animation is found here, taken over by its first Retarget that starts,
852
+ // and removed in its first commit (the Handoff, ADR-0044 decision 6).
853
+ const handoff = Bool.match(hydrating, {
854
+ onTrue: () => Option.getOrUndefined(handoffOf(el)),
855
+ onFalse: constUndefined
856
+ });
857
+ // Its Transform template (#443), drawn with its first write: the one at mount, then each other one
858
+ // its config gives.
859
+ const templateAtMount = configNow().transformTemplate;
860
+ let template = templateAtMount;
861
+ const registered = registeredValuesOf(templateAtMount);
862
+ const unregister = gate.register(id, releasingAppear(withOnUpdate({
863
+ target: el,
864
+ ...elementStyle.hooks
865
+ }, configNow().onUpdate, configNow), handoff, el), registered);
866
+ // Its values, for the projection's flights (ADR-0012 *Amendment (#137)*).
867
+ // None while no section has `layout`: there's no flight to follow them (#511).
868
+ const unregisterValues = UndefinedOr.match(builtProjection(), {
869
+ onUndefined: () => constVoid,
870
+ onDefined: projection => projection.registerValues(el, () => snapshot.values)
871
+ });
872
+ const links = startLinksOf(el, styleNow, live);
873
+ // Its exit record, under an <AnimatePresence>: the presence removes it once the exit settles.
874
+ const presenceRecord = UndefinedOr.map(presence, registrar => {
875
+ const record = presenceRecordOf(el, begun, (custom, inherited) => exitTargetOf(exitConfig.current, custom, snapshot, inherited), links, presenceTreeOf(initialConfig), snapshot, reducedMotion, skipAnimations);
876
+ registrar.register(record);
877
+ return record;
878
+ });
879
+ const recordFrame = recordFrameOf(presenceRecord);
880
+ // Its exit is drawn through its template (#443): it rides in its presence record, whose drawn values
881
+ // the projection reads as it leaves. A later one is written with the values it holds, so the commit
882
+ // that may take its Starting style off holds them.
883
+ // Nothing with none (#460): no follow.
884
+ let unfollowTemplate = constVoid;
885
+ if (Predicate.isNotUndefined(templateAtMount)) {
886
+ recordFrame(registered);
887
+ unfollowTemplate = followTemplate(templateAtMount, () => view.transformTemplate, reactivity.watch, next => {
888
+ template = next;
889
+ gate.write(id, {
890
+ ...snapshot.values,
891
+ [DomRenderer.TEMPLATE_KEY]: next
892
+ });
893
+ recordFrame({
894
+ [DomRenderer.TEMPLATE_KEY]: next
895
+ });
896
+ });
897
+ }
898
+ // Where it starts when its child takes over from a leaver (#286): asked before its layout node
899
+ // registers, which moves from the leaver's box, and before its first Retarget.
900
+ const taken = presenceSeedOf(presence, el);
901
+ // Its one projection node (ADR-0009, ADR-0010), its own `x`/`y` drawn on top of it (#363).
902
+ // Its layout animations' starts and landings, and its drag's release at rest, go to the lifecycle,
903
+ // for `next("layoutStart")`, `next("layoutComplete")` and `next("dragTransitionEnd")` (#257, #273):
904
+ // Solid 2 has no props for them.
905
+ let layout;
906
+ // A `<Reorder>` item's group registers the node, until the unmount.
907
+ let handedOver;
908
+ // `layout` on its way as it mounted (#582): its node is made as it arrives (`arriveLayout`), as
909
+ // Motion's is, and measures from then on; nothing before it is replayed.
910
+ let arriveLayout;
911
+ if (wantsNode) {
912
+ // `takenNow`: where a child that takes over from a leaver starts, at its mount only (#286).
913
+ const layoutNodeOn = (projection, takenNow) => {
914
+ const started = () => lifecycle.layoutStarted();
915
+ const completed = () => lifecycle.layoutCompleted();
916
+ const released = () => lifecycle.released();
917
+ const handle = projection.register(registrationOf({
918
+ ...layoutOptionsOf({
919
+ id,
920
+ element: el,
921
+ config: configNow,
922
+ parent: node.inherited,
923
+ snapshot,
924
+ dragTransition,
925
+ raiseWhileDragged: internal.raiseWhileDragged === true,
926
+ taken: takenNow,
927
+ layoutGroup,
928
+ reducedMotion,
929
+ skipAnimations,
930
+ heldTransform: heldTransformFor(snapshot, templateAtMount, () => template)
931
+ }),
932
+ onLayoutAnimationStart: () => started,
933
+ onLayoutAnimationComplete: () => completed,
934
+ // Its drag's Release offset at rest, for `next("dragTransitionEnd")` (#273).
935
+ onReleaseEnd: () => released
936
+ }));
937
+ layout = handle;
938
+ handedOver = UndefinedOr.map(internal.onLayoutHandle, onHandle => onHandle(handle));
939
+ };
940
+ // Its section's `layout` as it mounts: had at setup, or arrived since (#582).
941
+ const now = UndefinedOr.match(layoutNodes, {
942
+ onDefined: identity,
943
+ onUndefined: () => projectionIn(untrack(features.services))
944
+ });
945
+ if (Predicate.isNotUndefined(now)) layoutNodeOn(now, taken);
946
+ if (Predicate.isUndefined(layout)) {
947
+ arriveLayout = projection => {
948
+ if (Predicate.isNotUndefined(layout)) return;
949
+ layoutNodeOn(projection, undefined);
950
+ // A plain field, not a getter: a getter of its own on every record gave each its own shape (#582).
951
+ m.layout = layout;
952
+ };
953
+ }
954
+ }
955
+ // Its watch Scope (#318, #379, ADR-0055): its gesture watches and its drag track run in it, each
956
+ // subscribed at once with no fiber of its own, until the unmount closes it. Made at the first
957
+ // watch: a ward with no gesture makes and closes none.
958
+ let watchScope;
959
+ const watchIn = watch => {
960
+ if (Predicate.isUndefined(watchScope)) watchScope = OwnerScope.open(runtime);
961
+ runtime.runSync(watch.pipe(Scope.provide(watchScope)));
962
+ };
963
+ if (internal.defaultsOnElement === true) UndefinedOr.map(dragDefaults, defaults => applyDragDefaults(el, defaults));
964
+ // The drag track (ADR-0004): the pointer direct-sets `x`/`y` while the spring drives the rest and
965
+ // `whileDrag`; on a layout node it feeds the projection (ADR-0016).
966
+ const locked = initialConfig.dragDirectionLock === true;
967
+ // Its section's `drag` Feature drives it (#511): without it, `drag` does nothing, and development
968
+ // says so once, unless `drag` is on its way.
969
+ const dragGesture = gestureIn(untrack(features.services), "drag", DragGesture, Predicate.isNotUndefined(dragAxis));
970
+ // Whether its track drives its layout node (ADR-0016): the node it has as the track is made, at
971
+ // mount or as `drag` arrives; a node made later leaves it moving `x`/`y` (#582).
972
+ let dragProjected = false;
973
+ const driveDrag = gesture => {
974
+ const axis = UndefinedOr.getOrThrow(dragAxis);
975
+ dragProjected = Predicate.isNotUndefined(layout);
976
+ // Motion's `dragConstraints` (#273): a box of numbers, or a container measured against the element.
977
+ const constraints = gesture.constraintsOf(initialConfig.dragConstraints, el, () => untrack(cfg).onMeasureDragConstraints, pagePoint);
978
+ return gesture.drive({
979
+ watch: track => watchIn(track(onDefect)),
980
+ fork: response => void runtime.runFork(response),
981
+ gate,
982
+ id,
983
+ element: el,
984
+ snapshot,
985
+ recordFrame,
986
+ // A drag's start turns its `style`'s will-change value on (#443).
987
+ setDragging: draggingWithWillChange(live, on => setGesture(el, "dragging", on)),
988
+ mapPoint: pagePoint,
989
+ skipAnimations,
990
+ config: {
991
+ axis,
992
+ constraints: constraints.constraints,
993
+ elastic: initialConfig.dragElastic,
994
+ momentum: initialConfig.dragMomentum,
995
+ snapToOrigin: initialConfig.dragSnapToOrigin,
996
+ propagation: initialConfig.dragPropagation,
997
+ directionLock: initialConfig.dragDirectionLock,
998
+ transition: dragTransition,
999
+ listen: initialConfig.dragListener
1000
+ },
1001
+ container: constraints.container,
1002
+ controls: initialConfig.dragControls,
1003
+ ...UndefinedOr.match(layout, {
1004
+ onUndefined: () => ({}),
1005
+ onDefined: projectionNode => ({
1006
+ projection: projectionNode
1007
+ })
1008
+ }),
1009
+ ...UndefinedOr.match(internal.dragAxis, {
1010
+ onUndefined: () => ({}),
1011
+ onDefined: axisAt => ({
1012
+ axisAt
1013
+ })
1014
+ }),
1015
+ // Its samples to a `<Reorder>` item's group, and to the lifecycle for `next("dragStart")` (#257)
1016
+ // and, with a direction lock, `next("directionLock")` (#273).
1017
+ onSample: UndefinedOr.match(internal.onDragSample, {
1018
+ onUndefined: () => sample => lifecycle.dragged(sample, locked, el),
1019
+ onDefined: onSample => sample => {
1020
+ onSample(sample);
1021
+ lifecycle.dragged(sample, locked, el);
1022
+ }
1023
+ }),
1024
+ // Its release at rest, for `next("dragTransitionEnd")` (#273).
1025
+ onReleaseEnd: () => lifecycle.released()
1026
+ });
1027
+ };
1028
+ let dragTrack = UndefinedOr.map(dragGesture, driveDrag);
1029
+ const spineOptions = {
1030
+ runtime,
1031
+ gate,
1032
+ id,
1033
+ element: el,
1034
+ tag: internal.tag,
1035
+ config: configNow,
1036
+ parent: node.inherited,
1037
+ canStart: node.canStart,
1038
+ extraDelay: node.extraDelay,
1039
+ byName: node.names,
1040
+ onFrame: node.onFrame,
1041
+ reducedMotion,
1042
+ skipAnimations,
1043
+ positionalKeys,
1044
+ defaultTransition,
1045
+ start: begun,
1046
+ snapshot,
1047
+ reuse,
1048
+ links,
1049
+ styleNow,
1050
+ live,
1051
+ presence: presenceRecord,
1052
+ projected: Predicate.isNotUndefined(layout),
1053
+ dragAxis,
1054
+ drag: dragTrack,
1055
+ handoff,
1056
+ animation: lifecycle
1057
+ };
1058
+ // A `drag` on its way as it mounted (#551): its track starts as the Feature arrives (`startDrag`),
1059
+ // and the spine reads it at each Retarget from then on. Only then is `drag` a getter, so an
1060
+ // element that has it at mount, or never wants it, pays nothing.
1061
+ let startDrag;
1062
+ if (Predicate.isNotUndefined(dragAxis) && Predicate.isUndefined(dragTrack) && untrack(features.pending)) {
1063
+ Object.defineProperty(spineOptions, "drag", {
1064
+ get: () => dragTrack
1065
+ });
1066
+ // Whether that track drives the layout node (#582): until it starts, whether the element has one.
1067
+ Object.defineProperty(spineOptions, "projected", {
1068
+ get: () => UndefinedOr.match(dragTrack, {
1069
+ onUndefined: () => Predicate.isNotUndefined(layout),
1070
+ onDefined: () => dragProjected
1071
+ })
1072
+ });
1073
+ startDrag = gesture => {
1074
+ if (Predicate.isUndefined(dragTrack)) dragTrack = driveDrag(gesture);
1075
+ };
1076
+ }
1077
+ const spine = makeElementSpine(spineOptions);
1078
+ // A child back under its key starts where its leaver is drawn (#286), before its first Retarget.
1079
+ if (Predicate.isNotUndefined(taken)) spine.seed(taken);
1080
+ // Live values in `style` (#130, ADR-0043): followed from the first routed key on.
1081
+ spine.follow({
1082
+ resolved: () => untrack(target).resolved,
1083
+ dragging: () => untrack(dragging)
1084
+ });
1085
+ // Its Imperative animations (#433) go through its spine while it's mounted, and its Animation controls reach it.
1086
+ const unregisterAnimatable = registerAnimatable(el, spine);
1087
+ const unsubscribe = UndefinedOr.match(controls, {
1088
+ onUndefined: () => constVoid,
1089
+ onDefined: c => subscribe(c.controls, controlledElement(c.set, {
1090
+ custom: () => untrack(() => view.custom),
1091
+ snapshot
1092
+ }, spine.stop))
1093
+ });
1094
+ const m = {
1095
+ element: el,
1096
+ spine,
1097
+ layout,
1098
+ arriveLayout,
1099
+ watch: watchIn,
1100
+ startDrag,
1101
+ hover: false,
1102
+ press: false,
1103
+ pan: false,
1104
+ inView: false,
1105
+ focus: false,
1106
+ dispose: () => {
1107
+ if (Predicate.isNotUndefined(undrive)) undrive();
1108
+ UndefinedOr.map(mountedHook, end => end());
1109
+ unregisterAnimatable();
1110
+ unsubscribe();
1111
+ spine.dispose();
1112
+ // Its gesture watches' and drag track's listeners go, a running release stops, and their spans end.
1113
+ UndefinedOr.map(watchScope, scope => OwnerScope.close(runtime, scope, "wardic.ward: a finalizer failed"));
1114
+ // The group lets go of the node before it's disposed.
1115
+ UndefinedOr.map(handedOver, release => release());
1116
+ UndefinedOr.map(layout, node => node.dispose());
1117
+ unfollowTemplate();
1118
+ unregisterValues();
1119
+ unregister();
1120
+ }
1121
+ };
1122
+ startRecognizers(m);
1123
+ const mountedHook = UndefinedOr.map(internal.onMount, onMount => onMount(el, make => watchIn(make(onDefect))));
1124
+ return m;
1125
+ };
1126
+ // A `while*` target set after mount starts its recognizer then (#87, ADR-0040). Its compute reads
1127
+ // the two keys, so only their changes re-run it (#259).
1128
+ // Its section's Features are read there too, so a gesture's arriving lazily starts it (#511): each
1129
+ // start checks what's wanted.
1130
+ // An element whose config can never want one (`gestureless`, #525) makes it at its first want
1131
+ // through its lifecycle instead: no computation an element until then.
1132
+ let watchingLate = false;
1133
+ const watchLateGestures = () => {
1134
+ if (watchingLate) return;
1135
+ watchingLate = true;
1136
+ runWithOwner(owner, () => createEffect(() => ({
1137
+ wanted: Bool.some([wantsHover(), wantsPress(), wantsInView(), wantsFocus()]),
1138
+ services: features.services()
1139
+ }), () => {
1140
+ UndefinedOr.map(mounted, startRecognizers);
1141
+ }, CLIENT_ONLY_SYNC_DEFERRED));
1142
+ };
1143
+ if (internal.gestureless !== true) watchLateGestures();
1144
+ // `layout` on its way (#582): an element mounted before it arrives makes its node then, as its
1145
+ // gestures and drag start theirs; a load that brings none gets development's word then.
1146
+ if (Bool.and(wantsNode, Predicate.isUndefined(layoutProjection)) && untrack(features.pending)) {
1147
+ createEffect(() => ({
1148
+ services: features.services(),
1149
+ pending: features.pending()
1150
+ }),
1151
+ // Its apply returns nothing: a function returned there would be its cleanup.
1152
+ ({
1153
+ services,
1154
+ pending
1155
+ }) => {
1156
+ UndefinedOr.map(mounted, m => layoutArrivedIn(m.arriveLayout, services));
1157
+ if (DEV && Predicate.isUndefined(projectionIn(services)) && Bool.not(pending)) {
1158
+ featureRegistry.warnOnce("layout", missingMessage("layout", LAYOUT_PROPS, "@wardic/solid/unstable/v2"));
1159
+ }
1160
+ }, CLIENT_ONLY_DEFERRED);
1161
+ }
1162
+ // A `drag` on its way (#551): an element mounted before it arrives starts its track then, as its
1163
+ // gestures' recognizers do, and nothing before it is replayed; a load that brings none gets
1164
+ // development's word then.
1165
+ if (Predicate.isNotUndefined(dragAxis) && untrack(features.pending)) {
1166
+ createEffect(() => ({
1167
+ services: features.services(),
1168
+ pending: features.pending()
1169
+ }),
1170
+ // Its apply returns nothing: a function returned there would be its cleanup.
1171
+ ({
1172
+ services,
1173
+ pending
1174
+ }) => {
1175
+ UndefinedOr.match(serviceIn(services, DragGesture), {
1176
+ // A `layout` from the same load makes its node first, so the track drives it (#582).
1177
+ onDefined: gesture => UndefinedOr.map(mounted, m => {
1178
+ layoutArrivedIn(m.arriveLayout, services);
1179
+ UndefinedOr.map(m.startDrag, start => start(gesture));
1180
+ }),
1181
+ onUndefined: () => {
1182
+ if (DEV && Bool.not(pending)) featureRegistry.warnOnce("drag", missingMessage("drag", GESTURE_WORDS.drag, "@wardic/solid/unstable/v2"));
1183
+ }
1184
+ });
1185
+ }, CLIENT_ONLY_DEFERRED);
1186
+ }
1187
+ // A `layoutDependency` change re-measures its layout node (not at mount: it measures as it registers).
1188
+ // Only a change of its value: a memo, since a Solid 2 effect applies on every re-run of its compute,
1189
+ // and `cfg()` is re-read on any of the config's changes (a `style` change re-measured, #209 PR 5's lab).
1190
+ // Its node may be made as `layout` arrives (#582), so it's read at each change.
1191
+ if (wantsNode) {
1192
+ const dependency = createMemo(() => cfg().layoutDependency, CLIENT_ONLY);
1193
+ createEffect(dependency, () => {
1194
+ UndefinedOr.map(UndefinedOr.map(mounted, m => m.layout), node => node.notify());
1195
+ }, CLIENT_ONLY_DEFERRED);
1196
+ }
1197
+ // Whether the `when` gate lets a Retarget start (ADR-0007), as a memo: an element with variants of
1198
+ // its own reads its `when` off its config, and only a flip of the gate may re-run the effect.
1199
+ const open = gateOf(node);
1200
+ // Mount, then Retarget on each change of the target or of the `when` gate: both are read here,
1201
+ // so a gate's flip re-runs it and releases a held Retarget. Only once the ref has given the
1202
+ // element (#320): until then the effect reads nothing else, so the target is first resolved with
1203
+ // its element, once, and a config that lands before the element (an async one) doesn't run it.
1204
+ createEffect(() => {
1205
+ const el = element();
1206
+ if (Predicate.isUndefined(el)) return undefined;
1207
+ return {
1208
+ el,
1209
+ resolution: target(),
1210
+ open: open(),
1211
+ shown: ticked()
1212
+ };
1213
+ }, mounting => {
1214
+ if (Predicate.isUndefined(mounting)) return;
1215
+ const {
1216
+ el,
1217
+ resolution
1218
+ } = mounting;
1219
+ if (Predicate.isUndefined(mounted) || mounted.element !== el) {
1220
+ // Another element it was spread on, or the one it's on, still on the page: a ward drives one
1221
+ // element at a time (#349's Q5). One the page has let go of is left behind.
1222
+ if (Bool.or(stillOn(refdBefore, el), stillOn(UndefinedOr.map(mounted, elementOfMount), el))) throw new Error(secondElement("ward(config)"));
1223
+ refdBefore = undefined;
1224
+ // Held off the page: nothing starts until it's on it.
1225
+ if (heldBack(el)) return;
1226
+ // A new element starts with no gesture on, read from its gesture state (#257's audit).
1227
+ unmount();
1228
+ // One that came after the last left the page enters fresh (#414).
1229
+ if (el === fresh) beginFresh();
1230
+ // Its config is read at mount (its layout node's options, its `onUpdate`, its spine's) through
1231
+ // the per-key view (#259): untracked, so said, as the Retarget below.
1232
+ mounted = untrack(() => mount(el));
1233
+ }
1234
+ // The spine reads the variant context (its gates, its stagger, what it inherits) at the
1235
+ // Retarget, once: untracked, so said (Solid 2's dev build warns of a reactive read in an
1236
+ // effect's apply, STRICT_READ_UNTRACKED). The effect's compute is what re-runs it.
1237
+ const spine = mounted.spine;
1238
+ untrack(() => spine.retarget(resolution));
1239
+ }, CLIENT_ONLY_SYNC);
1240
+ // `<card.Provider>` hands down what this element hands its children (#50).
1241
+ const Provider = props => WardicVariantContext(new _P$(node, props));
1242
+ // The element's value per key (#130, ADR-0043 decision 5): the gate's output while it holds the
1243
+ // key, else where the key rests. One accessor a key, made on first ask, under the ward's owner. It
1244
+ // carries its Atom (#209 PR 3's Q2): a `style` given it follows the Atom, set at the gate's write,
1245
+ // so a key derived from it paints in the same frame. Where the key rests is Solid's (the user's
1246
+ // style), mirrored into an Atom of its own.
1247
+ let reads;
1248
+ const readEntry = key => {
1249
+ if (Predicate.isUndefined(reads)) reads = new Map();
1250
+ const known = reads.get(key);
1251
+ if (Predicate.isNotUndefined(known)) return known;
1252
+ const output = gate.valueOf(id, key);
1253
+ const following = drivenAtom();
1254
+ const entry = runWithOwner(owner, () => {
1255
+ const resting = createMemo(() => {
1256
+ withCallsOf()[0]();
1257
+ return restingOf(key, start.initialValues, userStyle(), raw => live.read(raw));
1258
+ }, CLIENT_ONLY);
1259
+ const restingAtom = Atom.make(untrack(resting));
1260
+ onCleanup(registry().mount(restingAtom));
1261
+ createEffect(resting, value => {
1262
+ registry().set(restingAtom, value);
1263
+ }, CLIENT_ONLY_DEFERRED);
1264
+ const own = Atom.make(get => UndefinedOr.match(get(output), {
1265
+ onUndefined: () => get(restingAtom),
1266
+ onDefined: identity
1267
+ }));
1268
+ // Given to a component (#349): what the element it drives shows, while it's there.
1269
+ const atom = Atom.make(get => UndefinedOr.match(get(following), {
1270
+ onUndefined: () => get(own),
1271
+ onDefined: d => get(d.readAtom(key))
1272
+ }));
1273
+ return {
1274
+ accessor: followAtom(registry(), atom),
1275
+ atom
1276
+ };
1277
+ });
1278
+ reads.set(key, entry);
1279
+ return entry;
1280
+ };
1281
+ const read = key => readEntry(key).accessor;
1282
+ // Its `atom(key)`: the gate's output, or, given to a component (#349), the one of the element it drives.
1283
+ const atomOf = key => {
1284
+ const own = gate.valueOf(id, key);
1285
+ const following = drivenAtom();
1286
+ return Atom.make(get => UndefinedOr.match(get(following), {
1287
+ onUndefined: () => get(own),
1288
+ onDefined: d => get(d.atom(key))
1289
+ }));
1290
+ };
1291
+ // The element's style, read where it renders. The keys still loading at setup (#257 item 1) are
1292
+ // read there too, with the target, so its region holds until they land and Solid retries it: the
1293
+ // Retarget reads `transition` as it starts, untracked, which a pending one would throw out of.
1294
+ // After that a refetch keeps the last value (Solid holds the previous one), and holds nothing.
1295
+ const holdWhileLoading = Bool.match(setup.pending.length === 0, {
1296
+ onTrue: () => constVoid,
1297
+ onFalse: () => {
1298
+ const config = cfg();
1299
+ // Client-only, so transparent to hydration ids as every computation of the binding's is (#618).
1300
+ const loaded = createMemo(() => {
1301
+ Arr.forEach(setup.pending, key => void config[key]);
1302
+ target();
1303
+ return true;
1304
+ }, CLIENT_ONLY);
1305
+ return () => {
1306
+ loaded();
1307
+ };
1308
+ }
1309
+ });
1310
+ const renderedStyle = () => {
1311
+ holdWhileLoading();
1312
+ return elementStyle.style(userStyle());
1313
+ };
1314
+ // The ward: a ref, and its own props. Under a presence, its element is told to it as it's made
1315
+ // (#286): its `key`, and whether it's a twin.
1316
+ // What it shares with a component it's given to (#349), made when one asks.
1317
+ let shared;
1318
+ const sharedNow = () => {
1319
+ if (Predicate.isNotUndefined(shared)) return shared;
1320
+ /**
1321
+ * A ward driving an element for this one, given to a component (#349): followed until the release,
1322
+ * its `read` and `atom` Atoms reading the driver's. One at a time, and not while this one is on an
1323
+ * element of its own (#349's Q5).
1324
+ */
1325
+ const drive = (next, name) => {
1326
+ if (Bool.or(Predicate.isNotUndefined(driver), stillOn(UndefinedOr.map(mounted, elementOfMount), undefined))) throw new Error(secondElement(name));
1327
+ driver = next;
1328
+ UndefinedOr.map(driven, atom => registry().set(atom, next));
1329
+ return () => {
1330
+ if (driver !== next) return;
1331
+ driver = undefined;
1332
+ UndefinedOr.map(driven, atom => registry().set(atom, undefined));
1333
+ };
1334
+ };
1335
+ shared = {
1336
+ config,
1337
+ setup: initialConfig,
1338
+ internal,
1339
+ parent,
1340
+ chosen: Predicate.isNotUndefined(internal.parent),
1341
+ carries: carriesVariants(initialConfig),
1342
+ provided: node.provided,
1343
+ layoutGroup,
1344
+ node,
1345
+ lifecycle,
1346
+ drive
1347
+ };
1348
+ return shared;
1349
+ };
1350
+ const setMade = madeWith(presence, setElement, initialConfig);
1351
+ const self = value => {
1352
+ if (isElement(value)) {
1353
+ const last = refdLast;
1354
+ if (Predicate.isNotUndefined(last)) {
1355
+ if (last !== value) {
1356
+ refdBefore = last;
1357
+ if (Bool.not(last.isConnected)) fresh = value;
1358
+ }
1359
+ }
1360
+ refdLast = value;
1361
+ setMade(value);
1362
+ return undefined;
1363
+ }
1364
+ return spreadNow();
1365
+ };
1366
+ // What a spread of the ward reads (#495): its spread's props alone, made at its first spread, so a
1367
+ // ward given only to `ref` makes none, and a Reorder item's keyboard attributes are in it.
1368
+ let spread;
1369
+ // Its `style` and its attributes as descriptors, made once (#460): its own keys, its spread and each
1370
+ // `.with()` share them.
1371
+ const styleKey = {
1372
+ get: renderedStyle,
1373
+ enumerable: true
1374
+ };
1375
+ const attributes = attributeKeysOf(seed.attrs, Predicate.isNotUndefined(dragDefaults));
1376
+ const spreadNow = () => {
1377
+ if (Predicate.isUndefined(spread)) spread = spreadOfWard(self, {
1378
+ value: self,
1379
+ enumerable: true
1380
+ }, styleKey, attributes);
1381
+ return spread;
1382
+ };
1383
+ // Its members are the ones every ward shares (#525), reading this state: its own are `ref`, `style`
1384
+ // and its attributes.
1385
+ const state = {
1386
+ shared: sharedNow,
1387
+ Provider,
1388
+ read,
1389
+ atom: atomOf,
1390
+ with: own => {
1391
+ given = own;
1392
+ withCallsOf()[1](undefined);
1393
+ return spreadPropsOf({
1394
+ ref: {
1395
+ value: withRef(own.ref, self),
1396
+ enumerable: true
1397
+ },
1398
+ style: styleKey,
1399
+ ...attributes
1400
+ });
1401
+ },
1402
+ lifecycle,
1403
+ settled: undefined,
1404
+ tapped: undefined,
1405
+ next: undefined,
1406
+ each: undefined,
1407
+ when: undefined
1408
+ };
1409
+ Object.setPrototypeOf(self, WARD_MEMBERS);
1410
+ Object.defineProperties(self, {
1411
+ [WARD_STATE]: {
1412
+ value: state
1413
+ },
1414
+ ref: {
1415
+ value: self,
1416
+ enumerable: true
1417
+ },
1418
+ style: styleKey,
1419
+ ...attributes
1420
+ });
1421
+ return self;
1422
+ }
1423
+ /** No `.with()` props: the config's style alone. */
1424
+ const NO_WITH = {};
1425
+ /** The last `.with()` merge, by its two styles: `style` reads it more than once a run. */
1426
+ // Module state (#460, Q7): a cache held weakly by the object it's for, so it goes with it.
1427
+ const withMerges = new WeakMap();
1428
+ /**
1429
+ * The config's `style` with a `.with()` style over it, key by key (#264, `Style.over`): the config's
1430
+ * as it is with none. One merge for the same two styles, so the element's Live values see one object.
1431
+ */
1432
+ const withStyleOver = (own, extra) => {
1433
+ if (Predicate.isUndefined(extra)) return own;
1434
+ if (Predicate.isString(extra)) return Style.over(extra, own);
1435
+ return Option.getOrElse(Option.map(Option.filter(Option.fromUndefinedOr(withMerges.get(extra)), known => known.own === own), known => known.merged), () => {
1436
+ const merged = Style.over(extra, own);
1437
+ withMerges.set(extra, {
1438
+ own,
1439
+ merged
1440
+ });
1441
+ return merged;
1442
+ });
1443
+ };
1444
+ /** A `.with()` ref beside the ward's own: the user's first, as `refsOf` orders them. */
1445
+ const withRef = (user, self) => {
1446
+ if (Predicate.isUndefined(user)) return self;
1447
+ const refs = Arr.ensure(user);
1448
+ return element => {
1449
+ Arr.forEach(refs, ref => ref(element));
1450
+ self(element);
1451
+ };
1452
+ };
1453
+ /**
1454
+ * The Starting style's attributes, and a drag element's default ones when it `drags`, as a ward's own
1455
+ * keys: enumerable, so a spread applies them. Made once a ward (#460), into one map.
1456
+ */
1457
+ const attributeKeysOf = (attrs, drags) => {
1458
+ const keys = {};
1459
+ addAttributeKeys(keys, attrs);
1460
+ if (drags) addAttributeKeys(keys, Style.DRAG_DEFAULT_ATTRIBUTES);
1461
+ return keys;
1462
+ };
1463
+ /** Each of `attrs` as an enumerable key, into `keys`: a later one wins a key both set. */
1464
+ const addAttributeKeys = (keys, attrs) => Arr.forEach(Object.keys(attrs), key => {
1465
+ keys[key] = {
1466
+ value: attrs[key],
1467
+ enumerable: true
1468
+ };
1469
+ });
1470
+ /**
1471
+ * A spread's props, reaching no name but their own (#495): what a ward, its `.with()` or a Reorder group
1472
+ * hands an element's spread, and nothing else. Solid 2's `merge` calls a function source and reads each key off
1473
+ * what it returns with `in`, so a ward that returned itself shadowed the element's props with its own
1474
+ * names (`name`, `length`, `read`, `next`…), and an object with a prototype would with
1475
+ * `Object.prototype`'s (`constructor`, `toString`).
1476
+ */
1477
+ export const spreadPropsOf = descriptors => Object.defineProperties(new SpreadProps(), descriptors);
1478
+ /**
1479
+ * What a spread's props are made from (#495): a constructor whose prototype has no prototype and no
1480
+ * names, so its objects reach none but their own. An `Object.create(null)` would too, but V8 keeps it
1481
+ * in dictionary mode: 217 bytes each in Node 24, against 49 (`.tmp/495/spreadmem.mjs`).
1482
+ */
1483
+ const SpreadProps = function SpreadProps() {};
1484
+ SpreadProps.prototype = Object.create(null);
1485
+ /** The props a Reorder item adds to its ward's spread (#495): its keyboard attributes. Only items have them. */
1486
+ // Module state (#460, Q7): a cache held weakly by the object it's for, so it goes with it.
1487
+ const SPREAD_EXTRAS = new WeakMap();
1488
+ /**
1489
+ * `ward` with `descriptors` defined on it and added to its spread (#495), for a ward that carries props
1490
+ * of its own kind (a Reorder item's keyboard attributes). Before the ward's first spread.
1491
+ */
1492
+ export const withSpreadProps = (ward, descriptors) => {
1493
+ SPREAD_EXTRAS.set(ward, descriptors);
1494
+ return Object.defineProperties(ward, descriptors);
1495
+ };
1496
+ /** A ward's spread: its `ref`, `style` and attributes, and what {@link withSpreadProps} added, on no prototype. Made at its first spread (#460: one map). */
1497
+ const spreadOfWard = (ward, ref, style, attributes) => {
1498
+ const extras = SPREAD_EXTRAS.get(ward);
1499
+ if (Predicate.isUndefined(extras)) return spreadPropsOf({
1500
+ ref,
1501
+ style,
1502
+ ...attributes
1503
+ });
1504
+ return spreadPropsOf({
1505
+ ref,
1506
+ style,
1507
+ ...attributes,
1508
+ ...extras
1509
+ });
1510
+ };
1511
+ /** A server's output Atom: nothing is written there, so it stays `undefined`. */
1512
+ const NO_OUTPUT = Atom.make(undefined);
1513
+ /** A style value read on a server: an Atom through a server's own registry, an accessor called (#130). */
1514
+ const readServerStyle = value => readLive(value, serverRegistryOf, untrack);
1515
+ /**
1516
+ * {@link wardWith} during a server render (ADR-0021, decisions 1 and 4): the element's Starting
1517
+ * style and attributes, computed purely, and nothing else: no runtime, no spine, no signals. It
1518
+ * makes the client's one `createUniqueId` call, so later hydration keys land where the client's
1519
+ * render puts them, and its `.Provider` renders the same nesting, with the same names and inert
1520
+ * orchestration. No Appear animation yet (PR 4 of #209).
1521
+ */
1522
+ const serverWard = (config, internal) => {
1523
+ createUniqueId();
1524
+ const view = configuredView(WARD_VIEW.of(config, internal.fixed), useWardicConfig());
1525
+ // A key still loading (#257 item 1): one setup fixes is the client's error here too. One the ward
1526
+ // reads as it goes is read again, throwing Solid's `NotReadyError`: a server waits for it and
1527
+ // renders the component again, so its region streams once the data is in, Appear and all.
1528
+ // Both are checked before the read that waits.
1529
+ const setup = WARD_VIEW.setupOf(view);
1530
+ // Animation controls (#433) set nothing on a server: no entry yet, and controlled, as on the client.
1531
+ const atSetup = uncontrolledOf(configAtSetup(setup));
1532
+ // Where it's made, its given parent's, or its given ward's (#349).
1533
+ const parent = variantParentOf(internal);
1534
+ const presenceBlocks = presenceBlocksInitial(usePresenceContext());
1535
+ if (Bool.and(Arr.contains(setup.pending, "animate"), startsAtAnimate(atSetup, inheritedContext(atSetup, parent), presenceBlocks))) throw new Error(STARTS_AT_PENDING);
1536
+ const c = uncontrolledOf(WARD_VIEW.snapshotOf(view));
1537
+ const node = serverVariantNode(c, parent);
1538
+ const initialValues = startOf(c, node.inherited, presenceBlocks, untrack).initialValues;
1539
+ const layoutNode = isLayoutNode(c);
1540
+ const seed = Style.starting(internal.tag, drawnAtRest(initialValues, layoutNode, c.transformTemplate));
1541
+ // Its Appear animation (#48, ADR-0044): its slot in the render's, and the group its Variant
1542
+ // children join when it leads one.
1543
+ const appear = appearEntryOf(useWardicAppear(), c, internal.tag, initialValues, node, startsQuiet(c, node.inherited, presenceBlocks, untrack), settingOf(useWardicConfig()), useWardicSkipAnimations()());
1544
+ // A late chunk's root (#245): the chunk's Appear rules go through the head registry, read once
1545
+ // the chunk has rendered and streamed with it as a head patch. A late element under another late
1546
+ // one registers too: the first read writes the batch, and any other finds it written and adds no
1547
+ // tag, so Solid 1's `within` (which kept a chunk to one `<style>` node) isn't needed.
1548
+ if (appear.chunkRoot) UndefinedOr.map(appear.state, state => useHead(appearStyle(state.chunkCss, state.nonce)));
1549
+ const Provider = props => WardicVariantContext(new _P$2(appear, props));
1550
+ // Its routed keys' values join the Starting style, under `initial`'s (#130); a `<Reorder>` item's
1551
+ // base style, a drag element's defaults, then its Appear slot go under the user's style. A user
1552
+ // style with its own `animation` keeps it, over the slot, and the slot is left undefined.
1553
+ const dragDefaults = dragDefaultsOf(c, internal);
1554
+ // The element's style for its user style: the config's, or a `.with()` style over it (#264).
1555
+ const styleFor = user => {
1556
+ const parts = split(user);
1557
+ if (setsAnimation(parts.css)) appear.veto("its own style sets an animation");
1558
+ return pipe(serverStartingStyle(internal.tag, seed.style, initialValues, parts.routed, layoutNode, untrack, c.transformTemplate), Style.over(parts.css), Style.over(UndefinedOr.match(internal.baseStyle, {
1559
+ onUndefined: constUndefined,
1560
+ onDefined: base => base()
1561
+ })), Style.over(dragDefaults), Style.over(appear.style));
1562
+ };
1563
+ const style = styleFor(c.style);
1564
+ let given = NO_WITH;
1565
+ const attributes = attributeKeysOf(seed.attrs, Predicate.isNotUndefined(dragDefaults));
1566
+ // A spread of it reads its spread's props alone, made at its first spread, as the client's (#495).
1567
+ let spread;
1568
+ const self = () => {
1569
+ if (Predicate.isUndefined(spread)) spread = spreadOfWard(self, {
1570
+ value: noRef,
1571
+ enumerable: true
1572
+ }, {
1573
+ value: style,
1574
+ enumerable: true
1575
+ }, attributes);
1576
+ return spread;
1577
+ };
1578
+ // What it shares with a component it's given to (#349): a server's component renders its own.
1579
+ const shared = {
1580
+ config,
1581
+ setup: atSetup,
1582
+ internal,
1583
+ parent,
1584
+ chosen: Predicate.isNotUndefined(internal.parent),
1585
+ carries: carriesVariants(atSetup),
1586
+ provided: appear.provided,
1587
+ layoutGroup: useLayoutGroupId(),
1588
+ node: undefined,
1589
+ lifecycle: undefined,
1590
+ drive: () => constVoid
1591
+ };
1592
+ Object.defineProperties(self, {
1593
+ [WARD]: {
1594
+ value: shared
1595
+ },
1596
+ ref: {
1597
+ value: noRef,
1598
+ enumerable: true
1599
+ },
1600
+ style: {
1601
+ value: style,
1602
+ enumerable: true
1603
+ },
1604
+ ...attributes,
1605
+ Provider: {
1606
+ value: Provider
1607
+ },
1608
+ read: {
1609
+ value: key => () => restingOf(key, initialValues, withStyleOver(c.style, given.style), readServerStyle)
1610
+ },
1611
+ atom: {
1612
+ value: () => NO_OUTPUT
1613
+ },
1614
+ // Nothing animates on a server: nothing has landed, and nothing will.
1615
+ settled: {
1616
+ value: constUndefined
1617
+ },
1618
+ // Nothing is pressed on a server either.
1619
+ tapped: {
1620
+ value: constUndefined
1621
+ },
1622
+ next: {
1623
+ value: neverLands
1624
+ },
1625
+ each: {
1626
+ value: () => NO_EVENTS
1627
+ },
1628
+ when: {
1629
+ value: serverWhen
1630
+ },
1631
+ // The element's own style over the config's, rendered in its Starting style (#264).
1632
+ with: {
1633
+ value: own => {
1634
+ given = own;
1635
+ return spreadPropsOf({
1636
+ ref: {
1637
+ value: noRef,
1638
+ enumerable: true
1639
+ },
1640
+ style: {
1641
+ value: styleFor(withStyleOver(c.style, own.style)),
1642
+ enumerable: true
1643
+ },
1644
+ ...attributes
1645
+ });
1646
+ }
1647
+ }
1648
+ });
1649
+ return self;
1650
+ };
1651
+ /** A server render's `ref`: Solid never calls it there. */
1652
+ const noRef = constUndefined;
1653
+ //# sourceMappingURL=ward.js.map