@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.
- package/CHANGELOG.md +27 -0
- package/package.json +1 -1
- package/refresh/.turbo/turbo-build.log +1 -1
- package/runtime/lib/backgroundSnapshot.d.ts +2 -1
- package/runtime/lib/backgroundSnapshot.js +65 -42
- package/runtime/lib/backgroundSnapshot.js.map +1 -1
- package/runtime/lib/hooks/react.js +3 -3
- package/runtime/lib/hooks/react.js.map +1 -1
- package/runtime/lib/lifecycle/destroy.js +1 -0
- package/runtime/lib/lifecycle/destroy.js.map +1 -1
- package/runtime/lib/lifecycle/event/delayEvents.js +3 -0
- package/runtime/lib/lifecycle/event/delayEvents.js.map +1 -1
- package/runtime/lib/lifecycle/event/delayLifecycleEvents.d.ts +3 -2
- package/runtime/lib/lifecycle/event/delayLifecycleEvents.js +1 -12
- package/runtime/lib/lifecycle/event/delayLifecycleEvents.js.map +1 -1
- package/runtime/lib/lifecycle/event/jsReady.d.ts +1 -1
- package/runtime/lib/lifecycle/event/jsReady.js +3 -2
- package/runtime/lib/lifecycle/event/jsReady.js.map +1 -1
- package/runtime/lib/lifecycle/patch/commit.d.ts +0 -2
- package/runtime/lib/lifecycle/patch/commit.js +8 -36
- package/runtime/lib/lifecycle/patch/commit.js.map +1 -1
- package/runtime/lib/lifecycle/patch/error.d.ts +8 -0
- package/runtime/lib/lifecycle/patch/error.js +47 -0
- package/runtime/lib/lifecycle/patch/error.js.map +1 -0
- package/runtime/lib/lifecycle/patch/isMainThreadHydrationFinished.js +3 -0
- package/runtime/lib/lifecycle/patch/isMainThreadHydrationFinished.js.map +1 -1
- package/runtime/lib/lifecycle/patch/snapshotPatch.d.ts +2 -2
- package/runtime/lib/lifecycle/patch/snapshotPatch.js.map +1 -1
- package/runtime/lib/lifecycle/patch/snapshotPatchApply.js +10 -10
- package/runtime/lib/lifecycle/patch/snapshotPatchApply.js.map +1 -1
- package/runtime/lib/lifecycle/patch/updateMainThread.d.ts +0 -1
- package/runtime/lib/lifecycle/patch/updateMainThread.js +6 -13
- package/runtime/lib/lifecycle/patch/updateMainThread.js.map +1 -1
- package/runtime/lib/lifecycle/ref/delay.d.ts +31 -0
- package/runtime/lib/lifecycle/ref/delay.js +80 -0
- package/runtime/lib/lifecycle/ref/delay.js.map +1 -0
- package/runtime/lib/lifecycle/reload.d.ts +1 -1
- package/runtime/lib/lifecycle/reload.js +7 -4
- package/runtime/lib/lifecycle/reload.js.map +1 -1
- package/runtime/lib/lifecycle/render.js +3 -2
- package/runtime/lib/lifecycle/render.js.map +1 -1
- package/runtime/lib/lifecycleConstant.d.ts +10 -7
- package/runtime/lib/lifecycleConstant.js +8 -8
- package/runtime/lib/lifecycleConstant.js.map +1 -1
- package/runtime/lib/list.d.ts +1 -1
- package/runtime/lib/list.js +9 -7
- package/runtime/lib/list.js.map +1 -1
- package/runtime/lib/lynx/calledByNative.js +8 -5
- package/runtime/lib/lynx/calledByNative.js.map +1 -1
- package/runtime/lib/lynx/component.js +7 -0
- package/runtime/lib/lynx/component.js.map +1 -1
- package/runtime/lib/lynx/dynamic-js.d.ts +5 -1
- package/runtime/lib/lynx/dynamic-js.js +1 -0
- package/runtime/lib/lynx/dynamic-js.js.map +1 -1
- package/runtime/lib/lynx/env.d.ts +1 -1
- package/runtime/lib/lynx/env.js +13 -13
- package/runtime/lib/lynx/env.js.map +1 -1
- package/runtime/lib/lynx/lazy-bundle.js +7 -5
- package/runtime/lib/lynx/lazy-bundle.js.map +1 -1
- package/runtime/lib/lynx/performance.js +1 -1
- package/runtime/lib/lynx/performance.js.map +1 -1
- package/runtime/lib/lynx/runWithForce.js +3 -0
- package/runtime/lib/lynx/runWithForce.js.map +1 -1
- package/runtime/lib/lynx/tt.js +12 -33
- package/runtime/lib/lynx/tt.js.map +1 -1
- package/runtime/lib/lynx-api.d.ts +1 -1
- package/runtime/lib/lynx.js +5 -6
- package/runtime/lib/lynx.js.map +1 -1
- package/runtime/lib/snapshot/ref.d.ts +14 -9
- package/runtime/lib/snapshot/ref.js +64 -73
- package/runtime/lib/snapshot/ref.js.map +1 -1
- package/runtime/lib/snapshot/spread.js +9 -8
- package/runtime/lib/snapshot/spread.js.map +1 -1
- package/runtime/lib/snapshot/workletRef.d.ts +3 -3
- package/runtime/lib/snapshot/workletRef.js +27 -8
- package/runtime/lib/snapshot/workletRef.js.map +1 -1
- package/runtime/lib/snapshot.d.ts +4 -4
- package/runtime/lib/snapshot.js +28 -13
- package/runtime/lib/snapshot.js.map +1 -1
- package/runtime/lib/snapshotInstanceHydrationMap.d.ts +9 -0
- package/runtime/lib/snapshotInstanceHydrationMap.js +16 -0
- package/runtime/lib/snapshotInstanceHydrationMap.js.map +1 -0
- package/runtime/lib/worklet/workletRef.js +1 -2
- package/runtime/lib/worklet/workletRef.js.map +1 -1
- package/runtime/src/backgroundSnapshot.ts +74 -47
- package/runtime/src/hooks/react.ts +3 -3
- package/runtime/src/lifecycle/destroy.ts +1 -0
- package/runtime/src/lifecycle/event/delayEvents.ts +3 -0
- package/runtime/src/lifecycle/event/delayLifecycleEvents.ts +7 -13
- package/runtime/src/lifecycle/event/jsReady.ts +4 -3
- package/runtime/src/lifecycle/patch/commit.ts +10 -41
- package/runtime/src/lifecycle/patch/error.ts +61 -0
- package/runtime/src/lifecycle/patch/isMainThreadHydrationFinished.ts +3 -0
- package/runtime/src/lifecycle/patch/snapshotPatch.ts +2 -2
- package/runtime/src/lifecycle/patch/snapshotPatchApply.ts +28 -28
- package/runtime/src/lifecycle/patch/updateMainThread.ts +7 -16
- package/runtime/src/lifecycle/ref/delay.ts +99 -0
- package/runtime/src/lifecycle/reload.ts +9 -6
- package/runtime/src/lifecycle/render.ts +3 -2
- package/runtime/src/lifecycleConstant.ts +11 -7
- package/runtime/src/list.ts +9 -7
- package/runtime/src/lynx/calledByNative.ts +14 -9
- package/runtime/src/lynx/component.ts +9 -0
- package/runtime/src/lynx/dynamic-js.ts +5 -1
- package/runtime/src/lynx/env.ts +17 -17
- package/runtime/src/lynx/lazy-bundle.ts +22 -14
- package/runtime/src/lynx/performance.ts +1 -1
- package/runtime/src/lynx/runWithForce.ts +9 -5
- package/runtime/src/lynx/tt.ts +19 -37
- package/runtime/src/lynx-api.ts +1 -1
- package/runtime/src/lynx.ts +6 -6
- package/runtime/src/snapshot/ref.ts +77 -87
- package/runtime/src/snapshot/spread.ts +8 -8
- package/runtime/src/snapshot/workletRef.ts +35 -9
- package/runtime/src/snapshot.ts +39 -20
- package/runtime/src/snapshotInstanceHydrationMap.ts +17 -0
- package/runtime/src/worklet/workletRef.ts +1 -2
- package/testing-library/dist/env/vitest.js +5 -3
- package/testing-library/dist/pure.js +4 -3
- package/transform/dist/wasm.cjs +1 -1
- package/worklet-runtime/dist/dev.js +1 -4
- package/worklet-runtime/dist/main.js +0 -3
- package/worklet-runtime/lib/bindings/observers.d.ts +14 -1
- package/worklet-runtime/lib/bindings/observers.js +7 -7
- package/worklet-runtime/lib/bindings/observers.js.map +1 -1
- package/worklet-runtime/lib/hydrate.js +0 -5
- package/worklet-runtime/lib/hydrate.js.map +1 -1
- package/runtime/lib/lifecycle/delayUnmount.d.ts +0 -8
- package/runtime/lib/lifecycle/delayUnmount.js +0 -65
- package/runtime/lib/lifecycle/delayUnmount.js.map +0 -1
- 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 =
|
|
16
|
-
export declare let __globalSnapshotPatch:
|
|
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,
|
|
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 {
|
|
14
|
+
import { sendCtxNotFoundEventToBackground } from './error.js';
|
|
15
15
|
import { SnapshotOperation } from './snapshotPatch.js';
|
|
16
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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),
|
|
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,
|
|
1
|
+
{"version":3,"file":"snapshotPatchApply.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/snapshotPatchApply.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 {
|
|
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
|
|
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 {
|
|
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;
|
|
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:
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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,
|
|
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"}
|
package/runtime/lib/list.d.ts
CHANGED
package/runtime/lib/list.js
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
230
|
-
|
|
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) => {
|