@torpor/view 0.4.5 → 0.4.7
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 +18 -0
- package/dist/compile.cjs +89 -56
- package/dist/compile.cjs.map +1 -1
- package/dist/compile.js +89 -56
- package/dist/compile.js.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
- package/src/compile/build/client/buildAwaitNode.ts +3 -2
- package/src/compile/build/client/buildCode.ts +14 -11
- package/src/compile/build/client/buildComponentNode.ts +15 -13
- package/src/compile/build/client/buildElementNode.ts +5 -4
- package/src/compile/build/client/buildForNode.ts +22 -12
- package/src/compile/build/client/buildFragment.ts +9 -0
- package/src/compile/build/client/buildHtmlNode.ts +14 -2
- package/src/compile/build/client/buildIfNode.ts +3 -2
- package/src/compile/build/client/buildSwitchNode.ts +3 -2
- package/src/compile/parse/parseCode.ts +5 -2
- package/src/compile/parse/parseTag.ts +4 -0
- package/src/render/addEvent.ts +4 -2
- package/src/render/runControl.ts +1 -1
- package/test/await/components/output/Await-client.ts +1 -1
- package/test/await/components/temp/{Await-client-8ad3f252c4550020753eea3c04cde0da435c6aae.ts → Await-client-1587441666890e0beae15f28451bcd04b90cc597.ts} +1 -1
- package/test/bind/components/output/BindComponent-client.ts +3 -1
- package/test/bind/components/output/BindText-client.ts +1 -1
- package/test/bind/components/temp/{BindComponent-client-9da323149e29bbb0d7eaf5a86ed541357f1219f8.ts → BindComponent-client-59dbb5565268702ed2935e7e8cc7609b0f956bdc.ts} +3 -1
- package/test/bind/components/temp/{BindText-client-eebe53ed8c48b5bbd046621efa6d9b5d3d753f6f.ts → BindText-client-c56c86c514eed2bcbe3f9c1bf23507a98d7d14b1.ts} +1 -1
- package/test/child-component/components/output/ChildComponent-client.ts +3 -1
- package/test/child-component/components/temp/{ChildComponent-client-6033ce1f59fe1ce3f3dfb3d7845807e7f047b18d.ts → ChildComponent-client-a0ac41e8516d1584b2318770b6a5fc791e07b53b.ts} +3 -1
- package/test/class/components/output/Class-client.ts +4 -2
- package/test/class/components/temp/{Class-client-a5e3f4dd7b0272d69b856f3ef4aa43b83bc2d849.ts → Class-client-d0f120c1171030cbe2862a26bc11965cacdd2b18.ts} +4 -2
- package/test/component/components/output/Component-client.ts +3 -1
- package/test/component/components/temp/{Component-client-ff200ee2a7a5f08d0473fddffa1f3ba5eb641d2a.ts → Component-client-475c9724b22ebc18149075860326ffd395c4caa0.ts} +3 -1
- package/test/effects/components/output/ForEffect-client.ts +3 -1
- package/test/effects/components/temp/{ForEffect-client-b1cff64d6b44a881a4bcf4b1a3dee3fa64c9ec7b.ts → ForEffect-client-841255d13e0691d88345d9ea89c5fb021ca4db02.ts} +3 -1
- package/test/events/components/output/Events-client.ts +2 -2
- package/test/events/components/temp/{Events-client-af611081aa6cb1567461367daf3068df86c6ff23.ts → Events-client-8708dd031fb42b980e47799e6f6c0de7a35ef7ae.ts} +2 -2
- package/test/for/components/output/For-client.ts +3 -1
- package/test/for/components/output/ForAfterFor-client.ts +6 -2
- package/test/for/components/output/ForContainingFor-client.ts +6 -2
- package/test/for/components/output/ForContainingFunction-client.ts +4 -2
- package/test/for/components/output/ForContainingIf-client.ts +3 -1
- package/test/for/components/output/ForEscape-client.ts +3 -1
- package/test/for/components/output/ForIn-client.ts +3 -1
- package/test/for/components/output/ForOf-client.ts +3 -1
- package/test/for/components/temp/{For-client-8fd92bf0c26cb8e97006a302104ebb2fdcd2e818.ts → For-client-69c16449ab9b63fd8ace8cb1364105a80e6e1c40.ts} +3 -1
- package/test/for/components/temp/{ForAfterFor-client-509955ddc13396ede05c9986a6dcc8bbebd00cf3.ts → ForAfterFor-client-b57ee13c70d8504456dbb5f75efd9defecab8cd1.ts} +6 -2
- package/test/for/components/temp/{ForContainingFor-client-4f600c73a6583c84d981a82fae42332f983f0b36.ts → ForContainingFor-client-bc5cc8b51b248bebc28fdba5e69d56af4148a66a.ts} +6 -2
- package/test/for/components/temp/{ForContainingFunction-client-9bacc4a7214f2385d98b358d29443363f8b9e78d.ts → ForContainingFunction-client-77ccaeea93b0a489c97113bd6bc522e62b7c914a.ts} +4 -2
- package/test/for/components/temp/{ForContainingIf-client-92b3c13b0fbe3d7900c05dd2e833d8e51d1bc66c.ts → ForContainingIf-client-da96adc2e61301142e0728b55665ef241c19f9a4.ts} +3 -1
- package/test/for/components/temp/{ForEscape-client-29cdd1ae0528a32f5737295287489e9bbd42889d.ts → ForEscape-client-f2b7590f8e93981bc0cd0c0845ad22df1dc050b6.ts} +3 -1
- package/test/for/components/temp/{ForIn-client-fffaa596adb40e4067931af81cc13fc971dd1813.ts → ForIn-client-8754824447479fba5ba3676b5c1dcb1e3591575f.ts} +3 -1
- package/test/for/components/temp/{ForOf-client-e6d0948fbd00bfbcbc7099f84331bc3d493abc28.ts → ForOf-client-852d13b24329f89bd864313bc376f73174b9965e.ts} +3 -1
- package/test/function/components/output/Function-client.ts +1 -1
- package/test/function/components/temp/{Function-client-8ae7f26bcaee6b57251659efc2abcdfd9c0d30e1.ts → Function-client-5173bdb6a5e2eb86060579eb23f70fec20e9b612.ts} +1 -1
- package/test/html/components/output/Html-client.ts +1 -1
- package/test/html/components/temp/{Html-client-14bf031fae1c40ea86913ca71aee00b947d88b4d.ts → Html-client-2e1b6cfd24f6114f3e9b0fb0adc0022841c2196b.ts} +1 -1
- package/test/if/components/output/IfContainingFor-client.ts +3 -1
- package/test/if/components/output/IfContainingFunction-client.ts +1 -1
- package/test/if/components/temp/{IfContainingFor-client-a1246616d908018a77caa27aca6f9fa63e325960.ts → IfContainingFor-client-dc70bb4ae31c2320b4e22f4f26d87d5650667713.ts} +3 -1
- package/test/if/components/temp/{IfContainingFunction-client-1d8f1ce12f4098b425be18149d9c58ea9c4e8de6.ts → IfContainingFunction-client-56c90b091921645a91d5398739cec4e6d56aa0ed.ts} +1 -1
- package/test/party/components/output/Conditional-client.ts +1 -1
- package/test/party/components/output/Context-client.ts +1 -1
- package/test/party/components/output/EmitToParent-client.ts +6 -3
- package/test/party/components/output/EventClick-client.ts +1 -1
- package/test/party/components/output/InputSelect-client.ts +5 -3
- package/test/party/components/output/Loop-client.ts +4 -1
- package/test/party/components/output/Props-client.ts +6 -1
- package/test/party/components/temp/{Conditional-client-ed1ba6a97d722503560ffbb3dece1d9af5fbadd2.ts → Conditional-client-96ff11fe28ab46048761ff885b8224635244cd38.ts} +1 -1
- package/test/party/components/temp/{Context-client-fd121c4a2766ee5b41caf79f485f5f11142e43e0.ts → Context-client-73383a2149cb9198a5dfebf1e891987d261f399f.ts} +1 -1
- package/test/party/components/temp/{EmitToParent-client-02c78412e4cacc27cbc857d68d5a064474ccc882.ts → EmitToParent-client-1292c44777f86076cd7c4060deb2016b9fb7e4cd.ts} +6 -3
- package/test/party/components/temp/{EventClick-client-4344b8012e6f6310b25c6b43d9f5991dc93037e8.ts → EventClick-client-932a2a4a797aca3cb6b869daa0ba314b46505a73.ts} +1 -1
- package/test/party/components/temp/{InputSelect-client-49f9978ab5f32d13ada9d1c3d7522cbafa4c3cc7.ts → InputSelect-client-fa6d6680ce239722a0c29b754a2adc26dd2b4ab0.ts} +5 -3
- package/test/party/components/temp/{Loop-client-d8be7f7caf99d17b048d915d2dbe1db97c44aecf.ts → Loop-client-79bc3b13d7f6a733694cb5f3ee4b91667ea5c5b5.ts} +4 -1
- package/test/party/components/temp/{Props-client-c126fe2030c202b8371f72d8395d0a210a0d67c2.ts → Props-client-7dbf4a9aecc5b1890492db1d30904341bfd0e9eb.ts} +6 -1
- package/test/props/components/output/Reactive-client.ts +4 -2
- package/test/props/components/temp/{Reactive-client-626575b72eeb6e7eafe7352f0acda1502b0c3d37.ts → Reactive-client-8601769debe846fc809ca960f0ca4b71762912db.ts} +4 -2
- package/test/slots/components/output/LetSlot-client.ts +6 -2
- package/test/slots/components/temp/{LetSlot-client-2cd77fd4f84810a55926f0265a9b780516982d5b.ts → LetSlot-client-328fd8a9fcfc6b68c0380f99d3f09ede33babc2f.ts} +6 -2
- package/test/special-component/components/output/SpecialComponent-client.ts +2 -1
- package/test/special-component/components/temp/{SpecialComponent-client-1955ef6a59b67e29ea076ed28758625922ff7d7b.ts → SpecialComponent-client-4a9face6c61d943cd94c995b174877f08a6af9f4.ts} +2 -1
- package/test/special-self/components/output/SpecialSelf-client.ts +3 -1
- package/test/special-self/components/temp/{SpecialSelf-client-126d3318d9aee9b2e6309c0ae5b91b2e56e9e647.ts → SpecialSelf-client-baf46bd8104e26f37e699a1a0918ea2d8f1a8e8a.ts} +3 -1
- package/test/watch-array/components/output/ArrayAllFunctions-client.ts +4 -1
- package/test/watch-array/components/output/ArrayAllFunctionsUnkeyed-client.ts +3 -1
- package/test/watch-array/components/output/ArrayEmpty-client.ts +4 -1
- package/test/watch-array/components/output/ArrayEntries-client.ts +4 -2
- package/test/watch-array/components/output/ArrayIndexes-client.ts +4 -1
- package/test/watch-array/components/output/ArrayPop-client.ts +4 -1
- package/test/watch-array/components/output/ArrayPush-client.ts +4 -1
- package/test/watch-array/components/output/ArrayReassign-client.ts +4 -1
- package/test/watch-array/components/output/ArrayReverse-client.ts +4 -1
- package/test/watch-array/components/output/ArraySetObject-client.ts +4 -1
- package/test/watch-array/components/output/ArraySetProperty-client.ts +4 -1
- package/test/watch-array/components/output/ArrayShift-client.ts +4 -1
- package/test/watch-array/components/output/ArraySort-client.ts +4 -1
- package/test/watch-array/components/output/ArraySpliceAdd-client.ts +4 -1
- package/test/watch-array/components/output/ArraySpliceDelete-client.ts +4 -1
- package/test/watch-array/components/output/ArraySpliceDeleteAll-client.ts +4 -1
- package/test/watch-array/components/output/ArraySpliceDeleteAndAdd-client.ts +4 -1
- package/test/watch-array/components/output/ArraySpliceDeleteEnd-client.ts +4 -1
- package/test/watch-array/components/output/ArraySwap-client.ts +4 -1
- package/test/watch-array/components/output/ArrayUnshift-client.ts +4 -1
- package/test/watch-array/components/output/ArrayUpdateAssignment-client.ts +4 -1
- package/test/watch-array/components/temp/{ArrayPop-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts → ArrayAllFunctions-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts} +4 -1
- package/test/watch-array/components/temp/{ArrayAllFunctionsUnkeyed-client-9d10d33225715295edde4c036977dfbc57e3fda9.ts → ArrayAllFunctionsUnkeyed-client-f60e58a2cf8361b50f0598aa021576b320716897.ts} +3 -1
- package/test/watch-array/components/temp/{ArrayAllFunctions-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts → ArrayEmpty-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts} +4 -1
- package/test/watch-array/components/temp/{ArrayEntries-client-ef539f1f3238595af775cdcdf0fe43608e9e9162.ts → ArrayEntries-client-2d9b2fcda6b7706ef82b8d4bb590f5fab77fdcdd.ts} +4 -2
- package/test/watch-array/components/temp/{ArrayIndexes-client-e57339b7f87549f78154ccbaaf1a9b35d5844a5e.ts → ArrayIndexes-client-b30b5caaf0f9a559730dce0ab966da6de84abbc9.ts} +4 -1
- package/test/watch-array/components/temp/{ArrayEmpty-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts → ArrayPop-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts} +4 -1
- package/test/watch-array/components/temp/{ArrayPush-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts → ArrayPush-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts} +4 -1
- package/test/watch-array/components/temp/ArrayReassign-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArrayReverse-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArraySetObject-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArraySetProperty-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArrayShift-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArraySort-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArraySpliceAdd-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArraySpliceDelete-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArraySpliceDeleteAll-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArraySpliceDeleteAndAdd-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArraySpliceDeleteEnd-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArraySwap-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArrayUnshift-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArrayUpdateAssignment-client-fcd44b588ebc667ff1e645ac95ea9ce6511dde04.ts +83 -0
- package/test/watch-array/components/temp/ArrayReassign-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArrayReverse-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArraySetObject-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArraySetProperty-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArrayShift-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArraySort-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArraySpliceAdd-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArraySpliceDelete-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArraySpliceDeleteAll-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArraySpliceDeleteAndAdd-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArraySpliceDeleteEnd-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArraySwap-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArrayUnshift-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
- package/test/watch-array/components/temp/ArrayUpdateAssignment-client-bf2caf578a29ef32ca77f51ec2402c6034c219db.ts +0 -80
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @torpor/view
|
|
2
2
|
|
|
3
|
+
## 0.4.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3cc2168: Fix: ignore null event attributes
|
|
8
|
+
- 13f2afb: Fix: more HTML variable types
|
|
9
|
+
|
|
10
|
+
## 0.4.6
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- ebef5ae: Fix: map head element attributes
|
|
15
|
+
- f4a85c3: Fix: type errors in control statements
|
|
16
|
+
- 986ea9e: Fix: map @html params
|
|
17
|
+
- b2ae05b: Fix: map component attributes => props
|
|
18
|
+
- b8c8122: Fix: assignment assertions in shortcut attributes
|
|
19
|
+
- 4c80139: Fix: map user-supplied $props
|
|
20
|
+
|
|
3
21
|
## 0.4.5
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/compile.cjs
CHANGED
|
@@ -487,7 +487,14 @@ function declareComponentFragmentVars(fragment, node, path, status, b, parentNam
|
|
|
487
487
|
function elementTypeName(node) {
|
|
488
488
|
switch (node.tagName.toLowerCase()) {
|
|
489
489
|
case "div":
|
|
490
|
-
case "
|
|
490
|
+
case "span":
|
|
491
|
+
case "input":
|
|
492
|
+
case "select":
|
|
493
|
+
case "option":
|
|
494
|
+
case "button":
|
|
495
|
+
case "form": return `HTML${node.tagName.substring(0, 1).toUpperCase() + node.tagName.substring(1)}Element`;
|
|
496
|
+
case "a": return "HTMLAnchorElement";
|
|
497
|
+
case "img": return "HTMLImageElement";
|
|
491
498
|
case "textarea": return "HTMLTextAreaElement";
|
|
492
499
|
}
|
|
493
500
|
return "HTMLElement";
|
|
@@ -710,11 +717,12 @@ function buildComponentNode(node, status, b, root = false) {
|
|
|
710
717
|
let props = [];
|
|
711
718
|
let runs = [];
|
|
712
719
|
let bindingRuns = [];
|
|
713
|
-
for (let { name, value, reactive, fullyReactive } of node.attributes) if (name === "self" && node.tagName === "@component") {} else if (name.startsWith("&") && value != null && fullyReactive) {
|
|
720
|
+
for (let { name, value, reactive, fullyReactive, span } of node.attributes) if (name === "self" && node.tagName === "@component") {} else if (name.startsWith("&") && value != null && fullyReactive) {
|
|
714
721
|
name = name.substring(1);
|
|
715
722
|
props.push({
|
|
716
723
|
name,
|
|
717
|
-
value
|
|
724
|
+
value,
|
|
725
|
+
span
|
|
718
726
|
});
|
|
719
727
|
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
720
728
|
bindingRuns.push(`${value} = ${propsName}["${name}"];`);
|
|
@@ -725,7 +733,8 @@ function buildComponentNode(node, status, b, root = false) {
|
|
|
725
733
|
value = `t_class(${params.join(", ")})`;
|
|
726
734
|
props.push({
|
|
727
735
|
name,
|
|
728
|
-
value
|
|
736
|
+
value,
|
|
737
|
+
span
|
|
729
738
|
});
|
|
730
739
|
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
731
740
|
} else if (name === "style" && value != null) {
|
|
@@ -733,20 +742,28 @@ function buildComponentNode(node, status, b, root = false) {
|
|
|
733
742
|
value = `t_style(${value})`;
|
|
734
743
|
props.push({
|
|
735
744
|
name,
|
|
736
|
-
value
|
|
745
|
+
value,
|
|
746
|
+
span
|
|
737
747
|
});
|
|
738
748
|
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
739
749
|
} else if (value != null) {
|
|
740
750
|
props.push({
|
|
741
751
|
name,
|
|
742
|
-
value
|
|
752
|
+
value,
|
|
753
|
+
span
|
|
743
754
|
});
|
|
744
755
|
if (reactive) runs.push(`${propsName}["${name}"] = ${value};`);
|
|
745
756
|
} else props.push({
|
|
746
757
|
name,
|
|
747
|
-
value: "true"
|
|
758
|
+
value: "true",
|
|
759
|
+
span
|
|
748
760
|
});
|
|
749
|
-
b.append(`const ${propsName} = $watch({
|
|
761
|
+
b.append(`const ${propsName} = $watch({`);
|
|
762
|
+
for (let p of props) {
|
|
763
|
+
let value = replaceForVarNames(p.value, status);
|
|
764
|
+
addMappedText(`${p.name}: `, value, ",", p.span, status, b);
|
|
765
|
+
}
|
|
766
|
+
b.append("});");
|
|
750
767
|
if (runs.length) buildRun("setProps", replaceForVarNames(runs.join("\n"), status), status, b);
|
|
751
768
|
if (bindingRuns.length) buildRun("setBindings", replaceForVarNames(bindingRuns.join("\n"), status), status, b);
|
|
752
769
|
if (root) {
|
|
@@ -820,7 +837,7 @@ function trimMatched(text, startChar, endChar) {
|
|
|
820
837
|
//#endregion
|
|
821
838
|
//#region src/compile/build/client/buildAwaitNode.ts
|
|
822
839
|
function buildAwaitNode(node, status, b) {
|
|
823
|
-
const anchorName = node.varName;
|
|
840
|
+
const anchorName = node.varName ?? "null";
|
|
824
841
|
const parentName = node.parentName;
|
|
825
842
|
const regionName = nextVarName("await_region", status);
|
|
826
843
|
const stateName = "$" + nextVarName("await_state", status);
|
|
@@ -900,7 +917,8 @@ function buildAwaitNode(node, status, b) {
|
|
|
900
917
|
}
|
|
901
918
|
function buildAwaitBranch(node, status, b, parentName, stateName, creatorsName, index) {
|
|
902
919
|
if (node.children.length > 0) {
|
|
903
|
-
|
|
920
|
+
let beforeParam = node.fragment !== void 0 ? "t_before" : "_";
|
|
921
|
+
b.append(`${creatorsName}[${index}] = (${beforeParam}) => {`);
|
|
904
922
|
buildFragment(node, status, b, parentName, "t_before");
|
|
905
923
|
status.fragmentStack.push({
|
|
906
924
|
fragment: node.fragment,
|
|
@@ -914,22 +932,6 @@ function buildAwaitBranch(node, status, b, parentName, stateName, creatorsName,
|
|
|
914
932
|
b.append(`${stateName}.index = ${index};`);
|
|
915
933
|
}
|
|
916
934
|
|
|
917
|
-
//#endregion
|
|
918
|
-
//#region src/compile/utils/trimEnd.ts
|
|
919
|
-
/**
|
|
920
|
-
* Trims a char from the end of the supplied text
|
|
921
|
-
*
|
|
922
|
-
* @param text The text to trim
|
|
923
|
-
* @param char The char to remove from the end of the text
|
|
924
|
-
*
|
|
925
|
-
* @returns The text without the char on the end
|
|
926
|
-
*/
|
|
927
|
-
function trimEnd(text, char) {
|
|
928
|
-
let end = text.length;
|
|
929
|
-
while (text[end - 1] === char) end -= 1;
|
|
930
|
-
return text.substring(0, end);
|
|
931
|
-
}
|
|
932
|
-
|
|
933
935
|
//#endregion
|
|
934
936
|
//#region src/compile/build/client/buildForNode.ts
|
|
935
937
|
const forLoopRegex = /for\s*\((.+?);.*?;.*?\)/;
|
|
@@ -937,12 +939,12 @@ const forLoopVarsRegex = /(?:let\s+|var\s+){0,1}([^\s,;+=]+)(?:\s*=\s*[^,;]+){0,
|
|
|
937
939
|
const forOfRegex = /for\s*\(\s*(?:let\s*|var\s*){0,1}(.+?)\s+(?:of|in).*?\)/;
|
|
938
940
|
function buildForNode(node, status, b) {
|
|
939
941
|
const parentName = node.parentName;
|
|
940
|
-
const anchorName = node.varName;
|
|
942
|
+
const anchorName = node.varName ?? "null";
|
|
941
943
|
node = node.children[0];
|
|
942
944
|
const forVarNames = [];
|
|
943
|
-
const
|
|
944
|
-
if (
|
|
945
|
-
const forVarMatches =
|
|
945
|
+
const forLoopMatch = node.statement.match(forLoopRegex);
|
|
946
|
+
if (forLoopMatch) {
|
|
947
|
+
const forVarMatches = forLoopMatch[1].matchAll(forLoopVarsRegex);
|
|
946
948
|
for (let match of forVarMatches) forVarNames.push(match[1]);
|
|
947
949
|
} else {
|
|
948
950
|
const forOfMatch = node.statement.match(forOfRegex);
|
|
@@ -959,9 +961,15 @@ function buildForNode(node, status, b) {
|
|
|
959
961
|
const newItemName = nextVarName("new_item", status);
|
|
960
962
|
const itemName = nextVarName("item", status);
|
|
961
963
|
const beforeName = nextVarName("before", status);
|
|
964
|
+
let keyStatement = "";
|
|
962
965
|
const key = node.children.find((n) => n.type === "control" && n.operation === "@key");
|
|
963
|
-
|
|
964
|
-
|
|
966
|
+
if (key !== void 0) {
|
|
967
|
+
let matches = key.statement.match(/^(\s*@*key\s*=\s*)(.+?)\s*;*\s*$/);
|
|
968
|
+
if (matches) {
|
|
969
|
+
key.span.start += matches[1].length;
|
|
970
|
+
keyStatement = matches[2];
|
|
971
|
+
}
|
|
972
|
+
}
|
|
965
973
|
status.imports.add("t_region");
|
|
966
974
|
status.imports.add("t_run_list");
|
|
967
975
|
status.imports.add("t_list_item");
|
|
@@ -980,10 +988,12 @@ function buildForNode(node, status, b) {
|
|
|
980
988
|
let ${previousItemName} = ${regionName};
|
|
981
989
|
let ${nextItemName} = ${regionName}.nextRegion;`);
|
|
982
990
|
addMappedText("", `${replaceForVarNames(node.statement, status)}`, " {", node.span, status, b);
|
|
983
|
-
let
|
|
984
|
-
|
|
991
|
+
b.append(`let ${newItemName} = t_list_item(`);
|
|
992
|
+
b.append(`{ ${forVarNames.join(", ")} },`);
|
|
993
|
+
if (key !== void 0) addMappedText("", `${keyStatement || "undefined"}`, ",", key.span, status, b);
|
|
994
|
+
if (status.options.dev === true) b.append(`"for item"`);
|
|
995
|
+
b.append(");");
|
|
985
996
|
b.append(`
|
|
986
|
-
let ${newItemName} = t_list_item(${params.join(", ")});
|
|
987
997
|
${newItemName}.previousRegion = ${previousItemName};
|
|
988
998
|
${previousItemName}.nextRegion = ${newItemName};
|
|
989
999
|
${previousItemName} = ${newItemName};
|
|
@@ -1048,8 +1058,10 @@ function buildHtmlBranch(node, status, b, parentName, regionName) {
|
|
|
1048
1058
|
b.append(`t_run_branch(${regionName}, () => {`);
|
|
1049
1059
|
const templateName = nextVarName("template", status);
|
|
1050
1060
|
const fragmentName = `t_fragment_${node.fragment.number}`;
|
|
1051
|
-
b.append(`
|
|
1052
|
-
|
|
1061
|
+
b.append(`let ${templateName} = document.createElement("template");`);
|
|
1062
|
+
node.span.start += 5;
|
|
1063
|
+
node.span.end -= 2;
|
|
1064
|
+
addMappedText("", `${templateName}.innerHTML = ${replaceForVarNames(node.statement, status)};`, "", node.span, status, b);
|
|
1053
1065
|
b.append(`let ${fragmentName} = ${templateName}.content.cloneNode(true) as DocumentFragment;`);
|
|
1054
1066
|
buildAddFragment(node, status, b, parentName, "t_before");
|
|
1055
1067
|
b.append(`}${status.options.dev === true ? ", \"html\"" : ""});`);
|
|
@@ -1058,7 +1070,7 @@ function buildHtmlBranch(node, status, b, parentName, regionName) {
|
|
|
1058
1070
|
//#endregion
|
|
1059
1071
|
//#region src/compile/build/client/buildIfNode.ts
|
|
1060
1072
|
function buildIfNode(node, status, b) {
|
|
1061
|
-
const anchorName = node.varName;
|
|
1073
|
+
const anchorName = node.varName ?? "null";
|
|
1062
1074
|
const parentName = node.parentName || anchorName + ".parentNode";
|
|
1063
1075
|
const regionName = nextVarName("if_region", status);
|
|
1064
1076
|
const stateName = "$" + nextVarName("if_state", status);
|
|
@@ -1102,7 +1114,8 @@ function buildIfNode(node, status, b) {
|
|
|
1102
1114
|
function buildIfBranch(node, status, b, parentName, stateName, creatorsName, index) {
|
|
1103
1115
|
addMappedText("", `${replaceForVarNames(node.statement, status)}`, " {", node.span, status, b);
|
|
1104
1116
|
if (node.children.length > 0) {
|
|
1105
|
-
|
|
1117
|
+
let beforeParam = node.fragment !== void 0 ? "t_before" : "_";
|
|
1118
|
+
b.append(`${creatorsName}[${index}] = (${beforeParam}) => {`);
|
|
1106
1119
|
buildFragment(node, status, b, parentName, "t_before");
|
|
1107
1120
|
status.fragmentStack.push({
|
|
1108
1121
|
fragment: node.fragment,
|
|
@@ -1164,7 +1177,7 @@ function maybeAppend$1(text, end) {
|
|
|
1164
1177
|
//#endregion
|
|
1165
1178
|
//#region src/compile/build/client/buildSwitchNode.ts
|
|
1166
1179
|
function buildSwitchNode(node, status, b) {
|
|
1167
|
-
const anchorName = node.varName;
|
|
1180
|
+
const anchorName = node.varName ?? "null";
|
|
1168
1181
|
const parentName = node.parentName;
|
|
1169
1182
|
const regionName = nextVarName("switch_region", status);
|
|
1170
1183
|
const stateName = "$" + nextVarName("switch_state", status);
|
|
@@ -1211,7 +1224,8 @@ function buildSwitchNode(node, status, b) {
|
|
|
1211
1224
|
function buildSwitchBranch(node, status, b, parentName, stateName, creatorsName, index) {
|
|
1212
1225
|
addMappedText("", `${replaceForVarNames(node.statement, status)}`, " {", node.span, status, b);
|
|
1213
1226
|
if (node.children.length > 0) {
|
|
1214
|
-
|
|
1227
|
+
let beforeParam = node.fragment !== void 0 ? "t_before" : "_";
|
|
1228
|
+
b.append(`${creatorsName}[${index}] = (${beforeParam}) => {`);
|
|
1215
1229
|
buildFragment(node, status, b, parentName, "t_before");
|
|
1216
1230
|
status.fragmentStack.push({
|
|
1217
1231
|
fragment: node.fragment,
|
|
@@ -1277,6 +1291,22 @@ function buildControlNode(node, status, b) {
|
|
|
1277
1291
|
}
|
|
1278
1292
|
}
|
|
1279
1293
|
|
|
1294
|
+
//#endregion
|
|
1295
|
+
//#region src/compile/utils/trimEnd.ts
|
|
1296
|
+
/**
|
|
1297
|
+
* Trims a char from the end of the supplied text
|
|
1298
|
+
*
|
|
1299
|
+
* @param text The text to trim
|
|
1300
|
+
* @param char The char to remove from the end of the text
|
|
1301
|
+
*
|
|
1302
|
+
* @returns The text without the char on the end
|
|
1303
|
+
*/
|
|
1304
|
+
function trimEnd(text, char) {
|
|
1305
|
+
let end = text.length;
|
|
1306
|
+
while (text[end - 1] === char) end -= 1;
|
|
1307
|
+
return text.substring(0, end);
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1280
1310
|
//#endregion
|
|
1281
1311
|
//#region src/compile/build/client/buildMount.ts
|
|
1282
1312
|
function buildMount(functionName, functionBody, status, b) {
|
|
@@ -1372,11 +1402,12 @@ function buildHeadNode(node, status, b) {
|
|
|
1372
1402
|
status.imports.add("$run");
|
|
1373
1403
|
b.append("$run(() => {");
|
|
1374
1404
|
b.append(`
|
|
1375
|
-
const
|
|
1376
|
-
document.getElementsByTagName("head")[0].appendChild(
|
|
1377
|
-
for (let { name, value } of node.attributes) if (value != null) {
|
|
1405
|
+
const t_head_el = document.createElement("${node.tagName}");
|
|
1406
|
+
document.getElementsByTagName("head")[0].appendChild(t_head_el);`);
|
|
1407
|
+
for (let { name, value, span } of node.attributes) if (value != null) {
|
|
1378
1408
|
status.imports.add("t_attribute");
|
|
1379
|
-
|
|
1409
|
+
value = replaceForVarNames(value, status);
|
|
1410
|
+
addMappedText(`t_attribute(t_head_el, "${name}", `, value, ");", span, status, b);
|
|
1380
1411
|
}
|
|
1381
1412
|
b.append(`}${status.options.dev === true ? `, "runHead"` : ""});`);
|
|
1382
1413
|
}
|
|
@@ -1770,14 +1801,14 @@ function buildTemplate(template, map, imports, b, options) {
|
|
|
1770
1801
|
for (let chunk of template.script) if (chunk.script === "/* @params */") {
|
|
1771
1802
|
if (!first) status = makeStatus(imports, map, current, options);
|
|
1772
1803
|
first = false;
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1804
|
+
b.append(`
|
|
1805
|
+
${current.markup ? "$parent" : "_$parent"}: ParentNode,
|
|
1806
|
+
${current.markup ? "$anchor" : "_$anchor"}: Node | null,`);
|
|
1807
|
+
if (current.params !== void 0) addMappedText("", current.params, ",", chunk.span, status, b);
|
|
1808
|
+
else b.append(`${current.props?.length ? "$props: Record<PropertyKey, any>" : "// @ts-ignore\n$props: Record<PropertyKey, any> | undefined"},`);
|
|
1809
|
+
b.append(`
|
|
1810
|
+
${current.contextProps?.length ? "$context" : "// @ts-ignore\n$context"}: Record<PropertyKey, any>,
|
|
1811
|
+
${current.slotProps?.length ? "$slots" : "// @ts-ignore\n$slots"}?: Record<string, SlotRender>`);
|
|
1781
1812
|
} else if (chunk.script === ") /* @return_type */ {") b.append("): void {");
|
|
1782
1813
|
else if (chunk.script === "/* @start */") {
|
|
1783
1814
|
addPushDevBoundary("component", current.name || "Anon Component", status, b);
|
|
@@ -2727,6 +2758,7 @@ function parseAttribute(status) {
|
|
|
2727
2758
|
valueStart++;
|
|
2728
2759
|
valueEnd = valueStart + name.length;
|
|
2729
2760
|
name = value.split(".").at(-1);
|
|
2761
|
+
if (name.endsWith("!")) name = name.substring(0, name.length - 1);
|
|
2730
2762
|
reactive = fullyReactive = true;
|
|
2731
2763
|
}
|
|
2732
2764
|
return {
|
|
@@ -3488,11 +3520,12 @@ function parseComponentStart(status) {
|
|
|
3488
3520
|
status.script.push({
|
|
3489
3521
|
script: "/* @params */",
|
|
3490
3522
|
span: {
|
|
3491
|
-
start
|
|
3492
|
-
end
|
|
3523
|
+
start,
|
|
3524
|
+
end
|
|
3493
3525
|
}
|
|
3494
3526
|
});
|
|
3495
|
-
current.params = status.source.substring(start, end)
|
|
3527
|
+
current.params = status.source.substring(start, end);
|
|
3528
|
+
if (current.params.trim().length === 0) current.params = void 0;
|
|
3496
3529
|
const paramsMatch = current.params?.match(/\$props:\s*([$A-Za-z0-9]+)/);
|
|
3497
3530
|
if (paramsMatch) {
|
|
3498
3531
|
let propsTypeName = paramsMatch[1];
|