genComponentStyleHook.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = genComponentStyleHook;
  7. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  8. var _cssinjs = require("../../_util/cssinjs");
  9. var _style = require("../../style");
  10. var _internal = require("../internal");
  11. var _vue = require("vue");
  12. var _context = require("../../config-provider/context");
  13. /* eslint-disable no-redeclare */
  14. function genComponentStyleHook(component, styleFn, getDefaultToken) {
  15. return _prefixCls => {
  16. const prefixCls = (0, _vue.computed)(() => _prefixCls === null || _prefixCls === void 0 ? void 0 : _prefixCls.value);
  17. const [theme, token, hashId] = (0, _internal.useToken)();
  18. const {
  19. getPrefixCls,
  20. iconPrefixCls
  21. } = (0, _context.useConfigContextInject)();
  22. const rootPrefixCls = (0, _vue.computed)(() => getPrefixCls());
  23. const sharedInfo = (0, _vue.computed)(() => {
  24. return {
  25. theme: theme.value,
  26. token: token.value,
  27. hashId: hashId.value,
  28. path: ['Shared', rootPrefixCls.value]
  29. };
  30. });
  31. // Generate style for all a tags in antd component.
  32. (0, _cssinjs.useStyleRegister)(sharedInfo, () => [{
  33. // Link
  34. '&': (0, _style.genLinkStyle)(token.value)
  35. }]);
  36. const componentInfo = (0, _vue.computed)(() => {
  37. return {
  38. theme: theme.value,
  39. token: token.value,
  40. hashId: hashId.value,
  41. path: [component, prefixCls.value, iconPrefixCls.value]
  42. };
  43. });
  44. return [(0, _cssinjs.useStyleRegister)(componentInfo, () => {
  45. const {
  46. token: proxyToken,
  47. flush
  48. } = (0, _internal.statisticToken)(token.value);
  49. const defaultComponentToken = typeof getDefaultToken === 'function' ? getDefaultToken(proxyToken) : getDefaultToken;
  50. const mergedComponentToken = (0, _extends2.default)((0, _extends2.default)({}, defaultComponentToken), token.value[component]);
  51. const componentCls = `.${prefixCls.value}`;
  52. const mergedToken = (0, _internal.mergeToken)(proxyToken, {
  53. componentCls,
  54. prefixCls: prefixCls.value,
  55. iconCls: `.${iconPrefixCls.value}`,
  56. antCls: `.${rootPrefixCls.value}`
  57. }, mergedComponentToken);
  58. const styleInterpolation = styleFn(mergedToken, {
  59. hashId: hashId.value,
  60. prefixCls: prefixCls.value,
  61. rootPrefixCls: rootPrefixCls.value,
  62. iconPrefixCls: iconPrefixCls.value,
  63. overrideComponentToken: token.value[component]
  64. });
  65. flush(component, mergedComponentToken);
  66. return [(0, _style.genCommonStyle)(token.value, prefixCls.value), styleInterpolation];
  67. }), hashId];
  68. };
  69. }