marko 6.0.146 → 6.0.148

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/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
- setCheckboxValue(
646
- scope,
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
- syncControllable(el, "input", hasCheckboxChanged, () => {
665
+ syncControllableFormInput(el, hasCheckboxChanged, () => {
656
666
  let checkedChange = scope["E" /* ControlledHandler */ + nodeAccessor];
657
667
  if (checkedChange) {
658
668
  let newValue = el.checked;
@@ -660,21 +670,28 @@ function _attr_input_checked_script(scope, nodeAccessor) {
660
670
  }
661
671
  });
662
672
  }
663
- function _attr_input_checkedValue(scope, nodeAccessor, checkedValue, checkedValueChange, value) {
673
+ function _attr_input_checkedValue_default(scope, nodeAccessor, checkedValue, value) {
664
674
  let multiple = Array.isArray(checkedValue), normalizedValue = normalizeStrProp(value), normalizedCheckedValue = multiple ? checkedValue.map(normalizeStrProp) : normalizeStrProp(checkedValue);
665
- scope["G" /* ControlledValue */ + nodeAccessor] = normalizedCheckedValue, _attr(scope[nodeAccessor], "value", normalizedValue), setCheckboxValue(
675
+ _attr(scope[nodeAccessor], "value", normalizedValue), _attr_input_checked_default(
666
676
  scope,
667
677
  nodeAccessor,
668
- 1 /* InputCheckedValue */,
669
- multiple ? normalizedCheckedValue.includes(normalizedValue) : normalizedValue === normalizedCheckedValue,
670
- checkedValueChange
678
+ multiple ? normalizedCheckedValue.includes(normalizedValue) : normalizedValue === normalizedCheckedValue
679
+ );
680
+ }
681
+ function _attr_input_checkedValue(scope, nodeAccessor, checkedValue, checkedValueChange, value) {
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(
684
+ scope,
685
+ nodeAccessor,
686
+ normalizedCheckedValue,
687
+ normalizedValue
671
688
  );
672
689
  }
673
690
  function _attr_input_checkedValue_script(scope, nodeAccessor) {
674
691
  let el = scope[nodeAccessor];
675
692
  isResuming && el.defaultChecked && (scope["G" /* ControlledValue */ + nodeAccessor] ? scope["G" /* ControlledValue */ + nodeAccessor].push(
676
693
  el.value
677
- ) : scope["G" /* ControlledValue */ + nodeAccessor] = el.value), syncControllable(el, "input", hasCheckboxChanged, () => {
694
+ ) : scope["G" /* ControlledValue */ + nodeAccessor] = el.value), syncControllableFormInput(el, hasCheckboxChanged, () => {
678
695
  let checkedValueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
679
696
  if (checkedValueChange) {
680
697
  let oldValue = scope["G" /* ControlledValue */ + nodeAccessor], newValue = Array.isArray(oldValue) ? updateList(oldValue, el.value, el.checked) : el.checked ? el.value : void 0;
@@ -689,37 +706,58 @@ function _attr_input_checkedValue_script(scope, nodeAccessor) {
689
706
  }
690
707
  });
691
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
+ }
692
716
  function _attr_input_value(scope, nodeAccessor, value, valueChange) {
693
717
  let el = scope[nodeAccessor], normalizedValue = normalizeStrProp(value);
694
- scope["E" /* ControlledHandler */ + nodeAccessor] = valueChange, valueChange ? (scope["F" /* ControlledType */ + nodeAccessor] = 2 /* InputValue */, scope["G" /* ControlledValue */ + nodeAccessor] = normalizedValue, el.isConnected ? setValueAndUpdateSelection(el, normalizedValue) : el.defaultValue = normalizedValue) : (scope["F" /* ControlledType */ + nodeAccessor] = 5 /* None */, el.defaultValue = normalizedValue);
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);
695
719
  }
696
720
  function _attr_input_value_script(scope, nodeAccessor) {
697
721
  let el = scope[nodeAccessor];
698
- isResuming && (scope["G" /* ControlledValue */ + nodeAccessor] = el.defaultValue), syncControllable(el, "input", hasValueChanged, (ev) => {
722
+ isResuming && (scope["G" /* ControlledValue */ + nodeAccessor] = el.defaultValue), syncControllableFormInput(el, hasValueChanged, (ev) => {
699
723
  let valueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
700
- valueChange && (inputType = ev?.inputType, valueChange(el.value), run(), setValueAndUpdateSelection(
701
- el,
702
- scope["G" /* ControlledValue */ + nodeAccessor]
703
- ), inputType = "");
724
+ valueChange && (inputType = ev?.inputType, valueChange(el.value), run(), setInputValue(el, scope["G" /* ControlledValue */ + nodeAccessor]), inputType = "");
704
725
  });
705
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
+ }
706
748
  function _attr_select_value(scope, nodeAccessor, value, valueChange) {
707
- let normalizedValue = Array.isArray(value) ? value.map(normalizeStrProp) : normalizeStrProp(value);
708
- scope["E" /* ControlledHandler */ + nodeAccessor] = valueChange, valueChange ? (scope["F" /* ControlledType */ + nodeAccessor] = 3 /* SelectValue */, scope["G" /* ControlledValue */ + nodeAccessor] = normalizedValue) : scope["F" /* ControlledType */ + nodeAccessor] = 5 /* None */, pendingEffects.unshift(
709
- () => setSelectOptions(
710
- scope[nodeAccessor],
711
- normalizedValue,
712
- valueChange
713
- ),
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),
714
752
  scope
715
- );
753
+ ) : _attr_select_value_default(scope, nodeAccessor, normalizedValue);
716
754
  }
717
755
  function _attr_select_value_script(scope, nodeAccessor) {
718
756
  let el = scope[nodeAccessor], onChange = () => {
719
757
  let valueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
720
758
  if (valueChange) {
721
- let oldValue = scope["G" /* ControlledValue */ + nodeAccessor], newValue = Array.isArray(oldValue) ? Array.from(el.selectedOptions, toValueProp) : el.value;
722
- setSelectOptions(el, oldValue, valueChange), 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();
723
761
  }
724
762
  };
725
763
  if (isResuming)
@@ -735,62 +773,40 @@ function _attr_select_value_script(scope, nodeAccessor) {
735
773
  break;
736
774
  }
737
775
  }
738
- el._ || new MutationObserver(() => {
776
+ syncControllableFormInput(el, hasSelectChanged, onChange), new MutationObserver(() => {
739
777
  let value = scope["G" /* ControlledValue */ + nodeAccessor];
740
778
  (Array.isArray(value) ? value.length !== el.selectedOptions.length || value.some((value2, i) => value2 != el.selectedOptions[i].value) : el.value !== value) && onChange();
741
- }).observe(el, {
742
- childList: !0,
743
- subtree: !0
744
- }), syncControllable(el, "input", hasSelectChanged, onChange);
779
+ }).observe(el, { childList: !0, subtree: !0 });
745
780
  }
746
- function setSelectOptions(el, value, valueChange) {
747
- if (Array.isArray(value))
748
- for (let opt of el.options) {
749
- let selected = value.includes(opt.value);
750
- valueChange ? opt.selected = selected : opt.defaultSelected = selected;
751
- }
752
- else if (valueChange)
753
- el.value = value;
754
- else
781
+ function setSelectValue(el, value, multiple) {
782
+ if (multiple)
755
783
  for (let opt of el.options)
756
- opt.defaultSelected = opt.value === value;
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));
757
793
  }
758
794
  function _attr_details_or_dialog_open(scope, nodeAccessor, open, openChange) {
759
- scope["E" /* ControlledHandler */ + nodeAccessor] = openChange, scope["F" /* ControlledType */ + nodeAccessor] = openChange ? 4 /* DetailsOrDialogOpen */ : 5 /* None */, scope[nodeAccessor].open = scope["G" /* ControlledValue */ + nodeAccessor] = normalizeBoolProp(open);
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);
760
797
  }
761
798
  function _attr_details_or_dialog_open_script(scope, nodeAccessor) {
762
- let el = scope[nodeAccessor], hasChanged = () => el.open === !scope["G" /* ControlledValue */ + nodeAccessor];
763
- syncControllable(
764
- el,
765
- el.tagName === "DIALOG" ? "close" : "toggle",
766
- hasChanged,
767
- () => {
768
- let openChange = scope["E" /* ControlledHandler */ + nodeAccessor];
769
- if (openChange && hasChanged()) {
770
- let newValue = el.open;
771
- el.open = !newValue, openChange(newValue), run();
772
- }
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();
773
805
  }
774
- );
806
+ }).observe(el, { attributes: !0, attributeFilter: ["open"] });
775
807
  }
