@lynx-js/react 0.107.1 → 0.108.1

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 (135) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +4 -2
  3. package/package.json +4 -4
  4. package/refresh/.turbo/turbo-build.log +1 -1
  5. package/refresh/package.json +1 -1
  6. package/runtime/lazy/import.js +7 -1
  7. package/runtime/lepus/index.js +1 -1
  8. package/runtime/lepus/jsx-dev-runtime/index.js +1 -1
  9. package/runtime/lib/backgroundSnapshot.d.ts +1 -1
  10. package/runtime/lib/backgroundSnapshot.js +7 -4
  11. package/runtime/lib/backgroundSnapshot.js.map +1 -1
  12. package/runtime/lib/document.d.ts +33 -2
  13. package/runtime/lib/document.js +9 -1
  14. package/runtime/lib/document.js.map +1 -1
  15. package/runtime/lib/hydrate.js +2 -1
  16. package/runtime/lib/hydrate.js.map +1 -1
  17. package/runtime/lib/lifecycle/delayUnmount.d.ts +1 -1
  18. package/runtime/lib/lifecycle/delayUnmount.js +1 -4
  19. package/runtime/lib/lifecycle/delayUnmount.js.map +1 -1
  20. package/runtime/lib/lifecycle/destroy.js +2 -2
  21. package/runtime/lib/lifecycle/destroy.js.map +1 -1
  22. package/runtime/lib/lifecycle/patch/commit.d.ts +21 -3
  23. package/runtime/lib/lifecycle/patch/commit.js +44 -56
  24. package/runtime/lib/lifecycle/patch/commit.js.map +1 -1
  25. package/runtime/lib/lifecycle/patch/isMainThreadHydrationFinished.d.ts +2 -0
  26. package/runtime/lib/lifecycle/patch/isMainThreadHydrationFinished.js +9 -0
  27. package/runtime/lib/lifecycle/patch/isMainThreadHydrationFinished.js.map +1 -0
  28. package/runtime/lib/lifecycle/patch/snapshotPatch.d.ts +5 -0
  29. package/runtime/lib/lifecycle/patch/snapshotPatch.js +5 -0
  30. package/runtime/lib/lifecycle/patch/snapshotPatch.js.map +1 -1
  31. package/runtime/lib/lifecycle/patch/snapshotPatchApply.d.ts +5 -0
  32. package/runtime/lib/lifecycle/patch/snapshotPatchApply.js +21 -5
  33. package/runtime/lib/lifecycle/patch/snapshotPatchApply.js.map +1 -1
  34. package/runtime/lib/lifecycle/patch/updateMainThread.js +4 -3
  35. package/runtime/lib/lifecycle/patch/updateMainThread.js.map +1 -1
  36. package/runtime/lib/lifecycle/reload.js +11 -4
  37. package/runtime/lib/lifecycle/reload.js.map +1 -1
  38. package/runtime/lib/lifecycle/render.d.ts +1 -3
  39. package/runtime/lib/lifecycle/render.js +4 -6
  40. package/runtime/lib/lifecycle/render.js.map +1 -1
  41. package/runtime/lib/list.d.ts +1 -1
  42. package/runtime/lib/list.js +60 -23
  43. package/runtime/lib/list.js.map +1 -1
  44. package/runtime/lib/lynx/env.d.ts +1 -1
  45. package/runtime/lib/lynx/env.js +1 -1
  46. package/runtime/lib/lynx/env.js.map +1 -1
  47. package/runtime/lib/lynx/runWithForce.js +12 -4
  48. package/runtime/lib/lynx/runWithForce.js.map +1 -1
  49. package/runtime/lib/lynx/tt.js +6 -8
  50. package/runtime/lib/lynx/tt.js.map +1 -1
  51. package/runtime/lib/lynx-api.d.ts +4 -4
  52. package/runtime/lib/lynx-api.js +5 -5
  53. package/runtime/lib/lynx-api.js.map +1 -1
  54. package/runtime/lib/lynx.js +6 -5
  55. package/runtime/lib/lynx.js.map +1 -1
  56. package/runtime/lib/opcodes.js +2 -2
  57. package/runtime/lib/opcodes.js.map +1 -1
  58. package/runtime/lib/renderToOpcodes/index.js +5 -1
  59. package/runtime/lib/renderToOpcodes/index.js.map +1 -1
  60. package/runtime/lib/root.d.ts +4 -0
  61. package/runtime/lib/root.js +6 -2
  62. package/runtime/lib/root.js.map +1 -1
  63. package/runtime/lib/snapshot/ref.d.ts +1 -1
  64. package/runtime/lib/snapshot/ref.js +1 -1
  65. package/runtime/lib/snapshot/ref.js.map +1 -1
  66. package/runtime/lib/snapshot/spread.d.ts +2 -2
  67. package/runtime/lib/snapshot/spread.js +9 -9
  68. package/runtime/lib/snapshot/spread.js.map +1 -1
  69. package/runtime/lib/snapshot/workletEvent.d.ts +2 -1
  70. package/runtime/lib/snapshot/workletEvent.js +1 -1
  71. package/runtime/lib/snapshot/workletEvent.js.map +1 -1
  72. package/runtime/lib/snapshot/workletRef.d.ts +4 -4
  73. package/runtime/lib/snapshot/workletRef.js +8 -6
  74. package/runtime/lib/snapshot/workletRef.js.map +1 -1
  75. package/runtime/lib/snapshot.d.ts +31 -5
  76. package/runtime/lib/snapshot.js +15 -3
  77. package/runtime/lib/snapshot.js.map +1 -1
  78. package/runtime/lib/worklet/workletRef.d.ts +1 -0
  79. package/runtime/lib/worklet/workletRef.js +14 -12
  80. package/runtime/lib/worklet/workletRef.js.map +1 -1
  81. package/runtime/src/backgroundSnapshot.ts +20 -13
  82. package/runtime/src/document.ts +33 -2
  83. package/runtime/src/hydrate.ts +3 -1
  84. package/runtime/src/lifecycle/delayUnmount.ts +2 -2
  85. package/runtime/src/lifecycle/destroy.ts +3 -2
  86. package/runtime/src/lifecycle/patch/commit.ts +75 -72
  87. package/runtime/src/lifecycle/patch/isMainThreadHydrationFinished.ts +10 -0
  88. package/runtime/src/lifecycle/patch/snapshotPatch.ts +9 -0
  89. package/runtime/src/lifecycle/patch/snapshotPatchApply.ts +20 -5
  90. package/runtime/src/lifecycle/patch/updateMainThread.ts +4 -3
  91. package/runtime/src/lifecycle/reload.ts +14 -4
  92. package/runtime/src/lifecycle/render.ts +6 -8
  93. package/runtime/src/list.ts +71 -23
  94. package/runtime/src/lynx/env.ts +1 -1
  95. package/runtime/src/lynx/runWithForce.ts +17 -6
  96. package/runtime/src/lynx/tt.ts +10 -17
  97. package/runtime/src/lynx-api.ts +7 -7
  98. package/runtime/src/lynx.ts +7 -6
  99. package/runtime/src/opcodes.ts +2 -2
  100. package/runtime/src/renderToOpcodes/index.ts +6 -1
  101. package/runtime/src/root.ts +6 -2
  102. package/runtime/src/snapshot/ref.ts +7 -7
  103. package/runtime/src/snapshot/spread.ts +28 -10
  104. package/runtime/src/snapshot/workletEvent.ts +3 -2
  105. package/runtime/src/snapshot/workletRef.ts +18 -19
  106. package/runtime/src/snapshot.ts +35 -10
  107. package/runtime/src/worklet/workletRef.ts +15 -12
  108. package/testing-library/README.md +1 -1
  109. package/testing-library/dist/env/vitest.js +23 -23
  110. package/testing-library/dist/index.d.ts +24 -24
  111. package/testing-library/dist/index.js +2 -2
  112. package/testing-library/dist/pure.js +13 -15
  113. package/testing-library/dist/vitest-global-setup.js +13 -14
  114. package/testing-library/types/entry.d.ts +2 -2
  115. package/testing-library/types/index.d.ts +3 -3
  116. package/transform/dist/wasm.cjs +1 -1
  117. package/worklet-runtime/dist/dev.js +25 -13
  118. package/worklet-runtime/dist/dev.js.map +3 -3
  119. package/worklet-runtime/dist/main.js +25 -13
  120. package/worklet-runtime/dist/main.js.map +3 -3
  121. package/worklet-runtime/lib/bindings/bindings.d.ts +1 -1
  122. package/worklet-runtime/lib/bindings/bindings.js +2 -2
  123. package/worklet-runtime/lib/bindings/bindings.js.map +1 -1
  124. package/worklet-runtime/lib/bindings/index.d.ts +1 -1
  125. package/worklet-runtime/lib/bindings/index.js +1 -1
  126. package/worklet-runtime/lib/bindings/index.js.map +1 -1
  127. package/worklet-runtime/lib/bindings/types.d.ts +7 -3
  128. package/worklet-runtime/lib/bindings/types.js +3 -0
  129. package/worklet-runtime/lib/bindings/types.js.map +1 -1
  130. package/worklet-runtime/lib/ctxTrace.d.ts +8 -0
  131. package/worklet-runtime/lib/ctxTrace.js +13 -0
  132. package/worklet-runtime/lib/ctxTrace.js.map +1 -0
  133. package/worklet-runtime/lib/global.d.ts +3 -3
  134. package/worklet-runtime/lib/workletRuntime.js +11 -8
  135. package/worklet-runtime/lib/workletRuntime.js.map +1 -1
