UNPKG

@noema/hyle

Version:
48 lines 2.08 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { assignInlineVars } from '@vanilla-extract/dynamic'; import clsx from 'clsx'; import { useMemo } from 'react'; import { categorizeProps, resolveValue } from './utils.js'; export function hyle(element, sprinkles, hyleStyle) { return (props) => { const { className, style, inlineVars, ...allProps } = props; const Comp = element; const processedProps = useMemo(() => { const { sprinkled, primitive, shorthands, rest } = categorizeProps(allProps, sprinkles.properties, hyleStyle); const vars = {}; const styleClassNames = []; for (const [key, value] of Object.entries(primitive)) { if (value === null) { continue; } const cssVar = hyleStyle.styles[key]; vars[cssVar] = resolveValue(key, value); styleClassNames.push(hyleStyle.classNames[key]); } for (const [shorthand, value] of Object.entries(shorthands)) { if (value === null) { continue; } const properties = hyleStyle.shorthands?.[shorthand] || []; for (const prop of properties) { if (prop in hyleStyle.styles) { const cssVar = hyleStyle.styles[prop]; vars[cssVar] = resolveValue(prop, value); styleClassNames.push(hyleStyle.classNames[prop]); } } } return { style: { ...style, ...assignInlineVars(inlineVars ?? {}), ...assignInlineVars(vars), }, className: clsx(sprinkles(sprinkled), hyleStyle.baseClassName, styleClassNames, className), ...rest, }; }, [allProps, className, style, inlineVars]); return _jsx(Comp, { ...processedProps }); }; } //# sourceMappingURL=hyle.js.map