UNPKG

@corvu/utils

Version:

Utilities for corvu

55 lines (53 loc) 1.62 kB
import { access } from "../chunk/U42ECMND.jsx"; // src/create/style.ts import { createEffect, onCleanup } from "solid-js"; var activeStyles = /* @__PURE__ */ new Map(); var createStyle = (props) => { createEffect(() => { const style = access(props.style) ?? {}; const properties = access(props.properties) ?? []; const originalStyles = {}; for (const key in style) { originalStyles[key] = props.element.style[key]; } const activeStyle = activeStyles.get(props.key); if (activeStyle) { activeStyle.activeCount++; } else { activeStyles.set(props.key, { activeCount: 1, originalStyles, properties: properties.map((property) => property.key) }); } Object.assign(props.element.style, props.style); for (const property of properties) { props.element.style.setProperty(property.key, property.value); } onCleanup(() => { const activeStyle2 = activeStyles.get(props.key); if (!activeStyle2) return; if (activeStyle2.activeCount !== 1) { activeStyle2.activeCount--; return; } activeStyles.delete(props.key); for (const [key, value] of Object.entries(activeStyle2.originalStyles)) { props.element.style[key] = value; } for (const property of activeStyle2.properties) { props.element.style.removeProperty(property); } if (props.element.style.length === 0) { props.element.removeAttribute("style"); } props.cleanup?.(); }); }); }; var style_default = createStyle; export { style_default as default };