@lynx-js/react-canary 0.112.6 → 0.112.7-canary-20250909-536ab089
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 +35 -30
- package/package.json +1 -1
- package/runtime/lazy/internal.js +1 -0
- package/runtime/lib/internal.d.ts +2 -1
- package/runtime/lib/internal.js +2 -1
- package/runtime/lib/internal.js.map +1 -1
- package/runtime/lib/lifecycle/isRendering.d.ts +3 -0
- package/runtime/lib/lifecycle/isRendering.js +25 -0
- package/runtime/lib/lifecycle/isRendering.js.map +1 -0
- package/runtime/lib/lifecycle/patch/commit.js +2 -0
- package/runtime/lib/lifecycle/patch/commit.js.map +1 -1
- package/runtime/lib/lynx.js +2 -7
- package/runtime/lib/lynx.js.map +1 -1
- package/runtime/lib/utils.d.ts +1 -0
- package/runtime/lib/utils.js +24 -0
- package/runtime/lib/utils.js.map +1 -1
- package/testing-library/dist/index.d.ts +1 -0
- package/testing-library/dist/pure.js +21 -9
- package/testing-library/types/entry.d.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @lynx-js/react
|
|
2
2
|
|
|
3
|
+
## 0.112.7-canary-20250909035639-536ab089baca6d86ffe56232f8f3dbbeaa29a050
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Keep the same `<page/>` element when calling `rerender` in testing library. ([#1656](https://github.com/lynx-family/lynx-stack/pull/1656))
|
|
8
|
+
|
|
3
9
|
## 0.112.6
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -33,10 +39,10 @@
|
|
|
33
39
|
- Add `animate` API in Main Thread Script(MTS), so you can now control a CSS animation imperatively ([#1534](https://github.com/lynx-family/lynx-stack/pull/1534))
|
|
34
40
|
|
|
35
41
|
```ts
|
|
36
|
-
import type { MainThread } from
|
|
42
|
+
import type { MainThread } from "@lynx-js/types";
|
|
37
43
|
|
|
38
44
|
function startAnimation(ele: MainThread.Element) {
|
|
39
|
-
|
|
45
|
+
"main thread";
|
|
40
46
|
const animation = ele.animate([{ opacity: 0 }, { opacity: 1 }], {
|
|
41
47
|
duration: 3000,
|
|
42
48
|
});
|
|
@@ -65,7 +71,7 @@
|
|
|
65
71
|
- Supports `recyclable` attribute in `<list-item>` to control whether the list item is recyclable. The `recyclable` attribute depends on Lynx Engine 3.4 or later. ([#1388](https://github.com/lynx-family/lynx-stack/pull/1388))
|
|
66
72
|
|
|
67
73
|
```jsx
|
|
68
|
-
<list-item recyclable={false}
|
|
74
|
+
<list-item recyclable={false} />
|
|
69
75
|
```
|
|
70
76
|
|
|
71
77
|
- feat: Support using a host element as direct child of Suspense ([#1455](https://github.com/lynx-family/lynx-stack/pull/1455))
|
|
@@ -86,7 +92,7 @@
|
|
|
86
92
|
|
|
87
93
|
```ts
|
|
88
94
|
function handleTap() {
|
|
89
|
-
|
|
95
|
+
"main thread";
|
|
90
96
|
// The following check always returned false before this fix
|
|
91
97
|
if (myHandleTap) {
|
|
92
98
|
runOnBackground(myHandleTap)();
|
|
@@ -147,10 +153,10 @@
|
|
|
147
153
|
Add the import to `@lynx-js/react/debug` at the first line of the entry:
|
|
148
154
|
|
|
149
155
|
```js
|
|
150
|
-
import
|
|
151
|
-
import { root } from
|
|
156
|
+
import "@lynx-js/react/debug";
|
|
157
|
+
import { root } from "@lynx-js/react";
|
|
152
158
|
|
|
153
|
-
import { App } from
|
|
159
|
+
import { App } from "./App.jsx";
|
|
154
160
|
|
|
155
161
|
root.render(<App />);
|
|
156
162
|
```
|
|
@@ -160,9 +166,9 @@
|
|
|
160
166
|
For example, you can use it like this:
|
|
161
167
|
|
|
162
168
|
```jsx
|
|
163
|
-
<list-item defer={{ unmountRecycled: true }} item-key=
|
|
169
|
+
<list-item defer={{ unmountRecycled: true }} item-key="1">
|
|
164
170
|
<WillBeUnmountIfRecycled />
|
|
165
|
-
</list-item
|
|
171
|
+
</list-item>
|
|
166
172
|
```
|
|
167
173
|
|
|
168
174
|
Now the component will be unmounted when it is recycled, which can help with performance in certain scenarios.
|
|
@@ -170,7 +176,7 @@
|
|
|
170
176
|
- Avoid some unexpected `__SetAttribute` in hydrate when `undefined` is passed as an attribute value to intrinsic elements, for example: ([#1318](https://github.com/lynx-family/lynx-stack/pull/1318))
|
|
171
177
|
|
|
172
178
|
```jsx
|
|
173
|
-
<image async-mode={undefined}
|
|
179
|
+
<image async-mode={undefined} />
|
|
174
180
|
```
|
|
175
181
|
|
|
176
182
|
## 0.111.1
|
|
@@ -216,7 +222,7 @@
|
|
|
216
222
|
- Supports `act` in testing library. ([#1182](https://github.com/lynx-family/lynx-stack/pull/1182))
|
|
217
223
|
|
|
218
224
|
```js
|
|
219
|
-
import { act } from
|
|
225
|
+
import { act } from "@lynx-js/react/testing-library";
|
|
220
226
|
|
|
221
227
|
act(() => {
|
|
222
228
|
// ...
|
|
@@ -322,8 +328,7 @@
|
|
|
322
328
|
* 3: Full Resolution - Batch render with async property and element tree resolution for list item subtree
|
|
323
329
|
*/
|
|
324
330
|
experimental-batch-render-strategy={3}
|
|
325
|
-
>
|
|
326
|
-
</list>;
|
|
331
|
+
></list>
|
|
327
332
|
```
|
|
328
333
|
|
|
329
334
|
- rename @lynx-js/test-environment to @lynx-js/testing-environment ([#704](https://github.com/lynx-family/lynx-stack/pull/704))
|
|
@@ -441,7 +446,7 @@
|
|
|
441
446
|
You can now use `useErrorBoundary` it in TypeScript like this:
|
|
442
447
|
|
|
443
448
|
```tsx
|
|
444
|
-
import { useErrorBoundary } from
|
|
449
|
+
import { useErrorBoundary } from "@lynx-js/react";
|
|
445
450
|
```
|
|
446
451
|
|
|
447
452
|
- Modified the format of data sent from background threads to the main thread. ([#207](https://github.com/lynx-family/lynx-stack/pull/207))
|
|
@@ -493,13 +498,13 @@
|
|
|
493
498
|
Now you can get the return value from `runOnBackground()` and `runOnMainThread()`, which enables more flexible data flow between the main thread and the background thread.
|
|
494
499
|
|
|
495
500
|
```js
|
|
496
|
-
import { runOnBackground } from
|
|
501
|
+
import { runOnBackground } from "@lynx-js/react";
|
|
497
502
|
|
|
498
503
|
const onTap = async () => {
|
|
499
|
-
|
|
504
|
+
"main thread";
|
|
500
505
|
const text = await runOnBackground(() => {
|
|
501
|
-
|
|
502
|
-
return
|
|
506
|
+
"background only";
|
|
507
|
+
return "Hello, world!";
|
|
503
508
|
})();
|
|
504
509
|
console.log(text);
|
|
505
510
|
};
|
|
@@ -534,9 +539,9 @@
|
|
|
534
539
|
|
|
535
540
|
```ts
|
|
536
541
|
// These imports will be removed from the final bundle
|
|
537
|
-
import type { Foo } from
|
|
538
|
-
import { type Bar } from
|
|
539
|
-
import { xyz } from
|
|
542
|
+
import type { Foo } from "xyz";
|
|
543
|
+
import { type Bar } from "xyz";
|
|
544
|
+
import { xyz } from "xyz"; // When xyz is not used
|
|
540
545
|
```
|
|
541
546
|
|
|
542
547
|
See [TypeScript - verbatimModuleSyntax](https://www.typescriptlang.org/tsconfig/#verbatimModuleSyntax) for details.
|
|
@@ -576,7 +581,7 @@
|
|
|
576
581
|
const f = undefined;
|
|
577
582
|
|
|
578
583
|
function mts() {
|
|
579
|
-
|
|
584
|
+
"main thread";
|
|
580
585
|
// throws in background rendering
|
|
581
586
|
f && runOnBackground(f)();
|
|
582
587
|
}
|
|
@@ -610,14 +615,14 @@
|
|
|
610
615
|
- a30c83d: Add `compat.removeComponentAttrRegex`.
|
|
611
616
|
|
|
612
617
|
```js
|
|
613
|
-
import { pluginReactLynx } from
|
|
614
|
-
import { defineConfig } from
|
|
618
|
+
import { pluginReactLynx } from "@lynx-js/react-rsbuild-plugin";
|
|
619
|
+
import { defineConfig } from "@lynx-js/rspeedy";
|
|
615
620
|
|
|
616
621
|
export default defineConfig({
|
|
617
622
|
plugins: [
|
|
618
623
|
pluginReactLynx({
|
|
619
624
|
compat: {
|
|
620
|
-
removeComponentAttrRegex:
|
|
625
|
+
removeComponentAttrRegex: "YOUR REGEX",
|
|
621
626
|
},
|
|
622
627
|
}),
|
|
623
628
|
],
|
|
@@ -703,22 +708,22 @@
|
|
|
703
708
|
Gesture Handler is a set of gesture handling capabilities built on top of the Main Thread Script. It currently supports drag, inertial scrolling, long press, and tap gestures for `<view>`, `<scroll-view>`, `<list>`, and `<text>`. In the future, it will also support multi-finger zoom, multi-finger rotation, and other gesture capabilities.
|
|
704
709
|
|
|
705
710
|
```tsx
|
|
706
|
-
import { useGesture, PanGesture } from
|
|
711
|
+
import { useGesture, PanGesture } from "@lynx-js/gesture-runtime";
|
|
707
712
|
|
|
708
713
|
function App() {
|
|
709
714
|
const pan = useGesture(PanGesture);
|
|
710
715
|
|
|
711
716
|
pan
|
|
712
717
|
.onBegin((event, stateManager) => {
|
|
713
|
-
|
|
718
|
+
"main thread";
|
|
714
719
|
// some logic
|
|
715
720
|
})
|
|
716
721
|
.onUpdate((event, stateManager) => {
|
|
717
|
-
|
|
722
|
+
"main thread";
|
|
718
723
|
// some logic
|
|
719
724
|
})
|
|
720
725
|
.onEnd((event, stateManager) => {
|
|
721
|
-
|
|
726
|
+
"main thread";
|
|
722
727
|
// some logic
|
|
723
728
|
});
|
|
724
729
|
|
|
@@ -738,7 +743,7 @@
|
|
|
738
743
|
return;
|
|
739
744
|
}
|
|
740
745
|
|
|
741
|
-
console.log(
|
|
746
|
+
console.log("not __LEPUS__"); // This can be removed now
|
|
742
747
|
}
|
|
743
748
|
```
|
|
744
749
|
|
package/package.json
CHANGED
package/runtime/lazy/internal.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import './lynx.js';
|
|
2
|
+
import { BackgroundSnapshotInstance } from './backgroundSnapshot.js';
|
|
2
3
|
import { __root } from './root.js';
|
|
3
4
|
import { DynamicPartType } from './snapshot/dynamicPartType.js';
|
|
4
5
|
import { snapshotCreateList } from './snapshot/list.js';
|
|
5
6
|
import { SnapshotInstance, __page, __pageId, createSnapshot, snapshotManager } from './snapshot.js';
|
|
6
7
|
export { __page, __pageId, __root };
|
|
7
|
-
export { SnapshotInstance, snapshotCreateList, createSnapshot, snapshotManager };
|
|
8
|
+
export { BackgroundSnapshotInstance, SnapshotInstance, snapshotCreateList, createSnapshot, snapshotManager };
|
|
8
9
|
export declare const __DynamicPartSlot: DynamicPartType;
|
|
9
10
|
export declare const __DynamicPartMultiChildren: DynamicPartType;
|
|
10
11
|
export declare const __DynamicPartChildren: DynamicPartType;
|
package/runtime/lib/internal.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// LICENSE file in the root directory of this source tree.
|
|
4
4
|
import { Suspense, createElement, lazy } from 'preact/compat';
|
|
5
5
|
import './lynx.js';
|
|
6
|
+
import { BackgroundSnapshotInstance } from './backgroundSnapshot.js';
|
|
6
7
|
import { factory as factory2 } from './compat/componentIs.js';
|
|
7
8
|
import { useMemo } from './hooks/react.js';
|
|
8
9
|
import { loadLazyBundle } from './lynx/lazy-bundle.js';
|
|
@@ -11,7 +12,7 @@ import { DynamicPartType } from './snapshot/dynamicPartType.js';
|
|
|
11
12
|
import { snapshotCreateList } from './snapshot/list.js';
|
|
12
13
|
import { SnapshotInstance, __page, __pageId, createSnapshot, snapshotManager } from './snapshot.js';
|
|
13
14
|
export { __page, __pageId, __root };
|
|
14
|
-
export { SnapshotInstance, snapshotCreateList, createSnapshot, snapshotManager };
|
|
15
|
+
export { BackgroundSnapshotInstance, SnapshotInstance, snapshotCreateList, createSnapshot, snapshotManager };
|
|
15
16
|
export const __DynamicPartSlot = DynamicPartType.Slot;
|
|
16
17
|
export const __DynamicPartMultiChildren = DynamicPartType.MultiChildren;
|
|
17
18
|
export const __DynamicPartChildren = DynamicPartType.Children;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,WAAW,CAAC;AAEnB,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEpG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,WAAW,CAAC;AAEnB,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEpG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAEpC,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAE7G,MAAM,CAAC,MAAM,iBAAiB,GAAoB,eAAe,CAAC,IAAI,CAAC;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAoB,eAAe,CAAC,aAAa,CAAC;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAoB,eAAe,CAAC,QAAQ,CAAC;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAoB,eAAe,CAAC,YAAY,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EACL,OAAO;AACP,+EAA+E;AAC/E,SAAS,GACV,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAuB,eAAe,CAAC,QAAQ;AAC/E,iEAAiE;AACjE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAS,EACjD,cAAc,CACf,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
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 { options } from 'preact';
|
|
5
|
+
import { RENDER_COMPONENT, ROOT } from '../renderToOpcodes/constants.js';
|
|
6
|
+
import { hook, lynxQueueMicrotask } from '../utils.js';
|
|
7
|
+
export const isRendering = /* @__PURE__ */ { value: false };
|
|
8
|
+
const setIsRendering = () => {
|
|
9
|
+
isRendering.value = true;
|
|
10
|
+
// Make sure `isRendering` is set to false even if an error is thrown during rendering
|
|
11
|
+
lynxQueueMicrotask(() => {
|
|
12
|
+
isRendering.value = false;
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
hook(options, RENDER_COMPONENT, (old, ...args) => {
|
|
16
|
+
/* v8 ignore next */
|
|
17
|
+
old?.(...args);
|
|
18
|
+
setIsRendering();
|
|
19
|
+
});
|
|
20
|
+
hook(options, ROOT, (old, ...args) => {
|
|
21
|
+
/* v8 ignore next */
|
|
22
|
+
old?.(...args);
|
|
23
|
+
setIsRendering();
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=isRendering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isRendering.js","sourceRoot":"","sources":["../../src/lifecycle/isRendering.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAE5D,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;IACzB,sFAAsF;IACtF,kBAAkB,CAAC,GAAG,EAAE;QACtB,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE;IAC/C,oBAAoB;IACpB,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACf,cAAc,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE;IACnC,oBAAoB;IACpB,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACf,cAAc,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC"}
|
|
@@ -27,6 +27,7 @@ import { takeWorkletRefInitValuePatch } from '../../worklet/workletRefPool.js';
|
|
|
27
27
|
import { getReloadVersion } from '../pass.js';
|
|
28
28
|
import { takeGlobalSnapshotPatch } from './snapshotPatch.js';
|
|
29
29
|
import { profileEnd, profileStart } from '../../debug/utils.js';
|
|
30
|
+
import { isRendering } from '../isRendering.js';
|
|
30
31
|
let globalFlushOptions = {};
|
|
31
32
|
function takeGlobalFlushOptions() {
|
|
32
33
|
const res = globalFlushOptions;
|
|
@@ -54,6 +55,7 @@ function replaceCommitHook() {
|
|
|
54
55
|
commitQueue.length = 0;
|
|
55
56
|
return;
|
|
56
57
|
}
|
|
58
|
+
isRendering.value = false;
|
|
57
59
|
// Mark the end of virtual DOM diffing phase for performance tracking
|
|
58
60
|
markTimingLegacy('updateDiffVdomEnd');
|
|
59
61
|
markTiming('diffVdomEnd');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/commit.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D;;;;;;;;;;GAUG;AAEH;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7G,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/commit.ts"],"names":[],"mappings":"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"}
|
package/runtime/lib/lynx.js
CHANGED
|
@@ -16,6 +16,7 @@ import { setupLynxEnv } from './lynx/env.js';
|
|
|
16
16
|
import { injectLepusMethods } from './lynx/injectLepusMethods.js';
|
|
17
17
|
import { initTimingAPI } from './lynx/performance.js';
|
|
18
18
|
import { injectTt } from './lynx/tt.js';
|
|
19
|
+
import { lynxQueueMicrotask } from './utils.js';
|
|
19
20
|
export { runWithForce } from './lynx/runWithForce.js';
|
|
20
21
|
// @ts-expect-error Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature
|
|
21
22
|
if (__MAIN_THREAD__ && typeof globalThis.processEvalResult === 'undefined') {
|
|
@@ -45,13 +46,7 @@ if (typeof __ALOG__ !== 'undefined' && __ALOG__) {
|
|
|
45
46
|
if (__BACKGROUND__) {
|
|
46
47
|
// Trick Preact and TypeScript to accept our custom document adapter.
|
|
47
48
|
options.document = document;
|
|
48
|
-
|
|
49
|
-
options.requestAnimationFrame = callback => lynx.queueMicrotask(callback);
|
|
50
|
-
}
|
|
51
|
-
else if (globalThis.Promise) {
|
|
52
|
-
const realResolvedPromise = globalThis.Promise.resolve();
|
|
53
|
-
options.requestAnimationFrame = callback => void realResolvedPromise.then(callback);
|
|
54
|
-
}
|
|
49
|
+
options.requestAnimationFrame = lynxQueueMicrotask;
|
|
55
50
|
setupBackgroundDocument();
|
|
56
51
|
injectTt();
|
|
57
52
|
addCtxNotFoundEventListener();
|
package/runtime/lib/lynx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lynx.js","sourceRoot":"","sources":["../src/lynx.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,4DAA4D;AAC5D,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"lynx.js","sourceRoot":"","sources":["../src/lynx.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,4DAA4D;AAC5D,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,gHAAgH;AAChH,IAAI,eAAe,IAAI,OAAO,UAAU,CAAC,iBAAiB,KAAK,WAAW,EAAE,CAAC;IAC3E,gHAAgH;IAChH,UAAU,CAAC,iBAAiB,GAAG,CAAI,MAA2C,EAAE,MAAc,EAAE,EAAE;QAChG,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC;AAED,IAAI,eAAe,EAAE,CAAC;IACpB,oBAAoB,EAAE,CAAC;IACvB,sBAAsB,EAAE,CAAC;IACzB,IAAI,OAAO,EAAE,CAAC;QACZ,kBAAkB,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,IAAI,OAAO,EAAE,CAAC;IACZ,mBAAmB,EAAE,CAAC;AACxB,CAAC;AAED,oDAAoD;AACpD,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;IACnC,eAAe,EAAE,CAAC;AACpB,CAAC;AAED,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,EAAE,CAAC;IAChD,kDAAkD;IAClD,QAAQ,EAAE,CAAC;AACb,CAAC;AAED,IAAI,cAAc,EAAE,CAAC;IACnB,qEAAqE;IACrE,OAAO,CAAC,QAAQ,GAAG,QAA+B,CAAC;IACnD,OAAO,CAAC,qBAAqB,GAAG,kBAAkB,CAAC;IACnD,uBAAuB,EAAE,CAAC;IAC1B,QAAQ,EAAE,CAAC;IACX,2BAA2B,EAAE,CAAC;IAE9B,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,EAAE,CAAC,CAAA,CAAC;SACrC,CAAC;QACJ,iBAAiB,EAAE,CAAC;QACpB,aAAa,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,WAAW,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;YAC7C,eAAe,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC;AAED,YAAY,EAAE,CAAC"}
|
package/runtime/lib/utils.d.ts
CHANGED
|
@@ -6,3 +6,4 @@ export declare function pick<T extends object, K extends keyof T>(obj: T, keys:
|
|
|
6
6
|
export declare function maybePromise<T>(value: unknown): value is Promise<T>;
|
|
7
7
|
export declare function getDisplayName(type: ComponentClass): string;
|
|
8
8
|
export declare function hook<T, K extends keyof T>(object: T, key: K, fn: Required<T>[K] extends (...args: infer P) => infer Q ? ((old?: T[K], ...args: P) => Q) : never): void;
|
|
9
|
+
export declare const lynxQueueMicrotask: typeof lynx.queueMicrotask;
|
package/runtime/lib/utils.js
CHANGED
|
@@ -62,4 +62,28 @@ export function hook(object, key, fn) {
|
|
|
62
62
|
return fn.call(this, oldFn, ...args);
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
+
export const lynxQueueMicrotask = /* @__PURE__ */ (() => {
|
|
66
|
+
if (lynx.queueMicrotask) {
|
|
67
|
+
return (fn) => lynx.queueMicrotask(fn);
|
|
68
|
+
}
|
|
69
|
+
else if (typeof globalThis.Promise === 'function') {
|
|
70
|
+
const resolved = globalThis.Promise.resolve();
|
|
71
|
+
/* v8 ignore start */
|
|
72
|
+
return (fn) => {
|
|
73
|
+
// Schedule as a microtask, and surface exceptions like queueMicrotask would.
|
|
74
|
+
resolved.then(fn).catch((err) => {
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
throw err;
|
|
77
|
+
}, 0);
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// Fallback to macrotask when microtasks aren't available.
|
|
83
|
+
return (fn) => {
|
|
84
|
+
setTimeout(fn, 0);
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/* v8 ignore stop */
|
|
88
|
+
})();
|
|
65
89
|
//# sourceMappingURL=utils.js.map
|
package/runtime/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1469,6 +1469,7 @@ export declare type RenderResult<Q extends Queries = typeof queries> = {
|
|
|
1469
1469
|
container: LynxElement;
|
|
1470
1470
|
rerender: (ui: React.ReactNode) => void;
|
|
1471
1471
|
unmount: () => boolean;
|
|
1472
|
+
asFragment: () => DocumentFragment;
|
|
1472
1473
|
} & { [P in keyof Q]: BoundFunction<Q[P]> };
|
|
1473
1474
|
|
|
1474
1475
|
declare type Screen_2<Q extends Queries = typeof queries> = BoundFunctions<Q> & {
|
|
@@ -14580,17 +14580,19 @@ function waitSchedule() {
|
|
|
14580
14580
|
return result;
|
|
14581
14581
|
}
|
|
14582
14582
|
});
|
|
14583
|
-
function pure_render(ui, { queries, wrapper: WrapperComponent, enableMainThread = false, enableBackgroundThread = true } = {}) {
|
|
14583
|
+
function pure_render(ui, { queries, wrapper: WrapperComponent, enableMainThread = false, enableBackgroundThread = true, isRerender = false } = {}) {
|
|
14584
14584
|
if (!enableMainThread && !enableBackgroundThread) throw new Error('You must enable at least one thread for rendering (enableMainThread or enableBackgroundThread)');
|
|
14585
14585
|
const wrapUiIfNeeded = (innerElement)=>WrapperComponent ? h(WrapperComponent, null, innerElement) : innerElement;
|
|
14586
14586
|
const comp = wrapUiIfNeeded(ui);
|
|
14587
14587
|
const compMainThread = cloneElement(comp);
|
|
14588
14588
|
const compBackgroundThread = cloneElement(comp);
|
|
14589
|
-
|
|
14590
|
-
|
|
14591
|
-
|
|
14592
|
-
|
|
14593
|
-
|
|
14589
|
+
if (!isRerender) {
|
|
14590
|
+
globalThis.lynxTestingEnv.switchToMainThread();
|
|
14591
|
+
__root.__jsx = enableMainThread ? compMainThread : null;
|
|
14592
|
+
act(()=>{
|
|
14593
|
+
renderPage();
|
|
14594
|
+
});
|
|
14595
|
+
}
|
|
14594
14596
|
if (enableBackgroundThread) {
|
|
14595
14597
|
globalThis.lynxTestingEnv.switchToBackgroundThread();
|
|
14596
14598
|
act(()=>{
|
|
@@ -14602,14 +14604,24 @@ function pure_render(ui, { queries, wrapper: WrapperComponent, enableMainThread
|
|
|
14602
14604
|
container: lynxTestingEnv.mainThread.elementTree.root,
|
|
14603
14605
|
unmount: cleanup,
|
|
14604
14606
|
rerender: (rerenderUi)=>{
|
|
14605
|
-
|
|
14606
|
-
return pure_render(wrapUiIfNeeded(rerenderUi), {
|
|
14607
|
+
pure_render(rerenderUi, {
|
|
14607
14608
|
queries,
|
|
14608
14609
|
wrapper: WrapperComponent,
|
|
14609
14610
|
enableMainThread,
|
|
14610
|
-
enableBackgroundThread
|
|
14611
|
+
enableBackgroundThread,
|
|
14612
|
+
isRerender: true
|
|
14611
14613
|
});
|
|
14612
14614
|
},
|
|
14615
|
+
asFragment: ()=>{
|
|
14616
|
+
const { document: document1 } = lynxTestingEnv.jsdom.window;
|
|
14617
|
+
const container = lynxTestingEnv.mainThread.elementTree.root;
|
|
14618
|
+
if ('function' == typeof document1.createRange) return document1.createRange().createContextualFragment(container.innerHTML);
|
|
14619
|
+
{
|
|
14620
|
+
const template = document1.createElement('template');
|
|
14621
|
+
template.innerHTML = container.innerHTML;
|
|
14622
|
+
return template.content;
|
|
14623
|
+
}
|
|
14624
|
+
},
|
|
14613
14625
|
...(0, dom_esm.E5)(lynxTestingEnv.mainThread.elementTree.root, queries)
|
|
14614
14626
|
};
|
|
14615
14627
|
}
|
|
@@ -143,6 +143,7 @@ export type RenderResult<Q extends Queries = typeof queries> = {
|
|
|
143
143
|
container: LynxElement;
|
|
144
144
|
rerender: (ui: React.ReactNode) => void;
|
|
145
145
|
unmount: () => boolean;
|
|
146
|
+
asFragment: () => DocumentFragment;
|
|
146
147
|
} & { [P in keyof Q]: BoundFunction<Q[P]> };
|
|
147
148
|
|
|
148
149
|
/**
|