release: WRNexusJS 0.2.34

This commit is contained in:
2026-07-15 07:29:59 +05:30
parent 936488ac06
commit cade812569
54 changed files with 207 additions and 86 deletions
+114 -2
View File
@@ -164,6 +164,119 @@ export const REACTIVE_RUNTIME = String.raw`
subscribe: function (f) { subs.add(f); return function () { subs.delete(f); }; }
};
}
function applyReactiveAttribute(node, name, value) {
var lowerName = String(name || "").toLowerCase();
if (
lowerName === "value" &&
(
node instanceof HTMLInputElement ||
node instanceof HTMLTextAreaElement ||
node instanceof HTMLSelectElement
)
) {
var nextValue =
value == null ? "" : String(value);
if (node.value !== nextValue) {
node.value = nextValue;
}
if (value == null) {
node.removeAttribute("value");
} else {
node.setAttribute(
"value",
nextValue,
);
}
return;
}
if (
lowerName === "checked" &&
node instanceof HTMLInputElement
) {
var checked = !!value;
if (node.checked !== checked) {
node.checked = checked;
}
if (checked) {
node.setAttribute(
"checked",
"",
);
} else {
node.removeAttribute(
"checked",
);
}
return;
}
if (
lowerName === "selected" &&
node instanceof HTMLOptionElement
) {
var selected = !!value;
node.selected = selected;
if (selected) {
node.setAttribute(
"selected",
"",
);
} else {
node.removeAttribute(
"selected",
);
}
return;
}
if (
lowerName === "disabled" ||
lowerName === "required" ||
lowerName === "readonly" ||
lowerName === "multiple"
) {
var enabled = !!value;
if (lowerName in node) {
try {
node[lowerName] = enabled;
} catch (_) {
// Fall through to attribute handling.
}
}
if (enabled) {
node.setAttribute(
name,
"",
);
} else {
node.removeAttribute(name);
}
return;
}
if (value === false || value == null) {
node.removeAttribute(name);
} else {
node.setAttribute(
name,
value === true ? "" : String(value),
);
}
}
function setupScope(el) {
if (el.__wrnexusScope) return; // idempotent: safe to call again after an HMR morph
@@ -486,8 +599,7 @@ export const REACTIVE_RUNTIME = String.raw`
} catch (e) { return ""; }
});
}
if (raw === false || raw == null) node.removeAttribute(name);
else node.setAttribute(name, raw === true ? "" : String(raw));
applyReactiveAttribute(node, name, raw);
});
});
});