{"version":3,"file":"genComponentStyleHook.cjs","sources":["../../../../../../packages/theme/token/util/genComponentStyleHook.ts"],"sourcesContent":["import type { Ref } from 'vue';\nimport type { CSSInterpolation } from '../../cssinjs';\nimport type { ComponentTokenMap, GlobalToken, UseComponentStyleResult } from '../interface';\nimport { useConfigContextInject } from '@antdv/components/config-provider/src/context';\nimport { computed } from 'vue';\nimport { useStyleRegister } from '../../cssinjs';\nimport { genCommonStyle, genLinkStyle } from '../../style';\n\nimport { useToken } from '../internal';\nimport statisticToken, { merge as mergeToken } from './statistic';\n\nexport type OverrideTokenWithoutDerivative = ComponentTokenMap;\nexport type OverrideComponent = keyof OverrideTokenWithoutDerivative;\nexport type GlobalTokenWithComponent<ComponentName extends OverrideComponent> = GlobalToken &\nComponentTokenMap[ComponentName];\n\nexport interface StyleInfo<ComponentName extends OverrideComponent> {\n  hashId: string\n  prefixCls: string\n  rootPrefixCls: string\n  iconPrefixCls: string\n  overrideComponentToken: ComponentTokenMap[ComponentName]\n}\n\nexport type TokenWithCommonCls<T> = T & {\n  /** Wrap component class with `.` prefix */\n  componentCls: string\n  /** Origin prefix which do not have `.` prefix */\n  prefixCls: string\n  /** Wrap icon class with `.` prefix */\n  iconCls: string\n  /** Wrap ant prefixCls class with `.` prefix */\n  antCls: string\n};\nexport type FullToken<ComponentName extends OverrideComponent> = TokenWithCommonCls<\n  GlobalTokenWithComponent<ComponentName>\n>;\n\nexport default function genComponentStyleHook<ComponentName extends OverrideComponent>(\n  component: ComponentName,\n  styleFn: (token: FullToken<ComponentName>, info: StyleInfo<ComponentName>) => CSSInterpolation,\n  getDefaultToken?:\n  | OverrideTokenWithoutDerivative[ComponentName]\n  | ((token: GlobalToken) => OverrideTokenWithoutDerivative[ComponentName]),\n) {\n  return (_prefixCls?: Ref<string>): UseComponentStyleResult => {\n    const prefixCls = computed(() => _prefixCls?.value);\n    const [theme, token, hashId] = useToken();\n    const { getPrefixCls, iconPrefixCls } = useConfigContextInject();\n    const rootPrefixCls = computed(() => getPrefixCls());\n    const sharedInfo = computed(() => {\n      return {\n        theme: theme.value,\n        token: token.value,\n        hashId: hashId.value,\n        path: ['Shared', rootPrefixCls.value],\n      };\n    });\n    // Generate style for all a tags in antd component.\n    useStyleRegister(sharedInfo, () => [\n      {\n        // Link\n        '&': genLinkStyle(token.value),\n      },\n    ]);\n    const componentInfo = computed(() => {\n      return {\n        theme: theme.value,\n        token: token.value,\n        hashId: hashId.value,\n        path: [component, prefixCls.value, iconPrefixCls.value],\n      };\n    });\n    return [\n      useStyleRegister(componentInfo, () => {\n        const { token: proxyToken, flush } = statisticToken(token.value);\n\n        const defaultComponentToken\n          = typeof getDefaultToken === 'function'\n            ? (getDefaultToken as any)(proxyToken)\n            : getDefaultToken;\n        const mergedComponentToken = { ...defaultComponentToken, ...token.value[component] };\n\n        const componentCls = `.${prefixCls.value}`;\n        const mergedToken = mergeToken<\n          TokenWithCommonCls<GlobalTokenWithComponent<OverrideComponent>>\n        >(\n          proxyToken,\n          {\n            componentCls,\n            prefixCls: prefixCls.value,\n            iconCls: `.${iconPrefixCls.value}`,\n            antCls: `.${rootPrefixCls.value}`,\n          },\n          mergedComponentToken,\n        );\n        const styleInterpolation = styleFn(mergedToken as unknown as FullToken<ComponentName>, {\n          hashId: hashId.value,\n          prefixCls: prefixCls.value,\n          rootPrefixCls: rootPrefixCls.value,\n          iconPrefixCls: iconPrefixCls.value,\n          overrideComponentToken: token.value[component],\n        });\n        flush(component, mergedComponentToken);\n        return [genCommonStyle(token.value, prefixCls.value), styleInterpolation];\n      }),\n      hashId,\n    ];\n  };\n}\n"],"names":["computed","useToken","useConfigContextInject","useStyleRegister","genLinkStyle","statisticToken","mergeToken","genCommonStyle"],"mappings":";;;;;;;;;;;;;AAsCwB,SAAA,qBAAA,CACtB,SACA,EAAA,OAAA,EACA,eAGA,EAAA;AACA,EAAA,OAAO,CAAC,UAAsD,KAAA;AAC5D,IAAA,MAAM,SAAY,GAAAA,YAAA,CAAS,MAAM,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,KAAK,CAAA,CAAA;AAClD,IAAA,MAAM,CAAC,KAAA,EAAO,KAAO,EAAA,MAAM,IAAIC,iBAAS,EAAA,CAAA;AACxC,IAAA,MAAM,EAAE,YAAA,EAAc,aAAc,EAAA,GAAIC,8BAAuB,EAAA,CAAA;AAC/D,IAAA,MAAM,aAAgB,GAAAF,YAAA,CAAS,MAAM,YAAA,EAAc,CAAA,CAAA;AACnD,IAAM,MAAA,UAAA,GAAaA,aAAS,MAAM;AAChC,MAAO,OAAA;AAAA,QACL,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,QAAQ,MAAO,CAAA,KAAA;AAAA,QACf,IAAM,EAAA,CAAC,QAAU,EAAA,aAAA,CAAc,KAAK,CAAA;AAAA,OACtC,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAAG,aAAA,CAAiB,YAAY,MAAM;AAAA,MACjC;AAAA;AAAA,QAEE,GAAA,EAAKC,oBAAa,CAAA,KAAA,CAAM,KAAK,CAAA;AAAA,OAC/B;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,aAAA,GAAgBJ,aAAS,MAAM;AACnC,MAAO,OAAA;AAAA,QACL,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,QAAQ,MAAO,CAAA,KAAA;AAAA,QACf,MAAM,CAAC,SAAA,EAAW,SAAU,CAAA,KAAA,EAAO,cAAc,KAAK,CAAA;AAAA,OACxD,CAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA;AAAA,MACLG,aAAA,CAAiB,eAAe,MAAM;AACpC,QAAA,MAAM,EAAE,KAAO,EAAA,UAAA,EAAY,OAAU,GAAAE,iBAAA,CAAe,MAAM,KAAK,CAAA,CAAA;AAE/D,QAAA,MAAM,wBACF,OAAO,eAAA,KAAoB,UACxB,GAAA,eAAA,CAAwB,UAAU,CACnC,GAAA,eAAA,CAAA;AACN,QAAM,MAAA,oBAAA,GAAuB,EAAE,GAAG,qBAAA,EAAuB,GAAG,KAAM,CAAA,KAAA,CAAM,SAAS,CAAE,EAAA,CAAA;AAEnF,QAAM,MAAA,YAAA,GAAe,CAAI,CAAA,EAAA,SAAA,CAAU,KAAK,CAAA,CAAA,CAAA;AACxC,QAAA,MAAM,WAAc,GAAAC,eAAA;AAAA,UAGlB,UAAA;AAAA,UACA;AAAA,YACE,YAAA;AAAA,YACA,WAAW,SAAU,CAAA,KAAA;AAAA,YACrB,OAAA,EAAS,CAAI,CAAA,EAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAAA,YAChC,MAAA,EAAQ,CAAI,CAAA,EAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAAA,WACjC;AAAA,UACA,oBAAA;AAAA,SACF,CAAA;AACA,QAAM,MAAA,kBAAA,GAAqB,QAAQ,WAAoD,EAAA;AAAA,UACrF,QAAQ,MAAO,CAAA,KAAA;AAAA,UACf,WAAW,SAAU,CAAA,KAAA;AAAA,UACrB,eAAe,aAAc,CAAA,KAAA;AAAA,UAC7B,eAAe,aAAc,CAAA,KAAA;AAAA,UAC7B,sBAAA,EAAwB,KAAM,CAAA,KAAA,CAAM,SAAS,CAAA;AAAA,SAC9C,CAAA,CAAA;AACD,QAAA,KAAA,CAAM,WAAW,oBAAoB,CAAA,CAAA;AACrC,QAAA,OAAO,CAACC,sBAAe,CAAA,KAAA,CAAM,OAAO,SAAU,CAAA,KAAK,GAAG,kBAAkB,CAAA,CAAA;AAAA,OACzE,CAAA;AAAA,MACD,MAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AACF;;;;"}