UNPKG

@ozen-ui/kit

Version:

React component library

84 lines (83 loc) 3.57 kB
"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;