@lynx-js/react-canary 0.112.6 → 0.112.7-canary-20250909-1935050c

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @lynx-js/react
2
2
 
3
+ ## 0.112.7-canary-20250909031742-1935050cfd8ac37cbac6ad792f3aab0eb6b250b8
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 '@lynx-js/types';
42
+ import type { MainThread } from "@lynx-js/types";
37
43
 
38
44
  function startAnimation(ele: MainThread.Element) {
39
- 'main thread';
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
- 'main thread';
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 '@lynx-js/react/debug';
151
- import { root } from '@lynx-js/react';
156
+ import "@lynx-js/react/debug";
157
+ import { root } from "@lynx-js/react";
152
158
 
153
- import { App } from './App.jsx';
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='1'>
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 '@lynx-js/react/testing-library';
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 '@lynx-js/react';
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 '@lynx-js/react';
501
+ import { runOnBackground } from "@lynx-js/react";
497
502
 
498
503
  const onTap = async () => {
499
- 'main thread';
504
+ "main thread";
500
505
  const text = await runOnBackground(() => {
501
- 'background only';
502
- return 'Hello, world!';
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 'xyz';
538
- import { type Bar } from 'xyz';
539
- import { xyz } from 'xyz'; // When xyz is not used
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
- 'main thread';
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 '@lynx-js/react-rsbuild-plugin';
614
- import { defineConfig } from '@lynx-js/rspeedy';
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: 'YOUR REGEX',
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 '@lynx-js/gesture-runtime';
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
- 'main thread';
718
+ "main thread";
714
719
  // some logic
715
720
  })
716
721
  .onUpdate((event, stateManager) => {
717
- 'main thread';
722
+ "main thread";
718
723
  // some logic
719
724
  })
720
725
  .onEnd((event, stateManager) => {
721
- 'main thread';
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('not __LEPUS__'); // This can be removed now
746
+ console.log("not __LEPUS__"); // This can be removed now
742
747
  }
743
748
  ```
744
749
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lynx-js/react-canary",
3
- "version": "0.112.6",
3
+ "version": "0.112.7-canary-20250909-1935050c",
4
4
  "description": "ReactLynx is a framework for developing Lynx applications with familiar React.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -5,7 +5,7 @@
5
5
  Rslib v0.12.4
6
6
 
7
7
  info build started...
8
- ready built in 0.18 s
8
+ ready built in 0.17 s
9
9
 
10
10
  File (esm) Size 
11
11
  dist/index.js 11.1 kB
@@ -5,6 +5,7 @@
5
5
  import { sExportsReactInternal, target } from './target.js';
6
6
 
7
7
  export const {
8
+ BackgroundSnapshotInstance,
8
9
  Component,
9
10
  __ComponentIsPolyfill,
10
11
  __DynamicPartChildren,
@@ -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;
@@ -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;AAEjF,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"}
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,3 @@
1
+ export declare const isRendering: {
2
+ value: boolean;
3
+ };
@@ -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":"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"}
1
+ {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../src/lifecycle/patch/commit.ts"],"names":[],"mappings":"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"}
@@ -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
- if (lynx.queueMicrotask) {
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();
@@ -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;AAExC,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,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,OAAO,CAAC,qBAAqB,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5E,CAAC;SAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACzD,OAAO,CAAC,qBAAqB,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtF,CAAC;IACD,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"}
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"}
@@ -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;
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAI1D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE5E,MAAM,UAAU,mBAAmB,CAAC,CAAM,EAAE,CAAM;IAChD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,IACE,OAAO,CAAC,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI;eACrE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAC1C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAE,KAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,mEAAmE;YACnE,+BAA+B;YAC/B,sEAAsE;YACtE,8CAA8C;YAC9C,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;YAChC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;gBAClC,KAAe,CAAC,OAAO,IAAI,OAAO,KAAK,EAAE,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,KAAK,MAAM,CAAC,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,KAAa;IACzD,MAAM,cAAc,GAAW,UAAU,CAAC,cAAc,IAAI,KAAK,CAAC;IAClE,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,IAAI,CAAsC,GAAM,EAAE,IAAiB;IACjF,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,KAAc;IAC5C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;WACtB,KAAK,KAAK,IAAI;QACjB,qCAAqC;WAClC,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,CACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,MAAS,EACT,GAAM,EACN,EACS;IAET,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,UAAkB,GAAG,IAAe;QAChD,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACvC,CAAS,CAAC;AACZ,CAAC"}
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
- globalThis.lynxTestingEnv.switchToMainThread();
14590
- __root.__jsx = enableMainThread ? compMainThread : null;
14591
- act(()=>{
14592
- renderPage();
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
- lynxTestingEnv.reset();
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
  /**