Skip to content

Commit 8b282b4

Browse files
authored
Merge pull request #8219 from QwikDev/v2-wrapped-signal-fn-hoisting
feat(perf): hoist wrapped signal function
2 parents c34c237 + 898b779 commit 8b282b4

File tree

29 files changed

+581
-249
lines changed

29 files changed

+581
-249
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,7 @@ jobs:
251251
target: x86_64-unknown-linux-gnu
252252
wasm: true
253253

254-
# the last x86 macos available as a standard runner
255-
- host: macos-13
254+
- host: macos-latest
256255
target: x86_64-apple-darwin
257256

258257
- host: macos-latest
@@ -354,7 +353,11 @@ jobs:
354353
if: needs.changes.outputs.build-rust == 'true'
355354
run: |
356355
mkdir -p packages/qwik/bindings
357-
mv artifact-bindings-*/* packages/qwik/bindings
356+
for dir in artifact-bindings-*; do
357+
if [ -d "$dir" ]; then
358+
mv "$dir"/* packages/qwik/bindings/
359+
fi
360+
done
358361
359362
- name: Save rust cache
360363
if: needs.changes.outputs.build-rust == 'true'

packages/qwik/src/core/client/vnode-diff.unit.tsx

Lines changed: 18 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,11 +1046,8 @@ describe('vNode-diff', () => {
10461046
it('should cleanup effects when wrapped signal attribute is replaced with non-signal', () => {
10471047
const { vParent, container } = vnode_fromJSX(_jsxSorted('span', {}, null, [], 0, null));
10481048
const inner = createSignal('initial') as SignalImpl;
1049-
const wrapped1 = _fnSignal(
1050-
() => inner.value,
1051-
[],
1052-
'() => inner.value'
1053-
) as WrappedSignalImpl<any>;
1049+
const fn = () => inner.value;
1050+
const wrapped1 = _fnSignal(fn, [], '() => inner.value') as WrappedSignalImpl<any>;
10541051
const test1 = _jsxSorted('span', { class: wrapped1 }, null, [], 0, null);
10551052
const journal: VNodeJournal = [];
10561053
vnode_diff(container, journal, test1, vParent, vParent, null);
@@ -1081,11 +1078,8 @@ describe('vNode-diff', () => {
10811078
it('should cleanup effects when wrapped signal attribute is replaced with another wrapped signal', () => {
10821079
const { vParent, container } = vnode_fromJSX(_jsxSorted('span', {}, null, [], 0, null));
10831080
const inner1 = createSignal('first') as SignalImpl;
1084-
const wrapped1 = _fnSignal(
1085-
() => inner1.value,
1086-
[],
1087-
'() => inner1.value'
1088-
) as WrappedSignalImpl<any>;
1081+
const fn1 = () => inner1.value;
1082+
const wrapped1 = _fnSignal(fn1, [], '() => inner1.value') as WrappedSignalImpl<any>;
10891083
const test1 = _jsxSorted('span', { class: wrapped1 }, null, [], 0, null);
10901084
const journal: VNodeJournal = [];
10911085
vnode_diff(container, journal, test1, vParent, vParent, null);
@@ -1102,11 +1096,8 @@ describe('vNode-diff', () => {
11021096

11031097
// Replace with another wrapped signal using a different inner signal
11041098
const inner2 = createSignal('second') as SignalImpl;
1105-
const wrapped2 = _fnSignal(
1106-
() => inner2.value,
1107-
[],
1108-
'() => inner2.value'
1109-
) as WrappedSignalImpl<any>;
1099+
const fn2 = () => inner2.value;
1100+
const wrapped2 = _fnSignal(fn2, [], '() => inner2.value') as WrappedSignalImpl<any>;
11101101
const test2 = _jsxSorted('span', { class: wrapped2 }, null, [], 0, null);
11111102
const journal2: VNodeJournal = [];
11121103
vnode_diff(container, journal2, test2, vParent, vParent, null);
@@ -1128,11 +1119,8 @@ describe('vNode-diff', () => {
11281119
it('should cleanup effects when wrapped signal attribute is removed', () => {
11291120
const { vParent, container } = vnode_fromJSX(_jsxSorted('span', {}, null, [], 0, null));
11301121
const inner = createSignal('test') as SignalImpl;
1131-
const wrapped = _fnSignal(
1132-
() => inner.value,
1133-
[],
1134-
'() => inner.value'
1135-
) as WrappedSignalImpl<any>;
1122+
const fn = () => inner.value;
1123+
const wrapped = _fnSignal(fn, [], '() => inner.value') as WrappedSignalImpl<any>;
11361124
const test1 = _jsxSorted('span', { class: wrapped }, null, [], 0, null);
11371125
const journal: VNodeJournal = [];
11381126
vnode_diff(container, journal, test1, vParent, vParent, null);
@@ -1164,11 +1152,8 @@ describe('vNode-diff', () => {
11641152
it('should cleanup effects when store wrapped attribute is replaced with non-signal', () => {
11651153
const { vParent, container } = vnode_fromJSX(_jsxSorted('span', {}, null, [], 0, null));
11661154
const store = getOrCreateStore({ cls: 'initial' }, StoreFlags.RECURSIVE, container);
1167-
const wrapped1 = _fnSignal(
1168-
() => store.cls,
1169-
[],
1170-
'() => store.cls'
1171-
) as WrappedSignalImpl<any>;
1155+
const fn = () => store.cls;
1156+
const wrapped1 = _fnSignal(fn, [], '() => store.cls') as WrappedSignalImpl<any>;
11721157
const test1 = _jsxSorted('span', { class: wrapped1 }, null, [], 0, null);
11731158
const journal: VNodeJournal = [];
11741159
vnode_diff(container, journal, test1, vParent, vParent, null);
@@ -1198,11 +1183,8 @@ describe('vNode-diff', () => {
11981183
it('should cleanup effects when store wrapped attribute is replaced with another store wrapped attribute', () => {
11991184
const { vParent, container } = vnode_fromJSX(_jsxSorted('span', {}, null, [], 0, null));
12001185
const store1 = getOrCreateStore({ cls: 'first' }, StoreFlags.RECURSIVE, container);
1201-
const wrapped1 = _fnSignal(
1202-
() => store1.cls,
1203-
[],
1204-
'() => store1.cls'
1205-
) as WrappedSignalImpl<any>;
1186+
const fn1 = () => store1.cls;
1187+
const wrapped1 = _fnSignal(fn1, [], '() => store1.cls') as WrappedSignalImpl<any>;
12061188
const test1 = _jsxSorted('span', { class: wrapped1 }, null, [], 0, null);
12071189
const journal: VNodeJournal = [];
12081190
vnode_diff(container, journal, test1, vParent, vParent, null);
@@ -1217,11 +1199,8 @@ describe('vNode-diff', () => {
12171199

12181200
// Replace with another wrapped signal using a different store
12191201
const store2 = getOrCreateStore({ cls: 'second' }, StoreFlags.RECURSIVE, container);
1220-
const wrapped2 = _fnSignal(
1221-
() => store2.cls,
1222-
[],
1223-
'() => store2.cls'
1224-
) as WrappedSignalImpl<any>;
1202+
const fn2 = () => store2.cls;
1203+
const wrapped2 = _fnSignal(fn2, [], '() => store2.cls') as WrappedSignalImpl<any>;
12251204
const test2 = _jsxSorted('span', { class: wrapped2 }, null, [], 0, null);
12261205
const journal2: VNodeJournal = [];
12271206
vnode_diff(container, journal2, test2, vParent, vParent, null);
@@ -1240,11 +1219,8 @@ describe('vNode-diff', () => {
12401219
it('should cleanup effects when store wrapped attribute is removed', () => {
12411220
const { vParent, container } = vnode_fromJSX(_jsxSorted('span', {}, null, [], 0, null));
12421221
const store = getOrCreateStore({ cls: 'test' }, StoreFlags.RECURSIVE, container);
1243-
const wrapped = _fnSignal(
1244-
() => store.cls,
1245-
[],
1246-
'() => store.cls'
1247-
) as WrappedSignalImpl<any>;
1222+
const fn = () => store.cls;
1223+
const wrapped = _fnSignal(fn, [], '() => store.cls') as WrappedSignalImpl<any>;
12481224
const test1 = _jsxSorted('span', { class: wrapped }, null, [], 0, null);
12491225
const journal: VNodeJournal = [];
12501226
vnode_diff(container, journal, test1, vParent, vParent, null);
@@ -1275,11 +1251,8 @@ describe('vNode-diff', () => {
12751251
const { vParent, container } = vnode_fromJSX(_jsxSorted('div', {}, null, [], 0, null));
12761252

12771253
const inner = createSignal('cls') as SignalImpl<string>;
1278-
const wrapped = _fnSignal(
1279-
() => inner.value,
1280-
[],
1281-
'() => inner.value'
1282-
) as WrappedSignalImpl<any>;
1254+
const fn = () => inner.value;
1255+
const wrapped = _fnSignal(fn, [], '() => inner.value') as WrappedSignalImpl<any>;
12831256

12841257
const Child = component$((props: any) => {
12851258
return <span class={props.cls.value}></span>;

packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
---
22
source: packages/qwik/src/optimizer/core/src/test.rs
3-
assertion_line: 3758
3+
assertion_line: 3759
44
expression: output
5-
snapshot_kind: text
65
---
76
==INPUT==
87

@@ -34,18 +33,20 @@ import { _fnSignal } from "@qwik.dev/core";
3433
import { _jsxSorted } from "@qwik.dev/core";
3534
import { _restProps } from "@qwik.dev/core";
3635
import { useSignal } from "@qwik.dev/core";
36+
const _hf0 = (p0)=>p0.test.value;
37+
const _hf0_str = "p0.test.value";
3738
export const test_component_LUXeXe0DQrg = (props)=>{
3839
const rest = _restProps(props, [
3940
"test"
4041
]);
4142
useSignal(rest['bind:value']);
42-
return /*#__PURE__*/ _jsxSorted(_Fragment, null, null, _fnSignal((p0)=>p0.test.value, [
43+
return /*#__PURE__*/ _jsxSorted(_Fragment, null, null, _fnSignal(_hf0, [
4344
props
44-
], "p0.test.value"), 1, "u6_0");
45+
], _hf0_str), 1, "u6_0");
4546
};
4647

