OverrideContext.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. "use client";
  2. var __rest = this && this.__rest || function (s, e) {
  3. var t = {};
  4. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  5. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  6. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  7. }
  8. return t;
  9. };
  10. import * as React from 'react';
  11. import { getNodeRef, supportNodeRef, useComposeRef } from "rc-util/es/ref";
  12. import ContextIsolator from '../_util/ContextIsolator';
  13. const OverrideContext = /*#__PURE__*/React.createContext(null);
  14. /** @internal Only used for Dropdown component. Do not use this in your production. */
  15. export const OverrideProvider = /*#__PURE__*/React.forwardRef((props, ref) => {
  16. const {
  17. children
  18. } = props,
  19. restProps = __rest(props, ["children"]);
  20. const override = React.useContext(OverrideContext);
  21. const context = React.useMemo(() => Object.assign(Object.assign({}, override), restProps), [override, restProps.prefixCls,
  22. // restProps.expandIcon, Not mark as deps since this is a ReactNode
  23. restProps.mode, restProps.selectable, restProps.rootClassName
  24. // restProps.validator, Not mark as deps since this is a function
  25. ]);
  26. const canRef = supportNodeRef(children);
  27. const mergedRef = useComposeRef(ref, canRef ? getNodeRef(children) : null);
  28. return /*#__PURE__*/React.createElement(OverrideContext.Provider, {
  29. value: context
  30. }, /*#__PURE__*/React.createElement(ContextIsolator, {
  31. space: true
  32. }, canRef ? /*#__PURE__*/React.cloneElement(children, {
  33. ref: mergedRef
  34. }) : children));
  35. });
  36. /** @internal Only used for Dropdown component. Do not use this in your production. */
  37. export default OverrideContext;