@fluixi/dom 1.0.0-alpha.83 → 1.0.0-alpha.85
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/cdn/dom-client.cjs +1427 -1
- package/dist/cdn/dom-client.d.ts +2 -2
- package/dist/cdn/dom-client.global.js +2 -1
- package/dist/cdn/dom-client.js +3 -3
- package/dist/cdn/dom-client.mjs +1430 -1
- package/dist/cdn/dom.cjs +3127 -1
- package/dist/cdn/dom.d.ts +2 -2
- package/dist/cdn/dom.global.js +2 -1
- package/dist/cdn/dom.js +4 -4
- package/dist/cdn/dom.mjs +3133 -1
- package/dist/index.cjs +3155 -1
- package/dist/index.js +2 -2
- package/dist/index.mjs +3149 -1
- package/dist/lib/component/index.cjs +128 -1
- package/dist/lib/component/index.mjs +105 -1
- package/dist/lib/component/modifiers.cjs +126 -1
- package/dist/lib/component/modifiers.d.ts +12 -0
- package/dist/lib/component/modifiers.d.ts.map +1 -1
- package/dist/lib/component/modifiers.js +12 -84
- package/dist/lib/component/modifiers.mjs +105 -1
- package/dist/lib/dom/delegate.cjs +60 -1
- package/dist/lib/dom/delegate.js +1 -1
- package/dist/lib/dom/delegate.mjs +39 -1
- package/dist/lib/dom/dynamic-element.cjs +949 -1
- package/dist/lib/dom/dynamic-element.d.ts +3 -3
- package/dist/lib/dom/dynamic-element.js +2 -2
- package/dist/lib/dom/dynamic-element.mjs +928 -1
- package/dist/lib/dom/hydration-state.cjs +93 -1
- package/dist/lib/dom/hydration-state.d.ts +1 -1
- package/dist/lib/dom/hydration-state.js +1 -1
- package/dist/lib/dom/hydration-state.mjs +72 -1
- package/dist/lib/dom/hydration.cjs +685 -1
- package/dist/lib/dom/hydration.js +8 -8
- package/dist/lib/dom/hydration.mjs +664 -1
- package/dist/lib/dom/index.cjs +2040 -1
- package/dist/lib/dom/index.js +1 -1
- package/dist/lib/dom/index.mjs +2020 -1
- package/dist/lib/dom/integration.cjs +71 -1
- package/dist/lib/dom/integration.js +3 -3
- package/dist/lib/dom/integration.mjs +51 -1
- package/dist/lib/dom/island.cjs +790 -1
- package/dist/lib/dom/island.d.ts +1 -1
- package/dist/lib/dom/island.js +11 -11
- package/dist/lib/dom/island.mjs +769 -1
- package/dist/lib/dom/runtime.cjs +1432 -1
- package/dist/lib/dom/runtime.d.ts +60 -17
- package/dist/lib/dom/runtime.d.ts.map +1 -1
- package/dist/lib/dom/runtime.js +122 -79
- package/dist/lib/dom/runtime.mjs +1414 -1
- package/dist/lib/dom/server/fx-data.cjs +53 -1
- package/dist/lib/dom/server/fx-data.d.ts +5 -5
- package/dist/lib/dom/server/fx-data.js +6 -6
- package/dist/lib/dom/server/fx-data.mjs +32 -1
- package/dist/lib/dom/server/host.cjs +66 -1
- package/dist/lib/dom/server/host.d.ts +6 -0
- package/dist/lib/dom/server/host.d.ts.map +1 -1
- package/dist/lib/dom/server/host.js +7 -1
- package/dist/lib/dom/server/host.mjs +45 -1
- package/dist/lib/dom/server/index.cjs +759 -1
- package/dist/lib/dom/server/index.d.ts +1 -1
- package/dist/lib/dom/server/index.js +1 -1
- package/dist/lib/dom/server/index.mjs +743 -1
- package/dist/lib/dom/server/nodes.cjs +302 -1
- package/dist/lib/dom/server/nodes.d.ts +2 -2
- package/dist/lib/dom/server/nodes.d.ts.map +1 -1
- package/dist/lib/dom/server/nodes.js +4 -4
- package/dist/lib/dom/server/nodes.mjs +279 -1
- package/dist/lib/dom/server/parse-template.cjs +395 -1
- package/dist/lib/dom/server/parse-template.d.ts +1 -1
- package/dist/lib/dom/server/parse-template.js +4 -4
- package/dist/lib/dom/server/parse-template.mjs +372 -1
- package/dist/lib/dom/server/render.cjs +691 -1
- package/dist/lib/dom/server/render.d.ts +9 -1
- package/dist/lib/dom/server/render.d.ts.map +1 -1
- package/dist/lib/dom/server/render.js +23 -15
- package/dist/lib/dom/server/render.mjs +677 -1
- package/dist/lib/dom/server/request-context.cjs +110 -1
- package/dist/lib/dom/server/request-context.d.ts +29 -9
- package/dist/lib/dom/server/request-context.d.ts.map +1 -1
- package/dist/lib/dom/server/request-context.js +28 -8
- package/dist/lib/dom/server/request-context.mjs +89 -1
- package/dist/lib/dom/server/serialize.cjs +187 -1
- package/dist/lib/dom/server/serialize.js +3 -3
- package/dist/lib/dom/server/serialize.mjs +164 -1
- package/dist/lib/dom/server-renderer.cjs +760 -1
- package/dist/lib/dom/server-renderer.js +1 -1
- package/dist/lib/dom/server-renderer.mjs +745 -1
- package/dist/lib/dom/types.cjs +18 -1
- package/dist/lib/dom/utils.cjs +381 -1
- package/dist/lib/dom/utils.d.ts +1 -88
- package/dist/lib/dom/utils.d.ts.map +1 -1
- package/dist/lib/dom/utils.js +2 -99
- package/dist/lib/dom/utils.mjs +361 -1
- package/dist/lib/dom/versions.cjs +60 -1
- package/dist/lib/dom/versions.d.ts +3 -3
- package/dist/lib/dom/versions.d.ts.map +1 -1
- package/dist/lib/dom/versions.js +17 -5
- package/dist/lib/dom/versions.mjs +37 -1
- package/dist/lib/element/attributes.cjs +19 -1
- package/dist/lib/element/attributes.d.ts +7 -7
- package/dist/lib/element/attributes.js +1 -1
- package/dist/lib/element/attributes.mjs +1 -0
- package/dist/lib/element/index.cjs +19 -1
- package/dist/lib/element/index.mjs +1 -0
- package/dist/lib/element/types.cjs +18 -1
- package/dist/lib/element/types.d.ts +4 -5
- package/dist/lib/element/types.d.ts.map +1 -1
- package/dist/lib/element/types.js +0 -1
- package/dist/lib/flow/class-map.cjs +38 -1
- package/dist/lib/flow/class-map.d.ts +3 -3
- package/dist/lib/flow/class-map.js +2 -2
- package/dist/lib/flow/class-map.mjs +17 -1
- package/dist/lib/flow/client-only.cjs +57 -1
- package/dist/lib/flow/client-only.d.ts +4 -4
- package/dist/lib/flow/client-only.js +3 -3
- package/dist/lib/flow/client-only.mjs +36 -1
- package/dist/lib/flow/dynamic.cjs +53 -1
- package/dist/lib/flow/dynamic.d.ts +2 -2
- package/dist/lib/flow/dynamic.js +3 -3
- package/dist/lib/flow/dynamic.mjs +32 -1
- package/dist/lib/flow/error-boundary.cjs +43 -1
- package/dist/lib/flow/error-boundary.d.ts +2 -2
- package/dist/lib/flow/error-boundary.js +3 -3
- package/dist/lib/flow/error-boundary.mjs +22 -1
- package/dist/lib/flow/for.cjs +66 -1
- package/dist/lib/flow/for.d.ts +9 -9
- package/dist/lib/flow/for.d.ts.map +1 -1
- package/dist/lib/flow/for.js +2 -2
- package/dist/lib/flow/for.mjs +45 -1
- package/dist/lib/flow/index-flow.cjs +67 -1
- package/dist/lib/flow/index-flow.d.ts +5 -5
- package/dist/lib/flow/index-flow.js +4 -4
- package/dist/lib/flow/index-flow.mjs +46 -1
- package/dist/lib/flow/index.cjs +805 -1
- package/dist/lib/flow/index.mjs +792 -1
- package/dist/lib/flow/portal.cjs +538 -1
- package/dist/lib/flow/portal.mjs +519 -1
- package/dist/lib/flow/show.cjs +81 -1
- package/dist/lib/flow/show.d.ts +1 -1
- package/dist/lib/flow/show.d.ts.map +1 -1
- package/dist/lib/flow/show.js +4 -115
- package/dist/lib/flow/show.mjs +67 -1
- package/dist/lib/flow/style-map.cjs +43 -1
- package/dist/lib/flow/style-map.d.ts +3 -3
- package/dist/lib/flow/style-map.js +3 -3
- package/dist/lib/flow/style-map.mjs +22 -1
- package/dist/lib/flow/switch.cjs +91 -1
- package/dist/lib/flow/switch.d.ts +3 -3
- package/dist/lib/flow/switch.d.ts.map +1 -1
- package/dist/lib/flow/switch.js +6 -6
- package/dist/lib/flow/switch.mjs +70 -1
- package/dist/lib/flow/utils.cjs +44 -1
- package/dist/lib/flow/utils.d.ts +1 -1
- package/dist/lib/flow/utils.js +1 -1
- package/dist/lib/flow/utils.mjs +23 -1
- package/dist/lib/html.cjs +32 -1
- package/dist/lib/html.d.ts +6 -6
- package/dist/lib/html.js +5 -5
- package/dist/lib/html.mjs +11 -1
- package/dist/lib/index.cjs +3104 -1
- package/dist/lib/index.d.ts +0 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +2 -3
- package/dist/lib/index.mjs +3097 -1
- package/dist/lib/shared/types.cjs +18 -1
- package/dist/lib/shared/types.d.ts +8 -8
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/version.generated.cjs +26 -1
- package/dist/version.generated.d.ts +1 -1
- package/dist/version.generated.js +2 -2
- package/dist/version.generated.mjs +5 -1
- package/package.json +7 -6
- package/dist/lib/jsx/control-flow/flow.cjs +0 -1
- package/dist/lib/jsx/control-flow/flow.d.ts +0 -2
- package/dist/lib/jsx/control-flow/flow.d.ts.map +0 -1
- package/dist/lib/jsx/control-flow/flow.js +0 -627
- package/dist/lib/jsx/control-flow/flow.mjs +0 -0
- package/dist/lib/jsx/control-flow/for-flow.cjs +0 -1
- package/dist/lib/jsx/control-flow/for-flow.d.ts +0 -2
- package/dist/lib/jsx/control-flow/for-flow.d.ts.map +0 -1
- package/dist/lib/jsx/control-flow/for-flow.js +0 -1
- package/dist/lib/jsx/control-flow/for-flow.mjs +0 -0
package/dist/lib/dom/island.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export type IslandRegistry = Record<string, (props: any) => any>;
|
|
|
16
16
|
/**
|
|
17
17
|
* Client entry for an islands page: find every `<fluixi-island>`, look its component up
|
|
18
18
|
* in `registry` by name, parse its props, and hydrate that subtree in place. The rest of
|
|
19
|
-
* the page stays static (never hydrated
|
|
19
|
+
* the page stays static (never hydrated -> no reactivity wired, no extra JS executed).
|
|
20
20
|
* Call this instead of `startClient(App)`.
|
|
21
21
|
*/
|
|
22
22
|
export declare function hydrateIslands(registry: IslandRegistry): void;
|
package/dist/lib/dom/island.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Islands
|
|
3
|
-
* hydrates
|
|
2
|
+
* Islands: partial hydration. By default Fluixi hydrates the whole app; an island
|
|
3
|
+
* hydrates only its own interactive subtree, leaving the rest of the page as inert
|
|
4
4
|
* static server HTML (less client JS, faster TTI).
|
|
5
5
|
*
|
|
6
6
|
* // server-rendered page
|
|
7
7
|
* <Island name="Counter" component={Counter} props={{ start: 0 }} />
|
|
8
8
|
*
|
|
9
|
-
* // client entry
|
|
9
|
+
* // client entry: instead of startClient(App):
|
|
10
10
|
* hydrateIslands({ Counter });
|
|
11
11
|
*
|
|
12
12
|
* The server wraps the component in a `<fluixi-island name props>` boundary (props as a
|
|
13
13
|
* JSON attribute). On the client, `hydrateIslands` finds those boundaries, looks each up
|
|
14
14
|
* in the registry, and hydrates just that subtree in place.
|
|
15
15
|
*
|
|
16
|
-
* Note: islands are self-contained interactivity
|
|
16
|
+
* Note: islands are self-contained interactivity: pass data via `props`. Resources read
|
|
17
17
|
* inside an island ARE seeded per-island from `__FX_DATA__`: the server namespaces each
|
|
18
|
-
* island's resource ids (`Counter#0:r0`,
|
|
18
|
+
* island's resource ids (`Counter#0:r0`, ...) and the client reproduces that namespace when
|
|
19
19
|
* it hydrates the island, so the island's resources don't refetch. (A resource created
|
|
20
|
-
* lazily in a data WATERFALL
|
|
20
|
+
* lazily in a data WATERFALL, after the first resolves during the async drain, falls
|
|
21
21
|
* outside the synchronous island scope and refetches on the client; pass such data via
|
|
22
22
|
* `props` instead.)
|
|
23
23
|
*/
|
|
@@ -41,7 +41,7 @@ export function Island(props) {
|
|
|
41
41
|
// On the server, scope this island's resource ids to a per-island namespace
|
|
42
42
|
// (`name#N` in render order). The render-once model runs the insert effect
|
|
43
43
|
// synchronously, so resources created while the island's subtree renders are
|
|
44
|
-
// numbered within the scope
|
|
44
|
+
// numbered within the scope, and the client reproduces the same ids per island.
|
|
45
45
|
const ctx = isServer() ? getRequestContext() : undefined;
|
|
46
46
|
if (ctx) {
|
|
47
47
|
const ns = ctx.nextIslandNamespace(islandName);
|
|
@@ -65,7 +65,7 @@ function ensureDisplayContents() {
|
|
|
65
65
|
/**
|
|
66
66
|
* Client entry for an islands page: find every `<fluixi-island>`, look its component up
|
|
67
67
|
* in `registry` by name, parse its props, and hydrate that subtree in place. The rest of
|
|
68
|
-
* the page stays static (never hydrated
|
|
68
|
+
* the page stays static (never hydrated -> no reactivity wired, no extra JS executed).
|
|
69
69
|
* Call this instead of `startClient(App)`.
|
|
70
70
|
*/
|
|
71
71
|
export function hydrateIslands(registry) {
|
|
@@ -73,7 +73,7 @@ export function hydrateIslands(registry) {
|
|
|
73
73
|
return;
|
|
74
74
|
ensureDisplayContents();
|
|
75
75
|
const els = document.querySelectorAll(TAG);
|
|
76
|
-
// Per-name occurrence counter, in document order
|
|
76
|
+
// Per-name occurrence counter, in document order: mirrors the server's render-order
|
|
77
77
|
// `nextIslandNamespace`, so island `name#N` here maps to the same namespace the server
|
|
78
78
|
// used when it numbered that island's resource ids.
|
|
79
79
|
const counts = new Map();
|
|
@@ -84,7 +84,7 @@ export function hydrateIslands(registry) {
|
|
|
84
84
|
const Comp = registry[name];
|
|
85
85
|
if (!Comp) {
|
|
86
86
|
if (typeof process === 'undefined' || process.env?.NODE_ENV !== 'production') {
|
|
87
|
-
console.warn(`[fluixi] island "${name}" has no component in the registry
|
|
87
|
+
console.warn(`[fluixi] island "${name}" has no component in the registry, left static.`);
|
|
88
88
|
}
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
@@ -93,7 +93,7 @@ export function hydrateIslands(registry) {
|
|
|
93
93
|
props = JSON.parse(el.getAttribute('props') || '{}');
|
|
94
94
|
}
|
|
95
95
|
catch {
|
|
96
|
-
/* malformed props
|
|
96
|
+
/* malformed props -> hydrate with none */
|
|
97
97
|
}
|
|
98
98
|
hydrate(() => Comp(props), el, { resourceNamespace: `${name}#${occ}` });
|
|
99
99
|
});
|