@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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type SourceSpan from "../../types/SourceSpan";
|
|
1
2
|
import type ElementNode from "../../types/nodes/ElementNode";
|
|
2
3
|
import Builder from "../../utils/Builder";
|
|
3
4
|
import isSpecialNode from "../../utils/isSpecialNode";
|
|
@@ -33,11 +34,11 @@ export default function buildComponentNode(
|
|
|
33
34
|
status.imports.add("$watch");
|
|
34
35
|
|
|
35
36
|
// Gather props, runs and binding runs, and set them all at once
|
|
36
|
-
let props: { name: string; value: string }[] = [];
|
|
37
|
+
let props: { name: string; value: string; span: SourceSpan }[] = [];
|
|
37
38
|
let runs: string[] = [];
|
|
38
39
|
let bindingRuns: string[] = [];
|
|
39
40
|
|
|
40
|
-
for (let { name, value, reactive, fullyReactive } of node.attributes) {
|
|
41
|
+
for (let { name, value, reactive, fullyReactive, span } of node.attributes) {
|
|
41
42
|
if (name === "self" && node.tagName === "@component") {
|
|
42
43
|
// Ignore this special attribute
|
|
43
44
|
} else if (name.startsWith("&") && value != null && fullyReactive) {
|
|
@@ -47,7 +48,7 @@ export default function buildComponentNode(
|
|
|
47
48
|
// TODO: Maybe allow adding a Bindable<T> type to the $props interface??
|
|
48
49
|
// e.g. Component($props: { text: Bindable<string> })
|
|
49
50
|
name = name.substring(1);
|
|
50
|
-
props.push({ name, value });
|
|
51
|
+
props.push({ name, value, span });
|
|
51
52
|
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
52
53
|
bindingRuns.push(`${value} = ${propsName}["${name}"];`);
|
|
53
54
|
} else if (name === "class" && value != null) {
|
|
@@ -57,30 +58,31 @@ export default function buildComponentNode(
|
|
|
57
58
|
params.push(`"torp-${status.styleHash}"`);
|
|
58
59
|
}
|
|
59
60
|
value = `t_class(${params.join(", ")})`;
|
|
60
|
-
props.push({ name, value });
|
|
61
|
+
props.push({ name, value, span });
|
|
61
62
|
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
62
63
|
} else if (name === "style" && value != null) {
|
|
63
64
|
status.imports.add("t_style");
|
|
64
65
|
value = `t_style(${value})`;
|
|
65
|
-
props.push({ name, value });
|
|
66
|
+
props.push({ name, value, span });
|
|
66
67
|
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
67
68
|
} else if (value != null) {
|
|
68
|
-
props.push({ name, value });
|
|
69
|
+
props.push({ name, value, span });
|
|
69
70
|
if (reactive) {
|
|
70
71
|
runs.push(`${propsName}["${name}"] = ${value};`);
|
|
71
72
|
}
|
|
72
73
|
} else {
|
|
73
|
-
props.push({ name, value: "true" });
|
|
74
|
+
props.push({ name, value: "true", span });
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
|
|
77
78
|
// Set the props, runs and binding runs that we gathered
|
|
78
|
-
b.append(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
);
|
|
79
|
+
b.append(`const ${propsName} = $watch({`);
|
|
80
|
+
for (let p of props) {
|
|
81
|
+
let value = replaceForVarNames(p.value, status);
|
|
82
|
+
addMappedText(`${p.name}: `, value, ",", p.span, status, b);
|
|
83
|
+
}
|
|
84
|
+
b.append("});");
|
|
85
|
+
// TODO: Map these things:
|
|
84
86
|
if (runs.length) {
|
|
85
87
|
buildRun("setProps", replaceForVarNames(runs.join("\n"), status), status, b);
|
|
86
88
|
}
|
|
@@ -144,12 +144,13 @@ function buildHeadNode(node: ElementNode, status: BuildStatus, b: Builder) {
|
|
|
144
144
|
// TODO: dedupe e.g. <meta name="x"> or on special key
|
|
145
145
|
b.append("$run(() => {");
|
|
146
146
|
b.append(`
|
|
147
|
-
const
|
|
148
|
-
document.getElementsByTagName("head")[0].appendChild(
|
|
149
|
-
for (let { name, value } of node.attributes) {
|
|
147
|
+
const t_head_el = document.createElement("${node.tagName}");
|
|
148
|
+
document.getElementsByTagName("head")[0].appendChild(t_head_el);`);
|
|
149
|
+
for (let { name, value, span } of node.attributes) {
|
|
150
150
|
if (value != null) {
|
|
151
151
|
status.imports.add("t_attribute");
|
|
152
|
-
|
|
152
|
+
value = replaceForVarNames(value, status);
|
|
153
|
+
addMappedText(`t_attribute(t_head_el, "${name}", `, value, ");", span, status, b);
|
|
153
154
|
}
|
|
154
155
|
}
|
|
155
156
|
b.append(`}${status.options.dev === true ? `, "runHead"` : ""});`);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type ControlNode from "../../types/nodes/ControlNode";
|
|
2
2
|
import Builder from "../../utils/Builder";
|
|
3
3
|
import isControlNode from "../../utils/isControlNode";
|
|
4
|
-
import trimEnd from "../../utils/trimEnd";
|
|
5
4
|
import trimMatched from "../../utils/trimMatched";
|
|
6
5
|
import nextVarName from "../utils/nextVarName";
|
|
7
6
|
import type BuildStatus from "./BuildStatus";
|
|
@@ -19,7 +18,7 @@ const forOfRegex = /for\s*\(\s*(?:let\s*|var\s*){0,1}(.+?)\s+(?:of|in).*?\)/;
|
|
|
19
18
|
|
|
20
19
|
export default function buildForNode(node: ControlNode, status: BuildStatus, b: Builder): void {
|
|
21
20
|
const parentName = node.parentName!;
|
|
22
|
-
const anchorName = node.varName
|
|
21
|
+
const anchorName = node.varName ?? "null";
|
|
23
22
|
|
|
24
23
|
// HACK:
|
|
25
24
|
node = node.children[0] as ControlNode;
|
|
@@ -27,9 +26,9 @@ export default function buildForNode(node: ControlNode, status: BuildStatus, b:
|
|
|
27
26
|
// HACK: Need to wrangle the declaration(s) out of the for loop and put them in data
|
|
28
27
|
// TODO: Handle destructuring, quotes, comments etc
|
|
29
28
|
const forVarNames: string[] = [];
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
32
|
-
const forVarMatches =
|
|
29
|
+
const forLoopMatch = node.statement.match(forLoopRegex);
|
|
30
|
+
if (forLoopMatch) {
|
|
31
|
+
const forVarMatches = forLoopMatch[1].matchAll(forLoopVarsRegex);
|
|
33
32
|
for (let match of forVarMatches) {
|
|
34
33
|
forVarNames.push(match[1]);
|
|
35
34
|
}
|
|
@@ -61,12 +60,16 @@ export default function buildForNode(node: ControlNode, status: BuildStatus, b:
|
|
|
61
60
|
const beforeName = nextVarName("before", status);
|
|
62
61
|
|
|
63
62
|
// Get the key node if it's been set
|
|
63
|
+
let keyStatement = "";
|
|
64
64
|
const key = node.children.find(
|
|
65
65
|
(n) => n.type === "control" && (n as ControlNode).operation === "@key",
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
) as ControlNode;
|
|
67
|
+
if (key !== undefined) {
|
|
68
|
+
let matches = key.statement.match(/^(\s*@*key\s*=\s*)(.+?)\s*;*\s*$/);
|
|
69
|
+
if (matches) {
|
|
70
|
+
key.span.start += matches[1].length;
|
|
71
|
+
keyStatement = matches[2];
|
|
72
|
+
}
|
|
70
73
|
}
|
|
71
74
|
|
|
72
75
|
status.imports.add("t_region");
|
|
@@ -91,10 +94,17 @@ export default function buildForNode(node: ControlNode, status: BuildStatus, b:
|
|
|
91
94
|
// TODO: replaceForVarNames is going to throw mapping out
|
|
92
95
|
addMappedText("", `${replaceForVarNames(node.statement, status)}`, " {", node.span, status, b);
|
|
93
96
|
|
|
94
|
-
let
|
|
95
|
-
|
|
97
|
+
b.append(`let ${newItemName} = t_list_item(`);
|
|
98
|
+
// TODO: Should map these
|
|
99
|
+
b.append(`{ ${forVarNames.join(", ")} },`);
|
|
100
|
+
if (key !== undefined) {
|
|
101
|
+
addMappedText("", `${keyStatement || "undefined"}`, ",", key.span, status, b);
|
|
102
|
+
}
|
|
103
|
+
if (status.options.dev === true) {
|
|
104
|
+
b.append(`"for item"`);
|
|
105
|
+
}
|
|
106
|
+
b.append(");");
|
|
96
107
|
b.append(`
|
|
97
|
-
let ${newItemName} = t_list_item(${params.join(", ")});
|
|
98
108
|
${newItemName}.previousRegion = ${previousItemName};
|
|
99
109
|
${previousItemName}.nextRegion = ${newItemName};
|
|
100
110
|
${previousItemName} = ${newItemName};
|
|
@@ -347,8 +347,17 @@ function elementTypeName(node: ElementNode) {
|
|
|
347
347
|
// TODO: Etc
|
|
348
348
|
switch (node.tagName.toLowerCase()) {
|
|
349
349
|
case "div":
|
|
350
|
+
case "span":
|
|
350
351
|
case "input":
|
|
352
|
+
case "select":
|
|
353
|
+
case "option":
|
|
354
|
+
case "button":
|
|
355
|
+
case "form":
|
|
351
356
|
return `HTML${node.tagName.substring(0, 1).toUpperCase() + node.tagName.substring(1)}Element`;
|
|
357
|
+
case "a":
|
|
358
|
+
return "HTMLAnchorElement";
|
|
359
|
+
case "img":
|
|
360
|
+
return "HTMLImageElement";
|
|
352
361
|
case "textarea":
|
|
353
362
|
return "HTMLTextAreaElement";
|
|
354
363
|
}
|
|
@@ -2,7 +2,9 @@ import type ControlNode from "../../types/nodes/ControlNode";
|
|
|
2
2
|
import Builder from "../../utils/Builder";
|
|
3
3
|
import nextVarName from "../utils/nextVarName";
|
|
4
4
|
import type BuildStatus from "./BuildStatus";
|
|
5
|
+
import addMappedText from "./addMappedText";
|
|
5
6
|
import buildAddFragment from "./buildAddFragment";
|
|
7
|
+
import replaceForVarNames from "./replaceForVarNames";
|
|
6
8
|
|
|
7
9
|
// TODO: type checking
|
|
8
10
|
|
|
@@ -43,8 +45,18 @@ function buildHtmlBranch(
|
|
|
43
45
|
|
|
44
46
|
const templateName = nextVarName("template", status);
|
|
45
47
|
const fragmentName = `t_fragment_${node.fragment!.number}`;
|
|
46
|
-
b.append(`
|
|
47
|
-
|
|
48
|
+
b.append(`let ${templateName} = document.createElement("template");`);
|
|
49
|
+
// TODO: replaceForVarNames is going to throw mapping out
|
|
50
|
+
node.span.start += "html(".length;
|
|
51
|
+
node.span.end -= 2;
|
|
52
|
+
addMappedText(
|
|
53
|
+
"",
|
|
54
|
+
`${templateName}.innerHTML = ${replaceForVarNames(node.statement, status)};`,
|
|
55
|
+
"",
|
|
56
|
+
node.span,
|
|
57
|
+
status,
|
|
58
|
+
b,
|
|
59
|
+
);
|
|
48
60
|
b.append(`let ${fragmentName} = ${templateName}.content.cloneNode(true) as DocumentFragment;`);
|
|
49
61
|
|
|
50
62
|
buildAddFragment(node, status, b, parentName, "t_before");
|
|
@@ -14,7 +14,7 @@ import replaceForVarNames from "./replaceForVarNames";
|
|
|
14
14
|
// TODO: Are there too many branches for ifs etc?
|
|
15
15
|
|
|
16
16
|
export default function buildIfNode(node: ControlNode, status: BuildStatus, b: Builder): void {
|
|
17
|
-
const anchorName = node.varName
|
|
17
|
+
const anchorName = node.varName ?? "null";
|
|
18
18
|
const parentName = node.parentName || anchorName + ".parentNode";
|
|
19
19
|
const regionName = nextVarName("if_region", status);
|
|
20
20
|
const stateName = "$" + nextVarName("if_state", status);
|
|
@@ -84,7 +84,8 @@ function buildIfBranch(
|
|
|
84
84
|
addMappedText("", `${replaceForVarNames(node.statement, status)}`, " {", node.span, status, b);
|
|
85
85
|
|
|
86
86
|
if (node.children.length > 0) {
|
|
87
|
-
|
|
87
|
+
let beforeParam = node.fragment !== undefined ? "t_before" : "_";
|
|
88
|
+
b.append(`${creatorsName}[${index}] = (${beforeParam}) => {`);
|
|
88
89
|
|
|
89
90
|
buildFragment(node, status, b, parentName, "t_before");
|
|
90
91
|
|
|
@@ -12,7 +12,7 @@ import buildNode from "./buildNode";
|
|
|
12
12
|
import replaceForVarNames from "./replaceForVarNames";
|
|
13
13
|
|
|
14
14
|
export default function buildSwitchNode(node: ControlNode, status: BuildStatus, b: Builder): void {
|
|
15
|
-
const anchorName = node.varName
|
|
15
|
+
const anchorName = node.varName ?? "null";
|
|
16
16
|
const parentName = node.parentName!;
|
|
17
17
|
const regionName = nextVarName("switch_region", status);
|
|
18
18
|
const stateName = "$" + nextVarName("switch_state", status);
|
|
@@ -87,7 +87,8 @@ function buildSwitchBranch(
|
|
|
87
87
|
addMappedText("", `${replaceForVarNames(node.statement, status)}`, " {", node.span, status, b);
|
|
88
88
|
|
|
89
89
|
if (node.children.length > 0) {
|
|
90
|
-
|
|
90
|
+
let beforeParam = node.fragment !== undefined ? "t_before" : "_";
|
|
91
|
+
b.append(`${creatorsName}[${index}] = (${beforeParam}) => {`);
|
|
91
92
|
|
|
92
93
|
buildFragment(node, status, b, parentName, "t_before");
|
|
93
94
|
|
|
@@ -171,9 +171,12 @@ function parseComponentStart(status: ParseStatus) {
|
|
|
171
171
|
script: status.source.substring(status.marker, start),
|
|
172
172
|
span: { start: status.marker, end: start },
|
|
173
173
|
});
|
|
174
|
-
status.script.push({ script: "/* @params */", span: { start
|
|
174
|
+
status.script.push({ script: "/* @params */", span: { start, end } });
|
|
175
175
|
|
|
176
|
-
current.params = status.source.substring(start, end)
|
|
176
|
+
current.params = status.source.substring(start, end);
|
|
177
|
+
if (current.params.trim().length === 0) {
|
|
178
|
+
current.params = undefined;
|
|
179
|
+
}
|
|
177
180
|
|
|
178
181
|
// Look for a params type or interface
|
|
179
182
|
// Might need to get fancier with this
|
|
@@ -123,6 +123,10 @@ function parseAttribute(status: ParseStatus): Attribute {
|
|
|
123
123
|
valueStart++;
|
|
124
124
|
valueEnd = valueStart + name.length;
|
|
125
125
|
name = value.split(".").at(-1)!;
|
|
126
|
+
// Handle definite assignment assertions e.g. {$state.width!}
|
|
127
|
+
if (name.endsWith("!")) {
|
|
128
|
+
name = name.substring(0, name.length - 1);
|
|
129
|
+
}
|
|
126
130
|
reactive = fullyReactive = true;
|
|
127
131
|
}
|
|
128
132
|
return {
|
package/src/render/addEvent.ts
CHANGED
|
@@ -3,11 +3,13 @@ import context from "./context";
|
|
|
3
3
|
export default function addEvent(
|
|
4
4
|
el: Element,
|
|
5
5
|
type: string,
|
|
6
|
-
listener: (this: Element, ev: any) => any,
|
|
6
|
+
listener: ((this: Element, ev: any) => any) | undefined | null,
|
|
7
7
|
): void {
|
|
8
8
|
// Stash the event in context so that it can be added when the fragment is
|
|
9
9
|
// added to the DOM
|
|
10
10
|
// NOTE: We don't need to do this for hydration, but it's simpler to do it
|
|
11
11
|
// the same way in both processes
|
|
12
|
-
|
|
12
|
+
if (listener !== undefined && listener !== null) {
|
|
13
|
+
context.stashedEvents.push({ region: context.activeRegion, el, type, listener });
|
|
14
|
+
}
|
|
13
15
|
}
|
package/src/render/runControl.ts
CHANGED
|
@@ -5,7 +5,7 @@ import popRegion from "./popRegion";
|
|
|
5
5
|
import pushRegion from "./pushRegion";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* Runs an`if`, `switch` or `await` control statement
|
|
8
|
+
* Runs an `if`, `switch` or `await` control statement
|
|
9
9
|
* @param create A function that creates the control statement's branches
|
|
10
10
|
*/
|
|
11
11
|
export default function runControl(
|
|
@@ -102,7 +102,7 @@ export default function Await(
|
|
|
102
102
|
t_run_branch(t_await_region_1, () => t_await_creators_1[index](t_before));
|
|
103
103
|
});
|
|
104
104
|
|
|
105
|
-
const t_button_1 = t_next(t_next(t_await_anchor_1, true)) as
|
|
105
|
+
const t_button_1 = t_next(t_next(t_await_anchor_1, true)) as HTMLButtonElement;
|
|
106
106
|
const t_text_5 = t_next(t_button_1, true);
|
|
107
107
|
t_event(t_button_1, "click", () => $state.guesser = guessNumber(100));
|
|
108
108
|
t_add_fragment(t_fragment_0, $parent, $anchor, t_text_5);
|
|
@@ -102,7 +102,7 @@ export default function Await(
|
|
|
102
102
|
t_run_branch(t_await_region_1, () => t_await_creators_1[index](t_before));
|
|
103
103
|
});
|
|
104
104
|
|
|
105
|
-
const t_button_1 = t_next(t_next(t_await_anchor_1, true)) as
|
|
105
|
+
const t_button_1 = t_next(t_next(t_await_anchor_1, true)) as HTMLButtonElement;
|
|
106
106
|
const t_text_5 = t_next(t_button_1, true);
|
|
107
107
|
t_event(t_button_1, "click", () => $state.guesser = guessNumber(100));
|
|
108
108
|
t_add_fragment(t_fragment_0, $parent, $anchor, t_text_5);
|
|
@@ -33,7 +33,9 @@ export default function BindComponent(
|
|
|
33
33
|
let t_comp_anchor_1 = t_anchor(t_next(t_root_0)) as HTMLElement;
|
|
34
34
|
|
|
35
35
|
/* @component */
|
|
36
|
-
const t_props_1 = $watch({
|
|
36
|
+
const t_props_1 = $watch({
|
|
37
|
+
name: $state.name,
|
|
38
|
+
});
|
|
37
39
|
$run(() => {
|
|
38
40
|
t_props_1["name"] = $state.name;
|
|
39
41
|
});
|
|
@@ -30,7 +30,7 @@ export default function BindText(
|
|
|
30
30
|
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <input></input> <select> <option value=0>First</option> <option value=1>Second</option> <option value=2>Third</option> </select> <p>#</p> <p>#</p> `);
|
|
31
31
|
const t_root_0 = t_root(t_fragment_0, true);
|
|
32
32
|
const t_input_1 = t_next(t_root_0) as HTMLInputElement;
|
|
33
|
-
const t_select_1 = t_next(t_next(t_input_1, true)) as
|
|
33
|
+
const t_select_1 = t_next(t_next(t_input_1, true)) as HTMLSelectElement;
|
|
34
34
|
const t_text_1 = t_child(t_next(t_next(t_select_1, true)));
|
|
35
35
|
const t_text_2 = t_child(t_next(t_next(t_next(t_next(t_select_1, true)), true)));
|
|
36
36
|
const t_text_3 = t_next(t_next(t_next(t_next(t_next(t_select_1, true)), true)), true);
|
|
@@ -33,7 +33,9 @@ export default function BindComponent(
|
|
|
33
33
|
let t_comp_anchor_1 = t_anchor(t_next(t_root_0)) as HTMLElement;
|
|
34
34
|
|
|
35
35
|
/* @component */
|
|
36
|
-
const t_props_1 = $watch({
|
|
36
|
+
const t_props_1 = $watch({
|
|
37
|
+
name: $state.name,
|
|
38
|
+
});
|
|
37
39
|
$run(() => {
|
|
38
40
|
t_props_1["name"] = $state.name;
|
|
39
41
|
});
|
|
@@ -30,7 +30,7 @@ export default function BindText(
|
|
|
30
30
|
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <input></input> <select> <option value=0>First</option> <option value=1>Second</option> <option value=2>Third</option> </select> <p>#</p> <p>#</p> `);
|
|
31
31
|
const t_root_0 = t_root(t_fragment_0, true);
|
|
32
32
|
const t_input_1 = t_next(t_root_0) as HTMLInputElement;
|
|
33
|
-
const t_select_1 = t_next(t_next(t_input_1, true)) as
|
|
33
|
+
const t_select_1 = t_next(t_next(t_input_1, true)) as HTMLSelectElement;
|
|
34
34
|
const t_text_1 = t_child(t_next(t_next(t_select_1, true)));
|
|
35
35
|
const t_text_2 = t_child(t_next(t_next(t_next(t_next(t_select_1, true)), true)));
|
|
36
36
|
const t_text_3 = t_next(t_next(t_next(t_next(t_next(t_select_1, true)), true)), true);
|
|
@@ -30,7 +30,9 @@ export default function ParentChild(
|
|
|
30
30
|
let t_comp_anchor_1 = t_anchor(t_next(t_root_0)) as HTMLElement;
|
|
31
31
|
|
|
32
32
|
/* @component */
|
|
33
|
-
const t_props_1 = $watch({
|
|
33
|
+
const t_props_1 = $watch({
|
|
34
|
+
name: "Anna",
|
|
35
|
+
});
|
|
34
36
|
Child(t_fragment_0, t_comp_anchor_1, t_props_1, $context);
|
|
35
37
|
|
|
36
38
|
const t_text_1 = t_next(t_comp_anchor_1, true);
|
|
@@ -30,7 +30,9 @@ export default function ParentChild(
|
|
|
30
30
|
let t_comp_anchor_1 = t_anchor(t_next(t_root_0)) as HTMLElement;
|
|
31
31
|
|
|
32
32
|
/* @component */
|
|
33
|
-
const t_props_1 = $watch({
|
|
33
|
+
const t_props_1 = $watch({
|
|
34
|
+
name: "Anna",
|
|
35
|
+
});
|
|
34
36
|
Child(t_fragment_0, t_comp_anchor_1, t_props_1, $context);
|
|
35
37
|
|
|
36
38
|
const t_text_1 = t_next(t_comp_anchor_1, true);
|
|
@@ -25,7 +25,7 @@ export default function Class(
|
|
|
25
25
|
|
|
26
26
|
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div id="divid" class="torp-1ljxz83"> From id </div> <div class="divclass torp-1ljxz83"> From string </div> <a class="torp-1ljxz83"> From state </a> <div class="torp-1ljxz83"> From state with scope </div> <div class="torp-1ljxz83"> Class object </div> <div class="torp-1ljxz83"> Class array </div> <div class="torp-1ljxz83"> Class nested </div> <!> `);
|
|
27
27
|
const t_root_0 = t_root(t_fragment_0, true);
|
|
28
|
-
const t_a_1 = t_next(t_next(t_next(t_next(t_next(t_root_0), true)), true)) as
|
|
28
|
+
const t_a_1 = t_next(t_next(t_next(t_next(t_next(t_root_0), true)), true)) as HTMLAnchorElement;
|
|
29
29
|
const t_div_1 = t_next(t_next(t_a_1, true)) as HTMLDivElement;
|
|
30
30
|
const t_div_2 = t_next(t_next(t_div_1, true)) as HTMLDivElement;
|
|
31
31
|
const t_div_3 = t_next(t_next(t_div_2, true)) as HTMLDivElement;
|
|
@@ -33,7 +33,9 @@ export default function Class(
|
|
|
33
33
|
let t_comp_anchor_1 = t_anchor(t_next(t_next(t_div_4, true))) as HTMLElement;
|
|
34
34
|
|
|
35
35
|
/* @component */
|
|
36
|
-
const t_props_1 = $watch({
|
|
36
|
+
const t_props_1 = $watch({
|
|
37
|
+
class: t_class({ "child-class": true }, "torp-1ljxz83"),
|
|
38
|
+
});
|
|
37
39
|
$run(() => {
|
|
38
40
|
t_props_1["class"] = t_class({ "child-class": true }, "torp-1ljxz83");
|
|
39
41
|
});
|
|
@@ -25,7 +25,7 @@ export default function Class(
|
|
|
25
25
|
|
|
26
26
|
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <div id="divid" class="torp-1ljxz83"> From id </div> <div class="divclass torp-1ljxz83"> From string </div> <a class="torp-1ljxz83"> From state </a> <div class="torp-1ljxz83"> From state with scope </div> <div class="torp-1ljxz83"> Class object </div> <div class="torp-1ljxz83"> Class array </div> <div class="torp-1ljxz83"> Class nested </div> <!> `);
|
|
27
27
|
const t_root_0 = t_root(t_fragment_0, true);
|
|
28
|
-
const t_a_1 = t_next(t_next(t_next(t_next(t_next(t_root_0), true)), true)) as
|
|
28
|
+
const t_a_1 = t_next(t_next(t_next(t_next(t_next(t_root_0), true)), true)) as HTMLAnchorElement;
|
|
29
29
|
const t_div_1 = t_next(t_next(t_a_1, true)) as HTMLDivElement;
|
|
30
30
|
const t_div_2 = t_next(t_next(t_div_1, true)) as HTMLDivElement;
|
|
31
31
|
const t_div_3 = t_next(t_next(t_div_2, true)) as HTMLDivElement;
|
|
@@ -33,7 +33,9 @@ export default function Class(
|
|
|
33
33
|
let t_comp_anchor_1 = t_anchor(t_next(t_next(t_div_4, true))) as HTMLElement;
|
|
34
34
|
|
|
35
35
|
/* @component */
|
|
36
|
-
const t_props_1 = $watch({
|
|
36
|
+
const t_props_1 = $watch({
|
|
37
|
+
class: t_class({ "child-class": true }, "torp-1ljxz83"),
|
|
38
|
+
});
|
|
37
39
|
$run(() => {
|
|
38
40
|
t_props_1["class"] = t_class({ "child-class": true }, "torp-1ljxz83");
|
|
39
41
|
});
|
|
@@ -30,7 +30,9 @@ export default function Component(
|
|
|
30
30
|
let t_comp_anchor_1 = t_anchor(t_next(t_root_0)) as HTMLElement;
|
|
31
31
|
|
|
32
32
|
/* @component */
|
|
33
|
-
const t_props_1 = $watch({
|
|
33
|
+
const t_props_1 = $watch({
|
|
34
|
+
name: "Amy",
|
|
35
|
+
});
|
|
34
36
|
Header(t_fragment_0, t_comp_anchor_1, t_props_1, $context);
|
|
35
37
|
|
|
36
38
|
const t_text_1 = t_next(t_comp_anchor_1, true);
|
|
@@ -30,7 +30,9 @@ export default function Component(
|
|
|
30
30
|
let t_comp_anchor_1 = t_anchor(t_next(t_root_0)) as HTMLElement;
|
|
31
31
|
|
|
32
32
|
/* @component */
|
|
33
|
-
const t_props_1 = $watch({
|
|
33
|
+
const t_props_1 = $watch({
|
|
34
|
+
name: "Amy",
|
|
35
|
+
});
|
|
34
36
|
Header(t_fragment_0, t_comp_anchor_1, t_props_1, $context);
|
|
35
37
|
|
|
36
38
|
const t_text_1 = t_next(t_comp_anchor_1, true);
|
|
@@ -44,7 +44,9 @@ export default function For(
|
|
|
44
44
|
let t_previous_item_1 = t_for_region_1;
|
|
45
45
|
let t_next_item_1 = t_for_region_1.nextRegion;
|
|
46
46
|
for (let item of $props.items) {
|
|
47
|
-
let t_new_item_1 = t_list_item(
|
|
47
|
+
let t_new_item_1 = t_list_item(
|
|
48
|
+
{ item },
|
|
49
|
+
);
|
|
48
50
|
t_new_item_1.previousRegion = t_previous_item_1;
|
|
49
51
|
t_previous_item_1.nextRegion = t_new_item_1;
|
|
50
52
|
t_previous_item_1 = t_new_item_1;
|
|
@@ -44,7 +44,9 @@ export default function For(
|
|
|
44
44
|
let t_previous_item_1 = t_for_region_1;
|
|
45
45
|
let t_next_item_1 = t_for_region_1.nextRegion;
|
|
46
46
|
for (let item of $props.items) {
|
|
47
|
-
let t_new_item_1 = t_list_item(
|
|
47
|
+
let t_new_item_1 = t_list_item(
|
|
48
|
+
{ item },
|
|
49
|
+
);
|
|
48
50
|
t_new_item_1.previousRegion = t_previous_item_1;
|
|
49
51
|
t_previous_item_1.nextRegion = t_new_item_1;
|
|
50
52
|
t_previous_item_1 = t_new_item_1;
|
|
@@ -33,8 +33,8 @@ export default function Increment(
|
|
|
33
33
|
|
|
34
34
|
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <button id="increment"> Increment </button> <button id="increment5"> Increment </button> <p>#</p> `);
|
|
35
35
|
const t_root_0 = t_root(t_fragment_0, true);
|
|
36
|
-
const t_button_1 = t_next(t_root_0) as
|
|
37
|
-
const t_button_2 = t_next(t_next(t_button_1, true)) as
|
|
36
|
+
const t_button_1 = t_next(t_root_0) as HTMLButtonElement;
|
|
37
|
+
const t_button_2 = t_next(t_next(t_button_1, true)) as HTMLButtonElement;
|
|
38
38
|
const t_text_1 = t_child(t_next(t_next(t_button_2, true)));
|
|
39
39
|
const t_text_2 = t_next(t_next(t_next(t_button_2, true)), true);
|
|
40
40
|
t_event(t_button_1, "click", increment);
|
|
@@ -33,8 +33,8 @@ export default function Increment(
|
|
|
33
33
|
|
|
34
34
|
const t_fragment_0 = t_fragment($parent.ownerDocument!, t_fragments, 0, ` <button id="increment"> Increment </button> <button id="increment5"> Increment </button> <p>#</p> `);
|
|
35
35
|
const t_root_0 = t_root(t_fragment_0, true);
|
|
36
|
-
const t_button_1 = t_next(t_root_0) as
|
|
37
|
-
const t_button_2 = t_next(t_next(t_button_1, true)) as
|
|
36
|
+
const t_button_1 = t_next(t_root_0) as HTMLButtonElement;
|
|
37
|
+
const t_button_2 = t_next(t_next(t_button_1, true)) as HTMLButtonElement;
|
|
38
38
|
const t_text_1 = t_child(t_next(t_next(t_button_2, true)));
|
|
39
39
|
const t_text_2 = t_next(t_next(t_next(t_button_2, true)), true);
|
|
40
40
|
t_event(t_button_1, "click", increment);
|
|
@@ -46,7 +46,9 @@ export default function For(
|
|
|
46
46
|
let t_previous_item_1 = t_for_region_1;
|
|
47
47
|
let t_next_item_1 = t_for_region_1.nextRegion;
|
|
48
48
|
for (let i = 0; i < 5; i++) {
|
|
49
|
-
let t_new_item_1 = t_list_item(
|
|
49
|
+
let t_new_item_1 = t_list_item(
|
|
50
|
+
{ i },
|
|
51
|
+
);
|
|
50
52
|
t_new_item_1.previousRegion = t_previous_item_1;
|
|
51
53
|
t_previous_item_1.nextRegion = t_new_item_1;
|
|
52
54
|
t_previous_item_1 = t_new_item_1;
|
|
@@ -46,7 +46,9 @@ export default function ForAfterFor(
|
|
|
46
46
|
let t_previous_item_1 = t_for_region_1;
|
|
47
47
|
let t_next_item_1 = t_for_region_1.nextRegion;
|
|
48
48
|
for (let i = 0; i < 5; i++) {
|
|
49
|
-
let t_new_item_1 = t_list_item(
|
|
49
|
+
let t_new_item_1 = t_list_item(
|
|
50
|
+
{ i },
|
|
51
|
+
);
|
|
50
52
|
t_new_item_1.previousRegion = t_previous_item_1;
|
|
51
53
|
t_previous_item_1.nextRegion = t_new_item_1;
|
|
52
54
|
t_previous_item_1 = t_new_item_1;
|
|
@@ -87,7 +89,9 @@ export default function ForAfterFor(
|
|
|
87
89
|
let t_previous_item_2 = t_for_region_2;
|
|
88
90
|
let t_next_item_2 = t_for_region_2.nextRegion;
|
|
89
91
|
for (let i = 10; i > 5; i--) {
|
|
90
|
-
let t_new_item_2 = t_list_item(
|
|
92
|
+
let t_new_item_2 = t_list_item(
|
|
93
|
+
{ i },
|
|
94
|
+
);
|
|
91
95
|
t_new_item_2.previousRegion = t_previous_item_2;
|
|
92
96
|
t_previous_item_2.nextRegion = t_new_item_2;
|
|
93
97
|
t_previous_item_2 = t_new_item_2;
|
|
@@ -46,7 +46,9 @@ export default function ForContainingFor(
|
|
|
46
46
|
let t_previous_item_1 = t_for_region_1;
|
|
47
47
|
let t_next_item_1 = t_for_region_1.nextRegion;
|
|
48
48
|
for (let i = 0; i < 5; i++) {
|
|
49
|
-
let t_new_item_1 = t_list_item(
|
|
49
|
+
let t_new_item_1 = t_list_item(
|
|
50
|
+
{ i },
|
|
51
|
+
);
|
|
50
52
|
t_new_item_1.previousRegion = t_previous_item_1;
|
|
51
53
|
t_previous_item_1.nextRegion = t_new_item_1;
|
|
52
54
|
t_previous_item_1 = t_new_item_1;
|
|
@@ -72,7 +74,9 @@ export default function ForContainingFor(
|
|
|
72
74
|
let t_previous_item_2 = t_for_region_2;
|
|
73
75
|
let t_next_item_2 = t_for_region_2.nextRegion;
|
|
74
76
|
for (let j = 0; j < 2; j++) {
|
|
75
|
-
let t_new_item_2 = t_list_item(
|
|
77
|
+
let t_new_item_2 = t_list_item(
|
|
78
|
+
{ j },
|
|
79
|
+
);
|
|
76
80
|
t_new_item_2.previousRegion = t_previous_item_2;
|
|
77
81
|
t_previous_item_2.nextRegion = t_new_item_2;
|
|
78
82
|
t_previous_item_2 = t_new_item_2;
|
|
@@ -47,7 +47,9 @@ export default function ForContainingIf(
|
|
|
47
47
|
let t_previous_item_1 = t_for_region_1;
|
|
48
48
|
let t_next_item_1 = t_for_region_1.nextRegion;
|
|
49
49
|
for (let i = 0; i < 5; i++) {
|
|
50
|
-
let t_new_item_1 = t_list_item(
|
|
50
|
+
let t_new_item_1 = t_list_item(
|
|
51
|
+
{ i },
|
|
52
|
+
);
|
|
51
53
|
t_new_item_1.previousRegion = t_previous_item_1;
|
|
52
54
|
t_previous_item_1.nextRegion = t_new_item_1;
|
|
53
55
|
t_previous_item_1 = t_new_item_1;
|
|
@@ -60,7 +62,7 @@ export default function ForContainingIf(
|
|
|
60
62
|
let t_old_region_1 = t_push_region(t_item_1);
|
|
61
63
|
const t_fragment_1 = t_fragment($parent.ownerDocument!, t_fragments, 1, ` <button>#</button> `);
|
|
62
64
|
const t_root_1 = t_root(t_fragment_1, true);
|
|
63
|
-
const t_button_1 = t_next(t_root_1) as
|
|
65
|
+
const t_button_1 = t_next(t_root_1) as HTMLButtonElement;
|
|
64
66
|
const t_text_1 = t_child(t_button_1);
|
|
65
67
|
t_event(t_button_1, "click", doit);
|
|
66
68
|
|
|
@@ -49,7 +49,9 @@ export default function ForContainingIf(
|
|
|
49
49
|
let t_previous_item_1 = t_for_region_1;
|
|
50
50
|
let t_next_item_1 = t_for_region_1.nextRegion;
|
|
51
51
|
for (let i = 0; i < 5; i++) {
|
|
52
|
-
let t_new_item_1 = t_list_item(
|
|
52
|
+
let t_new_item_1 = t_list_item(
|
|
53
|
+
{ i },
|
|
54
|
+
);
|
|
53
55
|
t_new_item_1.previousRegion = t_previous_item_1;
|
|
54
56
|
t_previous_item_1.nextRegion = t_new_item_1;
|
|
55
57
|
t_previous_item_1 = t_new_item_1;
|
|
@@ -50,7 +50,9 @@ export default function ForEscape(
|
|
|
50
50
|
let t_previous_item_1 = t_for_region_1;
|
|
51
51
|
let t_next_item_1 = t_for_region_1.nextRegion;
|
|
52
52
|
for (let i = 0; i < 5; i++) {
|
|
53
|
-
let t_new_item_1 = t_list_item(
|
|
53
|
+
let t_new_item_1 = t_list_item(
|
|
54
|
+
{ i },
|
|
55
|
+
);
|
|
54
56
|
t_new_item_1.previousRegion = t_previous_item_1;
|
|
55
57
|
t_previous_item_1.nextRegion = t_new_item_1;
|
|
56
58
|
t_previous_item_1 = t_new_item_1;
|
|
@@ -45,7 +45,9 @@ export default function ForIn(
|
|
|
45
45
|
let t_previous_item_1 = t_for_region_1;
|
|
46
46
|
let t_next_item_1 = t_for_region_1.nextRegion;
|
|
47
47
|
for (let key in $props.item) {
|
|
48
|
-
let t_new_item_1 = t_list_item(
|
|
48
|
+
let t_new_item_1 = t_list_item(
|
|
49
|
+
{ key },
|
|
50
|
+
);
|
|
49
51
|
t_new_item_1.previousRegion = t_previous_item_1;
|
|
50
52
|
t_previous_item_1.nextRegion = t_new_item_1;
|
|
51
53
|
t_previous_item_1 = t_new_item_1;
|
|
@@ -45,7 +45,9 @@ export default function ForOf(
|
|
|
45
45
|
let t_previous_item_1 = t_for_region_1;
|
|
46
46
|
let t_next_item_1 = t_for_region_1.nextRegion;
|
|
47
47
|
for (let item of $props.items) {
|
|
48
|
-
let t_new_item_1 = t_list_item(
|
|
48
|
+
let t_new_item_1 = t_list_item(
|
|
49
|
+
{ item },
|
|
50
|
+
);
|
|
49
51
|
t_new_item_1.previousRegion = t_previous_item_1;
|
|
50
52
|
t_previous_item_1.nextRegion = t_new_item_1;
|
|
51
53
|
t_previous_item_1 = t_new_item_1;
|