@torpor/view 0.4.13 → 0.4.14
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 +10 -0
- package/dist/{Cleanup-BGQ5zaxE.d.cts → Cleanup-CYsytTEc.d.cts} +1 -1
- package/dist/Cleanup-CYsytTEc.d.cts.map +1 -0
- package/dist/{Cleanup-Ca8IspaG.d.ts → Cleanup-CgjyN0lW.d.mts} +1 -1
- package/dist/Cleanup-CgjyN0lW.d.mts.map +1 -0
- package/dist/{Component-BDUCwkBQ.d.cts → Component-DmWGMgak.d.mts} +1 -1
- package/dist/{Component-BDUCwkBQ.d.cts.map → Component-DmWGMgak.d.mts.map} +1 -1
- package/dist/{Component-JVwSemf-.d.ts → Component-kGLRFYg2.d.cts} +1 -1
- package/dist/Component-kGLRFYg2.d.cts.map +1 -0
- package/dist/{Region-BrsZLZUe.d.ts → Region-Bb6HAb-F.d.cts} +2 -2
- package/dist/{Region-Cf7OeBIQ.d.cts.map → Region-Bb6HAb-F.d.cts.map} +1 -1
- package/dist/{Region-Cf7OeBIQ.d.cts → Region-CTchywkr.d.mts} +2 -2
- package/dist/Region-CTchywkr.d.mts.map +1 -0
- package/dist/compile.cjs +239 -71
- package/dist/compile.d.cts +1 -1
- package/dist/{compile.d.ts → compile.d.mts} +2 -2
- package/dist/compile.d.mts.map +1 -0
- package/dist/{compile.js → compile.mjs} +239 -70
- package/dist/compile.mjs.map +1 -0
- package/dist/dev.cjs +1 -2
- package/dist/dev.d.cts +2 -2
- package/dist/{dev.d.ts → dev.d.mts} +3 -3
- package/dist/dev.d.mts.map +1 -0
- package/dist/{dev.js → dev.mjs} +2 -2
- package/dist/{dev.cjs.map → dev.mjs.map} +1 -1
- package/dist/devContext-B3yskfhA.cjs +1 -2
- package/dist/{devContext-CevrTlUO.js → devContext-CQ8RhBX-.mjs} +1 -1
- package/dist/{devContext-B3yskfhA.cjs.map → devContext-CQ8RhBX-.mjs.map} +1 -1
- package/dist/{formatText-Ck04q8_X.cjs → formatText--9zsK5Nq.cjs} +4 -4
- package/dist/{formatText-OyD8MNAM.js → formatText-B8u71S_K.mjs} +4 -3
- package/dist/formatText-B8u71S_K.mjs.map +1 -0
- package/dist/{formatText-BlLF3PPm.d.ts → formatText-BNP3P38F.d.cts} +3 -3
- package/dist/formatText-BNP3P38F.d.cts.map +1 -0
- package/dist/{formatText-Bcb1JvW5.d.cts → formatText-D6Ov8Ub0.d.mts} +3 -3
- package/dist/formatText-D6Ov8Ub0.d.mts.map +1 -0
- package/dist/index.cjs +2 -3
- package/dist/index.d.cts +4 -4
- package/dist/{index.d.ts → index.d.mts} +5 -5
- package/dist/index.d.mts.map +1 -0
- package/dist/{index.js → index.mjs} +3 -3
- package/dist/{index.cjs.map → index.mjs.map} +1 -1
- package/dist/ssr.cjs +2 -3
- package/dist/ssr.d.cts +2 -2
- package/dist/{ssr.d.ts → ssr.d.mts} +3 -3
- package/dist/ssr.d.mts.map +1 -0
- package/dist/{ssr.js → ssr.mjs} +2 -2
- package/dist/{ssr.cjs.map → ssr.mjs.map} +1 -1
- package/package.json +17 -17
- package/scripts/copyToRepl.ts +6 -6
- package/src/compile/build/client/addMappedTextWithOffsets.ts +31 -0
- package/src/compile/build/client/buildAddFragment.ts +11 -11
- package/src/compile/build/client/buildComponentNode.ts +123 -29
- package/src/compile/build/client/buildElementNode.ts +65 -8
- package/src/compile/build/client/buildIfNode.ts +1 -1
- package/src/compile/build/client/buildSwitchNode.ts +1 -1
- package/src/compile/build/client/buildTextNode.ts +13 -6
- package/src/compile/build/client/getAttributeOffsets.ts +90 -0
- package/src/compile/build/client/stashRunWithOffsets.ts +7 -1
- package/src/compile/build/server/buildServerElementNode.ts +1 -1
- package/src/compile/parse/parseTag.ts +1 -7
- package/src/compile/parse/parseText.ts +1 -1
- package/src/render/buildClasses.ts +1 -1
- package/src/render/buildStyles.ts +3 -1
- package/src/types/ClassValue.ts +6 -1
- package/src/types/StyleValue.ts +6 -1
- package/test/source-maps/interpolated.test.ts +88 -0
- package/test/source-maps/parse.test.ts +1 -1
- package/tsdown.config.ts +2 -9
- package/vitest.config.ts +3 -3
- package/dist/Cleanup-BGQ5zaxE.d.cts.map +0 -1
- package/dist/Cleanup-Ca8IspaG.d.ts.map +0 -1
- package/dist/Component-JVwSemf-.d.ts.map +0 -1
- package/dist/Region-BrsZLZUe.d.ts.map +0 -1
- package/dist/compile.cjs.map +0 -1
- package/dist/compile.d.ts.map +0 -1
- package/dist/compile.js.map +0 -1
- package/dist/dev.d.ts.map +0 -1
- package/dist/dev.js.map +0 -1
- package/dist/devContext-CevrTlUO.js.map +0 -1
- package/dist/formatText-Bcb1JvW5.d.cts.map +0 -1
- package/dist/formatText-BlLF3PPm.d.ts.map +0 -1
- package/dist/formatText-Ck04q8_X.cjs.map +0 -1
- package/dist/formatText-OyD8MNAM.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/ssr.d.ts.map +0 -1
- package/dist/ssr.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @torpor/view
|
|
2
2
|
|
|
3
|
+
## 0.4.14
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 9bca98e: Feat: mapping for interpolated attribute values
|
|
8
|
+
- 7382b6d: Fix: allow null and undefined in classes and styles
|
|
9
|
+
- d68d347: Fix: some mapping
|
|
10
|
+
- 4e3d726: Fix: ifs and switches in @heads don't add elements
|
|
11
|
+
- adfa504: Fix: ok I think those types are finally right
|
|
12
|
+
|
|
3
13
|
## 0.4.13
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cleanup-CYsytTEc.d.cts","names":[],"sources":["../src/types/Cleanup.ts"],"sourcesContent":[],"mappings":";;;;;KAIK,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cleanup-CgjyN0lW.d.mts","names":[],"sources":["../src/types/Cleanup.ts"],"sourcesContent":[],"mappings":";;;;;KAIK,OAAA"}
|
|
@@ -8,4 +8,4 @@ type SlotRender = ($sparent: ParentNode, $sanchor: Node | null, $sprops?: Record
|
|
|
8
8
|
type Component = ($parent: ParentNode, $anchor: Node | null, $props?: Record<PropertyKey, any>, $context?: Record<PropertyKey, any>, $slots?: Record<string, SlotRender>) => void;
|
|
9
9
|
//#endregion
|
|
10
10
|
export { SlotRender as n, Component as t };
|
|
11
|
-
//# sourceMappingURL=Component-
|
|
11
|
+
//# sourceMappingURL=Component-DmWGMgak.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component-
|
|
1
|
+
{"version":3,"file":"Component-DmWGMgak.d.mts","names":[],"sources":["../src/types/SlotRender.ts","../src/types/Component.ts"],"sourcesContent":[],"mappings":";KAAK,UAAA,cACM,sBACA,uBACA,OAAO,8BACN,OAAO;;;;;;KCCd,SAAA,GDFa,CAAA,OAAA,ECGR,UDHQ,EAAA,OAAA,ECIR,IDJQ,GAAA,IAAA,EAAA,MAAA,CAAA,ECKR,MDLQ,CCKD,WDLC,EAAA,GAAA,CAAA,EAAA,QAAA,CAAA,ECMN,MDNM,CCMC,WDND,EAAA,GAAA,CAAA,EAAA,MAAA,CAAA,ECOR,MDPQ,CAAA,MAAA,ECOO,UDPP,CAAA,EAAA,GAAA,IAAA"}
|
|
@@ -8,4 +8,4 @@ type SlotRender = ($sparent: ParentNode, $sanchor: Node | null, $sprops?: Record
|
|
|
8
8
|
type Component = ($parent: ParentNode, $anchor: Node | null, $props?: Record<PropertyKey, any>, $context?: Record<PropertyKey, any>, $slots?: Record<string, SlotRender>) => void;
|
|
9
9
|
//#endregion
|
|
10
10
|
export { SlotRender as n, Component as t };
|
|
11
|
-
//# sourceMappingURL=Component-
|
|
11
|
+
//# sourceMappingURL=Component-kGLRFYg2.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Component-kGLRFYg2.d.cts","names":[],"sources":["../src/types/SlotRender.ts","../src/types/Component.ts"],"sourcesContent":[],"mappings":";KAAK,UAAA,cACM,sBACA,uBACA,OAAO,8BACN,OAAO;;;;;;KCCd,SAAA,GDFa,CAAA,OAAA,ECGR,UDHQ,EAAA,OAAA,ECIR,IDJQ,GAAA,IAAA,EAAA,MAAA,CAAA,ECKR,MDLQ,CCKD,WDLC,EAAA,GAAA,CAAA,EAAA,QAAA,CAAA,ECMN,MDNM,CCMC,WDND,EAAA,GAAA,CAAA,EAAA,MAAA,CAAA,ECOR,MDPQ,CAAA,MAAA,ECOO,UDPP,CAAA,EAAA,GAAA,IAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as Cleanup } from "./Cleanup-
|
|
1
|
+
import { t as Cleanup } from "./Cleanup-CYsytTEc.cjs";
|
|
2
2
|
|
|
3
3
|
//#region src/types/constants.d.ts
|
|
4
4
|
/**
|
|
@@ -198,4 +198,4 @@ interface Region {
|
|
|
198
198
|
}
|
|
199
199
|
//#endregion
|
|
200
200
|
export { Computed as i, Effect as n, ProxySignal as r, Region as t };
|
|
201
|
-
//# sourceMappingURL=Region-
|
|
201
|
+
//# sourceMappingURL=Region-Bb6HAb-F.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Region-
|
|
1
|
+
{"version":3,"file":"Region-Bb6HAb-F.d.cts","names":[],"sources":["../src/types/constants.ts","../src/types/Computed.ts","../src/types/ProxySignal.ts","../src/types/Subscription.ts","../src/types/Effect.ts","../src/types/Region.ts"],"sourcesContent":[],"mappings":";;;;;;AAGa,cAAA,WAAA,GAAA,CAAA;AAKb;AAKA;;cALa,aAAA;;ACPiB;;AAgBtB,cDJK,WAAA,GCIL,CAAA;;;;ADdR;AAKA;AAKA;;UCLyB;;AAPK;;EAgBtB,IAAA,EAAA,OALM,aAKN;EAKI;;;EAiCD,KAAA,EAtCH,CAsCG;EAAA;;;aAjCC;ECrBgB;;;EAoBP,WAAA,EDMP,YCNO,GAAA,IAAA;EAAA;;;eDWP;EE9Be;;;;;;EA2BhB,MAAA,EAAA,OAAA;EAQI;;;;;ACnCW;;EAehB,QAAA,EAAA,OAAA;EAKF;;;EAoBQ,QAAA,EHaP,YGbO,GAAA,IAAA;EAAA;;;;;;;;AJvClB;AAKA;AAKA;UENyB,WAAA;;;ADNK;EAWhB,IAAA,EAAA,OCDA,WDCA;EAKN;;;EAeM,WAAA,EChBA,YDgBA,GAAA,IAAA;EAuBH;;;sBClCU;;AApBO;;EAed,IAAA,CAAA,EAAA,MAAA;;;;AFbd;AAKA;AAKA;;UGLyB,YAAA;;AFPK;;EAgBtB,MAAA,EELC,WFKD,GELe,QFKf;EAKI;;;EAiCD,MAAA,EEtCF,QFsCE,GEtCS,MFsCT;EAAA;;;;ECtDiB,UAMH,ECgBZ,YDhBY,GAAA,IAAA;EAIX;;;;cCkBD;;;AA3BgB;;;;EAeT,cAAA,EAoBH,YApBG,GAAA,IAAA;EAMP;;;;;;;ACrBe;;;EAoBlB,MAAA,EAAA,OAAA;EAKI;;;EAeI,IAAA,CAAA,EAAA,MAAA;;;;AJvClB;AAKA;AAKA;UINyB,MAAA;;;AHNK;EAWhB,IAAA,EAAA,OGDA,WHCA;EAKN;;;;EAsCG,GAAA,EAAA,GAAA,GGtCC,OHsCD,GAAA,IAAA;EAAA;;;WGjCD;EFrBkB;;;EAoBP,WAAA,EEMP,YFNO,GAAA,IAAA;EAAA,UAAA,EEWR,MFXQ,GAAA,IAAA;;;;ECnBQ,MAMJ,EAAA,MAAA;EAIhB;;;EAKW,eAAA,ECyBF,MDzBE,GAAA,IAAA;EAMP;;;EAcI,QAAA,EAAA,OAAA;;;;ECnCW,IAKH,CAAA,EAAA,MAAA;;;;UCPA,MAAA;aACb;WACF;ELCV,cAAa,EKCI,MLDJ,GAAA,IAAA;EAKb,UAAa,EKHA,MLGA,GAAA,IAAA;EAKb,KAAa,EAAA,MAAA;;;;ACZiB;EAWhB,UAAA,EIAD,GJAC,CIAG,SJAH,CAAA,GAAA,IAAA;EAKN;;;EAeM,IAAA,CAAA,EAAA,MAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as Cleanup } from "./Cleanup-
|
|
1
|
+
import { t as Cleanup } from "./Cleanup-CgjyN0lW.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/types/constants.d.ts
|
|
4
4
|
/**
|
|
@@ -198,4 +198,4 @@ interface Region {
|
|
|
198
198
|
}
|
|
199
199
|
//#endregion
|
|
200
200
|
export { Computed as i, Effect as n, ProxySignal as r, Region as t };
|
|
201
|
-
//# sourceMappingURL=Region-
|
|
201
|
+
//# sourceMappingURL=Region-CTchywkr.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Region-CTchywkr.d.mts","names":[],"sources":["../src/types/constants.ts","../src/types/Computed.ts","../src/types/ProxySignal.ts","../src/types/Subscription.ts","../src/types/Effect.ts","../src/types/Region.ts"],"sourcesContent":[],"mappings":";;;;;;AAGa,cAAA,WAAA,GAAA,CAAA;AAKb;AAKA;;cALa,aAAA;;ACPiB;;AAgBtB,cDJK,WAAA,GCIL,CAAA;;;;ADdR;AAKA;AAKA;;UCLyB;;AAPK;;EAgBtB,IAAA,EAAA,OALM,aAKN;EAKI;;;EAiCD,KAAA,EAtCH,CAsCG;EAAA;;;aAjCC;ECrBgB;;;EAoBP,WAAA,EDMP,YCNO,GAAA,IAAA;EAAA;;;eDWP;EE9Be;;;;;;EA2BhB,MAAA,EAAA,OAAA;EAQI;;;;;ACnCW;;EAehB,QAAA,EAAA,OAAA;EAKF;;;EAoBQ,QAAA,EHaP,YGbO,GAAA,IAAA;EAAA;;;;;;;;AJvClB;AAKA;AAKA;UENyB,WAAA;;;ADNK;EAWhB,IAAA,EAAA,OCDA,WDCA;EAKN;;;EAeM,WAAA,EChBA,YDgBA,GAAA,IAAA;EAuBH;;;sBClCU;;AApBO;;EAed,IAAA,CAAA,EAAA,MAAA;;;;AFbd;AAKA;AAKA;;UGLyB,YAAA;;AFPK;;EAgBtB,MAAA,EELC,WFKD,GELe,QFKf;EAKI;;;EAiCD,MAAA,EEtCF,QFsCE,GEtCS,MFsCT;EAAA;;;;ECtDiB,UAMH,ECgBZ,YDhBY,GAAA,IAAA;EAIX;;;;cCkBD;;;AA3BgB;;;;EAeT,cAAA,EAoBH,YApBG,GAAA,IAAA;EAMP;;;;;;;ACrBe;;;EAoBlB,MAAA,EAAA,OAAA;EAKI;;;EAeI,IAAA,CAAA,EAAA,MAAA;;;;AJvClB;AAKA;AAKA;UINyB,MAAA;;;AHNK;EAWhB,IAAA,EAAA,OGDA,WHCA;EAKN;;;;EAsCG,GAAA,EAAA,GAAA,GGtCC,OHsCD,GAAA,IAAA;EAAA;;;WGjCD;EFrBkB;;;EAoBP,WAAA,EEMP,YFNO,GAAA,IAAA;EAAA,UAAA,EEWR,MFXQ,GAAA,IAAA;;;;ECnBQ,MAMJ,EAAA,MAAA;EAIhB;;;EAKW,eAAA,ECyBF,MDzBE,GAAA,IAAA;EAMP;;;EAcI,QAAA,EAAA,OAAA;;;;ECnCW,IAKH,CAAA,EAAA,MAAA;;;;UCPA,MAAA;aACb;WACF;ELCV,cAAa,EKCI,MLDJ,GAAA,IAAA;EAKb,UAAa,EKHA,MLGA,GAAA,IAAA;EAKb,KAAa,EAAA,MAAA;;;;ACZiB;EAWhB,UAAA,EIAD,GJAC,CIAG,SJAH,CAAA,GAAA,IAAA;EAKN;;;EAeM,IAAA,CAAA,EAAA,MAAA"}
|
package/dist/compile.cjs
CHANGED
|
@@ -300,6 +300,28 @@ function nextVarName(name, status) {
|
|
|
300
300
|
return varName;
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
+
//#endregion
|
|
304
|
+
//#region src/compile/build/client/addMappedTextWithOffsets.ts
|
|
305
|
+
function addMappedTextWithOffsets(preText, text, postText, spans, offsets, lengths, status, b) {
|
|
306
|
+
if (status.options.mapped === true) {
|
|
307
|
+
let mappedStart = b.toString().length + preText.length;
|
|
308
|
+
let functionBody = preText + text + postText;
|
|
309
|
+
b.append(functionBody);
|
|
310
|
+
for (let i = 0; i < spans.length; i++) {
|
|
311
|
+
let start = mappedStart + offsets[i];
|
|
312
|
+
let end = start + lengths[i];
|
|
313
|
+
status.map.push({
|
|
314
|
+
script: functionBody,
|
|
315
|
+
source: spans[i],
|
|
316
|
+
compiled: {
|
|
317
|
+
start,
|
|
318
|
+
end
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
} else b.append(preText + text + postText);
|
|
323
|
+
}
|
|
324
|
+
|
|
303
325
|
//#endregion
|
|
304
326
|
//#region src/compile/build/client/buildAddFragment.ts
|
|
305
327
|
function buildAddFragment(node, status, b, parentName, anchorName) {
|
|
@@ -310,19 +332,7 @@ function buildAddFragment(node, status, b, parentName, anchorName) {
|
|
|
310
332
|
if (fragment.effects.length > 0) {
|
|
311
333
|
status.imports.add("$run");
|
|
312
334
|
b.append("$run(() => {");
|
|
313
|
-
if (status.options.mapped === true) for (let effect of fragment.effects)
|
|
314
|
-
let start = b.toString().length + effect.offsets[i];
|
|
315
|
-
b.append(effect.functionBody);
|
|
316
|
-
let end = start + effect.lengths[i];
|
|
317
|
-
status.map.push({
|
|
318
|
-
script: effect.functionBody,
|
|
319
|
-
source: effect.spans[i],
|
|
320
|
-
compiled: {
|
|
321
|
-
start,
|
|
322
|
-
end
|
|
323
|
-
}
|
|
324
|
-
});
|
|
325
|
-
}
|
|
335
|
+
if (status.options.mapped === true) for (let effect of fragment.effects) addMappedTextWithOffsets("", effect.functionBody, "", effect.spans, effect.offsets, effect.lengths, status, b);
|
|
326
336
|
else b.append(fragment.effects.map((e) => e.functionBody).join("\n"));
|
|
327
337
|
b.append(`}${status.options.dev === true ? `, "setAttributes"` : ""});`);
|
|
328
338
|
}
|
|
@@ -705,6 +715,81 @@ function buildRun(functionName, functionBody, status, b) {
|
|
|
705
715
|
addPopDevBoundary(status, b);
|
|
706
716
|
}
|
|
707
717
|
|
|
718
|
+
//#endregion
|
|
719
|
+
//#region src/compile/utils/endOfString.ts
|
|
720
|
+
function endOfString(char, content, start) {
|
|
721
|
+
for (let j = start + 1; j < content.length; j++) if (content[j] === char && content[j - 1] !== "\\") return j;
|
|
722
|
+
return content.length;
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
//#endregion
|
|
726
|
+
//#region src/compile/build/client/getAttributeOffsets.ts
|
|
727
|
+
function getAttributeOffsets(value, span) {
|
|
728
|
+
value = trimQuotes(value);
|
|
729
|
+
let spans = [];
|
|
730
|
+
let offsets = [];
|
|
731
|
+
let lengths = [];
|
|
732
|
+
let textContent = "";
|
|
733
|
+
let reactiveStart = 0;
|
|
734
|
+
let level = 0;
|
|
735
|
+
for (let i = 0; i < value.length; i++) {
|
|
736
|
+
const char = value[i];
|
|
737
|
+
const nextChar = value[i + 1];
|
|
738
|
+
if (char === "{") {
|
|
739
|
+
level++;
|
|
740
|
+
if (level === 1) {
|
|
741
|
+
textContent += "${";
|
|
742
|
+
reactiveStart = textContent.length;
|
|
743
|
+
spans.push({
|
|
744
|
+
start: span.start + i + 2,
|
|
745
|
+
end: -1
|
|
746
|
+
});
|
|
747
|
+
offsets.push(reactiveStart + 1);
|
|
748
|
+
continue;
|
|
749
|
+
}
|
|
750
|
+
} else if (char === "}") {
|
|
751
|
+
level--;
|
|
752
|
+
if (level === 0) {
|
|
753
|
+
spans.at(-1).end = span.start + i + 2;
|
|
754
|
+
lengths.push(textContent.length - reactiveStart);
|
|
755
|
+
textContent += "}";
|
|
756
|
+
continue;
|
|
757
|
+
}
|
|
758
|
+
} else if (char === "`" && level === 0) textContent += "\\";
|
|
759
|
+
else if (level > 0) {
|
|
760
|
+
if (char === "/" && nextChar === "/") {
|
|
761
|
+
let start = i;
|
|
762
|
+
i = value.indexOf("\n", i);
|
|
763
|
+
textContent += value.substring(start, i + 1);
|
|
764
|
+
continue;
|
|
765
|
+
} else if (char === "/" && nextChar === "*") {
|
|
766
|
+
let start = i;
|
|
767
|
+
i = value.indexOf("*/", i) + 1;
|
|
768
|
+
textContent += value.substring(start, i + 1);
|
|
769
|
+
continue;
|
|
770
|
+
} else if (char === "\"" || char === "'") {
|
|
771
|
+
let start = i;
|
|
772
|
+
i = endOfString(char, value, i);
|
|
773
|
+
textContent += value.substring(start, i + 1);
|
|
774
|
+
continue;
|
|
775
|
+
} else if (char === "`") {
|
|
776
|
+
let start = i;
|
|
777
|
+
i = endOfTemplateString(value, i);
|
|
778
|
+
textContent += value.substring(start, i + 1);
|
|
779
|
+
continue;
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
textContent += value[i];
|
|
783
|
+
}
|
|
784
|
+
value = `\`${textContent}\``;
|
|
785
|
+
return {
|
|
786
|
+
newValue: value,
|
|
787
|
+
spans,
|
|
788
|
+
offsets,
|
|
789
|
+
lengths
|
|
790
|
+
};
|
|
791
|
+
}
|
|
792
|
+
|
|
708
793
|
//#endregion
|
|
709
794
|
//#region src/compile/build/client/buildComponentNode.ts
|
|
710
795
|
function buildComponentNode(node, status, b, root = false) {
|
|
@@ -717,51 +802,123 @@ function buildComponentNode(node, status, b, root = false) {
|
|
|
717
802
|
let props = [];
|
|
718
803
|
let runs = [];
|
|
719
804
|
let bindingRuns = [];
|
|
720
|
-
for (let { name, value, reactive, fullyReactive, span } of node.attributes) if (name === "self" && node.tagName === "@component") {} else if (
|
|
805
|
+
for (let { name, value, reactive, fullyReactive, span } of node.attributes) if (name === "self" && node.tagName === "@component") {} else if (value != null && fullyReactive) if (name.startsWith("&")) {
|
|
721
806
|
name = name.substring(1);
|
|
722
807
|
props.push({
|
|
723
808
|
name,
|
|
809
|
+
preText: "",
|
|
724
810
|
value,
|
|
725
|
-
|
|
811
|
+
postText: "",
|
|
812
|
+
spans: [span],
|
|
813
|
+
offsets: [],
|
|
814
|
+
lengths: []
|
|
726
815
|
});
|
|
727
816
|
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
728
817
|
bindingRuns.push(`${value} = ${propsName}["${name}"];`);
|
|
729
|
-
} else if (name === "class"
|
|
818
|
+
} else if (name === "class") {
|
|
730
819
|
status.imports.add("t_class");
|
|
731
820
|
const params = [value];
|
|
732
821
|
if (node.scopeStyles) params.push(`"torp-${status.styleHash}"`);
|
|
733
|
-
value =
|
|
822
|
+
value = params.join(", ");
|
|
734
823
|
props.push({
|
|
735
824
|
name,
|
|
825
|
+
preText: "t_class(",
|
|
736
826
|
value,
|
|
737
|
-
|
|
827
|
+
postText: ")",
|
|
828
|
+
spans: [span],
|
|
829
|
+
offsets: [],
|
|
830
|
+
lengths: []
|
|
738
831
|
});
|
|
739
|
-
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
740
|
-
} else if (name === "style"
|
|
832
|
+
runs.push(`${propsName}["${name}"] = t_class(${value});`);
|
|
833
|
+
} else if (name === "style") {
|
|
741
834
|
status.imports.add("t_style");
|
|
742
|
-
value = `t_style(${value})`;
|
|
743
835
|
props.push({
|
|
744
836
|
name,
|
|
837
|
+
preText: "t_style(",
|
|
745
838
|
value,
|
|
746
|
-
|
|
839
|
+
postText: ")",
|
|
840
|
+
spans: [span],
|
|
841
|
+
offsets: [],
|
|
842
|
+
lengths: []
|
|
747
843
|
});
|
|
748
|
-
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
749
|
-
} else
|
|
844
|
+
runs.push(`${propsName}["${name}"] = t_style(${value});`);
|
|
845
|
+
} else {
|
|
750
846
|
props.push({
|
|
751
847
|
name,
|
|
848
|
+
preText: "",
|
|
752
849
|
value,
|
|
753
|
-
|
|
850
|
+
postText: "",
|
|
851
|
+
spans: [span],
|
|
852
|
+
offsets: [],
|
|
853
|
+
lengths: []
|
|
754
854
|
});
|
|
755
|
-
|
|
756
|
-
}
|
|
855
|
+
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
856
|
+
}
|
|
857
|
+
else if (value != null && reactive) {
|
|
858
|
+
const { newValue, spans, offsets, lengths } = getAttributeOffsets(value, span);
|
|
859
|
+
value = newValue;
|
|
860
|
+
if (name === "class") {
|
|
861
|
+
status.imports.add("t_class");
|
|
862
|
+
const params = [value];
|
|
863
|
+
if (node.scopeStyles) params.push(`"torp-${status.styleHash}"`);
|
|
864
|
+
value = params.join(", ");
|
|
865
|
+
props.push({
|
|
866
|
+
name,
|
|
867
|
+
preText: "t_class(",
|
|
868
|
+
value,
|
|
869
|
+
postText: ")",
|
|
870
|
+
spans,
|
|
871
|
+
offsets,
|
|
872
|
+
lengths
|
|
873
|
+
});
|
|
874
|
+
runs.push(`${propsName}["${name}"] = t_class(${value});`);
|
|
875
|
+
} else if (name === "style") {
|
|
876
|
+
status.imports.add("t_style");
|
|
877
|
+
props.push({
|
|
878
|
+
name,
|
|
879
|
+
preText: "t_style(",
|
|
880
|
+
value,
|
|
881
|
+
postText: ")",
|
|
882
|
+
spans,
|
|
883
|
+
offsets,
|
|
884
|
+
lengths
|
|
885
|
+
});
|
|
886
|
+
runs.push(`${propsName}["${name}"] = t_style(${value});`);
|
|
887
|
+
} else {
|
|
888
|
+
props.push({
|
|
889
|
+
name,
|
|
890
|
+
preText: "",
|
|
891
|
+
value,
|
|
892
|
+
postText: "",
|
|
893
|
+
spans,
|
|
894
|
+
offsets,
|
|
895
|
+
lengths
|
|
896
|
+
});
|
|
897
|
+
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
898
|
+
}
|
|
899
|
+
} else if (value != null) props.push({
|
|
900
|
+
name,
|
|
901
|
+
preText: "",
|
|
902
|
+
value,
|
|
903
|
+
postText: "",
|
|
904
|
+
spans: [span],
|
|
905
|
+
offsets: [],
|
|
906
|
+
lengths: []
|
|
907
|
+
});
|
|
908
|
+
else props.push({
|
|
757
909
|
name,
|
|
910
|
+
preText: "",
|
|
758
911
|
value: "true",
|
|
759
|
-
|
|
912
|
+
postText: "",
|
|
913
|
+
spans: [span],
|
|
914
|
+
offsets: [],
|
|
915
|
+
lengths: []
|
|
760
916
|
});
|
|
761
917
|
b.append(`const ${propsName} = $watch({`);
|
|
762
918
|
for (let p of props) {
|
|
763
919
|
let value = replaceForVarNames(p.value, status);
|
|
764
|
-
addMappedText(`${p.name}:
|
|
920
|
+
if (p.spans.length === 1) addMappedText(`${p.name}: ` + p.preText, value, p.postText + ",", p.spans[0], status, b);
|
|
921
|
+
else addMappedTextWithOffsets(`${p.name}: ` + p.preText, value, p.postText + ",", p.spans, p.offsets, p.lengths, status, b);
|
|
765
922
|
}
|
|
766
923
|
b.append("});");
|
|
767
924
|
if (runs.length) buildRun("setProps", replaceForVarNames(runs.join("\n"), status), status, b);
|
|
@@ -1100,7 +1257,7 @@ function buildIfNode(node, status, b) {
|
|
|
1100
1257
|
b.append(`
|
|
1101
1258
|
const ${regionName} = t_region(${status.options.dev === true ? `"if"` : ""});
|
|
1102
1259
|
let ${indexName} = -1;
|
|
1103
|
-
t_run_control(${regionName}, ${anchorName}, (t_before) => {`);
|
|
1260
|
+
t_run_control(${regionName}, ${anchorName}, (${status.inHead ? "" : "t_before"}) => {`);
|
|
1104
1261
|
let index = 0;
|
|
1105
1262
|
for (let branch of branches) buildIfBranch(branch, status, b, parentName, regionName, indexName, index++);
|
|
1106
1263
|
b.append(`}${status.options.dev === true ? `, "runIf"` : ""});`);
|
|
@@ -1209,7 +1366,7 @@ function buildSwitchNode(node, status, b) {
|
|
|
1209
1366
|
b.append(`
|
|
1210
1367
|
const ${regionName} = t_region(${status.options.dev === true ? `"switch"` : ""});
|
|
1211
1368
|
let ${indexName} = -1;
|
|
1212
|
-
t_run_control(${regionName}, ${anchorName}, (t_before) => {`);
|
|
1369
|
+
t_run_control(${regionName}, ${anchorName}, (${status.inHead ? "" : "t_before"}) => {`);
|
|
1213
1370
|
addMappedText("", `${replaceForVarNames(node.statement, status)}`, " {", node.span, status, b);
|
|
1214
1371
|
let index = 0;
|
|
1215
1372
|
for (let branch of branches) buildSwitchBranch(branch, status, b, parentName, regionName, indexName, index++);
|
|
@@ -1331,6 +1488,26 @@ function stashRun(fragment, functionStart, value, functionEnd, span, status) {
|
|
|
1331
1488
|
});
|
|
1332
1489
|
}
|
|
1333
1490
|
|
|
1491
|
+
//#endregion
|
|
1492
|
+
//#region src/compile/build/client/stashRunWithOffsets.ts
|
|
1493
|
+
function stashRunWithOffsets(fragment, functionStart, value, functionEnd, spans, offsets, lengths, status) {
|
|
1494
|
+
let functionBody = functionStart + value + functionEnd;
|
|
1495
|
+
for (let i = 0; i < offsets.length; i++) {
|
|
1496
|
+
offsets[i] += functionStart.length;
|
|
1497
|
+
const oldLength = functionBody.length;
|
|
1498
|
+
functionBody = functionBody.substring(0, offsets[i]) + replaceForVarNames(functionBody.substring(offsets[i], offsets[i] + lengths[i]), status) + functionBody.substring(offsets[i] + lengths[i]);
|
|
1499
|
+
const changedLength = functionBody.length - oldLength;
|
|
1500
|
+
lengths[i] += changedLength;
|
|
1501
|
+
for (let j = i + 1; j < offsets.length; j++) offsets[j] += changedLength;
|
|
1502
|
+
}
|
|
1503
|
+
fragment.effects.push({
|
|
1504
|
+
functionBody,
|
|
1505
|
+
spans,
|
|
1506
|
+
offsets,
|
|
1507
|
+
lengths
|
|
1508
|
+
});
|
|
1509
|
+
}
|
|
1510
|
+
|
|
1334
1511
|
//#endregion
|
|
1335
1512
|
//#region src/compile/build/client/buildElementNode.ts
|
|
1336
1513
|
function buildElementNode(node, status, b, parentName, root = false) {
|
|
@@ -1420,26 +1597,46 @@ function buildElementAttributes$1(node, varName, status, b) {
|
|
|
1420
1597
|
let { value, fullyReactive } = refAttribute;
|
|
1421
1598
|
if (value != null && fullyReactive) b.append(`${value} = ${varName};`);
|
|
1422
1599
|
}
|
|
1423
|
-
for (let { name, value, reactive, span
|
|
1600
|
+
for (let { name, value, reactive, fullyReactive, span } of node.attributes) if (name === "self" && node.tagName === "@element") {} else if (name === "&ref") {} else if (value != null && fullyReactive) if (name === "&group") buildBindGroupAttribute(node, varName, value, status, b);
|
|
1424
1601
|
else if (name === "&value" || name === "&checked") buildBindAttribute(node, varName, name, value, status, b);
|
|
1425
1602
|
else if (name === "onmount") buildMount("elMount", `return (${trimEnd(value.trim(), ";")})(${varName});`, status, b);
|
|
1426
|
-
else if (name.startsWith("on")) buildEventAttribute(varName, name, value,
|
|
1603
|
+
else if (name.startsWith("on")) buildEventAttribute(varName, name, value, span, status, b);
|
|
1427
1604
|
else if (name.startsWith("transition")) buildTransitionAttribute(node, varName, name, value, status, b);
|
|
1428
1605
|
else if (name === "class") {
|
|
1429
1606
|
status.imports.add("t_class");
|
|
1430
1607
|
const params = [value];
|
|
1431
1608
|
if (node.scopeStyles) params.push(`"torp-${status.styleHash}"`);
|
|
1432
1609
|
const propName = status.ns ? "className.baseVal" : "className";
|
|
1433
|
-
stashRun(fragment, `${status.ns ? "// @ts-ignore\n" : ""}${varName}.${propName} = t_class(`, params.join(", "), ");",
|
|
1610
|
+
stashRun(fragment, `${status.ns ? "// @ts-ignore\n" : ""}${varName}.${propName} = t_class(`, params.join(", "), ");", span, status);
|
|
1434
1611
|
} else if (name === "style") {
|
|
1435
1612
|
status.imports.add("t_style");
|
|
1436
|
-
stashRun(fragment, `${varName}.setAttribute("style", t_style(`, value, "));",
|
|
1613
|
+
stashRun(fragment, `${varName}.setAttribute("style", t_style(`, value, "));", span, status);
|
|
1437
1614
|
} else if (name.includes("-")) {
|
|
1438
1615
|
status.imports.add("t_attribute");
|
|
1439
|
-
stashRun(fragment, `t_attribute(${varName}, "${name}", `, value, ");",
|
|
1616
|
+
stashRun(fragment, `t_attribute(${varName}, "${name}", `, value, ");", span, status);
|
|
1440
1617
|
} else {
|
|
1441
1618
|
status.imports.add("t_attribute");
|
|
1442
|
-
stashRun(fragment, `t_attribute(${varName}, "${name}", `, value, ");",
|
|
1619
|
+
stashRun(fragment, `t_attribute(${varName}, "${name}", `, value, ");", span, status);
|
|
1620
|
+
}
|
|
1621
|
+
else if (value != null && reactive) {
|
|
1622
|
+
const { newValue, spans, offsets, lengths } = getAttributeOffsets(value, span);
|
|
1623
|
+
value = newValue;
|
|
1624
|
+
if (name === "class") {
|
|
1625
|
+
status.imports.add("t_class");
|
|
1626
|
+
const params = [value];
|
|
1627
|
+
if (node.scopeStyles) params.push(`"torp-${status.styleHash}"`);
|
|
1628
|
+
const propName = status.ns ? "className.baseVal" : "className";
|
|
1629
|
+
stashRunWithOffsets(fragment, `${status.ns ? "// @ts-ignore\n" : ""}${varName}.${propName} = t_class(`, params.join(", "), ");", spans, offsets, lengths, status);
|
|
1630
|
+
} else if (name === "style") {
|
|
1631
|
+
status.imports.add("t_style");
|
|
1632
|
+
stashRunWithOffsets(fragment, `${varName}.setAttribute("style", t_style(`, value, "));", spans, offsets, lengths, status);
|
|
1633
|
+
} else if (name.includes("-")) {
|
|
1634
|
+
status.imports.add("t_attribute");
|
|
1635
|
+
stashRunWithOffsets(fragment, `t_attribute(${varName}, "${name}", `, value, ");", spans, offsets, lengths, status);
|
|
1636
|
+
} else {
|
|
1637
|
+
status.imports.add("t_attribute");
|
|
1638
|
+
stashRunWithOffsets(fragment, `t_attribute(${varName}, "${name}", `, value, ");", spans, offsets, lengths, status);
|
|
1639
|
+
}
|
|
1443
1640
|
}
|
|
1444
1641
|
}
|
|
1445
1642
|
function buildBindGroupAttribute(node, varName, value, status, b) {
|
|
@@ -1603,31 +1800,6 @@ function buildSpecialNode(node, status, b, parentName, root = false) {
|
|
|
1603
1800
|
return "";
|
|
1604
1801
|
}
|
|
1605
1802
|
|
|
1606
|
-
//#endregion
|
|
1607
|
-
//#region src/compile/utils/endOfString.ts
|
|
1608
|
-
function endOfString(char, content, start) {
|
|
1609
|
-
for (let j = start + 1; j < content.length; j++) if (content[j] === char && content[j - 1] !== "\\") return j;
|
|
1610
|
-
return content.length;
|
|
1611
|
-
}
|
|
1612
|
-
|
|
1613
|
-
//#endregion
|
|
1614
|
-
//#region src/compile/build/client/stashRunWithOffsets.ts
|
|
1615
|
-
function stashRunWithOffsets(fragment, functionBody, spans, offsets, lengths, status) {
|
|
1616
|
-
for (let i = 0; i < offsets.length; i++) {
|
|
1617
|
-
const oldLength = functionBody.length;
|
|
1618
|
-
functionBody = functionBody.substring(0, offsets[i]) + replaceForVarNames(functionBody.substring(offsets[i], offsets[i] + lengths[i]), status) + functionBody.substring(offsets[i] + lengths[i]);
|
|
1619
|
-
const changedLength = functionBody.length - oldLength;
|
|
1620
|
-
lengths[i] += changedLength;
|
|
1621
|
-
for (let j = i + 1; j < offsets.length; j++) offsets[j] += changedLength;
|
|
1622
|
-
}
|
|
1623
|
-
fragment.effects.push({
|
|
1624
|
-
functionBody,
|
|
1625
|
-
spans,
|
|
1626
|
-
offsets,
|
|
1627
|
-
lengths
|
|
1628
|
-
});
|
|
1629
|
-
}
|
|
1630
|
-
|
|
1631
1803
|
//#endregion
|
|
1632
1804
|
//#region src/compile/build/client/buildTextNode.ts
|
|
1633
1805
|
function buildTextNode(node, status) {
|
|
@@ -1697,11 +1869,8 @@ function buildTextNode(node, status) {
|
|
|
1697
1869
|
offsetChange = 1;
|
|
1698
1870
|
}
|
|
1699
1871
|
status.imports.add("t_fmt");
|
|
1700
|
-
let functionBody = `${node.varName}.textContent = `;
|
|
1701
|
-
offsetChange += functionBody.length;
|
|
1702
1872
|
offsets.map((_, i) => offsets[i] += offsetChange);
|
|
1703
|
-
|
|
1704
|
-
stashRunWithOffsets(fragment, functionBody, node.spans, offsets, lengths, status);
|
|
1873
|
+
stashRunWithOffsets(fragment, `${node.varName}.textContent = `, textContent, ";", node.spans, offsets, lengths, status);
|
|
1705
1874
|
}
|
|
1706
1875
|
}
|
|
1707
1876
|
|
|
@@ -2269,7 +2438,7 @@ function buildElementAttributes(node, status) {
|
|
|
2269
2438
|
}
|
|
2270
2439
|
else if (value != null && reactive) {
|
|
2271
2440
|
status.imports.add("t_attr");
|
|
2272
|
-
attributes.push(`${name}="${trimQuotes(value).replaceAll("
|
|
2441
|
+
attributes.push(`${name}="${trimQuotes(value).replaceAll("{", "${t_attr(").replaceAll("}", ")}")}"`);
|
|
2273
2442
|
} else if (name === "class" && node.scopeStyles) {
|
|
2274
2443
|
value = value ? `"${trimQuotes(value)} torp-${status.styleHash}"` : `"torp-${status.styleHash}"`;
|
|
2275
2444
|
attributes.push(`${name}="${trimQuotes(value).replaceAll("\"", """)}"`);
|
|
@@ -2719,7 +2888,7 @@ function parseTag(status) {
|
|
|
2719
2888
|
accept("<", status);
|
|
2720
2889
|
let closeTag = accept("/", status);
|
|
2721
2890
|
consumeSpace(status);
|
|
2722
|
-
let tagStart = status.i;
|
|
2891
|
+
let tagStart = status.i + 1;
|
|
2723
2892
|
let snailed = accept("@", status);
|
|
2724
2893
|
let tagName = consumeAlphaNumeric(status);
|
|
2725
2894
|
let tagEnd = status.i;
|
|
@@ -2783,7 +2952,7 @@ function parseAttribute(status) {
|
|
|
2783
2952
|
value = value.substring(1, value.length - 1);
|
|
2784
2953
|
valueStart++;
|
|
2785
2954
|
valueEnd--;
|
|
2786
|
-
}
|
|
2955
|
+
}
|
|
2787
2956
|
} else if (name.startsWith("{") && name.endsWith("}")) {
|
|
2788
2957
|
value = name.substring(1, name.length - 1);
|
|
2789
2958
|
valueStart++;
|
|
@@ -3801,5 +3970,4 @@ function parse(source) {
|
|
|
3801
3970
|
//#endregion
|
|
3802
3971
|
exports.build = build;
|
|
3803
3972
|
exports.buildType = buildType;
|
|
3804
|
-
exports.parse = parse;
|
|
3805
|
-
//# sourceMappingURL=compile.cjs.map
|
|
3973
|
+
exports.parse = parse;
|
package/dist/compile.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as Component } from "./Component-
|
|
1
|
+
import { t as Component } from "./Component-DmWGMgak.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/compile/types/Import.d.ts
|
|
4
4
|
interface Import {
|
|
@@ -216,4 +216,4 @@ interface ParseResult {
|
|
|
216
216
|
declare function parse(source: string): ParseResult;
|
|
217
217
|
//#endregion
|
|
218
218
|
export { type Component, type Template, build, buildType, parse };
|
|
219
|
-
//# sourceMappingURL=compile.d.
|
|
219
|
+
//# sourceMappingURL=compile.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.mts","names":[],"sources":["../src/compile/types/Import.ts","../src/compile/types/SourceSpan.ts","../src/compile/types/ScriptChunk.ts","../src/compile/types/nodes/Fragment.ts","../src/compile/types/nodes/NodeType.ts","../src/compile/types/nodes/TemplateNode.ts","../src/compile/types/nodes/ParentNode.ts","../src/compile/types/nodes/RootNode.ts","../src/compile/types/styles/Attribute.ts","../src/compile/types/styles/StyleBlock.ts","../src/compile/types/styles/Style.ts","../src/types/TemplateComponent.ts","../src/types/Template.ts","../src/compile/types/BuildOptions.ts","../src/compile/types/SourceMapping.ts","../src/compile/types/BuildResult.ts","../src/compile/build.ts","../src/compile/buildType.ts","../src/compile/types/CompileError.ts","../src/compile/types/ParseResult.ts","../src/compile/parse.ts"],"sourcesContent":[],"mappings":";;;UAAyB,MAAA;;;MAAA,EAAA,MAAA;;;;;;UCAA,UAAA;;;;;;UCEA,WAAA;;MFFA,EEIlB,UFJkB;;;;UGEA,QAAA;;MHFA,EAAA,MAAA;;;;SCAA,EEQhB,UFRgB,EAAA;;;;ECAG,MAEH,EAAA;;;;ECFG,CAAA,EAEH;;;;;;KCFpB,QAAA;;;UCEoB,YAAA;QAClB;aLHkB,CAAA,EAAA,OAAA;;;;;;UMGA,UAAA,SAAmB;MNHnB,EMIlB,QNJkB;YMKd;;;;ANLc,UOIA,QAAA,SAAiB,UPJjB,CAAA;;YOMd;aAGC;;;;UCTa,SAAA;;;;;;UCEA,UAAA;;YTFA,ESIZ,STJY,EAAA;YSKd;;;;UCHc,KAAA;;QVFA,EUIhB,UVJgB,EAAA;;;;;UWGA,iBAAA;OXHA,CAAA,EAAA,MAAA;;;;UCAA,CAAA,EAAA,OAAA;;;;ECAG,aAEH,CAAA,EAAA,MAAA;;;WSaf;ERfkB,IAEH,CAAA,EQcjB,QRdiB;UQehB;;;;;;;ENjBiB;;;;;;;;UOOD,QAAA;SXPA,EWQf,MXRe,EAAA;UWShB;cACI;;;;UCVY,YAAA;;;;;;;;;;;AXAG;;;;ACAA;;;;kBCAvB,CAAA,EAAA,OAAA;;;;ECAqB,YAED,CAAA,EAAA,MAAA;;;;USAA,aAAA;;QdFA,EcIhB,UdJgB;YcKd;;;;UCHc,WAAA;;QfFA,EAAA;;;;KCAA,EcQnB,adRmB,EAAA;;;;;;;;;;;iBeeD,KAAA,WAAgB,oBAAoB,eAAe;;;;;;;;;;;iBCHnD,SAAA,WAAoB,oBAAoB;;;UCZvC,YAAA;;;WlBAA,EAAA,MAAA;;;;SCAA,EAAA,MAAA;;;;UkBGA,WAAA;MnBHA,OAAA;UmBKhB;aACG;;;;;;;;;;;;iBCKY,KAAA,kBAAuB"}
|