4748

48-
Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;0CAE4B,CAAC;4BACA;;;IACb,UAAU,IAAI,CAAC,aAAa;IACzC,qBACC,kDACC,GAJM,KAID,KAAK;;;AAGb\"}")
49+
Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;mBAOK,GAJM,KAID,KAAK;;0CALa,CAAC;4BACA;;;IACb,UAAU,IAAI,CAAC,aAAa;IACzC,qBACC;;;AAIF\"}")
4950
/*
5051
{
5152
"origin": "test.tsx",

packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
---
22
source: packages/qwik/src/optimizer/core/src/test.rs
3-
assertion_line: 3651
3+
assertion_line: 3652
44
expression: output
5-
snapshot_kind: text
65
---
76
==INPUT==
87

@@ -23,20 +22,22 @@ snapshot_kind: text
2322
import { _fnSignal } from "@qwik.dev/core";
2423
import { qrl } from "@qwik.dev/core";
2524
import { _jsxSorted } from "@qwik.dev/core";
25+
const _hf0 = (p0)=>p0.data.selectedOutputDetail === 'options';
26+
const _hf0_str = 'p0.data.selectedOutputDetail==="options"';
2627
const i_GbMO6TGQv9M = ()=>import("./test.tsx_test_div_onClick_GbMO6TGQv9M");
2728
export default ((_rawProps)=>{
2829
return /*#__PURE__*/ _jsxSorted("div", {
29-
"data-is-active": _fnSignal((p0)=>p0.data.selectedOutputDetail === 'options', [
30+
"data-is-active": _fnSignal(_hf0, [
3031
_rawProps
31-
], 'p0.data.selectedOutputDetail==="options"'),
32+
], _hf0_str),
3233
onClick$: /*#__PURE__*/ qrl(i_GbMO6TGQv9M, "test_div_onClick_GbMO6TGQv9M", [
3334
_rawProps
3435
])
3536
}, null, null, 2, "u6_0");
3637
});
3738

