diff --git a/packages/desktop/src/index.js b/packages/desktop/src/index.js index 75b838b02..dfa11bf67 100644 --- a/packages/desktop/src/index.js +++ b/packages/desktop/src/index.js @@ -1,31 +1,31 @@ -const bool_attrs = [ - "allowfullscreen", - "allowpaymentrequest", - "async", - "autofocus", - "autoplay", - "checked", - "controls", - "default", - "defer", - "disabled", - "formnovalidate", - "hidden", - "ismap", - "itemscope", - "loop", - "multiple", - "muted", - "nomodule", - "novalidate", - "open", - "playsinline", - "readonly", - "required", - "reversed", - "selected", - "truespeed", -] +const bool_attrs = { + allowfullscreen: true, + allowpaymentrequest: true, + async: true, + autofocus: true, + autoplay: true, + checked: true, + controls: true, + default: true, + defer: true, + disabled: true, + formnovalidate: true, + hidden: true, + ismap: true, + itemscope: true, + loop: true, + multiple: true, + muted: true, + nomodule: true, + novalidate: true, + open: true, + playsinline: true, + readonly: true, + required: true, + reversed: true, + selected: true, + truespeed: true, +}; function serialize_event(event) { switch (event.type) { @@ -386,7 +386,9 @@ class Interpreter { } else { switch (name) { case "value": - node.value = value; + if (value != node.value) { + node.value = value; + } break; case "checked": node.checked = value === "true"; @@ -399,7 +401,7 @@ class Interpreter { break; default: // https://github.com/facebook/react/blob/8b88ac2592c5f555f315f9440cbb665dd1e7457a/packages/react-dom/src/shared/DOMProperty.js#L352-L364 - if (value == "false" && bool_attrs.indexOf(name)) { + if (value == "false" && bool_attrs.hasOwnProperty(name)) { node.removeAttribute(name); } else { node.setAttribute(name, value);