import { type CSSProperties, type Dispatch, type SetStateAction, type UIEventHandler } from 'react'; import { type SnapPoint, type SnapPointChange } from './controllers/BottomSheetController'; export type UseBottomSheetOptions = { sheetCSSProperty: string; backdropCSSProperty: string; snapPoint: SnapPoint; blocked?: boolean; onSnapPointChange?: SnapPointChange; onDismiss?: VoidFunction; }; export type UseBottomSheetHandlers = { onTouchStart: UIEventHandler; onTouchMove: UIEventHandler; onTouchEnd: UIEventHandler; onTouchCancel: UIEventHandler; onMouseDown: UIEventHandler; onMouseMove: UIEventHandler; onMouseUp: UIEventHandler; onMouseLeave: UIEventHandler; }; export type UseBottomSheetResult = [ { initialStyle?: CSSProperties; setSheetEl: Dispatch>; setSheetScrollEl: Dispatch>; setBackdropEl: Dispatch>; }, UseBottomSheetHandlers | undefined ]; /** * # Checklist * * ## Возможности * * - [x] есть возможность открывать до определенного размера (см. `snapPoint`) * - [x] есть возможность закрыть при сильном смахивании вниз * - [x] есть возможность отключить взаимодействие на определённых элементах используя data-атрибут * - [x] есть возможность отключить взаимодействие на определённых элементах используя stopPropagation() * * ## Анимации * * - [x] оверлей становится светлее в зависимости от процента сворачивания * - [x] при `snapPoint !== 'auto'` процент высчитывается относительно переданного `snapPoint.initial` * - [x] при перетаскивании за пределы есть анимация натяжения * > note: в `ModalPage` этого эффекта нет при высоте 100% из-за `max-block-size: 100%` * * ## Пограничные кейсы * * - [x] ⚠️ не блокирует взаимодействие с _горизонтальным_ скроллом * - [x] ⚠️ не блокирует взаимодействие с _вертикальным_ скроллом * - [x] ⚠️ не блокирует взаимодействие с полями ввода * - [x] ⚠️ не блокирует взаимодействие с элементами вне корневого элемента * * @private */ export declare const useBottomSheet: (enabled: boolean, { blocked, snapPoint, sheetCSSProperty, backdropCSSProperty, onSnapPointChange: onSnapPointChangeProp, onDismiss: onDismissProp, }: UseBottomSheetOptions) => UseBottomSheetResult; //# sourceMappingURL=useBottomSheet.d.ts.map