{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { ColorMode, StyledTheme, Theme } from \"@yamada-ui/core\"\nimport { useColorMode, useTheme } from \"@yamada-ui/core\"\nimport {\n  getMemoizedObject as get,\n  isArray,\n  isUndefined,\n} from \"@yamada-ui/utils\"\nimport { useMemo } from \"react\"\n\ntype OmittedTheme = Omit<Theme, \"colorSchemes\" | \"components\" | \"themeSchemes\">\n\n/**\n * `useToken` is a custom hook for retrieving tokens from the theme.\n *\n * @see Docs https://yamada-ui.com/hooks/use-token\n */\nexport const useToken = <\n  Y extends number | string = string,\n  M extends keyof OmittedTheme = keyof OmittedTheme,\n>(\n  name: M,\n  path: number | Theme[M] | undefined,\n) => {\n  const { theme } = useTheme()\n  const { colorMode } = useColorMode()\n\n  return useMemo(\n    () => getToken<Y, M>(name, path)(theme, colorMode),\n    [name, path, theme, colorMode],\n  )\n}\n\nexport const getToken =\n  <\n    Y extends number | string = string,\n    M extends keyof OmittedTheme = keyof OmittedTheme,\n  >(\n    name: M,\n    path: number | Theme[M] | undefined,\n  ) =>\n  (theme: StyledTheme, colorMode: ColorMode) => {\n    if (name === \"layerStyles\") name = \"styles.layerStyles\" as M\n\n    if (name === \"textStyles\") name = \"styles.textStyles\" as M\n\n    if (name === \"transitionProperty\") name = \"transitions.property\" as M\n\n    if (name === \"transitionDuration\") name = \"transitions.duration\" as M\n\n    if (name === \"transitionEasing\") name = \"transitions.easing\" as M\n\n    let value = get<[Y, Y] | undefined | Y>(theme, `${name}.${path}`)\n\n    if (!isUndefined(value)) {\n      if (isArray(value)) {\n        const [lightValue, darkValue] = value\n\n        return colorMode === \"light\" ? lightValue : darkValue\n      } else {\n        return value\n      }\n    } else {\n      value = get<[Y, Y] | undefined | Y>(theme, `semantics.${name}.${path}`)\n\n      if (isArray(value)) {\n        value = [\n          get<Y>(theme, `${name}.${value[0]}`, value[0]),\n          get<Y>(theme, `${name}.${value[1]}`, value[1]),\n        ]\n      } else {\n        value = get<undefined | Y>(theme, `${name}.${value}`) ?? value\n      }\n\n      if (isArray(value)) {\n        const [lightValue, darkValue] = value\n\n        value = colorMode === \"light\" ? lightValue : darkValue\n\n        if (isArray(value)) {\n          const [lightValue, darkValue] = value as unknown as [Y, Y]\n\n          return colorMode === \"light\" ? lightValue : darkValue\n        } else {\n          return value\n        }\n      } else {\n        return value\n      }\n    }\n  }\n"],"mappings":";;;AACA,SAAS,cAAc,gBAAgB;AACvC;AAAA,EACE,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,OACK;AACP,SAAS,eAAe;AASjB,IAAM,WAAW,CAItB,MACA,SACG;AACH,QAAM,EAAE,MAAM,IAAI,SAAS;AAC3B,QAAM,EAAE,UAAU,IAAI,aAAa;AAEnC,SAAO;AAAA,IACL,MAAM,SAAe,MAAM,IAAI,EAAE,OAAO,SAAS;AAAA,IACjD,CAAC,MAAM,MAAM,OAAO,SAAS;AAAA,EAC/B;AACF;AAEO,IAAM,WACX,CAIE,MACA,SAEF,CAAC,OAAoB,cAAyB;AAxChD;AAyCI,MAAI,SAAS,cAAe,QAAO;AAEnC,MAAI,SAAS,aAAc,QAAO;AAElC,MAAI,SAAS,qBAAsB,QAAO;AAE1C,MAAI,SAAS,qBAAsB,QAAO;AAE1C,MAAI,SAAS,mBAAoB,QAAO;AAExC,MAAI,QAAQ,IAA4B,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE;AAEhE,MAAI,CAAC,YAAY,KAAK,GAAG;AACvB,QAAI,QAAQ,KAAK,GAAG;AAClB,YAAM,CAAC,YAAY,SAAS,IAAI;AAEhC,aAAO,cAAc,UAAU,aAAa;AAAA,IAC9C,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF,OAAO;AACL,YAAQ,IAA4B,OAAO,aAAa,IAAI,IAAI,IAAI,EAAE;AAEtE,QAAI,QAAQ,KAAK,GAAG;AAClB,cAAQ;AAAA,QACN,IAAO,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAAA,QAC7C,IAAO,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAAA,MAC/C;AAAA,IACF,OAAO;AACL,eAAQ,SAAmB,OAAO,GAAG,IAAI,IAAI,KAAK,EAAE,MAA5C,YAAiD;AAAA,IAC3D;AAEA,QAAI,QAAQ,KAAK,GAAG;AAClB,YAAM,CAAC,YAAY,SAAS,IAAI;AAEhC,cAAQ,cAAc,UAAU,aAAa;AAE7C,UAAI,QAAQ,KAAK,GAAG;AAClB,cAAM,CAACA,aAAYC,UAAS,IAAI;AAEhC,eAAO,cAAc,UAAUD,cAAaC;AAAA,MAC9C,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":["lightValue","darkValue"]}