3839

39-
Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AACE,eAAe,CAAA;IACP,qBACE,WAAC;QACC,gBAAc,kBAAE,GAHV,KAGe,oBAAoB,KAAK;;;QAC9C,QAAQ;;;;AAKpB,CAAA,EAAE\"}")
40+
Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mBAI8B,GAHV,KAGe,oBAAoB,KAAK;;;AAH1D,eAAe,CAAA;IACP,qBACE,WAAC;QACC,gBAAc;;;QACd,QAAQ;;;;AAKpB,CAAA,EAAE\"}")
4041
============================= test.tsx_test_div_onClick_GbMO6TGQv9M.js (ENTRY POINT)==
4142

4243
import { useLexicalScope } from "@qwik.dev/core";

packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
---
22
source: packages/qwik/src/optimizer/core/src/test.rs
3-
assertion_line: 3673
3+
assertion_line: 3674
44
expression: output
5-
snapshot_kind: text
65
---
76
==INPUT==
87

@@ -24,20 +23,22 @@ snapshot_kind: text
2423
import { _fnSignal } from "@qwik.dev/core";
2524
import { qrl } from "@qwik.dev/core";
2625
import { _jsxSorted } from "@qwik.dev/core";
26+
const _hf0 = (p0)=>p0.data.selectedOutputDetail === 'options';
27+
const _hf0_str = 'p0.data.selectedOutputDetail==="options"';
2728
const i_GbMO6TGQv9M = ()=>import("./test.tsx_test_div_onClick_GbMO6TGQv9M");
2829
export default ((props)=>{
2930
return /*#__PURE__*/ _jsxSorted("div", {
30-
"data-is-active": _fnSignal((p0)=>p0.data.selectedOutputDetail === 'options', [
31+
"data-is-active": _fnSignal(_hf0, [
3132
props
32-
], 'p0.data.selectedOutputDetail==="options"'),
33+
], _hf0_str),
3334
onClick$: /*#__PURE__*/ qrl(i_GbMO6TGQv9M, "test_div_onClick_GbMO6TGQv9M", [
3435
props
3536
])
3637
}, null, null, 2, "u6_0");
3738
});
3839

