useCSSVarRegister.js 4.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. var _typeof = require("@babel/runtime/helpers/typeof");
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.extract = exports.default = exports.CSS_VAR_PREFIX = void 0;
  8. var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
  9. var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
  10. var _dynamicCSS = require("rc-util/lib/Dom/dynamicCSS");
  11. var _react = require("react");
  12. var _StyleContext = _interopRequireWildcard(require("../StyleContext"));
  13. var _util = require("../util");
  14. var _cssVariables = require("../util/css-variables");
  15. var _useGlobalCache = _interopRequireDefault(require("./useGlobalCache"));
  16. var _useStyleRegister = require("./useStyleRegister");
  17. function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
  18. function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
  19. var CSS_VAR_PREFIX = exports.CSS_VAR_PREFIX = 'cssVar';
  20. var useCSSVarRegister = function useCSSVarRegister(config, fn) {
  21. var key = config.key,
  22. prefix = config.prefix,
  23. unitless = config.unitless,
  24. ignore = config.ignore,
  25. token = config.token,
  26. _config$scope = config.scope,
  27. scope = _config$scope === void 0 ? '' : _config$scope;
  28. var _useContext = (0, _react.useContext)(_StyleContext.default),
  29. instanceId = _useContext.cache.instanceId,
  30. container = _useContext.container;
  31. var tokenKey = token._tokenKey;
  32. var stylePath = [].concat((0, _toConsumableArray2.default)(config.path), [key, scope, tokenKey]);
  33. var cache = (0, _useGlobalCache.default)(CSS_VAR_PREFIX, stylePath, function () {
  34. var originToken = fn();
  35. var _transformToken = (0, _cssVariables.transformToken)(originToken, key, {
  36. prefix: prefix,
  37. unitless: unitless,
  38. ignore: ignore,
  39. scope: scope
  40. }),
  41. _transformToken2 = (0, _slicedToArray2.default)(_transformToken, 2),
  42. mergedToken = _transformToken2[0],
  43. cssVarsStr = _transformToken2[1];
  44. var styleId = (0, _useStyleRegister.uniqueHash)(stylePath, cssVarsStr);
  45. return [mergedToken, cssVarsStr, styleId, key];
  46. }, function (_ref) {
  47. var _ref2 = (0, _slicedToArray2.default)(_ref, 3),
  48. styleId = _ref2[2];
  49. if (_util.isClientSide) {
  50. (0, _dynamicCSS.removeCSS)(styleId, {
  51. mark: _StyleContext.ATTR_MARK,
  52. attachTo: container
  53. });
  54. }
  55. }, function (_ref3) {
  56. var _ref4 = (0, _slicedToArray2.default)(_ref3, 3),
  57. cssVarsStr = _ref4[1],
  58. styleId = _ref4[2];
  59. if (!cssVarsStr) {
  60. return;
  61. }
  62. var style = (0, _dynamicCSS.updateCSS)(cssVarsStr, styleId, {
  63. mark: _StyleContext.ATTR_MARK,
  64. prepend: 'queue',
  65. attachTo: container,
  66. priority: -999
  67. });
  68. style[_StyleContext.CSS_IN_JS_INSTANCE] = instanceId;
  69. // Used for `useCacheToken` to remove on batch when token removed
  70. style.setAttribute(_StyleContext.ATTR_TOKEN, key);
  71. });
  72. return cache;
  73. };
  74. var extract = exports.extract = function extract(cache, effectStyles, options) {
  75. var _cache = (0, _slicedToArray2.default)(cache, 4),
  76. styleStr = _cache[1],
  77. styleId = _cache[2],
  78. cssVarKey = _cache[3];
  79. var _ref5 = options || {},
  80. plain = _ref5.plain;
  81. if (!styleStr) {
  82. return null;
  83. }
  84. var order = -999;
  85. // ====================== Style ======================
  86. // Used for rc-util
  87. var sharedAttrs = {
  88. 'data-rc-order': 'prependQueue',
  89. 'data-rc-priority': "".concat(order)
  90. };
  91. var styleText = (0, _util.toStyleStr)(styleStr, cssVarKey, styleId, sharedAttrs, plain);
  92. return [order, styleId, styleText];
  93. };
  94. var _default = exports.default = useCSSVarRegister;