@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.
Files changed (87) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{Cleanup-BGQ5zaxE.d.cts → Cleanup-CYsytTEc.d.cts} +1 -1
  3. package/dist/Cleanup-CYsytTEc.d.cts.map +1 -0
  4. package/dist/{Cleanup-Ca8IspaG.d.ts → Cleanup-CgjyN0lW.d.mts} +1 -1
  5. package/dist/Cleanup-CgjyN0lW.d.mts.map +1 -0
  6. package/dist/{Component-BDUCwkBQ.d.cts → Component-DmWGMgak.d.mts} +1 -1
  7. package/dist/{Component-BDUCwkBQ.d.cts.map → Component-DmWGMgak.d.mts.map} +1 -1
  8. package/dist/{Component-JVwSemf-.d.ts → Component-kGLRFYg2.d.cts} +1 -1
  9. package/dist/Component-kGLRFYg2.d.cts.map +1 -0
  10. package/dist/{Region-BrsZLZUe.d.ts → Region-Bb6HAb-F.d.cts} +2 -2
  11. package/dist/{Region-Cf7OeBIQ.d.cts.map → Region-Bb6HAb-F.d.cts.map} +1 -1
  12. package/dist/{Region-Cf7OeBIQ.d.cts → Region-CTchywkr.d.mts} +2 -2
  13. package/dist/Region-CTchywkr.d.mts.map +1 -0
  14. package/dist/compile.cjs +239 -71
  15. package/dist/compile.d.cts +1 -1
  16. package/dist/{compile.d.ts → compile.d.mts} +2 -2
  17. package/dist/compile.d.mts.map +1 -0
  18. package/dist/{compile.js → compile.mjs} +239 -70
  19. package/dist/compile.mjs.map +1 -0
  20. package/dist/dev.cjs +1 -2
  21. package/dist/dev.d.cts +2 -2
  22. package/dist/{dev.d.ts → dev.d.mts} +3 -3
  23. package/dist/dev.d.mts.map +1 -0
  24. package/dist/{dev.js → dev.mjs} +2 -2
  25. package/dist/{dev.cjs.map → dev.mjs.map} +1 -1
  26. package/dist/devContext-B3yskfhA.cjs +1 -2
  27. package/dist/{devContext-CevrTlUO.js → devContext-CQ8RhBX-.mjs} +1 -1
  28. package/dist/{devContext-B3yskfhA.cjs.map → devContext-CQ8RhBX-.mjs.map} +1 -1
  29. package/dist/{formatText-Ck04q8_X.cjs → formatText--9zsK5Nq.cjs} +4 -4
  30. package/dist/{formatText-OyD8MNAM.js → formatText-B8u71S_K.mjs} +4 -3
  31. package/dist/formatText-B8u71S_K.mjs.map +1 -0
  32. package/dist/{formatText-BlLF3PPm.d.ts → formatText-BNP3P38F.d.cts} +3 -3
  33. package/dist/formatText-BNP3P38F.d.cts.map +1 -0
  34. package/dist/{formatText-Bcb1JvW5.d.cts → formatText-D6Ov8Ub0.d.mts} +3 -3
  35. package/dist/formatText-D6Ov8Ub0.d.mts.map +1 -0
  36. package/dist/index.cjs +2 -3
  37. package/dist/index.d.cts +4 -4
  38. package/dist/{index.d.ts → index.d.mts} +5 -5
  39. package/dist/index.d.mts.map +1 -0
  40. package/dist/{index.js → index.mjs} +3 -3
  41. package/dist/{index.cjs.map → index.mjs.map} +1 -1
  42. package/dist/ssr.cjs +2 -3
  43. package/dist/ssr.d.cts +2 -2
  44. package/dist/{ssr.d.ts → ssr.d.mts} +3 -3
  45. package/dist/ssr.d.mts.map +1 -0
  46. package/dist/{ssr.js → ssr.mjs} +2 -2
  47. package/dist/{ssr.cjs.map → ssr.mjs.map} +1 -1
  48. package/package.json +17 -17
  49. package/scripts/copyToRepl.ts +6 -6
  50. package/src/compile/build/client/addMappedTextWithOffsets.ts +31 -0
  51. package/src/compile/build/client/buildAddFragment.ts +11 -11
  52. package/src/compile/build/client/buildComponentNode.ts +123 -29
  53. package/src/compile/build/client/buildElementNode.ts +65 -8
  54. package/src/compile/build/client/buildIfNode.ts +1 -1
  55. package/src/compile/build/client/buildSwitchNode.ts +1 -1
  56. package/src/compile/build/client/buildTextNode.ts +13 -6
  57. package/src/compile/build/client/getAttributeOffsets.ts +90 -0
  58. package/src/compile/build/client/stashRunWithOffsets.ts +7 -1
  59. package/src/compile/build/server/buildServerElementNode.ts +1 -1
  60. package/src/compile/parse/parseTag.ts +1 -7
  61. package/src/compile/parse/parseText.ts +1 -1
  62. package/src/render/buildClasses.ts +1 -1
  63. package/src/render/buildStyles.ts +3 -1
  64. package/src/types/ClassValue.ts +6 -1
  65. package/src/types/StyleValue.ts +6 -1
  66. package/test/source-maps/interpolated.test.ts +88 -0
  67. package/test/source-maps/parse.test.ts +1 -1
  68. package/tsdown.config.ts +2 -9
  69. package/vitest.config.ts +3 -3
  70. package/dist/Cleanup-BGQ5zaxE.d.cts.map +0 -1
  71. package/dist/Cleanup-Ca8IspaG.d.ts.map +0 -1
  72. package/dist/Component-JVwSemf-.d.ts.map +0 -1
  73. package/dist/Region-BrsZLZUe.d.ts.map +0 -1
  74. package/dist/compile.cjs.map +0 -1
  75. package/dist/compile.d.ts.map +0 -1
  76. package/dist/compile.js.map +0 -1
  77. package/dist/dev.d.ts.map +0 -1
  78. package/dist/dev.js.map +0 -1
  79. package/dist/devContext-CevrTlUO.js.map +0 -1
  80. package/dist/formatText-Bcb1JvW5.d.cts.map +0 -1
  81. package/dist/formatText-BlLF3PPm.d.ts.map +0 -1
  82. package/dist/formatText-Ck04q8_X.cjs.map +0 -1
  83. package/dist/formatText-OyD8MNAM.js.map +0 -1
  84. package/dist/index.d.ts.map +0 -1
  85. package/dist/index.js.map +0 -1
  86. package/dist/ssr.d.ts.map +0 -1
  87. 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
