@remix-run/ui 0.4.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 (189) hide show
  1. package/README.md +74 -1
  2. package/dist/accordion/index.js +2 -2
  3. package/dist/accordion/primitives.d.ts +1 -1
  4. package/dist/accordion/primitives.js.map +1 -1
  5. package/dist/anchor/index.js.map +1 -1
  6. package/dist/animation/animate-layout-mixin.js +1 -1
  7. package/dist/animation/animate-layout-mixin.js.map +1 -1
  8. package/dist/animation/animate-mixins.js +2 -2
  9. package/dist/animation/animate-mixins.js.map +1 -1
  10. package/dist/animation/demos/color-interpolation.js +1 -1
  11. package/dist/animation/demos/color-interpolation.js.map +1 -1
  12. package/dist/animation/demos/drag-release.d.ts +1 -1
  13. package/dist/animation/demos/hold-to-confirm.d.ts +3 -3
  14. package/dist/animation/demos/material-ripple.js +1 -3
  15. package/dist/animation/demos/material-ripple.js.map +1 -1
  16. package/dist/animation/index.js +4 -4
  17. package/dist/animation/spring.js.map +1 -1
  18. package/dist/breadcrumbs/index.js +2 -2
  19. package/dist/button/index.js +25 -25
  20. package/dist/button/index.js.map +1 -1
  21. package/dist/checkbox/index.js +11 -9
  22. package/dist/checkbox/index.js.map +1 -1
  23. package/dist/combobox/index.js +4 -4
  24. package/dist/combobox/index.js.map +1 -1
  25. package/dist/combobox/primitives.d.ts +1 -1
  26. package/dist/combobox/primitives.js +5 -5
  27. package/dist/combobox/primitives.js.map +1 -1
  28. package/dist/dev/refresh.d.ts +1 -0
  29. package/dist/dev/refresh.js +2 -0
  30. package/dist/dev/refresh.js.map +1 -0
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.js +14 -14
  33. package/dist/input/index.js +9 -9
  34. package/dist/input/index.js.map +1 -1
  35. package/dist/jsx-runtime.js +2 -2
  36. package/dist/listbox/index.js +2 -2
  37. package/dist/menu/hover-aim.js.map +1 -1
  38. package/dist/menu/index.js +3 -3
  39. package/dist/menu/primitives.d.ts +1 -1
  40. package/dist/menu/primitives.js +6 -6
  41. package/dist/menu/primitives.js.map +1 -1
  42. package/dist/popover/index.js +3 -3
  43. package/dist/popover/scroll-lock.js.map +1 -1
  44. package/dist/radio/index.js +7 -7
  45. package/dist/radio/index.js.map +1 -1
  46. package/dist/runtime/client-entry-boundary.d.ts +14 -0
  47. package/dist/runtime/client-entry-boundary.js +29 -0
  48. package/dist/runtime/client-entry-boundary.js.map +1 -0
  49. package/dist/runtime/component.d.ts +19 -4
  50. package/dist/runtime/component.js +39 -9
  51. package/dist/runtime/component.js.map +1 -1
  52. package/dist/runtime/core/attributes.js +36 -3
  53. package/dist/runtime/core/attributes.js.map +1 -1
  54. package/dist/runtime/core/children.d.ts +2 -0
  55. package/dist/runtime/core/children.js +26 -2
  56. package/dist/runtime/core/children.js.map +1 -1
  57. package/dist/runtime/core/props.js +2 -2
  58. package/dist/runtime/core/vnode.d.ts +3 -3
  59. package/dist/runtime/core/vnode.js +22 -1
  60. package/dist/runtime/core/vnode.js.map +1 -1
  61. package/dist/runtime/create-element.d.ts +2 -2
  62. package/dist/runtime/create-element.js +3 -2
  63. package/dist/runtime/create-element.js.map +1 -1
  64. package/dist/runtime/diff-dom.js +294 -219
  65. package/dist/runtime/diff-dom.js.map +1 -1
  66. package/dist/runtime/diff-props.js +3 -3
  67. package/dist/runtime/dom.d.ts +12 -0
  68. package/dist/runtime/element-function.d.ts +3 -0
  69. package/dist/runtime/element-function.js +2 -0
  70. package/dist/runtime/element-function.js.map +1 -0
  71. package/dist/runtime/form-navigation.d.ts +25 -0
  72. package/dist/runtime/form-navigation.js +132 -0
  73. package/dist/runtime/form-navigation.js.map +1 -0
  74. package/dist/runtime/frame-resolution.d.ts +5 -0
  75. package/dist/runtime/frame-resolution.js +10 -0
  76. package/dist/runtime/frame-resolution.js.map +1 -0
  77. package/dist/runtime/frame.d.ts +58 -15
  78. package/dist/runtime/frame.js +367 -114
  79. package/dist/runtime/frame.js.map +1 -1
  80. package/dist/runtime/jsx.d.ts +1 -1
  81. package/dist/runtime/jsx.js +1 -1
  82. package/dist/runtime/jsx.js.map +1 -1
  83. package/dist/runtime/key.d.ts +1 -0
  84. package/dist/runtime/key.js +2 -0
  85. package/dist/runtime/key.js.map +1 -0
  86. package/dist/runtime/mixins/attrs-mixin.js +2 -2
  87. package/dist/runtime/mixins/link-mixin.js +4 -3
  88. package/dist/runtime/mixins/link-mixin.js.map +1 -1
  89. package/dist/runtime/mixins/mixin.d.ts +15 -10
  90. package/dist/runtime/mixins/mixin.js +4 -4
  91. package/dist/runtime/mixins/mixin.js.map +1 -1
  92. package/dist/runtime/mixins/on-mixin.js +1 -1
  93. package/dist/runtime/mixins/ref-mixin.js +1 -1
  94. package/dist/runtime/navigation.d.ts +4 -1
  95. package/dist/runtime/navigation.js +157 -32
  96. package/dist/runtime/navigation.js.map +1 -1
  97. package/dist/runtime/reconcile.d.ts +11 -10
  98. package/dist/runtime/reconcile.js +549 -421
  99. package/dist/runtime/reconcile.js.map +1 -1
  100. package/dist/runtime/refresh.d.ts +28 -0
  101. package/dist/runtime/refresh.js +31 -0
  102. package/dist/runtime/refresh.js.map +1 -0
  103. package/dist/runtime/render.js +1 -1
  104. package/dist/runtime/render.js.map +1 -1
  105. package/dist/runtime/run.d.ts +3 -1
  106. package/dist/runtime/run.js +15 -7
  107. package/dist/runtime/run.js.map +1 -1
  108. package/dist/runtime/scheduler.js +8 -16
  109. package/dist/runtime/scheduler.js.map +1 -1
  110. package/dist/runtime/to-vnode.d.ts +2 -2
  111. package/dist/runtime/to-vnode.js +68 -20
  112. package/dist/runtime/to-vnode.js.map +1 -1
  113. package/dist/runtime/vdom.d.ts +4 -2
  114. package/dist/runtime/vdom.js +87 -42
  115. package/dist/runtime/vdom.js.map +1 -1
  116. package/dist/runtime/vnode.d.ts +138 -67
  117. package/dist/runtime/vnode.js +17 -12
  118. package/dist/runtime/vnode.js.map +1 -1
  119. package/dist/select/index.js +11 -11
  120. package/dist/select/index.js.map +1 -1
  121. package/dist/select/primitives.d.ts +1 -1
  122. package/dist/select/primitives.js +6 -6
  123. package/dist/server/stream.js +20 -27
  124. package/dist/server/stream.js.map +1 -1
  125. package/dist/shared/focus-styles.d.ts +1 -1
  126. package/dist/shared/focus-styles.js +1 -1
  127. package/dist/shared/focus-styles.js.map +1 -1
  128. package/dist/shared/listbox-popover-styles.js +1 -1
  129. package/dist/shared/style-values.js +26 -26
  130. package/dist/shared/style-values.js.map +1 -1
  131. package/dist/style/css-mixin.js +3 -3
  132. package/dist/style/index.js +2 -2
  133. package/dist/style/style.js +25 -6
  134. package/dist/style/style.js.map +1 -1
  135. package/dist/style/stylesheet.d.ts +0 -1
  136. package/dist/style/stylesheet.js +13 -54
  137. package/dist/style/stylesheet.js.map +1 -1
  138. package/dist/tabs/index.js +11 -11
  139. package/dist/tabs/index.js.map +1 -1
  140. package/dist/tabs/primitives.d.ts +1 -1
  141. package/dist/test.js +1 -1
  142. package/dist/toggle/index.js +9 -9
  143. package/dist/toggle/index.js.map +1 -1
  144. package/dist/toggle/primitives.d.ts +1 -1
  145. package/package.json +10 -7
  146. package/src/animation/animate-mixins.ts +3 -3
  147. package/src/animation/demos/color-interpolation.tsx +1 -1
  148. package/src/button/index.ts +24 -24
  149. package/src/checkbox/index.ts +10 -8
  150. package/src/combobox/index.tsx +1 -1
  151. package/src/dev/refresh.ts +1 -0
  152. package/src/index.ts +1 -1
  153. package/src/input/index.ts +8 -8
  154. package/src/radio/index.ts +6 -5
  155. package/src/runtime/client-entry-boundary.ts +54 -0
  156. package/src/runtime/component.ts +65 -16
  157. package/src/runtime/core/attributes.ts +35 -1
  158. package/src/runtime/core/children.ts +24 -2
  159. package/src/runtime/core/vnode.ts +25 -4
  160. package/src/runtime/create-element.ts +6 -5
  161. package/src/runtime/demos/readme.demo.tsx +4 -4
  162. package/src/runtime/diff-dom.ts +358 -243
  163. package/src/runtime/dom.ts +331 -214
  164. package/src/runtime/element-function.ts +1 -0
  165. package/src/runtime/event-listeners.ts +1 -1
  166. package/src/runtime/form-navigation.ts +184 -0
  167. package/src/runtime/frame-resolution.ts +13 -0
  168. package/src/runtime/frame.ts +482 -124
  169. package/src/runtime/jsx.ts +3 -5
  170. package/src/runtime/key.ts +1 -0
  171. package/src/runtime/mixins/link-mixin.ts +1 -0
  172. package/src/runtime/mixins/mixin.ts +21 -18
  173. package/src/runtime/navigation.ts +204 -30
  174. package/src/runtime/reconcile.ts +762 -759
  175. package/src/runtime/refresh.ts +46 -0
  176. package/src/runtime/run.ts +12 -2
  177. package/src/runtime/scheduler.ts +9 -29
  178. package/src/runtime/to-vnode.ts +85 -23
  179. package/src/runtime/vdom.ts +89 -70
  180. package/src/runtime/vnode.ts +192 -88
  181. package/src/select/index.tsx +9 -9
  182. package/src/server/stream.ts +22 -28
  183. package/src/shared/focus-styles.ts +1 -1
  184. package/src/shared/style-values.ts +26 -26
  185. package/src/style/style.ts +25 -6
  186. package/src/style/stylesheet.ts +32 -57
  187. package/src/tabs/index.tsx +12 -11
  188. package/src/test/README.md +151 -60
  189. package/src/toggle/index.tsx +9 -7
