useCacheToken.d.ts 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import type Theme from '../theme/Theme';
  2. import type { ExtractStyle } from './useGlobalCache';
  3. export interface Option<DerivativeToken, DesignToken> {
  4. /**
  5. * Generate token with salt.
  6. * This is used to generate different hashId even same derivative token for different version.
  7. */
  8. salt?: string;
  9. override?: object;
  10. /**
  11. * Format token as you need. Such as:
  12. *
  13. * - rename token
  14. * - merge token
  15. * - delete token
  16. *
  17. * This should always be the same since it's one time process.
  18. * It's ok to useMemo outside but this has better cache strategy.
  19. */
  20. formatToken?: (mergedToken: any) => DerivativeToken;
  21. /**
  22. * Get final token with origin token, override token and theme.
  23. * The parameters do not contain formatToken since it's passed by user.
  24. * @param origin The original token.
  25. * @param override Extra tokens to override.
  26. * @param theme Theme instance. Could get derivative token by `theme.getDerivativeToken`
  27. */
  28. getComputedToken?: (origin: DesignToken, override: object, theme: Theme<any, any>) => DerivativeToken;
  29. /**
  30. * Transform token to css variables.
  31. */
  32. cssVar?: {
  33. /** Prefix for css variables */
  34. prefix?: string;
  35. /** Tokens that should not be appended with unit */
  36. unitless?: Record<string, boolean>;
  37. /** Tokens that should not be transformed to css variables */
  38. ignore?: Record<string, boolean>;
  39. /** Tokens that preserves origin value */
  40. preserve?: Record<string, boolean>;
  41. /** Key for current theme. Useful for customizing and should be unique */
  42. key?: string;
  43. };
  44. }
  45. export declare const getComputedToken: <DerivativeToken = object, DesignToken = DerivativeToken>(originToken: DesignToken, overrideToken: object, theme: Theme<any, any>, format?: ((token: DesignToken) => DerivativeToken) | undefined) => any;
  46. export declare const TOKEN_PREFIX = "token";
  47. type TokenCacheValue<DerivativeToken> = [
  48. token: DerivativeToken & {
  49. _tokenKey: string;
  50. _themeKey: string;
  51. },
  52. hashId: string,
  53. realToken: DerivativeToken & {
  54. _tokenKey: string;
  55. },
  56. cssVarStr: string,
  57. cssVarKey: string
  58. ];
  59. /**
  60. * Cache theme derivative token as global shared one
  61. * @param theme Theme entity
  62. * @param tokens List of tokens, used for cache. Please do not dynamic generate object directly
  63. * @param option Additional config
  64. * @returns Call Theme.getDerivativeToken(tokenObject) to get token
  65. */
  66. export default function useCacheToken<DerivativeToken = object, DesignToken = DerivativeToken>(theme: Theme<any, any>, tokens: Partial<DesignToken>[], option?: Option<DerivativeToken, DesignToken>): TokenCacheValue<DerivativeToken>;
  67. export declare const extract: ExtractStyle<TokenCacheValue<any>>;
  68. export {};