@lynx-js/react 0.109.2 → 0.110.0

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 (131) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/package.json +1 -1
  3. package/refresh/.turbo/turbo-build.log +1 -1
  4. package/runtime/lib/backgroundSnapshot.d.ts +2 -1
  5. package/runtime/lib/backgroundSnapshot.js +65 -42
  6. package/runtime/lib/backgroundSnapshot.js.map +1 -1
  7. package/runtime/lib/hooks/react.js +3 -3
  8. package/runtime/lib/hooks/react.js.map +1 -1
  9. package/runtime/lib/lifecycle/destroy.js +1 -0
  10. package/runtime/lib/lifecycle/destroy.js.map +1 -1
  11. package/runtime/lib/lifecycle/event/delayEvents.js +3 -0
  12. package/runtime/lib/lifecycle/event/delayEvents.js.map +1 -1
  13. package/runtime/lib/lifecycle/event/delayLifecycleEvents.d.ts +3 -2
  14. package/runtime/lib/lifecycle/event/delayLifecycleEvents.js +1 -12
  15. package/runtime/lib/lifecycle/event/delayLifecycleEvents.js.map +1 -1
  16. package/runtime/lib/lifecycle/event/jsReady.d.ts +1 -1
  17. package/runtime/lib/lifecycle/event/jsReady.js +3 -2
  18. package/runtime/lib/lifecycle/event/jsReady.js.map +1 -1
  19. package/runtime/lib/lifecycle/patch/commit.d.ts +0 -2
  20. package/runtime/lib/lifecycle/patch/commit.js +8 -36
  21. package/runtime/lib/lifecycle/patch/commit.js.map +1 -1
  22. package/runtime/lib/lifecycle/patch/error.d.ts +8 -0
  23. package/runtime/lib/lifecycle/patch/error.js +47 -0
  24. package/runtime/lib/lifecycle/patch/error.js.map +1 -0
  25. package/runtime/lib/lifecycle/patch/isMainThreadHydrationFinished.js +3 -0
  26. package/runtime/lib/lifecycle/patch/isMainThreadHydrationFinished.js.map +1 -1
  27. package/runtime/lib/lifecycle/patch/snapshotPatch.d.ts +2 -2
  28. package/runtime/lib/lifecycle/patch/snapshotPatch.js.map +1 -1
  29. package/runtime/lib/lifecycle/patch/snapshotPatchApply.js +10 -10
  30. package/runtime/lib/lifecycle/patch/snapshotPatchApply.js.map +1 -1
  31. package/runtime/lib/lifecycle/patch/updateMainThread.d.ts +0 -1
  32. package/runtime/lib/lifecycle/patch/updateMainThread.js +6 -13
  33. package/runtime/lib/lifecycle/patch/updateMainThread.js.map +1 -1
  34. package/runtime/lib/lifecycle/ref/delay.d.ts +31 -0
  35. package/runtime/lib/lifecycle/ref/delay.js +80 -0
  36. package/runtime/lib/lifecycle/ref/delay.js.map +1 -0
  37. package/runtime/lib/lifecycle/reload.d.ts +1 -1
  38. package/runtime/lib/lifecycle/reload.js +7 -4
  39. package/runtime/lib/lifecycle/reload.js.map +1 -1
  40. package/runtime/lib/lifecycle/render.js +3 -2
  41. package/runtime/lib/lifecycle/render.js.map +1 -1
  42. package/runtime/lib/lifecycleConstant.d.ts +10 -7
  43. package/runtime/lib/lifecycleConstant.js +8 -8
  44. package/runtime/lib/lifecycleConstant.js.map +1 -1
  45. package/runtime/lib/list.d.ts +1 -1
  46. package/runtime/lib/list.js +9 -7
  47. package/runtime/lib/list.js.map +1 -1
  48. package/runtime/lib/lynx/calledByNative.js +8 -5
  49. package/runtime/lib/lynx/calledByNative.js.map +1 -1
  50. package/runtime/lib/lynx/component.js +7 -0
  51. package/runtime/lib/lynx/component.js.map +1 -1
  52. package/runtime/lib/lynx/dynamic-js.d.ts +5 -1
  53. package/runtime/lib/lynx/dynamic-js.js +1 -0
  54. package/runtime/lib/lynx/dynamic-js.js.map +1 -1
  55. package/runtime/lib/lynx/env.d.ts +1 -1
  56. package/runtime/lib/lynx/env.js +13 -13
  57. package/runtime/lib/lynx/env.js.map +1 -1
  58. package/runtime/lib/lynx/lazy-bundle.js +7 -5
  59. package/runtime/lib/lynx/lazy-bundle.js.map +1 -1
  60. package/runtime/lib/lynx/performance.js +1 -1
  61. package/runtime/lib/lynx/performance.js.map +1 -1
  62. package/runtime/lib/lynx/runWithForce.js +3 -0
  63. package/runtime/lib/lynx/runWithForce.js.map +1 -1
  64. package/runtime/lib/lynx/tt.js +12 -33
  65. package/runtime/lib/lynx/tt.js.map +1 -1
  66. package/runtime/lib/lynx-api.d.ts +1 -1
  67. package/runtime/lib/lynx.js +5 -6
  68. package/runtime/lib/lynx.js.map +1 -1
  69. package/runtime/lib/snapshot/ref.d.ts +14 -9
  70. package/runtime/lib/snapshot/ref.js +64 -73
  71. package/runtime/lib/snapshot/ref.js.map +1 -1
  72. package/runtime/lib/snapshot/spread.js +9 -8
  73. package/runtime/lib/snapshot/spread.js.map +1 -1
  74. package/runtime/lib/snapshot/workletRef.d.ts +3 -3
  75. package/runtime/lib/snapshot/workletRef.js +27 -8
  76. package/runtime/lib/snapshot/workletRef.js.map +1 -1
  77. package/runtime/lib/snapshot.d.ts +4 -4
  78. package/runtime/lib/snapshot.js +28 -13
  79. package/runtime/lib/snapshot.js.map +1 -1
  80. package/runtime/lib/snapshotInstanceHydrationMap.d.ts +9 -0
  81. package/runtime/lib/snapshotInstanceHydrationMap.js +16 -0
  82. package/runtime/lib/snapshotInstanceHydrationMap.js.map +1 -0
  83. package/runtime/lib/worklet/workletRef.js +1 -2
  84. package/runtime/lib/worklet/workletRef.js.map +1 -1
  85. package/runtime/src/backgroundSnapshot.ts +74 -47
  86. package/runtime/src/hooks/react.ts +3 -3
  87. package/runtime/src/lifecycle/destroy.ts +1 -0
  88. package/runtime/src/lifecycle/event/delayEvents.ts +3 -0
  89. package/runtime/src/lifecycle/event/delayLifecycleEvents.ts +7 -13
  90. package/runtime/src/lifecycle/event/jsReady.ts +4 -3
  91. package/runtime/src/lifecycle/patch/commit.ts +10 -41
  92. package/runtime/src/lifecycle/patch/error.ts +61 -0
  93. package/runtime/src/lifecycle/patch/isMainThreadHydrationFinished.ts +3 -0
  94. package/runtime/src/lifecycle/patch/snapshotPatch.ts +2 -2
  95. package/runtime/src/lifecycle/patch/snapshotPatchApply.ts +28 -28
  96. package/runtime/src/lifecycle/patch/updateMainThread.ts +7 -16
  97. package/runtime/src/lifecycle/ref/delay.ts +99 -0
  98. package/runtime/src/lifecycle/reload.ts +9 -6
  99. package/runtime/src/lifecycle/render.ts +3 -2
  100. package/runtime/src/lifecycleConstant.ts +11 -7
  101. package/runtime/src/list.ts +9 -7
  102. package/runtime/src/lynx/calledByNative.ts +14 -9
  103. package/runtime/src/lynx/component.ts +9 -0
  104. package/runtime/src/lynx/dynamic-js.ts +5 -1
  105. package/runtime/src/lynx/env.ts +17 -17
  106. package/runtime/src/lynx/lazy-bundle.ts +22 -14
  107. package/runtime/src/lynx/performance.ts +1 -1
  108. package/runtime/src/lynx/runWithForce.ts +9 -5
  109. package/runtime/src/lynx/tt.ts +19 -37
  110. package/runtime/src/lynx-api.ts +1 -1
  111. package/runtime/src/lynx.ts +6 -6
  112. package/runtime/src/snapshot/ref.ts +77 -87
  113. package/runtime/src/snapshot/spread.ts +8 -8
  114. package/runtime/src/snapshot/workletRef.ts +35 -9
  115. package/runtime/src/snapshot.ts +39 -20
  116. package/runtime/src/snapshotInstanceHydrationMap.ts +17 -0
  117. package/runtime/src/worklet/workletRef.ts +1 -2
  118. package/testing-library/dist/env/vitest.js +5 -3
  119. package/testing-library/dist/pure.js +4 -3
  120. package/transform/dist/wasm.cjs +1 -1
  121. package/worklet-runtime/dist/dev.js +1 -4
  122. package/worklet-runtime/dist/main.js +0 -3
  123. package/worklet-runtime/lib/bindings/observers.d.ts +14 -1
  124. package/worklet-runtime/lib/bindings/observers.js +7 -7
  125. package/worklet-runtime/lib/bindings/observers.js.map +1 -1
  126. package/worklet-runtime/lib/hydrate.js +0 -5
  127. package/worklet-runtime/lib/hydrate.js.map +1 -1
  128. package/runtime/lib/lifecycle/delayUnmount.d.ts +0 -8
  129. package/runtime/lib/lifecycle/delayUnmount.js +0 -65
  130. package/runtime/lib/lifecycle/delayUnmount.js.map +0 -1
  131. package/runtime/src/lifecycle/delayUnmount.ts +0 -77
