(element, runtime2)
| 9954 | "SELECT": "value" |
| 9955 | }; |
| 9956 | function _createElementSide(element, runtime2) { |
| 9957 | var tag = element.tagName; |
| 9958 | var type = tag === "INPUT" ? element.getAttribute("type") || "text" : null; |
| 9959 | if (tag === "INPUT" && type === "radio") { |
| 9960 | var radioValue = element.value; |
| 9961 | return { |
| 9962 | element, |
| 9963 | read: function() { |
| 9964 | var checked = runtime2.resolveProperty(element, "checked"); |
| 9965 | return checked ? radioValue : void 0; |
| 9966 | }, |
| 9967 | write: function(value) { |
| 9968 | element.checked = value === radioValue; |
| 9969 | } |
| 9970 | }; |
| 9971 | } |
| 9972 | var prop = _bindProperty[tag + ":" + type] || _bindProperty[tag]; |
| 9973 | if (!prop && element.hasAttribute("contenteditable") && element.getAttribute("contenteditable") !== "false") { |
| 9974 | prop = "textContent"; |
| 9975 | } |
| 9976 | if (!prop && tag.includes("-") && "value" in element) { |
| 9977 | prop = "value"; |
| 9978 | } |
| 9979 | if (!prop) { |
| 9980 | throw new Error( |
| 9981 | "bind cannot auto-detect a property for <" + tag.toLowerCase() + ">. Use an explicit property (e.g. 'bind $var to #el's value')." |
| 9982 | ); |
| 9983 | } |
| 9984 | var isNumeric = prop === "valueAsNumber"; |
| 9985 | return { |
| 9986 | element, |
| 9987 | read: function() { |
| 9988 | var val = runtime2.resolveProperty(element, prop); |
| 9989 | return isNumeric && val !== val ? null : val; |
| 9990 | }, |
| 9991 | write: function(value) { |
| 9992 | element[prop] = value; |
| 9993 | } |
| 9994 | }; |
| 9995 | } |
| 9996 | function _createExpressionSide(expr, target, feature, runtime2) { |
| 9997 | if (expr.type === "classRef") { |
| 9998 | return { |
no test coverage detected