{"version":3,"file":"useCssVariable.mjs","names":["React","canUseDOM","useForkRef","useContextTokens","useCssVariable","name","fallbackValue","ref","contextTheme","getValue","useCallback","element","current","document","documentElement","computedStyles","getComputedStyle","getPropertyValue","initialValue","useMemo","value","setValue","useState","useEffect","cssVariableEnhance","variable","fallback","prop","map","props","nodeRef","useRef","variableValue","mappedValue","undefined"],"sources":["../../src/utils/useCssVariable.ts"],"sourcesContent":["import React from 'react';\n\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;AAEzB,OAAOC,SAAS,MAAM,iBAAa;AACnC,SAASC,UAAU,QAAQ,WAAO;AAClC,SAASC,gBAAgB,QAAQ,qBAAiB;AAElD,OAAO,MAAMC,cAAc,GAAGA,CAACC,IAAY,EAAEC,aAAqB,EAAEC,GAA0B,KAAK;EACjG,MAAMC,YAAY,GAAGL,gBAAgB,CAAC,CAAC;EACvC,MAAMM,QAAQ,GAAGT,KAAK,CAACU,WAAW,CAAC,MAAM;IACvC,IAAIF,YAAY,GAAGH,IAAI,CAAC,EAAE,OAAOG,YAAY,CAACH,IAAI,CAAC;IACnD,IAAI,CAACJ,SAAS,CAAC,CAAC,EAAE,OAAOK,aAAa;IAEtC,MAAMK,OAAO,GAAGJ,GAAG,EAAEK,OAAO,IAAIC,QAAQ,CAACC,eAAe;IAExD,MAAMC,cAAc,GAAGC,gBAAgB,CAACL,OAAO,CAAC;IAEhD,OAAOI,cAAc,CAACE,gBAAgB,CAACZ,IAAI,CAAC,IAAIC,aAAa;EAC/D,CAAC,EAAE,CAACD,IAAI,EAAEE,GAAG,EAAED,aAAa,EAAEE,YAAY,CAAC,CAAC;EAE5C,MAAMU,YAAY,GAAGlB,KAAK,CAACmB,OAAO,CAACV,QAAQ,EAAE,CAACA,QAAQ,CAAC,CAAC;EACxD,MAAM,CAACW,KAAK,EAAEC,QAAQ,CAAC,GAAGrB,KAAK,CAACsB,QAAQ,CAACJ,YAAY,CAAC;EACtDlB,KAAK,CAACuB,SAAS,CAAC,MAAMF,QAAQ,CAACZ,QAAQ,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAErD,OAAOW,KAAK;AACd,CAAC;AAED,OAAO,MAAMI,kBAAkB,GAAGA,CAKhC;EACAC,QAAQ;EACRC,QAAQ;EACRC,IAAI;EACJC;AAMF,CAAC,KAAK;EACJ,OAAsBC,KAAQ,IAAK;IACjC,MAAM;MAAEtB;IAAI,CAAC,GAAGsB,KAAY;IAC5B,MAAMC,OAAO,GAAG9B,KAAK,CAAC+B,MAAM,CAAC,CAAC;IAC9B,MAAMC,aAAa,GAAG5B,cAAc,CAACqB,QAAQ,EAAEC,QAAQ,EAASI,OAAO,CAAC;IACxE,MAAMG,WAAW,GAAGjC,KAAK,CAACmB,OAAO,CAC/B,MAAOS,GAAG,GAAGA,GAAG,CAACI,aAAa,CAAC,GAAGA,aAAc,EAChD,CAACJ,GAAG,EAAEI,aAAa,CACrB,CAAC;IAED,OAAO;MACL,GAAGH,KAAK;MACRtB,GAAG,EAAEL,UAAU,CAACK,GAAG,EAAEuB,OAAO,CAAC;MAC7B,CAACH,IAAI,GAAIE,KAAK,CAASF,IAAI,CAAC,KAAKO,SAAS,GAAGD,WAAW,GAAIJ,KAAK,CAASF,IAAI;IAChF,CAAC;EAGH,CAAC;AACH,CAAC","ignoreList":[]}