3940

40-
Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AACE,eAAe,CAAA,CAAC;IAER,qBACE,WAAC;QACC,gBAAc,kBAAE,GAHlB,KAGuB,oBAAoB,KAAK;;;QAC9C,QAAQ;;;;AAKpB,CAAA,EAAE\"}")
41+
Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mBAK8B,GAHlB,KAGuB,oBAAoB,KAAK;;;AAJ1D,eAAe,CAAA,CAAC;IAER,qBACE,WAAC;QACC,gBAAc;;;QACd,QAAQ;;;;AAKpB,CAAA,EAAE\"}")
4142
============================= test.tsx_test_div_onClick_GbMO6TGQv9M.js (ENTRY POINT)==
4243

4344
import { useLexicalScope } from "@qwik.dev/core";

packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
---
22
source: packages/qwik/src/optimizer/core/src/test.rs
3-
assertion_line: 3696
3+
assertion_line: 3697
44
expression: output
5-
snapshot_kind: text
65
---
76
==INPUT==
87

@@ -20,18 +19,20 @@ snapshot_kind: text
2019
import { _fnSignal } from "@qwik.dev/core";
2120
import { qrl } from "@qwik.dev/core";
2221
import { _jsxSorted } from "@qwik.dev/core";
22+
const _hf0 = (p0)=>p0.data.selectedOutputDetail === 'options';
23+
const _hf0_str = 'p0.data.selectedOutputDetail==="options"';
2324
const i_GbMO6TGQv9M = ()=>import("./test.tsx_test_div_onClick_GbMO6TGQv9M");
2425
export default ((_rawProps)=>/*#__PURE__*/ _jsxSorted("div", {
25-
"data-is-active": _fnSignal((p0)=>p0.data.selectedOutputDetail === 'options', [
26+
"data-is-active": _fnSignal(_hf0, [
2627
_rawProps
27-
], 'p0.data.selectedOutputDetail==="options"'),
28+
], _hf0_str),
2829
onClick$: /*#__PURE__*/ qrl(i_GbMO6TGQv9M, "test_div_onClick_GbMO6TGQv9M", [
2930
_rawProps
3031
])
3132
}, null, null, 2, "u6_0"));
3233