@@ -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,9 +129,13 @@ 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;
110
134
  if (container.innerHTML.trim() !== '') {
111
- styles.replaceServerStyles(container);
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);
112
139
  }
113
140
  let hydrationCursor = container.innerHTML.trim() !== '' ? container.firstChild : undefined;
114
141
  let eventTarget = new TypedEventTarget();
@@ -122,6 +149,12 @@ export function createRoot(container, options = {}) {
122
149
  scheduler,
123
150
  styleManager: styles,
124
151
  });
152
+ let context = {
153
+ frame: frameStub,
154
+ scheduler,
155
+ styles,
156
+ rootTarget: eventTarget,
157
+ };
125
158
  let isErrorForwardingAttached = false;
126
159
  function forwardDomError(event) {
127
160
  eventTarget.dispatchEvent(createComponentErrorEvent(getComponentError(event)));
@@ -139,63 +172,75 @@ export function createRoot(container, options = {}) {
139
172
  isErrorForwardingAttached = false;
140
173
  }
141
174
  attachDomErrorForwarding();
142
- return Object.assign(eventTarget, {
175
+ let root = Object.assign(eventTarget, {
143
176
  render(element) {
144
177
  attachDomErrorForwarding();
178
+ currentElement = element;
145
179
  let vnode = toVNode(element);
146
- let vParent = { type: ROOT_VNODE, _svg: false };
180
+ let vParent = {
181
+ kind: 'root',
182
+ type: ROOT_VNODE,
183
+ _children: [],
184
+ _svg: false,
185
+ };
147
186
  scheduler.enqueueWork([
148
187
  () => {
149
- diffVNodes(vroot, vnode, container, frameStub, scheduler, styles, vParent, eventTarget, undefined, hydrationCursor);
150
- 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;
151
192
  hydrationCursor = undefined;
152
193
  },
153
194
  ]);
154
195
  scheduler.dequeue();
155
196
  },
197
+ reconcile() {
198
+ if (currentElement === undefined)
199
+ return;
200
+ root.render(currentElement);
201
+ },
156
202
  dispose() {
157
203
  detachDomErrorForwarding();
204
+ unregisterRoot(root);
205
+ currentElement = undefined;
158
206
  if (!vroot)
159
207
  return;
160
208
  let current = vroot;
161
209
  vroot = null;
162
- scheduler.enqueueWork([() => removeVNode(current, container, scheduler, styles)]);
210
+ scheduler.enqueueWork([() => removeVNode(current, container, context)]);
163
211
  scheduler.dequeue();
164
212
  },
165
213
  flush() {
166
214
  scheduler.dequeue();
167
215
  },
168
216
  });
217
+ registerRoot(root);
218
+ return root;
169
219
  }
170
220
  function createRootFrameHandle(init) {
171
221
  let resolveFrame = init.resolveFrame ??
172
222
  (() => {
173
223
  throw new Error('Cannot render <Frame /> without frame runtime. Use run() or pass frameInit to createRoot/createRangeRoot.');
174
224
  });
175
- let frame = createFrameHandle({
176
- src: init.src ?? '/',
177
- $runtime: {
178
- canResolveFrames: !!init.resolveFrame,
179
- topFrame: undefined,
180
- loadModule: init.loadModule ??
181
- (() => {
182
- throw new Error('loadModule is required to hydrate client entries inside <Frame />');
183
- }),
184
- resolveFrame,
185
- errorTarget: init.errorTarget,
186
- pendingClientEntries: new Map(),
187
- scheduler: init.scheduler,
188
- styleManager: init.styleManager,
189
- data: {},
190
- moduleCache: new Map(),
191
- moduleLoads: new Map(),
192
- frameInstances: new WeakMap(),
193
- namedFrames: new Map(),
194
- },
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(),
195
240
  });
196
- let runtime = frame.$runtime;
197
- if (runtime)
198
- runtime.topFrame = frame;
241
+ runtime.canResolveFrames = !!init.resolveFrame;
242
+ let frame = createFrameHandle({ src: init.src ?? '/', $runtime: runtime });
243
+ runtime.topFrame = frame;
199
244
  return frame;
200
245
  }
201
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;