@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.
Files changed (238) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/package.json +5 -5
  3. package/runtime/lazy/element-template-import.js +73 -0
  4. package/runtime/lazy/import.js +4 -0
  5. package/runtime/lazy/target.js +23 -0
  6. package/runtime/lib/core/commit-context.d.ts +8 -0
  7. package/runtime/lib/core/commit-context.js +18 -0
  8. package/runtime/lib/core/commit-context.js.map +1 -0
  9. package/runtime/lib/{snapshot/legacy-react-runtime/index.d.ts → core/compat/legacy-react-runtime.d.ts} +4 -4
  10. package/runtime/lib/{snapshot/legacy-react-runtime/index.js → core/compat/legacy-react-runtime.js} +6 -6
  11. package/runtime/lib/core/compat/legacy-react-runtime.js.map +1 -0
  12. package/runtime/lib/{snapshot → core}/compat/lynxComponent.d.ts +2 -1
  13. package/runtime/lib/{snapshot → core}/compat/lynxComponent.js +11 -5
  14. package/runtime/lib/core/compat/lynxComponent.js.map +1 -0
  15. package/runtime/lib/core/component.d.ts +2 -0
  16. package/runtime/lib/core/component.js +79 -0
  17. package/runtime/lib/core/component.js.map +1 -0
  18. package/runtime/lib/core/forceRootRender.d.ts +7 -0
  19. package/runtime/lib/core/forceRootRender.js +40 -0
  20. package/runtime/lib/core/forceRootRender.js.map +1 -0
  21. package/runtime/lib/core/globalProps.d.ts +31 -0
  22. package/runtime/lib/core/globalProps.js +55 -0
  23. package/runtime/lib/core/globalProps.js.map +1 -0
  24. package/runtime/lib/core/hooks/useLynxGlobalEventListener.js +1 -1
  25. package/runtime/lib/core/hooks/useLynxGlobalEventListener.js.map +1 -1
  26. package/runtime/lib/{snapshot/compat → core}/initData.d.ts +1 -1
  27. package/runtime/lib/{snapshot/compat → core}/initData.js +4 -5
  28. package/runtime/lib/core/initData.js.map +1 -0
  29. package/runtime/lib/{snapshot/lynx/dynamic-js.js → core/lynx/dynamic-import.js} +1 -1
  30. package/runtime/lib/core/lynx/dynamic-import.js.map +1 -0
  31. package/runtime/lib/core/lynx/lazy-bundle.js.map +1 -0
  32. package/runtime/lib/core/lynx/runtime-backend.d.ts +5 -0
  33. package/runtime/lib/core/lynx/runtime-backend.js +20 -0
  34. package/runtime/lib/core/lynx/runtime-backend.js.map +1 -0
  35. package/runtime/lib/core/lynx-data-processors.d.ts +2 -0
  36. package/runtime/lib/core/lynx-data-processors.js +53 -0
  37. package/runtime/lib/core/lynx-data-processors.js.map +1 -0
  38. package/runtime/lib/core/lynx-page-data.d.ts +1 -0
  39. package/runtime/lib/core/lynx-page-data.js +14 -0
  40. package/runtime/lib/core/lynx-page-data.js.map +1 -0
  41. package/runtime/lib/core/lynx-update-data.d.ts +11 -0
  42. package/runtime/lib/core/lynx-update-data.js +21 -0
  43. package/runtime/lib/core/lynx-update-data.js.map +1 -0
  44. package/runtime/lib/core/performance.d.ts +30 -0
  45. package/runtime/lib/core/performance.js +145 -0
  46. package/runtime/lib/core/performance.js.map +1 -0
  47. package/runtime/lib/core/ref.d.ts +37 -0
  48. package/runtime/lib/core/ref.js +108 -0
  49. package/runtime/lib/core/ref.js.map +1 -0
  50. package/runtime/lib/core/reload-version.d.ts +2 -0
  51. package/runtime/lib/{snapshot/lifecycle/pass.js → core/reload-version.js} +4 -5
  52. package/runtime/lib/core/reload-version.js.map +1 -0
  53. package/runtime/lib/element-template/background/attr-slots.d.ts +6 -1
  54. package/runtime/lib/element-template/background/attr-slots.js +35 -2
  55. package/runtime/lib/element-template/background/attr-slots.js.map +1 -1
  56. package/runtime/lib/element-template/background/commit-context.d.ts +3 -3
  57. package/runtime/lib/element-template/background/commit-context.js +15 -18
  58. package/runtime/lib/element-template/background/commit-context.js.map +1 -1
  59. package/runtime/lib/element-template/background/commit-hook.d.ts +1 -1
  60. package/runtime/lib/element-template/background/commit-hook.js +68 -43
  61. package/runtime/lib/element-template/background/commit-hook.js.map +1 -1
  62. package/runtime/lib/element-template/background/destroy.js +9 -6
  63. package/runtime/lib/element-template/background/destroy.js.map +1 -1
  64. package/runtime/lib/element-template/background/document.js +5 -5
  65. package/runtime/lib/element-template/background/document.js.map +1 -1
  66. package/runtime/lib/element-template/background/hydrate.d.ts +2 -3
  67. package/runtime/lib/element-template/background/hydrate.js +247 -74
  68. package/runtime/lib/element-template/background/hydrate.js.map +1 -1
  69. package/runtime/lib/element-template/background/hydration-listener.js +49 -22
  70. package/runtime/lib/element-template/background/hydration-listener.js.map +1 -1
  71. package/runtime/lib/element-template/background/instance.d.ts +38 -9
  72. package/runtime/lib/element-template/background/instance.js +292 -113
  73. package/runtime/lib/element-template/background/instance.js.map +1 -1
  74. package/runtime/lib/element-template/client/root.d.ts +7 -0
  75. package/runtime/lib/element-template/client/root.js +3 -6
  76. package/runtime/lib/element-template/client/root.js.map +1 -1
  77. package/runtime/lib/element-template/debug/alog.d.ts +21 -0
  78. package/runtime/lib/element-template/debug/alog.js +33 -0
  79. package/runtime/lib/element-template/debug/alog.js.map +1 -1
  80. package/runtime/lib/element-template/debug/elementPAPICall.js +5 -0
  81. package/runtime/lib/element-template/debug/elementPAPICall.js.map +1 -1
  82. package/runtime/lib/element-template/hydration-map.d.ts +5 -0
  83. package/runtime/lib/element-template/hydration-map.js +12 -0
  84. package/runtime/lib/element-template/hydration-map.js.map +1 -0
  85. package/runtime/lib/element-template/index.d.ts +25 -3
  86. package/runtime/lib/element-template/index.js +38 -9
  87. package/runtime/lib/element-template/index.js.map +1 -1
  88. package/runtime/lib/element-template/internal.d.ts +5 -1
  89. package/runtime/lib/element-template/internal.js +6 -7
  90. package/runtime/lib/element-template/internal.js.map +1 -1
  91. package/runtime/lib/element-template/lynx/env.js +5 -48
  92. package/runtime/lib/element-template/lynx/env.js.map +1 -1
  93. package/runtime/lib/element-template/lynx/performance.d.ts +0 -21
  94. package/runtime/lib/element-template/lynx/performance.js +4 -121
  95. package/runtime/lib/element-template/lynx/performance.js.map +1 -1
  96. package/runtime/lib/element-template/native/index.d.ts +1 -1
  97. package/runtime/lib/element-template/native/index.js +28 -2
  98. package/runtime/lib/element-template/native/index.js.map +1 -1
  99. package/runtime/lib/element-template/native/main-thread-api.js +27 -5
  100. package/runtime/lib/element-template/native/main-thread-api.js.map +1 -1
  101. package/runtime/lib/element-template/native/mts-destroy.js +2 -0
  102. package/runtime/lib/element-template/native/mts-destroy.js.map +1 -1
  103. package/runtime/lib/element-template/native/patch-listener.js +6 -2
  104. package/runtime/lib/element-template/native/patch-listener.js.map +1 -1
  105. package/runtime/lib/element-template/native/reload-background.d.ts +1 -0
  106. package/runtime/lib/element-template/native/reload-background.js +39 -0
  107. package/runtime/lib/element-template/native/reload-background.js.map +1 -0
  108. package/runtime/lib/element-template/native/reload-main-thread.d.ts +1 -0
  109. package/runtime/lib/element-template/native/reload-main-thread.js +35 -0
  110. package/runtime/lib/element-template/native/reload-main-thread.js.map +1 -0
  111. package/runtime/lib/element-template/prop-adapters/event.d.ts +1 -0
  112. package/runtime/lib/element-template/prop-adapters/event.js +4 -1
  113. package/runtime/lib/element-template/prop-adapters/event.js.map +1 -1
  114. package/runtime/lib/element-template/prop-adapters/ref.d.ts +26 -0
  115. package/runtime/lib/element-template/prop-adapters/ref.js +107 -0
  116. package/runtime/lib/element-template/prop-adapters/ref.js.map +1 -0
  117. package/runtime/lib/element-template/prop-adapters/spread.js +8 -1
  118. package/runtime/lib/element-template/prop-adapters/spread.js.map +1 -1
  119. package/runtime/lib/element-template/protocol/opcodes.d.ts +4 -0
  120. package/runtime/lib/element-template/protocol/opcodes.js +4 -0
  121. package/runtime/lib/element-template/protocol/opcodes.js.map +1 -1
  122. package/runtime/lib/element-template/protocol/template-type.d.ts +6 -0
  123. package/runtime/lib/element-template/protocol/template-type.js +20 -0
  124. package/runtime/lib/element-template/protocol/template-type.js.map +1 -0
  125. package/runtime/lib/element-template/protocol/types.d.ts +74 -6
  126. package/runtime/lib/element-template/runtime/list/list.d.ts +65 -0
  127. package/runtime/lib/element-template/runtime/list/list.js +587 -0
  128. package/runtime/lib/element-template/runtime/list/list.js.map +1 -0
  129. package/runtime/lib/element-template/runtime/page/page.d.ts +5 -2
  130. package/runtime/lib/element-template/runtime/page/page.js +12 -0
  131. package/runtime/lib/element-template/runtime/page/page.js.map +1 -1
  132. package/runtime/lib/element-template/runtime/patch.js +210 -38
  133. package/runtime/lib/element-template/runtime/patch.js.map +1 -1
  134. package/runtime/lib/element-template/runtime/render/render-main-thread.d.ts +3 -1
  135. package/runtime/lib/element-template/runtime/render/render-main-thread.js +38 -7
  136. package/runtime/lib/element-template/runtime/render/render-main-thread.js.map +1 -1
  137. package/runtime/lib/element-template/runtime/render/render-opcodes.js +80 -43
  138. package/runtime/lib/element-template/runtime/render/render-opcodes.js.map +1 -1
  139. package/runtime/lib/element-template/runtime/render/render-to-opcodes.js +41 -4
  140. package/runtime/lib/element-template/runtime/render/render-to-opcodes.js.map +1 -1
  141. package/runtime/lib/element-template/runtime/template/attr-slot-plan.d.ts +1 -0
  142. package/runtime/lib/element-template/runtime/template/attr-slot-plan.js +4 -0
  143. package/runtime/lib/element-template/runtime/template/attr-slot-plan.js.map +1 -1
  144. package/runtime/lib/element-template/runtime/template/handle.d.ts +3 -2
  145. package/runtime/lib/element-template/runtime/template/handle.js +5 -1
  146. package/runtime/lib/element-template/runtime/template/handle.js.map +1 -1
  147. package/runtime/lib/element-template/runtime/template/registry.d.ts +2 -0
  148. package/runtime/lib/element-template/runtime/template/registry.js +6 -1
  149. package/runtime/lib/element-template/runtime/template/registry.js.map +1 -1
  150. package/runtime/lib/element-template/runtime-backend-marker.js +6 -0
  151. package/runtime/lib/element-template/runtime-backend-marker.js.map +1 -0
  152. package/runtime/lib/index.d.ts +1 -1
  153. package/runtime/lib/index.js +3 -1
  154. package/runtime/lib/index.js.map +1 -1
  155. package/runtime/lib/internal.d.ts +5 -4
  156. package/runtime/lib/internal.js +6 -5
  157. package/runtime/lib/internal.js.map +1 -1
  158. package/runtime/lib/lynx-api.d.ts +3 -8
  159. package/runtime/lib/lynx-api.js +8 -45
  160. package/runtime/lib/lynx-api.js.map +1 -1
  161. package/runtime/lib/runtime-backend-marker.js +6 -0
  162. package/runtime/lib/runtime-backend-marker.js.map +1 -0
  163. package/runtime/lib/snapshot/debug/vnodeSource.js +1 -1
  164. package/runtime/lib/snapshot/debug/vnodeSource.js.map +1 -1
  165. package/runtime/lib/snapshot/lifecycle/patch/commit.d.ts +0 -1
  166. package/runtime/lib/snapshot/lifecycle/patch/commit.js +4 -9
  167. package/runtime/lib/snapshot/lifecycle/patch/commit.js.map +1 -1
  168. package/runtime/lib/snapshot/lifecycle/patch/updateMainThread.js +2 -2
  169. package/runtime/lib/snapshot/lifecycle/patch/updateMainThread.js.map +1 -1
  170. package/runtime/lib/snapshot/lifecycle/ref/delay.d.ts +6 -13
  171. package/runtime/lib/snapshot/lifecycle/ref/delay.js +9 -30
  172. package/runtime/lib/snapshot/lifecycle/ref/delay.js.map +1 -1
  173. package/runtime/lib/snapshot/lifecycle/reload.js +2 -2
  174. package/runtime/lib/snapshot/lifecycle/reload.js.map +1 -1
  175. package/runtime/lib/snapshot/list/list.js +1 -1
  176. package/runtime/lib/snapshot/list/list.js.map +1 -1
  177. package/runtime/lib/snapshot/list/listUpdateInfo.js +3 -2
  178. package/runtime/lib/snapshot/list/listUpdateInfo.js.map +1 -1
  179. package/runtime/lib/snapshot/lynx/calledByNative.js +3 -9
  180. package/runtime/lib/snapshot/lynx/calledByNative.js.map +1 -1
  181. package/runtime/lib/snapshot/lynx/env.js +5 -51
  182. package/runtime/lib/snapshot/lynx/env.js.map +1 -1
  183. package/runtime/lib/snapshot/lynx/performance.d.ts +0 -21
  184. package/runtime/lib/snapshot/lynx/performance.js +7 -121
  185. package/runtime/lib/snapshot/lynx/performance.js.map +1 -1
  186. package/runtime/lib/snapshot/lynx/runWithForce.js +9 -39
  187. package/runtime/lib/snapshot/lynx/runWithForce.js.map +1 -1
  188. package/runtime/lib/snapshot/lynx/tt.js +10 -30
  189. package/runtime/lib/snapshot/lynx/tt.js.map +1 -1
  190. package/runtime/lib/snapshot/snapshot/backgroundSnapshot.js +4 -4
  191. package/runtime/lib/snapshot/snapshot/backgroundSnapshot.js.map +1 -1
  192. package/runtime/lib/snapshot/snapshot/list.js +1 -1
  193. package/runtime/lib/snapshot/snapshot/list.js.map +1 -1
  194. package/runtime/lib/snapshot/snapshot/ref.d.ts +3 -5
  195. package/runtime/lib/snapshot/snapshot/ref.js +16 -59
  196. package/runtime/lib/snapshot/snapshot/ref.js.map +1 -1
  197. package/runtime/lib/snapshot/snapshot/snapshot.js +1 -1
  198. package/runtime/lib/snapshot/snapshot/snapshot.js.map +1 -1
  199. package/runtime/lib/snapshot/snapshot/snapshotInstanceHydrationMap.js +1 -1
  200. package/runtime/lib/snapshot/snapshot/snapshotInstanceHydrationMap.js.map +1 -1
  201. package/runtime/lib/tsconfig.tsbuildinfo +1 -1
  202. package/runtime/lib/worklet-runtime/workletRuntime.js +1 -1
  203. package/runtime/lib/worklet-runtime/workletRuntime.js.map +1 -1
  204. package/runtime/worklet-runtime/dev.js +2 -3
  205. package/runtime/worklet-runtime/main.js +1 -1
  206. package/testing-library/dist/{rslib-runtime.js → 0~rslib-runtime.js} +14 -13
  207. package/testing-library/dist/env/index.js +2 -8
  208. package/testing-library/dist/env/vitest.js +1 -1
  209. package/testing-library/dist/plugins/index.js +13 -2
  210. package/testing-library/dist/pure.js +18 -18
  211. package/testing-library/dist/rstest-config.js +2 -4
  212. package/testing-library/dist/setupFiles/common/bootstrap.js +1 -0
  213. package/testing-library/dist/setupFiles/common/runtime-setup.js +1 -1
  214. package/testing-library/dist/setupFiles/inner/rstest.js +2 -1
  215. package/testing-library/dist/setupFiles/inner/vitest.js +2 -1
  216. package/testing-library/dist/type-entry/index.js +1 -0
  217. package/transform/dist/wasm.cjs +113 -40
  218. package/runtime/lib/element-template/hooks/react.d.ts +0 -14
  219. package/runtime/lib/element-template/hooks/react.js +0 -24
  220. package/runtime/lib/element-template/hooks/react.js.map +0 -1
  221. package/runtime/lib/element-template/runtime/components/slot.js +0 -11
  222. package/runtime/lib/element-template/runtime/components/slot.js.map +0 -1
  223. package/runtime/lib/snapshot/compat/initData.js.map +0 -1
  224. package/runtime/lib/snapshot/compat/lynxComponent.js.map +0 -1
  225. package/runtime/lib/snapshot/legacy-react-runtime/index.js.map +0 -1
  226. package/runtime/lib/snapshot/lifecycle/pass.d.ts +0 -3
  227. package/runtime/lib/snapshot/lifecycle/pass.js.map +0 -1
  228. package/runtime/lib/snapshot/lynx/component.js +0 -73
  229. package/runtime/lib/snapshot/lynx/component.js.map +0 -1
  230. package/runtime/lib/snapshot/lynx/dynamic-js.js.map +0 -1
  231. package/runtime/lib/snapshot/lynx/lazy-bundle.js.map +0 -1
  232. package/testing-library/dist/881.js +0 -1
  233. /package/runtime/lib/{snapshot/lynx/dynamic-js.d.ts → core/lynx/dynamic-import.d.ts} +0 -0
  234. /package/runtime/lib/{snapshot → core}/lynx/lazy-bundle.d.ts +0 -0
  235. /package/runtime/lib/{snapshot → core}/lynx/lazy-bundle.js +0 -0
  236. /package/runtime/lib/element-template/{runtime/components/slot.d.ts → runtime-backend-marker.d.ts} +0 -0
  237. /package/runtime/lib/{snapshot/lynx/component.d.ts → runtime-backend-marker.d.ts} +0 -0
  238. /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, markRemovedSubtreeForCurrentCommit, resetGlobalCommitContext } from './commit-context.js';
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
- export function hydrate(serialized, instance) {
10
- resetGlobalCommitContext();
11
- hydrateIntoContext(serialized, instance);
12
- return globalCommitContext.ops;
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
- export function hydrateIntoContext(serialized, instance) {
15
- hydrateInstance(serialized, instance);
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 serializedByTemplateKey = {};
27
- const serializedCursorByTemplateKey = {};
33
+ const serializedByNodeKey = {};
34
+ const serializedCursorByNodeKey = {};
28
35
  for (let i = 0; i < serializedChildren.length; i += 1) {
29
36
  const node = serializedChildren[i];
30
- (serializedByTemplateKey[node.templateKey] ??= []).push([node, i]);
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 serializedCandidates = serializedByTemplateKey[backgroundChild.type];
35
- const candidateCursor = serializedCursorByTemplateKey[backgroundChild.type] ?? 0;
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
- serializedCursorByTemplateKey[backgroundChild.type] = candidateCursor + 1;
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 serializedByTemplateKey) {
56
- const candidates = serializedByTemplateKey[key];
57
- const candidateCursor = serializedCursorByTemplateKey[key] ?? 0;
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.templateKey !== instance.type) {
67
- if (__DEV__) {
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.prepareAttributeSlotsForNative();
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, instance.elementSlots.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 = instance.elementSlots[slotId];
104
+ const backgroundSlot = backgroundElementSlots[slotId];
89
105
  if (!serializedSlot && !backgroundSlot) {
90
106
  continue;
91
107
  }
92
- hydrateElementSlot(instance, slotId, serializedSlot ?? []);
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 hydrateElementSlot(parent, slotId, serializedChildren) {
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(parent, slotId, serialized);
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 pendingMoves = new Map();
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 pendingInsertOrMovePatchCount = listDiff.insertionCount;
120
- while (currentSerializedChild || pendingInsertOrMovePatchCount > 0) {
201
+ let insertOrMovePatchesWaitingForInsertionPoint = listDiff.insertionCount;
202
+ while (currentSerializedChild || insertOrMovePatchesWaitingForInsertionPoint > 0) {
121
203
  let keepCurrentSerializedChild = false;
122
204
  if (currentSerializedChild && removalIndexes.has(oldIndex)) {
123
- emitSerializedSubtreeRemove(parent, slotId, currentSerializedChild);
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
- pendingMoves.set(move.toIndex, move.instance);
128
- pendingInsertOrMovePatchCount += 1;
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 = pendingMoves.get(newIndex);
216
+ const movedChild = movesWaitingForInsertionPoint.get(newIndex);
133
217
  if (movedChild) {
134
218
  keepCurrentSerializedChild = true;
135
- globalCommitContext.ops.push(ElementTemplateUpdateOps.insertNode, parent.instanceId, slotId, movedChild.instanceId, beforeChildId);
136
- pendingInsertOrMovePatchCount -= 1;
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, parent.instanceId, slotId, insertedChild.instanceId, beforeChildId);
143
- pendingInsertOrMovePatchCount -= 1;
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(parent, slotId, serialized) {
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
- collectSerializedSubtreeHandleIdsInto(serialized, removedSubtreeHandleIds);
160
- globalCommitContext.ops.push(ElementTemplateUpdateOps.removeNode, parent.instanceId, slotId, childId, removedSubtreeHandleIds);
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
- markRemovedSubtreeForCurrentCommit(existing);
249
+ markRemovedSubtreeForPostDispatchTeardown(existing);
163
250
  }
251
+ return true;
164
252
  }
165
- function collectSerializedSubtreeHandleIdsInto(serialized, handles) {
166
- handles.push(serialized.uid);
167
- for (const slotChildren of serialized.elementSlots ?? []) {
168
- if (!slotChildren) {
169
- continue;
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
- for (const child of slotChildren) {
172
- collectSerializedSubtreeHandleIdsInto(child, handles);
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 emitCreateSubtree(node) {
177
- for (const slotChildren of node.elementSlots) {
178
- /* v8 ignore start */
179
- if (!slotChildren) {
180
- continue;
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
- /* v8 ignore stop */
183
- for (const child of slotChildren) {
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
- node.prepareAttributeSlotsForNative();
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
- try {
192
- backgroundElementTemplateInstanceManager.updateId(instance.instanceId, handleId);
193
- instance.markCreateEmittedForHydration();
194
- return true;
195
- }
196
- catch (error) {
197
- if (__DEV__) {
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, takeRemovedSubtreesForCurrentCommit, } from './commit-context.js';
4
+ import { globalCommitContext, resetGlobalCommitContext, takeRemovedSubtreesForPostDispatchTeardown, } from './commit-context.js';
5
5
  import { markElementTemplateHydrated, resetElementTemplateCommitState, scheduleElementTemplateRemovedSubtreeCleanup, } from './commit-hook.js';
6
- import { hydrateIntoContext } from './hydrate.js';
7
- import { BackgroundElementTemplateInstance } from './instance.js';
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 { PerformanceTimingFlags, PipelineOrigins, beginPipeline, markTiming } from '../lynx/performance.js';
11
- import { flushPendingEvents } from '../prop-adapters/event.js';
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('hydrateParsePayloadStart');
25
- const instances = data;
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
- let after = root.firstChild;
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
- markElementTemplateHydrated();
53
- const hasHydrateUpdate = globalCommitContext.ops.length > 0;
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 removedSubtrees = takeRemovedSubtreesForCurrentCommit();
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(removedSubtrees);
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":"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"}
1
+ {"version":3,"file":"hydration-listener.js","sourceRoot":"","sources":["../../../src/element-template/background/hydration-listener.ts"],"names":[],"mappings":"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"}