@remix-run/ui 0.0.0 → 0.1.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.
- package/LICENSE +21 -0
- package/README.md +195 -2
- package/dist/animation/animate-layout-mixin.d.ts +12 -0
- package/dist/animation/animate-layout-mixin.js +214 -0
- package/dist/animation/animate-layout-mixin.js.map +1 -0
- package/dist/animation/animate-mixins.d.ts +29 -0
- package/dist/animation/animate-mixins.js +235 -0
- package/dist/animation/animate-mixins.js.map +1 -0
- package/dist/animation/index.d.ts +6 -0
- package/dist/animation/index.js +5 -0
- package/dist/animation/index.js.map +1 -0
- package/dist/animation/spring.d.ts +75 -0
- package/dist/animation/spring.js +183 -0
- package/dist/animation/spring.js.map +1 -0
- package/dist/animation/tween.d.ts +70 -0
- package/dist/animation/tween.js +93 -0
- package/dist/animation/tween.js.map +1 -0
- package/dist/components/accordion/accordion.d.ts +92 -0
- package/dist/components/accordion/accordion.js +337 -0
- package/dist/components/accordion/accordion.js.map +1 -0
- package/dist/components/anchor/anchor.d.ts +13 -0
- package/dist/components/anchor/anchor.js +558 -0
- package/dist/components/anchor/anchor.js.map +1 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.ts +11 -0
- package/dist/components/breadcrumbs/breadcrumbs.js +78 -0
- package/dist/components/breadcrumbs/breadcrumbs.js.map +1 -0
- package/dist/components/button/button.d.ts +23 -0
- package/dist/components/button/button.js +147 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/combobox/combobox.d.ts +101 -0
- package/dist/components/combobox/combobox.js +708 -0
- package/dist/components/combobox/combobox.js.map +1 -0
- package/dist/components/glyph/glyph.d.ts +14 -0
- package/dist/components/glyph/glyph.js +65 -0
- package/dist/components/glyph/glyph.js.map +1 -0
- package/dist/components/listbox/listbox.d.ts +67 -0
- package/dist/components/listbox/listbox.js +340 -0
- package/dist/components/listbox/listbox.js.map +1 -0
- package/dist/components/menu/hover-aim.d.ts +5 -0
- package/dist/components/menu/hover-aim.js +308 -0
- package/dist/components/menu/hover-aim.js.map +1 -0
- package/dist/components/menu/menu.d.ts +164 -0
- package/dist/components/menu/menu.js +1106 -0
- package/dist/components/menu/menu.js.map +1 -0
- package/dist/components/popover/popover.d.ts +35 -0
- package/dist/components/popover/popover.js +138 -0
- package/dist/components/popover/popover.js.map +1 -0
- package/dist/components/select/select.d.ts +67 -0
- package/dist/components/select/select.js +397 -0
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/separator/separator.d.ts +2 -0
- package/dist/components/separator/separator.js +15 -0
- package/dist/components/separator/separator.js.map +1 -0
- package/dist/components/tabs/tabs.d.ts +78 -0
- package/dist/components/tabs/tabs.js +341 -0
- package/dist/components/tabs/tabs.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/interactions/keydown/keydown.d.ts +1 -0
- package/dist/interactions/keydown/keydown.js +8 -0
- package/dist/interactions/keydown/keydown.js.map +1 -0
- package/dist/interactions/outside-click/outside-click-mixin.d.ts +2 -0
- package/dist/interactions/outside-click/outside-click-mixin.js +29 -0
- package/dist/interactions/outside-click/outside-click-mixin.js.map +1 -0
- package/dist/interactions/typeahead/typeahead-mixin.d.ts +8 -0
- package/dist/interactions/typeahead/typeahead-mixin.js +59 -0
- package/dist/interactions/typeahead/typeahead-mixin.js.map +1 -0
- package/dist/jsx-runtime.d.ts +2 -0
- package/dist/jsx-runtime.js +3 -0
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/runtime/client-entries.d.ts +91 -0
- package/dist/runtime/client-entries.js +40 -0
- package/dist/runtime/client-entries.js.map +1 -0
- package/dist/runtime/component.d.ts +223 -0
- package/dist/runtime/component.js +152 -0
- package/dist/runtime/component.js.map +1 -0
- package/dist/runtime/create-element.d.ts +10 -0
- package/dist/runtime/create-element.js +29 -0
- package/dist/runtime/create-element.js.map +1 -0
- package/dist/runtime/diff-dom.d.ts +2 -0
- package/dist/runtime/diff-dom.js +364 -0
- package/dist/runtime/diff-dom.js.map +1 -0
- package/dist/runtime/diff-props.d.ts +9 -0
- package/dist/runtime/diff-props.js +195 -0
- package/dist/runtime/diff-props.js.map +1 -0
- package/dist/runtime/document-state.d.ts +11 -0
- package/dist/runtime/document-state.js +106 -0
- package/dist/runtime/document-state.js.map +1 -0
- package/dist/runtime/dom.d.ts +3189 -0
- package/dist/runtime/dom.js +2 -0
- package/dist/runtime/dom.js.map +1 -0
- package/dist/runtime/error-event.d.ts +20 -0
- package/dist/runtime/error-event.js +19 -0
- package/dist/runtime/error-event.js.map +1 -0
- package/dist/runtime/event-listeners.d.ts +50 -0
- package/dist/runtime/event-listeners.js +31 -0
- package/dist/runtime/event-listeners.js.map +1 -0
- package/dist/runtime/frame.d.ts +119 -0
- package/dist/runtime/frame.js +915 -0
- package/dist/runtime/frame.js.map +1 -0
- package/dist/runtime/invariant.d.ts +23 -0
- package/dist/runtime/invariant.js +33 -0
- package/dist/runtime/invariant.js.map +1 -0
- package/dist/runtime/jsx.d.ts +320 -0
- package/dist/runtime/jsx.js +31 -0
- package/dist/runtime/jsx.js.map +1 -0
- package/dist/runtime/mixins/attrs-mixin.d.ts +9 -0
- package/dist/runtime/mixins/attrs-mixin.js +23 -0
- package/dist/runtime/mixins/attrs-mixin.js.map +1 -0
- package/dist/runtime/mixins/link-mixin.d.ts +17 -0
- package/dist/runtime/mixins/link-mixin.js +101 -0
- package/dist/runtime/mixins/link-mixin.js.map +1 -0
- package/dist/runtime/mixins/mixin.d.ts +145 -0
- package/dist/runtime/mixins/mixin.js +570 -0
- package/dist/runtime/mixins/mixin.js.map +1 -0
- package/dist/runtime/mixins/on-mixin.d.ts +16 -0
- package/dist/runtime/mixins/on-mixin.js +49 -0
- package/dist/runtime/mixins/on-mixin.js.map +1 -0
- package/dist/runtime/mixins/ref-mixin.d.ts +9 -0
- package/dist/runtime/mixins/ref-mixin.js +21 -0
- package/dist/runtime/mixins/ref-mixin.js.map +1 -0
- package/dist/runtime/navigation.d.ts +22 -0
- package/dist/runtime/navigation.js +102 -0
- package/dist/runtime/navigation.js.map +1 -0
- package/dist/runtime/reconcile.d.ts +11 -0
- package/dist/runtime/reconcile.js +1240 -0
- package/dist/runtime/reconcile.js.map +1 -0
- package/dist/runtime/render.d.ts +54 -0
- package/dist/runtime/render.js +50 -0
- package/dist/runtime/render.js.map +1 -0
- package/dist/runtime/run.d.ts +45 -0
- package/dist/runtime/run.js +68 -0
- package/dist/runtime/run.js.map +1 -0
- package/dist/runtime/scheduler.d.ts +30 -0
- package/dist/runtime/scheduler.js +185 -0
- package/dist/runtime/scheduler.js.map +1 -0
- package/dist/runtime/svg-attributes.d.ts +5 -0
- package/dist/runtime/svg-attributes.js +124 -0
- package/dist/runtime/svg-attributes.js.map +1 -0
- package/dist/runtime/to-vnode.d.ts +3 -0
- package/dist/runtime/to-vnode.js +43 -0
- package/dist/runtime/to-vnode.js.map +1 -0
- package/dist/runtime/typed-event-target.d.ts +50 -0
- package/dist/runtime/typed-event-target.js +6 -0
- package/dist/runtime/typed-event-target.js.map +1 -0
- package/dist/runtime/vdom.d.ts +55 -0
- package/dist/runtime/vdom.js +198 -0
- package/dist/runtime/vdom.js.map +1 -0
- package/dist/runtime/vnode.d.ts +79 -0
- package/dist/runtime/vnode.js +38 -0
- package/dist/runtime/vnode.js.map +1 -0
- package/dist/server/stream.d.ts +57 -0
- package/dist/server/stream.js +1007 -0
- package/dist/server/stream.js.map +1 -0
- package/dist/style/css-mixin.d.ts +8 -0
- package/dist/style/css-mixin.js +54 -0
- package/dist/style/css-mixin.js.map +1 -0
- package/dist/style/index.d.ts +5 -0
- package/dist/style/index.js +4 -0
- package/dist/style/index.js.map +1 -0
- package/dist/style/style.d.ts +24 -0
- package/dist/style/style.js +269 -0
- package/dist/style/style.js.map +1 -0
- package/dist/style/stylesheet.d.ts +11 -0
- package/dist/style/stylesheet.js +174 -0
- package/dist/style/stylesheet.js.map +1 -0
- package/dist/test.d.ts +2 -0
- package/dist/test.js +2 -0
- package/dist/test.js.map +1 -0
- package/dist/theme/contract.d.ts +259 -0
- package/dist/theme/contract.js +131 -0
- package/dist/theme/contract.js.map +1 -0
- package/dist/theme/glyph-contract.d.ts +13 -0
- package/dist/theme/glyph-contract.js +34 -0
- package/dist/theme/glyph-contract.js.map +1 -0
- package/dist/theme/presets/rmx-01/glyphs.d.ts +2 -0
- package/dist/theme/presets/rmx-01/glyphs.js +252 -0
- package/dist/theme/presets/rmx-01/glyphs.js.map +1 -0
- package/dist/theme/presets/rmx-01/index.d.ts +2 -0
- package/dist/theme/presets/rmx-01/index.js +119 -0
- package/dist/theme/presets/rmx-01/index.js.map +1 -0
- package/dist/theme/runtime.d.ts +2 -0
- package/dist/theme/runtime.js +81 -0
- package/dist/theme/runtime.js.map +1 -0
- package/dist/theme/theme.d.ts +6 -0
- package/dist/theme/theme.js +5 -0
- package/dist/theme/theme.js.map +1 -0
- package/dist/utils/flash-attribute.d.ts +1 -0
- package/dist/utils/flash-attribute.js +11 -0
- package/dist/utils/flash-attribute.js.map +1 -0
- package/dist/utils/scroll-lock.d.ts +3 -0
- package/dist/utils/scroll-lock.js +69 -0
- package/dist/utils/scroll-lock.js.map +1 -0
- package/dist/utils/wait-for-css-transition.d.ts +1 -0
- package/dist/utils/wait-for-css-transition.js +58 -0
- package/dist/utils/wait-for-css-transition.js.map +1 -0
- package/dist/utils/wait.d.ts +1 -0
- package/dist/utils/wait.js +6 -0
- package/dist/utils/wait.js.map +1 -0
- package/package.json +125 -5
- package/src/animation/animate-layout-mixin.ts +266 -0
- package/src/animation/animate-mixins.ts +292 -0
- package/src/animation/index.ts +6 -0
- package/src/animation/spring.ts +299 -0
- package/src/animation/tween.ts +134 -0
- package/src/components/accordion/accordion.tsx +565 -0
- package/src/components/anchor/anchor.ts +904 -0
- package/src/components/breadcrumbs/breadcrumbs.tsx +124 -0
- package/src/components/button/README.md +44 -0
- package/src/components/button/button.tsx +188 -0
- package/src/components/combobox/README.md +145 -0
- package/src/components/combobox/combobox.tsx +1014 -0
- package/src/components/glyph/glyph.tsx +110 -0
- package/src/components/listbox/listbox.ts +447 -0
- package/src/components/menu/hover-aim.ts +428 -0
- package/src/components/menu/menu.tsx +1547 -0
- package/src/components/popover/README.md +122 -0
- package/src/components/popover/popover.ts +201 -0
- package/src/components/select/select.tsx +585 -0
- package/src/components/separator/separator.ts +19 -0
- package/src/components/tabs/README.md +105 -0
- package/src/components/tabs/tabs.tsx +499 -0
- package/src/index.ts +72 -0
- package/src/interactions/keydown/keydown.ts +14 -0
- package/src/interactions/outside-click/outside-click-mixin.ts +55 -0
- package/src/interactions/typeahead/typeahead-mixin.ts +89 -0
- package/src/jsx-runtime.ts +2 -0
- package/src/runtime/client-entries.ts +137 -0
- package/src/runtime/component.ts +402 -0
- package/src/runtime/create-element.ts +38 -0
- package/src/runtime/diff-dom.ts +404 -0
- package/src/runtime/diff-props.ts +209 -0
- package/src/runtime/document-state.ts +130 -0
- package/src/runtime/dom.ts +3971 -0
- package/src/runtime/error-event.ts +26 -0
- package/src/runtime/event-listeners.ts +171 -0
- package/src/runtime/frame.ts +1211 -0
- package/src/runtime/invariant.ts +31 -0
- package/src/runtime/jsx.ts +398 -0
- package/src/runtime/mixins/attrs-mixin.ts +35 -0
- package/src/runtime/mixins/link-mixin.ts +131 -0
- package/src/runtime/mixins/mixin.ts +908 -0
- package/src/runtime/mixins/on-mixin.ts +89 -0
- package/src/runtime/mixins/ref-mixin.ts +32 -0
- package/src/runtime/navigation.ts +136 -0
- package/src/runtime/reconcile.ts +1722 -0
- package/src/runtime/render.ts +101 -0
- package/src/runtime/run.ts +100 -0
- package/src/runtime/scheduler.ts +262 -0
- package/src/runtime/svg-attributes.ts +133 -0
- package/src/runtime/to-vnode.ts +50 -0
- package/src/runtime/typed-event-target.ts +67 -0
- package/src/runtime/vdom.ts +295 -0
- package/src/runtime/vnode.ts +137 -0
- package/src/server/stream.ts +1342 -0
- package/src/style/css-mixin.ts +82 -0
- package/src/style/index.ts +10 -0
- package/src/style/style.ts +312 -0
- package/src/style/stylesheet.ts +209 -0
- package/src/test/setup.ts +7 -0
- package/src/test/utils.ts +45 -0
- package/src/test.ts +2 -0
- package/src/theme/contract.ts +183 -0
- package/src/theme/glyph-contract.ts +57 -0
- package/src/theme/presets/rmx-01/glyphs.tsx +308 -0
- package/src/theme/presets/rmx-01/index.ts +121 -0
- package/src/theme/runtime.ts +116 -0
- package/src/theme/theme.ts +15 -0
- package/src/utils/flash-attribute.ts +11 -0
- package/src/utils/scroll-lock.ts +97 -0
- package/src/utils/wait-for-css-transition.ts +66 -0
- package/src/utils/wait.ts +5 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
const XLINK_NS = 'http://www.w3.org/1999/xlink';
|
|
2
|
+
const XML_NS = 'http://www.w3.org/XML/1998/namespace';
|
|
3
|
+
const CANONICAL_CAMEL_SVG_ATTRS = new Set([
|
|
4
|
+
'accentHeight',
|
|
5
|
+
'attributeName',
|
|
6
|
+
'attributeType',
|
|
7
|
+
'baseFrequency',
|
|
8
|
+
'baseProfile',
|
|
9
|
+
'calcMode',
|
|
10
|
+
'viewBox',
|
|
11
|
+
'preserveAspectRatio',
|
|
12
|
+
'externalResourcesRequired',
|
|
13
|
+
'filterRes',
|
|
14
|
+
'gradientUnits',
|
|
15
|
+
'gradientTransform',
|
|
16
|
+
'glyphRef',
|
|
17
|
+
'kernelMatrix',
|
|
18
|
+
'kernelUnitLength',
|
|
19
|
+
'keyPoints',
|
|
20
|
+
'keySplines',
|
|
21
|
+
'keyTimes',
|
|
22
|
+
'lengthAdjust',
|
|
23
|
+
'limitingConeAngle',
|
|
24
|
+
'markerHeight',
|
|
25
|
+
'patternUnits',
|
|
26
|
+
'patternContentUnits',
|
|
27
|
+
'patternTransform',
|
|
28
|
+
'markerWidth',
|
|
29
|
+
'numOctaves',
|
|
30
|
+
'pathLength',
|
|
31
|
+
'pointsAtX',
|
|
32
|
+
'pointsAtY',
|
|
33
|
+
'pointsAtZ',
|
|
34
|
+
'preserveAlpha',
|
|
35
|
+
'clipPathUnits',
|
|
36
|
+
'maskUnits',
|
|
37
|
+
'maskContentUnits',
|
|
38
|
+
'filterUnits',
|
|
39
|
+
'primitiveUnits',
|
|
40
|
+
'refX',
|
|
41
|
+
'refY',
|
|
42
|
+
'requiredExtensions',
|
|
43
|
+
'requiredFeatures',
|
|
44
|
+
'specularConstant',
|
|
45
|
+
'specularExponent',
|
|
46
|
+
'spreadMethod',
|
|
47
|
+
'startOffset',
|
|
48
|
+
'stdDeviation',
|
|
49
|
+
'stitchTiles',
|
|
50
|
+
'surfaceScale',
|
|
51
|
+
'systemLanguage',
|
|
52
|
+
'tableValues',
|
|
53
|
+
'targetX',
|
|
54
|
+
'targetY',
|
|
55
|
+
'textLength',
|
|
56
|
+
'viewTarget',
|
|
57
|
+
'xChannelSelector',
|
|
58
|
+
'yChannelSelector',
|
|
59
|
+
'zoomAndPan',
|
|
60
|
+
'edgeMode',
|
|
61
|
+
'diffuseConstant',
|
|
62
|
+
'markerUnits',
|
|
63
|
+
]);
|
|
64
|
+
const SVG_ATTR_ALIASES = new Map();
|
|
65
|
+
for (let attr of CANONICAL_CAMEL_SVG_ATTRS) {
|
|
66
|
+
SVG_ATTR_ALIASES.set(camelToKebab(attr), attr);
|
|
67
|
+
}
|
|
68
|
+
const NAMESPACED_SVG_ALIASES = new Map([
|
|
69
|
+
['xlinkHref', { ns: XLINK_NS, attr: 'xlink:href' }],
|
|
70
|
+
['xlink:href', { ns: XLINK_NS, attr: 'xlink:href' }],
|
|
71
|
+
['xlink-href', { ns: XLINK_NS, attr: 'xlink:href' }],
|
|
72
|
+
['xlinkActuate', { ns: XLINK_NS, attr: 'xlink:actuate' }],
|
|
73
|
+
['xlink:actuate', { ns: XLINK_NS, attr: 'xlink:actuate' }],
|
|
74
|
+
['xlink-actuate', { ns: XLINK_NS, attr: 'xlink:actuate' }],
|
|
75
|
+
['xlinkArcrole', { ns: XLINK_NS, attr: 'xlink:arcrole' }],
|
|
76
|
+
['xlink:arcrole', { ns: XLINK_NS, attr: 'xlink:arcrole' }],
|
|
77
|
+
['xlink-arcrole', { ns: XLINK_NS, attr: 'xlink:arcrole' }],
|
|
78
|
+
['xlinkRole', { ns: XLINK_NS, attr: 'xlink:role' }],
|
|
79
|
+
['xlink:role', { ns: XLINK_NS, attr: 'xlink:role' }],
|
|
80
|
+
['xlink-role', { ns: XLINK_NS, attr: 'xlink:role' }],
|
|
81
|
+
['xlinkShow', { ns: XLINK_NS, attr: 'xlink:show' }],
|
|
82
|
+
['xlink:show', { ns: XLINK_NS, attr: 'xlink:show' }],
|
|
83
|
+
['xlink-show', { ns: XLINK_NS, attr: 'xlink:show' }],
|
|
84
|
+
['xlinkTitle', { ns: XLINK_NS, attr: 'xlink:title' }],
|
|
85
|
+
['xlink:title', { ns: XLINK_NS, attr: 'xlink:title' }],
|
|
86
|
+
['xlink-title', { ns: XLINK_NS, attr: 'xlink:title' }],
|
|
87
|
+
['xlinkType', { ns: XLINK_NS, attr: 'xlink:type' }],
|
|
88
|
+
['xlink:type', { ns: XLINK_NS, attr: 'xlink:type' }],
|
|
89
|
+
['xlink-type', { ns: XLINK_NS, attr: 'xlink:type' }],
|
|
90
|
+
['xmlBase', { ns: XML_NS, attr: 'xml:base' }],
|
|
91
|
+
['xml:base', { ns: XML_NS, attr: 'xml:base' }],
|
|
92
|
+
['xml-base', { ns: XML_NS, attr: 'xml:base' }],
|
|
93
|
+
['xmlLang', { ns: XML_NS, attr: 'xml:lang' }],
|
|
94
|
+
['xml:lang', { ns: XML_NS, attr: 'xml:lang' }],
|
|
95
|
+
['xml-lang', { ns: XML_NS, attr: 'xml:lang' }],
|
|
96
|
+
['xmlSpace', { ns: XML_NS, attr: 'xml:space' }],
|
|
97
|
+
['xml:space', { ns: XML_NS, attr: 'xml:space' }],
|
|
98
|
+
['xml-space', { ns: XML_NS, attr: 'xml:space' }],
|
|
99
|
+
['xmlnsXlink', { attr: 'xmlns:xlink' }],
|
|
100
|
+
['xmlns:xlink', { attr: 'xmlns:xlink' }],
|
|
101
|
+
['xmlns-xlink', { attr: 'xmlns:xlink' }],
|
|
102
|
+
]);
|
|
103
|
+
export function normalizeSvgAttributeName(name) {
|
|
104
|
+
let alias = SVG_ATTR_ALIASES.get(name);
|
|
105
|
+
if (alias)
|
|
106
|
+
return alias;
|
|
107
|
+
if (CANONICAL_CAMEL_SVG_ATTRS.has(name))
|
|
108
|
+
return name;
|
|
109
|
+
return camelToKebab(name);
|
|
110
|
+
}
|
|
111
|
+
export function normalizeSvgAttribute(name) {
|
|
112
|
+
let namespaced = NAMESPACED_SVG_ALIASES.get(name);
|
|
113
|
+
if (namespaced) {
|
|
114
|
+
return namespaced;
|
|
115
|
+
}
|
|
116
|
+
return { attr: normalizeSvgAttributeName(name) };
|
|
117
|
+
}
|
|
118
|
+
function camelToKebab(input) {
|
|
119
|
+
return input
|
|
120
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
|
|
121
|
+
.replace(/_/g, '-')
|
|
122
|
+
.toLowerCase();
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=svg-attributes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-attributes.js","sourceRoot":"","sources":["../../src/runtime/svg-attributes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Fragment } from "./component.js";
|
|
2
|
+
import { invariant } from "./invariant.js";
|
|
3
|
+
import { isRemixElement, TEXT_NODE } from "./vnode.js";
|
|
4
|
+
function flatMapChildrenToVNodes(node) {
|
|
5
|
+
return 'children' in node.props
|
|
6
|
+
? Array.isArray(node.props.children)
|
|
7
|
+
? node.props.children.flat(Infinity).map(toVNode)
|
|
8
|
+
: [toVNode(node.props.children)]
|
|
9
|
+
: [];
|
|
10
|
+
}
|
|
11
|
+
function flattenRemixNodeArray(nodes, out = []) {
|
|
12
|
+
for (let child of nodes) {
|
|
13
|
+
if (Array.isArray(child)) {
|
|
14
|
+
flattenRemixNodeArray(child, out);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
out.push(child);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return out;
|
|
21
|
+
}
|
|
22
|
+
export function toVNode(node) {
|
|
23
|
+
if (node === null || node === undefined || typeof node === 'boolean') {
|
|
24
|
+
return { type: TEXT_NODE, _text: '' };
|
|
25
|
+
}
|
|
26
|
+
if (typeof node === 'string' || typeof node === 'number' || typeof node === 'bigint') {
|
|
27
|
+
return { type: TEXT_NODE, _text: String(node) };
|
|
28
|
+
}
|
|
29
|
+
if (Array.isArray(node)) {
|
|
30
|
+
let flatChildren = flattenRemixNodeArray(node);
|
|
31
|
+
return { type: Fragment, _children: flatChildren.map(toVNode) };
|
|
32
|
+
}
|
|
33
|
+
if (node.type === Fragment) {
|
|
34
|
+
return { type: Fragment, key: node.key, _children: flatMapChildrenToVNodes(node) };
|
|
35
|
+
}
|
|
36
|
+
if (isRemixElement(node)) {
|
|
37
|
+
// When innerHTML is set, ignore children
|
|
38
|
+
let children = node.props.innerHTML != null ? [] : flatMapChildrenToVNodes(node);
|
|
39
|
+
return { type: node.type, key: node.key, props: node.props, _children: children };
|
|
40
|
+
}
|
|
41
|
+
invariant(false, 'Unexpected RemixNode');
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=to-vnode.js.map
|
|
@@ -0,0 +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;AAE1C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAc,MAAM,YAAY,CAAA;AAElE,SAAS,uBAAuB,CAAC,IAAkB;IACjD,OAAO,UAAU,IAAI,IAAI,CAAC,KAAK;QAC7B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YACjD,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,EAAE,CAAA;AACR,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAkB,EAAE,MAAmB,EAAE;IACtE,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAe;IACrC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;QACrE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IACvC,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrF,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,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAC9C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAA;IACjE,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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An `EventTarget` subclass with typed event maps.
|
|
3
|
+
*/
|
|
4
|
+
export declare class TypedEventTarget<eventMap> extends EventTarget {
|
|
5
|
+
/**
|
|
6
|
+
* Phantom property that carries the event map type on instances.
|
|
7
|
+
*/
|
|
8
|
+
readonly __eventMap?: eventMap;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Interface surface for {@link TypedEventTarget} with typed listener overloads.
|
|
12
|
+
*/
|
|
13
|
+
export interface TypedEventTarget<eventMap> {
|
|
14
|
+
/**
|
|
15
|
+
* Adds a listener for a typed event name from the event map.
|
|
16
|
+
*
|
|
17
|
+
* @param type Event name to listen for.
|
|
18
|
+
* @param listener Listener to invoke when the event fires.
|
|
19
|
+
* @param options Listener registration options.
|
|
20
|
+
*/
|
|
21
|
+
addEventListener<type extends Extract<keyof eventMap, string>>(type: type, listener: TypedEventListener<eventMap>[type], options?: AddEventListenerOptions): void;
|
|
22
|
+
/**
|
|
23
|
+
* Adds a listener using the standard untyped `EventTarget` signature.
|
|
24
|
+
*
|
|
25
|
+
* @param type Event name to listen for.
|
|
26
|
+
* @param listener Listener to invoke when the event fires.
|
|
27
|
+
* @param options Listener registration options.
|
|
28
|
+
*/
|
|
29
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions): void;
|
|
30
|
+
/**
|
|
31
|
+
* Removes a listener for a typed event name from the event map.
|
|
32
|
+
*
|
|
33
|
+
* @param type Event name to stop listening for.
|
|
34
|
+
* @param listener Previously registered listener.
|
|
35
|
+
* @param options Listener removal options.
|
|
36
|
+
*/
|
|
37
|
+
removeEventListener<type extends Extract<keyof eventMap, string>>(type: type, listener: TypedEventListener<eventMap>[type], options?: EventListenerOptions): void;
|
|
38
|
+
/**
|
|
39
|
+
* Removes a listener using the standard untyped `EventTarget` signature.
|
|
40
|
+
*
|
|
41
|
+
* @param type Event name to stop listening for.
|
|
42
|
+
* @param listener Previously registered listener.
|
|
43
|
+
* @param options Listener removal options.
|
|
44
|
+
*/
|
|
45
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject | null, options?: EventListenerOptions): void;
|
|
46
|
+
}
|
|
47
|
+
type TypedEventListener<eventMap> = {
|
|
48
|
+
[key in keyof eventMap]: (event: eventMap[key]) => void;
|
|
49
|
+
};
|
|
50
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-event-target.js","sourceRoot":"","sources":["../../src/runtime/typed-event-target.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,gBAA2B,SAAQ,WAAW;CAK1D"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { FrameContent, FrameHandle } from './component.ts';
|
|
2
|
+
import type { RemixNode } from './jsx.ts';
|
|
3
|
+
import { type ComponentErrorEvent } from './error-event.ts';
|
|
4
|
+
import { createScheduler, type Scheduler } from './scheduler.ts';
|
|
5
|
+
import { diffVNodes } from './reconcile.ts';
|
|
6
|
+
import { toVNode } from './to-vnode.ts';
|
|
7
|
+
import { TypedEventTarget } from './typed-event-target.ts';
|
|
8
|
+
import { resetStyleState } from './diff-props.ts';
|
|
9
|
+
import type { StyleManager } from '../style/index.ts';
|
|
10
|
+
/**
|
|
11
|
+
* Events emitted by virtual roots.
|
|
12
|
+
*/
|
|
13
|
+
export type VirtualRootEventMap = {
|
|
14
|
+
error: ComponentErrorEvent;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Root controller returned by {@link createRoot} and {@link createRangeRoot}.
|
|
18
|
+
*/
|
|
19
|
+
export type VirtualRoot = TypedEventTarget<VirtualRootEventMap> & {
|
|
20
|
+
render: (element: RemixNode) => void;
|
|
21
|
+
dispose: () => void;
|
|
22
|
+
flush: () => void;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Options for creating a virtual DOM root with {@link createRoot} or {@link createRangeRoot}.
|
|
26
|
+
*/
|
|
27
|
+
export type VirtualRootOptions = {
|
|
28
|
+
frame?: FrameHandle;
|
|
29
|
+
scheduler?: Scheduler;
|
|
30
|
+
styleManager?: StyleManager;
|
|
31
|
+
frameInit?: {
|
|
32
|
+
src?: string;
|
|
33
|
+
resolveFrame: (src: string, signal?: AbortSignal, target?: string) => Promise<FrameContent> | FrameContent;
|
|
34
|
+
loadModule?: (moduleUrl: string, exportName: string) => Promise<Function> | Function;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export { createScheduler, type Scheduler };
|
|
38
|
+
export { diffVNodes, toVNode };
|
|
39
|
+
export { resetStyleState };
|
|
40
|
+
/**
|
|
41
|
+
* Creates a virtual root bounded by two DOM nodes.
|
|
42
|
+
*
|
|
43
|
+
* @param boundaries Start and end marker nodes that define the render region.
|
|
44
|
+
* @param options Root configuration.
|
|
45
|
+
* @returns A virtual root controller.
|
|
46
|
+
*/
|
|
47
|
+
export declare function createRangeRoot(boundaries: [Node, Node], options?: VirtualRootOptions): VirtualRoot;
|
|
48
|
+
/**
|
|
49
|
+
* Creates a virtual root for a host container element.
|
|
50
|
+
*
|
|
51
|
+
* @param container Host element to render into.
|
|
52
|
+
* @param options Root configuration.
|
|
53
|
+
* @returns A virtual root controller.
|
|
54
|
+
*/
|
|
55
|
+
export declare function createRoot(container: HTMLElement, options?: VirtualRootOptions): VirtualRoot;
|
|
@@ -0,0 +1,198 @@
|
|
|
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";
|
|
10
|
+
export { createScheduler };
|
|
11
|
+
export { diffVNodes, toVNode };
|
|
12
|
+
export { resetStyleState };
|
|
13
|
+
function getHydrationComponentIdFromRangeStart(start) {
|
|
14
|
+
if (!(start instanceof Comment))
|
|
15
|
+
return undefined;
|
|
16
|
+
let marker = start.data.trim();
|
|
17
|
+
if (!marker.startsWith('rmx:h:'))
|
|
18
|
+
return undefined;
|
|
19
|
+
let id = marker.slice('rmx:h:'.length);
|
|
20
|
+
return id.length > 0 ? id : undefined;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Creates a virtual root bounded by two DOM nodes.
|
|
24
|
+
*
|
|
25
|
+
* @param boundaries Start and end marker nodes that define the render region.
|
|
26
|
+
* @param options Root configuration.
|
|
27
|
+
* @returns A virtual root controller.
|
|
28
|
+
*/
|
|
29
|
+
export function createRangeRoot(boundaries, options = {}) {
|
|
30
|
+
let [start, end] = boundaries;
|
|
31
|
+
let vroot = null;
|
|
32
|
+
let styles = options.styleManager ?? defaultStyleManager;
|
|
33
|
+
let container = end.parentNode;
|
|
34
|
+
invariant(container, 'Expected parent node');
|
|
35
|
+
invariant(start.parentNode === container, 'Boundaries must share parent');
|
|
36
|
+
let parent = container;
|
|
37
|
+
let hydrationCursor = start.nextSibling;
|
|
38
|
+
let eventTarget = new TypedEventTarget();
|
|
39
|
+
let scheduler = options.scheduler ?? createScheduler(parent.ownerDocument ?? document, eventTarget, styles);
|
|
40
|
+
let frameStub = options.frame ??
|
|
41
|
+
createRootFrameHandle({
|
|
42
|
+
src: options.frameInit?.src,
|
|
43
|
+
resolveFrame: options.frameInit?.resolveFrame,
|
|
44
|
+
loadModule: options.frameInit?.loadModule,
|
|
45
|
+
errorTarget: eventTarget,
|
|
46
|
+
scheduler,
|
|
47
|
+
styleManager: styles,
|
|
48
|
+
});
|
|
49
|
+
let isErrorForwardingAttached = false;
|
|
50
|
+
function forwardDomError(event) {
|
|
51
|
+
eventTarget.dispatchEvent(createComponentErrorEvent(getComponentError(event)));
|
|
52
|
+
}
|
|
53
|
+
function attachDomErrorForwarding() {
|
|
54
|
+
if (isErrorForwardingAttached)
|
|
55
|
+
return;
|
|
56
|
+
parent.addEventListener('error', forwardDomError);
|
|
57
|
+
isErrorForwardingAttached = true;
|
|
58
|
+
}
|
|
59
|
+
function detachDomErrorForwarding() {
|
|
60
|
+
if (!isErrorForwardingAttached)
|
|
61
|
+
return;
|
|
62
|
+
parent.removeEventListener('error', forwardDomError);
|
|
63
|
+
isErrorForwardingAttached = false;
|
|
64
|
+
}
|
|
65
|
+
attachDomErrorForwarding();
|
|
66
|
+
return Object.assign(eventTarget, {
|
|
67
|
+
render(element) {
|
|
68
|
+
attachDomErrorForwarding();
|
|
69
|
+
let vnode = toVNode(element);
|
|
70
|
+
let vParent = {
|
|
71
|
+
type: ROOT_VNODE,
|
|
72
|
+
_svg: false,
|
|
73
|
+
_rangeStart: start,
|
|
74
|
+
_rangeEnd: end,
|
|
75
|
+
_pendingHydrationComponentId: getHydrationComponentIdFromRangeStart(start),
|
|
76
|
+
};
|
|
77
|
+
scheduler.enqueueWork([
|
|
78
|
+
() => {
|
|
79
|
+
diffVNodes(vroot, vnode, parent, frameStub, scheduler, styles, vParent, eventTarget, end, hydrationCursor);
|
|
80
|
+
vroot = vnode;
|
|
81
|
+
hydrationCursor = null;
|
|
82
|
+
},
|
|
83
|
+
]);
|
|
84
|
+
scheduler.dequeue();
|
|
85
|
+
},
|
|
86
|
+
dispose() {
|
|
87
|
+
detachDomErrorForwarding();
|
|
88
|
+
if (!vroot)
|
|
89
|
+
return;
|
|
90
|
+
let current = vroot;
|
|
91
|
+
vroot = null;
|
|
92
|
+
scheduler.enqueueWork([() => removeVNode(current, parent, scheduler, styles)]);
|
|
93
|
+
scheduler.dequeue();
|
|
94
|
+
},
|
|
95
|
+
flush() {
|
|
96
|
+
scheduler.dequeue();
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Creates a virtual root for a host container element.
|
|
102
|
+
*
|
|
103
|
+
* @param container Host element to render into.
|
|
104
|
+
* @param options Root configuration.
|
|
105
|
+
* @returns A virtual root controller.
|
|
106
|
+
*/
|
|
107
|
+
export function createRoot(container, options = {}) {
|
|
108
|
+
let vroot = null;
|
|
109
|
+
let styles = options.styleManager ?? defaultStyleManager;
|
|
110
|
+
let hydrationCursor = container.innerHTML.trim() !== '' ? container.firstChild : undefined;
|
|
111
|
+
let eventTarget = new TypedEventTarget();
|
|
112
|
+
let scheduler = options.scheduler ?? createScheduler(container.ownerDocument ?? document, eventTarget, styles);
|
|
113
|
+
let frameStub = options.frame ??
|
|
114
|
+
createRootFrameHandle({
|
|
115
|
+
src: options.frameInit?.src,
|
|
116
|
+
resolveFrame: options.frameInit?.resolveFrame,
|
|
117
|
+
loadModule: options.frameInit?.loadModule,
|
|
118
|
+
errorTarget: eventTarget,
|
|
119
|
+
scheduler,
|
|
120
|
+
styleManager: styles,
|
|
121
|
+
});
|
|
122
|
+
let isErrorForwardingAttached = false;
|
|
123
|
+
function forwardDomError(event) {
|
|
124
|
+
eventTarget.dispatchEvent(createComponentErrorEvent(getComponentError(event)));
|
|
125
|
+
}
|
|
126
|
+
function attachDomErrorForwarding() {
|
|
127
|
+
if (isErrorForwardingAttached)
|
|
128
|
+
return;
|
|
129
|
+
container.addEventListener('error', forwardDomError);
|
|
130
|
+
isErrorForwardingAttached = true;
|
|
131
|
+
}
|
|
132
|
+
function detachDomErrorForwarding() {
|
|
133
|
+
if (!isErrorForwardingAttached)
|
|
134
|
+
return;
|
|
135
|
+
container.removeEventListener('error', forwardDomError);
|
|
136
|
+
isErrorForwardingAttached = false;
|
|
137
|
+
}
|
|
138
|
+
attachDomErrorForwarding();
|
|
139
|
+
return Object.assign(eventTarget, {
|
|
140
|
+
render(element) {
|
|
141
|
+
attachDomErrorForwarding();
|
|
142
|
+
let vnode = toVNode(element);
|
|
143
|
+
let vParent = { type: ROOT_VNODE, _svg: false };
|
|
144
|
+
scheduler.enqueueWork([
|
|
145
|
+
() => {
|
|
146
|
+
diffVNodes(vroot, vnode, container, frameStub, scheduler, styles, vParent, eventTarget, undefined, hydrationCursor);
|
|
147
|
+
vroot = vnode;
|
|
148
|
+
hydrationCursor = undefined;
|
|
149
|
+
},
|
|
150
|
+
]);
|
|
151
|
+
scheduler.dequeue();
|
|
152
|
+
},
|
|
153
|
+
dispose() {
|
|
154
|
+
detachDomErrorForwarding();
|
|
155
|
+
if (!vroot)
|
|
156
|
+
return;
|
|
157
|
+
let current = vroot;
|
|
158
|
+
vroot = null;
|
|
159
|
+
scheduler.enqueueWork([() => removeVNode(current, container, scheduler, styles)]);
|
|
160
|
+
scheduler.dequeue();
|
|
161
|
+
},
|
|
162
|
+
flush() {
|
|
163
|
+
scheduler.dequeue();
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
function createRootFrameHandle(init) {
|
|
168
|
+
let resolveFrame = init.resolveFrame ??
|
|
169
|
+
(() => {
|
|
170
|
+
throw new Error('Cannot render <Frame /> without frame runtime. Use run() or pass frameInit to createRoot/createRangeRoot.');
|
|
171
|
+
});
|
|
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
|
+
},
|
|
192
|
+
});
|
|
193
|
+
let runtime = frame.$runtime;
|
|
194
|
+
if (runtime)
|
|
195
|
+
runtime.topFrame = frame;
|
|
196
|
+
return frame;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=vdom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vdom.js","sourceRoot":"","sources":["../../src/runtime/vdom.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { ComponentHandle, Component } from './component.ts';
|
|
2
|
+
import { Fragment, Frame } from './component.ts';
|
|
3
|
+
import type { ElementProps, RemixElement, RemixNode } from './jsx.ts';
|
|
4
|
+
export declare const TEXT_NODE: unique symbol;
|
|
5
|
+
export declare const ROOT_VNODE: unique symbol;
|
|
6
|
+
export type VNodeType = typeof ROOT_VNODE | string | Function | typeof TEXT_NODE | typeof Fragment | typeof Frame;
|
|
7
|
+
export type VNode<T extends VNodeType = VNodeType> = {
|
|
8
|
+
type: T;
|
|
9
|
+
props?: ElementProps;
|
|
10
|
+
_mixedProps?: ElementProps;
|
|
11
|
+
key?: string;
|
|
12
|
+
_parent?: VNode;
|
|
13
|
+
_children?: VNode[];
|
|
14
|
+
_dom?: unknown;
|
|
15
|
+
_controller?: AbortController;
|
|
16
|
+
_mixState?: unknown;
|
|
17
|
+
_controlledState?: unknown;
|
|
18
|
+
_svg?: boolean;
|
|
19
|
+
_rangeStart?: Node;
|
|
20
|
+
_rangeEnd?: Node;
|
|
21
|
+
_pendingHydrationComponentId?: string;
|
|
22
|
+
_frameInstance?: unknown;
|
|
23
|
+
_frameFallbackRoot?: {
|
|
24
|
+
render: (element: RemixNode) => void;
|
|
25
|
+
dispose: () => void;
|
|
26
|
+
};
|
|
27
|
+
_frameResolveToken?: number;
|
|
28
|
+
_frameResolveController?: AbortController;
|
|
29
|
+
_frameResolved?: boolean;
|
|
30
|
+
_index?: number;
|
|
31
|
+
_flags?: number;
|
|
32
|
+
_text?: string;
|
|
33
|
+
_handle?: ComponentHandle;
|
|
34
|
+
_id?: string;
|
|
35
|
+
_content?: VNode;
|
|
36
|
+
_persistedByMixins?: boolean;
|
|
37
|
+
_persistedParentByMixins?: ParentNode;
|
|
38
|
+
_persistedRemovalToken?: number;
|
|
39
|
+
};
|
|
40
|
+
export type FragmentNode = VNode & {
|
|
41
|
+
type: typeof Fragment;
|
|
42
|
+
_children: VNode[];
|
|
43
|
+
};
|
|
44
|
+
export type TextNode = VNode & {
|
|
45
|
+
type: typeof TEXT_NODE;
|
|
46
|
+
_text: string;
|
|
47
|
+
};
|
|
48
|
+
export type CommittedTextNode = TextNode & {
|
|
49
|
+
_dom: Text;
|
|
50
|
+
};
|
|
51
|
+
export type HostNode = VNode & {
|
|
52
|
+
type: string;
|
|
53
|
+
props: ElementProps;
|
|
54
|
+
_children: VNode[];
|
|
55
|
+
};
|
|
56
|
+
export type CommittedHostNode = HostNode & {
|
|
57
|
+
_dom: Element;
|
|
58
|
+
_controller?: AbortController;
|
|
59
|
+
};
|
|
60
|
+
export type ComponentNode = VNode & {
|
|
61
|
+
type: Function;
|
|
62
|
+
props: ElementProps;
|
|
63
|
+
_handle: ComponentHandle;
|
|
64
|
+
};
|
|
65
|
+
export type CommittedComponentNode = VNode & {
|
|
66
|
+
type: Function;
|
|
67
|
+
props: ElementProps;
|
|
68
|
+
_content: VNode;
|
|
69
|
+
_handle: ComponentHandle;
|
|
70
|
+
};
|
|
71
|
+
export declare function isFragmentNode(node: VNode): node is FragmentNode;
|
|
72
|
+
export declare function isTextNode(node: VNode): node is TextNode;
|
|
73
|
+
export declare function isCommittedTextNode(node: VNode): node is CommittedTextNode;
|
|
74
|
+
export declare function isHostNode(node: VNode): node is HostNode;
|
|
75
|
+
export declare function isCommittedHostNode(node: VNode): node is CommittedHostNode;
|
|
76
|
+
export declare function isComponentNode(node: VNode): node is ComponentNode;
|
|
77
|
+
export declare function isCommittedComponentNode(node: VNode): node is CommittedComponentNode;
|
|
78
|
+
export declare function isRemixElement(node: RemixNode): node is RemixElement;
|
|
79
|
+
export declare function findContextFromAncestry(node: VNode, type: Component): unknown;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Fragment, Frame } from "./component.js";
|
|
2
|
+
export const TEXT_NODE = Symbol('TEXT_NODE');
|
|
3
|
+
export const ROOT_VNODE = Symbol('ROOT_VNODE');
|
|
4
|
+
export function isFragmentNode(node) {
|
|
5
|
+
return node.type === Fragment;
|
|
6
|
+
}
|
|
7
|
+
export function isTextNode(node) {
|
|
8
|
+
return node.type === TEXT_NODE;
|
|
9
|
+
}
|
|
10
|
+
export function isCommittedTextNode(node) {
|
|
11
|
+
return isTextNode(node) && node._dom instanceof Text;
|
|
12
|
+
}
|
|
13
|
+
export function isHostNode(node) {
|
|
14
|
+
return typeof node.type === 'string';
|
|
15
|
+
}
|
|
16
|
+
export function isCommittedHostNode(node) {
|
|
17
|
+
return isHostNode(node) && node._dom instanceof Element;
|
|
18
|
+
}
|
|
19
|
+
export function isComponentNode(node) {
|
|
20
|
+
return typeof node.type === 'function' && node.type !== Frame;
|
|
21
|
+
}
|
|
22
|
+
export function isCommittedComponentNode(node) {
|
|
23
|
+
return isComponentNode(node) && node._content !== undefined;
|
|
24
|
+
}
|
|
25
|
+
export function isRemixElement(node) {
|
|
26
|
+
return typeof node === 'object' && node !== null && '$rmx' in node;
|
|
27
|
+
}
|
|
28
|
+
export function findContextFromAncestry(node, type) {
|
|
29
|
+
let current = node;
|
|
30
|
+
while (current) {
|
|
31
|
+
if (current.type === type && isComponentNode(current)) {
|
|
32
|
+
return current._handle.getContextValue();
|
|
33
|
+
}
|
|
34
|
+
current = current._parent;
|
|
35
|
+
}
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=vnode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vnode.js","sourceRoot":"","sources":["../../src/runtime/vnode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAGhD,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AA0F9C,MAAM,UAAU,cAAc,CAAC,IAAW;IACxC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAW;IACpC,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAW;IAC7C,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,YAAY,IAAI,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAW;IACpC,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAW;IAC7C,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,YAAY,OAAO,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAW;IACzC,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAW;IAClD,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAA;AAC7D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAe;IAC5C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,CAAA;AACpE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAW,EAAE,IAAe;IAClE,IAAI,OAAO,GAAsB,IAAI,CAAA;IACrC,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAA;QAC1C,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC3B,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
|