@remix-run/ui 0.3.0 → 0.5.0

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 (434) hide show
  1. package/README.md +116 -157
  2. package/dist/accordion/index.d.ts +46 -0
  3. package/dist/accordion/index.js +142 -0
  4. package/dist/accordion/index.js.map +1 -0
  5. package/dist/accordion/primitives.d.ts +104 -0
  6. package/dist/accordion/primitives.js +312 -0
  7. package/dist/accordion/primitives.js.map +1 -0
  8. package/dist/{components/anchor/anchor.js → anchor/index.js} +1 -1
  9. package/dist/anchor/index.js.map +1 -0
  10. package/dist/animation/animate-layout-mixin.js +1 -1
  11. package/dist/animation/animate-layout-mixin.js.map +1 -1
  12. package/dist/animation/animate-mixins.js +2 -2
  13. package/dist/animation/animate-mixins.js.map +1 -1
  14. package/dist/animation/demos/color-interpolation.js +1 -1
  15. package/dist/animation/demos/color-interpolation.js.map +1 -1
  16. package/dist/animation/demos/drag-release.d.ts +1 -1
  17. package/dist/animation/demos/hold-to-confirm.d.ts +3 -3
  18. package/dist/animation/demos/material-ripple.js +1 -3
  19. package/dist/animation/demos/material-ripple.js.map +1 -1
  20. package/dist/animation/demos/reordering.js +9 -6
  21. package/dist/animation/demos/reordering.js.map +1 -1
  22. package/dist/animation/index.js +4 -4
  23. package/dist/animation/spring.js.map +1 -1
  24. package/dist/{components/breadcrumbs/breadcrumbs.js → breadcrumbs/index.js} +19 -19
  25. package/dist/breadcrumbs/index.js.map +1 -0
  26. package/dist/button/index.d.ts +15 -0
  27. package/dist/button/index.js +128 -0
  28. package/dist/button/index.js.map +1 -0
  29. package/dist/checkbox/index.d.ts +14 -0
  30. package/dist/checkbox/index.js +127 -0
  31. package/dist/checkbox/index.js.map +1 -0
  32. package/dist/combobox/index.d.ts +21 -0
  33. package/dist/combobox/index.js +58 -0
  34. package/dist/combobox/index.js.map +1 -0
  35. package/dist/{components/combobox/combobox.d.ts → combobox/primitives.d.ts} +4 -8
  36. package/dist/{components/combobox/combobox.js → combobox/primitives.js} +8 -61
  37. package/dist/combobox/primitives.js.map +1 -0
  38. package/dist/dev/refresh.d.ts +1 -0
  39. package/dist/dev/refresh.js +2 -0
  40. package/dist/dev/refresh.js.map +1 -0
  41. package/dist/index.d.ts +1 -1
  42. package/dist/index.js +14 -14
  43. package/dist/input/index.d.ts +13 -0
  44. package/dist/input/index.js +121 -0
  45. package/dist/input/index.js.map +1 -0
  46. package/dist/jsx-runtime.js +2 -2
  47. package/dist/listbox/flash-attribute.js.map +1 -0
  48. package/dist/{components/listbox/listbox.d.ts → listbox/index.d.ts} +2 -6
  49. package/dist/{components/listbox/listbox.js → listbox/index.js} +4 -82
  50. package/dist/listbox/index.js.map +1 -0
  51. package/dist/menu/hover-aim.js.map +1 -0
  52. package/dist/menu/index.d.ts +42 -0
  53. package/dist/menu/index.js +250 -0
  54. package/dist/menu/index.js.map +1 -0
  55. package/dist/{components/menu/menu.d.ts → menu/primitives.d.ts} +4 -33
  56. package/dist/{components/menu/menu.js → menu/primitives.js} +98 -315
  57. package/dist/menu/primitives.js.map +1 -0
  58. package/dist/{components/popover/popover.d.ts → popover/index.d.ts} +2 -4
  59. package/dist/{components/popover/popover.js → popover/index.js} +5 -48
  60. package/dist/popover/index.js.map +1 -0
  61. package/dist/{interactions/outside-click/outside-click-mixin.js → popover/outside-click.js} +1 -1
  62. package/dist/popover/outside-click.js.map +1 -0
  63. package/dist/popover/scroll-lock.d.ts +1 -0
  64. package/dist/{utils → popover}/scroll-lock.js +0 -18
  65. package/dist/popover/scroll-lock.js.map +1 -0
  66. package/dist/radio/index.d.ts +12 -0
  67. package/dist/radio/index.js +77 -0
  68. package/dist/radio/index.js.map +1 -0
  69. package/dist/runtime/client-entry-boundary.d.ts +14 -0
  70. package/dist/runtime/client-entry-boundary.js +29 -0
  71. package/dist/runtime/client-entry-boundary.js.map +1 -0
  72. package/dist/runtime/component.d.ts +19 -4
  73. package/dist/runtime/component.js +39 -9
  74. package/dist/runtime/component.js.map +1 -1
  75. package/dist/runtime/core/attributes.js +36 -3
  76. package/dist/runtime/core/attributes.js.map +1 -1
  77. package/dist/runtime/core/children.d.ts +2 -0
  78. package/dist/runtime/core/children.js +26 -2
  79. package/dist/runtime/core/children.js.map +1 -1
  80. package/dist/runtime/core/props.js +2 -2
  81. package/dist/runtime/core/vnode.d.ts +3 -3
  82. package/dist/runtime/core/vnode.js +22 -1
  83. package/dist/runtime/core/vnode.js.map +1 -1
  84. package/dist/runtime/create-element.d.ts +2 -2
  85. package/dist/runtime/create-element.js +3 -2
  86. package/dist/runtime/create-element.js.map +1 -1
  87. package/dist/runtime/diff-dom.js +294 -219
  88. package/dist/runtime/diff-dom.js.map +1 -1
  89. package/dist/runtime/diff-props.js +3 -3
  90. package/dist/runtime/dom.d.ts +12 -0
  91. package/dist/runtime/element-function.d.ts +3 -0
  92. package/dist/runtime/element-function.js +2 -0
  93. package/dist/runtime/element-function.js.map +1 -0
  94. package/dist/runtime/form-navigation.d.ts +25 -0
  95. package/dist/runtime/form-navigation.js +132 -0
  96. package/dist/runtime/form-navigation.js.map +1 -0
  97. package/dist/runtime/frame-resolution.d.ts +5 -0
  98. package/dist/runtime/frame-resolution.js +10 -0
  99. package/dist/runtime/frame-resolution.js.map +1 -0
  100. package/dist/runtime/frame.d.ts +58 -15
  101. package/dist/runtime/frame.js +367 -114
  102. package/dist/runtime/frame.js.map +1 -1
  103. package/dist/runtime/jsx.d.ts +1 -1
  104. package/dist/runtime/jsx.js +1 -1
  105. package/dist/runtime/jsx.js.map +1 -1
  106. package/dist/runtime/key.d.ts +1 -0
  107. package/dist/runtime/key.js +2 -0
  108. package/dist/runtime/key.js.map +1 -0
  109. package/dist/runtime/mixins/attrs-mixin.js +2 -2
  110. package/dist/runtime/mixins/link-mixin.js +4 -3
  111. package/dist/runtime/mixins/link-mixin.js.map +1 -1
  112. package/dist/runtime/mixins/mixin.d.ts +15 -10
  113. package/dist/runtime/mixins/mixin.js +4 -4
  114. package/dist/runtime/mixins/mixin.js.map +1 -1
  115. package/dist/runtime/mixins/on-mixin.js +1 -1
  116. package/dist/runtime/mixins/ref-mixin.js +1 -1
  117. package/dist/runtime/navigation.d.ts +4 -1
  118. package/dist/runtime/navigation.js +157 -32
  119. package/dist/runtime/navigation.js.map +1 -1
  120. package/dist/runtime/reconcile.d.ts +11 -10
  121. package/dist/runtime/reconcile.js +557 -423
  122. package/dist/runtime/reconcile.js.map +1 -1
  123. package/dist/runtime/refresh.d.ts +28 -0
  124. package/dist/runtime/refresh.js +31 -0
  125. package/dist/runtime/refresh.js.map +1 -0
  126. package/dist/runtime/render.js +1 -1
  127. package/dist/runtime/render.js.map +1 -1
  128. package/dist/runtime/run.d.ts +3 -1
  129. package/dist/runtime/run.js +15 -7
  130. package/dist/runtime/run.js.map +1 -1
  131. package/dist/runtime/scheduler.js +8 -16
  132. package/dist/runtime/scheduler.js.map +1 -1
  133. package/dist/runtime/to-vnode.d.ts +2 -2
  134. package/dist/runtime/to-vnode.js +68 -20
  135. package/dist/runtime/to-vnode.js.map +1 -1
  136. package/dist/runtime/vdom.d.ts +4 -2
  137. package/dist/runtime/vdom.js +89 -41
  138. package/dist/runtime/vdom.js.map +1 -1
  139. package/dist/runtime/vnode.d.ts +138 -67
  140. package/dist/runtime/vnode.js +17 -12
  141. package/dist/runtime/vnode.js.map +1 -1
  142. package/dist/select/index.d.ts +19 -0
  143. package/dist/select/index.js +95 -0
  144. package/dist/select/index.js.map +1 -0
  145. package/dist/select/keydown.js.map +1 -0
  146. package/dist/{components/select/select.d.ts → select/primitives.d.ts} +5 -7
  147. package/dist/{components/select/select.js → select/primitives.js} +11 -63
  148. package/dist/select/primitives.js.map +1 -0
  149. package/dist/server/stream.js +22 -29
  150. package/dist/server/stream.js.map +1 -1
  151. package/dist/shared/focus-styles.d.ts +1 -0
  152. package/dist/shared/focus-styles.js +2 -0
  153. package/dist/shared/focus-styles.js.map +1 -0
  154. package/dist/shared/icons.d.ts +9 -0
  155. package/dist/shared/icons.js +42 -0
  156. package/dist/shared/icons.js.map +1 -0
  157. package/dist/shared/listbox-popover-styles.d.ts +6 -0
  158. package/dist/shared/listbox-popover-styles.js +137 -0
  159. package/dist/shared/listbox-popover-styles.js.map +1 -0
  160. package/dist/shared/style-values.d.ts +78 -0
  161. package/dist/shared/style-values.js +88 -0
  162. package/dist/shared/style-values.js.map +1 -0
  163. package/dist/{interactions/typeahead/typeahead-mixin.js → shared/typeahead.js} +1 -1
  164. package/dist/shared/typeahead.js.map +1 -0
  165. package/dist/shared/wait-for-css-transition.js.map +1 -0
  166. package/dist/shared/wait.js.map +1 -0
  167. package/dist/style/css-mixin.js +3 -3
  168. package/dist/style/index.js +2 -2
  169. package/dist/style/style.js +25 -6
  170. package/dist/style/style.js.map +1 -1
  171. package/dist/style/stylesheet.d.ts +0 -1
  172. package/dist/style/stylesheet.js +13 -54
  173. package/dist/style/stylesheet.js.map +1 -1
  174. package/dist/tabs/index.d.ts +32 -0
  175. package/dist/tabs/index.js +157 -0
  176. package/dist/tabs/index.js.map +1 -0
  177. package/dist/tabs/primitives.d.ts +57 -0
  178. package/dist/tabs/primitives.js +238 -0
  179. package/dist/tabs/primitives.js.map +1 -0
  180. package/dist/test.js +1 -1
  181. package/dist/toggle/index.d.ts +9 -0
  182. package/dist/toggle/index.js +108 -0
  183. package/dist/toggle/index.js.map +1 -0
  184. package/dist/toggle/primitives.d.ts +29 -0
  185. package/dist/toggle/primitives.js +127 -0
  186. package/dist/toggle/primitives.js.map +1 -0
  187. package/package.json +81 -49
  188. package/src/{components/accordion → accordion}/README.md +50 -14
  189. package/src/accordion/index.tsx +285 -0
  190. package/src/accordion/primitives.tsx +512 -0
  191. package/src/{components/anchor → anchor}/README.md +37 -2
  192. package/src/animation/animate-mixins.ts +3 -3
  193. package/src/animation/demos/color-interpolation.tsx +1 -1
  194. package/src/animation/demos/reordering.tsx +9 -6
  195. package/src/{components/breadcrumbs → breadcrumbs}/README.md +4 -4
  196. package/src/{components/breadcrumbs/breadcrumbs.tsx → breadcrumbs/index.tsx} +18 -18
  197. package/src/button/README.md +44 -0
  198. package/src/button/index.ts +168 -0
  199. package/src/checkbox/README.md +59 -0
  200. package/src/checkbox/index.ts +164 -0
  201. package/src/{components/combobox → combobox}/README.md +58 -9
  202. package/src/combobox/index.tsx +112 -0
  203. package/src/{components/combobox/combobox.tsx → combobox/primitives.tsx} +5 -91
  204. package/src/dev/refresh.ts +1 -0
  205. package/src/index.ts +1 -1
  206. package/src/input/README.md +52 -0
  207. package/src/input/index.ts +147 -0
  208. package/src/{components/listbox → listbox}/README.md +9 -41
  209. package/src/{components/listbox/listbox.ts → listbox/index.ts} +2 -87
  210. package/src/{components/menu → menu}/README.md +55 -14
  211. package/src/menu/index.tsx +354 -0
  212. package/src/{components/menu/menu.tsx → menu/primitives.tsx} +99 -413
  213. package/src/{components/popover → popover}/README.md +20 -39
  214. package/src/{components/popover/popover.ts → popover/index.ts} +3 -57
  215. package/src/{utils → popover}/scroll-lock.ts +0 -28
  216. package/src/radio/README.md +53 -0
  217. package/src/radio/index.ts +101 -0
  218. package/src/runtime/client-entry-boundary.ts +54 -0
  219. package/src/runtime/component.ts +65 -16
  220. package/src/runtime/core/attributes.ts +35 -1
  221. package/src/runtime/core/children.ts +24 -2
  222. package/src/runtime/core/vnode.ts +25 -4
  223. package/src/runtime/create-element.ts +6 -5
  224. package/src/runtime/demos/readme.demo.tsx +20 -18
  225. package/src/runtime/diff-dom.ts +358 -243
  226. package/src/runtime/dom.ts +331 -214
  227. package/src/runtime/element-function.ts +1 -0
  228. package/src/runtime/event-listeners.ts +1 -1
  229. package/src/runtime/form-navigation.ts +184 -0
  230. package/src/runtime/frame-resolution.ts +13 -0
  231. package/src/runtime/frame.ts +482 -124
  232. package/src/runtime/jsx.ts +3 -5
  233. package/src/runtime/key.ts +1 -0
  234. package/src/runtime/mixins/link-mixin.ts +1 -0
  235. package/src/runtime/mixins/mixin.ts +21 -18
  236. package/src/runtime/navigation.ts +204 -30
  237. package/src/runtime/reconcile.ts +769 -760
  238. package/src/runtime/refresh.ts +46 -0
  239. package/src/runtime/run.ts +12 -2
  240. package/src/runtime/scheduler.ts +9 -29
  241. package/src/runtime/to-vnode.ts +85 -23
  242. package/src/runtime/vdom.ts +91 -69
  243. package/src/runtime/vnode.ts +192 -88
  244. package/src/{components/select → select}/README.md +29 -19
  245. package/src/select/index.tsx +159 -0
  246. package/src/{components/select/select.tsx → select/primitives.tsx} +10 -98
  247. package/src/server/stream.ts +25 -31
  248. package/src/shared/focus-styles.ts +2 -0
  249. package/src/shared/icons.tsx +62 -0
  250. package/src/shared/listbox-popover-styles.ts +146 -0
  251. package/src/shared/style-values.ts +165 -0
  252. package/src/style/style.ts +25 -6
  253. package/src/style/stylesheet.ts +32 -57
  254. package/src/tabs/README.md +141 -0
  255. package/src/tabs/index.tsx +245 -0
  256. package/src/tabs/primitives.ts +365 -0
  257. package/src/test/README.md +151 -60
  258. package/src/toggle/README.md +56 -0
  259. package/src/toggle/index.tsx +136 -0
  260. package/src/toggle/primitives.ts +192 -0
  261. package/dist/animation/demos/animation.demo.d.ts +0 -5
  262. package/dist/animation/demos/animation.demo.js +0 -92
  263. package/dist/animation/demos/animation.demo.js.map +0 -1
  264. package/dist/animation/demos/spring.demo.d.ts +0 -6
  265. package/dist/animation/demos/spring.demo.js +0 -304
  266. package/dist/animation/demos/spring.demo.js.map +0 -1
  267. package/dist/components/accordion/accordion.d.ts +0 -92
  268. package/dist/components/accordion/accordion.js +0 -335
  269. package/dist/components/accordion/accordion.js.map +0 -1
  270. package/dist/components/accordion/demos/card.demo.d.ts +0 -7
  271. package/dist/components/accordion/demos/card.demo.js +0 -59
  272. package/dist/components/accordion/demos/card.demo.js.map +0 -1
  273. package/dist/components/accordion/demos/multiple.demo.d.ts +0 -7
  274. package/dist/components/accordion/demos/multiple.demo.js +0 -20
  275. package/dist/components/accordion/demos/multiple.demo.js.map +0 -1
  276. package/dist/components/accordion/demos/overview.demo.d.ts +0 -7
  277. package/dist/components/accordion/demos/overview.demo.js +0 -20
  278. package/dist/components/accordion/demos/overview.demo.js.map +0 -1
  279. package/dist/components/anchor/anchor.js.map +0 -1
  280. package/dist/components/breadcrumbs/basic.demo.d.ts +0 -6
  281. package/dist/components/breadcrumbs/basic.demo.js +0 -15
  282. package/dist/components/breadcrumbs/basic.demo.js.map +0 -1
  283. package/dist/components/breadcrumbs/breadcrumbs.js.map +0 -1
  284. package/dist/components/breadcrumbs/separator.demo.d.ts +0 -6
  285. package/dist/components/breadcrumbs/separator.demo.js +0 -15
  286. package/dist/components/breadcrumbs/separator.demo.js.map +0 -1
  287. package/dist/components/button/button.d.ts +0 -105
  288. package/dist/components/button/button.js +0 -207
  289. package/dist/components/button/button.js.map +0 -1
  290. package/dist/components/button/demos/aliases.demo.d.ts +0 -7
  291. package/dist/components/button/demos/aliases.demo.js +0 -19
  292. package/dist/components/button/demos/aliases.demo.js.map +0 -1
  293. package/dist/components/button/demos/basic.demo.d.ts +0 -7
  294. package/dist/components/button/demos/basic.demo.js +0 -20
  295. package/dist/components/button/demos/basic.demo.js.map +0 -1
  296. package/dist/components/button/demos/states.demo.d.ts +0 -7
  297. package/dist/components/button/demos/states.demo.js +0 -30
  298. package/dist/components/button/demos/states.demo.js.map +0 -1
  299. package/dist/components/combobox/combobox.js.map +0 -1
  300. package/dist/components/combobox/overview.demo.d.ts +0 -7
  301. package/dist/components/combobox/overview.demo.js +0 -154
  302. package/dist/components/combobox/overview.demo.js.map +0 -1
  303. package/dist/components/glyph/glyph.d.ts +0 -14
  304. package/dist/components/glyph/glyph.js +0 -65
  305. package/dist/components/glyph/glyph.js.map +0 -1
  306. package/dist/components/listbox/listbox.js.map +0 -1
  307. package/dist/components/listbox/overview.demo.d.ts +0 -7
  308. package/dist/components/listbox/overview.demo.js +0 -65
  309. package/dist/components/listbox/overview.demo.js.map +0 -1
  310. package/dist/components/menu/demos/bubbling.demo.d.ts +0 -6
  311. package/dist/components/menu/demos/bubbling.demo.js +0 -16
  312. package/dist/components/menu/demos/bubbling.demo.js.map +0 -1
  313. package/dist/components/menu/demos/context-trigger.demo.d.ts +0 -7
  314. package/dist/components/menu/demos/context-trigger.demo.js +0 -87
  315. package/dist/components/menu/demos/context-trigger.demo.js.map +0 -1
  316. package/dist/components/menu/demos/overview.demo.d.ts +0 -7
  317. package/dist/components/menu/demos/overview.demo.js +0 -33
  318. package/dist/components/menu/demos/overview.demo.js.map +0 -1
  319. package/dist/components/menu/hover-aim.js.map +0 -1
  320. package/dist/components/menu/menu.js.map +0 -1
  321. package/dist/components/popover/overview.demo.d.ts +0 -7
  322. package/dist/components/popover/overview.demo.js +0 -65
  323. package/dist/components/popover/overview.demo.js.map +0 -1
  324. package/dist/components/popover/popover.js.map +0 -1
  325. package/dist/components/select/deconstructed.demo.d.ts +0 -7
  326. package/dist/components/select/deconstructed.demo.js +0 -54
  327. package/dist/components/select/deconstructed.demo.js.map +0 -1
  328. package/dist/components/select/overview.demo.d.ts +0 -6
  329. package/dist/components/select/overview.demo.js +0 -28
  330. package/dist/components/select/overview.demo.js.map +0 -1
  331. package/dist/components/select/select.js.map +0 -1
  332. package/dist/components/separator/separator.d.ts +0 -2
  333. package/dist/components/separator/separator.js +0 -15
  334. package/dist/components/separator/separator.js.map +0 -1
  335. package/dist/components/tabs/tabs.d.ts +0 -78
  336. package/dist/components/tabs/tabs.js +0 -339
  337. package/dist/components/tabs/tabs.js.map +0 -1
  338. package/dist/interactions/keydown/keydown.js.map +0 -1
  339. package/dist/interactions/outside-click/outside-click-mixin.js.map +0 -1
  340. package/dist/interactions/typeahead/typeahead-mixin.js.map +0 -1
  341. package/dist/runtime/demos/basic.demo.d.ts +0 -6
  342. package/dist/runtime/demos/basic.demo.js +0 -16
  343. package/dist/runtime/demos/basic.demo.js.map +0 -1
  344. package/dist/runtime/demos/controlled-uncontrolled-values.demo.d.ts +0 -6
  345. package/dist/runtime/demos/controlled-uncontrolled-values.demo.js +0 -77
  346. package/dist/runtime/demos/controlled-uncontrolled-values.demo.js.map +0 -1
  347. package/dist/runtime/demos/keyed-list.demo.d.ts +0 -6
  348. package/dist/runtime/demos/keyed-list.demo.js +0 -62
  349. package/dist/runtime/demos/keyed-list.demo.js.map +0 -1
  350. package/dist/runtime/demos/readme.demo.d.ts +0 -5
  351. package/dist/runtime/demos/readme.demo.js +0 -396
  352. package/dist/runtime/demos/readme.demo.js.map +0 -1
  353. package/dist/theme/contract.d.ts +0 -61
  354. package/dist/theme/contract.js +0 -131
  355. package/dist/theme/contract.js.map +0 -1
  356. package/dist/theme/glyph-contract.d.ts +0 -11
  357. package/dist/theme/glyph-contract.js +0 -34
  358. package/dist/theme/glyph-contract.js.map +0 -1
  359. package/dist/theme/presets/rmx-01/glyphs.d.ts +0 -2
  360. package/dist/theme/presets/rmx-01/glyphs.js +0 -252
  361. package/dist/theme/presets/rmx-01/glyphs.js.map +0 -1
  362. package/dist/theme/presets/rmx-01/index.d.ts +0 -4
  363. package/dist/theme/presets/rmx-01/index.js +0 -119
  364. package/dist/theme/presets/rmx-01/index.js.map +0 -1
  365. package/dist/theme/runtime.d.ts +0 -2
  366. package/dist/theme/runtime.js +0 -84
  367. package/dist/theme/runtime.js.map +0 -1
  368. package/dist/theme/theme.d.ts +0 -6
  369. package/dist/theme/theme.js +0 -5
  370. package/dist/theme/theme.js.map +0 -1
  371. package/dist/utils/flash-attribute.js.map +0 -1
  372. package/dist/utils/scroll-lock.d.ts +0 -3
  373. package/dist/utils/scroll-lock.js.map +0 -1
  374. package/dist/utils/wait-for-css-transition.js.map +0 -1
  375. package/dist/utils/wait.js.map +0 -1
  376. package/src/animation/demos/animation.demo.tsx +0 -194
  377. package/src/animation/demos/spring.demo.tsx +0 -385
  378. package/src/components/accordion/accordion.tsx +0 -565
  379. package/src/components/accordion/demos/card.demo.tsx +0 -114
  380. package/src/components/accordion/demos/multiple.demo.tsx +0 -57
  381. package/src/components/accordion/demos/overview.demo.tsx +0 -57
  382. package/src/components/breadcrumbs/basic.demo.tsx +0 -18
  383. package/src/components/breadcrumbs/separator.demo.tsx +0 -19
  384. package/src/components/button/README.md +0 -44
  385. package/src/components/button/button.tsx +0 -286
  386. package/src/components/button/demos/aliases.demo.tsx +0 -28
  387. package/src/components/button/demos/basic.demo.tsx +0 -31
  388. package/src/components/button/demos/states.demo.tsx +0 -53
  389. package/src/components/combobox/overview.demo.tsx +0 -200
  390. package/src/components/glyph/README.md +0 -72
  391. package/src/components/glyph/glyph.tsx +0 -110
  392. package/src/components/listbox/overview.demo.tsx +0 -102
  393. package/src/components/menu/demos/bubbling.demo.tsx +0 -35
  394. package/src/components/menu/demos/context-trigger.demo.tsx +0 -133
  395. package/src/components/menu/demos/overview.demo.tsx +0 -77
  396. package/src/components/popover/overview.demo.tsx +0 -144
  397. package/src/components/select/deconstructed.demo.tsx +0 -96
  398. package/src/components/select/overview.demo.tsx +0 -52
  399. package/src/components/separator/separator.ts +0 -19
  400. package/src/components/tabs/README.md +0 -105
  401. package/src/components/tabs/tabs.tsx +0 -504
  402. package/src/runtime/demos/basic.demo.tsx +0 -21
  403. package/src/runtime/demos/controlled-uncontrolled-values.demo.tsx +0 -177
  404. package/src/runtime/demos/keyed-list.demo.tsx +0 -94
  405. package/src/theme/README.md +0 -103
  406. package/src/theme/contract.ts +0 -215
  407. package/src/theme/glyph-contract.ts +0 -59
  408. package/src/theme/presets/rmx-01/glyphs.tsx +0 -308
  409. package/src/theme/presets/rmx-01/index.ts +0 -123
  410. package/src/theme/runtime.ts +0 -119
  411. package/src/theme/theme.ts +0 -15
  412. package/src/utils/scroll-lock/README.md +0 -33
  413. /package/dist/{components/anchor/anchor.d.ts → anchor/index.d.ts} +0 -0
  414. /package/dist/{components/breadcrumbs/breadcrumbs.d.ts → breadcrumbs/index.d.ts} +0 -0
  415. /package/dist/{utils → listbox}/flash-attribute.d.ts +0 -0
  416. /package/dist/{utils → listbox}/flash-attribute.js +0 -0
  417. /package/dist/{components/menu → menu}/hover-aim.d.ts +0 -0
  418. /package/dist/{components/menu → menu}/hover-aim.js +0 -0
  419. /package/dist/{interactions/outside-click/outside-click-mixin.d.ts → popover/outside-click.d.ts} +0 -0
  420. /package/dist/{interactions/keydown → select}/keydown.d.ts +0 -0
  421. /package/dist/{interactions/keydown → select}/keydown.js +0 -0
  422. /package/dist/{interactions/typeahead/typeahead-mixin.d.ts → shared/typeahead.d.ts} +0 -0
  423. /package/dist/{utils → shared}/wait-for-css-transition.d.ts +0 -0
  424. /package/dist/{utils → shared}/wait-for-css-transition.js +0 -0
  425. /package/dist/{utils → shared}/wait.d.ts +0 -0
  426. /package/dist/{utils → shared}/wait.js +0 -0
  427. /package/src/{components/anchor/anchor.ts → anchor/index.ts} +0 -0
  428. /package/src/{utils → listbox}/flash-attribute.ts +0 -0
  429. /package/src/{components/menu → menu}/hover-aim.ts +0 -0
  430. /package/src/{interactions/outside-click/outside-click-mixin.ts → popover/outside-click.ts} +0 -0
  431. /package/src/{interactions/keydown → select}/keydown.ts +0 -0
  432. /package/src/{interactions/typeahead/typeahead-mixin.ts → shared/typeahead.ts} +0 -0
  433. /package/src/{utils → shared}/wait-for-css-transition.ts +0 -0
  434. /package/src/{utils → shared}/wait.ts +0 -0
