fibrae 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atom-utils.d.ts +52 -0
- package/dist/atom-utils.js +64 -0
- package/dist/atom-utils.js.map +1 -0
- package/dist/cli/build.js +2 -2
- package/dist/cli/build.js.map +1 -1
- package/dist/cli/html.d.ts +6 -0
- package/dist/cli/html.js +20 -26
- package/dist/cli/html.js.map +1 -1
- package/dist/cli/vite-plugin.js +41 -2
- package/dist/cli/vite-plugin.js.map +1 -1
- package/dist/components.d.ts +3 -3
- package/dist/components.js +3 -1
- package/dist/components.js.map +1 -1
- package/dist/core.js +37 -10
- package/dist/core.js.map +1 -1
- package/dist/dom.d.ts +22 -3
- package/dist/dom.js +100 -5
- package/dist/dom.js.map +1 -1
- package/dist/fiber-commit.d.ts +2 -0
- package/dist/fiber-commit.js +179 -40
- package/dist/fiber-commit.js.map +1 -1
- package/dist/fiber-render.js +13 -27
- package/dist/fiber-render.js.map +1 -1
- package/dist/fiber-update.d.ts +1 -1
- package/dist/fiber-update.js +33 -12
- package/dist/fiber-update.js.map +1 -1
- package/dist/h.d.ts +65 -10
- package/dist/h.js +98 -22
- package/dist/h.js.map +1 -1
- package/dist/head.d.ts +64 -0
- package/dist/head.js +257 -0
- package/dist/head.js.map +1 -0
- package/dist/hydration-dev.d.ts +24 -0
- package/dist/hydration-dev.js +138 -0
- package/dist/hydration-dev.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/jsx-runtime/index.d.ts +288 -8
- package/dist/jsx-runtime/index.js +2 -0
- package/dist/jsx-runtime/index.js.map +1 -1
- package/dist/live/client.js +4 -4
- package/dist/live/client.js.map +1 -1
- package/dist/live/server.js.map +1 -1
- package/dist/live/sse-stream.js +2 -2
- package/dist/live/sse-stream.js.map +1 -1
- package/dist/mdx/index.d.ts +125 -0
- package/dist/mdx/index.js +137 -0
- package/dist/mdx/index.js.map +1 -0
- package/dist/mdx/parse.d.ts +42 -0
- package/dist/mdx/parse.js +147 -0
- package/dist/mdx/parse.js.map +1 -0
- package/dist/mdx/render.d.ts +24 -0
- package/dist/mdx/render.js +261 -0
- package/dist/mdx/render.js.map +1 -0
- package/dist/router/Form.d.ts +90 -0
- package/dist/router/Form.js +166 -0
- package/dist/router/Form.js.map +1 -0
- package/dist/router/History.d.ts +2 -2
- package/dist/router/History.js.map +1 -1
- package/dist/router/Link.d.ts +27 -32
- package/dist/router/Link.js +56 -98
- package/dist/router/Link.js.map +1 -1
- package/dist/router/Navigator.d.ts +49 -44
- package/dist/router/Navigator.js +57 -104
- package/dist/router/Navigator.js.map +1 -1
- package/dist/router/Route.d.ts +8 -4
- package/dist/router/Route.js +10 -2
- package/dist/router/Route.js.map +1 -1
- package/dist/router/Router.d.ts +10 -10
- package/dist/router/Router.js +38 -23
- package/dist/router/Router.js.map +1 -1
- package/dist/router/RouterBuilder.d.ts +69 -6
- package/dist/router/RouterBuilder.js +23 -0
- package/dist/router/RouterBuilder.js.map +1 -1
- package/dist/router/RouterOutlet.js +63 -45
- package/dist/router/RouterOutlet.js.map +1 -1
- package/dist/router/index.d.ts +10 -3
- package/dist/router/index.js +5 -2
- package/dist/router/index.js.map +1 -1
- package/dist/router/register.d.ts +37 -0
- package/dist/router/register.js +18 -0
- package/dist/router/register.js.map +1 -0
- package/dist/router/utils.d.ts +2 -2
- package/dist/runtime.d.ts +1 -1
- package/dist/server.js +7 -3
- package/dist/server.js.map +1 -1
- package/dist/shared.d.ts +36 -6
- package/dist/shared.js +12 -2
- package/dist/shared.js.map +1 -1
- package/dist/tracking.d.ts +3 -2
- package/dist/tracking.js +4 -1
- package/dist/tracking.js.map +1 -1
- package/dist/transition.d.ts +51 -0
- package/dist/transition.js +46 -0
- package/dist/transition.js.map +1 -0
- package/package.json +16 -3
package/dist/dom.js
CHANGED
|
@@ -51,6 +51,34 @@ export const isProperty = (key) => key !== "children" &&
|
|
|
51
51
|
key !== "key" &&
|
|
52
52
|
key !== "dangerouslySetInnerHTML" &&
|
|
53
53
|
!isEvent(key);
|
|
54
|
+
/**
|
|
55
|
+
* Check whether an event prop name is camelCase (e.g. "onClick" vs "onclick").
|
|
56
|
+
* Any uppercase letter after "on" signals camelCase.
|
|
57
|
+
*/
|
|
58
|
+
const isCamelCaseEvent = (key) => /^on[A-Z]/.test(key);
|
|
59
|
+
/**
|
|
60
|
+
* Deduplicate event props that map to the same DOM event type.
|
|
61
|
+
*
|
|
62
|
+
* Both `onclick` and `onClick` lower-case to event type `click`. If both
|
|
63
|
+
* are present, the camelCase variant wins (more idiomatic in JSX).
|
|
64
|
+
* Returns an array of [propName, handler] pairs with at most one entry per
|
|
65
|
+
* event type.
|
|
66
|
+
*/
|
|
67
|
+
export const normalizeEventProps = (props) => {
|
|
68
|
+
// eventType -> [propName, handler] — camelCase entries overwrite lowercase
|
|
69
|
+
const byType = new Map();
|
|
70
|
+
for (const key of Object.keys(props)) {
|
|
71
|
+
if (!isEvent(key) || typeof props[key] !== "function")
|
|
72
|
+
continue;
|
|
73
|
+
const eventType = key.toLowerCase().substring(2);
|
|
74
|
+
const existing = byType.get(eventType);
|
|
75
|
+
// If no existing entry, or new entry is camelCase (preferred), set it
|
|
76
|
+
if (!existing || isCamelCaseEvent(key)) {
|
|
77
|
+
byType.set(eventType, [key, props[key]]);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return Array.from(byType.values());
|
|
81
|
+
};
|
|
54
82
|
const unitlessProperties = new Set([
|
|
55
83
|
"animationIterationCount",
|
|
56
84
|
"boxFlex",
|
|
@@ -78,7 +106,76 @@ const unitlessProperties = new Set([
|
|
|
78
106
|
"zoom",
|
|
79
107
|
]);
|
|
80
108
|
/**
|
|
81
|
-
*
|
|
109
|
+
* SVG namespace URI for createElementNS
|
|
110
|
+
*/
|
|
111
|
+
export const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
|
|
112
|
+
/**
|
|
113
|
+
* Tags that must be created with SVG namespace.
|
|
114
|
+
* Derived from SVGElementTagNameMap minus tags that overlap with HTMLElementTagNameMap.
|
|
115
|
+
*/
|
|
116
|
+
export const SVG_TAGS = new Set([
|
|
117
|
+
"svg",
|
|
118
|
+
"animate",
|
|
119
|
+
"animateMotion",
|
|
120
|
+
"animateTransform",
|
|
121
|
+
"circle",
|
|
122
|
+
"clipPath",
|
|
123
|
+
"defs",
|
|
124
|
+
"desc",
|
|
125
|
+
"ellipse",
|
|
126
|
+
"feBlend",
|
|
127
|
+
"feColorMatrix",
|
|
128
|
+
"feComponentTransfer",
|
|
129
|
+
"feComposite",
|
|
130
|
+
"feConvolveMatrix",
|
|
131
|
+
"feDiffuseLighting",
|
|
132
|
+
"feDisplacementMap",
|
|
133
|
+
"feDistantLight",
|
|
134
|
+
"feDropShadow",
|
|
135
|
+
"feFlood",
|
|
136
|
+
"feFuncA",
|
|
137
|
+
"feFuncB",
|
|
138
|
+
"feFuncG",
|
|
139
|
+
"feFuncR",
|
|
140
|
+
"feGaussianBlur",
|
|
141
|
+
"feImage",
|
|
142
|
+
"feMerge",
|
|
143
|
+
"feMergeNode",
|
|
144
|
+
"feMorphology",
|
|
145
|
+
"feOffset",
|
|
146
|
+
"fePointLight",
|
|
147
|
+
"feSpecularLighting",
|
|
148
|
+
"feSpotLight",
|
|
149
|
+
"feTile",
|
|
150
|
+
"feTurbulence",
|
|
151
|
+
"filter",
|
|
152
|
+
"foreignObject",
|
|
153
|
+
"g",
|
|
154
|
+
"image",
|
|
155
|
+
"line",
|
|
156
|
+
"linearGradient",
|
|
157
|
+
"marker",
|
|
158
|
+
"mask",
|
|
159
|
+
"metadata",
|
|
160
|
+
"mpath",
|
|
161
|
+
"path",
|
|
162
|
+
"pattern",
|
|
163
|
+
"polygon",
|
|
164
|
+
"polyline",
|
|
165
|
+
"radialGradient",
|
|
166
|
+
"rect",
|
|
167
|
+
"set",
|
|
168
|
+
"stop",
|
|
169
|
+
"symbol",
|
|
170
|
+
"text",
|
|
171
|
+
"textPath",
|
|
172
|
+
"tspan",
|
|
173
|
+
"use",
|
|
174
|
+
"view",
|
|
175
|
+
]);
|
|
176
|
+
/**
|
|
177
|
+
* Set a DOM property using the appropriate method.
|
|
178
|
+
* Works for both HTML and SVG elements.
|
|
82
179
|
*/
|
|
83
180
|
export const setDomProperty = (el, name, value) => {
|
|
84
181
|
if (name === "style") {
|
|
@@ -173,14 +270,12 @@ export const createEventWrapper = (handler, eventType, runtime, onError) => (eve
|
|
|
173
270
|
export const attachEventListeners = (el, props, runtime, onError, listenerStore) => {
|
|
174
271
|
const store = listenerStore;
|
|
175
272
|
const stored = store?.get(el) ?? {};
|
|
176
|
-
|
|
177
|
-
.filter(([key, handler]) => isEvent(key) && typeof handler === "function")
|
|
178
|
-
.forEach(([key, handler]) => {
|
|
273
|
+
for (const [key, handler] of normalizeEventProps(props)) {
|
|
179
274
|
const eventType = key.toLowerCase().substring(2);
|
|
180
275
|
const wrapper = createEventWrapper(handler, eventType, runtime, onError);
|
|
181
276
|
el.addEventListener(eventType, wrapper);
|
|
182
277
|
stored[eventType] = wrapper;
|
|
183
|
-
}
|
|
278
|
+
}
|
|
184
279
|
store?.set(el, stored);
|
|
185
280
|
};
|
|
186
281
|
//# sourceMappingURL=dom.js.map
|
package/dist/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAG1B;IACF,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,UAAU;IACjB,YAAY,EAAE,UAAU;IACxB,cAAc,EAAE,UAAU;IAC1B,oEAAoE;IACpE,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,kBAAkB;IAC1B,QAAQ,EAAE,kBAAkB;IAC5B,KAAK,EAAE,kBAAkB;IACzB,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,kBAAkB;IAC5B,QAAQ,EAAE,kBAAkB;IAC5B,QAAQ,EAAE,kBAAkB;IAC5B,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,kBAAkB;IAC5B,OAAO,EAAE,kBAAkB;IAC3B,KAAK,EAAE,kBAAkB;IACzB,wCAAwC;IACxC,QAAQ,EAAE,kBAAkB;IAC5B,SAAS,EAAE,kBAAkB;IAC7B,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE,kBAAkB;IAC9B,cAAc,EAAE,kBAAkB;IAClC,eAAe,EAAE,kBAAkB;IACnC,WAAW,EAAE,kBAAkB;IAC/B,4BAA4B;IAC5B,QAAQ,EAAE,kBAAkB;IAC5B,SAAS,EAAE,kBAAkB;IAC7B,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE,kBAAkB;IAC9B,cAAc,EAAE,kBAAkB;IAClC,eAAe,EAAE,kBAAkB;IACnC,WAAW,EAAE,kBAAkB;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CACxC,GAAG,KAAK,UAAU;IAClB,GAAG,KAAK,KAAK;IACb,GAAG,KAAK,KAAK;IACb,GAAG,KAAK,yBAAyB;IACjC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEhB,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,yBAAyB;IACzB,SAAS;IACT,cAAc;IACd,iBAAiB;IACjB,aAAa;IACb,aAAa;IACb,MAAM;IACN,UAAU;IACV,cAAc;IACd,YAAY;IACZ,cAAc;IACd,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,WAAW;IACX,YAAY;IACZ,SAAS;IACT,OAAO;IACP,SAAS;IACT,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,MAAM;CACP,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}
|
package/dist/fiber-commit.d.ts
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
import * as Effect from "effect/Effect";
|
|
11
11
|
import type { Fiber } from "./shared.js";
|
|
12
12
|
import { FibraeRuntime } from "./runtime.js";
|
|
13
|
+
/** Set a ref (object or function) to a DOM node, or null on cleanup. */
|
|
14
|
+
export declare const setRef: (ref: unknown, value: Node | null) => void;
|
|
13
15
|
export declare const createDom: (fiber: Fiber, runtime: FibraeRuntime) => Effect.Effect<Node, never, never>;
|
|
14
16
|
export declare const isNew: (prev: {
|
|
15
17
|
[key: string]: unknown;
|
package/dist/fiber-commit.js
CHANGED
|
@@ -13,12 +13,132 @@ import * as Scope from "effect/Scope";
|
|
|
13
13
|
import * as Ref from "effect/Ref";
|
|
14
14
|
import * as Exit from "effect/Exit";
|
|
15
15
|
import * as Deferred from "effect/Deferred";
|
|
16
|
-
import {
|
|
16
|
+
import { isProperty } from "./shared.js";
|
|
17
17
|
import { FibraeRuntime } from "./runtime.js";
|
|
18
|
-
import { setDomProperty, createEventWrapper } from "./dom.js";
|
|
18
|
+
import { setDomProperty, createEventWrapper, normalizeEventProps, SVG_NAMESPACE, SVG_TAGS, } from "./dom.js";
|
|
19
19
|
import { findDomParent } from "./fiber-tree.js";
|
|
20
20
|
import { handleFiberError } from "./fiber-boundary.js";
|
|
21
21
|
// =============================================================================
|
|
22
|
+
// DOM Positioning
|
|
23
|
+
// =============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Get the first DOM node from a fiber, descending into children for
|
|
26
|
+
* function components that don't have their own DOM node.
|
|
27
|
+
*/
|
|
28
|
+
const getFirstDomNode = (fiber) => {
|
|
29
|
+
if (Option.isSome(fiber.dom))
|
|
30
|
+
return fiber.dom.value;
|
|
31
|
+
let child = fiber.child;
|
|
32
|
+
while (Option.isSome(child)) {
|
|
33
|
+
const dom = getFirstDomNode(child.value);
|
|
34
|
+
if (dom)
|
|
35
|
+
return dom;
|
|
36
|
+
child = child.value.sibling;
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Collect all direct DOM descendants of a fiber in tree order.
|
|
42
|
+
* Descends through non-DOM fibers (function components, fragments)
|
|
43
|
+
* but stops at DOM nodes (those are children of that DOM node, not ours).
|
|
44
|
+
*/
|
|
45
|
+
const collectChildDomNodes = (fiber) => {
|
|
46
|
+
const result = [];
|
|
47
|
+
const walk = (f) => {
|
|
48
|
+
if (Option.isSome(f.dom)) {
|
|
49
|
+
result.push(f.dom.value);
|
|
50
|
+
return; // Don't descend — nested DOM nodes belong to this element
|
|
51
|
+
}
|
|
52
|
+
let child = f.child;
|
|
53
|
+
while (Option.isSome(child)) {
|
|
54
|
+
walk(child.value);
|
|
55
|
+
child = child.value.sibling;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
// Walk all children of the given fiber
|
|
59
|
+
let child = fiber.child;
|
|
60
|
+
while (Option.isSome(child)) {
|
|
61
|
+
walk(child.value);
|
|
62
|
+
child = child.value.sibling;
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Find the first DOM node that should come after this fiber in the DOM.
|
|
68
|
+
*
|
|
69
|
+
* Walks the sibling chain looking for a fiber with a DOM node. If no sibling
|
|
70
|
+
* has one, walks up to the parent (only through non-DOM fibers like function
|
|
71
|
+
* components and fragments) and continues from the parent's siblings. Stops
|
|
72
|
+
* when hitting a fiber that owns a DOM node (that's a different DOM parent).
|
|
73
|
+
*
|
|
74
|
+
* Returns null when no subsequent sibling has a DOM node (insertBefore with
|
|
75
|
+
* null ref is equivalent to appendChild).
|
|
76
|
+
*/
|
|
77
|
+
const findNextSiblingDom = (fiber) => {
|
|
78
|
+
let current = fiber;
|
|
79
|
+
while (current) {
|
|
80
|
+
let sibling = current.sibling;
|
|
81
|
+
while (Option.isSome(sibling)) {
|
|
82
|
+
const dom = getFirstDomNode(sibling.value);
|
|
83
|
+
if (dom)
|
|
84
|
+
return dom;
|
|
85
|
+
sibling = sibling.value.sibling;
|
|
86
|
+
}
|
|
87
|
+
// Walk up through non-DOM parents (function components, fragments)
|
|
88
|
+
// Stop at fibers with DOM nodes — those are different DOM parents
|
|
89
|
+
const parent = Option.getOrUndefined(current.parent);
|
|
90
|
+
if (!parent || Option.isSome(parent.dom))
|
|
91
|
+
break;
|
|
92
|
+
current = parent;
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Check whether any child fiber in the sibling chain has a key prop.
|
|
98
|
+
*/
|
|
99
|
+
const hasKeyedChildren = (fiber) => {
|
|
100
|
+
let child = fiber.child;
|
|
101
|
+
while (Option.isSome(child)) {
|
|
102
|
+
if (child.value.props.key != null)
|
|
103
|
+
return true;
|
|
104
|
+
child = child.value.sibling;
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Reorder DOM children to match fiber order.
|
|
110
|
+
*
|
|
111
|
+
* After all child subtrees are committed (props updated, new nodes inserted,
|
|
112
|
+
* deletions processed), the DOM children may be out of order when keyed
|
|
113
|
+
* elements have been rearranged. This function walks the child fiber chain
|
|
114
|
+
* and ensures the DOM children match the expected order.
|
|
115
|
+
*
|
|
116
|
+
* Only performs actual DOM mutations for out-of-order nodes.
|
|
117
|
+
*/
|
|
118
|
+
const reorderChildren = (domParent, parentFiber) => {
|
|
119
|
+
const expectedDoms = collectChildDomNodes(parentFiber);
|
|
120
|
+
const childNodes = domParent.childNodes;
|
|
121
|
+
for (let i = 0; i < expectedDoms.length; i++) {
|
|
122
|
+
const expected = expectedDoms[i];
|
|
123
|
+
if (childNodes[i] !== expected) {
|
|
124
|
+
// Insert before the node currently at this position, or append
|
|
125
|
+
domParent.insertBefore(expected, childNodes[i] || null);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
// =============================================================================
|
|
130
|
+
// Ref Handling
|
|
131
|
+
// =============================================================================
|
|
132
|
+
/** Set a ref (object or function) to a DOM node, or null on cleanup. */
|
|
133
|
+
export const setRef = (ref, value) => {
|
|
134
|
+
if (typeof ref === "function") {
|
|
135
|
+
ref(value);
|
|
136
|
+
}
|
|
137
|
+
else if (ref && typeof ref === "object" && "current" in ref) {
|
|
138
|
+
ref.current = value;
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
// =============================================================================
|
|
22
142
|
// Create DOM
|
|
23
143
|
// =============================================================================
|
|
24
144
|
export const createDom = (fiber, runtime) => Effect.gen(function* () {
|
|
@@ -28,16 +148,17 @@ export const createDom = (fiber, runtime) => Effect.gen(function* () {
|
|
|
28
148
|
if (typeof type !== "string") {
|
|
29
149
|
return Effect.die("createDom called on function component");
|
|
30
150
|
}
|
|
31
|
-
const node = type === "TEXT_ELEMENT"
|
|
151
|
+
const node = type === "TEXT_ELEMENT"
|
|
152
|
+
? document.createTextNode("")
|
|
153
|
+
: SVG_TAGS.has(type)
|
|
154
|
+
? document.createElementNS(SVG_NAMESPACE, type)
|
|
155
|
+
: document.createElement(type);
|
|
32
156
|
return Effect.succeed(node);
|
|
33
157
|
},
|
|
34
158
|
});
|
|
35
159
|
yield* updateDom(dom, {}, fiber.props, fiber, runtime);
|
|
36
|
-
// Handle ref
|
|
37
|
-
|
|
38
|
-
if (ref && typeof ref === "object" && "current" in ref) {
|
|
39
|
-
ref.current = dom;
|
|
40
|
-
}
|
|
160
|
+
// Handle ref (object or function)
|
|
161
|
+
setRef(fiber.props.ref, dom);
|
|
41
162
|
return dom;
|
|
42
163
|
});
|
|
43
164
|
// =============================================================================
|
|
@@ -58,30 +179,32 @@ export const updateDom = (dom, prevProps, nextProps, ownerFiber, runtime) => Eff
|
|
|
58
179
|
const stateSnapshot = yield* Ref.get(stateRef);
|
|
59
180
|
const el = element;
|
|
60
181
|
const stored = stateSnapshot.listenerStore.get(el) ?? {};
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
182
|
+
// Normalize event props so onClick and onclick don't create duplicate
|
|
183
|
+
// listeners for the same DOM event type. CamelCase wins when both exist.
|
|
184
|
+
const prevEvents = new Map(normalizeEventProps(prevProps).map(([k, v]) => [k.toLowerCase().substring(2), v]));
|
|
185
|
+
const nextEvents = new Map(normalizeEventProps(nextProps).map(([k, v]) => [k.toLowerCase().substring(2), v]));
|
|
186
|
+
// Remove old event listeners (removed or changed)
|
|
187
|
+
for (const [eventType, handler] of prevEvents) {
|
|
188
|
+
if (!nextEvents.has(eventType) || nextEvents.get(eventType) !== handler) {
|
|
189
|
+
const wrapper = stored[eventType];
|
|
190
|
+
if (wrapper) {
|
|
191
|
+
el.removeEventListener(eventType, wrapper);
|
|
192
|
+
delete stored[eventType];
|
|
193
|
+
}
|
|
71
194
|
}
|
|
72
|
-
}
|
|
195
|
+
}
|
|
73
196
|
// Remove properties that were in prevProps but not in nextProps
|
|
74
197
|
Object.keys(prevProps)
|
|
75
198
|
.filter(isProperty)
|
|
76
199
|
.filter((key) => !(key in nextProps))
|
|
77
200
|
.forEach((name) => {
|
|
78
|
-
if (el instanceof HTMLElement) {
|
|
201
|
+
if (el instanceof HTMLElement || el instanceof SVGElement) {
|
|
79
202
|
setDomProperty(el, name, null);
|
|
80
203
|
}
|
|
81
204
|
});
|
|
82
205
|
// Handle dangerouslySetInnerHTML
|
|
83
206
|
if (nextProps.dangerouslySetInnerHTML != null) {
|
|
84
|
-
if (el instanceof HTMLElement &&
|
|
207
|
+
if ((el instanceof HTMLElement || el instanceof SVGElement) &&
|
|
85
208
|
nextProps.dangerouslySetInnerHTML !== prevProps.dangerouslySetInnerHTML) {
|
|
86
209
|
el.innerHTML = String(nextProps.dangerouslySetInnerHTML);
|
|
87
210
|
}
|
|
@@ -91,25 +214,22 @@ export const updateDom = (dom, prevProps, nextProps, ownerFiber, runtime) => Eff
|
|
|
91
214
|
.filter(isProperty)
|
|
92
215
|
.filter(isNew(prevProps, nextProps))
|
|
93
216
|
.forEach((name) => {
|
|
94
|
-
if (el instanceof HTMLElement) {
|
|
217
|
+
if (el instanceof HTMLElement || el instanceof SVGElement) {
|
|
95
218
|
setDomProperty(el, name, nextProps[name]);
|
|
96
219
|
}
|
|
97
220
|
});
|
|
98
|
-
// Add new event listeners
|
|
99
|
-
|
|
100
|
-
.
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
el.addEventListener(eventType, wrapper);
|
|
111
|
-
stored[eventType] = wrapper;
|
|
112
|
-
});
|
|
221
|
+
// Add new event listeners (new or changed)
|
|
222
|
+
for (const [eventType, handler] of nextEvents) {
|
|
223
|
+
if (!prevEvents.has(eventType) || prevEvents.get(eventType) !== handler) {
|
|
224
|
+
const wrapper = createEventWrapper(handler, eventType, runtime, ownerFiber ? (error) => handleFiberError(ownerFiber, error) : undefined);
|
|
225
|
+
const existing = stored[eventType];
|
|
226
|
+
if (existing) {
|
|
227
|
+
el.removeEventListener(eventType, existing);
|
|
228
|
+
}
|
|
229
|
+
el.addEventListener(eventType, wrapper);
|
|
230
|
+
stored[eventType] = wrapper;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
113
233
|
stateSnapshot.listenerStore.set(el, stored);
|
|
114
234
|
});
|
|
115
235
|
// =============================================================================
|
|
@@ -127,6 +247,7 @@ export const deleteFiber = (fiber) => Effect.gen(function* () {
|
|
|
127
247
|
});
|
|
128
248
|
export const commitDeletion = (fiber, domParent) => Option.match(fiber.dom, {
|
|
129
249
|
onSome: (dom) => Effect.sync(() => {
|
|
250
|
+
setRef(fiber.props.ref, null);
|
|
130
251
|
domParent.removeChild(dom);
|
|
131
252
|
}),
|
|
132
253
|
onNone: () =>
|
|
@@ -165,7 +286,7 @@ export const commitRoot = (runtime) => Effect.gen(function* () {
|
|
|
165
286
|
}));
|
|
166
287
|
});
|
|
167
288
|
export const commitWork = (fiber, runtime) => Effect.gen(function* () {
|
|
168
|
-
//
|
|
289
|
+
// Function component / fragment — no DOM node of its own.
|
|
169
290
|
if (Option.isNone(fiber.dom)) {
|
|
170
291
|
if (Option.isSome(fiber.child)) {
|
|
171
292
|
yield* commitWork(fiber.child.value, runtime);
|
|
@@ -201,9 +322,11 @@ export const commitWork = (fiber, runtime) => Effect.gen(function* () {
|
|
|
201
322
|
// Process effect tag
|
|
202
323
|
const tag = fiber.effectTag.pipe(Option.getOrUndefined);
|
|
203
324
|
if (tag === "PLACEMENT") {
|
|
204
|
-
//
|
|
325
|
+
// Insert DOM node at the correct position
|
|
205
326
|
if (Option.isSome(fiber.dom)) {
|
|
206
|
-
|
|
327
|
+
const refNode = findNextSiblingDom(fiber);
|
|
328
|
+
// refNode must be a direct child of domParent for insertBefore
|
|
329
|
+
domParent.insertBefore(fiber.dom.value, refNode && refNode.parentNode === domParent ? refNode : null);
|
|
207
330
|
}
|
|
208
331
|
// Signal first child committed (for Suspense)
|
|
209
332
|
const deferred = fiber.parent.pipe(Option.flatMap((p) => p.childFirstCommitDeferred), Option.getOrUndefined);
|
|
@@ -218,6 +341,15 @@ export const commitWork = (fiber, runtime) => Effect.gen(function* () {
|
|
|
218
341
|
const prevProps = fiber.alternate.pipe(Option.map((alt) => alt.props), Option.getOrElse(() => ({})));
|
|
219
342
|
if (Option.isSome(fiber.dom)) {
|
|
220
343
|
yield* updateDom(fiber.dom.value, prevProps, fiber.props, fiber, runtime);
|
|
344
|
+
// Handle ref changes: clean up old ref, apply new ref
|
|
345
|
+
const prevRef = prevProps.ref;
|
|
346
|
+
const nextRef = fiber.props.ref;
|
|
347
|
+
if (prevRef !== nextRef) {
|
|
348
|
+
if (prevRef)
|
|
349
|
+
setRef(prevRef, null);
|
|
350
|
+
if (nextRef)
|
|
351
|
+
setRef(nextRef, fiber.dom.value);
|
|
352
|
+
}
|
|
221
353
|
}
|
|
222
354
|
}
|
|
223
355
|
else if (tag === "DELETION") {
|
|
@@ -228,6 +360,13 @@ export const commitWork = (fiber, runtime) => Effect.gen(function* () {
|
|
|
228
360
|
if (Option.isSome(fiber.child)) {
|
|
229
361
|
yield* commitWork(fiber.child.value, runtime);
|
|
230
362
|
}
|
|
363
|
+
// After all children are committed, reorder DOM children if this fiber
|
|
364
|
+
// has keyed children. This batch approach is correct because it runs
|
|
365
|
+
// after all child insertions/deletions/updates, avoiding the cascading
|
|
366
|
+
// DOM mutation issue of per-fiber sequential insertBefore.
|
|
367
|
+
if (Option.isSome(fiber.dom) && hasKeyedChildren(fiber)) {
|
|
368
|
+
reorderChildren(fiber.dom.value, fiber);
|
|
369
|
+
}
|
|
231
370
|
// After children are committed, apply deferred properties.
|
|
232
371
|
// <select> value must be set after <option> children exist in the DOM.
|
|
233
372
|
if (Option.isSome(fiber.dom)) {
|
package/dist/fiber-commit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fiber-commit.js","sourceRoot":"","sources":["../src/fiber-commit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fiber-commit.js","sourceRoot":"","sources":["../src/fiber-commit.ts"],"names":[],"mappings":"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"}
|
package/dist/fiber-render.js
CHANGED
|
@@ -25,7 +25,8 @@ import {} from "./live/atom.js";
|
|
|
25
25
|
import { createFiber, getComponentScopeService, linkFibersAsSiblings } from "./fiber-tree.js";
|
|
26
26
|
import { handleFiberError } from "./fiber-boundary.js";
|
|
27
27
|
import { performUnitOfWork, resubscribeFiber, subscribeComponentStream, subscribeFiberAtoms, activateLiveAtoms, reconcileChildren, } from "./fiber-update.js";
|
|
28
|
-
import { commitRoot } from "./fiber-commit.js";
|
|
28
|
+
import { commitRoot, setRef } from "./fiber-commit.js";
|
|
29
|
+
import { checkTagMismatch, checkTextMismatch, checkAttributeMismatches } from "./hydration-dev.js";
|
|
29
30
|
// =============================================================================
|
|
30
31
|
// Work Loop
|
|
31
32
|
// =============================================================================
|
|
@@ -222,25 +223,8 @@ const hydrateChildren = (parentFiber, vElements, startCursor, runtime) => Effect
|
|
|
222
223
|
* Returns the created fiber and the next DOM cursor position.
|
|
223
224
|
*/
|
|
224
225
|
const hydrateElement = (parentFiber, vElement, domNode, runtime) => Effect.gen(function* () {
|
|
225
|
-
//
|
|
226
|
-
|
|
227
|
-
vElement.type !== "TEXT_ELEMENT" &&
|
|
228
|
-
vElement.type !== "FRAGMENT" &&
|
|
229
|
-
vElement.type !== "SUSPENSE" &&
|
|
230
|
-
vElement.type !== "BOUNDARY") {
|
|
231
|
-
if (domNode.nodeType === Node.ELEMENT_NODE) {
|
|
232
|
-
const expected = vElement.type.toUpperCase();
|
|
233
|
-
const actual = domNode.tagName;
|
|
234
|
-
if (expected !== actual) {
|
|
235
|
-
yield* Effect.logError(`Hydration mismatch: expected <${vElement.type}> but found <${actual.toLowerCase()}>. ` +
|
|
236
|
-
`SSR and client component trees differ.`);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
else if (domNode.nodeType === Node.TEXT_NODE) {
|
|
240
|
-
yield* Effect.logError(`Hydration mismatch: expected <${vElement.type}> but found text node "${domNode.textContent?.substring(0, 30)}". ` +
|
|
241
|
-
`SSR and client component trees differ.`);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
226
|
+
// Dev-only: detect hydration mismatches (tag name, text, attributes)
|
|
227
|
+
yield* checkTagMismatch(vElement, domNode);
|
|
244
228
|
const fiber = createFiber(Option.some(vElement.type), vElement.props, Option.some(parentFiber), Option.none(), Option.none());
|
|
245
229
|
let nextCursor;
|
|
246
230
|
if (typeof vElement.type === "function") {
|
|
@@ -249,6 +233,7 @@ const hydrateElement = (parentFiber, vElement, domNode, runtime) => Effect.gen(f
|
|
|
249
233
|
}
|
|
250
234
|
else if (vElement.type === "TEXT_ELEMENT") {
|
|
251
235
|
// Text node - adopt the DOM text node
|
|
236
|
+
yield* checkTextMismatch(vElement, domNode);
|
|
252
237
|
fiber.dom = Option.some(domNode);
|
|
253
238
|
nextCursor = getNextHydratableSibling(domNode);
|
|
254
239
|
}
|
|
@@ -326,6 +311,7 @@ const hydrateElement = (parentFiber, vElement, domNode, runtime) => Effect.gen(f
|
|
|
326
311
|
}
|
|
327
312
|
else {
|
|
328
313
|
// Host element - adopt DOM node and hydrate children
|
|
314
|
+
yield* checkAttributeMismatches(vElement, domNode);
|
|
329
315
|
const el = domNode;
|
|
330
316
|
fiber.dom = Option.some(el);
|
|
331
317
|
// Inherit renderContext from parent fiber (function components capture it during render)
|
|
@@ -335,11 +321,8 @@ const hydrateElement = (parentFiber, vElement, domNode, runtime) => Effect.gen(f
|
|
|
335
321
|
// Attach event listeners with listenerStore tracking for proper cleanup on re-render
|
|
336
322
|
const stateSnapshot = yield* Ref.get(runtime.fiberState);
|
|
337
323
|
attachEventListeners(el, vElement.props, runtime, (cause) => handleFiberError(fiber, cause), stateSnapshot.listenerStore);
|
|
338
|
-
// Handle ref
|
|
339
|
-
|
|
340
|
-
if (ref && typeof ref === "object" && "current" in ref) {
|
|
341
|
-
ref.current = el;
|
|
342
|
-
}
|
|
324
|
+
// Handle ref (object or function)
|
|
325
|
+
setRef(vElement.props.ref, el);
|
|
343
326
|
// Hydrate children using cursor-based walking
|
|
344
327
|
const firstChildCursor = getFirstHydratableChild(el);
|
|
345
328
|
yield* hydrateChildren(fiber, vElement.props.children || [], firstChildCursor, runtime);
|
|
@@ -379,10 +362,13 @@ const hydrateFunctionComponent = (fiber, vElement, domNode, runtime) => Effect.g
|
|
|
379
362
|
const firstValueDeferred = yield* subscribeComponentStream(stream, fiberRef, componentScopeService.scope);
|
|
380
363
|
// Wait for first value
|
|
381
364
|
const childVElement = yield* Deferred.await(firstValueDeferred);
|
|
382
|
-
fiber.latestStreamValue = Option.some(childVElement);
|
|
365
|
+
fiber.latestStreamValue = childVElement === null ? Option.none() : Option.some(childVElement);
|
|
383
366
|
// Hydrate the child VElement against DOM node
|
|
384
367
|
// Function components render output directly to DOM (no wrapper)
|
|
385
|
-
|
|
368
|
+
// null = render nothing — skip hydration of children
|
|
369
|
+
const nextCursor = childVElement === null
|
|
370
|
+
? Option.some(domNode)
|
|
371
|
+
: yield* hydrateChildren(fiber, [childVElement], Option.some(domNode), runtime);
|
|
386
372
|
// Signal mounted after subtree hydrates
|
|
387
373
|
yield* Deferred.succeed(componentScopeService.mounted, undefined);
|
|
388
374
|
// Subscribe to atom changes
|