@@ -0,0 +1,47 @@
1
+ // Copyright 2025 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
+ import { backgroundSnapshotInstanceManager, snapshotManager } from '../../snapshot.js';
5
+ export const ctxNotFoundType = 'Lynx.Error.CtxNotFound';
6
+ const errorMsg = 'snapshotPatchApply failed: ctx not found';
7
+ let ctxNotFoundEventListener = null;
8
+ export function sendCtxNotFoundEventToBackground(id) {
9
+ /* v8 ignore next 3 */
10
+ if (!lynx.getJSContext) {
11
+ throw new Error(errorMsg);
12
+ }
13
+ lynx.getJSContext().dispatchEvent({
14
+ type: ctxNotFoundType,
15
+ data: {
16
+ id,
17
+ },
18
+ });
19
+ }
20
+ export function reportCtxNotFound(data) {
21
+ const id = data.id;
22
+ const instance = backgroundSnapshotInstanceManager.values.get(id);
23
+ let snapshotType = 'null';
24
+ if (instance && instance.__snapshot_def) {
25
+ for (const [snapshotId, snapshot] of snapshotManager.values.entries()) {
26
+ if (snapshot === instance.__snapshot_def) {
27
+ snapshotType = snapshotId;
28
+ break;
29
+ }
30
+ }
31
+ }
32
+ lynx.reportError(new Error(`${errorMsg}, snapshot type: '${snapshotType}'`));
33
+ }
34
+ export function addCtxNotFoundEventListener() {
35
+ ctxNotFoundEventListener = (e) => {
36
+ reportCtxNotFound(e.data);
37
+ };
38
+ lynx.getCoreContext?.().addEventListener(ctxNotFoundType, ctxNotFoundEventListener);
39
+ }
40
+ export function removeCtxNotFoundEventListener() {
41
+ const coreContext = lynx.getCoreContext?.();
42
+ if (coreContext && ctxNotFoundEventListener) {
43
+ coreContext.removeEventListener(ctxNotFoundType, ctxNotFoundEventListener);
44
+ ctxNotFoundEventListener = null;
45
+ }
46
+ }
47
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/error.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,iCAAiC,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEvF,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,0CAA0C,CAAC;AAE5D,IAAI,wBAAwB,GAA6C,IAAI,CAAC;AAM9E,MAAM,UAAU,gCAAgC,CAAC,EAAU;IACzD,sBAAsB;IACtB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC;QAChC,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE;YACJ,EAAE;SACgB;KACrB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,YAAY,GAAG,MAAM,CAAC;IAE1B,IAAI,QAAQ,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACtE,IAAI,QAAQ,KAAK,QAAQ,CAAC,cAAc,EAAE,CAAC;gBACzC,YAAY,GAAG,UAAU,CAAC;gBAC1B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,GAAG,QAAQ,qBAAqB,YAAY,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,wBAAwB,GAAG,CAAC,CAAC,EAAE,EAAE;QAC/B,iBAAiB,CAAC,CAAC,CAAC,IAAuB,CAAC,CAAC;IAC/C,CAAC,CAAC;IACF,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;IAC5C,IAAI,WAAW,IAAI,wBAAwB,EAAE,CAAC;QAC5C,WAAW,CAAC,mBAAmB,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;QAC3E,wBAAwB,GAAG,IAAI,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -1,3 +1,6 @@
1
+ // Copyright 2025 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 { onHydrationFinished } from '@lynx-js/react/worklet-runtime/bindings';
2
5
  export let isMainThreadHydrationFinished = false;
