first commit
This commit is contained in:
98
frontend/node_modules/antd/lib/_util/PurePanel.js
generated
vendored
Normal file
98
frontend/node_modules/antd/lib/_util/PurePanel.js
generated
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
"use strict";
|
||||
"use client";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
exports.withPureRenderTheme = withPureRenderTheme;
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
var _useMergedState = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
|
||||
var _configProvider = _interopRequireWildcard(require("../config-provider"));
|
||||
function withPureRenderTheme(Component) {
|
||||
return props => (/*#__PURE__*/React.createElement(_configProvider.default, {
|
||||
theme: {
|
||||
token: {
|
||||
motion: false,
|
||||
zIndexPopupBase: 0
|
||||
}
|
||||
}
|
||||
}, /*#__PURE__*/React.createElement(Component, Object.assign({}, props))));
|
||||
}
|
||||
/* istanbul ignore next */
|
||||
const genPurePanel = (Component, alignPropName, postProps, defaultPrefixCls, getDropdownCls) => {
|
||||
const PurePanel = props => {
|
||||
const {
|
||||
prefixCls: customizePrefixCls,
|
||||
style
|
||||
} = props;
|
||||
const holderRef = React.useRef(null);
|
||||
const [popupHeight, setPopupHeight] = React.useState(0);
|
||||
const [popupWidth, setPopupWidth] = React.useState(0);
|
||||
const [open, setOpen] = (0, _useMergedState.default)(false, {
|
||||
value: props.open
|
||||
});
|
||||
const {
|
||||
getPrefixCls
|
||||
} = React.useContext(_configProvider.ConfigContext);
|
||||
const prefixCls = getPrefixCls(defaultPrefixCls || 'select', customizePrefixCls);
|
||||
React.useEffect(() => {
|
||||
// We do not care about ssr
|
||||
setOpen(true);
|
||||
if (typeof ResizeObserver !== 'undefined') {
|
||||
const resizeObserver = new ResizeObserver(entries => {
|
||||
const element = entries[0].target;
|
||||
setPopupHeight(element.offsetHeight + 8);
|
||||
setPopupWidth(element.offsetWidth);
|
||||
});
|
||||
const interval = setInterval(() => {
|
||||
var _a;
|
||||
const dropdownCls = getDropdownCls ? `.${getDropdownCls(prefixCls)}` : `.${prefixCls}-dropdown`;
|
||||
const popup = (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(dropdownCls);
|
||||
if (popup) {
|
||||
clearInterval(interval);
|
||||
resizeObserver.observe(popup);
|
||||
}
|
||||
}, 10);
|
||||
return () => {
|
||||
clearInterval(interval);
|
||||
resizeObserver.disconnect();
|
||||
};
|
||||
}
|
||||
}, [prefixCls]);
|
||||
let mergedProps = Object.assign(Object.assign({}, props), {
|
||||
style: Object.assign(Object.assign({}, style), {
|
||||
margin: 0
|
||||
}),
|
||||
open,
|
||||
visible: open,
|
||||
getPopupContainer: () => holderRef.current
|
||||
});
|
||||
if (postProps) {
|
||||
mergedProps = postProps(mergedProps);
|
||||
}
|
||||
if (alignPropName) {
|
||||
Object.assign(mergedProps, {
|
||||
[alignPropName]: {
|
||||
overflow: {
|
||||
adjustX: false,
|
||||
adjustY: false
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
const mergedStyle = {
|
||||
paddingBottom: popupHeight,
|
||||
position: 'relative',
|
||||
minWidth: popupWidth
|
||||
};
|
||||
return /*#__PURE__*/React.createElement("div", {
|
||||
ref: holderRef,
|
||||
style: mergedStyle
|
||||
}, /*#__PURE__*/React.createElement(Component, Object.assign({}, mergedProps)));
|
||||
};
|
||||
return withPureRenderTheme(PurePanel);
|
||||
};
|
||||
var _default = exports.default = genPurePanel;
|
||||
Reference in New Issue
Block a user