@lynx-js/react-canary 0.108.0 → 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.
- package/CHANGELOG.md +6 -0
- package/package.json +3 -3
- package/refresh/.turbo/turbo-build.log +1 -1
- package/runtime/lib/lifecycle/patch/isMainThreadHydrationFinished.d.ts +2 -0
- package/runtime/lib/lifecycle/patch/isMainThreadHydrationFinished.js +9 -0
- package/runtime/lib/lifecycle/patch/isMainThreadHydrationFinished.js.map +1 -0
- package/runtime/lib/lifecycle/patch/updateMainThread.js +4 -3
- package/runtime/lib/lifecycle/patch/updateMainThread.js.map +1 -1
- package/runtime/lib/lifecycle/reload.js +2 -0
- package/runtime/lib/lifecycle/reload.js.map +1 -1
- package/runtime/lib/snapshot/ref.js.map +1 -1
- package/runtime/lib/snapshot/spread.d.ts +0 -6
- package/runtime/lib/snapshot/spread.js +4 -10
- package/runtime/lib/snapshot/spread.js.map +1 -1
- package/runtime/lib/snapshot/workletEvent.d.ts +2 -1
- package/runtime/lib/snapshot/workletEvent.js +1 -1
- package/runtime/lib/snapshot/workletEvent.js.map +1 -1
- package/runtime/lib/snapshot/workletRef.d.ts +4 -4
- package/runtime/lib/snapshot/workletRef.js +8 -6
- package/runtime/lib/snapshot/workletRef.js.map +1 -1
- package/runtime/lib/worklet/workletRef.d.ts +1 -0
- package/runtime/lib/worklet/workletRef.js +14 -12
- package/runtime/lib/worklet/workletRef.js.map +1 -1
- package/runtime/src/lifecycle/patch/isMainThreadHydrationFinished.ts +10 -0
- package/runtime/src/lifecycle/patch/updateMainThread.ts +4 -3
- package/runtime/src/lifecycle/reload.ts +2 -0
- package/runtime/src/snapshot/ref.ts +2 -2
- package/runtime/src/snapshot/spread.ts +15 -5
- package/runtime/src/snapshot/workletEvent.ts +3 -2
- package/runtime/src/snapshot/workletRef.ts +18 -19
- package/runtime/src/worklet/workletRef.ts +15 -12
- package/transform/dist/wasm.cjs +1 -1
- package/worklet-runtime/dist/dev.js +25 -13
- package/worklet-runtime/dist/dev.js.map +3 -3
- package/worklet-runtime/dist/main.js +25 -13
- package/worklet-runtime/dist/main.js.map +3 -3
- package/worklet-runtime/lib/bindings/bindings.d.ts +1 -1
- package/worklet-runtime/lib/bindings/bindings.js +2 -2
- package/worklet-runtime/lib/bindings/bindings.js.map +1 -1
- package/worklet-runtime/lib/bindings/index.d.ts +1 -1
- package/worklet-runtime/lib/bindings/index.js +1 -1
- package/worklet-runtime/lib/bindings/index.js.map +1 -1
- package/worklet-runtime/lib/bindings/types.d.ts +7 -3
- package/worklet-runtime/lib/bindings/types.js +3 -0
- package/worklet-runtime/lib/bindings/types.js.map +1 -1
- package/worklet-runtime/lib/ctxTrace.d.ts +8 -0
- package/worklet-runtime/lib/ctxTrace.js +13 -0
- package/worklet-runtime/lib/ctxTrace.js.map +1 -0
- package/worklet-runtime/lib/global.d.ts +3 -3
- package/worklet-runtime/lib/workletRuntime.js +11 -8
- package/worklet-runtime/lib/workletRuntime.js.map +1 -1
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lynx-js/react-canary",
|
|
3
|
-
"version": "0.108.
|
|
3
|
+
"version": "0.108.1",
|
|
4
4
|
"description": "ReactLynx is a framework for developing Lynx applications with familiar React.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -161,8 +161,8 @@
|
|
|
161
161
|
"preact": "npm:@hongzhiyuan/preact@10.24.0-319c684e"
|
|
162
162
|
},
|
|
163
163
|
"devDependencies": {
|
|
164
|
-
"@lynx-js/types": "^3.
|
|
165
|
-
"@microsoft/api-extractor": "7.52.
|
|
164
|
+
"@lynx-js/types": "^3.3.0",
|
|
165
|
+
"@microsoft/api-extractor": "7.52.8",
|
|
166
166
|
"@types/react": "^18.3.21"
|
|
167
167
|
},
|
|
168
168
|
"peerDependencies": {
|
|
@@ -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,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 {
|
|
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 {
|
|
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
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"updateMainThread.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/updateMainThread.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ import { clearJSReadyEventIdSwap, isJSReady } from './event/jsReady.js';
|
|
|
19
19
|
import { increaseReloadVersion } from './pass.js';
|
|
20
20
|
import { deinitGlobalSnapshotPatch } from './patch/snapshotPatch.js';
|
|
21
21
|
import { renderMainThread } from './render.js';
|
|
22
|
+
import { setMainThreadHydrationFinished } from './patch/isMainThreadHydrationFinished.js';
|
|
22
23
|
function reloadMainThread(data, options) {
|
|
23
24
|
if (__PROFILE__) {
|
|
24
25
|
console.profile('reloadTemplate');
|
|
@@ -31,6 +32,7 @@ function reloadMainThread(data, options) {
|
|
|
31
32
|
snapshotInstanceManager.clear();
|
|
32
33
|
__pendingListUpdates.clear();
|
|
33
34
|
clearJSReadyEventIdSwap();
|
|
35
|
+
setMainThreadHydrationFinished(false);
|
|
34
36
|
const oldRoot = __root;
|
|
35
37
|
setRoot(new SnapshotInstance('root'));
|
|
36
38
|
__root.__jsx = oldRoot.__jsx;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"reload.js","sourceRoot":"","sources":["../../src/lifecycle/reload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref.js","sourceRoot":"","sources":["../../src/snapshot/ref.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,IAAI,cAAc,GAAkC,EAAE,CAAC;AACvD,MAAM,kBAAkB,GAAsE,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC;AACxH,MAAM,eAAe,GAAuD,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC;AACtG,IAAI,SAAS,GAAG,CAAC,CAAC;AAElB,SAAS,KAAK,CAAC,QAA0B,EAAE,SAAkB;IAC3D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;QAC9B,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;IAE5B,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;QACtC,IAAI,CAAC,EAAE,CAAC;YACN,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"ref.js","sourceRoot":"","sources":["../../src/snapshot/ref.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Handles JSX spread operator in the snapshot system.
|
|
3
|
-
*
|
|
4
|
-
* Spread operators in JSX (e.g., <div {...props}>) are transformed into
|
|
5
|
-
* optimized attribute updates at compile time, avoiding runtime object spreads.
|
|
6
|
-
*/
|
|
7
1
|
import { BackgroundSnapshotInstance } from '../backgroundSnapshot.js';
|
|
8
2
|
import { SnapshotInstance } from '../snapshot.js';
|
|
9
3
|
declare function updateSpread(snapshot: SnapshotInstance, index: number, oldValue: any, elementIndex: number): void;
|
|
@@ -1,14 +1,8 @@
|
|
|
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
|
-
* Handles JSX spread operator in the snapshot system.
|
|
6
|
-
*
|
|
7
|
-
* Spread operators in JSX (e.g., <div {...props}>) are transformed into
|
|
8
|
-
* optimized attribute updates at compile time, avoiding runtime object spreads.
|
|
9
|
-
*/
|
|
10
4
|
import { BackgroundSnapshotInstance } from '../backgroundSnapshot.js';
|
|
11
|
-
import {
|
|
5
|
+
import { ListUpdateInfoRecording, __pendingListUpdates } from '../list.js';
|
|
12
6
|
import { SnapshotInstance } from '../snapshot.js';
|
|
13
7
|
import { isDirectOrDeepEqual, isEmptyObject, pick } from '../utils.js';
|
|
14
8
|
import { updateEvent } from './event.js';
|
|
@@ -33,7 +27,7 @@ const noFlattenAttributes = /* @__PURE__ */ new Set([
|
|
|
33
27
|
'exposure-id',
|
|
34
28
|
]);
|
|
35
29
|
function updateSpread(snapshot, index, oldValue, elementIndex) {
|
|
36
|
-
oldValue
|
|
30
|
+
oldValue ??= {};
|
|
37
31
|
let newValue = snapshot.__values[index]; // compiler guarantee this must be an object;
|
|
38
32
|
// @ts-ignore
|
|
39
33
|
const list = snapshot.__parent;
|
|
@@ -126,7 +120,7 @@ function updateSpread(snapshot, index, oldValue, elementIndex) {
|
|
|
126
120
|
};
|
|
127
121
|
updateGesture(fakeSnapshot, index, oldValue[key], elementIndex, workletType);
|
|
128
122
|
}
|
|
129
|
-
else if ((match =
|
|
123
|
+
else if ((match = eventRegExp.exec(key))) {
|
|
130
124
|
const workletType = match[2];
|
|
131
125
|
const eventType = eventTypeMap[match[3]];
|
|
132
126
|
const eventName = match[4];
|
|
@@ -222,7 +216,7 @@ function updateSpread(snapshot, index, oldValue, elementIndex) {
|
|
|
222
216
|
};
|
|
223
217
|
updateGesture(fakeSnapshot, index, oldValue[key], elementIndex, workletType);
|
|
224
218
|
}
|
|
225
|
-
else if ((match =
|
|
219
|
+
else if ((match = eventRegExp.exec(key))) {
|
|
226
220
|
const workletType = match[2];
|
|
227
221
|
const eventType = eventTypeMap[match[3]];
|
|
228
222
|
const eventName = match[4];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spread.js","sourceRoot":"","sources":["../../src/snapshot/spread.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;
|
|
1
|
+
{"version":3,"file":"spread.js","sourceRoot":"","sources":["../../src/snapshot/spread.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAW1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,WAAW,GAAG,kFAAkF,CAAC;AACvG,MAAM,YAAY,GAA2B;IAC3C,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,YAAY;IACnB,cAAc,EAAE,cAAc;IAC9B,eAAe,EAAE,eAAe;IAChC,aAAa,EAAE,kBAAkB;CAClC,CAAC;AACF,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,GAAG,CAAS;IAC1D,MAAM;IACN,aAAa;IACb,SAAS;IACT,gBAAgB;IAChB,aAAa;CACd,CAAC,CAAC;AAEH,SAAS,YAAY,CAAC,QAA0B,EAAE,KAAa,EAAE,QAAa,EAAE,YAAoB;IAClG,QAAQ,KAAK,EAAE,CAAC;IAChB,IAAI,QAAQ,GAAwB,QAAQ,CAAC,QAAS,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;IAE5G,aAAa;IACb,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAC/B,IAAI,IAAI,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;QAC5D,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,YAAY,CAAC,EAAE,CAAC;YACxD,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAC3F,QAAQ,EACR,YAAY,EACZ,eAAe,CAChB,CAAC;YACF,QAAQ,CAAC,sBAAsB,GAAG,YAAY,CAAC;YAE/C,wGAAwG;YACxG,MAAM,YAAY,GAAG;gBACnB,QAAQ,EAAE;oBACR,IAAI,CAAC,KAAK,CAAC;wBACT,OAAO,YAAY,CAAC;oBACtB,CAAC;iBACF;gBACD,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;aACZ,CAAC;YACtB,0BAA0B,CAAC,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;QAC3B,eAAe;QACf,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtD,QAAQ,CAAC,QAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;IACvC,CAAC;IAED,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,IAAI,KAAK,GAA4B,IAAI,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;gBACxB,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC3B,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,kBAAkB;YACpB,CAAC;iBAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBACzB,QAAQ,CAAC,SAAS,KAAK,IAAI,GAAG,EAAE,CAAC;gBACjC,MAAM,YAAY,GAAG;oBACnB,QAAQ,EAAE;wBACR,IAAI,CAAC,KAAK,CAAC;4BACT,OAAO,CAAC,CAAC;wBACX,CAAC;wBACD,IAAI,CAAC,KAAK,CAAC,CAAC,KAAc;4BACxB,kGAAkG;4BAClG,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;wBACxB,CAAC;qBACF;oBACD,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;iBACV,CAAC;gBACtB,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;YACnE,CAAC;iBAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,QAAQ,CAAC,iBAAiB,KAAK,IAAI,GAAG,EAAE,CAAC;gBACzC,MAAM,YAAY,GAAG;oBACnB,QAAQ,EAAE;wBACR,IAAI,CAAC,KAAK,CAAC;4BACT,OAAO,CAAC,CAAC;wBACX,CAAC;qBACF;oBACD,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;iBAC1B,CAAC;gBACtB,gBAAgB,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvF,CAAC;iBAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrC,MAAM,YAAY,GAAG;oBACnB,QAAQ,EAAE;wBACR,IAAI,CAAC,KAAK,CAAC;4BACT,OAAO,CAAC,CAAC;wBACX,CAAC;qBACF;oBACD,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;iBACZ,CAAC;gBACtB,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;YAC/E,CAAC;iBAAM,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAE,CAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG;oBACnB,QAAQ,EAAE;wBACR,IAAI,CAAC,KAAK,CAAC;4BACT,OAAO,CAAC,CAAC;wBACX,CAAC;wBACD,IAAI,CAAC,KAAK,CAAC,CAAC,KAAc;4BACxB,oGAAoG;4BACpG,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;wBACxB,CAAC;qBACF;oBACD,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;iBACZ,CAAC;gBACtB,IAAI,WAAW,EAAE,CAAC;oBAChB,kBAAkB,CAChB,YAAY,EACZ,KAAK,EACL,QAAQ,CAAC,GAAG,CAAY,EACxB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,SAAS,CACV,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC3F,CAAC;YACH,CAAC;iBAAM,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC;YACvB,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;gBACxB,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,EAAE,EAAE,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC3B,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,EAAE,EAAE,CAAC,CAAC;YAC5D,CAAC;iBAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,EAAE,IAAI,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,kBAAkB;YACpB,CAAC;iBAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBACzB,QAAQ,CAAC,SAAS,KAAK,IAAI,GAAG,EAAE,CAAC;gBACjC,MAAM,YAAY,GAAG;oBACnB,QAAQ,EAAE;wBACR,IAAI,CAAC,KAAK,CAAC;4BACT,OAAO,SAAS,CAAC;wBACnB,CAAC;wBACD,IAAI,CAAC,KAAK,CAAC,CAAC,KAAc;4BACxB,kGAAkG;4BAClG,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;wBACxB,CAAC;qBACF;oBACD,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;iBACV,CAAC;gBACtB,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;YACnE,CAAC;iBAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,QAAQ,CAAC,iBAAiB,KAAK,IAAI,GAAG,EAAE,CAAC;gBACzC,MAAM,YAAY,GAAG;oBACnB,QAAQ,EAAE;wBACR,IAAI,CAAC,KAAK,CAAC;4BACT,OAAO,SAAS,CAAC;wBACnB,CAAC;qBACF;oBACD,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;iBAC1B,CAAC;gBACtB,gBAAgB,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvF,CAAC;iBAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrC,MAAM,YAAY,GAAG;oBACnB,QAAQ,EAAE;wBACR,IAAI,CAAC,KAAK,CAAC;4BACT,OAAO,SAAS,CAAC;wBACnB,CAAC;qBACF;oBACD,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;iBACZ,CAAC;gBACtB,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;YAC/E,CAAC;iBAAM,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAE,CAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG;oBACnB,QAAQ,EAAE;wBACR,IAAI,CAAC,KAAK,CAAC;4BACT,OAAO,SAAS,CAAC;wBACnB,CAAC;wBACD,IAAI,CAAC,KAAK,CAAC,CAAC,KAAc;4BACxB,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;wBACxB,CAAC;qBACF;oBACD,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;iBACZ,CAAC;gBACtB,IAAI,WAAW,EAAE,CAAC;oBAChB,kBAAkB,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC1G,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC3F,CAAC;YACH,CAAC;iBAAM,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,QAAuD,EACvD,KAAa,EACb,MAA+B;IAE/B,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,IAAI,sBAAsB,GAAG,KAAK,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC,CAAA,CAAC;aACrB,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAChD,KAAK,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;QAC9B,CAAC;aAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACzB,aAAa;YACb,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAC3C,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,sBAAsB,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5D,sBAAsB,GAAG,IAAI,CAAC;YAChC,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Worklet } from '@lynx-js/react/worklet-runtime/bindings';
|
|
1
2
|
import { SnapshotInstance } from '../snapshot.js';
|
|
2
|
-
declare function updateWorkletEvent(snapshot: SnapshotInstance, expIndex: number, _oldValue:
|
|
3
|
+
declare function updateWorkletEvent(snapshot: SnapshotInstance, expIndex: number, _oldValue: Worklet, elementIndex: number, workletType: string, eventType: string, eventName: string): void;
|
|
3
4
|
export { updateWorkletEvent };
|
|
@@ -7,7 +7,7 @@ function updateWorkletEvent(snapshot, expIndex, _oldValue, elementIndex, worklet
|
|
|
7
7
|
if (!snapshot.__elements) {
|
|
8
8
|
return;
|
|
9
9
|
}
|
|
10
|
-
const value = snapshot.__values[expIndex] || {};
|
|
10
|
+
const value = (snapshot.__values[expIndex] || undefined) ?? {};
|
|
11
11
|
value._workletType = workletType;
|
|
12
12
|
if (workletType === 'main-thread') {
|
|
13
13
|
onWorkletCtxUpdate(value, snapshot.__elements[elementIndex]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workletEvent.js","sourceRoot":"","sources":["../../src/snapshot/workletEvent.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"workletEvent.js","sourceRoot":"","sources":["../../src/snapshot/workletEvent.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAG7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,SAAS,kBAAkB,CACzB,QAA0B,EAC1B,QAAgB,EAChB,SAAkB,EAClB,YAAoB,EACpB,WAAmB,EACnB,SAAiB,EACjB,SAAiB;IAEjB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,QAAS,CAAC,QAAQ,CAAY,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;IAC3E,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;IAEjC,IAAI,WAAW,KAAK,aAAa,EAAE,CAAC;QAClC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,SAAS;YACf,KAAK;SACN,CAAC;QACF,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { SnapshotInstance } from '../snapshot.js';
|
|
3
|
-
declare function workletUnRef(value: Worklet |
|
|
4
|
-
declare function updateWorkletRef(snapshot: SnapshotInstance, expIndex: number, oldValue:
|
|
1
|
+
import type { Element, Worklet, WorkletRefImpl } from '@lynx-js/react/worklet-runtime/bindings';
|
|
2
|
+
import type { SnapshotInstance } from '../snapshot.js';
|
|
3
|
+
declare function workletUnRef(value: Worklet | WorkletRefImpl<Element>): void;
|
|
4
|
+
declare function updateWorkletRef(snapshot: SnapshotInstance, expIndex: number, oldValue: WorkletRefImpl<Element> | Worklet | undefined, elementIndex: number, _workletType: string): void;
|
|
5
5
|
export { updateWorkletRef, workletUnRef };
|
|
@@ -1,10 +1,9 @@
|
|
|
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
|
-
import { runWorkletCtx, updateWorkletRef as update
|
|
5
|
-
import { SnapshotInstance } from '../snapshot.js';
|
|
4
|
+
import { runWorkletCtx, updateWorkletRef as update } from '@lynx-js/react/worklet-runtime/bindings';
|
|
6
5
|
function workletUnRef(value) {
|
|
7
|
-
if ('_wvid' in value) {
|
|
6
|
+
if ('_wvid' in value && value._wvid > 0) {
|
|
8
7
|
update(value, null);
|
|
9
8
|
}
|
|
10
9
|
else if ('_wkltId' in value) {
|
|
@@ -29,11 +28,14 @@ function updateWorkletRef(snapshot, expIndex, oldValue, elementIndex, _workletTy
|
|
|
29
28
|
// do nothing
|
|
30
29
|
}
|
|
31
30
|
else if (value._wvid) {
|
|
32
|
-
|
|
31
|
+
if (value._wvid > 0) {
|
|
32
|
+
update(value, snapshot.__elements[elementIndex]);
|
|
33
|
+
}
|
|
33
34
|
}
|
|
34
35
|
else if (value._wkltId) {
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
value._unmount = runWorkletCtx(value, [{
|
|
37
|
+
elementRefptr: (snapshot.__elements[elementIndex]),
|
|
38
|
+
}]);
|
|
37
39
|
}
|
|
38
40
|
else if (value._type === '__LEPUS__' || value._lepusWorkletHash) {
|
|
39
41
|
// During the initial render, we will not update the WorkletRef because the background thread is not ready yet.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workletRef.js","sourceRoot":"","sources":["../../src/snapshot/workletRef.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,
|
|
1
|
+
{"version":3,"file":"workletRef.js","sourceRoot":"","sources":["../../src/snapshot/workletRef.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,aAAa,EAAE,gBAAgB,IAAI,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAKpG,SAAS,YAAY,CAAC,KAAwC;IAC5D,IAAI,OAAO,IAAI,KAAK,IAAK,KAAK,CAAC,KAAsB,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,KAAgC,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,IAAI,OAAO,KAAK,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC;YACvC,KAAK,CAAC,QAAuB,EAAE,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,QAA0B,EAC1B,QAAgB,EAChB,QAAuD,EACvD,YAAoB,EACpB,YAAoB;IAEpB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAS,CAAC,QAAQ,CAAoD,CAAC;IAC9F,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,aAAa;IACf,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACvB,IAAK,KAAK,CAAC,KAAsB,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,KAAgC,EAAE,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;SAAM,IAAK,KAAiB,CAAC,OAAO,EAAE,CAAC;QACrC,KAAiB,CAAC,QAAQ,GAAG,aAAa,CAAC,KAAgB,EAAE,CAAC;gBAC7D,aAAa,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,CAAQ;aAC3D,CAAC,CAAe,CAAC;IACpB,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,IAAK,KAAiB,CAAC,iBAAiB,EAAE,CAAC;QAC/E,+GAA+G;IACjH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC3G,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,QAAQ,CAAC,iBAAiB,KAAK,IAAI,GAAG,EAAE,CAAC;QACzC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,qEAAqE;IACrE,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAE,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { WorkletEvents } from '@lynx-js/react/worklet-runtime/bindings';
|
|
2
2
|
import { addWorkletRefInitValue } from './workletRefPool.js';
|
|
3
3
|
import { useMemo } from '../hooks/react.js';
|
|
4
|
-
|
|
4
|
+
// Split into two variables for testing purposes
|
|
5
|
+
let lastIdBG = 0;
|
|
6
|
+
let lastIdMT = 0;
|
|
7
|
+
export function clearWorkletRefLastIdForTesting() {
|
|
8
|
+
lastIdBG = lastIdMT = 0;
|
|
9
|
+
}
|
|
5
10
|
class WorkletRef {
|
|
6
11
|
/**
|
|
7
12
|
* @internal
|
|
8
13
|
*/
|
|
9
|
-
|
|
14
|
+
_wvid;
|
|
10
15
|
/**
|
|
11
16
|
* @internal
|
|
12
17
|
*/
|
|
@@ -23,17 +28,14 @@ class WorkletRef {
|
|
|
23
28
|
* @internal
|
|
24
29
|
*/
|
|
25
30
|
constructor(initValue, type) {
|
|
31
|
+
this._initValue = initValue;
|
|
32
|
+
this._type = type;
|
|
26
33
|
if (__JS__) {
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
29
|
-
this._type = type;
|
|
30
|
-
addWorkletRefInitValue(this._id, initValue);
|
|
34
|
+
this._wvid = ++lastIdBG;
|
|
35
|
+
addWorkletRefInitValue(this._wvid, initValue);
|
|
31
36
|
}
|
|
32
37
|
else {
|
|
33
|
-
|
|
34
|
-
// The real WorkletRef will be generated by the worklet runtime.
|
|
35
|
-
this._id = -1;
|
|
36
|
-
this._type = '__LEPUS__';
|
|
38
|
+
this._wvid = --lastIdMT;
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
get current() {
|
|
@@ -60,7 +62,7 @@ class WorkletRef {
|
|
|
60
62
|
*/
|
|
61
63
|
toJSON() {
|
|
62
64
|
return {
|
|
63
|
-
_wvid: this.
|
|
65
|
+
_wvid: this._wvid,
|
|
64
66
|
};
|
|
65
67
|
}
|
|
66
68
|
}
|
|
@@ -75,7 +77,7 @@ export class MainThreadRef extends WorkletRef {
|
|
|
75
77
|
constructor(initValue) {
|
|
76
78
|
super(initValue, 'main-thread');
|
|
77
79
|
if (__JS__) {
|
|
78
|
-
const id = this.
|
|
80
|
+
const id = this._wvid;
|
|
79
81
|
this._lifecycleObserver = lynx.getNativeApp().createJSObjectDestructionObserver?.(() => {
|
|
80
82
|
lynx.getCoreContext?.().dispatchEvent({
|
|
81
83
|
type: WorkletEvents.releaseWorkletRef,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workletRef.js","sourceRoot":"","sources":["../../src/worklet/workletRef.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,IAAI,MAAM,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"workletRef.js","sourceRoot":"","sources":["../../src/worklet/workletRef.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,gDAAgD;AAChD,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB,MAAM,UAAU,+BAA+B;IAC7C,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAe,UAAU;IACvB;;OAEG;IACO,KAAK,CAAS;IACxB;;OAEG;IACO,UAAU,CAAgB;IACpC;;OAEG;IACO,KAAK,CAAS;IACxB;;OAEG;IACO,kBAAkB,CAAU;IAEtC;;OAEG;IACH,YAAsB,SAAY,EAAE,IAAY;QAC9C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,CAAC;YACxB,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,OAAO;QACT,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;QAC1G,CAAC;QACD,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YACzB,oBAAoB;YACpB,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;QAC/G,CAAC;QACD,oBAAoB;QACpB,OAAO,SAAc,CAAC;IACxB,CAAC;IAED,IAAI,OAAO,CAAC,CAAI;QACd,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;QAC1G,CAAC;QACD,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;QAC/G,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,aAAiB,SAAQ,UAAa;IACjD,YAAY,SAAY;QACtB,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAChC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,iCAAiC,EAAE,CAAC,GAAG,EAAE;gBACrF,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,aAAa,CAAC;oBACpC,IAAI,EAAE,aAAa,CAAC,iBAAiB;oBACrC,IAAI,EAAE;wBACJ,EAAE;qBACH;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AA2HD,MAAM,UAAU,gBAAgB,CAAI,SAAa;IAC/C,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { onHydrationFinished } from '@lynx-js/react/worklet-runtime/bindings';
|
|
2
|
+
|
|
3
|
+
export let isMainThreadHydrationFinished = false;
|
|
4
|
+
|
|
5
|
+
export function setMainThreadHydrationFinished(isFinished: boolean): void {
|
|
6
|
+
if (isFinished && !isMainThreadHydrationFinished) {
|
|
7
|
+
onHydrationFinished();
|
|
8
|
+
}
|
|
9
|
+
isMainThreadHydrationFinished = isFinished;
|
|
10
|
+
}
|
|
@@ -2,17 +2,18 @@
|
|
|
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
|
|
|
5
|
-
import {
|
|
5
|
+
import { updateWorkletRefInitValueChanges } from '@lynx-js/react/worklet-runtime/bindings';
|
|
6
6
|
|
|
7
7
|
import type { PatchList, PatchOptions } from './commit.js';
|
|
8
8
|
import { snapshotPatchApply } from './snapshotPatchApply.js';
|
|
9
9
|
import { LifecycleConstant } from '../../lifecycleConstant.js';
|
|
10
10
|
import { __pendingListUpdates } from '../../list.js';
|
|
11
|
-
import {
|
|
11
|
+
import { markTiming, PerformanceTimingKeys, setPipeline } from '../../lynx/performance.js';
|
|
12
12
|
import { takeGlobalRefPatchMap } from '../../snapshot/ref.js';
|
|
13
13
|
import { __page } from '../../snapshot.js';
|
|
14
14
|
import { isEmptyObject } from '../../utils.js';
|
|
15
15
|
import { getReloadVersion } from '../pass.js';
|
|
16
|
+
import { setMainThreadHydrationFinished } from './isMainThreadHydrationFinished.js';
|
|
16
17
|
|
|
17
18
|
function updateMainThread(
|
|
18
19
|
{ data, patchOptions }: {
|
|
@@ -47,7 +48,7 @@ function updateMainThread(
|
|
|
47
48
|
markTiming(PerformanceTimingKeys.patchChangesEnd);
|
|
48
49
|
markTiming(PerformanceTimingKeys.mtsRenderEnd);
|
|
49
50
|
if (patchOptions.isHydration) {
|
|
50
|
-
|
|
51
|
+
setMainThreadHydrationFinished(true);
|
|
51
52
|
}
|
|
52
53
|
if (patchOptions.pipelineOptions) {
|
|
53
54
|
flushOptions.pipelineOptions = patchOptions.pipelineOptions;
|
|
@@ -22,6 +22,7 @@ import { clearJSReadyEventIdSwap, isJSReady } from './event/jsReady.js';
|
|
|
22
22
|
import { increaseReloadVersion } from './pass.js';
|
|
23
23
|
import { deinitGlobalSnapshotPatch } from './patch/snapshotPatch.js';
|
|
24
24
|
import { renderMainThread } from './render.js';
|
|
25
|
+
import { setMainThreadHydrationFinished } from './patch/isMainThreadHydrationFinished.js';
|
|
25
26
|
|
|
26
27
|
function reloadMainThread(data: any, options: UpdatePageOption): void {
|
|
27
28
|
if (__PROFILE__) {
|
|
@@ -38,6 +39,7 @@ function reloadMainThread(data: any, options: UpdatePageOption): void {
|
|
|
38
39
|
snapshotInstanceManager.clear();
|
|
39
40
|
__pendingListUpdates.clear();
|
|
40
41
|
clearJSReadyEventIdSwap();
|
|
42
|
+
setMainThreadHydrationFinished(false);
|
|
41
43
|
|
|
42
44
|
const oldRoot = __root;
|
|
43
45
|
setRoot(new SnapshotInstance('root'));
|
|
@@ -1,7 +1,7 @@
|
|
|
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
|
-
import type { Worklet,
|
|
4
|
+
import type { Element, Worklet, WorkletRefImpl } from '@lynx-js/react/worklet-runtime/bindings';
|
|
5
5
|
|
|
6
6
|
import { nextCommitTaskId } from '../lifecycle/patch/commit.js';
|
|
7
7
|
import { SnapshotInstance, backgroundSnapshotInstanceManager } from '../snapshot.js';
|
|
@@ -20,7 +20,7 @@ function unref(snapshot: SnapshotInstance, recursive: boolean): void {
|
|
|
20
20
|
|
|
21
21
|
snapshot.__worklet_ref_set?.forEach(v => {
|
|
22
22
|
if (v) {
|
|
23
|
-
workletUnRef(v as Worklet |
|
|
23
|
+
workletUnRef(v as Worklet | WorkletRefImpl<Element>);
|
|
24
24
|
}
|
|
25
25
|
});
|
|
26
26
|
snapshot.__worklet_ref_set?.clear();
|
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
* optimized attribute updates at compile time, avoiding runtime object spreads.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
import type { Worklet } from '@lynx-js/react/worklet-runtime/bindings';
|
|
13
|
+
|
|
12
14
|
import { BackgroundSnapshotInstance } from '../backgroundSnapshot.js';
|
|
13
|
-
import {
|
|
15
|
+
import { ListUpdateInfoRecording, __pendingListUpdates } from '../list.js';
|
|
14
16
|
import { SnapshotInstance } from '../snapshot.js';
|
|
15
17
|
import { isDirectOrDeepEqual, isEmptyObject, pick } from '../utils.js';
|
|
16
18
|
import { updateEvent } from './event.js';
|
|
@@ -37,7 +39,7 @@ const noFlattenAttributes = /* @__PURE__ */ new Set<string>([
|
|
|
37
39
|
]);
|
|
38
40
|
|
|
39
41
|
function updateSpread(snapshot: SnapshotInstance, index: number, oldValue: any, elementIndex: number): void {
|
|
40
|
-
oldValue
|
|
42
|
+
oldValue ??= {};
|
|
41
43
|
let newValue: Record<string, any> = snapshot.__values![index]; // compiler guarantee this must be an object;
|
|
42
44
|
|
|
43
45
|
// @ts-ignore
|
|
@@ -132,7 +134,7 @@ function updateSpread(snapshot: SnapshotInstance, index: number, oldValue: any,
|
|
|
132
134
|
__elements: snapshot.__elements,
|
|
133
135
|
} as SnapshotInstance;
|
|
134
136
|
updateGesture(fakeSnapshot, index, oldValue[key], elementIndex, workletType);
|
|
135
|
-
} else if ((match =
|
|
137
|
+
} else if ((match = eventRegExp.exec(key))) {
|
|
136
138
|
const workletType = match[2];
|
|
137
139
|
const eventType = eventTypeMap[match[3]!]!;
|
|
138
140
|
const eventName = match[4]!;
|
|
@@ -150,7 +152,15 @@ function updateSpread(snapshot: SnapshotInstance, index: number, oldValue: any,
|
|
|
150
152
|
__elements: snapshot.__elements,
|
|
151
153
|
} as SnapshotInstance;
|
|
152
154
|
if (workletType) {
|
|
153
|
-
updateWorkletEvent(
|
|
155
|
+
updateWorkletEvent(
|
|
156
|
+
fakeSnapshot,
|
|
157
|
+
index,
|
|
158
|
+
oldValue[key] as Worklet,
|
|
159
|
+
elementIndex,
|
|
160
|
+
workletType,
|
|
161
|
+
eventType,
|
|
162
|
+
eventName,
|
|
163
|
+
);
|
|
154
164
|
} else {
|
|
155
165
|
updateEvent(fakeSnapshot, index, oldValue[key], elementIndex, eventType, eventName, key);
|
|
156
166
|
}
|
|
@@ -220,7 +230,7 @@ function updateSpread(snapshot: SnapshotInstance, index: number, oldValue: any,
|
|
|
220
230
|
__elements: snapshot.__elements,
|
|
221
231
|
} as SnapshotInstance;
|
|
222
232
|
updateGesture(fakeSnapshot, index, oldValue[key], elementIndex, workletType);
|
|
223
|
-
} else if ((match =
|
|
233
|
+
} else if ((match = eventRegExp.exec(key))) {
|
|
224
234
|
const workletType = match[2];
|
|
225
235
|
const eventType = eventTypeMap[match[3]!]!;
|
|
226
236
|
const eventName = match[4]!;
|
|
@@ -2,13 +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 { onWorkletCtxUpdate } from '@lynx-js/react/worklet-runtime/bindings';
|
|
5
|
+
import type { Worklet } from '@lynx-js/react/worklet-runtime/bindings';
|
|
5
6
|
|
|
6
7
|
import { SnapshotInstance } from '../snapshot.js';
|
|
7
8
|
|
|
8
9
|
function updateWorkletEvent(
|
|
9
10
|
snapshot: SnapshotInstance,
|
|
10
11
|
expIndex: number,
|
|
11
|
-
_oldValue:
|
|
12
|
+
_oldValue: Worklet,
|
|
12
13
|
elementIndex: number,
|
|
13
14
|
workletType: string,
|
|
14
15
|
eventType: string,
|
|
@@ -17,7 +18,7 @@ function updateWorkletEvent(
|
|
|
17
18
|
if (!snapshot.__elements) {
|
|
18
19
|
return;
|
|
19
20
|
}
|
|
20
|
-
const value = snapshot.__values![expIndex] || {};
|
|
21
|
+
const value = (snapshot.__values![expIndex] as Worklet || undefined) ?? {};
|
|
21
22
|
value._workletType = workletType;
|
|
22
23
|
|
|
23
24
|
if (workletType === 'main-thread') {
|