@@ -1,49 +1,37 @@
1
+ // Copyright 2024 The Lynx Authors. All rights reserved.
2
+ // Licensed under the Apache License Version 2.0 that can be found in the
3
+ // LICENSE file in the root directory of this source tree.
1
4
  import { options } from 'preact';
2
- import { takeGlobalSnapshotPatch } from './snapshotPatch.js';
3
5
  import { LifecycleConstant } from '../../lifecycleConstant.js';
4
6
  import { PerformanceTimingKeys, globalPipelineOptions, markTiming, markTimingLegacy, setPipeline, } from '../../lynx/performance.js';
5
7
  import { CATCH_ERROR, COMMIT, RENDER_CALLBACKS, VNODE } from '../../renderToOpcodes/constants.js';
6
- import { updateBackgroundRefs } from '../../snapshot/ref.js';
7
8
  import { backgroundSnapshotInstanceManager } from '../../snapshot.js';
9
+ import { updateBackgroundRefs } from '../../snapshot/ref.js';
8
10
  import { isEmptyObject } from '../../utils.js';
9
11
  import { takeWorkletRefInitValuePatch } from '../../worklet/workletRefPool.js';
10
12
  import { runDelayedUnmounts, takeDelayedUnmounts } from '../delayUnmount.js';
11
13
  import { getReloadVersion } from '../pass.js';
