@ucloud-pccl/react-components
Version:
UCloud pccl react components
75 lines (74 loc) • 4.25 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.usePanel = exports.useCollapse = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck"));
var _react = _interopRequireWildcard(require("react"));
var _group = require("../../hooks/group");
var _useUncontrolled5 = _interopRequireDefault(require("../../hooks/useUncontrolled"));
var _CollapseContext = _interopRequireDefault(require("./CollapseContext"));
var _this = void 0;
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
var useCollapse = exports.useCollapse = function useCollapse(_ref) {
var _this2 = this;
(0, _newArrowCheck2.default)(this, _this);
var _openKeys = _ref.openKeys,
_ref$defaultOpenKeys = _ref.defaultOpenKeys,
defaultOpenKeys = _ref$defaultOpenKeys === void 0 ? [] : _ref$defaultOpenKeys,
_onChange = _ref.onChange,
_ref$multiple = _ref.multiple,
multiple = _ref$multiple === void 0 ? true : _ref$multiple;
var _useUncontrolled = (0, _useUncontrolled5.default)(_openKeys, defaultOpenKeys, _onChange),
_useUncontrolled2 = (0, _slicedToArray2.default)(_useUncontrolled, 2),
openKeys = _useUncontrolled2[0],
onChangeS = _useUncontrolled2[1];
var onChange = (0, _react.useCallback)(function (keys) {
(0, _newArrowCheck2.default)(this, _this2);
onChangeS(keys);
}.bind(this), [onChangeS]);
var _useGroup = (0, _group.useGroup)(openKeys, onChange, multiple),
_useGroup2 = (0, _slicedToArray2.default)(_useGroup, 1),
collapseContext = _useGroup2[0];
return [collapseContext];
}.bind(void 0);
var usePanel = exports.usePanel = function usePanel(_ref2) {
var _this3 = this;
(0, _newArrowCheck2.default)(this, _this);
var _open = _ref2.open,
defaultOpen = _ref2.defaultOpen,
_onChange = _ref2.onChange,
disabled = _ref2.disabled,
_ref2$panelKey = _ref2.panelKey,
panelKey = _ref2$panelKey === void 0 ? '' : _ref2$panelKey,
forceRender = _ref2.forceRender,
ignoreUpdateWhenClose = _ref2.ignoreUpdateWhenClose;
var _useUncontrolled3 = (0, _useUncontrolled5.default)(_open, defaultOpen, _onChange),
_useUncontrolled4 = (0, _slicedToArray2.default)(_useUncontrolled3, 2),
openS = _useUncontrolled4[0],
onChange = _useUncontrolled4[1];
var collapseContext = (0, _react.useContext)(_CollapseContext.default);
var _useItem = (0, _group.useItem)(panelKey, collapseContext, openS),
_useItem2 = (0, _slicedToArray2.default)(_useItem, 2),
open = _useItem2[0],
toggle = _useItem2[1];
var handleToggle = (0, _react.useCallback)(function () {
(0, _newArrowCheck2.default)(this, _this3);
if (!disabled) {
onChange(!open);
toggle(!open);
}
}.bind(this), [disabled, onChange, open, toggle]);
var renderedRef = (0, _react.useRef)(false);
var shouldRender = (0, _react.useMemo)(function () {
(0, _newArrowCheck2.default)(this, _this3);
var shouldRender = forceRender || open || ignoreUpdateWhenClose && renderedRef.current || false;
if (renderedRef.current || shouldRender) renderedRef.current = shouldRender;
return shouldRender;
}.bind(this), [forceRender, ignoreUpdateWhenClose, open]);
return [shouldRender, open, handleToggle];
}.bind(void 0);