MCPcopy Create free account
hub / github.com/bigskysoftware/_hyperscript / _createElementSide

Function _createElementSide

www/js/_hyperscript.js:9957–9996  ·  view source on GitHub ↗
(element, runtime2)

Source from the content-addressed store, hash-verified

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

Callers 1

_resolveSideFunction · 0.70

Calls 1

resolvePropertyMethod · 0.45

Tested by

no test coverage detected