@@ -6,4 +6,4 @@
6
6
  type Cleanup = () => void;
7
7
  //#endregion
8
8
  export { Cleanup as t };
9
- //# sourceMappingURL=Cleanup-BGQ5zaxE.d.cts.map
9
+ //# sourceMappingURL=Cleanup-CYsytTEc.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cleanup-CYsytTEc.d.cts","names":[],"sources":["../src/types/Cleanup.ts"],"sourcesContent":[],"mappings":";;;;;KAIK,OAAA"}
@@ -6,4 +6,4 @@
6
6
  type Cleanup = () => void;
7
7
  //#endregion
8
8
  export { Cleanup as t };
9
- //# sourceMappingURL=Cleanup-Ca8IspaG.d.ts.map
9
+ //# sourceMappingURL=Cleanup-CgjyN0lW.d.mts.map
@@ -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-BDUCwkBQ.d.cts.map
11
+ //# sourceMappingURL=Component-DmWGMgak.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Component-BDUCwkBQ.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
+ {"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-JVwSemf-.d.ts.map
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-Ca8IspaG.js";
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-BrsZLZUe.d.ts.map
201
+ //# sourceMappingURL=Region-Bb6HAb-F.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Region-Cf7OeBIQ.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
+ {"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-BGQ5zaxE.cjs";
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-Cf7OeBIQ.d.cts.map
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) for (let i = 0; i < effect.spans.length; i++) {
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 (name.startsWith("&") && value != null && fullyReactive) {
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
- span
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" && value != null) {
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 = `t_class(${params.join(", ")})`;
822
+ value = params.join(", ");
734
823
  props.push({
735
824
  name,
825
+ preText: "t_class(",
736
826
  value,
737
- span
827
+ postText: ")",
828
+ spans: [span],
829
+ offsets: [],
830
+ lengths: []
738
831
  });
739
- runs.push(`${propsName}["${name}"] = ${value};`);
740
- } else if (name === "style" && value != null) {
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
- span
839
+ postText: ")",
840
+ spans: [span],
841
+ offsets: [],
842
+ lengths: []
747
843
  });
748
- runs.push(`${propsName}["${name}"] = ${value};`);
749
- } else if (value != null) {
844
+ runs.push(`${propsName}["${name}"] = t_style(${value});`);
845
+ } else {
750
846
  props.push({
751
847
  name,
848
+ preText: "",
752
849
  value,
753
- span
850
+ postText: "",
851
+ spans: [span],
852
+ offsets: [],
853
+ lengths: []
754
854
  });
755
- if (reactive) runs.push(`${propsName}["${name}"] = ${value};`);
756
- } else props.push({
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
- span
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}: `, value, ",", p.span, status, b);
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: range } of node.attributes) if (name === "self" && node.tagName === "@element") {} else if (name === "&ref") {} else if (value != null && reactive) if (name === "&group") buildBindGroupAttribute(node, varName, value, status, b);
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, range, status, b);
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(", "), ");", range, status);
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, "));", range, status);
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, ");", range, status);
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, ");", range, status);
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
- functionBody += `${textContent};`;
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("${", "${t_attr(").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("\"", "&quot;")}"`);
@@ -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
- } else if (reactive) value = `\`${trimQuotes(value).replaceAll("{", "${")}\``;
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;
@@ -1,4 +1,4 @@
1
- import { t as Component } from "./Component-BDUCwkBQ.cjs";
1
+ import { t as Component } from "./Component-kGLRFYg2.cjs";
2
2
 
3
3
  //#region src/compile/types/Import.d.ts
4
4
  interface Import {
@@ -1,4 +1,4 @@
1
- import { t as Component } from "./Component-JVwSemf-.js";
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.ts.map
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"}