marko 6.0.145 → 6.0.147
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/debug/dom.js +189 -135
- package/dist/debug/dom.mjs +189 -135
- package/dist/debug/html.js +41 -9
- package/dist/debug/html.mjs +41 -9
- package/dist/dom/controllable.d.ts +5 -1
- package/dist/dom.d.ts +1 -1
- package/dist/dom.js +112 -91
- package/dist/dom.mjs +112 -91
- package/dist/html/attrs.d.ts +2 -2
- package/dist/html.js +34 -9
- package/dist/html.mjs +34 -9
- package/dist/translator/index.js +26 -13
- package/package.json +2 -2
- package/tags/id.d.marko +1 -1
- package/tags-html.d.ts +114 -41
package/dist/dom.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { _call } from "./common/helpers";
|
|
|
5
5
|
export { $signal, $signalReset } from "./dom/abort-signal";
|
|
6
6
|
export { compat } from "./dom/compat";
|
|
7
7
|
export { _await_content, _await_promise, _dynamic_tag, _for_in, _for_of, _for_to, _for_until, _if, _resume_dynamic_tag, _try, } from "./dom/control-flow";
|
|
8
|
-
export { _attr_details_or_dialog_open as _attr_details_open, _attr_details_or_dialog_open_script as _attr_details_open_script, _attr_details_or_dialog_open as _attr_dialog_open, _attr_details_or_dialog_open_script as _attr_dialog_open_script, _attr_input_checked, _attr_input_checked_script, _attr_input_checkedValue, _attr_input_checkedValue_script, _attr_input_value, _attr_input_value_script, _attr_select_value, _attr_select_value_script, _attr_textarea_value, _attr_textarea_value_script, } from "./dom/controllable";
|
|
8
|
+
export { _attr_details_or_dialog_open as _attr_details_open, _attr_details_or_dialog_open_default as _attr_details_open_default, _attr_details_or_dialog_open_script as _attr_details_open_script, _attr_details_or_dialog_open as _attr_dialog_open, _attr_details_or_dialog_open_default as _attr_dialog_open_default, _attr_details_or_dialog_open_script as _attr_dialog_open_script, _attr_input_checked, _attr_input_checked_default, _attr_input_checked_script, _attr_input_checkedValue, _attr_input_checkedValue_default, _attr_input_checkedValue_script, _attr_input_value, _attr_input_value_default, _attr_input_value_script, _attr_select_value, _attr_select_value_default, _attr_select_value_script, _attr_input_value as _attr_textarea_value, _attr_input_value_default as _attr_textarea_value_default, _attr_input_value_script as _attr_textarea_value_script, } from "./dom/controllable";
|
|
9
9
|
export { _attr, _attr_class, _attr_class_item, _attr_class_items, _attr_content, _attr_nonce, _attr_style, _attr_style_item, _attr_style_items, _attrs, _attrs_content, _attrs_partial, _attrs_partial_content, _attrs_script, _html, _lifecycle, _text, _text_content, _to_text, } from "./dom/dom";
|
|
10
10
|
export { _on } from "./dom/event";
|
|
11
11
|
export { _enable_catch as _enable_catch, run } from "./dom/queue";
|
package/dist/dom.js
CHANGED
|
@@ -26,22 +26,29 @@ __export(dom_exports, {
|
|
|
26
26
|
_attr_class_items: () => _attr_class_items,
|
|
27
27
|
_attr_content: () => _attr_content,
|
|
28
28
|
_attr_details_open: () => _attr_details_or_dialog_open,
|
|
29
|
+
_attr_details_open_default: () => _attr_details_or_dialog_open_default,
|
|
29
30
|
_attr_details_open_script: () => _attr_details_or_dialog_open_script,
|
|
30
31
|
_attr_dialog_open: () => _attr_details_or_dialog_open,
|
|
32
|
+
_attr_dialog_open_default: () => _attr_details_or_dialog_open_default,
|
|
31
33
|
_attr_dialog_open_script: () => _attr_details_or_dialog_open_script,
|
|
32
34
|
_attr_input_checked: () => _attr_input_checked,
|
|
33
35
|
_attr_input_checkedValue: () => _attr_input_checkedValue,
|
|
36
|
+
_attr_input_checkedValue_default: () => _attr_input_checkedValue_default,
|
|
34
37
|
_attr_input_checkedValue_script: () => _attr_input_checkedValue_script,
|
|
38
|
+
_attr_input_checked_default: () => _attr_input_checked_default,
|
|
35
39
|
_attr_input_checked_script: () => _attr_input_checked_script,
|
|
36
40
|
_attr_input_value: () => _attr_input_value,
|
|
41
|
+
_attr_input_value_default: () => _attr_input_value_default,
|
|
37
42
|
_attr_input_value_script: () => _attr_input_value_script,
|
|
38
43
|
_attr_nonce: () => _attr_nonce,
|
|
39
44
|
_attr_select_value: () => _attr_select_value,
|
|
45
|
+
_attr_select_value_default: () => _attr_select_value_default,
|
|
40
46
|
_attr_select_value_script: () => _attr_select_value_script,
|
|
41
47
|
_attr_style: () => _attr_style,
|
|
42
48
|
_attr_style_item: () => _attr_style_item,
|
|
43
49
|
_attr_style_items: () => _attr_style_items,
|
|
44
50
|
_attr_textarea_value: () => _attr_input_value,
|
|
51
|
+
_attr_textarea_value_default: () => _attr_input_value_default,
|
|
45
52
|
_attr_textarea_value_script: () => _attr_input_value_script,
|
|
46
53
|
_attrs: () => _attrs,
|
|
47
54
|
_attrs_content: () => _attrs_content,
|
|
@@ -641,18 +648,21 @@ function _el(id, accessor) {
|
|
|
641
648
|
}
|
|
642
649
|
|
|
643
650
|
// src/dom/controllable.ts
|
|
651
|
+
var inputType = "", controllableDelegate = createDelegator();
|
|
652
|
+
function _attr_input_checked_default(scope, nodeAccessor, checked) {
|
|
653
|
+
let el = scope[nodeAccessor], normalizedChecked = normalizeBoolProp(checked);
|
|
654
|
+
if (el.defaultChecked !== normalizedChecked) {
|
|
655
|
+
let restoreValue = scope.H ? normalizedChecked : el.checked;
|
|
656
|
+
el.defaultChecked = normalizedChecked, restoreValue !== normalizedChecked && (el.checked = restoreValue);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
644
659
|
function _attr_input_checked(scope, nodeAccessor, checked, checkedChange) {
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
nodeAccessor,
|
|
648
|
-
0 /* InputChecked */,
|
|
649
|
-
normalizeBoolProp(checked),
|
|
650
|
-
checkedChange
|
|
651
|
-
);
|
|
660
|
+
let el = scope[nodeAccessor], normalizedChecked = normalizeBoolProp(checked);
|
|
661
|
+
scope["E" /* ControlledHandler */ + nodeAccessor] = checkedChange, scope["F" /* ControlledType */ + nodeAccessor] = checkedChange ? 0 /* InputChecked */ : 5 /* None */, checkedChange && !scope.H ? el.checked = normalizedChecked : _attr_input_checked_default(scope, nodeAccessor, normalizedChecked);
|
|
652
662
|
}
|
|
653
663
|
function _attr_input_checked_script(scope, nodeAccessor) {
|
|
654
664
|
let el = scope[nodeAccessor];
|
|
655
|
-
|
|
665
|
+
syncControllableFormInput(el, hasCheckboxChanged, () => {
|
|
656
666
|
let checkedChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
657
667
|
if (checkedChange) {
|
|
658
668
|
let newValue = el.checked;
|
|
@@ -660,18 +670,28 @@ function _attr_input_checked_script(scope, nodeAccessor) {
|
|
|
660
670
|
}
|
|
661
671
|
});
|
|
662
672
|
}
|
|
673
|
+
function _attr_input_checkedValue_default(scope, nodeAccessor, checkedValue, value) {
|
|
674
|
+
let multiple = Array.isArray(checkedValue), normalizedValue = normalizeStrProp(value), normalizedCheckedValue = multiple ? checkedValue.map(normalizeStrProp) : normalizeStrProp(checkedValue);
|
|
675
|
+
_attr(scope[nodeAccessor], "value", normalizedValue), _attr_input_checked_default(
|
|
676
|
+
scope,
|
|
677
|
+
nodeAccessor,
|
|
678
|
+
multiple ? normalizedCheckedValue.includes(normalizedValue) : normalizedValue === normalizedCheckedValue
|
|
679
|
+
);
|
|
680
|
+
}
|
|
663
681
|
function _attr_input_checkedValue(scope, nodeAccessor, checkedValue, checkedValueChange, value) {
|
|
664
|
-
scope["G" /* ControlledValue */ + nodeAccessor] = checkedValue
|
|
682
|
+
let el = scope[nodeAccessor], multiple = Array.isArray(checkedValue), normalizedValue = normalizeStrProp(value), normalizedCheckedValue = scope["G" /* ControlledValue */ + nodeAccessor] = multiple ? checkedValue.map(normalizeStrProp) : normalizeStrProp(checkedValue);
|
|
683
|
+
_attr(el, "value", normalizedValue), scope["E" /* ControlledHandler */ + nodeAccessor] = checkedValueChange, scope["F" /* ControlledType */ + nodeAccessor] = checkedValueChange ? 1 /* InputCheckedValue */ : 5 /* None */, checkedValueChange && !scope.H ? el.checked = multiple ? normalizedCheckedValue.includes(normalizedValue) : normalizedValue === normalizedCheckedValue : _attr_input_checkedValue_default(
|
|
665
684
|
scope,
|
|
666
685
|
nodeAccessor,
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
checkedValueChange
|
|
686
|
+
normalizedCheckedValue,
|
|
687
|
+
normalizedValue
|
|
670
688
|
);
|
|
671
689
|
}
|
|
672
690
|
function _attr_input_checkedValue_script(scope, nodeAccessor) {
|
|
673
691
|
let el = scope[nodeAccessor];
|
|
674
|
-
|
|
692
|
+
isResuming && el.defaultChecked && (scope["G" /* ControlledValue */ + nodeAccessor] ? scope["G" /* ControlledValue */ + nodeAccessor].push(
|
|
693
|
+
el.value
|
|
694
|
+
) : scope["G" /* ControlledValue */ + nodeAccessor] = el.value), syncControllableFormInput(el, hasCheckboxChanged, () => {
|
|
675
695
|
let checkedValueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
676
696
|
if (checkedValueChange) {
|
|
677
697
|
let oldValue = scope["G" /* ControlledValue */ + nodeAccessor], newValue = Array.isArray(oldValue) ? updateList(oldValue, el.value, el.checked) : el.checked ? el.value : void 0;
|
|
@@ -686,103 +706,107 @@ function _attr_input_checkedValue_script(scope, nodeAccessor) {
|
|
|
686
706
|
}
|
|
687
707
|
});
|
|
688
708
|
}
|
|
709
|
+
function _attr_input_value_default(scope, nodeAccessor, value) {
|
|
710
|
+
let el = scope[nodeAccessor], normalizedValue = normalizeStrProp(value);
|
|
711
|
+
if (el.defaultValue !== normalizedValue) {
|
|
712
|
+
let restoreValue = scope.H ? normalizedValue : el.value;
|
|
713
|
+
el.defaultValue = normalizedValue, setInputValue(el, restoreValue);
|
|
714
|
+
}
|
|
715
|
+
}
|
|
689
716
|
function _attr_input_value(scope, nodeAccessor, value, valueChange) {
|
|
690
717
|
let el = scope[nodeAccessor], normalizedValue = normalizeStrProp(value);
|
|
691
|
-
scope["E" /* ControlledHandler */ + nodeAccessor] = valueChange,
|
|
718
|
+
scope["E" /* ControlledHandler */ + nodeAccessor] = valueChange, scope["G" /* ControlledValue */ + nodeAccessor] = normalizedValue, scope["F" /* ControlledType */ + nodeAccessor] = valueChange ? 2 /* InputValue */ : 5 /* None */, valueChange && !scope.H ? setInputValue(el, normalizedValue) : _attr_input_value_default(scope, nodeAccessor, normalizedValue);
|
|
692
719
|
}
|
|
693
720
|
function _attr_input_value_script(scope, nodeAccessor) {
|
|
694
721
|
let el = scope[nodeAccessor];
|
|
695
|
-
isResuming && (scope["G" /* ControlledValue */ + nodeAccessor] = el.defaultValue),
|
|
722
|
+
isResuming && (scope["G" /* ControlledValue */ + nodeAccessor] = el.defaultValue), syncControllableFormInput(el, hasValueChanged, (ev) => {
|
|
696
723
|
let valueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
697
|
-
valueChange && (inputType = ev?.inputType, valueChange(el.value), run(),
|
|
698
|
-
el,
|
|
699
|
-
scope["G" /* ControlledValue */ + nodeAccessor]
|
|
700
|
-
), inputType = "");
|
|
724
|
+
valueChange && (inputType = ev?.inputType, valueChange(el.value), run(), setInputValue(el, scope["G" /* ControlledValue */ + nodeAccessor]), inputType = "");
|
|
701
725
|
});
|
|
702
726
|
}
|
|
727
|
+
function setInputValue(el, value) {
|
|
728
|
+
if (el.value !== value) {
|
|
729
|
+
let updatedPosition = resolveCursorPosition(
|
|
730
|
+
inputType,
|
|
731
|
+
el.getRootNode().activeElement === el && el.selectionStart,
|
|
732
|
+
el.value,
|
|
733
|
+
el.value = value
|
|
734
|
+
);
|
|
735
|
+
~updatedPosition && el.setSelectionRange(updatedPosition, updatedPosition);
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
function _attr_select_value_default(scope, nodeAccessor, value) {
|
|
739
|
+
let restoreValue, el = scope[nodeAccessor], existing = !scope.H, multiple = Array.isArray(value), normalizedValue = multiple ? value.map(normalizeStrProp) : normalizeStrProp(value);
|
|
740
|
+
pendingEffects.unshift(() => {
|
|
741
|
+
for (let opt of el.options) {
|
|
742
|
+
let selected = multiple ? normalizedValue.includes(opt.value) : opt.value === normalizedValue;
|
|
743
|
+
opt.defaultSelected !== selected && (existing && (restoreValue ??= getSelectValue(el, multiple)), opt.defaultSelected = selected);
|
|
744
|
+
}
|
|
745
|
+
restoreValue !== void 0 && setSelectValue(el, restoreValue, multiple);
|
|
746
|
+
}, scope);
|
|
747
|
+
}
|
|
703
748
|
function _attr_select_value(scope, nodeAccessor, value, valueChange) {
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
value,
|
|
708
|
-
valueChange
|
|
709
|
-
),
|
|
749
|
+
let el = scope[nodeAccessor], existing = !scope.H, multiple = Array.isArray(value), normalizedValue = scope["G" /* ControlledValue */ + nodeAccessor] = multiple ? value.map(normalizeStrProp) : normalizeStrProp(value);
|
|
750
|
+
scope["E" /* ControlledHandler */ + nodeAccessor] = valueChange, scope["F" /* ControlledType */ + nodeAccessor] = valueChange ? 3 /* SelectValue */ : 5 /* None */, valueChange && existing ? pendingEffects.unshift(
|
|
751
|
+
() => setSelectValue(el, normalizedValue, multiple),
|
|
710
752
|
scope
|
|
711
|
-
);
|
|
753
|
+
) : _attr_select_value_default(scope, nodeAccessor, normalizedValue);
|
|
712
754
|
}
|
|
713
755
|
function _attr_select_value_script(scope, nodeAccessor) {
|
|
714
756
|
let el = scope[nodeAccessor], onChange = () => {
|
|
715
757
|
let valueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
716
758
|
if (valueChange) {
|
|
717
|
-
let
|
|
718
|
-
|
|
719
|
-
) ? Array.from(el.selectedOptions, toValueProp) : el.value;
|
|
720
|
-
setSelectOptions(
|
|
721
|
-
el,
|
|
722
|
-
scope["G" /* ControlledValue */ + nodeAccessor],
|
|
723
|
-
valueChange
|
|
724
|
-
), valueChange(newValue), run();
|
|
759
|
+
let oldValue = scope["G" /* ControlledValue */ + nodeAccessor], multiple = Array.isArray(oldValue), newValue = getSelectValue(el, multiple);
|
|
760
|
+
setSelectValue(el, oldValue, multiple), valueChange(newValue), run();
|
|
725
761
|
}
|
|
726
762
|
};
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
}).observe(el, {
|
|
731
|
-
childList: !0,
|
|
732
|
-
subtree: !0
|
|
733
|
-
}), syncControllable(el, "input", hasSelectChanged, onChange);
|
|
734
|
-
}
|
|
735
|
-
function setSelectOptions(el, value, valueChange) {
|
|
736
|
-
if (Array.isArray(value))
|
|
737
|
-
for (let opt of el.options) {
|
|
738
|
-
let selected = value.includes(opt.value);
|
|
739
|
-
valueChange ? opt.selected = selected : opt.defaultSelected = selected;
|
|
740
|
-
}
|
|
741
|
-
else {
|
|
742
|
-
let normalizedValue = normalizeStrProp(value);
|
|
743
|
-
if (valueChange)
|
|
744
|
-
el.value = normalizedValue;
|
|
745
|
-
else
|
|
763
|
+
if (isResuming)
|
|
764
|
+
if (el.multiple) {
|
|
765
|
+
scope["G" /* ControlledValue */ + nodeAccessor] = [];
|
|
746
766
|
for (let opt of el.options)
|
|
747
|
-
opt.defaultSelected
|
|
748
|
-
|
|
767
|
+
opt.defaultSelected && scope["G" /* ControlledValue */ + nodeAccessor].push(opt.value);
|
|
768
|
+
} else {
|
|
769
|
+
scope["G" /* ControlledValue */ + nodeAccessor] = "";
|
|
770
|
+
for (let opt of el.options)
|
|
771
|
+
if (opt.defaultSelected) {
|
|
772
|
+
scope["G" /* ControlledValue */ + nodeAccessor] = opt.value;
|
|
773
|
+
break;
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
syncControllableFormInput(el, hasSelectChanged, onChange), new MutationObserver(() => {
|
|
777
|
+
let value = scope["G" /* ControlledValue */ + nodeAccessor];
|
|
778
|
+
(Array.isArray(value) ? value.length !== el.selectedOptions.length || value.some((value2, i) => value2 != el.selectedOptions[i].value) : el.value !== value) && onChange();
|
|
779
|
+
}).observe(el, { childList: !0, subtree: !0 });
|
|
780
|
+
}
|
|
781
|
+
function setSelectValue(el, value, multiple) {
|
|
782
|
+
if (multiple)
|
|
783
|
+
for (let opt of el.options)
|
|
784
|
+
opt.selected = value.includes(opt.value);
|
|
785
|
+
else
|
|
786
|
+
el.value = value;
|
|
787
|
+
}
|
|
788
|
+
function getSelectValue(el, multiple) {
|
|
789
|
+
return multiple ? Array.from(el.selectedOptions, (opt) => opt.value) : el.value;
|
|
790
|
+
}
|
|
791
|
+
function _attr_details_or_dialog_open_default(scope, nodeAccessor, open) {
|
|
792
|
+
scope.H && (scope[nodeAccessor].open = normalizeBoolProp(open));
|
|
749
793
|
}
|
|
750
794
|
function _attr_details_or_dialog_open(scope, nodeAccessor, open, openChange) {
|
|
751
|
-
|
|
795
|
+
let normalizedOpen = scope["G" /* ControlledValue */ + nodeAccessor] = normalizeBoolProp(open);
|
|
796
|
+
scope["E" /* ControlledHandler */ + nodeAccessor] = openChange, scope["F" /* ControlledType */ + nodeAccessor] = openChange ? 4 /* DetailsOrDialogOpen */ : 5 /* None */, openChange && !scope.H ? scope[nodeAccessor].open = normalizedOpen : _attr_details_or_dialog_open_default(scope, nodeAccessor, normalizedOpen);
|
|
752
797
|
}
|
|
753
798
|
function _attr_details_or_dialog_open_script(scope, nodeAccessor) {
|
|
754
|
-
let el = scope[nodeAccessor]
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
el.
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
let openChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
761
|
-
if (openChange && hasChanged()) {
|
|
762
|
-
let newValue = el.open;
|
|
763
|
-
el.open = !newValue, openChange(newValue), run();
|
|
764
|
-
}
|
|
799
|
+
let el = scope[nodeAccessor];
|
|
800
|
+
new MutationObserver(() => {
|
|
801
|
+
let openChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
802
|
+
if (openChange && el.open === !scope["G" /* ControlledValue */ + nodeAccessor]) {
|
|
803
|
+
let newValue = el.open;
|
|
804
|
+
el.open = !newValue, openChange(newValue), run();
|
|
765
805
|
}
|
|
766
|
-
);
|
|
767
|
-
}
|
|
768
|
-
var inputType = "";
|
|
769
|
-
function setValueAndUpdateSelection(el, value) {
|
|
770
|
-
if (el.value !== value) {
|
|
771
|
-
let updatedPosition = resolveCursorPosition(
|
|
772
|
-
inputType,
|
|
773
|
-
el.getRootNode().activeElement === el && el.selectionStart,
|
|
774
|
-
el.value,
|
|
775
|
-
el.value = value
|
|
776
|
-
);
|
|
777
|
-
~updatedPosition && el.setSelectionRange(updatedPosition, updatedPosition);
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
function setCheckboxValue(scope, nodeAccessor, type, checked, checkedChange) {
|
|
781
|
-
scope["E" /* ControlledHandler */ + nodeAccessor] = checkedChange, checkedChange ? (scope["F" /* ControlledType */ + nodeAccessor] = type, scope[nodeAccessor].checked = checked) : (scope["F" /* ControlledType */ + nodeAccessor] = 5 /* None */, scope[nodeAccessor].defaultChecked = checked);
|
|
806
|
+
}).observe(el, { attributes: !0, attributeFilter: ["open"] });
|
|
782
807
|
}
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
el._ || (controllableDelegate(el, event, handleChange), el.form && controllableDelegate(el.form, "reset", handleFormReset), isResuming && hasChanged(el) && queueMicrotask(onChange)), el._ = onChange;
|
|
808
|
+
function syncControllableFormInput(el, hasChanged, onChange) {
|
|
809
|
+
el._ = onChange, controllableDelegate(el, "input", handleChange), el.form && controllableDelegate(el.form, "reset", handleFormReset), isResuming && hasChanged(el) && queueMicrotask(onChange);
|
|
786
810
|
}
|
|
787
811
|
function handleChange(ev) {
|
|
788
812
|
ev.target._?.(ev);
|
|
@@ -821,9 +845,6 @@ function updateList(arr, val, push2) {
|
|
|
821
845
|
let index = arr.indexOf(val);
|
|
822
846
|
return (push2 ? !~index && [...arr, val] : ~index && arr.slice(0, index).concat(arr.slice(index + 1))) || arr;
|
|
823
847
|
}
|
|
824
|
-
function toValueProp(it) {
|
|
825
|
-
return it.value;
|
|
826
|
-
}
|
|
827
848
|
|
|
828
849
|
// src/dom/dom.ts
|
|
829
850
|
function _to_text(value) {
|
|
@@ -853,7 +874,7 @@ function _attr_style_items(element, items) {
|
|
|
853
874
|
_attr_style_item(element, key, items[key]);
|
|
854
875
|
}
|
|
855
876
|
function _attr_style_item(element, name, value) {
|
|
856
|
-
element.style.setProperty(name, value
|
|
877
|
+
element.style.setProperty(name, _to_text(value));
|
|
857
878
|
}
|
|
858
879
|
function _attr_nonce(scope, nodeAccessor) {
|
|
859
880
|
_attr(scope[nodeAccessor], "nonce", scope.$.cspNonce);
|
|
@@ -999,7 +1020,7 @@ function _attrs_script(scope, nodeAccessor) {
|
|
|
999
1020
|
}
|
|
1000
1021
|
function _html(scope, value, accessor) {
|
|
1001
1022
|
let firstChild = scope[accessor], parentNode = firstChild.parentNode, lastChild = scope["H" /* DynamicHTMLLastChild */ + accessor] || firstChild, newContent = parseHTML(
|
|
1002
|
-
value
|
|
1023
|
+
_to_text(value),
|
|
1003
1024
|
parentNode.namespaceURI
|
|
1004
1025
|
);
|
|
1005
1026
|
insertChildNodes(
|
package/dist/dom.mjs
CHANGED
|
@@ -537,18 +537,21 @@ function _el(id, accessor) {
|
|
|
537
537
|
}
|
|
538
538
|
|
|
539
539
|
// src/dom/controllable.ts
|
|
540
|
+
var inputType = "", controllableDelegate = createDelegator();
|
|
541
|
+
function _attr_input_checked_default(scope, nodeAccessor, checked) {
|
|
542
|
+
let el = scope[nodeAccessor], normalizedChecked = normalizeBoolProp(checked);
|
|
543
|
+
if (el.defaultChecked !== normalizedChecked) {
|
|
544
|
+
let restoreValue = scope.H ? normalizedChecked : el.checked;
|
|
545
|
+
el.defaultChecked = normalizedChecked, restoreValue !== normalizedChecked && (el.checked = restoreValue);
|
|
546
|
+
}
|
|
547
|
+
}
|
|
540
548
|
function _attr_input_checked(scope, nodeAccessor, checked, checkedChange) {
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
nodeAccessor,
|
|
544
|
-
0 /* InputChecked */,
|
|
545
|
-
normalizeBoolProp(checked),
|
|
546
|
-
checkedChange
|
|
547
|
-
);
|
|
549
|
+
let el = scope[nodeAccessor], normalizedChecked = normalizeBoolProp(checked);
|
|
550
|
+
scope["E" /* ControlledHandler */ + nodeAccessor] = checkedChange, scope["F" /* ControlledType */ + nodeAccessor] = checkedChange ? 0 /* InputChecked */ : 5 /* None */, checkedChange && !scope.H ? el.checked = normalizedChecked : _attr_input_checked_default(scope, nodeAccessor, normalizedChecked);
|
|
548
551
|
}
|
|
549
552
|
function _attr_input_checked_script(scope, nodeAccessor) {
|
|
550
553
|
let el = scope[nodeAccessor];
|
|
551
|
-
|
|
554
|
+
syncControllableFormInput(el, hasCheckboxChanged, () => {
|
|
552
555
|
let checkedChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
553
556
|
if (checkedChange) {
|
|
554
557
|
let newValue = el.checked;
|
|
@@ -556,18 +559,28 @@ function _attr_input_checked_script(scope, nodeAccessor) {
|
|
|
556
559
|
}
|
|
557
560
|
});
|
|
558
561
|
}
|
|
562
|
+
function _attr_input_checkedValue_default(scope, nodeAccessor, checkedValue, value) {
|
|
563
|
+
let multiple = Array.isArray(checkedValue), normalizedValue = normalizeStrProp(value), normalizedCheckedValue = multiple ? checkedValue.map(normalizeStrProp) : normalizeStrProp(checkedValue);
|
|
564
|
+
_attr(scope[nodeAccessor], "value", normalizedValue), _attr_input_checked_default(
|
|
565
|
+
scope,
|
|
566
|
+
nodeAccessor,
|
|
567
|
+
multiple ? normalizedCheckedValue.includes(normalizedValue) : normalizedValue === normalizedCheckedValue
|
|
568
|
+
);
|
|
569
|
+
}
|
|
559
570
|
function _attr_input_checkedValue(scope, nodeAccessor, checkedValue, checkedValueChange, value) {
|
|
560
|
-
scope["G" /* ControlledValue */ + nodeAccessor] = checkedValue
|
|
571
|
+
let el = scope[nodeAccessor], multiple = Array.isArray(checkedValue), normalizedValue = normalizeStrProp(value), normalizedCheckedValue = scope["G" /* ControlledValue */ + nodeAccessor] = multiple ? checkedValue.map(normalizeStrProp) : normalizeStrProp(checkedValue);
|
|
572
|
+
_attr(el, "value", normalizedValue), scope["E" /* ControlledHandler */ + nodeAccessor] = checkedValueChange, scope["F" /* ControlledType */ + nodeAccessor] = checkedValueChange ? 1 /* InputCheckedValue */ : 5 /* None */, checkedValueChange && !scope.H ? el.checked = multiple ? normalizedCheckedValue.includes(normalizedValue) : normalizedValue === normalizedCheckedValue : _attr_input_checkedValue_default(
|
|
561
573
|
scope,
|
|
562
574
|
nodeAccessor,
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
checkedValueChange
|
|
575
|
+
normalizedCheckedValue,
|
|
576
|
+
normalizedValue
|
|
566
577
|
);
|
|
567
578
|
}
|
|
568
579
|
function _attr_input_checkedValue_script(scope, nodeAccessor) {
|
|
569
580
|
let el = scope[nodeAccessor];
|
|
570
|
-
|
|
581
|
+
isResuming && el.defaultChecked && (scope["G" /* ControlledValue */ + nodeAccessor] ? scope["G" /* ControlledValue */ + nodeAccessor].push(
|
|
582
|
+
el.value
|
|
583
|
+
) : scope["G" /* ControlledValue */ + nodeAccessor] = el.value), syncControllableFormInput(el, hasCheckboxChanged, () => {
|
|
571
584
|
let checkedValueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
572
585
|
if (checkedValueChange) {
|
|
573
586
|
let oldValue = scope["G" /* ControlledValue */ + nodeAccessor], newValue = Array.isArray(oldValue) ? updateList(oldValue, el.value, el.checked) : el.checked ? el.value : void 0;
|
|
@@ -582,103 +595,107 @@ function _attr_input_checkedValue_script(scope, nodeAccessor) {
|
|
|
582
595
|
}
|
|
583
596
|
});
|
|
584
597
|
}
|
|
598
|
+
function _attr_input_value_default(scope, nodeAccessor, value) {
|
|
599
|
+
let el = scope[nodeAccessor], normalizedValue = normalizeStrProp(value);
|
|
600
|
+
if (el.defaultValue !== normalizedValue) {
|
|
601
|
+
let restoreValue = scope.H ? normalizedValue : el.value;
|
|
602
|
+
el.defaultValue = normalizedValue, setInputValue(el, restoreValue);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
585
605
|
function _attr_input_value(scope, nodeAccessor, value, valueChange) {
|
|
586
606
|
let el = scope[nodeAccessor], normalizedValue = normalizeStrProp(value);
|
|
587
|
-
scope["E" /* ControlledHandler */ + nodeAccessor] = valueChange,
|
|
607
|
+
scope["E" /* ControlledHandler */ + nodeAccessor] = valueChange, scope["G" /* ControlledValue */ + nodeAccessor] = normalizedValue, scope["F" /* ControlledType */ + nodeAccessor] = valueChange ? 2 /* InputValue */ : 5 /* None */, valueChange && !scope.H ? setInputValue(el, normalizedValue) : _attr_input_value_default(scope, nodeAccessor, normalizedValue);
|
|
588
608
|
}
|
|
589
609
|
function _attr_input_value_script(scope, nodeAccessor) {
|
|
590
610
|
let el = scope[nodeAccessor];
|
|
591
|
-
isResuming && (scope["G" /* ControlledValue */ + nodeAccessor] = el.defaultValue),
|
|
611
|
+
isResuming && (scope["G" /* ControlledValue */ + nodeAccessor] = el.defaultValue), syncControllableFormInput(el, hasValueChanged, (ev) => {
|
|
592
612
|
let valueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
593
|
-
valueChange && (inputType = ev?.inputType, valueChange(el.value), run(),
|
|
594
|
-
el,
|
|
595
|
-
scope["G" /* ControlledValue */ + nodeAccessor]
|
|
596
|
-
), inputType = "");
|
|
613
|
+
valueChange && (inputType = ev?.inputType, valueChange(el.value), run(), setInputValue(el, scope["G" /* ControlledValue */ + nodeAccessor]), inputType = "");
|
|
597
614
|
});
|
|
598
615
|
}
|
|
616
|
+
function setInputValue(el, value) {
|
|
617
|
+
if (el.value !== value) {
|
|
618
|
+
let updatedPosition = resolveCursorPosition(
|
|
619
|
+
inputType,
|
|
620
|
+
el.getRootNode().activeElement === el && el.selectionStart,
|
|
621
|
+
el.value,
|
|
622
|
+
el.value = value
|
|
623
|
+
);
|
|
624
|
+
~updatedPosition && el.setSelectionRange(updatedPosition, updatedPosition);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
function _attr_select_value_default(scope, nodeAccessor, value) {
|
|
628
|
+
let restoreValue, el = scope[nodeAccessor], existing = !scope.H, multiple = Array.isArray(value), normalizedValue = multiple ? value.map(normalizeStrProp) : normalizeStrProp(value);
|
|
629
|
+
pendingEffects.unshift(() => {
|
|
630
|
+
for (let opt of el.options) {
|
|
631
|
+
let selected = multiple ? normalizedValue.includes(opt.value) : opt.value === normalizedValue;
|
|
632
|
+
opt.defaultSelected !== selected && (existing && (restoreValue ??= getSelectValue(el, multiple)), opt.defaultSelected = selected);
|
|
633
|
+
}
|
|
634
|
+
restoreValue !== void 0 && setSelectValue(el, restoreValue, multiple);
|
|
635
|
+
}, scope);
|
|
636
|
+
}
|
|
599
637
|
function _attr_select_value(scope, nodeAccessor, value, valueChange) {
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
value,
|
|
604
|
-
valueChange
|
|
605
|
-
),
|
|
638
|
+
let el = scope[nodeAccessor], existing = !scope.H, multiple = Array.isArray(value), normalizedValue = scope["G" /* ControlledValue */ + nodeAccessor] = multiple ? value.map(normalizeStrProp) : normalizeStrProp(value);
|
|
639
|
+
scope["E" /* ControlledHandler */ + nodeAccessor] = valueChange, scope["F" /* ControlledType */ + nodeAccessor] = valueChange ? 3 /* SelectValue */ : 5 /* None */, valueChange && existing ? pendingEffects.unshift(
|
|
640
|
+
() => setSelectValue(el, normalizedValue, multiple),
|
|
606
641
|
scope
|
|
607
|
-
);
|
|
642
|
+
) : _attr_select_value_default(scope, nodeAccessor, normalizedValue);
|
|
608
643
|
}
|
|
609
644
|
function _attr_select_value_script(scope, nodeAccessor) {
|
|
610
645
|
let el = scope[nodeAccessor], onChange = () => {
|
|
611
646
|
let valueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
612
647
|
if (valueChange) {
|
|
613
|
-
let
|
|
614
|
-
|
|
615
|
-
) ? Array.from(el.selectedOptions, toValueProp) : el.value;
|
|
616
|
-
setSelectOptions(
|
|
617
|
-
el,
|
|
618
|
-
scope["G" /* ControlledValue */ + nodeAccessor],
|
|
619
|
-
valueChange
|
|
620
|
-
), valueChange(newValue), run();
|
|
648
|
+
let oldValue = scope["G" /* ControlledValue */ + nodeAccessor], multiple = Array.isArray(oldValue), newValue = getSelectValue(el, multiple);
|
|
649
|
+
setSelectValue(el, oldValue, multiple), valueChange(newValue), run();
|
|
621
650
|
}
|
|
622
651
|
};
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
}).observe(el, {
|
|
627
|
-
childList: !0,
|
|
628
|
-
subtree: !0
|
|
629
|
-
}), syncControllable(el, "input", hasSelectChanged, onChange);
|
|
630
|
-
}
|
|
631
|
-
function setSelectOptions(el, value, valueChange) {
|
|
632
|
-
if (Array.isArray(value))
|
|
633
|
-
for (let opt of el.options) {
|
|
634
|
-
let selected = value.includes(opt.value);
|
|
635
|
-
valueChange ? opt.selected = selected : opt.defaultSelected = selected;
|
|
636
|
-
}
|
|
637
|
-
else {
|
|
638
|
-
let normalizedValue = normalizeStrProp(value);
|
|
639
|
-
if (valueChange)
|
|
640
|
-
el.value = normalizedValue;
|
|
641
|
-
else
|
|
652
|
+
if (isResuming)
|
|
653
|
+
if (el.multiple) {
|
|
654
|
+
scope["G" /* ControlledValue */ + nodeAccessor] = [];
|
|
642
655
|
for (let opt of el.options)
|
|
643
|
-
opt.defaultSelected
|
|
644
|
-
|
|
656
|
+
opt.defaultSelected && scope["G" /* ControlledValue */ + nodeAccessor].push(opt.value);
|
|
657
|
+
} else {
|
|
658
|
+
scope["G" /* ControlledValue */ + nodeAccessor] = "";
|
|
659
|
+
for (let opt of el.options)
|
|
660
|
+
if (opt.defaultSelected) {
|
|
661
|
+
scope["G" /* ControlledValue */ + nodeAccessor] = opt.value;
|
|
662
|
+
break;
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
syncControllableFormInput(el, hasSelectChanged, onChange), new MutationObserver(() => {
|
|
666
|
+
let value = scope["G" /* ControlledValue */ + nodeAccessor];
|
|
667
|
+
(Array.isArray(value) ? value.length !== el.selectedOptions.length || value.some((value2, i) => value2 != el.selectedOptions[i].value) : el.value !== value) && onChange();
|
|
668
|
+
}).observe(el, { childList: !0, subtree: !0 });
|
|
669
|
+
}
|
|
670
|
+
function setSelectValue(el, value, multiple) {
|
|
671
|
+
if (multiple)
|
|
672
|
+
for (let opt of el.options)
|
|
673
|
+
opt.selected = value.includes(opt.value);
|
|
674
|
+
else
|
|
675
|
+
el.value = value;
|
|
676
|
+
}
|
|
677
|
+
function getSelectValue(el, multiple) {
|
|
678
|
+
return multiple ? Array.from(el.selectedOptions, (opt) => opt.value) : el.value;
|
|
679
|
+
}
|
|
680
|
+
function _attr_details_or_dialog_open_default(scope, nodeAccessor, open) {
|
|
681
|
+
scope.H && (scope[nodeAccessor].open = normalizeBoolProp(open));
|
|
645
682
|
}
|
|
646
683
|
function _attr_details_or_dialog_open(scope, nodeAccessor, open, openChange) {
|
|
647
|
-
|
|
684
|
+
let normalizedOpen = scope["G" /* ControlledValue */ + nodeAccessor] = normalizeBoolProp(open);
|
|
685
|
+
scope["E" /* ControlledHandler */ + nodeAccessor] = openChange, scope["F" /* ControlledType */ + nodeAccessor] = openChange ? 4 /* DetailsOrDialogOpen */ : 5 /* None */, openChange && !scope.H ? scope[nodeAccessor].open = normalizedOpen : _attr_details_or_dialog_open_default(scope, nodeAccessor, normalizedOpen);
|
|
648
686
|
}
|
|
649
687
|
function _attr_details_or_dialog_open_script(scope, nodeAccessor) {
|
|
650
|
-
let el = scope[nodeAccessor]
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
el.
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
let openChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
657
|
-
if (openChange && hasChanged()) {
|
|
658
|
-
let newValue = el.open;
|
|
659
|
-
el.open = !newValue, openChange(newValue), run();
|
|
660
|
-
}
|
|
688
|
+
let el = scope[nodeAccessor];
|
|
689
|
+
new MutationObserver(() => {
|
|
690
|
+
let openChange = scope["E" /* ControlledHandler */ + nodeAccessor];
|
|
691
|
+
if (openChange && el.open === !scope["G" /* ControlledValue */ + nodeAccessor]) {
|
|
692
|
+
let newValue = el.open;
|
|
693
|
+
el.open = !newValue, openChange(newValue), run();
|
|
661
694
|
}
|
|
662
|
-
);
|
|
663
|
-
}
|
|
664
|
-
var inputType = "";
|
|
665
|
-
function setValueAndUpdateSelection(el, value) {
|
|
666
|
-
if (el.value !== value) {
|
|
667
|
-
let updatedPosition = resolveCursorPosition(
|
|
668
|
-
inputType,
|
|
669
|
-
el.getRootNode().activeElement === el && el.selectionStart,
|
|
670
|
-
el.value,
|
|
671
|
-
el.value = value
|
|
672
|
-
);
|
|
673
|
-
~updatedPosition && el.setSelectionRange(updatedPosition, updatedPosition);
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
function setCheckboxValue(scope, nodeAccessor, type, checked, checkedChange) {
|
|
677
|
-
scope["E" /* ControlledHandler */ + nodeAccessor] = checkedChange, checkedChange ? (scope["F" /* ControlledType */ + nodeAccessor] = type, scope[nodeAccessor].checked = checked) : (scope["F" /* ControlledType */ + nodeAccessor] = 5 /* None */, scope[nodeAccessor].defaultChecked = checked);
|
|
695
|
+
}).observe(el, { attributes: !0, attributeFilter: ["open"] });
|
|
678
696
|
}
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
el._ || (controllableDelegate(el, event, handleChange), el.form && controllableDelegate(el.form, "reset", handleFormReset), isResuming && hasChanged(el) && queueMicrotask(onChange)), el._ = onChange;
|
|
697
|
+
function syncControllableFormInput(el, hasChanged, onChange) {
|
|
698
|
+
el._ = onChange, controllableDelegate(el, "input", handleChange), el.form && controllableDelegate(el.form, "reset", handleFormReset), isResuming && hasChanged(el) && queueMicrotask(onChange);
|
|
682
699
|
}
|
|
683
700
|
function handleChange(ev) {
|
|
684
701
|
ev.target._?.(ev);
|
|
@@ -717,9 +734,6 @@ function updateList(arr, val, push2) {
|
|
|
717
734
|
let index = arr.indexOf(val);
|
|
718
735
|
return (push2 ? !~index && [...arr, val] : ~index && arr.slice(0, index).concat(arr.slice(index + 1))) || arr;
|
|
719
736
|
}
|
|
720
|
-
function toValueProp(it) {
|
|
721
|
-
return it.value;
|
|
722
|
-
}
|
|
723
737
|
|
|
724
738
|
// src/dom/dom.ts
|
|
725
739
|
function _to_text(value) {
|
|
@@ -749,7 +763,7 @@ function _attr_style_items(element, items) {
|
|
|
749
763
|
_attr_style_item(element, key, items[key]);
|
|
750
764
|
}
|
|
751
765
|
function _attr_style_item(element, name, value) {
|
|
752
|
-
element.style.setProperty(name, value
|
|
766
|
+
element.style.setProperty(name, _to_text(value));
|
|
753
767
|
}
|
|
754
768
|
function _attr_nonce(scope, nodeAccessor) {
|
|
755
769
|
_attr(scope[nodeAccessor], "nonce", scope.$.cspNonce);
|
|
@@ -895,7 +909,7 @@ function _attrs_script(scope, nodeAccessor) {
|
|
|
895
909
|
}
|
|
896
910
|
function _html(scope, value, accessor) {
|
|
897
911
|
let firstChild = scope[accessor], parentNode = firstChild.parentNode, lastChild = scope["H" /* DynamicHTMLLastChild */ + accessor] || firstChild, newContent = parseHTML(
|
|
898
|
-
value
|
|
912
|
+
_to_text(value),
|
|
899
913
|
parentNode.namespaceURI
|
|
900
914
|
);
|
|
901
915
|
insertChildNodes(
|
|
@@ -1563,22 +1577,29 @@ export {
|
|
|
1563
1577
|
_attr_class_items,
|
|
1564
1578
|
_attr_content,
|
|
1565
1579
|
_attr_details_or_dialog_open as _attr_details_open,
|
|
1580
|
+
_attr_details_or_dialog_open_default as _attr_details_open_default,
|
|
1566
1581
|
_attr_details_or_dialog_open_script as _attr_details_open_script,
|
|
1567
1582
|
_attr_details_or_dialog_open as _attr_dialog_open,
|
|
1583
|
+
_attr_details_or_dialog_open_default as _attr_dialog_open_default,
|
|
1568
1584
|
_attr_details_or_dialog_open_script as _attr_dialog_open_script,
|
|
1569
1585
|
_attr_input_checked,
|
|
1570
1586
|
_attr_input_checkedValue,
|
|
1587
|
+
_attr_input_checkedValue_default,
|
|
1571
1588
|
_attr_input_checkedValue_script,
|
|
1589
|
+
_attr_input_checked_default,
|
|
1572
1590
|
_attr_input_checked_script,
|
|
1573
1591
|
_attr_input_value,
|
|
1592
|
+
_attr_input_value_default,
|
|
1574
1593
|
_attr_input_value_script,
|
|
1575
1594
|
_attr_nonce,
|
|
1576
1595
|
_attr_select_value,
|
|
1596
|
+
_attr_select_value_default,
|
|
1577
1597
|
_attr_select_value_script,
|
|
1578
1598
|
_attr_style,
|
|
1579
1599
|
_attr_style_item,
|
|
1580
1600
|
_attr_style_items,
|
|
1581
1601
|
_attr_input_value as _attr_textarea_value,
|
|
1602
|
+
_attr_input_value_default as _attr_textarea_value_default,
|
|
1582
1603
|
_attr_input_value_script as _attr_textarea_value_script,
|
|
1583
1604
|
_attrs,
|
|
1584
1605
|
_attrs_content,
|
package/dist/html/attrs.d.ts
CHANGED
|
@@ -5,9 +5,9 @@ export declare function _attr_option_value(value: unknown): string;
|
|
|
5
5
|
export declare function _attr_select_value(scopeId: number, nodeAccessor: Accessor, value: unknown, valueChange: unknown, content?: () => void): void;
|
|
6
6
|
export declare function _attr_textarea_value(scopeId: number, nodeAccessor: Accessor, value: unknown, valueChange: unknown): string;
|
|
7
7
|
export declare function _attr_input_value(scopeId: number, nodeAccessor: Accessor, value: unknown, valueChange: unknown): string;
|
|
8
|
-
export declare function _attr_input_checked(scopeId: number, nodeAccessor: Accessor, checked: unknown, checkedChange: unknown):
|
|
8
|
+
export declare function _attr_input_checked(scopeId: number, nodeAccessor: Accessor, checked: unknown, checkedChange: unknown): "" | " checked";
|
|
9
9
|
export declare function _attr_input_checkedValue(scopeId: number, nodeAccessor: Accessor, checkedValue: unknown, checkedValueChange: unknown, value: unknown): string;
|
|
10
|
-
export declare function _attr_details_or_dialog_open(scopeId: number, nodeAccessor: Accessor, open: unknown, openChange: unknown):
|
|
10
|
+
export declare function _attr_details_or_dialog_open(scopeId: number, nodeAccessor: Accessor, open: unknown, openChange: unknown): "" | " open";
|
|
11
11
|
export declare function _attr_nonce(): string;
|
|
12
12
|
export declare function _attr(name: string, value: unknown): string;
|
|
13
13
|
export declare function _attrs(data: Record<string, unknown>, nodeAccessor: Accessor, scopeId: number, tagName: string): string;
|