14
+ import { takeGlobalSnapshotPatch } from './snapshotPatch.js';
12
15
  let globalFlushOptions = {};
13
16
  const globalCommitTaskMap = /*@__PURE__*/ new Map();
14
17
  let nextCommitTaskId = 1;
15
18
  let globalBackgroundSnapshotInstancesToRemove = [];
16
- let patchesToCommit = [];
17
- function clearPatchesToCommit() {
18
- patchesToCommit = [];
19
- }
19
+ /**
20
+ * Replaces Preact's default commit hook with our custom implementation
21
+ */
20
22
  function replaceCommitHook() {
21
- const injectDebounceRendering = (debounceRendering) => {
22
- return (f) => {
23
- debounceRendering(() => {
24
- f();
25
- void commitToMainThread();
26
- });
27
- };
28
- };
29
- const defaultDebounceRendering = options.debounceRendering?.bind(options)
30
- ?? Promise.prototype.then.bind(Promise.resolve());
31
- let _debounceRendering = injectDebounceRendering(defaultDebounceRendering);
32
- Object.defineProperty(options, 'debounceRendering', {
33
- get() {
34
- return _debounceRendering;
35
- },
36
- set(debounceRendering) {
37
- _debounceRendering = injectDebounceRendering(debounceRendering);
38
- },
39
- });
40
- const oldCommit = options[COMMIT];
23
+ const originalPreactCommit = options[COMMIT];
41
24
  const commit = async (vnode, commitQueue) => {
42
- if (__LEPUS__) {
25
+ // Skip commit phase for MT runtime
26
+ if (__MAIN_THREAD__) {
43
27
  // for testing only
44
28
  commitQueue.length = 0;
45
29
  return;
46
30
  }
31
+ // Mark the end of virtual DOM diffing phase for performance tracking
32
+ markTimingLegacy(PerformanceTimingKeys.updateDiffVdomEnd);
33
+ markTiming(PerformanceTimingKeys.diffVdomEnd);
34
+ // The callback functions to be called after components are rendered.
47
35
  const renderCallbacks = commitQueue.map((component) => {
48
36
  const ret = {
49
37
  component,
@@ -58,10 +46,11 @@ function replaceCommitHook() {
58
46
  const backgroundSnapshotInstancesToRemove = globalBackgroundSnapshotInstancesToRemove;
59
47
  globalBackgroundSnapshotInstancesToRemove = [];
60
48
  const commitTaskId = genCommitTaskId();
49
+ // Register the commit task
61
50
  globalCommitTaskMap.set(commitTaskId, () => {
62
51
  updateBackgroundRefs(commitTaskId);
63
52
  runDelayedUnmounts(delayedUnmounts);
64
- oldCommit?.(vnode, renderCallbacks);
53
+ originalPreactCommit?.(vnode, renderCallbacks);
65
54
  renderCallbacks.some(wrapper => {
66
55
  try {
67
56
  wrapper[RENDER_CALLBACKS].some((cb) => {
@@ -80,8 +69,11 @@ function replaceCommitHook() {
80
69
  }, 10000);
81
70
  }
82
71
  });
72
+ // Collect patches for this update
83
73
  const snapshotPatch = takeGlobalSnapshotPatch();
74
+ const flushOptions = globalFlushOptions;
84
75
  const workletRefInitValuePatch = takeWorkletRefInitValuePatch();
76
+ globalFlushOptions = {};
85
77
  if (!snapshotPatch && workletRefInitValuePatch.length === 0) {
86
78
  // before hydration, skip patch
87
79
  return;
@@ -96,37 +88,27 @@ function replaceCommitHook() {
96
88
  if (workletRefInitValuePatch.length) {
97
89
  patch.workletRefInitValuePatch = workletRefInitValuePatch;
98
90
  }
99
- patchesToCommit.push(patch);
100
- };
101
- options[COMMIT] = commit;
102
- }
103
- async function commitToMainThread() {
104
- if (patchesToCommit.length === 0) {
105
- return;
106
- }
107
- markTimingLegacy(PerformanceTimingKeys.updateDiffVdomEnd);
108
- markTiming(PerformanceTimingKeys.diffVdomEnd);
109
- const flushOptions = globalFlushOptions;
110
- globalFlushOptions = {};
111
- const patchList = {
112
- patchList: patchesToCommit,
113
- };
114
- patchesToCommit = [];
115
- if (!isEmptyObject(flushOptions)) {
116
- patchList.flushOptions = flushOptions;
117
- }
118
- const obj = commitPatchUpdate(patchList, {});
119
- lynx.getNativeApp().callLepusMethod(LifecycleConstant.patchUpdate, obj, () => {
120
- for (let i = 0; i < patchList.patchList.length; i++) {
121
- const patch = patchList.patchList[i];
122
- const commitTask = globalCommitTaskMap.get(patch.id);
91
+ const patchList = {
92
+ patchList: [patch],
93
+ };
94
+ if (!isEmptyObject(flushOptions)) {
95
+ patchList.flushOptions = flushOptions;
96
+ }
97
+ const obj = commitPatchUpdate(patchList, {});
98
+ // Send the update to the native layer
99
+ lynx.getNativeApp().callLepusMethod(LifecycleConstant.patchUpdate, obj, () => {
100
+ const commitTask = globalCommitTaskMap.get(commitTaskId);
123
101
  if (commitTask) {
124
102
  commitTask();
125
- globalCommitTaskMap.delete(patch.id);
103
+ globalCommitTaskMap.delete(commitTaskId);
126
104
  }
127
- }
128
- });
105
+ });
106
+ };
107
+ options[COMMIT] = commit;
129
108
  }
109
+ /**
110
+ * Prepares the patch update for transmission to the native layer
111
+ */
130
112
  function commitPatchUpdate(patchList, patchOptions) {
131
113
  // console.debug('********** JS update:');
132
114
  // printSnapshotInstance(
@@ -154,9 +136,15 @@ function commitPatchUpdate(patchList, patchOptions) {
154
136
  }
155
137
  return obj;
156
138
  }
139
+ /**
140
+ * Generates a unique ID for commit tasks
141
+ */
157
142
  function genCommitTaskId() {
158
143
  return nextCommitTaskId++;
159
144
  }
145
+ /**
146
+ * Resets the commit task ID counter
147
+ */
160
148
  function clearCommitTaskId() {
161
149
  nextCommitTaskId = 1;
162
150
  }
@@ -170,5 +158,5 @@ function replaceRequestAnimationFrame() {
170
158
  /**
171
159
  * @internal
172
160
  */
173
- export { commitPatchUpdate, commitToMainThread, genCommitTaskId, clearCommitTaskId, globalBackgroundSnapshotInstancesToRemove, globalCommitTaskMap, globalFlushOptions, nextCommitTaskId, patchesToCommit, clearPatchesToCommit, replaceCommitHook, replaceRequestAnimationFrame, };
161
+ export { clearCommitTaskId, commitPatchUpdate, genCommitTaskId, globalBackgroundSnapshotInstancesToRemove, globalCommitTaskMap, globalFlushOptions, nextCommitTaskId, replaceCommitHook, replaceRequestAnimationFrame, };
174
162
  //# sourceMappingURL=commit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/commit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/commit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare let isMainThreadHydrationFinished: boolean;
2
+ export declare function setMainThreadHydrationFinished(isFinished: boolean): void;
@@ -0,0 +1,9 @@
1
+ import { onHydrationFinished } from '@lynx-js/react/worklet-runtime/bindings';
2
+ export let isMainThreadHydrationFinished = false;
3
+ export function setMainThreadHydrationFinished(isFinished) {
4
+ if (isFinished && !isMainThreadHydrationFinished) {
5
+ onHydrationFinished();
6
+ }
7
+ isMainThreadHydrationFinished = isFinished;
8
+ }
9
+ //# sourceMappingURL=isMainThreadHydrationFinished.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isMainThreadHydrationFinished.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/isMainThreadHydrationFinished.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAE9E,MAAM,CAAC,IAAI,6BAA6B,GAAG,KAAK,CAAC;AAEjD,MAAM,UAAU,8BAA8B,CAAC,UAAmB;IAChE,IAAI,UAAU,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACjD,mBAAmB,EAAE,CAAC;IACxB,CAAC;IACD,6BAA6B,GAAG,UAAU,CAAC;AAC7C,CAAC"}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Defines the core patch operations for the snapshot system.
3
+ * The patch operations are designed to be serializable and minimal, allowing
4
+ * efficient transmission between threads and application to element tree.
5
+ */
1
6
  export declare const enum SnapshotOperation {
2
7
  CreateElement = 0,
3
8
  InsertBefore = 1,
@@ -1,6 +1,11 @@
1
1
  // Copyright 2024 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
+ /**
5
+ * Defines the core patch operations for the snapshot system.
6
+ * The patch operations are designed to be serializable and minimal, allowing
7
+ * efficient transmission between threads and application to element tree.
8
+ */
4
9
  export var SnapshotOperation;
5
10
  (function (SnapshotOperation) {
6
11
  SnapshotOperation[SnapshotOperation["CreateElement"] = 0] = "CreateElement";
@@ -1 +1 @@
1
- {"version":3,"file":"snapshotPatch.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/snapshotPatch.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,MAAM,CAAN,IAAkB,iBASjB;AATD,WAAkB,iBAAiB;IACjC,2EAAa,CAAA;IACb,yEAAY,CAAA;IACZ,uEAAW,CAAA;IACX,yEAAY,CAAA;IACZ,2EAAa,CAAA;IAEb,2FAA0B,CAAA;IAC1B,mGAA8B,CAAA;AAChC,CAAC,EATiB,iBAAiB,KAAjB,iBAAiB,QASlC;AAyBD,MAAM,CAAC,IAAI,qBAA0B,CAAC;AAEtC,MAAM,UAAU,uBAAuB;IACrC,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,qBAAqB,CAAC;QACnC,qBAAqB,GAAG,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,qBAAqB,GAAG,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,qBAAqB,GAAG,SAAS,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"snapshotPatch.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/snapshotPatch.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D;;;;GAIG;AAEH,MAAM,CAAN,IAAkB,iBASjB;AATD,WAAkB,iBAAiB;IACjC,2EAAa,CAAA;IACb,yEAAY,CAAA;IACZ,uEAAW,CAAA;IACX,yEAAY,CAAA;IACZ,2EAAa,CAAA;IAEb,2FAA0B,CAAA;IAC1B,mGAA8B,CAAA;AAChC,CAAC,EATiB,iBAAiB,KAAjB,iBAAiB,QASlC;AA2BD,MAAM,CAAC,IAAI,qBAA0B,CAAC;AAEtC,MAAM,UAAU,uBAAuB;IACrC,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,qBAAqB,CAAC;QACnC,qBAAqB,GAAG,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,qBAAqB,GAAG,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,qBAAqB,GAAG,SAAS,CAAC;AACpC,CAAC"}
@@ -1,2 +1,7 @@
1
1
  import type { SnapshotPatch } from './snapshotPatch.js';
2
+ /**
3
+ * Applies a patch of snapshot operations to the main thread.
4
+ * This is the counterpart to the patch generation in the background thread.
5
+ * Each operation in the patch is processed sequentially to update the DOM.
6
+ */
2
7
  export declare function snapshotPatchApply(snapshotPatch: SnapshotPatch): void;
@@ -1,8 +1,26 @@
1
- import { SnapshotOperation } from './snapshotPatch.js';
1
+ // Copyright 2024 The Lynx Authors. All rights reserved.
2
+ // Licensed under the Apache License Version 2.0 that can be found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+ /**
5
+ * Implements the patch application logic for the snapshot system.
6
+ * This module is responsible for interpreting and executing patch operations
7
+ * that were generated in the background thread, applying them to the DOM
8
+ * in the main thread.
9
+ *
10
+ * The module handles various operations like element creation, insertion,
11
+ * removal, and attribute updates, ensuring they are applied in the correct
12
+ * order and with proper error handling.
13
+ */
2
14
  import { SnapshotInstance, createSnapshot, snapshotInstanceManager, snapshotManager } from '../../snapshot.js';
15
+ import { SnapshotOperation } from './snapshotPatch.js';
3
16
  function reportCtxNotFound() {
4
17
  lynx.reportError(new Error(`snapshotPatchApply failed: ctx not found`));
5
18
  }
19
+ /**
20
+ * Applies a patch of snapshot operations to the main thread.
21
+ * This is the counterpart to the patch generation in the background thread.
22
+ * Each operation in the patch is processed sequentially to update the DOM.
23
+ */
6
24
  export function snapshotPatchApply(snapshotPatch) {
7
25
  const length = snapshotPatch.length;
8
26
  for (let i = 0; i < length; ++i) {
@@ -96,10 +114,8 @@ export function snapshotPatchApply(snapshotPatch) {
96
114
  }
97
115
  }
98
116
  /**
99
- * Given an expression string, return the evaluated result with ReactLynx runtime injected.
100
- *
101
- * @param code - The code to be evaluated
102
- * @returns the evaluated expression
117
+ * Evaluates a string as code with ReactLynx runtime injected.
118
+ * Used for HMR (Hot Module Replacement) to update snapshot definitions.
103
119
  */
104
120
  function evaluate(code) {
105
121
  return new Function(`return ${code}`)();
@@ -1 +1 @@
1
- {"version":3,"file":"snapshotPatchApply.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/snapshotPatchApply.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshotPatchApply.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/snapshotPatchApply.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,16 @@
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 { clearDelayedWorklets, updateWorkletRefInitValueChanges } from '@lynx-js/react/worklet-runtime/bindings';
4
+ import { updateWorkletRefInitValueChanges } from '@lynx-js/react/worklet-runtime/bindings';
5
5
  import { snapshotPatchApply } from './snapshotPatchApply.js';
6
6
  import { LifecycleConstant } from '../../lifecycleConstant.js';
7
7
  import { __pendingListUpdates } from '../../list.js';
8
- import { PerformanceTimingKeys, markTiming, setPipeline } from '../../lynx/performance.js';
8
+ import { markTiming, PerformanceTimingKeys, setPipeline } from '../../lynx/performance.js';
9
9
  import { takeGlobalRefPatchMap } from '../../snapshot/ref.js';
10
10
  import { __page } from '../../snapshot.js';
11
11
  import { isEmptyObject } from '../../utils.js';
12
12
  import { getReloadVersion } from '../pass.js';
13
+ import { setMainThreadHydrationFinished } from './isMainThreadHydrationFinished.js';
13
14
  function updateMainThread({ data, patchOptions }) {
14
15
  if ((patchOptions.reloadVersion) < getReloadVersion()) {
15
16
  return;
@@ -34,7 +35,7 @@ function updateMainThread({ data, patchOptions }) {
34
35
  markTiming(PerformanceTimingKeys.patchChangesEnd);
35
36
  markTiming(PerformanceTimingKeys.mtsRenderEnd);
36
37
  if (patchOptions.isHydration) {
37
- clearDelayedWorklets();
38
+ setMainThreadHydrationFinished(true);
38
39
  }
39
40
  if (patchOptions.pipelineOptions) {
40
41
  flushOptions.pipelineOptions = patchOptions.pipelineOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"updateMainThread.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/updateMainThread.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;AAGjH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,SAAS,gBAAgB,CACvB,EAAE,IAAI,EAAE,YAAY,EAGnB;IAED,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,gBAAgB,EAAE,EAAE,CAAC;QACtD,OAAO;IACT,CAAC;IAED,WAAW,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAC1C,UAAU,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACjD,UAAU,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC;IAEvE,UAAU,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAClD,UAAU,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAEpD,KAAK,MAAM,EAAE,aAAa,EAAE,wBAAwB,EAAE,EAAE,EAAE,IAAI,SAAS,EAAE,CAAC;QACxE,gCAAgC,CAAC,wBAAwB,CAAC,CAAC;QAC3D,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,aAAa,EAAE,CAAC;YAClB,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACpC,CAAC;QACD,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAC7B,kDAAkD;QAClD,kEAAkE;QAElE,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,UAAU,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAClD,UAAU,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,oBAAoB,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;QACjC,YAAY,CAAC,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;IAC9D,CAAC;IACD,4BAA4B;IAC5B,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,2BAA2B,CAAC,YAAqB;IACxD,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACzC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"updateMainThread.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/updateMainThread.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,25 @@
1
1
  // Copyright 2024 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
+ /**
5
+ * Implements the reload (thinking of "refresh" in browser) for both main thread
6
+ * and background thread.
7
+ */
8
+ import { render } from 'preact';
4
9
  import { hydrate } from '../hydrate.js';
5
10
  import { LifecycleConstant } from '../lifecycleConstant.js';
6
11
  import { __pendingListUpdates } from '../list.js';
7
12
  import { __root, setRoot } from '../root.js';
8
- import { takeGlobalRefPatchMap } from '../snapshot/ref.js';
9
13
  import { SnapshotInstance, __page, snapshotInstanceManager } from '../snapshot.js';
14
+ import { takeGlobalRefPatchMap } from '../snapshot/ref.js';
10
15
  import { isEmptyObject } from '../utils.js';
11
- import { destroyBackground } from './destroy.js';
12
16
  import { destroyWorklet } from '../worklet/destroy.js';
17
+ import { destroyBackground } from './destroy.js';
13
18
  import { clearJSReadyEventIdSwap, isJSReady } from './event/jsReady.js';
14
19
  import { increaseReloadVersion } from './pass.js';
15
20
  import { deinitGlobalSnapshotPatch } from './patch/snapshotPatch.js';
16
- import { renderBackground, renderMainThread } from './render.js';
21
+ import { renderMainThread } from './render.js';
22
+ import { setMainThreadHydrationFinished } from './patch/isMainThreadHydrationFinished.js';
17
23
  function reloadMainThread(data, options) {
18
24
  if (__PROFILE__) {
19
25
  console.profile('reloadTemplate');
@@ -26,6 +32,7 @@ function reloadMainThread(data, options) {
26
32
  snapshotInstanceManager.clear();
27
33
  __pendingListUpdates.clear();
28
34
  clearJSReadyEventIdSwap();
35
+ setMainThreadHydrationFinished(false);
29
36
  const oldRoot = __root;
30
37
  setRoot(new SnapshotInstance('root'));
31
38
  __root.__jsx = oldRoot.__jsx;
@@ -59,7 +66,7 @@ function reloadBackground(updateData) {
59
66
  increaseReloadVersion();
60
67
  // COW when modify `lynx.__initData` to make sure Provider & Consumer works
61
68
  lynx.__initData = Object.assign({}, lynx.__initData, updateData);
62
- renderBackground(__root.__jsx, __root);
69
+ render(__root.__jsx, __root);
63
70
  if (__PROFILE__) {
64
71
  console.profileEnd();
65
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reload.js","sourceRoot":"","sources":["../../src/lifecycle/reload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reload.js","sourceRoot":"","sources":["../../src/lifecycle/reload.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,2 @@
1
- import type { ComponentChild, ContainerNode } from 'preact';
2
1
  declare function renderMainThread(): void;
3
- declare function renderBackground(vnode: ComponentChild, parent: ContainerNode): void;
4
- export { renderMainThread, renderBackground };
2
+ export { renderMainThread };
@@ -1,11 +1,13 @@
1
1
  // Copyright 2024 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
+ /**
5
+ * Implements the IFR (Instant First-Frame Rendering) on main thread.
6
+ */
4
7
  import { render } from 'preact';
5
8
  import { renderOpcodesInto } from '../opcodes.js';
6
9
  import { render as renderToString } from '../renderToOpcodes/index.js';
7
10
  import { __root } from '../root.js';
8
- import { commitToMainThread } from './patch/commit.js';
9
11
  function renderMainThread() {
10
12
  /* v8 ignore start */
11
13
  if (process.env['NODE_ENV'] === 'test' && typeof __TESTING_FORCE_RENDER_TO_OPCODE__ !== 'undefined'
@@ -43,9 +45,5 @@ function renderMainThread() {
43
45
  }
44
46
  /* v8 ignore stop */
45
47
  }
46
- function renderBackground(vnode, parent) {
47
- render(vnode, parent);
48
- void commitToMainThread();
49
- }
50
- export { renderMainThread, renderBackground };
48
+ export { renderMainThread };
51
49
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/lifecycle/render.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,SAAS,gBAAgB;IACvB,qBAAqB;IACrB,IACE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,IAAI,OAAO,kCAAkC,KAAK,WAAW;WAC5F,CAAC,kCAAkC,EACtC,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAa,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACpC,CAAC;YACD,aAAa;YACb,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,WAAW,CAAC,CAAU,CAAC,CAAC;YAC7B,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,iBAAiB,CAAC,OAAO,EAAE,MAAa,CAAC,CAAC;QAC1C,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC;QAC7B,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IACD,oBAAoB;AACtB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAqB,EAAE,MAAqB;IACpE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtB,KAAK,kBAAkB,EAAE,CAAC;AAC5B,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/lifecycle/render.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,SAAS,gBAAgB;IACvB,qBAAqB;IACrB,IACE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,IAAI,OAAO,kCAAkC,KAAK,WAAW;WAC5F,CAAC,kCAAkC,EACtC,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAa,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACpC,CAAC;YACD,aAAa;YACb,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,WAAW,CAAC,CAAU,CAAC,CAAC;YAC7B,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,iBAAiB,CAAC,OAAO,EAAE,MAAa,CAAC,CAAC;QAC1C,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC;QAC7B,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IACD,oBAAoB;AACtB,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -43,7 +43,7 @@ export declare const __pendingListUpdates: {
43
43
  export declare const gSignMap: Record<number, Map<number, SnapshotInstance>>;
44
44
  export declare const gRecycleMap: Record<number, Map<string, Map<number, SnapshotInstance>>>;
45
45
  export declare function clearListGlobal(): void;
46
- export declare function componentAtIndexFactory(ctx: SnapshotInstance[]): ComponentAtIndexCallback;
46
+ export declare function componentAtIndexFactory(ctx: SnapshotInstance[]): [ComponentAtIndexCallback, ComponentAtIndexesCallback];
47
47
  export declare function enqueueComponentFactory(): EnqueueComponentCallback;
48
48
  export declare function snapshotCreateList(pageId: number, _ctx: SnapshotInstance, _expIndex: number): FiberElement;
49
49
  export declare function snapshotDestroyList(si: SnapshotInstance): void;
@@ -46,7 +46,8 @@ export class ListUpdateInfoRecording {
46
46
  // __FlushElementTree(listElement);
47
47
  // });
48
48
  __SetAttribute(listElement, 'update-list-info', this.__toAttribute());
49
- __UpdateListCallbacks(listElement, componentAtIndexFactory(this.list.childNodes), enqueueComponentFactory());
49
+ const [componentAtIndex, componentAtIndexes] = componentAtIndexFactory(this.list.childNodes);
50
+ __UpdateListCallbacks(listElement, componentAtIndex, enqueueComponentFactory(), componentAtIndexes);
50
51
  }
51
52
  oldChildNodes;
52
53
  // private oldChildNodesSet: Set<SnapshotInstance>;
@@ -190,7 +191,7 @@ export function clearListGlobal() {
190
191
  }
191
192
  }
192
193
  export function componentAtIndexFactory(ctx) {
193
- const componentAtIndex = (list, listID, cellIndex, operationID, enableReuseNotification) => {
194
+ const componentAtIndex = (list, listID, cellIndex, operationID, enableReuseNotification, enableBatchRender = false, asyncFlush = false) => {
194
195
  const signMap = gSignMap[listID];
195
196
  const recycleMap = gRecycleMap[listID];
196
197
  if (!signMap || !recycleMap) {
@@ -219,7 +220,16 @@ export function componentAtIndexFactory(ctx) {
219
220
  if (recycleSignMap?.has(sign)) {
220
221
  signMap.set(sign, childCtx);
221
222
  recycleSignMap.delete(sign);
222
- __FlushElementTree(root, { triggerLayout: true, operationID, elementID: sign, listID });
223
+ if (!enableBatchRender) {
224
+ __FlushElementTree(root, { triggerLayout: true, operationID, elementID: sign, listID });
225
+ }
226
+ else if (enableBatchRender && asyncFlush) {
227
+ __FlushElementTree(root, { asyncFlush: true });
228
+ }
229
+ else {
230
+ // enableBatchRender == true && asyncFlush == false
231
+ // in this case, no need to invoke __FlushElementTree because in the end of componentAtIndexes(), the list will invoke __FlushElementTree.
232
+ }
223
233
  return sign;
224
234
  }
225
235
  else {
@@ -234,25 +244,32 @@ export function componentAtIndexFactory(ctx) {
234
244
  hydrate(oldCtx, childCtx);
235
245
  oldCtx.unRenderElements();
236
246
  const root = childCtx.__element_root;
237
- if (enableReuseNotification) {
238
- __FlushElementTree(root, {
247
+ if (!enableBatchRender) {
248
+ const flushOptions = {
239
249
  triggerLayout: true,
240
250
  operationID,
241
251
  elementID: sign,
242
252
  listID,
243
- listReuseNotification: {
253
+ };
254
+ if (enableReuseNotification) {
255
+ flushOptions.listReuseNotification = {
244
256
  listElement: list,
245
257
  itemKey: platformInfo['item-key'],
246
- },
247
- });
258
+ };
259
+ }
260
+ __FlushElementTree(root, flushOptions);
248
261
  }
249
- else {
250
- __FlushElementTree(root, {
251
- triggerLayout: true,
252
- operationID,
253
- elementID: sign,
254
- listID,
255
- });
262
+ else if (enableBatchRender && asyncFlush) {
263
+ const flushOptions = {
264
+ asyncFlush: true,
265
+ };
266
+ if (enableReuseNotification) {
267
+ flushOptions.listReuseNotification = {
268
+ listElement: list,
269
+ itemKey: platformInfo['item-key'],
270
+ };
271
+ }
272
+ __FlushElementTree(root, flushOptions);
256
273
  }
257
274
  signMap.set(sign, childCtx);
258
275
  commitMainThreadPatchUpdate(undefined);
@@ -262,17 +279,36 @@ export function componentAtIndexFactory(ctx) {
262
279
  const root = childCtx.__element_root;
263
280
  __AppendElement(list, root);
264
281
  const sign = __GetElementUniqueID(root);
265
- __FlushElementTree(root, {
266
- triggerLayout: true,
267
- operationID,
268
- elementID: sign,
269
- listID,
270
- });
282
+ if (!enableBatchRender) {
283
+ __FlushElementTree(root, {
284
+ triggerLayout: true,
285
+ operationID,
286
+ elementID: sign,
287
+ listID,
288
+ });
289
+ }
290
+ else if (enableBatchRender && asyncFlush) {
291
+ __FlushElementTree(root, {
292
+ asyncFlush: true,
293
+ });
294
+ }
271
295
  signMap.set(sign, childCtx);
272
296
  commitMainThreadPatchUpdate(undefined);
273
297
  return sign;
274
298
  };
275
- return componentAtIndex;
299
+ const componentAtIndexes = (list, listID, cellIndexes, operationIDs, enableReuseNotification, asyncFlush) => {
300
+ const uiSigns = cellIndexes.map((cellIndex, index) => {
301
+ const operationID = operationIDs[index] ?? 0;
302
+ return componentAtIndex(list, listID, cellIndex, operationID, enableReuseNotification, true, asyncFlush);
303
+ });
304
+ __FlushElementTree(list, {
305
+ triggerLayout: true,
306
+ operationIDs: operationIDs,
307
+ elementIDs: uiSigns,
308
+ listID,
309
+ });
310
+ };
311
+ return [componentAtIndex, componentAtIndexes];
276
312
  }
277
313
  export function enqueueComponentFactory() {
278
314
  const enqueueComponent = (_, listID, sign) => {
@@ -297,7 +333,8 @@ export function enqueueComponentFactory() {
297
333
  export function snapshotCreateList(pageId, _ctx, _expIndex) {
298
334
  const signMap = new Map();
299
335
  const recycleMap = new Map();
300
- const list = __CreateList(pageId, componentAtIndexFactory([]), enqueueComponentFactory(), {});
336
+ const [componentAtIndex, componentAtIndexes] = componentAtIndexFactory([]);
337
+ const list = __CreateList(pageId, componentAtIndex, enqueueComponentFactory(), {}, componentAtIndexes);
301
338
  const listID = __GetElementUniqueID(list);
302
339
  gSignMap[listID] = signMap;
303
340
  gRecycleMap[listID] = recycleMap;