UNPKG

1.2 kBJavaScriptView Raw
1import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3var _excluded = ["children", "locked"];
4import * as React from 'react';
5import useMemo from "rc-util/es/hooks/useMemo";
6import shallowEqual from 'shallowequal';
7export var MenuContext = /*#__PURE__*/React.createContext(null);
8
9function mergeProps(origin, target) {
10 var clone = _objectSpread({}, origin);
11
12 Object.keys(target).forEach(function (key) {
13 var value = target[key];
14
15 if (value !== undefined) {
16 clone[key] = value;
17 }
18 });
19 return clone;
20}
21
22export default function InheritableContextProvider(_ref) {
23 var children = _ref.children,
24 locked = _ref.locked,
25 restProps = _objectWithoutProperties(_ref, _excluded);
26
27 var context = React.useContext(MenuContext);
28 var inheritableContext = useMemo(function () {
29 return mergeProps(context, restProps);
30 }, [context, restProps], function (prev, next) {
31 return !locked && (prev[0] !== next[0] || !shallowEqual(prev[1], next[1]));
32 });
33 return /*#__PURE__*/React.createElement(MenuContext.Provider, {
34 value: inheritableContext
35 }, children);
36}
\No newline at end of file