rvx
Version:
A signal based rendering library
33 lines • 1.14 kB
JavaScript
import { watch } from "../signals.js";
function watchStyle(value, handler) {
watch(value, value => {
if (Array.isArray(value)) {
const overwrites = [];
for (let i = value.length - 1; i >= 0; i--) {
const self = [];
overwrites[i] = self;
watchStyle(value[i], (name, value) => {
if (!self.includes(name)) {
self.push(name);
}
for (let o = i + 1; o < overwrites.length; o++) {
if (overwrites[o].includes(name)) {
return;
}
}
handler(name, value);
});
}
}
else if (value) {
for (const name in value) {
watch(value[name], value => handler(name, value));
}
}
});
}
export function setStyle(elem, value) {
const style = elem.style;
watchStyle(value, (name, value) => style.setProperty(name, value ? String(value) : null));
}
//# sourceMappingURL=set-style.js.map