@@ -1,11 +1,13 @@
1
- import { Fragment } from "./component.js";
2
- import { invariant } from "./invariant.js";
3
- import { isEmptyChild, isPrimitiveChild, normalizeChildren } from "./core/children.js";
4
- import { isRemixElement, NON_RENDER_NODE, TEXT_NODE } from "./vnode.js";
5
- function flatMapChildrenToVNodes(node) {
6
- if (!('children' in node.props))
1
+ import { Fragment } from './component.js';
2
+ import { Frame } from './component.js';
3
+ import { invariant } from './invariant.js';
4
+ import { isEmptyChild, isPrimitiveChild, isRemixNode, normalizeChildren } from './core/children.js';
5
+ import { isMixinDescriptor } from './mixins/mixin.js';
6
+ import { isRemixElement, NON_RENDER_NODE, TEXT_NODE, } from './vnode.js';
7
+ function flatMapChildrenToVNodes(props) {
8
+ let children = props.children;
9
+ if (children === undefined)
7
10
  return [];
8
- let children = node.props.children;
9
11
  if (!Array.isArray(children))
10
12
  return [toVNode(children)];
11
13
  let vnodes = [];
@@ -13,30 +15,76 @@ function flatMapChildrenToVNodes(node) {
13
15
  return vnodes;
14
16
  }
15
17
  function flattenChildrenToVNodes(nodes, out) {
16
- for (let child of normalizeChildren(nodes)) {
17
- out.push(toVNode(child));
18
+ let children = normalizeChildren(nodes);
19
+ for (let i = 0; i < children.length; i++) {
20
+ out.push(toVNode(children[i]));
18
21
  }
19
22
  }
20
23
  export function toVNode(node) {
21
24
  if (isEmptyChild(node)) {
22
- return { type: NON_RENDER_NODE };
25
+ return { kind: 'empty', type: NON_RENDER_NODE };
23
26
  }
24
27
  if (isPrimitiveChild(node)) {
25
- return { type: TEXT_NODE, _text: String(node) };
28
+ return { kind: 'text', type: TEXT_NODE, _text: String(node) };
29
+ }
30
+ if (isRemixElement(node)) {
31
+ if (node.type === Fragment) {
32
+ let props = parseHostProps(node.props);
33
+ return {
34
+ kind: 'fragment',
35
+ type: Fragment,
36
+ key: node.key,
37
+ _children: flatMapChildrenToVNodes(props),
38
+ };
39
+ }
40
+ if (node.type === Frame) {
41
+ invariant(isFrameProps(node.props), '<Frame /> requires a src prop');
42
+ return { kind: 'frame', type: Frame, key: node.key, props: node.props };
43
+ }
44
+ if (typeof node.type === 'string') {
45
+ let props = parseHostProps(node.props);
46
+ // When innerHTML is set, ignore children
47
+ let children = props.innerHTML != null ? [] : flatMapChildrenToVNodes(props);
48
+ return {
49
+ kind: 'host',
50
+ type: node.type,
51
+ key: node.key,
52
+ props,
53
+ _children: children,
54
+ };
55
+ }
56
+ invariant(isElementFunction(node.type), 'Expected component element type');
57
+ return { kind: 'component', type: node.type, key: node.key, props: node.props };
26
58
  }
27
59
  if (Array.isArray(node)) {
28
60
  let children = [];
29
61
  flattenChildrenToVNodes(node, children);
30
- return { type: Fragment, _children: children };
31
- }
32
- if (node.type === Fragment) {
33
- return { type: Fragment, key: node.key, _children: flatMapChildrenToVNodes(node) };
34
- }
35
- if (isRemixElement(node)) {
36
- // When innerHTML is set, ignore children
37
- let children = node.props.innerHTML != null ? [] : flatMapChildrenToVNodes(node);
38
- return { type: node.type, key: node.key, props: node.props, _children: children };
62
+ return { kind: 'fragment', type: Fragment, _children: children };
39
63
  }
40
64
  invariant(false, 'Unexpected RemixNode');
41
65
  }
66
+ function isFrameProps(props) {
67
+ return typeof props.src === 'string' && props.src.length > 0;
68
+ }
69
+ function parseHostProps(props) {
70
+ let children = props.children;
71
+ invariant(children === undefined || isRemixNode(children), 'Invalid host children');
72
+ let innerHTML = props.innerHTML;
73
+ invariant(innerHTML === undefined || typeof innerHTML === 'string', 'Invalid innerHTML prop');
74
+ let mix = props.mix;
75
+ invariant(mix === undefined || isRuntimeMixValue(mix), 'Invalid mix prop');
76
+ return props;
77
+ }
78
+ function isRuntimeMixValue(value) {
79
+ if (!Array.isArray(value))
80
+ return isMixinDescriptor(value);
81
+ for (let descriptor of value) {
82
+ if (!isMixinDescriptor(descriptor))
83
+ return false;
84
+ }
85
+ return true;
86
+ }
87
+ function isElementFunction(value) {
88
+ return typeof value === 'function';
89
+ }
42
90
  //# sourceMappingURL=to-vnode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"to-vnode.js","sourceRoot":"","sources":["../../src/runtime/to-vnode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAc,MAAM,YAAY,CAAA;AAEnF,SAAS,uBAAuB,CAAC,IAAkB;IACjD,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC1C,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IACxD,IAAI,MAAM,GAAY,EAAE,CAAA;IACxB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACzC,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAkB,EAAE,GAAY;IAC/D,KAAK,IAAI,KAAK,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAe;IACrC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAA;IAClC,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAA;IACjD,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,QAAQ,GAAY,EAAE,CAAA;QAC1B,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACvC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;IAChD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAA;IACpF,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,yCAAyC;QACzC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAA;QAChF,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;IACnF,CAAC;IAED,SAAS,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAA;AAC1C,CAAC"}
1
+ {"version":3,"file":"to-vnode.js","sourceRoot":"","sources":["../../src/runtime/to-vnode.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import type { FrameContent, FrameHandle } from './component.ts';
1
+ import type { FrameHandle } from './component.ts';
2
2
  import type { RemixNode } from './jsx.ts';
3
+ import { type ResolveFrame } from './frame.ts';
3
4
  import { type ComponentErrorEvent } from './error-event.ts';
4
5
  import { createScheduler, type Scheduler } from './scheduler.ts';
5
6
  import { diffVNodes } from './reconcile.ts';
@@ -18,6 +19,7 @@ export type VirtualRootEventMap = {
18
19
  */
19
20
  export type VirtualRoot = TypedEventTarget<VirtualRootEventMap> & {
20
21
  render: (element: RemixNode) => void;
22
+ reconcile: () => void;
21
23
  dispose: () => void;
22
24
  flush: () => void;
23
25
  };
@@ -30,7 +32,7 @@ export type VirtualRootOptions = {
30
32
  styleManager?: StyleManager;
31
33
  frameInit?: {
32
34
  src?: string;
33
- resolveFrame: (src: string, signal?: AbortSignal, target?: string) => Promise<FrameContent> | FrameContent;
35
+ resolveFrame: ResolveFrame;
34
36
  loadModule?: (moduleUrl: string, exportName: string) => Promise<Function> | Function;
35
37
  };
36
38
  };
@@ -1,12 +1,14 @@
1
- import { createFrameHandle } from "./component.js";
2
- import { invariant } from "./invariant.js";
3
- import { createComponentErrorEvent, getComponentError, } from "./error-event.js";
4
- import { createScheduler } from "./scheduler.js";
5
- import { diffVNodes, remove as removeVNode } from "./reconcile.js";
6
- import { toVNode } from "./to-vnode.js";
7
- import { TypedEventTarget } from "./typed-event-target.js";
8
- import { ROOT_VNODE } from "./vnode.js";
9
- import { resetStyleState, defaultStyleManager } from "./diff-props.js";
1
+ import { createFrameHandle } from './component.js';
2
+ import { invariant } from './invariant.js';
3
+ import { createFrameRuntime } from './frame.js';
4
+ import { createComponentErrorEvent, getComponentError, } from './error-event.js';
5
+ import { createScheduler } from './scheduler.js';
6
+ import { diffVNodes, remove as removeVNode } from './reconcile.js';
7
+ import { toVNode } from './to-vnode.js';
8
+ import { TypedEventTarget } from './typed-event-target.js';
9
+ import { ROOT_VNODE } from './vnode.js';
10
+ import { resetStyleState, defaultStyleManager } from './diff-props.js';
11
+ import { registerRoot, unregisterRoot } from './refresh.js';
10
12
  export { createScheduler };
11
13
  export { diffVNodes, toVNode };
12
14
  export { resetStyleState };
@@ -29,6 +31,7 @@ function getHydrationComponentIdFromRangeStart(start) {
29
31
  export function createRangeRoot(boundaries, options = {}) {
30
32
  let [start, end] = boundaries;
31
33
  let vroot = null;
34
+ let currentElement;
32
35
  let styles = options.styleManager ?? defaultStyleManager;
33
36
  let container = end.parentNode;
34
37
  invariant(container, 'Expected parent node');
@@ -46,6 +49,12 @@ export function createRangeRoot(boundaries, options = {}) {
46
49
  scheduler,
47
50
  styleManager: styles,
48
51
  });
52
+ let context = {
53
+ frame: frameStub,
54
+ scheduler,
55
+ styles,
56
+ rootTarget: eventTarget,
57
+ };
49
58
  let isErrorForwardingAttached = false;
50
59
  function forwardDomError(event) {
51
60
  eventTarget.dispatchEvent(createComponentErrorEvent(getComponentError(event)));
@@ -63,12 +72,15 @@ export function createRangeRoot(boundaries, options = {}) {
63
72
  isErrorForwardingAttached = false;
64
73
  }
65
74
  attachDomErrorForwarding();
66
- return Object.assign(eventTarget, {
75
+ let root = Object.assign(eventTarget, {
67
76
  render(element) {
68
77
  attachDomErrorForwarding();
78
+ currentElement = element;
69
79
  let vnode = toVNode(element);
70
80
  let vParent = {
81
+ kind: 'root',
71
82
  type: ROOT_VNODE,
83
+ _children: [],
72
84
  _svg: false,
73
85
  _rangeStart: start,
74
86
  _rangeEnd: end,
@@ -76,26 +88,37 @@ export function createRangeRoot(boundaries, options = {}) {
76
88
  };
77
89
  scheduler.enqueueWork([
78
90
  () => {
79
- diffVNodes(vroot, vnode, parent, frameStub, scheduler, styles, vParent, eventTarget, end, hydrationCursor);
80
- vroot = vnode;
91
+ let cursor = hydrationCursor === null ? undefined : { current: hydrationCursor };
92
+ let committed = diffVNodes(vroot, vnode, parent, vParent, context, end, cursor);
93
+ vParent._children = [committed];
94
+ vroot = committed;
81
95
  hydrationCursor = null;
82
96
  },
83
97
  ]);
84
98
  scheduler.dequeue();
85
99
  },
100
+ reconcile() {
101
+ if (currentElement === undefined)
102
+ return;
103
+ root.render(currentElement);
104
+ },
86
105
  dispose() {
87
106
  detachDomErrorForwarding();
107
+ unregisterRoot(root);
108
+ currentElement = undefined;
88
109
  if (!vroot)
89
110
  return;
90
111
  let current = vroot;
91
112
  vroot = null;
92
- scheduler.enqueueWork([() => removeVNode(current, parent, scheduler, styles)]);
113
+ scheduler.enqueueWork([() => removeVNode(current, parent, context)]);
93
114
  scheduler.dequeue();
94
115
  },
95
116
  flush() {
96
117
  scheduler.dequeue();
97
118
  },
98
119
  });
120
+ registerRoot(root);
121
+ return root;
99
122
  }
100
123
  /**
101
124
  * Creates a virtual root for a host container element.
@@ -106,7 +129,14 @@ export function createRangeRoot(boundaries, options = {}) {
106
129
  */
107
130
  export function createRoot(container, options = {}) {
108
131
  let vroot = null;
132
+ let currentElement;
109
133
  let styles = options.styleManager ?? defaultStyleManager;
134
+ if (container.innerHTML.trim() !== '') {
135
+ // Adopt additively: multiple roots hydrating separate islands may share
136
+ // the default style manager, and adopting a later island must not release
137
+ // the server styles an earlier island still depends on.
138
+ styles.adoptServerStyles(container);
139
+ }
110
140
  let hydrationCursor = container.innerHTML.trim() !== '' ? container.firstChild : undefined;
111
141
  let eventTarget = new TypedEventTarget();
112
142
  let scheduler = options.scheduler ?? createScheduler(container.ownerDocument ?? document, eventTarget, styles);
@@ -119,6 +149,12 @@ export function createRoot(container, options = {}) {
119
149
  scheduler,
120
150
  styleManager: styles,
121
151
  });
152
+ let context = {
153
+ frame: frameStub,
154
+ scheduler,
155
+ styles,
156
+ rootTarget: eventTarget,
157
+ };
122
158
  let isErrorForwardingAttached = false;
123
159
  function forwardDomError(event) {
124
160
  eventTarget.dispatchEvent(createComponentErrorEvent(getComponentError(event)));
@@ -136,63 +172,75 @@ export function createRoot(container, options = {}) {
136
172
  isErrorForwardingAttached = false;
137
173
  }
138
174
  attachDomErrorForwarding();
139
- return Object.assign(eventTarget, {
175
+ let root = Object.assign(eventTarget, {
140
176
  render(element) {
141
177
  attachDomErrorForwarding();
178
+ currentElement = element;
142
179
  let vnode = toVNode(element);
143
- let vParent = { type: ROOT_VNODE, _svg: false };
180
+ let vParent = {
181
+ kind: 'root',
182
+ type: ROOT_VNODE,
183
+ _children: [],
184
+ _svg: false,
185
+ };
144
186
  scheduler.enqueueWork([
145
187
  () => {
146
- diffVNodes(vroot, vnode, container, frameStub, scheduler, styles, vParent, eventTarget, undefined, hydrationCursor);
147
- vroot = vnode;
188
+ let cursor = hydrationCursor === undefined ? undefined : { current: hydrationCursor };
189
+ let committed = diffVNodes(vroot, vnode, container, vParent, context, undefined, cursor);
190
+ vParent._children = [committed];
191
+ vroot = committed;
148
192
  hydrationCursor = undefined;
149
193
  },
150
194
  ]);
151
195
  scheduler.dequeue();
152
196
  },
197
+ reconcile() {
198
+ if (currentElement === undefined)
199
+ return;
200
+ root.render(currentElement);
201
+ },
153
202
  dispose() {
154
203
  detachDomErrorForwarding();
204
+ unregisterRoot(root);
205
+ currentElement = undefined;
155
206
  if (!vroot)
156
207
  return;
157
208
  let current = vroot;
158
209
  vroot = null;
159
- scheduler.enqueueWork([() => removeVNode(current, container, scheduler, styles)]);
210
+ scheduler.enqueueWork([() => removeVNode(current, container, context)]);
160
211
  scheduler.dequeue();
161
212
  },
162
213
  flush() {
163
214
  scheduler.dequeue();
164
215
  },
165
216
  });
217
+ registerRoot(root);
218
+ return root;
166
219
  }
167
220
  function createRootFrameHandle(init) {
168
221
  let resolveFrame = init.resolveFrame ??
169
222
  (() => {
170
223
  throw new Error('Cannot render <Frame /> without frame runtime. Use run() or pass frameInit to createRoot/createRangeRoot.');
171
224
  });
172
- let frame = createFrameHandle({
173
- src: init.src ?? '/',
174
- $runtime: {
175
- canResolveFrames: !!init.resolveFrame,
176
- topFrame: undefined,
177
- loadModule: init.loadModule ??
178
- (() => {
179
- throw new Error('loadModule is required to hydrate client entries inside <Frame />');
180
- }),
181
- resolveFrame,
182
- errorTarget: init.errorTarget,
183
- pendingClientEntries: new Map(),
184
- scheduler: init.scheduler,
185
- styleManager: init.styleManager,
186
- data: {},
187
- moduleCache: new Map(),
188
- moduleLoads: new Map(),
189
- frameInstances: new WeakMap(),
190
- namedFrames: new Map(),
191
- },
225
+ let runtime = createFrameRuntime({
226
+ topFrame: undefined,
227
+ loadModule: init.loadModule ??
228
+ (() => {
229
+ throw new Error('loadModule is required to hydrate client entries inside <Frame />');
230
+ }),
231
+ resolveFrame,
232
+ errorTarget: init.errorTarget,
233
+ pendingClientEntries: new Map(),
234
+ scheduler: init.scheduler,
235
+ styleManager: init.styleManager,
236
+ moduleCache: new Map(),
237
+ moduleLoads: new Map(),
238
+ frameInstances: new WeakMap(),
239
+ namedFrames: new Map(),
192
240
  });
193
- let runtime = frame.$runtime;
194
- if (runtime)
195
- runtime.topFrame = frame;
241
+ runtime.canResolveFrames = !!init.resolveFrame;
242
+ let frame = createFrameHandle({ src: init.src ?? '/', $runtime: runtime });
243
+ runtime.topFrame = frame;
196
244
  return frame;
197
245
  }
198
246
  //# sourceMappingURL=vdom.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vdom.js","sourceRoot":"","sources":["../../src/runtime/vdom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vdom.js","sourceRoot":"","sources":["../../src/runtime/vdom.ts"],"names":[],"mappings":"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"}
@@ -1,85 +1,156 @@
1
- import type { ComponentHandle, Component } from './component.ts';
2
- import { Fragment, Frame } from './component.ts';
1
+ import type { ComponentHandle, Fragment, Frame, FrameHandle, FrameProps } from './component.ts';
3
2
  import { isRemixElement } from './core/vnode.ts';
4
- import type { ElementProps, RemixNode } from './jsx.ts';
3
+ import type { Frame as FrameInstance } from './frame.ts';
4
+ import type { RemixNode } from './jsx.ts';
5
+ import type { ElementFunction } from './element-function.ts';
6
+ import type { Key } from './key.ts';
7
+ import type { MixinRuntimeState, MixinRuntimeValue } from './mixins/mixin.ts';
8
+ import type { OnMixinDescriptor } from './mixins/on-mixin.ts';
9
+ import type { Scheduler } from './scheduler.ts';
10
+ import type { StyleManager } from '../style/index.ts';
5
11
  export { isRemixElement };
6
12
  export declare const TEXT_NODE: unique symbol;
7
13
  export declare const NON_RENDER_NODE: unique symbol;
8
14
  export declare const ROOT_VNODE: unique symbol;
9
- export type VNodeType = typeof ROOT_VNODE | string | Function | typeof TEXT_NODE | typeof NON_RENDER_NODE | typeof Fragment | typeof Frame;
10
- export type VNode<T extends VNodeType = VNodeType> = {
11
- type: T;
12
- props?: ElementProps;
13
- _mixedProps?: ElementProps;
14
- key?: string;
15
- _parent?: VNode;
16
- _children?: VNode[];
17
- _dom?: unknown;
18
- _controller?: AbortController;
19
- _mixState?: unknown;
20
- _directEventDescriptors?: unknown;
21
- _directEventState?: unknown;
22
- _controlledState?: unknown;
23
- _svg?: boolean;
24
- _rangeStart?: Node;
25
- _rangeEnd?: Node;
26
- _pendingHydrationComponentId?: string;
27
- _frameInstance?: unknown;
28
- _frameFallbackRoot?: {
29
- render: (element: RemixNode) => void;
30
- dispose: () => void;
31
- };
32
- _frameResolveToken?: number;
33
- _frameResolveController?: AbortController;
34
- _frameResolved?: boolean;
35
- _text?: string;
36
- _handle?: ComponentHandle;
37
- _id?: string;
38
- _content?: VNode;
39
- _persistedByMixins?: boolean;
40
- _persistedParentByMixins?: ParentNode;
41
- _persistedRemovalToken?: number;
42
- };
43
- export type FragmentNode = VNode & {
44
- type: typeof Fragment;
45
- _children: VNode[];
46
- };
47
- export type TextNode = VNode & {
48
- type: typeof TEXT_NODE;
15
+ export type VNodeKind = 'root' | 'empty' | 'text' | 'fragment' | 'host' | 'component' | 'frame';
16
+ export type RuntimeElementProps = {
17
+ [name: string]: unknown;
18
+ };
19
+ export type RuntimeHostProps = RuntimeElementProps & {
20
+ children?: RemixNode;
21
+ innerHTML?: string;
22
+ mix?: MixinRuntimeValue;
23
+ };
24
+ type InputNodeBase<kind extends VNodeKind, type> = {
25
+ kind: kind;
26
+ type: type;
27
+ key?: Key;
28
+ _parent?: never;
29
+ };
30
+ export type NonRenderNode = InputNodeBase<'empty', typeof NON_RENDER_NODE>;
31
+ export type TextNode = InputNodeBase<'text', typeof TEXT_NODE> & {
49
32
  _text: string;
50
33
  };
51
- export type NonRenderNode = VNode & {
52
- type: typeof NON_RENDER_NODE;
34
+ export type FragmentNode = InputNodeBase<'fragment', typeof Fragment> & {
35
+ _children: VNodeInput[];
53
36
  };
54
- export type CommittedTextNode = TextNode & {
37
+ export type HostNode = InputNodeBase<'host', string> & {
38
+ props: RuntimeHostProps;
39
+ _children: VNodeInput[];
40
+ };
41
+ export type ComponentNode = InputNodeBase<'component', ElementFunction> & {
42
+ props: RuntimeElementProps;
43
+ };
44
+ export type FrameNode = InputNodeBase<'frame', typeof Frame> & {
45
+ props: RuntimeElementProps & FrameProps;
46
+ };
47
+ export type VNodeInput = NonRenderNode | TextNode | FragmentNode | HostNode | ComponentNode | FrameNode;
48
+ type MountedNodeBase = {
49
+ _parent: VNodeParent;
50
+ _svg: boolean;
51
+ };
52
+ type CommittedNodeBase<kind extends VNodeKind, type> = {
53
+ kind: kind;
54
+ type: type;
55
+ key?: Key;
56
+ } & MountedNodeBase;
57
+ export type CommittedNonRenderNode = CommittedNodeBase<'empty', typeof NON_RENDER_NODE>;
58
+ export type CommittedTextNode = CommittedNodeBase<'text', typeof TEXT_NODE> & {
59
+ _text: string;
55
60
  _dom: Text;
56
61
  };
57
- export type HostNode = VNode & {
62
+ export type ControlledReflectionState = {
63
+ disposed: boolean;
64
+ listenersAttached: boolean;
65
+ pendingRestoreVersion: number;
66
+ managesValue: boolean;
67
+ managesChecked: boolean;
68
+ hasControlledValue: boolean;
69
+ controlledValue: unknown;
70
+ hasControlledChecked: boolean;
71
+ controlledChecked: unknown;
72
+ onInput(): void;
73
+ onChange(): void;
74
+ };
75
+ export type DirectEventBinding = {
58
76
  type: string;
59
- props: ElementProps;
60
- _children: VNode[];
77
+ handler: (event: Event, signal: AbortSignal) => void | Promise<void>;
78
+ capture: boolean;
79
+ stableHandler: ((event: Event) => void) | null;
80
+ reentry: AbortController | null;
81
+ };
82
+ export type DirectEventState = {
83
+ bindings: DirectEventBinding[];
84
+ };
85
+ export type HostPersistenceState = {
86
+ parent: ParentNode;
87
+ token: number;
61
88
  };
62
- export type CommittedHostNode = HostNode & {
89
+ export type CommittedHostNode = CommittedNodeBase<'host', string> & {
90
+ props: RuntimeHostProps;
91
+ _children: CommittedVNode[];
63
92
  _dom: Element;
64
- _controller?: AbortController;
93
+ _mixedProps: RuntimeHostProps;
94
+ _mixState?: MixinRuntimeState;
95
+ _directEventDescriptors?: OnMixinDescriptor[];
96
+ _directEventState?: DirectEventState;
97
+ _controlledState?: ControlledReflectionState;
98
+ _persistence?: HostPersistenceState;
65
99
  };
66
- export type ComponentNode = VNode & {
67
- type: Function;
68
- props: ElementProps;
69
- _handle: ComponentHandle;
100
+ export type CommittedFragmentNode = CommittedNodeBase<'fragment', typeof Fragment> & {
101
+ _children: CommittedVNode[];
70
102
  };
71
- export type CommittedComponentNode = VNode & {
72
- type: Function;
73
- props: ElementProps;
74
- _content: VNode;
103
+ export type MountingComponentNode = CommittedNodeBase<'component', ElementFunction> & {
104
+ props: RuntimeElementProps;
75
105
  _handle: ComponentHandle;
106
+ _context: ReconcileContext;
107
+ };
108
+ export type CommittedComponentNode = MountingComponentNode & {
109
+ _content: CommittedVNode;
110
+ };
111
+ export interface FrameFallbackRoot {
112
+ render(element: RemixNode): void;
113
+ dispose(): void;
114
+ }
115
+ export type FrameMountState = {
116
+ instance: FrameInstance;
117
+ fallbackRoot?: FrameFallbackRoot;
118
+ resolveToken: number;
119
+ resolveController?: AbortController;
120
+ resolved: boolean;
121
+ };
122
+ export type CommittedFrameNode = CommittedNodeBase<'frame', typeof Frame> & {
123
+ props: RuntimeElementProps & FrameProps;
124
+ _rangeStart: Comment;
125
+ _rangeEnd: Comment;
126
+ _state: FrameMountState;
127
+ };
128
+ export type CommittedVNode = CommittedNonRenderNode | CommittedTextNode | CommittedFragmentNode | CommittedHostNode | CommittedComponentNode | CommittedFrameNode;
129
+ export type RootVNode = {
130
+ kind: 'root';
131
+ type: typeof ROOT_VNODE;
132
+ _children: CommittedVNode[];
133
+ _svg: boolean;
134
+ _rangeStart?: Node;
135
+ _rangeEnd?: Node;
136
+ _pendingHydrationComponentId?: string;
76
137
  };
77
- export declare function isFragmentNode(node: VNode): node is FragmentNode;
78
- export declare function isTextNode(node: VNode): node is TextNode;
79
- export declare function isNonRenderNode(node: VNode): node is NonRenderNode;
80
- export declare function isCommittedTextNode(node: VNode): node is CommittedTextNode;
81
- export declare function isHostNode(node: VNode): node is HostNode;
82
- export declare function isCommittedHostNode(node: VNode): node is CommittedHostNode;
83
- export declare function isComponentNode(node: VNode): node is ComponentNode;
138
+ export interface ReconcileContext {
139
+ frame: FrameHandle;
140
+ scheduler: Scheduler;
141
+ styles: StyleManager;
142
+ rootTarget: EventTarget;
143
+ }
144
+ export type VNodeParent = RootVNode | CommittedFragmentNode | CommittedHostNode | MountingComponentNode | CommittedComponentNode;
145
+ export type VNode = VNodeInput | CommittedVNode | RootVNode | MountingComponentNode;
146
+ export declare function isFragmentNode(node: VNode): node is FragmentNode | CommittedFragmentNode;
147
+ export declare function isTextNode(node: VNode): node is TextNode | CommittedTextNode;
148
+ export declare function isNonRenderNode(node: VNode): node is NonRenderNode | CommittedNonRenderNode;
149
+ export declare function isCommittedTextNode(node: CommittedVNode): node is CommittedTextNode;
150
+ export declare function isHostNode(node: VNode): node is HostNode | CommittedHostNode;
151
+ export declare function isCommittedHostNode(node: CommittedVNode): node is CommittedHostNode;
152
+ export declare function isComponentNode(node: VNode): node is ComponentNode | MountingComponentNode | CommittedComponentNode;
84
153
  export declare function isCommittedComponentNode(node: VNode): node is CommittedComponentNode;
85
- export declare function findContextFromAncestry(node: VNode, type: Component): unknown;
154
+ export declare function isFrameNode(node: VNode): node is FrameNode | CommittedFrameNode;
155
+ export declare function isCommittedFrameNode(node: CommittedVNode): node is CommittedFrameNode;
156
+ export declare function findContextFromAncestry(node: VNodeParent, type: ElementFunction): unknown;