{"version":3,"file":"useCssVariable.mjs","names":["React","canUseDOM","useForkRef","useContextTokens","useCssVariable","name","fallbackValue","ref","contextTheme","getValue","useCallback","_ref$current","element","current","document","documentElement","computedStyles","getComputedStyle","getPropertyValue","initialValue","useMemo","_React$useState","useState","_React$useState2","_slicedToArray","value","setValue","useEffect","cssVariableEnhance","_ref","variable","fallback","prop","map","props","_ref2","nodeRef","useRef","variableValue","mappedValue","_objectSpread","_defineProperty","undefined"],"sources":["../src/useCssVariable.ts"],"sourcesContent":["import React from 'react';\nimport canUseDOM from './canUseDOM';\nimport { useForkRef } from './ref';\nimport { useContextTokens } from './ThemeProvider';\n\nexport const useCssVariable = (name: string, fallbackValue: string, ref?: React.RefObject<any>) => {\n  const contextTheme = useContextTokens();\n  const getValue = React.useCallback(() => {\n    if (contextTheme?.[name]) return contextTheme[name];\n    if (!canUseDOM()) return fallbackValue;\n\n    const element = ref?.current ?? document.documentElement;\n\n    const computedStyles = getComputedStyle(element);\n\n    return computedStyles.getPropertyValue(name) || fallbackValue;\n  }, [name, ref, fallbackValue, contextTheme]);\n\n  const initialValue = React.useMemo(getValue, [getValue]);\n  const [value, setValue] = React.useState(initialValue);\n  React.useEffect(() => setValue(getValue), [getValue]);\n\n  return value;\n};\n\nexport const cssVariableEnhance = <\n  P extends string,\n  F = string,\n  R = string,\n  M extends null | ((value: string) => R) = any,\n>({\n  variable,\n  fallback,\n  prop,\n  map,\n}: {\n  variable: string;\n  prop: P;\n  fallback: F;\n  map?: M;\n}) => {\n  return <T extends {}>(props: T) => {\n    const { ref } = props as any;\n    const nodeRef = React.useRef();\n    const variableValue = useCssVariable(variable, fallback as any, nodeRef);\n    const mappedValue = React.useMemo(\n      () => (map ? map(variableValue) : variableValue),\n      [map, variableValue],\n    );\n\n    return {\n      ...props,\n      ref: useForkRef(ref, nodeRef),\n      [prop]: (props as any)[prop] === undefined ? mappedValue : (props as any)[prop],\n    } as T & {\n      [key in P]: M extends (value: string) => R ? R : F;\n    };\n  };\n};\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,iBAAa;AACnC,SAASC,UAAU,QAAQ,WAAO;AAClC,SAASC,gBAAgB,QAAQ,qBAAiB;AAElD,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,IAAY,EAAEC,aAAqB,EAAEC,GAA0B,EAAK;EACjG,IAAMC,YAAY,GAAGL,gBAAgB,EAAE;EACvC,IAAMM,QAAQ,GAAGT,KAAK,CAACU,WAAW,CAAC,YAAM;IAAA,IAAAC,YAAA;IACvC,IAAIH,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGH,IAAI,CAAC,EAAE,OAAOG,YAAY,CAACH,IAAI,CAAC;IACnD,IAAI,CAACJ,SAAS,EAAE,EAAE,OAAOK,aAAa;IAEtC,IAAMM,OAAO,IAAAD,YAAA,GAAGJ,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEM,OAAO,cAAAF,YAAA,cAAAA,YAAA,GAAIG,QAAQ,CAACC,eAAe;IAExD,IAAMC,cAAc,GAAGC,gBAAgB,CAACL,OAAO,CAAC;IAEhD,OAAOI,cAAc,CAACE,gBAAgB,CAACb,IAAI,CAAC,IAAIC,aAAa;EAC/D,CAAC,EAAE,CAACD,IAAI,EAAEE,GAAG,EAAED,aAAa,EAAEE,YAAY,CAAC,CAAC;EAE5C,IAAMW,YAAY,GAAGnB,KAAK,CAACoB,OAAO,CAACX,QAAQ,EAAE,CAACA,QAAQ,CAAC,CAAC;EACxD,IAAAY,eAAA,GAA0BrB,KAAK,CAACsB,QAAQ,CAACH,YAAY,CAAC;IAAAI,gBAAA,GAAAC,cAAA,CAAAH,eAAA;IAA/CI,KAAK,GAAAF,gBAAA;IAAEG,QAAQ,GAAAH,gBAAA;EACtBvB,KAAK,CAAC2B,SAAS,CAAC;IAAA,OAAMD,QAAQ,CAACjB,QAAQ,CAAC;EAAA,GAAE,CAACA,QAAQ,CAAC,CAAC;EAErD,OAAOgB,KAAK;AACd,CAAC;AAED,OAAO,IAAMG,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,IAAA,EAezB;EAAA,IATJC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IACJC,GAAG,GAAAJ,IAAA,CAAHI,GAAG;EAOH,OAAO,UAAeC,KAAQ,EAAK;IACjC,IAAAC,KAAA,GAAgBD,KAAK;MAAb3B,GAAG,GAAA4B,KAAA,CAAH5B,GAAG;IACX,IAAM6B,OAAO,GAAGpC,KAAK,CAACqC,MAAM,EAAE;IAC9B,IAAMC,aAAa,GAAGlC,cAAc,CAAC0B,QAAQ,EAAEC,QAAQ,EAASK,OAAO,CAAC;IACxE,IAAMG,WAAW,GAAGvC,KAAK,CAACoB,OAAO,CAC/B;MAAA,OAAOa,GAAG,GAAGA,GAAG,CAACK,aAAa,CAAC,GAAGA,aAAa;IAAA,CAAC,EAChD,CAACL,GAAG,EAAEK,aAAa,CAAC,CACrB;IAED,OAAAE,aAAA,CAAAA,aAAA,KACKN,KAAK,OAAAO,eAAA;MACRlC,GAAG,EAAEL,UAAU,CAACK,GAAG,EAAE6B,OAAO;IAAC,GAC5BJ,IAAI,EAAIE,KAAK,CAASF,IAAI,CAAC,KAAKU,SAAS,GAAGH,WAAW,GAAIL,KAAK,CAASF,IAAI,CAAC;EAInF,CAAC;AACH,CAAC"}