3
6
  export function setMainThreadHydrationFinished(isFinished) {
@@ -1 +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
+ {"version":3,"file":"isMainThreadHydrationFinished.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/isMainThreadHydrationFinished.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,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"}
@@ -12,8 +12,8 @@ export declare const enum SnapshotOperation {
12
12
  DEV_ONLY_AddSnapshot = 100,
13
13
  DEV_ONLY_RegisterWorklet = 101
14
14
  }
15
- export type SnapshotPatch = any[];
16
- export declare let __globalSnapshotPatch: any;
15
+ export type SnapshotPatch = unknown[];
16
+ export declare let __globalSnapshotPatch: SnapshotPatch | undefined;
17
17
  export declare function takeGlobalSnapshotPatch(): SnapshotPatch | undefined;
18
18
  export declare function initGlobalSnapshotPatch(): void;
19
19
  export declare function deinitGlobalSnapshotPatch(): void;
@@ -1 +1 @@
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
+ {"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,qBAAgD,CAAC;AAE5D,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"}
@@ -11,11 +11,9 @@
11
11
  * removal, and attribute updates, ensuring they are applied in the correct
12
12
  * order and with proper error handling.
13
13
  */
14
- import { SnapshotInstance, createSnapshot, entryUniqID, snapshotInstanceManager, snapshotManager, } from '../../snapshot.js';
14
+ import { sendCtxNotFoundEventToBackground } from './error.js';
15
15
  import { SnapshotOperation } from './snapshotPatch.js';
16
- function reportCtxNotFound() {
17
- lynx.reportError(new Error(`snapshotPatchApply failed: ctx not found`));
18
- }
16
+ import { SnapshotInstance, createSnapshot, entryUniqID, snapshotInstanceManager, snapshotManager, } from '../../snapshot.js';
19
17
  /**
20
18
  * Applies a patch of snapshot operations to the main thread.
21
19
  * This is the counterpart to the patch generation in the background thread.
@@ -39,7 +37,7 @@ export function snapshotPatchApply(snapshotPatch) {
39
37
  const child = snapshotInstanceManager.values.get(childId);
40
38
  const existingNode = snapshotInstanceManager.values.get(beforeId);
41
39
  if (!parent || !child) {
42
- reportCtxNotFound();
40
+ sendCtxNotFoundEventToBackground(parent ? childId : parentId);
43
41
  }
44
42
  else {
45
43
  parent.insertBefore(child, existingNode);
@@ -52,7 +50,7 @@ export function snapshotPatchApply(snapshotPatch) {
52
50
  const parent = snapshotInstanceManager.values.get(parentId);
53
51
  const child = snapshotInstanceManager.values.get(childId);
54
52
  if (!parent || !child) {
55
- reportCtxNotFound();
53
+ sendCtxNotFoundEventToBackground(parent ? childId : parentId);
56
54
  }
57
55
  else {
58
56
  parent.removeChild(child);
@@ -68,7 +66,7 @@ export function snapshotPatchApply(snapshotPatch) {
68
66
  si.setAttribute(dynamicPartIndex, value);
69
67
  }
70
68
  else {
71
- reportCtxNotFound();
69
+ sendCtxNotFoundEventToBackground(id);
72
70
  }
73
71
  break;
74
72
  }
@@ -80,7 +78,7 @@ export function snapshotPatchApply(snapshotPatch) {
80
78
  si.setAttribute('values', values);
81
79
  }
82
80
  else {
83
- reportCtxNotFound();
81
+ sendCtxNotFoundEventToBackground(id);
84
82
  }
85
83
  break;
86
84
  }
@@ -90,12 +88,14 @@ export function snapshotPatchApply(snapshotPatch) {
90
88
  const create = snapshotPatch[++i];
91
89
  const update = snapshotPatch[++i];
92
90
  const slot = snapshotPatch[++i];
93
- const cssId = snapshotPatch[++i] ?? 0;
91
+ const cssId = (snapshotPatch[++i] ?? 0);
94
92
  const entryName = snapshotPatch[++i];
95
93
  if (!snapshotManager.values.has(entryUniqID(uniqID, entryName))) {
96
94
  // HMR-related
97
95
  // Update the evaluated snapshots from JS.
98
- createSnapshot(uniqID, evaluate(create), update.map(evaluate), slot, cssId, entryName);
96
+ createSnapshot(uniqID, evaluate(create),
97
+ // eslint-disable-next-line unicorn/no-array-callback-reference
98
+ update.map(evaluate), slot, cssId, entryName, null);
99
99
  }
100
100
  }
101
101
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"snapshotPatchApply.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/snapshotPatchApply.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D;;;;;;;;;GASG;AAEH,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,uBAAuB,EACvB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,SAAS,iBAAiB;IACxB,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAA4B;IAC7D,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QAChC,QAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,KAAK,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;gBACrC,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChC,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9B,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/B,MAAM;YACR,CAAC;YACD,KAAK,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;gBACpC,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpC,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpC,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5D,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC1D,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAClE,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;oBACtB,iBAAiB,EAAE,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBAC3C,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;gBACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpC,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnC,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5D,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC1D,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;oBACtB,iBAAiB,EAAE,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;gBACpC,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9B,MAAM,gBAAgB,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,MAAM,EAAE,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClD,IAAI,EAAE,EAAE,CAAC;oBACP,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,iBAAiB,EAAE,CAAC;gBACtB,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;gBACrC,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClC,MAAM,EAAE,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClD,IAAI,EAAE,EAAE,CAAC;oBACP,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,iBAAiB,EAAE,CAAC;gBACtB,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC5C,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,MAAM,GAAW,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1C,MAAM,MAAM,GAAW,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1C,MAAM,MAAM,GAAa,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChC,MAAM,KAAK,GAAW,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC9C,MAAM,SAAS,GAAuB,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;oBAEzD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;wBAChE,cAAc;wBACd,0CAA0C;wBAC1C,cAAc,CACZ,MAAM,EACN,QAAQ,CAA4C,MAAM,CAAC,EAC3D,MAAM,CAAC,GAAG,CAAgE,QAAQ,CAAC,EACnF,IAAI,EACJ,KAAK,EACL,SAAS,CACV,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YACC,qDAAqD;YACrD,mBAAmB;YACnB,mBAAmB;YACnB,+CAA+C;YAC/C,gDAAgD;YAChD,6EAA6E;YAC7E,gDAAgD;YAChD,MAAM;YACN,WAAW;YACX,IAAI;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,qBAAqB;AACrB;;;GAGG;AACH,SAAS,QAAQ,CAAI,IAAY;IAC/B,IAAI,OAAO,EAAE,CAAC;QACZ,wGAAwG;QACxG,6DAA6D;QAC7D,OAAO,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC1E,CAAC;AACD,oBAAoB"}
1
+ {"version":3,"file":"snapshotPatchApply.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/snapshotPatchApply.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
1
  declare function injectUpdateMainThread(): void;
2
- declare function commitMainThreadPatchUpdate(commitTaskId?: number): void;
3
2
  export {};
@@ -2,15 +2,14 @@
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
4
  import { updateWorkletRefInitValueChanges } from '@lynx-js/react/worklet-runtime/bindings';
5
- import { snapshotPatchApply } from './snapshotPatchApply.js';
6
5
  import { LifecycleConstant } from '../../lifecycleConstant.js';
7
6
  import { __pendingListUpdates } from '../../list.js';
8
- import { markTiming, PerformanceTimingKeys, setPipeline } from '../../lynx/performance.js';
9
- import { takeGlobalRefPatchMap } from '../../snapshot/ref.js';
7
+ import { PerformanceTimingKeys, markTiming, setPipeline } from '../../lynx/performance.js';
10
8
  import { __page } from '../../snapshot.js';
11
- import { isEmptyObject } from '../../utils.js';
12
9
  import { getReloadVersion } from '../pass.js';
13
10
  import { setMainThreadHydrationFinished } from './isMainThreadHydrationFinished.js';
11
+ import { snapshotPatchApply } from './snapshotPatchApply.js';
12
+ import { applyRefQueue } from '../../snapshot/workletRef.js';
14
13
  function updateMainThread({ data, patchOptions }) {
15
14
  if ((patchOptions.reloadVersion) < getReloadVersion()) {
16
15
  return;
@@ -21,7 +20,7 @@ function updateMainThread({ data, patchOptions }) {
21
20
  const { patchList, flushOptions = {} } = JSON.parse(data);
22
21
  markTiming(PerformanceTimingKeys.parseChangesEnd);
23
22
  markTiming(PerformanceTimingKeys.patchChangesStart);
24
- for (const { snapshotPatch, workletRefInitValuePatch, id } of patchList) {
23
+ for (const { snapshotPatch, workletRefInitValuePatch } of patchList) {
25
24
  updateWorkletRefInitValueChanges(workletRefInitValuePatch);
26
25
  __pendingListUpdates.clear();
27
26
  if (snapshotPatch) {
@@ -30,13 +29,13 @@ function updateMainThread({ data, patchOptions }) {
30
29
  __pendingListUpdates.flush();
31
30
  // console.debug('********** Lepus updatePatch:');
32
31
  // printSnapshotInstance(snapshotInstanceManager.values.get(-1)!);
33
- commitMainThreadPatchUpdate(id);
34
32
  }
35
33
  markTiming(PerformanceTimingKeys.patchChangesEnd);
36
34
  markTiming(PerformanceTimingKeys.mtsRenderEnd);
37
35
  if (patchOptions.isHydration) {
38
36
  setMainThreadHydrationFinished(true);
39
37
  }
38
+ applyRefQueue();
40
39
  if (patchOptions.pipelineOptions) {
41
40
  flushOptions.pipelineOptions = patchOptions.pipelineOptions;
42
41
  }
@@ -46,14 +45,8 @@ function updateMainThread({ data, patchOptions }) {
46
45
  function injectUpdateMainThread() {
47
46
  Object.assign(globalThis, { [LifecycleConstant.patchUpdate]: updateMainThread });
48
47
  }
49
- function commitMainThreadPatchUpdate(commitTaskId) {
50
- const refPatch = takeGlobalRefPatchMap();
51
- if (!isEmptyObject(refPatch)) {
52
- __OnLifecycleEvent([LifecycleConstant.ref, { commitTaskId, refPatch: JSON.stringify(refPatch) }]);
53
- }
54
- }
55
48
  /**
56
49
  * @internal
57
50
  */
58
- export { commitMainThreadPatchUpdate, injectUpdateMainThread };
51
+ export { injectUpdateMainThread };
59
52
  //# sourceMappingURL=updateMainThread.js.map
@@ -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,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;AAG3F,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,UAAU,EAAE,qBAAqB,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;AAC9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AAEpF,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,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACvC,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":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;AAE3F,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,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,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,IAAI,SAAS,EAAE,CAAC;QACpE,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;IACpE,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,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,aAAa,EAAE,CAAC;IAChB,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;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { NodesRef } from '@lynx-js/types';
2
+ /**
3
+ * A flag to indicate whether UI operations should be delayed.
4
+ * When set to true, UI operations will be queued in the `delayedUiOps` array
5
+ * and executed later when `runDelayedUiOps` is called.
6
+ * This is used before hydration to ensure UI operations are batched
7
+ * and executed at the appropriate time.
8
+ */
9
+ declare const shouldDelayUiOps: {
10
+ value: boolean;
11
+ };
12
+ /**
13
+ * Executes all delayed UI operations.
14
+ */
15
+ declare function runDelayedUiOps(): void;
16
+ /**
17
+ * A proxy class designed for managing and executing reference-based tasks.
18
+ * It delays the execution of tasks until hydration is complete.
19
+ */
20
+ declare class RefProxy {
21
+ private readonly refAttr;
22
+ private task;
23
+ constructor(refAttr: [snapshotInstanceId: number, expIndex: number]);
24
+ private setTask;
25
+ invoke(...args: Parameters<NodesRef['invoke']>): RefProxy;
26
+ path(...args: Parameters<NodesRef['path']>): RefProxy;
27
+ fields(...args: Parameters<NodesRef['fields']>): RefProxy;
28
+ setNativeProps(...args: Parameters<NodesRef['setNativeProps']>): RefProxy;
29
+ exec(): void;
30
+ }
31
+ export {};
@@ -0,0 +1,80 @@
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
+ import { hydrationMap } from '../../snapshotInstanceHydrationMap.js';
5
+ /**
6
+ * A flag to indicate whether UI operations should be delayed.
7
+ * When set to true, UI operations will be queued in the `delayedUiOps` array
8
+ * and executed later when `runDelayedUiOps` is called.
9
+ * This is used before hydration to ensure UI operations are batched
10
+ * and executed at the appropriate time.
11
+ */
12
+ const shouldDelayUiOps = { value: true };
13
+ /**
14
+ * An array of functions that will be executed later when `runDelayedUiOps` is called.
15
+ * These functions contain UI operations that need to be delayed.
16
+ */
17
+ const delayedUiOps = [];
18
+ /**
19
+ * Runs a task either immediately or delays it based on the `shouldDelayUiOps` flag.
20
+ * @param task - The function to execute.
21
+ */
22
+ function runOrDelay(task) {
23
+ if (shouldDelayUiOps.value) {
24
+ delayedUiOps.push(task);
25
+ }
26
+ else {
27
+ task();
28
+ }
29
+ }
30
+ /**
31
+ * Executes all delayed UI operations.
32
+ */
33
+ function runDelayedUiOps() {
34
+ for (const task of delayedUiOps) {
35
+ task();
36
+ }
37
+ shouldDelayUiOps.value = false;
38
+ delayedUiOps.length = 0;
39
+ }
40
+ /**
41
+ * A proxy class designed for managing and executing reference-based tasks.
42
+ * It delays the execution of tasks until hydration is complete.
43
+ */
44
+ class RefProxy {
45
+ refAttr;
46
+ task;
47
+ constructor(refAttr) {
48
+ this.refAttr = refAttr;
49
+ }
50
+ setTask(method, args) {
51
+ this.task = (nodesRef) => {
52
+ return nodesRef[method](...args);
53
+ };
54
+ return this;
55
+ }
56
+ invoke(...args) {
57
+ return new RefProxy(this.refAttr).setTask('invoke', args);
58
+ }
59
+ path(...args) {
60
+ return new RefProxy(this.refAttr).setTask('path', args);
61
+ }
62
+ fields(...args) {
63
+ return new RefProxy(this.refAttr).setTask('fields', args);
64
+ }
65
+ setNativeProps(...args) {
66
+ return new RefProxy(this.refAttr).setTask('setNativeProps', args);
67
+ }
68
+ exec() {
69
+ runOrDelay(() => {
70
+ const realRefId = hydrationMap.get(this.refAttr[0]) ?? this.refAttr[0];
71
+ const refSelector = `[react-ref-${realRefId}-${this.refAttr[1]}]`;
72
+ this.task(lynx.createSelectorQuery().select(refSelector)).exec();
73
+ });
74
+ }
75
+ }
76
+ /**
77
+ * @internal
78
+ */
79
+ export { RefProxy, runDelayedUiOps, shouldDelayUiOps };
80
+ //# sourceMappingURL=delay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delay.js","sourceRoot":"","sources":["../../../src/lifecycle/ref/delay.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAI1D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAIrE;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAEzC;;;GAGG;AACH,MAAM,YAAY,GAAmB,EAAE,CAAC;AAExC;;;GAGG;AACH,SAAS,UAAU,CAAC,IAAgB;IAClC,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC3B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,IAAI,EAAE,CAAC;IACT,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe;IACtB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,EAAE,CAAC;IACT,CAAC;IACD,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC;IAC/B,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,QAAQ;IACK,OAAO,CAAiD;IACjE,IAAI,CAAsB;IAElC,YAAY,OAAuD;QACjE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEO,OAAO,CACb,MAAS,EACT,IAA6B;QAE7B,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE;YACvB,OAAQ,QAAQ,CAAC,MAAM,CAAkD,CAAC,GAAG,IAAI,CAAC,CAAC;QACrF,CAAC,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,GAAG,IAAoC;QAC5C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,GAAG,IAAkC;QACxC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,GAAG,IAAoC;QAC5C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,cAAc,CAAC,GAAG,IAA4C;QAC5D,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,IAAI;QACF,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,WAAW,GAAG,cAAc,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;YAClE,IAAI,CAAC,IAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,3 +1,3 @@
1
- declare function reloadMainThread(data: any, options: UpdatePageOption): void;
1
+ declare function reloadMainThread(data: unknown, options: UpdatePageOption): void;
2
2
  declare function reloadBackground(updateData: Record<string, any>): void;
3
3
  export { reloadBackground, reloadMainThread };
@@ -10,16 +10,17 @@ import { hydrate } from '../hydrate.js';
10
10
  import { LifecycleConstant } from '../lifecycleConstant.js';
11
11
  import { __pendingListUpdates } from '../list.js';
12
12
  import { __root, setRoot } from '../root.js';
13
+ import { destroyBackground } from './destroy.js';
14
+ import { applyRefQueue } from '../snapshot/workletRef.js';
13
15
  import { SnapshotInstance, __page, snapshotInstanceManager } from '../snapshot.js';
14
- import { takeGlobalRefPatchMap } from '../snapshot/ref.js';
15
16
  import { isEmptyObject } from '../utils.js';
16
17
  import { destroyWorklet } from '../worklet/destroy.js';
17
- import { destroyBackground } from './destroy.js';
18
18
  import { clearJSReadyEventIdSwap, isJSReady } from './event/jsReady.js';
19
19
  import { increaseReloadVersion } from './pass.js';
20
+ import { setMainThreadHydrationFinished } from './patch/isMainThreadHydrationFinished.js';
20
21
  import { deinitGlobalSnapshotPatch } from './patch/snapshotPatch.js';
22
+ import { shouldDelayUiOps } from './ref/delay.js';
21
23
  import { renderMainThread } from './render.js';
22
- import { setMainThreadHydrationFinished } from './patch/isMainThreadHydrationFinished.js';
23
24
  function reloadMainThread(data, options) {
24
25
  if (__PROFILE__) {
25
26
  console.profile('reloadTemplate');
@@ -42,12 +43,12 @@ function reloadMainThread(data, options) {
42
43
  });
43
44
  // always call this before `__FlushElementTree`
44
45
  __pendingListUpdates.flush();
46
+ applyRefQueue();
45
47
  if (isJSReady) {
46
48
  __OnLifecycleEvent([
47
49
  LifecycleConstant.firstScreen, /* FIRST_SCREEN */
48
50
  {
49
51
  root: JSON.stringify(__root),
50
- refPatch: JSON.stringify(takeGlobalRefPatchMap()),
51
52
  },
52
53
  ]);
53
54
  }
@@ -66,6 +67,8 @@ function reloadBackground(updateData) {
66
67
  increaseReloadVersion();
67
68
  // COW when modify `lynx.__initData` to make sure Provider & Consumer works
68
69
  lynx.__initData = Object.assign({}, lynx.__initData, updateData);
70
+ shouldDelayUiOps.value = true;
71
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
69
72
  render(__root.__jsx, __root);
70
73
  if (__PROFILE__) {
71
74
  console.profileEnd();
@@ -1 +1 @@
1
- {"version":3,"file":"reload.js","sourceRoot":"","sources":["../../src/lifecycle/reload.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAE1F,SAAS,gBAAgB,CAAC,IAAS,EAAE,OAAyB;IAC5D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IAED,qBAAqB,EAAE,CAAC;IAExB,IAAI,OAAO,IAAI,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,cAAc,EAAE,CAAC;IACjB,uBAAuB,CAAC,KAAK,EAAE,CAAC;IAChC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC7B,uBAAuB,EAAE,CAAC;IAC1B,8BAA8B,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC7B,gBAAgB,EAAE,CAAC;IACnB,OAAO,CAAC,OAA2B,EAAE,MAA0B,EAAE;QAC/D,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,+CAA+C;IAC/C,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAE7B,IAAI,SAAS,EAAE,CAAC;QACd,kBAAkB,CAAC;YACjB,iBAAiB,CAAC,WAAW,EAAE,kBAAkB;YACjD;gBACE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;aAClD;SACF,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEpC,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC;IACD,OAAO;AACT,CAAC;AAED,SAAS,gBAAgB,CAAC,UAA+B;IACvD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,yBAAyB,EAAE,CAAC;IAE5B,iBAAiB,EAAE,CAAC;IAEpB,qBAAqB,EAAE,CAAC;IAExB,2EAA2E;IAC3E,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEjE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAa,CAAC,CAAC;IAEpC,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"reload.js","sourceRoot":"","sources":["../../src/lifecycle/reload.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ function renderMainThread() {
12
12
  /* v8 ignore start */
13
13
  if (process.env['NODE_ENV'] === 'test' && typeof __TESTING_FORCE_RENDER_TO_OPCODE__ !== 'undefined'
14
14
  && !__TESTING_FORCE_RENDER_TO_OPCODE__) {
15
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
15
16
  render(__root.__jsx, __root);
16
17
  }
17
18
  else {
@@ -20,8 +21,7 @@ function renderMainThread() {
20
21
  if (__PROFILE__) {
21
22
  console.profile('renderToString');
22
23
  }
23
- // @ts-ignore
24
- opcodes = renderToString(__root.__jsx);
24
+ opcodes = renderToString(__root.__jsx, undefined);
25
25
  }
26
26
  catch (e) {
27
27
  lynx.reportError(e);
@@ -35,6 +35,7 @@ function renderMainThread() {
35
35
  if (__PROFILE__) {
36
36
  console.profile('renderOpcodesInto');
37
37
  }
38
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
38
39
  renderOpcodesInto(opcodes, __root);
39
40
  if (__ENABLE_SSR__) {
40
41
  __root.__opcodes = opcodes;
@@ -1 +1 @@
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"}
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,iEAAiE;QACjE,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,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACpD,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,iEAAiE;QACjE,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"}
@@ -1,10 +1,13 @@
1
- export declare class LifecycleConstant {
2
- static readonly firstScreen = "rLynxFirstScreen";
3
- static readonly updateFromRoot = "updateFromRoot";
4
- static readonly globalEventFromLepus = "globalEventFromLepus";
5
- static readonly ref = "rLynxRef";
6
- static readonly jsReady = "rLynxJSReady";
7
- static readonly patchUpdate = "rLynxChange";
1
+ export declare const enum LifecycleConstant {
2
+ firstScreen = "rLynxFirstScreen",
3
+ updateFromRoot = "updateFromRoot",
4
+ globalEventFromLepus = "globalEventFromLepus",
5
+ jsReady = "rLynxJSReady",
6
+ patchUpdate = "rLynxChange"
7
+ }
8
+ export interface FirstScreenData {
9
+ root: string;
10
+ jsReadyEventIdSwap: Record<string | number, number>;
8
11
  }
9
12
  export declare const enum NativeUpdateDataType {
10
13
  UPDATE = 0,
@@ -1,14 +1,14 @@
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
- export class LifecycleConstant {
5
- static firstScreen = 'rLynxFirstScreen';
6
- static updateFromRoot = 'updateFromRoot';
7
- static globalEventFromLepus = 'globalEventFromLepus';
8
- static ref = 'rLynxRef';
9
- static jsReady = 'rLynxJSReady';
10
- static patchUpdate = 'rLynxChange';
11
- }
4
+ export var LifecycleConstant;
5
+ (function (LifecycleConstant) {
6
+ LifecycleConstant["firstScreen"] = "rLynxFirstScreen";
7
+ LifecycleConstant["updateFromRoot"] = "updateFromRoot";
8
+ LifecycleConstant["globalEventFromLepus"] = "globalEventFromLepus";
9
+ LifecycleConstant["jsReady"] = "rLynxJSReady";
10
+ LifecycleConstant["patchUpdate"] = "rLynxChange";
11
+ })(LifecycleConstant || (LifecycleConstant = {}));
12
12
  export var NativeUpdateDataType;
13
13
  (function (NativeUpdateDataType) {
14
14
  NativeUpdateDataType[NativeUpdateDataType["UPDATE"] = 0] = "UPDATE";
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycleConstant.js","sourceRoot":"","sources":["../src/lifecycleConstant.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,MAAM,OAAO,iBAAiB;IACrB,MAAM,CAAU,WAAW,GAAG,kBAAkB,CAAC;IACjD,MAAM,CAAU,cAAc,GAAG,gBAAgB,CAAC;IAClD,MAAM,CAAU,oBAAoB,GAAG,sBAAsB,CAAC;IAC9D,MAAM,CAAU,GAAG,GAAG,UAAU,CAAC;IACjC,MAAM,CAAU,OAAO,GAAG,cAAc,CAAC;IACzC,MAAM,CAAU,WAAW,GAAG,aAAa,CAAC;;AAGrD,MAAM,CAAN,IAAkB,oBAGjB;AAHD,WAAkB,oBAAoB;IACpC,mEAAU,CAAA;IACV,iEAAS,CAAA;AACX,CAAC,EAHiB,oBAAoB,KAApB,oBAAoB,QAGrC"}
1
+ {"version":3,"file":"lifecycleConstant.js","sourceRoot":"","sources":["../src/lifecycleConstant.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,MAAM,CAAN,IAAkB,iBAMjB;AAND,WAAkB,iBAAiB;IACjC,qDAAgC,CAAA;IAChC,sDAAiC,CAAA;IACjC,kEAA6C,CAAA;IAC7C,6CAAwB,CAAA;IACxB,gDAA2B,CAAA;AAC7B,CAAC,EANiB,iBAAiB,KAAjB,iBAAiB,QAMlC;AAOD,MAAM,CAAN,IAAkB,oBAGjB;AAHD,WAAkB,oBAAoB;IACpC,mEAAU,CAAA;IACV,iEAAS,CAAA;AACX,CAAC,EAHiB,oBAAoB,KAApB,oBAAoB,QAGrC"}
@@ -1,4 +1,4 @@
1
- import type { SnapshotInstance } from './snapshot.js';
1
+ import { type SnapshotInstance } from './snapshot.js';
2
2
  export interface ListUpdateInfo {
3
3
  flush(): void;
4
4
  onInsertBefore(newNode: SnapshotInstance, existingNode?: SnapshotInstance): void;
@@ -2,7 +2,8 @@
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
4
  import { hydrate } from './hydrate.js';
5
- import { commitMainThreadPatchUpdate } from './lifecycle/patch/updateMainThread.js';
5
+ import { applyRefQueue } from './snapshot/workletRef.js';
6
+ import {} from './snapshot.js';
6
7
  // class ListUpdateInfoDiffing implements ListUpdateInfo {
7
8
  // private oldChildNodes: SnapshotInstance[];
8
9
  // constructor(private list: SnapshotInstance) {
@@ -226,10 +227,8 @@ export function componentAtIndexFactory(ctx) {
226
227
  else if (enableBatchRender && asyncFlush) {
227
228
  __FlushElementTree(root, { asyncFlush: true });
228
229
  }
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
- }
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.
233
232
  return sign;
234
233
  }
235
234
  else {
@@ -243,7 +242,11 @@ export function componentAtIndexFactory(ctx) {
243
242
  recycleSignMap.delete(sign);
244
243
  hydrate(oldCtx, childCtx);
245
244
  oldCtx.unRenderElements();
245
+ if (!oldCtx.__id) {
246
+ oldCtx.tearDown();
247
+ }
246
248
  const root = childCtx.__element_root;
249
+ applyRefQueue();
247
250
  if (!enableBatchRender) {
248
251
  const flushOptions = {
249
252
  triggerLayout: true,
@@ -272,13 +275,13 @@ export function componentAtIndexFactory(ctx) {
272
275
  __FlushElementTree(root, flushOptions);
273
276
  }
274
277
  signMap.set(sign, childCtx);
275
- commitMainThreadPatchUpdate(undefined);
276
278
  return sign;
277
279
  }
278
280
  childCtx.ensureElements();
279
281
  const root = childCtx.__element_root;
280
282
  __AppendElement(list, root);
281
283
  const sign = __GetElementUniqueID(root);
284
+ applyRefQueue();
282
285
  if (!enableBatchRender) {
283
286
  __FlushElementTree(root, {
284
287
  triggerLayout: true,
@@ -293,7 +296,6 @@ export function componentAtIndexFactory(ctx) {
293
296
  });
294
297
  }
295
298
  signMap.set(sign, childCtx);
296
- commitMainThreadPatchUpdate(undefined);
297
299
  return sign;
298
300
  };
299
301
  const componentAtIndexes = (list, listID, cellIndexes, operationIDs, enableReuseNotification, asyncFlush) => {