776
- var inputType = "";
777
- function setValueAndUpdateSelection(el, value) {
778
- if (el.value !== value) {
779
- let updatedPosition = resolveCursorPosition(
780
- inputType,
781
- el.getRootNode().activeElement === el && el.selectionStart,
782
- el.value,
783
- el.value = value
784
- );
785
- ~updatedPosition && el.setSelectionRange(updatedPosition, updatedPosition);
786
- }
787
- }
788
- function setCheckboxValue(scope, nodeAccessor, type, checked, checkedChange) {
789
- 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);
790
- }
791
- var controllableDelegate = createDelegator();
792
- function syncControllable(el, event, hasChanged, onChange) {
793
- 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);
794
810
  }
795
811
  function handleChange(ev) {
796
812
  ev.target._?.(ev);
@@ -829,9 +845,6 @@ function updateList(arr, val, push2) {
829
845
  let index = arr.indexOf(val);
830
846
  return (push2 ? !~index && [...arr, val] : ~index && arr.slice(0, index).concat(arr.slice(index + 1))) || arr;
831
847
  }
832
- function toValueProp(it) {
833
- return it.value;
834
- }
835
848
 
836
849
  // src/dom/dom.ts
837
850
  function _to_text(value) {
@@ -861,7 +874,7 @@ function _attr_style_items(element, items) {
861
874
  _attr_style_item(element, key, items[key]);
862
875
  }
863
876
  function _attr_style_item(element, name, value) {
864
- element.style.setProperty(name, value || value === 0 ? value + "" : "");
877
+ element.style.setProperty(name, _to_text(value));
865
878
  }
866
879
  function _attr_nonce(scope, nodeAccessor) {
867
880
  _attr(scope[nodeAccessor], "nonce", scope.$.cspNonce);
@@ -1007,7 +1020,7 @@ function _attrs_script(scope, nodeAccessor) {
1007
1020
  }
1008
1021
  function _html(scope, value, accessor) {
1009
1022
  let firstChild = scope[accessor], parentNode = firstChild.parentNode, lastChild = scope["H" /* DynamicHTMLLastChild */ + accessor] || firstChild, newContent = parseHTML(
1010
- value || value === 0 ? value + "" : "",
1023
+ _to_text(value),
1011
1024
  parentNode.namespaceURI
1012
1025
  );
1013
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
- setCheckboxValue(
542
- scope,
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
- syncControllable(el, "input", hasCheckboxChanged, () => {
554
+ syncControllableFormInput(el, hasCheckboxChanged, () => {
552
555
  let checkedChange = scope["E" /* ControlledHandler */ + nodeAccessor];
553
556
  if (checkedChange) {
554
557
  let newValue = el.checked;
@@ -556,21 +559,28 @@ function _attr_input_checked_script(scope, nodeAccessor) {
556
559
  }
557
560
  });
558
561
  }
559
- function _attr_input_checkedValue(scope, nodeAccessor, checkedValue, checkedValueChange, value) {
562
+ function _attr_input_checkedValue_default(scope, nodeAccessor, checkedValue, value) {
560
563
  let multiple = Array.isArray(checkedValue), normalizedValue = normalizeStrProp(value), normalizedCheckedValue = multiple ? checkedValue.map(normalizeStrProp) : normalizeStrProp(checkedValue);
561
- scope["G" /* ControlledValue */ + nodeAccessor] = normalizedCheckedValue, _attr(scope[nodeAccessor], "value", normalizedValue), setCheckboxValue(
564
+ _attr(scope[nodeAccessor], "value", normalizedValue), _attr_input_checked_default(
562
565
  scope,
563
566
  nodeAccessor,
564
- 1 /* InputCheckedValue */,
565
- multiple ? normalizedCheckedValue.includes(normalizedValue) : normalizedValue === normalizedCheckedValue,
566
- checkedValueChange
567
+ multiple ? normalizedCheckedValue.includes(normalizedValue) : normalizedValue === normalizedCheckedValue
568
+ );
569
+ }
570
+ function _attr_input_checkedValue(scope, nodeAccessor, checkedValue, checkedValueChange, value) {
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(
573
+ scope,
574
+ nodeAccessor,
575
+ normalizedCheckedValue,
576
+ normalizedValue
567
577
  );
568
578
  }
569
579
  function _attr_input_checkedValue_script(scope, nodeAccessor) {
570
580
  let el = scope[nodeAccessor];
571
581
  isResuming && el.defaultChecked && (scope["G" /* ControlledValue */ + nodeAccessor] ? scope["G" /* ControlledValue */ + nodeAccessor].push(
572
582
  el.value
573
- ) : scope["G" /* ControlledValue */ + nodeAccessor] = el.value), syncControllable(el, "input", hasCheckboxChanged, () => {
583
+ ) : scope["G" /* ControlledValue */ + nodeAccessor] = el.value), syncControllableFormInput(el, hasCheckboxChanged, () => {
574
584
  let checkedValueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
575
585
  if (checkedValueChange) {
576
586
  let oldValue = scope["G" /* ControlledValue */ + nodeAccessor], newValue = Array.isArray(oldValue) ? updateList(oldValue, el.value, el.checked) : el.checked ? el.value : void 0;
@@ -585,37 +595,58 @@ function _attr_input_checkedValue_script(scope, nodeAccessor) {
585
595
  }
586
596
  });
587
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
+ }
588
605
  function _attr_input_value(scope, nodeAccessor, value, valueChange) {
589
606
  let el = scope[nodeAccessor], normalizedValue = normalizeStrProp(value);
590
- scope["E" /* ControlledHandler */ + nodeAccessor] = valueChange, valueChange ? (scope["F" /* ControlledType */ + nodeAccessor] = 2 /* InputValue */, scope["G" /* ControlledValue */ + nodeAccessor] = normalizedValue, el.isConnected ? setValueAndUpdateSelection(el, normalizedValue) : el.defaultValue = normalizedValue) : (scope["F" /* ControlledType */ + nodeAccessor] = 5 /* None */, el.defaultValue = normalizedValue);
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);
591
608
  }
592
609
  function _attr_input_value_script(scope, nodeAccessor) {
593
610
  let el = scope[nodeAccessor];
594
- isResuming && (scope["G" /* ControlledValue */ + nodeAccessor] = el.defaultValue), syncControllable(el, "input", hasValueChanged, (ev) => {
611
+ isResuming && (scope["G" /* ControlledValue */ + nodeAccessor] = el.defaultValue), syncControllableFormInput(el, hasValueChanged, (ev) => {
595
612
  let valueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
596
- valueChange && (inputType = ev?.inputType, valueChange(el.value), run(), setValueAndUpdateSelection(
597
- el,
598
- scope["G" /* ControlledValue */ + nodeAccessor]
599
- ), inputType = "");
613
+ valueChange && (inputType = ev?.inputType, valueChange(el.value), run(), setInputValue(el, scope["G" /* ControlledValue */ + nodeAccessor]), inputType = "");
600
614
  });
601
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
+ }
602
637
  function _attr_select_value(scope, nodeAccessor, value, valueChange) {
603
- let normalizedValue = Array.isArray(value) ? value.map(normalizeStrProp) : normalizeStrProp(value);
604
- scope["E" /* ControlledHandler */ + nodeAccessor] = valueChange, valueChange ? (scope["F" /* ControlledType */ + nodeAccessor] = 3 /* SelectValue */, scope["G" /* ControlledValue */ + nodeAccessor] = normalizedValue) : scope["F" /* ControlledType */ + nodeAccessor] = 5 /* None */, pendingEffects.unshift(
605
- () => setSelectOptions(
606
- scope[nodeAccessor],
607
- normalizedValue,
608
- valueChange
609
- ),
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),
610
641
  scope
611
- );
642
+ ) : _attr_select_value_default(scope, nodeAccessor, normalizedValue);
612
643
  }
613
644
  function _attr_select_value_script(scope, nodeAccessor) {
614
645
  let el = scope[nodeAccessor], onChange = () => {
615
646
  let valueChange = scope["E" /* ControlledHandler */ + nodeAccessor];
616
647
  if (valueChange) {
617
- let oldValue = scope["G" /* ControlledValue */ + nodeAccessor], newValue = Array.isArray(oldValue) ? Array.from(el.selectedOptions, toValueProp) : el.value;
618
- setSelectOptions(el, oldValue, valueChange), 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();
619
650
  }
620
651
  };
621
652
  if (isResuming)
@@ -631,62 +662,40 @@ function _attr_select_value_script(scope, nodeAccessor) {
631
662
  break;
632
663
  }
633
664
  }
634
- el._ || new MutationObserver(() => {
665
+ syncControllableFormInput(el, hasSelectChanged, onChange), new MutationObserver(() => {
635
666
  let value = scope["G" /* ControlledValue */ + nodeAccessor];
636
667
  (Array.isArray(value) ? value.length !== el.selectedOptions.length || value.some((value2, i) => value2 != el.selectedOptions[i].value) : el.value !== value) && onChange();
637
- }).observe(el, {
638
- childList: !0,
639
- subtree: !0
640
- }), syncControllable(el, "input", hasSelectChanged, onChange);
668
+ }).observe(el, { childList: !0, subtree: !0 });
641
669
  }
642
- function setSelectOptions(el, value, valueChange) {
643
- if (Array.isArray(value))
644
- for (let opt of el.options) {
645
- let selected = value.includes(opt.value);
646
- valueChange ? opt.selected = selected : opt.defaultSelected = selected;
647
- }
648
- else if (valueChange)
649
- el.value = value;
650
- else
670
+ function setSelectValue(el, value, multiple) {
671
+ if (multiple)
651
672
  for (let opt of el.options)
652
- opt.defaultSelected = opt.value === value;
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));
653
682
  }
654
683
  function _attr_details_or_dialog_open(scope, nodeAccessor, open, openChange) {
655
- scope["E" /* ControlledHandler */ + nodeAccessor] = openChange, scope["F" /* ControlledType */ + nodeAccessor] = openChange ? 4 /* DetailsOrDialogOpen */ : 5 /* None */, scope[nodeAccessor].open = scope["G" /* ControlledValue */ + nodeAccessor] = normalizeBoolProp(open);
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);
656
686
  }
657
687
  function _attr_details_or_dialog_open_script(scope, nodeAccessor) {
658
- let el = scope[nodeAccessor], hasChanged = () => el.open === !scope["G" /* ControlledValue */ + nodeAccessor];
659
- syncControllable(
660
- el,
661
- el.tagName === "DIALOG" ? "close" : "toggle",
662
- hasChanged,
663
- () => {
664
- let openChange = scope["E" /* ControlledHandler */ + nodeAccessor];
665
- if (openChange && hasChanged()) {
666
- let newValue = el.open;
667
- el.open = !newValue, openChange(newValue), run();
668
- }
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();
669
694
  }
670
- );
695
+ }).observe(el, { attributes: !0, attributeFilter: ["open"] });
671
696
  }
672
- var inputType = "";
673
- function setValueAndUpdateSelection(el, value) {
674
- if (el.value !== value) {
675
- let updatedPosition = resolveCursorPosition(
676
- inputType,
677
- el.getRootNode().activeElement === el && el.selectionStart,
678
- el.value,
679
- el.value = value
680
- );
681
- ~updatedPosition && el.setSelectionRange(updatedPosition, updatedPosition);
682
- }
683
- }
684
- function setCheckboxValue(scope, nodeAccessor, type, checked, checkedChange) {
685
- 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);
686
- }
687
- var controllableDelegate = createDelegator();
688
- function syncControllable(el, event, hasChanged, onChange) {
689
- 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);
690
699
  }
691
700
  function handleChange(ev) {
692
701
  ev.target._?.(ev);
@@ -725,9 +734,6 @@ function updateList(arr, val, push2) {
725
734
  let index = arr.indexOf(val);
726
735
  return (push2 ? !~index && [...arr, val] : ~index && arr.slice(0, index).concat(arr.slice(index + 1))) || arr;
727
736
  }
728
- function toValueProp(it) {
729
- return it.value;
730
- }
731
737
 
732
738
  // src/dom/dom.ts
733
739
  function _to_text(value) {
@@ -757,7 +763,7 @@ function _attr_style_items(element, items) {
757
763
  _attr_style_item(element, key, items[key]);
758
764
  }
759
765
  function _attr_style_item(element, name, value) {
760
- element.style.setProperty(name, value || value === 0 ? value + "" : "");
766
+ element.style.setProperty(name, _to_text(value));
761
767
  }
762
768
  function _attr_nonce(scope, nodeAccessor) {
763
769
  _attr(scope[nodeAccessor], "nonce", scope.$.cspNonce);
@@ -903,7 +909,7 @@ function _attrs_script(scope, nodeAccessor) {
903
909
  }
904
910
  function _html(scope, value, accessor) {
905
911
  let firstChild = scope[accessor], parentNode = firstChild.parentNode, lastChild = scope["H" /* DynamicHTMLLastChild */ + accessor] || firstChild, newContent = parseHTML(
906
- value || value === 0 ? value + "" : "",
912
+ _to_text(value),
907
913
  parentNode.namespaceURI
908
914
  );
909
915
  insertChildNodes(
@@ -1571,22 +1577,29 @@ export {
1571
1577
  _attr_class_items,
1572
1578
  _attr_content,
1573
1579
  _attr_details_or_dialog_open as _attr_details_open,
1580
+ _attr_details_or_dialog_open_default as _attr_details_open_default,
1574
1581
  _attr_details_or_dialog_open_script as _attr_details_open_script,
1575
1582
  _attr_details_or_dialog_open as _attr_dialog_open,
1583
+ _attr_details_or_dialog_open_default as _attr_dialog_open_default,
1576
1584
  _attr_details_or_dialog_open_script as _attr_dialog_open_script,
1577
1585
  _attr_input_checked,
1578
1586
  _attr_input_checkedValue,
1587
+ _attr_input_checkedValue_default,
1579
1588
  _attr_input_checkedValue_script,
1589
+ _attr_input_checked_default,
1580
1590
  _attr_input_checked_script,
1581
1591
  _attr_input_value,
1592
+ _attr_input_value_default,
1582
1593
  _attr_input_value_script,
1583
1594
  _attr_nonce,
1584
1595
  _attr_select_value,
1596
+ _attr_select_value_default,
1585
1597
  _attr_select_value_script,
1586
1598
  _attr_style,
1587
1599
  _attr_style_item,
1588
1600
  _attr_style_items,
1589
1601
  _attr_input_value as _attr_textarea_value,
1602
+ _attr_input_value_default as _attr_textarea_value_default,
1590
1603
  _attr_input_value_script as _attr_textarea_value_script,
1591
1604
  _attrs,
1592
1605
  _attrs_content,