@ozen-ui/kit
Version:
React component library
84 lines (83 loc) • 3.57 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BottomSheetBaseContextProvider = void 0;
var tslib_1 = require("tslib");
var react_1 = tslib_1.__importStar(require("react"));
var useStoredValue_1 = require("../../../hooks/useStoredValue");
var hooks_1 = require("../hooks");
var utils_1 = require("../utils");
var BottomSheetBaseContext_1 = require("./BottomSheetBaseContext");
var BottomSheetBaseContextProvider = function (_a) {
var children = _a.children, isOpen = _a.isOpen, snapsProp = _a.snaps, maxHeightProp = _a.maxHeight, defaultSnapProp = _a.defaultSnap, onClose = _a.onClose, isClosable = _a.isClosable, setIsAnimating = _a.setIsAnimating;
var rootRef = (0, react_1.useRef)(null);
var scrollRef = (0, react_1.useRef)(null);
var contentRef = (0, react_1.useRef)(null);
var blocksRefs = (0, useStoredValue_1.useStoredValue)({});
var _b = (0, hooks_1.useBottomSheetBaseReady)(), isReady = _b.isReady, registerReady = _b.registerReady;
var canDrag = (0, useStoredValue_1.useStoredValue)(true);
var _c = (0, hooks_1.useBottomSheetBaseHeight)({
customMaxHeight: maxHeightProp,
contentRef: contentRef,
registerReady: registerReady,
blocksRefs: blocksRefs,
}), minHeight = _c.minHeight, maxHeight = _c.maxHeight, recalculateHeight = _c.recalculateHeight;
var addBlockRef = function (id, instance) {
blocksRefs.current[id] = instance;
recalculateHeight();
};
var _d = (0, utils_1.bottomSheetCalculateSnaps)({
minHeight: minHeight,
maxHeight: maxHeight,
isReady: isReady,
snaps: snapsProp,
defaultSnap: defaultSnapProp,
}), minSnap = _d.minSnap, maxSnap = _d.maxSnap, defaultSnap = _d.defaultSnap, snaps = _d.snaps, findClosestSnapFn = _d.findClosestSnap;
var findClosestSnap = (0, useStoredValue_1.useStoredValue)(function () { return findClosestSnapFn; });
(0, react_1.useEffect)(function () {
findClosestSnap.current = findClosestSnapFn;
}, [findClosestSnapFn]);
var snapsControl = (0, hooks_1.useBottomSheetBaseSnaps)({
minSnap: minSnap,
maxSnap: maxSnap,
defaultSnap: defaultSnap,
rootRef: rootRef,
onAnimationStart: function () {
canDrag.current = false;
setIsAnimating(true);
},
onAnimationFinish: function () {
canDrag.current = true;
setIsAnimating(false);
},
isReady: isReady,
findClosestSnap: findClosestSnap,
});
(0, react_1.useEffect)(function () {
if (!isReady) {
return;
}
if (isOpen) {
snapsControl.toDefault(true);
}
else {
snapsControl.toClosed(true);
}
}, [isOpen, isReady]);
return (react_1.default.createElement(BottomSheetBaseContext_1.BottomSheetBaseContext.Provider, { value: {
rootRef: rootRef,
contentRef: contentRef,
scrollRef: scrollRef,
addBlockRef: addBlockRef,
blocksRefs: blocksRefs,
minSnap: minSnap,
maxSnap: maxSnap,
snaps: snaps,
defaultSnap: defaultSnap !== null && defaultSnap !== void 0 ? defaultSnap : minSnap,
onClose: onClose,
isClosable: isClosable,
canDrag: canDrag,
snapsControl: snapsControl,
findClosestSnap: findClosestSnap,
} }, children));
};
exports.BottomSheetBaseContextProvider = BottomSheetBaseContextProvider;