@lynx-js/react 0.121.0 → 0.121.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/CHANGELOG.md +34 -0
- package/package.json +5 -5
- package/runtime/lazy/element-template-import.js +73 -0
- package/runtime/lazy/import.js +4 -0
- package/runtime/lazy/target.js +23 -0
- package/runtime/lib/core/commit-context.d.ts +8 -0
- package/runtime/lib/core/commit-context.js +18 -0
- package/runtime/lib/core/commit-context.js.map +1 -0
- package/runtime/lib/{snapshot/legacy-react-runtime/index.d.ts → core/compat/legacy-react-runtime.d.ts} +4 -4
- package/runtime/lib/{snapshot/legacy-react-runtime/index.js → core/compat/legacy-react-runtime.js} +6 -6
- package/runtime/lib/core/compat/legacy-react-runtime.js.map +1 -0
- package/runtime/lib/{snapshot → core}/compat/lynxComponent.d.ts +2 -1
- package/runtime/lib/{snapshot → core}/compat/lynxComponent.js +11 -5
- package/runtime/lib/core/compat/lynxComponent.js.map +1 -0
- package/runtime/lib/core/component.d.ts +2 -0
- package/runtime/lib/core/component.js +79 -0
- package/runtime/lib/core/component.js.map +1 -0
- package/runtime/lib/core/forceRootRender.d.ts +7 -0
- package/runtime/lib/core/forceRootRender.js +40 -0
- package/runtime/lib/core/forceRootRender.js.map +1 -0
- package/runtime/lib/core/globalProps.d.ts +31 -0
- package/runtime/lib/core/globalProps.js +55 -0
- package/runtime/lib/core/globalProps.js.map +1 -0
- package/runtime/lib/core/hooks/useLynxGlobalEventListener.js +1 -1
- package/runtime/lib/core/hooks/useLynxGlobalEventListener.js.map +1 -1
- package/runtime/lib/{snapshot/compat → core}/initData.d.ts +1 -1
- package/runtime/lib/{snapshot/compat → core}/initData.js +4 -5
- package/runtime/lib/core/initData.js.map +1 -0
- package/runtime/lib/{snapshot/lynx/dynamic-js.js → core/lynx/dynamic-import.js} +1 -1
- package/runtime/lib/core/lynx/dynamic-import.js.map +1 -0
- package/runtime/lib/core/lynx/lazy-bundle.js.map +1 -0
- package/runtime/lib/core/lynx/runtime-backend.d.ts +5 -0
- package/runtime/lib/core/lynx/runtime-backend.js +20 -0
- package/runtime/lib/core/lynx/runtime-backend.js.map +1 -0
- package/runtime/lib/core/lynx-data-processors.d.ts +2 -0
- package/runtime/lib/core/lynx-data-processors.js +53 -0
- package/runtime/lib/core/lynx-data-processors.js.map +1 -0
- package/runtime/lib/core/lynx-page-data.d.ts +1 -0
- package/runtime/lib/core/lynx-page-data.js +14 -0
- package/runtime/lib/core/lynx-page-data.js.map +1 -0
- package/runtime/lib/core/lynx-update-data.d.ts +11 -0
- package/runtime/lib/core/lynx-update-data.js +21 -0
- package/runtime/lib/core/lynx-update-data.js.map +1 -0
- package/runtime/lib/core/performance.d.ts +30 -0
- package/runtime/lib/core/performance.js +145 -0
- package/runtime/lib/core/performance.js.map +1 -0
- package/runtime/lib/core/ref.d.ts +37 -0
- package/runtime/lib/core/ref.js +108 -0
- package/runtime/lib/core/ref.js.map +1 -0
- package/runtime/lib/core/reload-version.d.ts +2 -0
- package/runtime/lib/{snapshot/lifecycle/pass.js → core/reload-version.js} +4 -5
- package/runtime/lib/core/reload-version.js.map +1 -0
- package/runtime/lib/element-template/background/attr-slots.d.ts +6 -1
- package/runtime/lib/element-template/background/attr-slots.js +35 -2
- package/runtime/lib/element-template/background/attr-slots.js.map +1 -1
- package/runtime/lib/element-template/background/commit-context.d.ts +3 -3
- package/runtime/lib/element-template/background/commit-context.js +15 -18
- package/runtime/lib/element-template/background/commit-context.js.map +1 -1
- package/runtime/lib/element-template/background/commit-hook.d.ts +1 -1
- package/runtime/lib/element-template/background/commit-hook.js +68 -43
- package/runtime/lib/element-template/background/commit-hook.js.map +1 -1
- package/runtime/lib/element-template/background/destroy.js +9 -6
- package/runtime/lib/element-template/background/destroy.js.map +1 -1
- package/runtime/lib/element-template/background/document.js +5 -5
- package/runtime/lib/element-template/background/document.js.map +1 -1
- package/runtime/lib/element-template/background/hydrate.d.ts +2 -3
- package/runtime/lib/element-template/background/hydrate.js +247 -74
- package/runtime/lib/element-template/background/hydrate.js.map +1 -1
- package/runtime/lib/element-template/background/hydration-listener.js +49 -22
- package/runtime/lib/element-template/background/hydration-listener.js.map +1 -1
- package/runtime/lib/element-template/background/instance.d.ts +38 -9
- package/runtime/lib/element-template/background/instance.js +292 -113
- package/runtime/lib/element-template/background/instance.js.map +1 -1
- package/runtime/lib/element-template/client/root.d.ts +7 -0
- package/runtime/lib/element-template/client/root.js +3 -6
- package/runtime/lib/element-template/client/root.js.map +1 -1
- package/runtime/lib/element-template/debug/alog.d.ts +21 -0
- package/runtime/lib/element-template/debug/alog.js +33 -0
- package/runtime/lib/element-template/debug/alog.js.map +1 -1
- package/runtime/lib/element-template/debug/elementPAPICall.js +5 -0
- package/runtime/lib/element-template/debug/elementPAPICall.js.map +1 -1
- package/runtime/lib/element-template/hydration-map.d.ts +5 -0
- package/runtime/lib/element-template/hydration-map.js +12 -0
- package/runtime/lib/element-template/hydration-map.js.map +1 -0
- package/runtime/lib/element-template/index.d.ts +25 -3
- package/runtime/lib/element-template/index.js +38 -9
- package/runtime/lib/element-template/index.js.map +1 -1
- package/runtime/lib/element-template/internal.d.ts +5 -1
- package/runtime/lib/element-template/internal.js +6 -7
- package/runtime/lib/element-template/internal.js.map +1 -1
- package/runtime/lib/element-template/lynx/env.js +5 -48
- package/runtime/lib/element-template/lynx/env.js.map +1 -1
- package/runtime/lib/element-template/lynx/performance.d.ts +0 -21
- package/runtime/lib/element-template/lynx/performance.js +4 -121
- package/runtime/lib/element-template/lynx/performance.js.map +1 -1
- package/runtime/lib/element-template/native/index.d.ts +1 -1
- package/runtime/lib/element-template/native/index.js +28 -2
- package/runtime/lib/element-template/native/index.js.map +1 -1
- package/runtime/lib/element-template/native/main-thread-api.js +27 -5
- package/runtime/lib/element-template/native/main-thread-api.js.map +1 -1
- package/runtime/lib/element-template/native/mts-destroy.js +2 -0
- package/runtime/lib/element-template/native/mts-destroy.js.map +1 -1
- package/runtime/lib/element-template/native/patch-listener.js +6 -2
- package/runtime/lib/element-template/native/patch-listener.js.map +1 -1
- package/runtime/lib/element-template/native/reload-background.d.ts +1 -0
- package/runtime/lib/element-template/native/reload-background.js +39 -0
- package/runtime/lib/element-template/native/reload-background.js.map +1 -0
- package/runtime/lib/element-template/native/reload-main-thread.d.ts +1 -0
- package/runtime/lib/element-template/native/reload-main-thread.js +35 -0
- package/runtime/lib/element-template/native/reload-main-thread.js.map +1 -0
- package/runtime/lib/element-template/prop-adapters/event.d.ts +1 -0
- package/runtime/lib/element-template/prop-adapters/event.js +4 -1
- package/runtime/lib/element-template/prop-adapters/event.js.map +1 -1
- package/runtime/lib/element-template/prop-adapters/ref.d.ts +26 -0
- package/runtime/lib/element-template/prop-adapters/ref.js +107 -0
- package/runtime/lib/element-template/prop-adapters/ref.js.map +1 -0
- package/runtime/lib/element-template/prop-adapters/spread.js +8 -1
- package/runtime/lib/element-template/prop-adapters/spread.js.map +1 -1
- package/runtime/lib/element-template/protocol/opcodes.d.ts +4 -0
- package/runtime/lib/element-template/protocol/opcodes.js +4 -0
- package/runtime/lib/element-template/protocol/opcodes.js.map +1 -1
- package/runtime/lib/element-template/protocol/template-type.d.ts +6 -0
- package/runtime/lib/element-template/protocol/template-type.js +20 -0
- package/runtime/lib/element-template/protocol/template-type.js.map +1 -0
- package/runtime/lib/element-template/protocol/types.d.ts +74 -6
- package/runtime/lib/element-template/runtime/list/list.d.ts +65 -0
- package/runtime/lib/element-template/runtime/list/list.js +587 -0
- package/runtime/lib/element-template/runtime/list/list.js.map +1 -0
- package/runtime/lib/element-template/runtime/page/page.d.ts +5 -2
- package/runtime/lib/element-template/runtime/page/page.js +12 -0
- package/runtime/lib/element-template/runtime/page/page.js.map +1 -1
- package/runtime/lib/element-template/runtime/patch.js +210 -38
- package/runtime/lib/element-template/runtime/patch.js.map +1 -1
- package/runtime/lib/element-template/runtime/render/render-main-thread.d.ts +3 -1
- package/runtime/lib/element-template/runtime/render/render-main-thread.js +38 -7
- package/runtime/lib/element-template/runtime/render/render-main-thread.js.map +1 -1
- package/runtime/lib/element-template/runtime/render/render-opcodes.js +80 -43
- package/runtime/lib/element-template/runtime/render/render-opcodes.js.map +1 -1
- package/runtime/lib/element-template/runtime/render/render-to-opcodes.js +41 -4
- package/runtime/lib/element-template/runtime/render/render-to-opcodes.js.map +1 -1
- package/runtime/lib/element-template/runtime/template/attr-slot-plan.d.ts +1 -0
- package/runtime/lib/element-template/runtime/template/attr-slot-plan.js +4 -0
- package/runtime/lib/element-template/runtime/template/attr-slot-plan.js.map +1 -1
- package/runtime/lib/element-template/runtime/template/handle.d.ts +3 -2
- package/runtime/lib/element-template/runtime/template/handle.js +5 -1
- package/runtime/lib/element-template/runtime/template/handle.js.map +1 -1
- package/runtime/lib/element-template/runtime/template/registry.d.ts +2 -0
- package/runtime/lib/element-template/runtime/template/registry.js +6 -1
- package/runtime/lib/element-template/runtime/template/registry.js.map +1 -1
- package/runtime/lib/element-template/runtime-backend-marker.js +6 -0
- package/runtime/lib/element-template/runtime-backend-marker.js.map +1 -0
- package/runtime/lib/index.d.ts +1 -1
- package/runtime/lib/index.js +3 -1
- package/runtime/lib/index.js.map +1 -1
- package/runtime/lib/internal.d.ts +5 -4
- package/runtime/lib/internal.js +6 -5
- package/runtime/lib/internal.js.map +1 -1
- package/runtime/lib/lynx-api.d.ts +3 -8
- package/runtime/lib/lynx-api.js +8 -45
- package/runtime/lib/lynx-api.js.map +1 -1
- package/runtime/lib/runtime-backend-marker.js +6 -0
- package/runtime/lib/runtime-backend-marker.js.map +1 -0
- package/runtime/lib/snapshot/debug/vnodeSource.js +1 -1
- package/runtime/lib/snapshot/debug/vnodeSource.js.map +1 -1
- package/runtime/lib/snapshot/lifecycle/patch/commit.d.ts +0 -1
- package/runtime/lib/snapshot/lifecycle/patch/commit.js +4 -9
- package/runtime/lib/snapshot/lifecycle/patch/commit.js.map +1 -1
- package/runtime/lib/snapshot/lifecycle/patch/updateMainThread.js +2 -2
- package/runtime/lib/snapshot/lifecycle/patch/updateMainThread.js.map +1 -1
- package/runtime/lib/snapshot/lifecycle/ref/delay.d.ts +6 -13
- package/runtime/lib/snapshot/lifecycle/ref/delay.js +9 -30
- package/runtime/lib/snapshot/lifecycle/ref/delay.js.map +1 -1
- package/runtime/lib/snapshot/lifecycle/reload.js +2 -2
- package/runtime/lib/snapshot/lifecycle/reload.js.map +1 -1
- package/runtime/lib/snapshot/list/list.js +1 -1
- package/runtime/lib/snapshot/list/list.js.map +1 -1
- package/runtime/lib/snapshot/list/listUpdateInfo.js +3 -2
- package/runtime/lib/snapshot/list/listUpdateInfo.js.map +1 -1
- package/runtime/lib/snapshot/lynx/calledByNative.js +3 -9
- package/runtime/lib/snapshot/lynx/calledByNative.js.map +1 -1
- package/runtime/lib/snapshot/lynx/env.js +5 -51
- package/runtime/lib/snapshot/lynx/env.js.map +1 -1
- package/runtime/lib/snapshot/lynx/performance.d.ts +0 -21
- package/runtime/lib/snapshot/lynx/performance.js +7 -121
- package/runtime/lib/snapshot/lynx/performance.js.map +1 -1
- package/runtime/lib/snapshot/lynx/runWithForce.js +9 -39
- package/runtime/lib/snapshot/lynx/runWithForce.js.map +1 -1
- package/runtime/lib/snapshot/lynx/tt.js +10 -30
- package/runtime/lib/snapshot/lynx/tt.js.map +1 -1
- package/runtime/lib/snapshot/snapshot/backgroundSnapshot.js +4 -4
- package/runtime/lib/snapshot/snapshot/backgroundSnapshot.js.map +1 -1
- package/runtime/lib/snapshot/snapshot/list.js +1 -1
- package/runtime/lib/snapshot/snapshot/list.js.map +1 -1
- package/runtime/lib/snapshot/snapshot/ref.d.ts +3 -5
- package/runtime/lib/snapshot/snapshot/ref.js +16 -59
- package/runtime/lib/snapshot/snapshot/ref.js.map +1 -1
- package/runtime/lib/snapshot/snapshot/snapshot.js +1 -1
- package/runtime/lib/snapshot/snapshot/snapshot.js.map +1 -1
- package/runtime/lib/snapshot/snapshot/snapshotInstanceHydrationMap.js +1 -1
- package/runtime/lib/snapshot/snapshot/snapshotInstanceHydrationMap.js.map +1 -1
- package/runtime/lib/tsconfig.tsbuildinfo +1 -1
- package/runtime/lib/worklet-runtime/workletRuntime.js +1 -1
- package/runtime/lib/worklet-runtime/workletRuntime.js.map +1 -1
- package/runtime/worklet-runtime/dev.js +2 -3
- package/runtime/worklet-runtime/main.js +1 -1
- package/testing-library/dist/{rslib-runtime.js → 0~rslib-runtime.js} +14 -13
- package/testing-library/dist/env/index.js +2 -8
- package/testing-library/dist/env/vitest.js +1 -1
- package/testing-library/dist/plugins/index.js +13 -2
- package/testing-library/dist/pure.js +18 -18
- package/testing-library/dist/rstest-config.js +2 -4
- package/testing-library/dist/setupFiles/common/bootstrap.js +1 -0
- package/testing-library/dist/setupFiles/common/runtime-setup.js +1 -1
- package/testing-library/dist/setupFiles/inner/rstest.js +2 -1
- package/testing-library/dist/setupFiles/inner/vitest.js +2 -1
- package/testing-library/dist/type-entry/index.js +1 -0
- package/transform/dist/wasm.cjs +113 -40
- package/runtime/lib/element-template/hooks/react.d.ts +0 -14
- package/runtime/lib/element-template/hooks/react.js +0 -24
- package/runtime/lib/element-template/hooks/react.js.map +0 -1
- package/runtime/lib/element-template/runtime/components/slot.js +0 -11
- package/runtime/lib/element-template/runtime/components/slot.js.map +0 -1
- package/runtime/lib/snapshot/compat/initData.js.map +0 -1
- package/runtime/lib/snapshot/compat/lynxComponent.js.map +0 -1
- package/runtime/lib/snapshot/legacy-react-runtime/index.js.map +0 -1
- package/runtime/lib/snapshot/lifecycle/pass.d.ts +0 -3
- package/runtime/lib/snapshot/lifecycle/pass.js.map +0 -1
- package/runtime/lib/snapshot/lynx/component.js +0 -73
- package/runtime/lib/snapshot/lynx/component.js.map +0 -1
- package/runtime/lib/snapshot/lynx/dynamic-js.js.map +0 -1
- package/runtime/lib/snapshot/lynx/lazy-bundle.js.map +0 -1
- package/testing-library/dist/881.js +0 -1
- /package/runtime/lib/{snapshot/lynx/dynamic-js.d.ts → core/lynx/dynamic-import.d.ts} +0 -0
- /package/runtime/lib/{snapshot → core}/lynx/lazy-bundle.d.ts +0 -0
- /package/runtime/lib/{snapshot → core}/lynx/lazy-bundle.js +0 -0
- /package/runtime/lib/element-template/{runtime/components/slot.d.ts → runtime-backend-marker.d.ts} +0 -0
- /package/runtime/lib/{snapshot/lynx/component.d.ts → runtime-backend-marker.d.ts} +0 -0
- /package/testing-library/dist/{0~123.js → 0~@rstest/adapter-rsbuild.js} +0 -0
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
// Copyright 2025 The Lynx Authors. All rights reserved.
|
|
2
2
|
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
3
3
|
// LICENSE file in the root directory of this source tree.
|
|
4
|
-
import { globalCommitContext,
|
|
5
|
-
import { BUILTIN_RAW_TEXT_TEMPLATE_KEY } from './instance.js';
|
|
4
|
+
import { globalCommitContext, markRemovedSubtreeForPostDispatchTeardown } from './commit-context.js';
|
|
5
|
+
import { BUILTIN_RAW_TEXT_TEMPLATE_KEY, BackgroundListElementTemplateInstance, toUpdateTypedListItemCommand, } from './instance.js';
|
|
6
6
|
import { backgroundElementTemplateInstanceManager } from './manager.js';
|
|
7
7
|
import { isDirectOrDeepEqual } from '../../utils.js';
|
|
8
|
+
import { hydrationMap } from '../hydration-map.js';
|
|
8
9
|
import { ElementTemplateUpdateOps } from '../protocol/opcodes.js';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
import { elementTemplateIdentityKey } from '../protocol/template-type.js';
|
|
11
|
+
const MAIN_BUNDLE_URL_SENTINEL = '__Card__';
|
|
12
|
+
const PAGE_ROOT_TARGET_HANDLE_ID = 0;
|
|
13
|
+
const PAGE_ROOT_SLOT_ID = 0;
|
|
14
|
+
const COMPONENT_AT_INDEX_ATTR = 'component-at-index';
|
|
15
|
+
const COMPONENT_AT_INDEXES_ATTR = 'component-at-indexes';
|
|
16
|
+
const ENQUEUE_COMPONENT_ATTR = 'enqueue-component';
|
|
17
|
+
const UPDATE_LIST_INFO_ATTR = 'update-list-info';
|
|
18
|
+
export function hydrateRootChildrenIntoContext(serializedChildren, root) {
|
|
19
|
+
return hydrateChildListIntoContext(PAGE_ROOT_TARGET_HANDLE_ID, PAGE_ROOT_SLOT_ID, serializedChildren, root.childNodes);
|
|
13
20
|
}
|
|
14
|
-
|
|
15
|
-
|
|
21
|
+
function isSerializedCompiledNode(serialized) {
|
|
22
|
+
return typeof serialized.templateKey === 'string';
|
|
16
23
|
}
|
|
17
24
|
function hydrateMatchingChildrenAndDiffSlot(serializedChildren, backgroundChildren) {
|
|
18
25
|
let lastPlacedIndex = 0;
|
|
@@ -23,21 +30,25 @@ function hydrateMatchingChildrenAndDiffSlot(serializedChildren, backgroundChildr
|
|
|
23
30
|
removals: [],
|
|
24
31
|
moves: {},
|
|
25
32
|
};
|
|
26
|
-
const
|
|
27
|
-
const
|
|
33
|
+
const serializedByNodeKey = {};
|
|
34
|
+
const serializedCursorByNodeKey = {};
|
|
28
35
|
for (let i = 0; i < serializedChildren.length; i += 1) {
|
|
29
36
|
const node = serializedChildren[i];
|
|
30
|
-
|
|
37
|
+
const key = getSerializedNodeHydrateKey(node);
|
|
38
|
+
(serializedByNodeKey[key] ??= []).push([node, i]);
|
|
31
39
|
}
|
|
32
40
|
for (let i = 0; i < backgroundChildren.length; i += 1) {
|
|
33
41
|
const backgroundChild = backgroundChildren[i];
|
|
34
|
-
const
|
|
35
|
-
const
|
|
42
|
+
const backgroundKey = backgroundChild.type;
|
|
43
|
+
const serializedCandidates = serializedByNodeKey[backgroundKey];
|
|
44
|
+
const candidateCursor = serializedCursorByNodeKey[backgroundKey] ?? 0;
|
|
36
45
|
const matchedSerialized = serializedCandidates?.[candidateCursor];
|
|
37
46
|
if (matchedSerialized) {
|
|
38
|
-
|
|
47
|
+
serializedCursorByNodeKey[backgroundKey] = candidateCursor + 1;
|
|
39
48
|
const oldIndex = matchedSerialized[1];
|
|
40
|
-
hydrateInstance(matchedSerialized[0], backgroundChild)
|
|
49
|
+
if (!hydrateInstance(matchedSerialized[0], backgroundChild)) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
41
52
|
if (oldIndex < lastPlacedIndex) {
|
|
42
53
|
result.moves[oldIndex] = { toIndex: i, instance: backgroundChild };
|
|
43
54
|
result.hasChanges = true;
|
|
@@ -52,9 +63,9 @@ function hydrateMatchingChildrenAndDiffSlot(serializedChildren, backgroundChildr
|
|
|
52
63
|
result.hasChanges = true;
|
|
53
64
|
}
|
|
54
65
|
}
|
|
55
|
-
for (const key in
|
|
56
|
-
const candidates =
|
|
57
|
-
const candidateCursor =
|
|
66
|
+
for (const key in serializedByNodeKey) {
|
|
67
|
+
const candidates = serializedByNodeKey[key];
|
|
68
|
+
const candidateCursor = serializedCursorByNodeKey[key] ?? 0;
|
|
58
69
|
for (let i = candidateCursor; i < candidates.length; i += 1) {
|
|
59
70
|
result.removals.push(candidates[i][1]);
|
|
60
71
|
result.hasChanges = true;
|
|
@@ -63,52 +74,123 @@ function hydrateMatchingChildrenAndDiffSlot(serializedChildren, backgroundChildr
|
|
|
63
74
|
return result;
|
|
64
75
|
}
|
|
65
76
|
function hydrateInstance(serialized, instance) {
|
|
66
|
-
if (serialized
|
|
67
|
-
|
|
68
|
-
lynx.reportError(new Error(`ElementTemplate hydrate key mismatch: main='${serialized.templateKey}' background='${instance.type}'.`));
|
|
69
|
-
}
|
|
70
|
-
return;
|
|
77
|
+
if (isSerializedCompiledNode(serialized)) {
|
|
78
|
+
return hydrateCompiledInstance(serialized, instance);
|
|
71
79
|
}
|
|
80
|
+
if (__DEV__ && serialized.tag !== 'list') {
|
|
81
|
+
lynx.reportError(new Error(`ElementTemplate hydrate does not support serialized typed node '${serialized.tag}'.`));
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
return hydrateListInstance(serialized, instance);
|
|
85
|
+
}
|
|
86
|
+
function hydrateCompiledInstance(serialized, instance) {
|
|
72
87
|
const handleId = serialized.uid;
|
|
73
88
|
if (!bindHydrationHandleId(instance, handleId, serialized.templateKey)) {
|
|
74
|
-
return;
|
|
89
|
+
return false;
|
|
75
90
|
}
|
|
76
|
-
instance.
|
|
91
|
+
instance.prepareAttributeSlotsForHydration();
|
|
77
92
|
hydrateAttributeSlots(handleId, serialized.attributeSlots ?? [], instance.attributeSlots);
|
|
78
93
|
if (serialized.templateKey === BUILTIN_RAW_TEXT_TEMPLATE_KEY) {
|
|
79
|
-
return;
|
|
94
|
+
return true;
|
|
80
95
|
}
|
|
81
96
|
const serializedElementSlots = serialized.elementSlots ?? [];
|
|
97
|
+
const backgroundElementSlots = instance.elementSlots;
|
|
82
98
|
// Snapshot hydrates dynamic children through slot-filtered lists. Keeping ET
|
|
83
99
|
// scoped the same way means a cross-slot candidate is a source remove plus a
|
|
84
100
|
// target create/insert, while same-slot reorder can still stay move-like.
|
|
85
|
-
const slotCount = Math.max(serializedElementSlots.length,
|
|
101
|
+
const slotCount = Math.max(serializedElementSlots.length, backgroundElementSlots.length);
|
|
86
102
|
for (let slotId = 0; slotId < slotCount; slotId += 1) {
|
|
87
103
|
const serializedSlot = serializedElementSlots[slotId];
|
|
88
|
-
const backgroundSlot =
|
|
104
|
+
const backgroundSlot = backgroundElementSlots[slotId];
|
|
89
105
|
if (!serializedSlot && !backgroundSlot) {
|
|
90
106
|
continue;
|
|
91
107
|
}
|
|
92
|
-
|
|
108
|
+
if (!hydrateChildListIntoContext(instance.instanceId, slotId, serializedSlot ?? [], backgroundSlot ?? [])) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
function getSerializedNodeHydrateKey(serialized) {
|
|
115
|
+
if (!isSerializedCompiledNode(serialized)) {
|
|
116
|
+
return serialized.tag;
|
|
117
|
+
}
|
|
118
|
+
return elementTemplateIdentityKey(serialized.templateKey, normalizeSerializedBundleUrl(serialized.bundleUrl));
|
|
119
|
+
}
|
|
120
|
+
function normalizeSerializedBundleUrl(bundleUrl) {
|
|
121
|
+
return bundleUrl === undefined || bundleUrl === MAIN_BUNDLE_URL_SENTINEL ? null : bundleUrl;
|
|
122
|
+
}
|
|
123
|
+
function getSerializedTypedListChildren(serialized) {
|
|
124
|
+
return (__DEV__ ? serialized.options?.['listChildren'] : serialized.options['listChildren']);
|
|
125
|
+
}
|
|
126
|
+
function hydrateListInstance(serialized, instance) {
|
|
127
|
+
if (__DEV__ && (serialized.elementSlots?.length ?? 0) > 0) {
|
|
128
|
+
lynx.reportError(new Error('ElementTemplate hydrate typed list does not support elementSlots.'));
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
const listChildren = getSerializedTypedListChildren(serialized);
|
|
132
|
+
if (__DEV__ && !Array.isArray(listChildren)) {
|
|
133
|
+
lynx.reportError(new Error('ElementTemplate hydrate typed list requires options.listChildren.'));
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
const backgroundChildren = instance.childNodes;
|
|
137
|
+
const handleId = serialized.uid;
|
|
138
|
+
if (!bindHydrationHandleId(instance, handleId, serialized.tag)) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
instance.prepareAttributeSlotsForHydration();
|
|
142
|
+
hydrateAttributeSlots(handleId, [getStableSerializedListAttributes(serialized.attributes)], instance.attributeSlots);
|
|
143
|
+
const listDiff = hydrateMatchingChildrenAndDiffSlot(listChildren, backgroundChildren);
|
|
144
|
+
if (listDiff === null) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
return emitHydrateTypedListReconciliation(instance, listChildren, backgroundChildren, listDiff);
|
|
148
|
+
}
|
|
149
|
+
function getStableSerializedListAttributes(attributes) {
|
|
150
|
+
if (attributes == null) {
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
if (!(COMPONENT_AT_INDEX_ATTR in attributes)
|
|
154
|
+
&& !(COMPONENT_AT_INDEXES_ATTR in attributes)
|
|
155
|
+
&& !(ENQUEUE_COMPONENT_ATTR in attributes)
|
|
156
|
+
&& !(UPDATE_LIST_INFO_ATTR in attributes)) {
|
|
157
|
+
return attributes;
|
|
158
|
+
}
|
|
159
|
+
const stableAttributes = {};
|
|
160
|
+
let hasStableAttribute = false;
|
|
161
|
+
for (const key in attributes) {
|
|
162
|
+
if (key === COMPONENT_AT_INDEX_ATTR
|
|
163
|
+
|| key === COMPONENT_AT_INDEXES_ATTR
|
|
164
|
+
|| key === ENQUEUE_COMPONENT_ATTR
|
|
165
|
+
|| key === UPDATE_LIST_INFO_ATTR) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
stableAttributes[key] = attributes[key];
|
|
169
|
+
hasStableAttribute = true;
|
|
93
170
|
}
|
|
171
|
+
return hasStableAttribute ? stableAttributes : null;
|
|
94
172
|
}
|
|
95
|
-
function
|
|
96
|
-
const backgroundChildren = parent.elementSlots[slotId] ?? [];
|
|
173
|
+
function hydrateChildListIntoContext(targetHandleId, slotId, serializedChildren, backgroundChildren) {
|
|
97
174
|
if (backgroundChildren.length === 0) {
|
|
98
175
|
for (const serialized of serializedChildren) {
|
|
99
|
-
emitSerializedSubtreeRemove(
|
|
176
|
+
if (!emitSerializedSubtreeRemove(targetHandleId, slotId, serialized)) {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
100
179
|
}
|
|
101
|
-
return;
|
|
180
|
+
return true;
|
|
102
181
|
}
|
|
103
182
|
const listDiff = hydrateMatchingChildrenAndDiffSlot(serializedChildren, backgroundChildren);
|
|
183
|
+
if (listDiff === null) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
104
186
|
if (!listDiff.hasChanges) {
|
|
105
|
-
return;
|
|
187
|
+
return true;
|
|
106
188
|
}
|
|
107
189
|
// Hydrate emits patches directly here. Replaying against serialized order
|
|
108
190
|
// keeps insert targets in the main-thread slot without reshaping background.
|
|
109
191
|
const removalIndexes = new Set(listDiff.removals);
|
|
110
192
|
const { insertions, moves } = listDiff;
|
|
111
|
-
const
|
|
193
|
+
const movesWaitingForInsertionPoint = new Map();
|
|
112
194
|
let serializedCursor = 0;
|
|
113
195
|
let currentSerializedChild = serializedChildren[serializedCursor];
|
|
114
196
|
let newIndex = 0;
|
|
@@ -116,31 +198,33 @@ function hydrateElementSlot(parent, slotId, serializedChildren) {
|
|
|
116
198
|
// Insertions are known before replay starts. Moves are counted only when their
|
|
117
199
|
// old serialized position is reached, so the cursor can keep emitting patches
|
|
118
200
|
// even after all serialized children have been consumed.
|
|
119
|
-
let
|
|
120
|
-
while (currentSerializedChild ||
|
|
201
|
+
let insertOrMovePatchesWaitingForInsertionPoint = listDiff.insertionCount;
|
|
202
|
+
while (currentSerializedChild || insertOrMovePatchesWaitingForInsertionPoint > 0) {
|
|
121
203
|
let keepCurrentSerializedChild = false;
|
|
122
204
|
if (currentSerializedChild && removalIndexes.has(oldIndex)) {
|
|
123
|
-
emitSerializedSubtreeRemove(
|
|
205
|
+
if (!emitSerializedSubtreeRemove(targetHandleId, slotId, currentSerializedChild)) {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
124
208
|
}
|
|
125
209
|
else if (currentSerializedChild && moves[oldIndex] !== undefined) {
|
|
126
210
|
const move = moves[oldIndex];
|
|
127
|
-
|
|
128
|
-
|
|
211
|
+
movesWaitingForInsertionPoint.set(move.toIndex, move.instance);
|
|
212
|
+
insertOrMovePatchesWaitingForInsertionPoint += 1;
|
|
129
213
|
}
|
|
130
214
|
else {
|
|
131
215
|
const beforeChildId = currentSerializedChild ? currentSerializedChild.uid : 0;
|
|
132
|
-
const movedChild =
|
|
216
|
+
const movedChild = movesWaitingForInsertionPoint.get(newIndex);
|
|
133
217
|
if (movedChild) {
|
|
134
218
|
keepCurrentSerializedChild = true;
|
|
135
|
-
globalCommitContext.ops.push(ElementTemplateUpdateOps.insertNode,
|
|
136
|
-
|
|
219
|
+
globalCommitContext.ops.push(ElementTemplateUpdateOps.insertNode, targetHandleId, slotId, movedChild.instanceId, beforeChildId);
|
|
220
|
+
insertOrMovePatchesWaitingForInsertionPoint -= 1;
|
|
137
221
|
}
|
|
138
222
|
else if (insertions[newIndex] !== undefined) {
|
|
139
223
|
const insertedChild = insertions[newIndex];
|
|
140
224
|
keepCurrentSerializedChild = true;
|
|
141
225
|
emitCreateSubtree(insertedChild);
|
|
142
|
-
globalCommitContext.ops.push(ElementTemplateUpdateOps.insertNode,
|
|
143
|
-
|
|
226
|
+
globalCommitContext.ops.push(ElementTemplateUpdateOps.insertNode, targetHandleId, slotId, insertedChild.instanceId, beforeChildId);
|
|
227
|
+
insertOrMovePatchesWaitingForInsertionPoint -= 1;
|
|
144
228
|
}
|
|
145
229
|
newIndex += 1;
|
|
146
230
|
}
|
|
@@ -149,57 +233,146 @@ function hydrateElementSlot(parent, slotId, serializedChildren) {
|
|
|
149
233
|
oldIndex += 1;
|
|
150
234
|
}
|
|
151
235
|
}
|
|
236
|
+
return true;
|
|
152
237
|
}
|
|
153
|
-
function emitSerializedSubtreeRemove(
|
|
154
|
-
const childId = serialized.uid;
|
|
155
|
-
const existing = backgroundElementTemplateInstanceManager.get(childId);
|
|
238
|
+
function emitSerializedSubtreeRemove(targetHandleId, slotId, serialized) {
|
|
156
239
|
// The removed child may no longer have a live background instance in this
|
|
157
240
|
// slot, so serialized data is the source of truth for registry cleanup.
|
|
158
241
|
const removedSubtreeHandleIds = [];
|
|
159
|
-
|
|
160
|
-
|
|
242
|
+
if (!collectRemovableSerializedSubtreeHandleIdsInto(serialized, removedSubtreeHandleIds)) {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
const childId = removedSubtreeHandleIds[0];
|
|
246
|
+
const existing = backgroundElementTemplateInstanceManager.get(childId);
|
|
247
|
+
globalCommitContext.ops.push(ElementTemplateUpdateOps.removeNode, targetHandleId, slotId, childId, removedSubtreeHandleIds);
|
|
161
248
|
if (existing && !existing.parent) {
|
|
162
|
-
|
|
249
|
+
markRemovedSubtreeForPostDispatchTeardown(existing);
|
|
163
250
|
}
|
|
251
|
+
return true;
|
|
164
252
|
}
|
|
165
|
-
function
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
253
|
+
function collectRemovableSerializedSubtreeHandleIdsInto(serialized, handles) {
|
|
254
|
+
const handleId = getRemovableSerializedHandleId(serialized);
|
|
255
|
+
if (handleId === null) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
handles.push(handleId);
|
|
259
|
+
if (isSerializedCompiledNode(serialized)) {
|
|
260
|
+
for (const slotChildren of serialized.elementSlots ?? []) {
|
|
261
|
+
if (!slotChildren) {
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
for (const child of slotChildren) {
|
|
265
|
+
if (!collectRemovableSerializedSubtreeHandleIdsInto(child, handles)) {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
170
269
|
}
|
|
171
|
-
|
|
172
|
-
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
if (__DEV__ && serialized.tag !== 'list') {
|
|
273
|
+
lynx.reportError(new Error(`ElementTemplate hydrate does not support serialized typed node '${serialized.tag}'.`));
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
if (__DEV__ && (serialized.elementSlots?.length ?? 0) > 0) {
|
|
277
|
+
lynx.reportError(new Error('ElementTemplate hydrate typed list does not support elementSlots.'));
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
const listChildren = getSerializedTypedListChildren(serialized);
|
|
281
|
+
if (__DEV__ && !Array.isArray(listChildren)) {
|
|
282
|
+
lynx.reportError(new Error('ElementTemplate hydrate typed list requires options.listChildren.'));
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
285
|
+
for (const child of listChildren) {
|
|
286
|
+
if (!collectRemovableSerializedSubtreeHandleIdsInto(child, handles)) {
|
|
287
|
+
return false;
|
|
173
288
|
}
|
|
174
289
|
}
|
|
290
|
+
return true;
|
|
175
291
|
}
|
|
176
|
-
function
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
292
|
+
function getRemovableSerializedHandleId(serialized) {
|
|
293
|
+
const handleId = serialized.uid;
|
|
294
|
+
if (__DEV__ && (typeof handleId !== 'number' || !Number.isInteger(handleId) || handleId === 0)) {
|
|
295
|
+
lynx.reportError(new Error(`ElementTemplate hydrate remove received invalid uid ${String(handleId)}.`));
|
|
296
|
+
return null;
|
|
297
|
+
}
|
|
298
|
+
return handleId;
|
|
299
|
+
}
|
|
300
|
+
function emitHydrateTypedListReconciliation(instance, serializedChildren, backgroundChildren, listDiff) {
|
|
301
|
+
const movedOldIndexes = Object.keys(listDiff.moves).map(Number);
|
|
302
|
+
const removalIndexes = listDiff.removals.concat(movedOldIndexes).sort((a, b) => a - b);
|
|
303
|
+
for (let index = 0; index < removalIndexes.length; index += 1) {
|
|
304
|
+
const oldIndex = removalIndexes[index];
|
|
305
|
+
const serialized = serializedChildren[oldIndex];
|
|
306
|
+
let itemId;
|
|
307
|
+
const removedSubtreeHandleIds = [];
|
|
308
|
+
if (listDiff.moves[oldIndex] === undefined) {
|
|
309
|
+
if (!collectRemovableSerializedSubtreeHandleIdsInto(serialized, removedSubtreeHandleIds)) {
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
itemId = removedSubtreeHandleIds[0];
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
itemId = serialized.uid;
|
|
181
316
|
}
|
|
182
|
-
|
|
183
|
-
|
|
317
|
+
globalCommitContext.ops.push(ElementTemplateUpdateOps.removeTypedListItem, instance.instanceId, itemId, removedSubtreeHandleIds);
|
|
318
|
+
}
|
|
319
|
+
const insertedIndexes = Object.keys(listDiff.insertions).map(Number);
|
|
320
|
+
let movedToIndexes = null;
|
|
321
|
+
for (let index = 0; index < movedOldIndexes.length; index += 1) {
|
|
322
|
+
const toIndex = listDiff.moves[movedOldIndexes[index]].toIndex;
|
|
323
|
+
insertedIndexes.push(toIndex);
|
|
324
|
+
(movedToIndexes ??= new Set()).add(toIndex);
|
|
325
|
+
}
|
|
326
|
+
insertedIndexes.sort((a, b) => b - a);
|
|
327
|
+
for (let index = 0; index < insertedIndexes.length; index += 1) {
|
|
328
|
+
const insertedIndex = insertedIndexes[index];
|
|
329
|
+
const child = backgroundChildren[insertedIndex];
|
|
330
|
+
if (listDiff.insertions[insertedIndex]) {
|
|
184
331
|
emitCreateSubtree(child);
|
|
185
332
|
}
|
|
333
|
+
globalCommitContext.ops.push(ElementTemplateUpdateOps.insertTypedListItem, instance.instanceId, toUpdateTypedListItemCommand(child), backgroundChildren[insertedIndex + 1]?.instanceId ?? 0);
|
|
186
334
|
}
|
|
187
|
-
|
|
335
|
+
for (let index = 0; index < backgroundChildren.length; index += 1) {
|
|
336
|
+
if (listDiff.insertions[index] || movedToIndexes?.has(index)) {
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
globalCommitContext.ops.push(ElementTemplateUpdateOps.updateTypedListItem, instance.instanceId, toUpdateTypedListItemCommand(backgroundChildren[index]));
|
|
340
|
+
}
|
|
341
|
+
return true;
|
|
342
|
+
}
|
|
343
|
+
function emitCreateSubtree(node) {
|
|
344
|
+
// Linked-list walk: slot grouping would be discarded since we recurse into
|
|
345
|
+
// every child regardless of slot. `emitCreate` does its own single-walk
|
|
346
|
+
// serialization of `instanceId`s grouped by slot.
|
|
347
|
+
let child = node.firstChild;
|
|
348
|
+
while (child) {
|
|
349
|
+
emitCreateSubtree(child);
|
|
350
|
+
child = child.nextSibling;
|
|
351
|
+
}
|
|
352
|
+
node.prepareAttributeSlotsForHydration();
|
|
188
353
|
node.emitCreate();
|
|
189
354
|
}
|
|
190
355
|
function bindHydrationHandleId(instance, handleId, templateKey) {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
356
|
+
const oldHandleId = instance.instanceId;
|
|
357
|
+
if (__DEV__) {
|
|
358
|
+
try {
|
|
359
|
+
backgroundElementTemplateInstanceManager.updateId(instance.instanceId, handleId);
|
|
360
|
+
// Ref proxies created before hydrate keep the old background id; resolve it
|
|
361
|
+
// lazily so user-held proxies continue selecting the hydrated native node.
|
|
362
|
+
hydrationMap.set(oldHandleId, handleId);
|
|
363
|
+
instance.markMaterializedByHydration();
|
|
364
|
+
return true;
|
|
365
|
+
}
|
|
366
|
+
catch (error) {
|
|
198
367
|
const reason = error instanceof Error ? error.message : String(error);
|
|
199
368
|
lynx.reportError(new Error(`ElementTemplate hydrate received invalid uid ${handleId} for '${templateKey}': ${reason}`));
|
|
369
|
+
return false;
|
|
200
370
|
}
|
|
201
|
-
return false;
|
|
202
371
|
}
|
|
372
|
+
backgroundElementTemplateInstanceManager.updateId(instance.instanceId, handleId);
|
|
373
|
+
hydrationMap.set(oldHandleId, handleId);
|
|
374
|
+
instance.markMaterializedByHydration();
|
|
375
|
+
return true;
|
|
203
376
|
}
|
|
204
377
|
function hydrateAttributeSlots(handleId, beforeSlots, afterSlots) {
|
|
205
378
|
const slotCount = Math.max(beforeSlots.length, afterSlots.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../../../src/element-template/background/hydrate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../../../src/element-template/background/hydrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
// Copyright 2026 The Lynx Authors. All rights reserved.
|
|
2
2
|
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
3
3
|
// LICENSE file in the root directory of this source tree.
|
|
4
|
-
import { globalCommitContext, resetGlobalCommitContext,
|
|
4
|
+
import { globalCommitContext, resetGlobalCommitContext, takeRemovedSubtreesForPostDispatchTeardown, } from './commit-context.js';
|
|
5
5
|
import { markElementTemplateHydrated, resetElementTemplateCommitState, scheduleElementTemplateRemovedSubtreeCleanup, } from './commit-hook.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { hydrateRootChildrenIntoContext } from './hydrate.js';
|
|
7
|
+
import { PerformanceTimingFlags, PipelineOrigins, beginPipeline, markTiming } from '../../core/performance.js';
|
|
8
|
+
import { getReloadVersion } from '../../core/reload-version.js';
|
|
8
9
|
import { formatElementTemplateUpdateCommands, printElementTemplateTreeToString } from '../debug/alog.js';
|
|
9
10
|
import { profileEnd, profileStart } from '../debug/profile.js';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
11
|
+
import { clearPendingEvents, flushPendingEvents } from '../prop-adapters/event.js';
|
|
12
|
+
import { clearDelayedRefUiOps, clearPendingRefs, flushDelayedRefUiOps } from '../prop-adapters/ref.js';
|
|
12
13
|
import { ElementTemplateLifecycleConstant } from '../protocol/lifecycle-constant.js';
|
|
13
14
|
import { __root } from '../runtime/page/root-instance.js';
|
|
14
15
|
let listener;
|
|
@@ -17,15 +18,25 @@ export function installElementTemplateHydrationListener() {
|
|
|
17
18
|
resetElementTemplateCommitState();
|
|
18
19
|
listener = (event) => {
|
|
19
20
|
const { data } = event;
|
|
21
|
+
let instances;
|
|
22
|
+
if (Array.isArray(data)) {
|
|
23
|
+
instances = data;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const payload = data;
|
|
27
|
+
if (typeof payload.reloadVersion === 'number' && payload.reloadVersion < getReloadVersion()) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
instances = payload.instances;
|
|
31
|
+
}
|
|
32
|
+
const root = __root;
|
|
20
33
|
if (__PROFILE__) {
|
|
21
34
|
profileStart('ReactLynx::hydrate');
|
|
22
35
|
}
|
|
23
36
|
beginPipeline(true, PipelineOrigins.reactLynxHydrate, PerformanceTimingFlags.reactLynxHydrate);
|
|
24
|
-
markTiming('
|
|
25
|
-
|
|
26
|
-
markTiming('hydrateParsePayloadEnd');
|
|
37
|
+
markTiming('hydrateParseSnapshotStart');
|
|
38
|
+
markTiming('hydrateParseSnapshotEnd');
|
|
27
39
|
markTiming('diffVdomStart');
|
|
28
|
-
const root = __root;
|
|
29
40
|
resetGlobalCommitContext();
|
|
30
41
|
if (typeof __ALOG__ !== 'undefined' && __ALOG__) {
|
|
31
42
|
console.alog?.('[ReactLynxDebug] ElementTemplate MTS -> BTS hydrate:\n'
|
|
@@ -33,14 +44,7 @@ export function installElementTemplateHydrationListener() {
|
|
|
33
44
|
console.alog?.('[ReactLynxDebug] BackgroundElementTemplate tree before hydration:\n'
|
|
34
45
|
+ printElementTemplateTreeToString(root));
|
|
35
46
|
}
|
|
36
|
-
|
|
37
|
-
for (const before of instances) {
|
|
38
|
-
if (!after) {
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
hydrateIntoContext(before, after);
|
|
42
|
-
after = after.nextSibling;
|
|
43
|
-
}
|
|
47
|
+
const didHydrateMatchedInstances = hydrateRootChildrenIntoContext(instances, root);
|
|
44
48
|
if (typeof __ALOG__ !== 'undefined' && __ALOG__) {
|
|
45
49
|
console.alog?.('[ReactLynxDebug] BackgroundElementTemplate tree after hydration:\n'
|
|
46
50
|
+ printElementTemplateTreeToString(root));
|
|
@@ -49,8 +53,19 @@ export function installElementTemplateHydrationListener() {
|
|
|
49
53
|
profileEnd();
|
|
50
54
|
}
|
|
51
55
|
markTiming('diffVdomEnd');
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
if (didHydrateMatchedInstances) {
|
|
57
|
+
markElementTemplateHydrated();
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Hydrate is not transactional; a later failure can happen after earlier
|
|
61
|
+
// nodes were rebound. Treat the pass as failed for externally observable
|
|
62
|
+
// work, so delayed refs/events are not released from an incomplete tree.
|
|
63
|
+
clearPendingEvents();
|
|
64
|
+
clearPendingRefs();
|
|
65
|
+
clearDelayedRefUiOps();
|
|
66
|
+
resetGlobalCommitContext();
|
|
67
|
+
}
|
|
68
|
+
const hasHydrateUpdate = didHydrateMatchedInstances && globalCommitContext.ops.length > 0;
|
|
54
69
|
let didDispatchHydrateUpdate = false;
|
|
55
70
|
if (hasHydrateUpdate) {
|
|
56
71
|
if (typeof __ALOG__ !== 'undefined' && __ALOG__) {
|
|
@@ -61,7 +76,7 @@ export function installElementTemplateHydrationListener() {
|
|
|
61
76
|
flowIds: globalCommitContext.flowIds,
|
|
62
77
|
}, null, 2));
|
|
63
78
|
}
|
|
64
|
-
const
|
|
79
|
+
const removedSubtreesAwaitingTeardown = takeRemovedSubtreesForPostDispatchTeardown();
|
|
65
80
|
try {
|
|
66
81
|
lynx.getCoreContext().dispatchEvent({
|
|
67
82
|
type: ElementTemplateLifecycleConstant.update,
|
|
@@ -69,17 +84,29 @@ export function installElementTemplateHydrationListener() {
|
|
|
69
84
|
ops: globalCommitContext.ops,
|
|
70
85
|
flushOptions: globalCommitContext.flushOptions,
|
|
71
86
|
flowIds: globalCommitContext.flowIds,
|
|
87
|
+
reloadVersion: getReloadVersion(),
|
|
72
88
|
},
|
|
73
89
|
});
|
|
74
90
|
didDispatchHydrateUpdate = true;
|
|
75
91
|
}
|
|
76
92
|
finally {
|
|
93
|
+
if (!didDispatchHydrateUpdate) {
|
|
94
|
+
// Do not expose refs or replay delayed selector ops if the hydrate
|
|
95
|
+
// patch failed to reach the main thread; selectors may still point at
|
|
96
|
+
// stale pre-hydration ids in that case.
|
|
97
|
+
clearPendingEvents();
|
|
98
|
+
clearPendingRefs();
|
|
99
|
+
clearDelayedRefUiOps();
|
|
100
|
+
}
|
|
77
101
|
resetGlobalCommitContext();
|
|
78
|
-
scheduleElementTemplateRemovedSubtreeCleanup(
|
|
102
|
+
scheduleElementTemplateRemovedSubtreeCleanup(removedSubtreesAwaitingTeardown);
|
|
79
103
|
}
|
|
80
104
|
}
|
|
81
|
-
if (!hasHydrateUpdate || didDispatchHydrateUpdate) {
|
|
105
|
+
if (didHydrateMatchedInstances && (!hasHydrateUpdate || didDispatchHydrateUpdate)) {
|
|
82
106
|
flushPendingEvents();
|
|
107
|
+
// Ordinary refs attach on Preact commit boundaries; hydration only releases
|
|
108
|
+
// delayed selector ops after ids have been rebound to stable native handles.
|
|
109
|
+
flushDelayedRefUiOps();
|
|
83
110
|
}
|
|
84
111
|
};
|
|
85
112
|
lynx.getCoreContext().addEventListener(ElementTemplateLifecycleConstant.hydrate, listener);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydration-listener.js","sourceRoot":"","sources":["../../../src/element-template/background/hydration-listener.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,
|
|
1
|
+
{"version":3,"file":"hydration-listener.js","sourceRoot":"","sources":["../../../src/element-template/background/hydration-listener.ts"],"names":[],"mappings":"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"}
|