···5656 for (const { name, value } of guide.attributes)
5757 elem.getAttribute(name) === value || elem.setAttribute(name, value);
5858 elem.nodeValue;
5959- if (isInput(elem) && isInput(guide) && elem.type !== "file") {
6060- if (elem.value !== guide.value)
6161- elem.value = guide.value;
5959+ if (isInput(elem) && isInput(guide)) {
6260 if (elem.checked !== guide.checked)
6361 elem.checked = guide.checked;
6462 if (elem.disabled !== guide.disabled)
6563 elem.disabled = guide.disabled;
6464+ if (elem.indeterminate !== guide.indeterminate)
6565+ elem.indeterminate = guide.indeterminate;
6666+ if (elem.type !== "file" && elem.value !== guide.value)
6767+ elem.value = guide.value;
6668 }
6767- else if (isOption(elem) && isOption(guide) && elem.selected !== guide.selected)
6868- elem.selected = guide.selected;
6969+ else if (isOption(elem) && isOption(guide) && elem.value !== guide.value)
7070+ elem.value = guide.value;
6971 else if (isTextArea(elem) && isTextArea(guide)) {
7072 if (elem.value !== guide.value)
7173 elem.value = guide.value;
+5-3
src/morphlex.ts
···6666 elem.nodeValue;
67676868 // For certain types of elements, we need to do some extra work to ensure the element’s state matches the guide’s state.
6969- if (isInput(elem) && isInput(guide) && elem.type !== "file") {
7070- if (elem.value !== guide.value) elem.value = guide.value;
6969+ if (isInput(elem) && isInput(guide)) {
7170 if (elem.checked !== guide.checked) elem.checked = guide.checked;
7271 if (elem.disabled !== guide.disabled) elem.disabled = guide.disabled;
7373- } else if (isOption(elem) && isOption(guide) && elem.selected !== guide.selected) elem.selected = guide.selected;
7272+ if (elem.indeterminate !== guide.indeterminate) elem.indeterminate = guide.indeterminate;
7373+ if (elem.type !== "file" && elem.value !== guide.value) elem.value = guide.value;
7474+ } else if (isOption(elem) && isOption(guide) && elem.value !== guide.value) elem.value = guide.value;
7475 else if (isTextArea(elem) && isTextArea(guide)) {
7576 if (elem.value !== guide.value) elem.value = guide.value;
76777878+ // TextAreas only have one child node and it’s always a text node, so we can safely cast here.
7779 const text = elem.firstChild as Text | null;
7880 if (text && text.textContent !== guide.value) text.textContent = guide.value;
7981 }