UNPKG

@razorpay/blade

Version:

The Design System that powers Razorpay

70 lines (67 loc) 2.75 kB
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray'; import _slicedToArray from '@babel/runtime/helpers/slicedToArray'; import React__default from 'react'; import { jsx } from 'react/jsx-runtime'; var BottomSheetStackContext = /*#__PURE__*/React__default.createContext({ stack: [], addBottomSheetToStack: function addBottomSheetToStack() {}, removeBottomSheetFromStack: function removeBottomSheetFromStack() {}, getTopOfTheStack: function getTopOfTheStack() { return null; }, getCurrentStackIndexById: function getCurrentStackIndexById() { return -1; } }); var BottomSheetStackProvider = function BottomSheetStackProvider(_ref) { var children = _ref.children; var _React$useState = React__default.useState([]), _React$useState2 = _slicedToArray(_React$useState, 2), stack = _React$useState2[0], setStack = _React$useState2[1]; var getTopOfTheStack = React__default.useCallback(function () { return stack[0] || null; }, [stack]); var addBottomSheetToStack = React__default.useCallback(function (id) { // id can be undefined since useId returns `undefined` on first render, // if we push undefined to the stack the `removeBottomSheetFromStack` will break // since it will try to match top of the stack with undefined if (id === undefined) return; setStack(function (prev) { return [id].concat(_toConsumableArray(prev)); }); }, []); var removeBottomSheetFromStack = React__default.useCallback(function (id) { setStack(function (prev) { var newStack = _toConsumableArray(prev); var popped = newStack.shift(); // only pop the stack if the passed in id is matched to the top of the stack if (popped === id) return newStack; return newStack; }); }, []); var getCurrentStackIndexById = React__default.useCallback(function (id) { return stack.findIndex(function (stackId) { return stackId === id; }); }, [stack]); var value = React__default.useMemo(function () { return { stack: stack, addBottomSheetToStack: addBottomSheetToStack, removeBottomSheetFromStack: removeBottomSheetFromStack, getTopOfTheStack: getTopOfTheStack, getCurrentStackIndexById: getCurrentStackIndexById }; }, [addBottomSheetToStack, getCurrentStackIndexById, getTopOfTheStack, removeBottomSheetFromStack, stack]); return /*#__PURE__*/jsx(BottomSheetStackContext.Provider, { value: value, children: children }); }; var useBottomSheetStack = function useBottomSheetStack() { var context = React__default.useContext(BottomSheetStackContext); return context; }; export { BottomSheetStackProvider, useBottomSheetStack }; //# sourceMappingURL=BottomSheetStack.js.map