{"version":3,"file":"internal.cjs","sources":["../../../../../packages/theme/token/internal.ts"],"sourcesContent":["import type { ComputedRef, InjectionKey } from 'vue';\n\nimport type { Theme } from '../cssinjs';\nimport type { AliasToken, GlobalToken, MapToken, OverrideToken, SeedToken } from './interface';\nimport { objectType } from '@antdv/utils';\nimport { version } from '@antdv/version';\nimport {\n  computed,\n  defineComponent,\n  inject,\n  provide,\n  shallowRef,\n  triggerRef,\n  unref,\n  watch,\n} from 'vue';\n\nimport { createTheme, useCacheToken } from '../cssinjs';\nimport defaultDerivative from './themes/default';\nimport defaultSeedToken from './themes/seed';\nimport formatToken from './util/alias';\n\nconst defaultTheme = createTheme(defaultDerivative);\n\n// ================================ Context =================================\n// To ensure snapshot stable. We disable hashed in test env.\nexport const defaultConfig = {\n  token: defaultSeedToken,\n  hashed: true,\n};\n\nexport interface DesignTokenContext {\n  token: Partial<AliasToken>\n  theme?: Theme<SeedToken, MapToken>\n  components?: OverrideToken\n  hashed?: string | boolean\n}\n// defaultConfig\nconst DesignTokenContextKey: InjectionKey<ComputedRef<DesignTokenContext>> = Symbol('DesignTokenContext');\n\nexport const globalDesignTokenApi = shallowRef<DesignTokenContext>();\n\nexport function useDesignTokenProvider(value: ComputedRef<DesignTokenContext>) {\n  provide(DesignTokenContextKey, value);\n  watch(\n    value,\n    () => {\n      globalDesignTokenApi.value = unref(value);\n      triggerRef(globalDesignTokenApi);\n    },\n    { immediate: true, deep: true },\n  );\n}\n\nexport function useDesignTokenInject() {\n  return inject(\n    DesignTokenContextKey,\n    computed(() => globalDesignTokenApi.value || defaultConfig),\n  );\n}\nexport const DesignTokenProvider = defineComponent({\n  props: {\n    value: objectType<DesignTokenContext>(),\n  },\n  setup(props, { slots }) {\n    useDesignTokenProvider(computed(() => props.value));\n    return () => {\n      return slots.default?.();\n    };\n  },\n});\n// ================================== Hook ==================================\nexport function useToken(): [\n  ComputedRef<Theme<SeedToken, MapToken>>,\n  ComputedRef<GlobalToken>,\n  ComputedRef<string>,\n] {\n  const designTokenContext = inject<ComputedRef<DesignTokenContext>>(\n    DesignTokenContextKey,\n    computed(() => defaultConfig),\n  );\n\n  const salt = computed(() => `${version}-${designTokenContext.value.hashed || ''}`);\n\n  const mergedTheme = computed(() => designTokenContext.value.theme || defaultTheme);\n\n  const cacheToken = useCacheToken<GlobalToken, SeedToken>(\n    mergedTheme,\n    computed(() => [defaultSeedToken, designTokenContext.value.token]),\n    computed(() => ({\n      salt: salt.value,\n      override: {\n        override: designTokenContext.value.token,\n        ...designTokenContext.value.components,\n      },\n      formatToken,\n    })),\n  );\n\n  return [\n    mergedTheme,\n    computed(() => cacheToken.value[0]),\n    computed(() => (designTokenContext.value.hashed ? cacheToken.value[1] : '')),\n  ];\n}\n"],"names":["createTheme","defaultDerivative","defaultSeedToken","shallowRef","provide","watch","unref","triggerRef","inject","computed","defineComponent","objectType","version","useCacheToken","formatToken"],"mappings":";;;;;;;;;;;;;;AAsBA,MAAM,YAAA,GAAeA,oBAAYC,aAAiB,CAAA,CAAA;AAI3C,MAAM,aAAgB,GAAA;AAAA,EAC3B,KAAO,EAAAC,YAAA;AAAA,EACP,MAAQ,EAAA,IAAA;AACV,EAAA;AASA,MAAM,qBAAA,GAAuE,OAAO,oBAAoB,CAAA,CAAA;AAEjG,MAAM,uBAAuBC,cAA+B,GAAA;AAE5D,SAAS,uBAAuB,KAAwC,EAAA;AAC7E,EAAAC,WAAA,CAAQ,uBAAuB,KAAK,CAAA,CAAA;AACpC,EAAAC,SAAA;AAAA,IACE,KAAA;AAAA,IACA,MAAM;AACJ,MAAqB,oBAAA,CAAA,KAAA,GAAQC,UAAM,KAAK,CAAA,CAAA;AACxC,MAAAC,cAAA,CAAW,oBAAoB,CAAA,CAAA;AAAA,KACjC;AAAA,IACA,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,IAAK,EAAA;AAAA,GAChC,CAAA;AACF,CAAA;AAEO,SAAS,oBAAuB,GAAA;AACrC,EAAO,OAAAC,UAAA;AAAA,IACL,qBAAA;AAAA,IACAC,YAAS,CAAA,MAAM,oBAAqB,CAAA,KAAA,IAAS,aAAa,CAAA;AAAA,GAC5D,CAAA;AACF,CAAA;AACO,MAAM,sBAAsBC,mBAAgB,CAAA;AAAA,EACjD,KAAO,EAAA;AAAA,IACL,OAAOC,mBAA+B,EAAA;AAAA,GACxC;AAAA,EACA,KAAM,CAAA,KAAA,EAAO,EAAE,KAAA,EAAS,EAAA;AACtB,IAAA,sBAAA,CAAuBF,YAAS,CAAA,MAAM,KAAM,CAAA,KAAK,CAAC,CAAA,CAAA;AAClD,IAAA,OAAO,MAAM;AAlEjB,MAAA,IAAA,EAAA,CAAA;AAmEM,MAAA,OAAA,CAAO,WAAM,OAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACT,CAAA;AAAA,GACF;AACF,CAAC,EAAA;AAEM,SAAS,QAId,GAAA;AACA,EAAA,MAAM,kBAAqB,GAAAD,UAAA;AAAA,IACzB,qBAAA;AAAA,IACAC,YAAA,CAAS,MAAM,aAAa,CAAA;AAAA,GAC9B,CAAA;AAEA,EAAM,MAAA,IAAA,GAAOA,YAAS,CAAA,MAAM,CAAG,EAAAG,eAAO,IAAI,kBAAmB,CAAA,KAAA,CAAM,MAAU,IAAA,EAAE,CAAE,CAAA,CAAA,CAAA;AAEjF,EAAA,MAAM,cAAcH,YAAS,CAAA,MAAM,kBAAmB,CAAA,KAAA,CAAM,SAAS,YAAY,CAAA,CAAA;AAEjF,EAAA,MAAM,UAAa,GAAAI,qBAAA;AAAA,IACjB,WAAA;AAAA,IACAJ,aAAS,MAAM,CAACP,cAAkB,kBAAmB,CAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,IACjEO,aAAS,OAAO;AAAA,MACd,MAAM,IAAK,CAAA,KAAA;AAAA,MACX,QAAU,EAAA;AAAA,QACR,QAAA,EAAU,mBAAmB,KAAM,CAAA,KAAA;AAAA,QACnC,GAAG,mBAAmB,KAAM,CAAA,UAAA;AAAA,OAC9B;AAAA,mBACAK,aAAA;AAAA,KACA,CAAA,CAAA;AAAA,GACJ,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACAL,YAAS,CAAA,MAAM,UAAW,CAAA,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,IAClCA,YAAA,CAAS,MAAO,kBAAmB,CAAA,KAAA,CAAM,SAAS,UAAW,CAAA,KAAA,CAAM,CAAC,CAAA,GAAI,EAAG,CAAA;AAAA,GAC7E,CAAA;AACF;;;;;;;;;"}