3334

34-
Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AACE,eAAe,CAAA,2BACL,WAAC;QACC,gBAAc,kBAAE,GAFV,KAEe,oBAAoB,KAAK;;;QAC9C,QAAQ;;;6BAGT,EAAE\"}")
35+
Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mBAG8B,GAFV,KAEe,oBAAoB,KAAK;;;AAF1D,eAAe,CAAA,2BACL,WAAC;QACC,gBAAc;;;QACd,QAAQ;;;6BAGT,EAAE\"}")
3536
============================= test.tsx_test_div_onClick_GbMO6TGQv9M.js (ENTRY POINT)==
3637

3738
import { useLexicalScope } from "@qwik.dev/core";

packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
---
22
source: packages/qwik/src/optimizer/core/src/test.rs
3-
assertion_line: 3979
3+
assertion_line: 3980
44
expression: output
5-
snapshot_kind: text
65
---
76
==INPUT==
87

@@ -293,6 +292,8 @@ import { _jsxSorted } from "@qwik.dev/core";
293292
import { qrl } from "@qwik.dev/core";
294293
import { useSignal } from "@qwik.dev/core";
295294
import { useStore } from "@qwik.dev/core";
295+
const _hf0 = (p0, p1)=>p1[p0];
296+
const _hf0_str = "p1[p0]";
296297
const i_1mDJD4xhUZ8 = ()=>import("./test.tsx_App_component_loopForIn_span_onClick_1mDJD4xhUZ8");
297298
const i_AjlGKUbcCKY = ()=>import("./test.tsx_App_component_loopForOf_span_onClick_AjlGKUbcCKY");
298299
const i_MXjGbUTgkco = ()=>import("./test.tsx_App_component_loopForI_span_onClick_MXjGbUTgkco");
@@ -320,10 +321,10 @@ export const App_component_ckEPmXZlub0 = ()=>{
320321
i,
321322
results
322323
])
323-
}, null, _fnSignal((p0, p1)=>p1[p0], [
324+
}, null, _fnSignal(_hf0, [
324325
i,
325326
results
326-
], "p1[p0]"), 0, "u6_1"));
327+
], _hf0_str), 0, "u6_1"));
327328
return items;
328329
}
329330
function loopForOf(results) {
@@ -344,10 +345,10 @@ export const App_component_ckEPmXZlub0 = ()=>{
344345
key,
345346
results
346347
])
347-
}, null, _fnSignal((p0, p1)=>p1[p0], [
348+
}, null, _fnSignal(_hf0, [
348349
key,
349350
results
350-
], "p1[p0]"), 0, "u6_3"));
351+
], _hf0_str), 0, "u6_3"));
351352
return items;
352353
}
353354
function loopWhile(results) {
@@ -360,10 +361,10 @@ export const App_component_ckEPmXZlub0 = ()=>{
360361
i,
361362
results
362363
])
363-
}, null, _fnSignal((p0, p1)=>p1[p0], [
364+
}, null, _fnSignal(_hf0, [
364365
i,
365366
results
366-
], "p1[p0]"), 0, "u6_4"));
367+
], _hf0_str), 0, "u6_4"));
367368
i++;
368369
}
369370
return items;
@@ -386,7 +387,7 @@ export const App_component_ckEPmXZlub0 = ()=>{
386387
};
387388

