antd
Version:
An enterprise-class UI design language and React components implementation
45 lines (44 loc) • 1.24 kB
JavaScript
"use client";
import React from 'react';
import { UniqueProvider as RcUniqueProvider } from '@rc-component/trigger';
import MotionContent from './MotionContent';
const cachedPlacements = [null, null];
function uniqueBuiltinPlacements(ori) {
if (cachedPlacements[0] !== ori) {
const target = {};
Object.keys(ori).forEach(placement => {
target[placement] = {
...ori[placement],
dynamicInset: false
};
});
cachedPlacements[0] = ori;
cachedPlacements[1] = target;
}
return cachedPlacements[1];
}
const UniqueProvider = ({
children
}) => {
const renderPopup = options => {
const popupEle = typeof options.popup === 'function' ? options.popup() : options.popup;
const {
id,
builtinPlacements
} = options;
const parsedPlacements = uniqueBuiltinPlacements(builtinPlacements);
return {
...options,
getPopupContainer: null,
arrow: false,
popup: /*#__PURE__*/React.createElement(MotionContent, {
key: id
}, popupEle),
builtinPlacements: parsedPlacements
};
};
return /*#__PURE__*/React.createElement(RcUniqueProvider, {
postTriggerProps: renderPopup
}, children);
};
export default UniqueProvider;