1 | import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
2 | import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
3 | var _excluded = ["children", "locked"];
|
4 | import * as React from 'react';
|
5 | import useMemo from "rc-util/es/hooks/useMemo";
|
6 | import shallowEqual from 'shallowequal';
|
7 | export var MenuContext = React.createContext(null);
|
8 |
|
9 | function 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 |
|
22 | export 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 React.createElement(MenuContext.Provider, {
|
34 | value: inheritableContext
|
35 | }, children);
|
36 | } |
\ | No newline at end of file |