388389

389-
Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;yCAE8B;IACxB,MAAM,OAAO,SAAmB,EAAE;IAClC,MAAM,UAAU,UAAU;QAAC;KAAM;IACjC,SAAS,YAAY,OAAiB;QACpC,OAAO,QAAQ,GAAG,CAAC,CAAC,qBAClB,WAAC;gBACC,QAAQ;;;;qBAIP;IAGP;IACA,SAAS,SAAS,OAAiB;QACjC,MAAM,QAAQ,EAAE;QAChB,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,MAAM,EAAE,IAClC,MAAM,IAAI,eACR,WAAC;YACC,QAAQ;;;;;qCAIP,EAAO,IAAG;;;;QAIjB,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,KAAK,MAAM,QAAQ,QACjB,MAAM,IAAI,eACR,WAAC;YACC,QAAQ;;;;iBAIP;QAIP,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,IAAK,MAAM,OAAO,QAChB,MAAM,IAAI,eACR,WAAC;YACC,QAAQ;;;;;qCAIP,EAAO,IAAK;;;;QAInB,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,IAAI,IAAI;QACR,MAAO,IAAI,QAAQ,MAAM,CAAE;YACzB,MAAM,IAAI,eACR,WAAC;gBACC,QAAQ;;;;;yCAIP,EAAO,IAAG;;;;YAGf;QACF;QACA,OAAO;IACT;IACA,qBACE,WAAC;QACE,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,qBAClB,WAAC;gBAEC,QAAQ;;;;;gBADR,IAAG;eAKF;QAGJ,YAAY,QAAQ,KAAK;QACzB,SAAS,QAAQ,KAAK;QACtB,UAAU,QAAQ,KAAK;QACvB,UAAU,QAAQ,KAAK;QACvB,UAAU,QAAQ,KAAK;;AAG9B\"}")
390+
Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;uBAyBe,EAAO,IAAG;;;;;;;;yCAvBK;IACxB,MAAM,OAAO,SAAmB,EAAE;IAClC,MAAM,UAAU,UAAU;QAAC;KAAM;IACjC,SAAS,YAAY,OAAiB;QACpC,OAAO,QAAQ,GAAG,CAAC,CAAC,qBAClB,WAAC;gBACC,QAAQ;;;;qBAIP;IAGP;IACA,SAAS,SAAS,OAAiB;QACjC,MAAM,QAAQ,EAAE;QAChB,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,MAAM,EAAE,IAClC,MAAM,IAAI,eACR,WAAC;YACC,QAAQ;;;;;;;;;QAQd,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,KAAK,MAAM,QAAQ,QACjB,MAAM,IAAI,eACR,WAAC;YACC,QAAQ;;;;iBAIP;QAIP,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,IAAK,MAAM,OAAO,QAChB,MAAM,IAAI,eACR,WAAC;YACC,QAAQ;;;;;;;;;QAQd,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,IAAI,IAAI;QACR,MAAO,IAAI,QAAQ,MAAM,CAAE;YACzB,MAAM,IAAI,eACR,WAAC;gBACC,QAAQ;;;;;;;;;YAOZ;QACF;QACA,OAAO;IACT;IACA,qBACE,WAAC;QACE,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,qBAClB,WAAC;gBAEC,QAAQ;;;;;gBADR,IAAG;eAKF;QAGJ,YAAY,QAAQ,KAAK;QACzB,SAAS,QAAQ,KAAK;QACtB,UAAU,QAAQ,KAAK;QACvB,UAAU,QAAQ,KAAK;QACvB,UAAU,QAAQ,KAAK;;AAG9B\"}")
390391
/*
391392
{
392393
"origin": "test.tsx",

0 commit comments

Comments
 (0)