svelte-ux
Version:
- Increment version in `package.json` and commit as `Version bump to x.y.z` - `npm run publish`
27 lines (26 loc) • 946 B
JavaScript
export default function cssVars(node, props) {
Object.entries(props).forEach(([key, value]) => {
// Ignore if null or undefined
if (value != null) {
value = typeof value === 'boolean' ? (value ? 1 : 0) : value;
node.style.setProperty(`--${key}`, `${value}`);
}
});
let lastProps = {};
return {
update(newProps) {
const newKeys = Object.keys(newProps);
Object.keys(lastProps)
.filter((name) => !newKeys.includes(name))
.forEach((name) => node.style.removeProperty(`--${name}`));
Object.entries(newProps).forEach(([key, value]) => {
// Ignore if null or undefined
if (value != null) {
node.style.setProperty(`--${key}`, `${value}`);
}
delete props[key];
});
lastProps = newProps;
},
};
}