@marko/runtime-tags 6.1.9 → 6.1.11
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/dist/common/accessor.d.ts +3 -1
- package/dist/common/accessor.debug.d.ts +3 -1
- package/dist/common/helpers.d.ts +1 -0
- package/dist/debug/dom.js +34 -35
- package/dist/debug/dom.mjs +34 -35
- package/dist/debug/html.js +15 -12
- package/dist/debug/html.mjs +15 -12
- package/dist/dom/queue.d.ts +2 -0
- package/dist/dom.js +30 -26
- package/dist/dom.mjs +30 -26
- package/dist/html.js +18 -14
- package/dist/html.mjs +18 -14
- package/dist/translator/index.js +95 -18
- package/dist/translator/util/references.d.ts +4 -0
- package/dist/translator/util/sections.d.ts +1 -1
- package/package.json +1 -1
|
@@ -56,7 +56,9 @@ export declare enum PendingRenderProp {
|
|
|
56
56
|
Key = "key",
|
|
57
57
|
Scope = "scope",
|
|
58
58
|
Signal = "signal",
|
|
59
|
-
Value = "value"
|
|
59
|
+
Value = "value",
|
|
60
|
+
Gen = "gen",
|
|
61
|
+
Pending = "pending"
|
|
60
62
|
}
|
|
61
63
|
export declare enum ClosureSignalProp {
|
|
62
64
|
ScopeInstancesAccessor = "scopeInstancesAccessor",
|
package/dist/common/helpers.d.ts
CHANGED
|
@@ -7,5 +7,6 @@ export declare const toDelimitedString: (val: unknown, delimiter: string, string
|
|
|
7
7
|
export declare function isEventHandler(name: string): name is `on${string}`;
|
|
8
8
|
export declare function getEventHandlerName(name: `on${string}`): string;
|
|
9
9
|
export declare function isVoid(value: unknown): value is false | null | undefined;
|
|
10
|
+
export declare function isNotVoid(value: unknown): boolean;
|
|
10
11
|
export declare function normalizeDynamicRenderer<Renderer>(value: any): Renderer | string | undefined;
|
|
11
12
|
export declare const decodeAccessor: (num: number) => string;
|
package/dist/debug/dom.js
CHANGED
|
@@ -125,6 +125,9 @@ function isEventHandler(name) {
|
|
|
125
125
|
function getEventHandlerName(name) {
|
|
126
126
|
return name[2] === "-" ? name.slice(3) : name.slice(2).toLowerCase();
|
|
127
127
|
}
|
|
128
|
+
function isNotVoid(value) {
|
|
129
|
+
return value != null && value !== false;
|
|
130
|
+
}
|
|
128
131
|
function normalizeDynamicRenderer(value) {
|
|
129
132
|
if (value) {
|
|
130
133
|
if (typeof value === "string") return value;
|
|
@@ -765,7 +768,7 @@ let inputType = "";
|
|
|
765
768
|
const controllableDelegate = /* @__PURE__ */ createDelegator();
|
|
766
769
|
function _attr_input_checked_default(scope, nodeAccessor, checked) {
|
|
767
770
|
const el = scope[nodeAccessor];
|
|
768
|
-
const normalizedChecked =
|
|
771
|
+
const normalizedChecked = isNotVoid(checked);
|
|
769
772
|
if (el.defaultChecked !== normalizedChecked) {
|
|
770
773
|
const restoreValue = scope["#Creating"] ? normalizedChecked : el.checked;
|
|
771
774
|
el.defaultChecked = normalizedChecked;
|
|
@@ -774,7 +777,7 @@ function _attr_input_checked_default(scope, nodeAccessor, checked) {
|
|
|
774
777
|
}
|
|
775
778
|
function _attr_input_checked(scope, nodeAccessor, checked, checkedChange) {
|
|
776
779
|
const el = scope[nodeAccessor];
|
|
777
|
-
const normalizedChecked =
|
|
780
|
+
const normalizedChecked = isNotVoid(checked);
|
|
778
781
|
scope["ControlledHandler:" + nodeAccessor] = checkedChange;
|
|
779
782
|
scope["ControlledType:" + nodeAccessor] = checkedChange ? 0 : 5;
|
|
780
783
|
if (checkedChange && !scope["#Creating"]) el.checked = normalizedChecked;
|
|
@@ -796,19 +799,19 @@ function _attr_input_checkedValue_default(scope, nodeAccessor, checkedValue, val
|
|
|
796
799
|
const multiple = Array.isArray(checkedValue);
|
|
797
800
|
const normalizedValue = normalizeStrProp(value);
|
|
798
801
|
const normalizedCheckedValue = multiple ? checkedValue.map(normalizeStrProp) : normalizeStrProp(checkedValue);
|
|
799
|
-
_attr(scope[nodeAccessor], "value",
|
|
802
|
+
_attr(scope[nodeAccessor], "value", value);
|
|
800
803
|
_attr_input_checked_default(scope, nodeAccessor, multiple ? normalizedCheckedValue.includes(normalizedValue) : normalizedValue === normalizedCheckedValue);
|
|
801
804
|
}
|
|
802
805
|
function _attr_input_checkedValue(scope, nodeAccessor, checkedValue, checkedValueChange, value) {
|
|
803
806
|
const el = scope[nodeAccessor];
|
|
804
807
|
const multiple = Array.isArray(checkedValue);
|
|
805
|
-
const normalizedValue = normalizeStrProp(value);
|
|
806
808
|
const normalizedCheckedValue = scope["ControlledValue:" + nodeAccessor] = multiple ? checkedValue.map(normalizeStrProp) : normalizeStrProp(checkedValue);
|
|
807
|
-
_attr(el, "value", normalizedValue);
|
|
808
809
|
scope["ControlledHandler:" + nodeAccessor] = checkedValueChange;
|
|
809
810
|
scope["ControlledType:" + nodeAccessor] = checkedValueChange ? 1 : 5;
|
|
810
|
-
if (checkedValueChange && !scope["#Creating"])
|
|
811
|
-
|
|
811
|
+
if (checkedValueChange && !scope["#Creating"]) {
|
|
812
|
+
el.checked = multiple ? normalizedCheckedValue.includes(normalizeStrProp(value)) : normalizeStrProp(value) === normalizedCheckedValue;
|
|
813
|
+
_attr(el, "value", value);
|
|
814
|
+
} else _attr_input_checkedValue_default(scope, nodeAccessor, checkedValue, value);
|
|
812
815
|
}
|
|
813
816
|
function _attr_input_checkedValue_script(scope, nodeAccessor) {
|
|
814
817
|
const el = scope[nodeAccessor];
|
|
@@ -829,7 +832,7 @@ function _attr_input_checkedValue_script(scope, nodeAccessor) {
|
|
|
829
832
|
}
|
|
830
833
|
function _attr_input_value_default(scope, nodeAccessor, value) {
|
|
831
834
|
const el = scope[nodeAccessor];
|
|
832
|
-
const normalizedValue =
|
|
835
|
+
const normalizedValue = normalizeAttrValue(value) || "";
|
|
833
836
|
if (el.defaultValue !== normalizedValue) {
|
|
834
837
|
const restoreValue = scope["#Creating"] ? normalizedValue : el.value;
|
|
835
838
|
el.defaultValue = normalizedValue;
|
|
@@ -838,7 +841,7 @@ function _attr_input_value_default(scope, nodeAccessor, value) {
|
|
|
838
841
|
}
|
|
839
842
|
function _attr_input_value(scope, nodeAccessor, value, valueChange) {
|
|
840
843
|
const el = scope[nodeAccessor];
|
|
841
|
-
const normalizedValue =
|
|
844
|
+
const normalizedValue = normalizeAttrValue(value) || "";
|
|
842
845
|
scope["ControlledHandler:" + nodeAccessor] = valueChange;
|
|
843
846
|
scope["ControlledValue:" + nodeAccessor] = normalizedValue;
|
|
844
847
|
scope["ControlledType:" + nodeAccessor] = valueChange ? 2 : 5;
|
|
@@ -932,10 +935,10 @@ function getSelectValue(el, multiple) {
|
|
|
932
935
|
return multiple ? Array.from(el.selectedOptions, (opt) => opt.value) : el.value;
|
|
933
936
|
}
|
|
934
937
|
function _attr_details_or_dialog_open_default(scope, nodeAccessor, open) {
|
|
935
|
-
if (scope["#Creating"]) scope[nodeAccessor].open =
|
|
938
|
+
if (scope["#Creating"]) scope[nodeAccessor].open = isNotVoid(open);
|
|
936
939
|
}
|
|
937
940
|
function _attr_details_or_dialog_open(scope, nodeAccessor, open, openChange) {
|
|
938
|
-
const normalizedOpen = scope["ControlledValue:" + nodeAccessor] =
|
|
941
|
+
const normalizedOpen = scope["ControlledValue:" + nodeAccessor] = isNotVoid(open);
|
|
939
942
|
scope["ControlledHandler:" + nodeAccessor] = openChange;
|
|
940
943
|
scope["ControlledType:" + nodeAccessor] = openChange ? 4 : 5;
|
|
941
944
|
if (openChange && !scope["#Creating"]) scope[nodeAccessor].open = normalizedOpen;
|
|
@@ -987,9 +990,6 @@ function hasFormElementChanged(el) {
|
|
|
987
990
|
function normalizeStrProp(value) {
|
|
988
991
|
return normalizeAttrValue(value) || "";
|
|
989
992
|
}
|
|
990
|
-
function normalizeBoolProp(value) {
|
|
991
|
-
return value != null && value !== false;
|
|
992
|
-
}
|
|
993
993
|
function updateList(arr, val, push) {
|
|
994
994
|
const index = arr.indexOf(val);
|
|
995
995
|
return (push ? !~index && [...arr, val] : ~index && arr.slice(0, index).concat(arr.slice(index + 1))) || arr;
|
|
@@ -1165,7 +1165,7 @@ function normalizeClientRender(value) {
|
|
|
1165
1165
|
else throw new Error(`Invalid \`content\` attribute. Received ${typeof value}`);
|
|
1166
1166
|
}
|
|
1167
1167
|
function normalizeAttrValue(value) {
|
|
1168
|
-
if (value
|
|
1168
|
+
if (isNotVoid(value)) return value === true ? "" : value + "";
|
|
1169
1169
|
}
|
|
1170
1170
|
function _lifecycle(scope, thisObj, index = 0) {
|
|
1171
1171
|
const accessor = "Lifecycle:" + index;
|
|
@@ -1550,9 +1550,8 @@ function byFirstArg(name) {
|
|
|
1550
1550
|
}
|
|
1551
1551
|
//#endregion
|
|
1552
1552
|
//#region src/dom/queue.ts
|
|
1553
|
+
let runId = 1;
|
|
1553
1554
|
let pendingRenders = [];
|
|
1554
|
-
let pendingRendersLookup = {};
|
|
1555
|
-
let asyncRendersLookup;
|
|
1556
1555
|
const caughtError = /* @__PURE__ */ new WeakSet();
|
|
1557
1556
|
const placeholderShown = /* @__PURE__ */ new WeakSet();
|
|
1558
1557
|
let pendingEffects = [];
|
|
@@ -1560,18 +1559,22 @@ let pendingScopes = [];
|
|
|
1560
1559
|
let rendering;
|
|
1561
1560
|
const scopeKeyOffset = 1e3;
|
|
1562
1561
|
function queueRender(scope, signal, signalKey, value, scopeKey = scope["#Id"]) {
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1562
|
+
let render;
|
|
1563
|
+
if (signalKey >= 0 && (render = scope[signalKey + scopeKeyOffset])) {
|
|
1564
|
+
render["value"] = value;
|
|
1565
|
+
if (render["gen"] === runId || catchEnabled && render["pending"]) return;
|
|
1566
|
+
render["gen"] = runId;
|
|
1567
|
+
} else {
|
|
1568
|
+
render = {
|
|
1569
|
+
["key"]: scopeKey * scopeKeyOffset + signalKey,
|
|
1569
1570
|
["scope"]: scope,
|
|
1570
1571
|
["signal"]: signal,
|
|
1571
|
-
["value"]: value
|
|
1572
|
-
|
|
1573
|
-
|
|
1572
|
+
["value"]: value,
|
|
1573
|
+
["gen"]: runId
|
|
1574
|
+
};
|
|
1575
|
+
if (signalKey >= 0) scope[signalKey + scopeKeyOffset] = render;
|
|
1574
1576
|
}
|
|
1577
|
+
queuePendingRender(render);
|
|
1575
1578
|
}
|
|
1576
1579
|
function queuePendingRender(render) {
|
|
1577
1580
|
let i = pendingRenders.push(render) - 1;
|
|
@@ -1589,13 +1592,12 @@ function queueEffect(scope, fn) {
|
|
|
1589
1592
|
}
|
|
1590
1593
|
function run() {
|
|
1591
1594
|
const effects = pendingEffects;
|
|
1592
|
-
asyncRendersLookup = {};
|
|
1593
1595
|
try {
|
|
1594
1596
|
rendering = 1;
|
|
1595
1597
|
runRenders();
|
|
1596
1598
|
} finally {
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
+
runId++;
|
|
1600
|
+
rendering = 0;
|
|
1599
1601
|
pendingRenders = [];
|
|
1600
1602
|
pendingEffects = [];
|
|
1601
1603
|
}
|
|
@@ -1608,19 +1610,15 @@ function queueAsyncRender(scope, signal, value) {
|
|
|
1608
1610
|
function prepareEffects(fn) {
|
|
1609
1611
|
const prevRenders = pendingRenders;
|
|
1610
1612
|
const prevEffects = pendingEffects;
|
|
1611
|
-
const prevLookup = asyncRendersLookup;
|
|
1612
1613
|
const preparedEffects = pendingEffects = [];
|
|
1613
1614
|
pendingRenders = [];
|
|
1614
|
-
asyncRendersLookup = pendingRendersLookup;
|
|
1615
|
-
pendingRendersLookup = {};
|
|
1616
1615
|
try {
|
|
1617
1616
|
rendering = 1;
|
|
1618
1617
|
fn();
|
|
1619
1618
|
runRenders();
|
|
1620
1619
|
} finally {
|
|
1620
|
+
runId++;
|
|
1621
1621
|
rendering = 0;
|
|
1622
|
-
pendingRendersLookup = asyncRendersLookup;
|
|
1623
|
-
asyncRendersLookup = prevLookup;
|
|
1624
1622
|
pendingRenders = prevRenders;
|
|
1625
1623
|
pendingEffects = prevEffects;
|
|
1626
1624
|
}
|
|
@@ -1690,11 +1688,12 @@ function _enable_catch() {
|
|
|
1690
1688
|
let branch = render["scope"]["#ClosestBranch"];
|
|
1691
1689
|
while (branch) {
|
|
1692
1690
|
if (branch["#PendingRenders"]) {
|
|
1693
|
-
|
|
1691
|
+
render["pending"] = 1;
|
|
1694
1692
|
return branch["#PendingRenders"].push(render);
|
|
1695
1693
|
}
|
|
1696
1694
|
branch = branch["#ParentBranch"];
|
|
1697
1695
|
}
|
|
1696
|
+
render["pending"] = 0;
|
|
1698
1697
|
runRender(render);
|
|
1699
1698
|
} catch (error) {
|
|
1700
1699
|
renderCatch(render["scope"], error);
|
package/dist/debug/dom.mjs
CHANGED
|
@@ -123,6 +123,9 @@ function isEventHandler(name) {
|
|
|
123
123
|
function getEventHandlerName(name) {
|
|
124
124
|
return name[2] === "-" ? name.slice(3) : name.slice(2).toLowerCase();
|
|
125
125
|
}
|
|
126
|
+
function isNotVoid(value) {
|
|
127
|
+
return value != null && value !== false;
|
|
128
|
+
}
|
|
126
129
|
function normalizeDynamicRenderer(value) {
|
|
127
130
|
if (value) {
|
|
128
131
|
if (typeof value === "string") return value;
|
|
@@ -763,7 +766,7 @@ let inputType = "";
|
|
|
763
766
|
const controllableDelegate = /* @__PURE__ */ createDelegator();
|
|
764
767
|
function _attr_input_checked_default(scope, nodeAccessor, checked) {
|
|
765
768
|
const el = scope[nodeAccessor];
|
|
766
|
-
const normalizedChecked =
|
|
769
|
+
const normalizedChecked = isNotVoid(checked);
|
|
767
770
|
if (el.defaultChecked !== normalizedChecked) {
|
|
768
771
|
const restoreValue = scope["#Creating"] ? normalizedChecked : el.checked;
|
|
769
772
|
el.defaultChecked = normalizedChecked;
|
|
@@ -772,7 +775,7 @@ function _attr_input_checked_default(scope, nodeAccessor, checked) {
|
|
|
772
775
|
}
|
|
773
776
|
function _attr_input_checked(scope, nodeAccessor, checked, checkedChange) {
|
|
774
777
|
const el = scope[nodeAccessor];
|
|
775
|
-
const normalizedChecked =
|
|
778
|
+
const normalizedChecked = isNotVoid(checked);
|
|
776
779
|
scope["ControlledHandler:" + nodeAccessor] = checkedChange;
|
|
777
780
|
scope["ControlledType:" + nodeAccessor] = checkedChange ? 0 : 5;
|
|
778
781
|
if (checkedChange && !scope["#Creating"]) el.checked = normalizedChecked;
|
|
@@ -794,19 +797,19 @@ function _attr_input_checkedValue_default(scope, nodeAccessor, checkedValue, val
|
|
|
794
797
|
const multiple = Array.isArray(checkedValue);
|
|
795
798
|
const normalizedValue = normalizeStrProp(value);
|
|
796
799
|
const normalizedCheckedValue = multiple ? checkedValue.map(normalizeStrProp) : normalizeStrProp(checkedValue);
|
|
797
|
-
_attr(scope[nodeAccessor], "value",
|
|
800
|
+
_attr(scope[nodeAccessor], "value", value);
|
|
798
801
|
_attr_input_checked_default(scope, nodeAccessor, multiple ? normalizedCheckedValue.includes(normalizedValue) : normalizedValue === normalizedCheckedValue);
|
|
799
802
|
}
|
|
800
803
|
function _attr_input_checkedValue(scope, nodeAccessor, checkedValue, checkedValueChange, value) {
|
|
801
804
|
const el = scope[nodeAccessor];
|
|
802
805
|
const multiple = Array.isArray(checkedValue);
|
|
803
|
-
const normalizedValue = normalizeStrProp(value);
|
|
804
806
|
const normalizedCheckedValue = scope["ControlledValue:" + nodeAccessor] = multiple ? checkedValue.map(normalizeStrProp) : normalizeStrProp(checkedValue);
|
|
805
|
-
_attr(el, "value", normalizedValue);
|
|
806
807
|
scope["ControlledHandler:" + nodeAccessor] = checkedValueChange;
|
|
807
808
|
scope["ControlledType:" + nodeAccessor] = checkedValueChange ? 1 : 5;
|
|
808
|
-
if (checkedValueChange && !scope["#Creating"])
|
|
809
|
-
|
|
809
|
+
if (checkedValueChange && !scope["#Creating"]) {
|
|
810
|
+
el.checked = multiple ? normalizedCheckedValue.includes(normalizeStrProp(value)) : normalizeStrProp(value) === normalizedCheckedValue;
|
|
811
|
+
_attr(el, "value", value);
|
|
812
|
+
} else _attr_input_checkedValue_default(scope, nodeAccessor, checkedValue, value);
|
|
810
813
|
}
|
|
811
814
|
function _attr_input_checkedValue_script(scope, nodeAccessor) {
|
|
812
815
|
const el = scope[nodeAccessor];
|
|
@@ -827,7 +830,7 @@ function _attr_input_checkedValue_script(scope, nodeAccessor) {
|
|
|
827
830
|
}
|
|
828
831
|
function _attr_input_value_default(scope, nodeAccessor, value) {
|
|
829
832
|
const el = scope[nodeAccessor];
|
|
830
|
-
const normalizedValue =
|
|
833
|
+
const normalizedValue = normalizeAttrValue(value) || "";
|
|
831
834
|
if (el.defaultValue !== normalizedValue) {
|
|
832
835
|
const restoreValue = scope["#Creating"] ? normalizedValue : el.value;
|
|
833
836
|
el.defaultValue = normalizedValue;
|
|
@@ -836,7 +839,7 @@ function _attr_input_value_default(scope, nodeAccessor, value) {
|
|
|
836
839
|
}
|
|
837
840
|
function _attr_input_value(scope, nodeAccessor, value, valueChange) {
|
|
838
841
|
const el = scope[nodeAccessor];
|
|
839
|
-
const normalizedValue =
|
|
842
|
+
const normalizedValue = normalizeAttrValue(value) || "";
|
|
840
843
|
scope["ControlledHandler:" + nodeAccessor] = valueChange;
|
|
841
844
|
scope["ControlledValue:" + nodeAccessor] = normalizedValue;
|
|
842
845
|
scope["ControlledType:" + nodeAccessor] = valueChange ? 2 : 5;
|
|
@@ -930,10 +933,10 @@ function getSelectValue(el, multiple) {
|
|
|
930
933
|
return multiple ? Array.from(el.selectedOptions, (opt) => opt.value) : el.value;
|
|
931
934
|
}
|
|
932
935
|
function _attr_details_or_dialog_open_default(scope, nodeAccessor, open) {
|
|
933
|
-
if (scope["#Creating"]) scope[nodeAccessor].open =
|
|
936
|
+
if (scope["#Creating"]) scope[nodeAccessor].open = isNotVoid(open);
|
|
934
937
|
}
|
|
935
938
|
function _attr_details_or_dialog_open(scope, nodeAccessor, open, openChange) {
|
|
936
|
-
const normalizedOpen = scope["ControlledValue:" + nodeAccessor] =
|
|
939
|
+
const normalizedOpen = scope["ControlledValue:" + nodeAccessor] = isNotVoid(open);
|
|
937
940
|
scope["ControlledHandler:" + nodeAccessor] = openChange;
|
|
938
941
|
scope["ControlledType:" + nodeAccessor] = openChange ? 4 : 5;
|
|
939
942
|
if (openChange && !scope["#Creating"]) scope[nodeAccessor].open = normalizedOpen;
|
|
@@ -985,9 +988,6 @@ function hasFormElementChanged(el) {
|
|
|
985
988
|
function normalizeStrProp(value) {
|
|
986
989
|
return normalizeAttrValue(value) || "";
|
|
987
990
|
}
|
|
988
|
-
function normalizeBoolProp(value) {
|
|
989
|
-
return value != null && value !== false;
|
|
990
|
-
}
|
|
991
991
|
function updateList(arr, val, push) {
|
|
992
992
|
const index = arr.indexOf(val);
|
|
993
993
|
return (push ? !~index && [...arr, val] : ~index && arr.slice(0, index).concat(arr.slice(index + 1))) || arr;
|
|
@@ -1163,7 +1163,7 @@ function normalizeClientRender(value) {
|
|
|
1163
1163
|
else throw new Error(`Invalid \`content\` attribute. Received ${typeof value}`);
|
|
1164
1164
|
}
|
|
1165
1165
|
function normalizeAttrValue(value) {
|
|
1166
|
-
if (value
|
|
1166
|
+
if (isNotVoid(value)) return value === true ? "" : value + "";
|
|
1167
1167
|
}
|
|
1168
1168
|
function _lifecycle(scope, thisObj, index = 0) {
|
|
1169
1169
|
const accessor = "Lifecycle:" + index;
|
|
@@ -1548,9 +1548,8 @@ function byFirstArg(name) {
|
|
|
1548
1548
|
}
|
|
1549
1549
|
//#endregion
|
|
1550
1550
|
//#region src/dom/queue.ts
|
|
1551
|
+
let runId = 1;
|
|
1551
1552
|
let pendingRenders = [];
|
|
1552
|
-
let pendingRendersLookup = {};
|
|
1553
|
-
let asyncRendersLookup;
|
|
1554
1553
|
const caughtError = /* @__PURE__ */ new WeakSet();
|
|
1555
1554
|
const placeholderShown = /* @__PURE__ */ new WeakSet();
|
|
1556
1555
|
let pendingEffects = [];
|
|
@@ -1558,18 +1557,22 @@ let pendingScopes = [];
|
|
|
1558
1557
|
let rendering;
|
|
1559
1558
|
const scopeKeyOffset = 1e3;
|
|
1560
1559
|
function queueRender(scope, signal, signalKey, value, scopeKey = scope["#Id"]) {
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1560
|
+
let render;
|
|
1561
|
+
if (signalKey >= 0 && (render = scope[signalKey + scopeKeyOffset])) {
|
|
1562
|
+
render["value"] = value;
|
|
1563
|
+
if (render["gen"] === runId || catchEnabled && render["pending"]) return;
|
|
1564
|
+
render["gen"] = runId;
|
|
1565
|
+
} else {
|
|
1566
|
+
render = {
|
|
1567
|
+
["key"]: scopeKey * scopeKeyOffset + signalKey,
|
|
1567
1568
|
["scope"]: scope,
|
|
1568
1569
|
["signal"]: signal,
|
|
1569
|
-
["value"]: value
|
|
1570
|
-
|
|
1571
|
-
|
|
1570
|
+
["value"]: value,
|
|
1571
|
+
["gen"]: runId
|
|
1572
|
+
};
|
|
1573
|
+
if (signalKey >= 0) scope[signalKey + scopeKeyOffset] = render;
|
|
1572
1574
|
}
|
|
1575
|
+
queuePendingRender(render);
|
|
1573
1576
|
}
|
|
1574
1577
|
function queuePendingRender(render) {
|
|
1575
1578
|
let i = pendingRenders.push(render) - 1;
|
|
@@ -1587,13 +1590,12 @@ function queueEffect(scope, fn) {
|
|
|
1587
1590
|
}
|
|
1588
1591
|
function run() {
|
|
1589
1592
|
const effects = pendingEffects;
|
|
1590
|
-
asyncRendersLookup = {};
|
|
1591
1593
|
try {
|
|
1592
1594
|
rendering = 1;
|
|
1593
1595
|
runRenders();
|
|
1594
1596
|
} finally {
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
+
runId++;
|
|
1598
|
+
rendering = 0;
|
|
1597
1599
|
pendingRenders = [];
|
|
1598
1600
|
pendingEffects = [];
|
|
1599
1601
|
}
|
|
@@ -1606,19 +1608,15 @@ function queueAsyncRender(scope, signal, value) {
|
|
|
1606
1608
|
function prepareEffects(fn) {
|
|
1607
1609
|
const prevRenders = pendingRenders;
|
|
1608
1610
|
const prevEffects = pendingEffects;
|
|
1609
|
-
const prevLookup = asyncRendersLookup;
|
|
1610
1611
|
const preparedEffects = pendingEffects = [];
|
|
1611
1612
|
pendingRenders = [];
|
|
1612
|
-
asyncRendersLookup = pendingRendersLookup;
|
|
1613
|
-
pendingRendersLookup = {};
|
|
1614
1613
|
try {
|
|
1615
1614
|
rendering = 1;
|
|
1616
1615
|
fn();
|
|
1617
1616
|
runRenders();
|
|
1618
1617
|
} finally {
|
|
1618
|
+
runId++;
|
|
1619
1619
|
rendering = 0;
|
|
1620
|
-
pendingRendersLookup = asyncRendersLookup;
|
|
1621
|
-
asyncRendersLookup = prevLookup;
|
|
1622
1620
|
pendingRenders = prevRenders;
|
|
1623
1621
|
pendingEffects = prevEffects;
|
|
1624
1622
|
}
|
|
@@ -1688,11 +1686,12 @@ function _enable_catch() {
|
|
|
1688
1686
|
let branch = render["scope"]["#ClosestBranch"];
|
|
1689
1687
|
while (branch) {
|
|
1690
1688
|
if (branch["#PendingRenders"]) {
|
|
1691
|
-
|
|
1689
|
+
render["pending"] = 1;
|
|
1692
1690
|
return branch["#PendingRenders"].push(render);
|
|
1693
1691
|
}
|
|
1694
1692
|
branch = branch["#ParentBranch"];
|
|
1695
1693
|
}
|
|
1694
|
+
render["pending"] = 0;
|
|
1696
1695
|
runRender(render);
|
|
1697
1696
|
} catch (error) {
|
|
1698
1697
|
renderCatch(render["scope"], error);
|
package/dist/debug/html.js
CHANGED
|
@@ -844,9 +844,10 @@ function writeArrayBuffer(state, val) {
|
|
|
844
844
|
}
|
|
845
845
|
function writeTypedArray(state, val, ref) {
|
|
846
846
|
if (val.byteOffset || state.refs.has(val.buffer)) {
|
|
847
|
+
const needsLength = val.byteOffset + val.byteLength < val.buffer.byteLength;
|
|
847
848
|
state.buf.push("new " + val.constructor.name + "(");
|
|
848
849
|
writeProp(state, val.buffer, ref, "buffer");
|
|
849
|
-
state.buf.push(val.byteOffset ? "," + val.byteOffset + "
|
|
850
|
+
state.buf.push((val.byteOffset || needsLength ? "," + val.byteOffset + (needsLength ? "," + val.length : "") : "") + ")");
|
|
850
851
|
} else {
|
|
851
852
|
state.refs.set(val.buffer, new Reference(ref, "buffer", state.flush, null));
|
|
852
853
|
state.buf.push("new " + val.constructor.name + (val.length === 0 ? "" : "(" + (hasOnlyZeros(val) ? val.length : typedArrayToInitString(val)) + ")"));
|
|
@@ -900,11 +901,12 @@ function writeFormData(state, val) {
|
|
|
900
901
|
sep = ",";
|
|
901
902
|
}
|
|
902
903
|
if (sep === "[") state.buf.push("new FormData");
|
|
903
|
-
else state.buf.push(valStr + "].reduce((f,v,i,a)=>i%2&&f.append(
|
|
904
|
+
else state.buf.push(valStr + "].reduce((f,v,i,a)=>i%2&&f.append(a[i-1],v)||f,new FormData)");
|
|
904
905
|
return true;
|
|
905
906
|
}
|
|
906
907
|
function writeRequest(state, val, ref) {
|
|
907
908
|
let sep = "";
|
|
909
|
+
let bodySerialized = false;
|
|
908
910
|
const hasBody = val.body && !val.bodyUsed && val.duplex === "half";
|
|
909
911
|
state.buf.push("new Request(" + quote(val.url, 0));
|
|
910
912
|
if (hasBody) {
|
|
@@ -912,6 +914,7 @@ function writeRequest(state, val, ref) {
|
|
|
912
914
|
if (writeProp(state, val.body, ref, "body")) {
|
|
913
915
|
state.buf.push(",duplex:\"half\"");
|
|
914
916
|
sep = ",";
|
|
917
|
+
bodySerialized = true;
|
|
915
918
|
} else state.buf.pop();
|
|
916
919
|
}
|
|
917
920
|
let options = "";
|
|
@@ -954,7 +957,7 @@ function writeRequest(state, val, ref) {
|
|
|
954
957
|
sep = ",";
|
|
955
958
|
}
|
|
956
959
|
if (val.referrerPolicy) options += sep + "referrerPolicy:" + quote(val.referrerPolicy, 0);
|
|
957
|
-
state.buf.push(
|
|
960
|
+
state.buf.push(bodySerialized ? options + "})" : options ? ",{" + options + "})" : ")");
|
|
958
961
|
return true;
|
|
959
962
|
}
|
|
960
963
|
function writeResponse(state, val, ref) {
|
|
@@ -1341,6 +1344,9 @@ function getEventHandlerName(name) {
|
|
|
1341
1344
|
function isVoid(value) {
|
|
1342
1345
|
return value == null || value === false;
|
|
1343
1346
|
}
|
|
1347
|
+
function isNotVoid(value) {
|
|
1348
|
+
return value != null && value !== false;
|
|
1349
|
+
}
|
|
1344
1350
|
function normalizeDynamicRenderer(value) {
|
|
1345
1351
|
if (value) {
|
|
1346
1352
|
if (typeof value === "string") return value;
|
|
@@ -2381,7 +2387,7 @@ function _attr_input_value(scopeId, nodeAccessor, value, valueChange) {
|
|
|
2381
2387
|
}
|
|
2382
2388
|
function _attr_input_checked(scopeId, nodeAccessor, checked, checkedChange) {
|
|
2383
2389
|
if (checkedChange) writeControlledScope(0, scopeId, nodeAccessor, void 0, checkedChange);
|
|
2384
|
-
return
|
|
2390
|
+
return isNotVoid(checked) ? " checked" : "";
|
|
2385
2391
|
}
|
|
2386
2392
|
function _attr_input_checkedValue(scopeId, nodeAccessor, checkedValue, checkedValueChange, value) {
|
|
2387
2393
|
const valueAttr = _attr("value", value);
|
|
@@ -2400,8 +2406,8 @@ function getCheckedValueRef(checkedValue) {
|
|
|
2400
2406
|
}
|
|
2401
2407
|
}
|
|
2402
2408
|
function _attr_details_or_dialog_open(scopeId, nodeAccessor, open, openChange) {
|
|
2403
|
-
const normalizedOpen =
|
|
2404
|
-
if (openChange) writeControlledScope(4, scopeId, nodeAccessor, normalizedOpen, openChange);
|
|
2409
|
+
const normalizedOpen = isNotVoid(open);
|
|
2410
|
+
if (openChange) writeControlledScope(4, scopeId, nodeAccessor, normalizedOpen || void 0, openChange);
|
|
2405
2411
|
return normalizedOpen ? " open" : "";
|
|
2406
2412
|
}
|
|
2407
2413
|
function _attr_nonce() {
|
|
@@ -2418,17 +2424,17 @@ function _attrs(data, nodeAccessor, scopeId, tagName) {
|
|
|
2418
2424
|
case "input":
|
|
2419
2425
|
assertExclusiveAttrs(data);
|
|
2420
2426
|
if (data.checkedChange) result += _attr_input_checked(scopeId, nodeAccessor, data.checked, data.checkedChange);
|
|
2421
|
-
else if (
|
|
2427
|
+
else if ("checkedValue" in data || data.checkedValueChange) result += _attr_input_checkedValue(scopeId, nodeAccessor, data.checkedValue, data.checkedValueChange, data.value);
|
|
2422
2428
|
else if (data.valueChange) result += _attr_input_value(scopeId, nodeAccessor, data.value, data.valueChange);
|
|
2423
2429
|
else break;
|
|
2424
2430
|
skip = /^(?:value|checked(?:Value)?)(?:Change)?$|[\s/>"'=]/;
|
|
2425
2431
|
break;
|
|
2426
2432
|
case "select":
|
|
2427
2433
|
case "textarea":
|
|
2428
|
-
if (
|
|
2434
|
+
if ("value" in data || data.valueChange) skip = /^value(?:Change)?$|[\s/>"'=]/;
|
|
2429
2435
|
break;
|
|
2430
2436
|
case "option":
|
|
2431
|
-
if (data
|
|
2437
|
+
if ("value" in data) {
|
|
2432
2438
|
result += _attr_option_value(data.value);
|
|
2433
2439
|
skip = /^value$|[\s/>"'=]/;
|
|
2434
2440
|
}
|
|
@@ -2531,9 +2537,6 @@ function normalizedValueMatches(a, b) {
|
|
|
2531
2537
|
function normalizeStrAttrValue(value) {
|
|
2532
2538
|
return value && value !== true || value === 0 ? value + "" : "";
|
|
2533
2539
|
}
|
|
2534
|
-
function normalizeBoolAttrValue(value) {
|
|
2535
|
-
if (value != null && value !== false) return true;
|
|
2536
|
-
}
|
|
2537
2540
|
//#endregion
|
|
2538
2541
|
//#region src/html/dynamic-tag.ts
|
|
2539
2542
|
const voidElementsReg = /^(?:area|b(?:ase|r)|col|embed|hr|i(?:mg|nput)|link|meta|param|source|track|wbr)$/;
|
package/dist/debug/html.mjs
CHANGED
|
@@ -842,9 +842,10 @@ function writeArrayBuffer(state, val) {
|
|
|
842
842
|
}
|
|
843
843
|
function writeTypedArray(state, val, ref) {
|
|
844
844
|
if (val.byteOffset || state.refs.has(val.buffer)) {
|
|
845
|
+
const needsLength = val.byteOffset + val.byteLength < val.buffer.byteLength;
|
|
845
846
|
state.buf.push("new " + val.constructor.name + "(");
|
|
846
847
|
writeProp(state, val.buffer, ref, "buffer");
|
|
847
|
-
state.buf.push(val.byteOffset ? "," + val.byteOffset + "
|
|
848
|
+
state.buf.push((val.byteOffset || needsLength ? "," + val.byteOffset + (needsLength ? "," + val.length : "") : "") + ")");
|
|
848
849
|
} else {
|
|
849
850
|
state.refs.set(val.buffer, new Reference(ref, "buffer", state.flush, null));
|
|
850
851
|
state.buf.push("new " + val.constructor.name + (val.length === 0 ? "" : "(" + (hasOnlyZeros(val) ? val.length : typedArrayToInitString(val)) + ")"));
|
|
@@ -898,11 +899,12 @@ function writeFormData(state, val) {
|
|
|
898
899
|
sep = ",";
|
|
899
900
|
}
|
|
900
901
|
if (sep === "[") state.buf.push("new FormData");
|
|
901
|
-
else state.buf.push(valStr + "].reduce((f,v,i,a)=>i%2&&f.append(
|
|
902
|
+
else state.buf.push(valStr + "].reduce((f,v,i,a)=>i%2&&f.append(a[i-1],v)||f,new FormData)");
|
|
902
903
|
return true;
|
|
903
904
|
}
|
|
904
905
|
function writeRequest(state, val, ref) {
|
|
905
906
|
let sep = "";
|
|
907
|
+
let bodySerialized = false;
|
|
906
908
|
const hasBody = val.body && !val.bodyUsed && val.duplex === "half";
|
|
907
909
|
state.buf.push("new Request(" + quote(val.url, 0));
|
|
908
910
|
if (hasBody) {
|
|
@@ -910,6 +912,7 @@ function writeRequest(state, val, ref) {
|
|
|
910
912
|
if (writeProp(state, val.body, ref, "body")) {
|
|
911
913
|
state.buf.push(",duplex:\"half\"");
|
|
912
914
|
sep = ",";
|
|
915
|
+
bodySerialized = true;
|
|
913
916
|
} else state.buf.pop();
|
|
914
917
|
}
|
|
915
918
|
let options = "";
|
|
@@ -952,7 +955,7 @@ function writeRequest(state, val, ref) {
|
|
|
952
955
|
sep = ",";
|
|
953
956
|
}
|
|
954
957
|
if (val.referrerPolicy) options += sep + "referrerPolicy:" + quote(val.referrerPolicy, 0);
|
|
955
|
-
state.buf.push(
|
|
958
|
+
state.buf.push(bodySerialized ? options + "})" : options ? ",{" + options + "})" : ")");
|
|
956
959
|
return true;
|
|
957
960
|
}
|
|
958
961
|
function writeResponse(state, val, ref) {
|
|
@@ -1339,6 +1342,9 @@ function getEventHandlerName(name) {
|
|
|
1339
1342
|
function isVoid(value) {
|
|
1340
1343
|
return value == null || value === false;
|
|
1341
1344
|
}
|
|
1345
|
+
function isNotVoid(value) {
|
|
1346
|
+
return value != null && value !== false;
|
|
1347
|
+
}
|
|
1342
1348
|
function normalizeDynamicRenderer(value) {
|
|
1343
1349
|
if (value) {
|
|
1344
1350
|
if (typeof value === "string") return value;
|
|
@@ -2379,7 +2385,7 @@ function _attr_input_value(scopeId, nodeAccessor, value, valueChange) {
|
|
|
2379
2385
|
}
|
|
2380
2386
|
function _attr_input_checked(scopeId, nodeAccessor, checked, checkedChange) {
|
|
2381
2387
|
if (checkedChange) writeControlledScope(0, scopeId, nodeAccessor, void 0, checkedChange);
|
|
2382
|
-
return
|
|
2388
|
+
return isNotVoid(checked) ? " checked" : "";
|
|
2383
2389
|
}
|
|
2384
2390
|
function _attr_input_checkedValue(scopeId, nodeAccessor, checkedValue, checkedValueChange, value) {
|
|
2385
2391
|
const valueAttr = _attr("value", value);
|
|
@@ -2398,8 +2404,8 @@ function getCheckedValueRef(checkedValue) {
|
|
|
2398
2404
|
}
|
|
2399
2405
|
}
|
|
2400
2406
|
function _attr_details_or_dialog_open(scopeId, nodeAccessor, open, openChange) {
|
|
2401
|
-
const normalizedOpen =
|
|
2402
|
-
if (openChange) writeControlledScope(4, scopeId, nodeAccessor, normalizedOpen, openChange);
|
|
2407
|
+
const normalizedOpen = isNotVoid(open);
|
|
2408
|
+
if (openChange) writeControlledScope(4, scopeId, nodeAccessor, normalizedOpen || void 0, openChange);
|
|
2403
2409
|
return normalizedOpen ? " open" : "";
|
|
2404
2410
|
}
|
|
2405
2411
|
function _attr_nonce() {
|
|
@@ -2416,17 +2422,17 @@ function _attrs(data, nodeAccessor, scopeId, tagName) {
|
|
|
2416
2422
|
case "input":
|
|
2417
2423
|
assertExclusiveAttrs(data);
|
|
2418
2424
|
if (data.checkedChange) result += _attr_input_checked(scopeId, nodeAccessor, data.checked, data.checkedChange);
|
|
2419
|
-
else if (
|
|
2425
|
+
else if ("checkedValue" in data || data.checkedValueChange) result += _attr_input_checkedValue(scopeId, nodeAccessor, data.checkedValue, data.checkedValueChange, data.value);
|
|
2420
2426
|
else if (data.valueChange) result += _attr_input_value(scopeId, nodeAccessor, data.value, data.valueChange);
|
|
2421
2427
|
else break;
|
|
2422
2428
|
skip = /^(?:value|checked(?:Value)?)(?:Change)?$|[\s/>"'=]/;
|
|
2423
2429
|
break;
|
|
2424
2430
|
case "select":
|
|
2425
2431
|
case "textarea":
|
|
2426
|
-
if (
|
|
2432
|
+
if ("value" in data || data.valueChange) skip = /^value(?:Change)?$|[\s/>"'=]/;
|
|
2427
2433
|
break;
|
|
2428
2434
|
case "option":
|
|
2429
|
-
if (data
|
|
2435
|
+
if ("value" in data) {
|
|
2430
2436
|
result += _attr_option_value(data.value);
|
|
2431
2437
|
skip = /^value$|[\s/>"'=]/;
|
|
2432
2438
|
}
|
|
@@ -2529,9 +2535,6 @@ function normalizedValueMatches(a, b) {
|
|
|
2529
2535
|
function normalizeStrAttrValue(value) {
|
|
2530
2536
|
return value && value !== true || value === 0 ? value + "" : "";
|
|
2531
2537
|
}
|
|
2532
|
-
function normalizeBoolAttrValue(value) {
|
|
2533
|
-
if (value != null && value !== false) return true;
|
|
2534
|
-
}
|
|
2535
2538
|
//#endregion
|
|
2536
2539
|
//#region src/html/dynamic-tag.ts
|
|
2537
2540
|
const voidElementsReg = /^(?:area|b(?:ase|r)|col|embed|hr|i(?:mg|nput)|link|meta|param|source|track|wbr)$/;
|
package/dist/dom/queue.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export type PendingRender = {
|
|
|
6
6
|
[PendingRenderProp.Scope]: Scope;
|
|
7
7
|
[PendingRenderProp.Signal]: Signal<any, any>;
|
|
8
8
|
[PendingRenderProp.Value]: unknown;
|
|
9
|
+
[PendingRenderProp.Gen]: number;
|
|
10
|
+
[PendingRenderProp.Pending]?: 0 | 1;
|
|
9
11
|
};
|
|
10
12
|
export declare const caughtError: WeakSet<unknown[]>;
|
|
11
13
|
export declare const placeholderShown: WeakSet<unknown[]>;
|