@hh.ru/magritte-ui-bottom-sheet 4.1.40 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BottomSheet.js +394 -354
- package/BottomSheet.js.map +1 -1
- package/BottomSheetFooter.js +1 -1
- package/bottom-sheet-C_sZ1cCA.js +5 -0
- package/bottom-sheet-C_sZ1cCA.js.map +1 -0
- package/index.css +93 -141
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/index.mock.d.ts +1 -0
- package/index.mock.js +4 -1
- package/index.mock.js.map +1 -1
- package/package.json +4 -3
- package/types.d.ts +2 -7
- package/bottom-sheet-Uf681RNm.js +0 -5
- package/bottom-sheet-Uf681RNm.js.map +0 -1
package/BottomSheet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheet.js","sources":["../src/BottomSheet.tsx"],"sourcesContent":["import {\n FocusEventHandler,\n ForwardRefRenderFunction,\n RefObject,\n TouchEventHandler,\n forwardRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { Transition, TransitionStatus } from 'react-transition-group';\nimport classnames from 'classnames';\n\nimport { disableOverscroll, disableScroll } from '@hh.ru/magritte-common-modal-helper';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useNoBubbling } from '@hh.ru/magritte-common-use-no-bubbling';\nimport { useSwipe, SwipeEventHandler } from '@hh.ru/magritte-common-use-swipe';\nimport { InternalLayerName } from '@hh.ru/magritte-internal-layer-name';\nimport { BottomSheetContext } from '@hh.ru/magritte-ui-bottom-sheet/BottomSheetContext';\nimport { ClickInterceptor } from '@hh.ru/magritte-ui-bottom-sheet/ClickInterceptor';\nimport { BottomSheetProps } from '@hh.ru/magritte-ui-bottom-sheet/types';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { NavigationBarContext, type NavigationBarContextProps } from '@hh.ru/magritte-ui-navigation-bar';\n\nimport styles from './bottom-sheet.less';\n\nconst CSS_VAR_CONTENT_OVERLAY_TOP = '--content-overlay-top';\nconst CSS_VAR_CONTENT_OVERLAY_HEIGHT = '--content-overlay-height';\nconst CSS_VAR_INITIAL_VIEWPORT_HEIGHT = '--initial-viewport-height';\nconst CSS_VAR_ENTER_ANIMATION_DURATION = '--enter-animation-duration';\nconst CSS_VAR_EXIT_ANIMATION_DURATION = '--exit-animation-duration';\nconst CSS_VAR_HEIGHT_ANIMATION_DURATION = '--height-transition-duration';\nconst CSS_VAR_OVERLAY_OPACITY = '--overlay-opacity';\nconst CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET = '--virtual-keyboard-top-offset';\nconst CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET = '--virtual-keyboard-bottom-offset';\n\nconst INITIAL_VIEWPORT_HEIGHT = (typeof window !== 'undefined' ? window.visualViewport?.height : null) ?? 0;\nconst NAVIGATION_BAR_SIZE_OVERRIDE: NavigationBarContextProps = { size: 'standard' };\nconst SWIPE_THRESHOLD_REF = { current: { max: Math.round(INITIAL_VIEWPORT_HEIGHT * 0.8) } };\n\nconst forceRepaint = (node: HTMLElement) => node.scrollTop;\n\nconst isSafari = typeof navigator !== 'undefined' && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nconst toNumber = (value: string) => {\n const result = parseInt(value, 10);\n return Number.isInteger(result) ? result : 0;\n};\n\ntype AnimationTimeout = { [AnimationType in 'appear' | 'height']: { [AnimationStage in 'enter' | 'exit']: number } };\n\ntype LayoutMetrics = {\n documentHeight: number;\n fillHeight: number;\n grabberSpacing: number;\n viewportShift: number;\n};\n\ntype BottomSheetState = {\n grabber: 'sticky' | 'sticky-inside' | 'fake-sticky' | 'fixed';\n hasFocus: boolean;\n isSwipeEnabled: boolean;\n isSwipeInProgress: boolean;\n swipeOffset: number;\n resizeRAFHandle: ReturnType<typeof requestAnimationFrame> | null;\n virtualKeyboardHeight: number;\n};\n\nconst changeSwipeProgressState = (\n state: RefObject<BottomSheetState>,\n scrollContainerRef: RefObject<HTMLDivElement | null>,\n isSwipeInProgress: boolean,\n allowScrollWhileFocused: boolean\n) => {\n if (!state.current) {\n return;\n }\n state.current.isSwipeInProgress = isSwipeInProgress;\n if (!scrollContainerRef.current) {\n return;\n }\n\n scrollContainerRef.current.classList.toggle(\n styles.scrollContainerNoScroll,\n isSwipeInProgress || (!allowScrollWhileFocused && state.current.hasFocus)\n );\n};\n\nconst BottomSheetRenderFunc: ForwardRefRenderFunction<HTMLElement, BottomSheetProps> = (\n {\n allowScrollWhileFocused,\n children,\n footer,\n header,\n height = 'content',\n interceptClickHandlers = true,\n keyboardOverlaysContent = true,\n onAppear,\n onBeforeExit,\n onAfterExit,\n onClose,\n showDivider = 'always-if-has-scroll',\n showOverlay = true,\n visible = false,\n withContentPaddings = true,\n },\n ref\n) => {\n const contentRef = useRef<HTMLDivElement | null>(null);\n const contentOverlayRef = useRef<HTMLDivElement | null>(null);\n const cssVariablesContainerRef = useRef<HTMLDivElement | null>(null);\n const fixedGrabberRef = useRef<HTMLDivElement | null>(null);\n const footerRef = useRef<HTMLDivElement | null>(null);\n const headerRef = useRef<HTMLDivElement | null>(null);\n const heightTransitionElementRef = useRef<HTMLDivElement | null>(null);\n const scrollContainerRef = useRef<HTMLDivElement | null>(null);\n const stickyGrabberRef = useRef<HTMLDivElement | null>(null);\n const scrollContainerRefMulti = useMultipleRefs(scrollContainerRef, ref);\n const { isMobile } = useBreakpoint();\n const currentVisible = isMobile && visible;\n\n const layoutMetricsRef = useRef<LayoutMetrics>({\n documentHeight: 0,\n fillHeight: 0,\n grabberSpacing: 0,\n viewportShift: 0,\n });\n\n const prevPropsRef = useRef<{\n children: typeof children;\n height: typeof height;\n visible: typeof visible;\n }>({ children, height, visible });\n\n const stateRef = useRef<BottomSheetState>({\n grabber: 'sticky',\n hasFocus: false,\n isSwipeEnabled: false,\n isSwipeInProgress: false,\n swipeOffset: 0,\n resizeRAFHandle: null,\n virtualKeyboardHeight: 0,\n });\n\n const [animationTimeout, setAnimationTimeout] = useState<AnimationTimeout | null>(null);\n const [heightDiff, setHeightDiff] = useState<number | null>(null);\n const [isDividerVisible, setDividerVisible] = useState(false);\n const [onCloseContractCheck, setOnCloseContractCheck] = useState(false);\n\n const setCSSVariable = (name: string, value: string) =>\n cssVariablesContainerRef.current !== null && cssVariablesContainerRef.current.style.setProperty(name, value);\n\n useEffect(() => {\n if (!currentVisible) {\n return void 0;\n }\n\n layoutMetricsRef.current.documentHeight = document.documentElement.clientHeight;\n\n if (!showOverlay) {\n const enableOverscroll = disableOverscroll();\n return enableOverscroll;\n }\n\n const enableScroll = disableScroll();\n return enableScroll;\n }, [showOverlay, currentVisible]);\n\n useEffect(() => {\n const animationTimeoutElement = document.createElement('div');\n animationTimeoutElement.classList.add(styles.animationTimeout);\n document.body.appendChild(animationTimeoutElement);\n const style = window.getComputedStyle(animationTimeoutElement);\n const enter = toNumber(style.getPropertyValue(CSS_VAR_ENTER_ANIMATION_DURATION));\n const exit = toNumber(style.getPropertyValue(CSS_VAR_EXIT_ANIMATION_DURATION));\n const height = toNumber(style.getPropertyValue(CSS_VAR_HEIGHT_ANIMATION_DURATION));\n document.body.removeChild(animationTimeoutElement);\n setAnimationTimeout({ appear: { enter, exit }, height: { enter: height, exit } });\n }, [setAnimationTimeout]);\n\n // Пересчитывает флаги отображения граббера и дивайдера в зависимости от скролла\n const recalcScrollFlags = useCallback(() => {\n // расчет состояния граббера в зависимости от того, проскроллен ли контент до верхней границы вьюпорта\n requestAnimationFrame(() => {\n if (fixedGrabberRef.current !== null && stickyGrabberRef.current !== null) {\n const stickyGrabberDOMRect = stickyGrabberRef.current.getBoundingClientRect();\n const grabberTop = Math.round(stickyGrabberDOMRect.top);\n\n if (grabberTop >= layoutMetricsRef.current.grabberSpacing * 2 || heightDiff !== null) {\n if (stateRef.current.grabber !== 'sticky') {\n stateRef.current.grabber = 'sticky';\n stickyGrabberRef.current.classList.remove(styles.grabberInvisible);\n fixedGrabberRef.current.classList.add(styles.grabberInvisible);\n fixedGrabberRef.current.classList.remove(styles.grabberFixed, styles.grabberFakeSticky);\n fixedGrabberRef.current.style.top = ``;\n }\n } else if (grabberTop > layoutMetricsRef.current.grabberSpacing) {\n if (stateRef.current.grabber !== 'fake-sticky') {\n stateRef.current.grabber = 'fake-sticky';\n stickyGrabberRef.current.classList.add(styles.grabberInvisible);\n fixedGrabberRef.current.classList.add(styles.grabberFakeSticky);\n fixedGrabberRef.current.classList.remove(styles.grabberSticky, styles.grabberInvisible);\n }\n fixedGrabberRef.current.style.top = `${grabberTop + layoutMetricsRef.current.viewportShift}px`;\n } else if (stateRef.current.grabber !== 'fixed') {\n stateRef.current.grabber = 'fixed';\n stickyGrabberRef.current.classList.add(styles.grabberInvisible);\n fixedGrabberRef.current.classList.add(styles.grabberFixed);\n fixedGrabberRef.current.classList.remove(styles.grabberFakeSticky, styles.grabberInvisible);\n fixedGrabberRef.current.style.top = ``;\n }\n }\n });\n\n // расчет того, нужно ли показывать дивайдер, в зависимости от того, проскроллен ли контент до конца\n if (contentRef.current !== null && scrollContainerRef.current !== null) {\n if (footer && (showDivider === 'always-if-has-scroll' || showDivider === 'if-not-scrolled-to-end')) {\n const hasScroll = contentRef.current.clientHeight > scrollContainerRef.current.clientHeight + 1;\n const isScrolledToContentEnd =\n Math.round(scrollContainerRef.current.scrollTop + scrollContainerRef.current.clientHeight) ===\n scrollContainerRef.current.scrollHeight;\n setDividerVisible(\n (showDivider === 'always-if-has-scroll' && hasScroll) ||\n (showDivider === 'if-not-scrolled-to-end' && hasScroll && !isScrolledToContentEnd)\n );\n }\n }\n }, [footer, heightDiff, setDividerVisible, showDivider]);\n\n const resetScrollFlags = useCallback(() => {\n if (fixedGrabberRef.current !== null && stickyGrabberRef.current !== null) {\n stateRef.current.grabber = 'sticky';\n\n fixedGrabberRef.current.classList.add(styles.grabberInvisible);\n fixedGrabberRef.current.classList.remove(styles.grabberTransitionAnimation);\n\n stickyGrabberRef.current.classList.remove(styles.grabberInvisible);\n }\n\n setDividerVisible(false);\n }, [setDividerVisible]);\n\n const resetHeightDiff = useCallback(() => setHeightDiff(null), [setHeightDiff]);\n\n useEffect(() => {\n const meta = document.querySelector('meta[name=\"viewport\"]') ?? document.createElement('meta');\n const attributesStr = meta.getAttribute('content');\n const attributes = (\n attributesStr !== null\n ? Object.fromEntries(attributesStr.split(',').map((keyValuePairStr) => keyValuePairStr.split('=')))\n : {}\n ) as Record<string, string>;\n attributes['interactive-widget'] = keyboardOverlaysContent ? 'resizes-visual' : 'resizes-content';\n const attributesStrUpdated = Object.entries(attributes)\n .map((keyValuePair) => keyValuePair.join('='))\n .join(',');\n meta.setAttribute('name', 'viewport');\n meta.setAttribute('content', attributesStrUpdated);\n }, [keyboardOverlaysContent]);\n\n const recalcKeyboardOffsets = useCallback(() => {\n if (!headerRef.current || !scrollContainerRef.current || !visualViewport) {\n return;\n }\n\n if (stateRef.current.hasFocus) {\n // терминология: https://developer.chrome.com/blog/viewport-resize-behavior/\n //\n // делим браузеры на три группы в зависимости от поведения при открытии виртуальной клавиатуры:\n // 1. Safari — ресайзит Visual Viewport, не меняет Layout Viewport.\n // В нем не нужно ничего корректировать при keyboardOverlaysContent=true,\n // а при keyboardOverlaysContent=false нужно сдвинуть НИЖНИЙ край контейнера ВВЕРХ,\n // чтобы он совпал с границей Visual Viewport\n // 2. Chrome < 108 & Chromium-based — ресайзит и Visual Viewport, и Layout Viewport\n // В нем не нужно ничего корректировать при keyboardOverlaysContent=false,\n // а при keyboardOverlaysContent=true нужно сдвинуть НИЖНИЙ край контейнера ВНИЗ,\n // чтобы футер уехал под клавиатуру\n // 3. Chrome >= 108 — поддерживает Virtual Keyboard API и meta-тег interactive-widget\n // Используем поведение `resizes-visual` (как в Safari) в случае keyboardOverlaysContent=true\n // и `resizes-content` (как в Chrome < 108 & Chromium-based) в случае keyboardOverlaysContent=false\n // Таким образом в нем ничего не нужно корректировать.\n\n const scrollContainerDOMREct = scrollContainerRef.current.getBoundingClientRect();\n\n // любой браузер может сдвинуть Visual Viewport вверх, если фокусируемый инпут находится близко к нижней границе\n // из-за этого может возникнуть проблема, что ВЕРХНИЙ край контента уехал за границу Visual Viewport\n // сдвигаем ВЕРХНИЙ край контейнера ВНИЗ, чтобы он совпал с границей Visual Viewport\n const visualViewportShift = Math.round(\n layoutMetricsRef.current.grabberSpacing - scrollContainerDOMREct.top\n );\n\n // запоминаем сдвиг для коррекции позиции граббера\n layoutMetricsRef.current.viewportShift = visualViewportShift;\n\n // клавиатура ПОВЕРХ контента\n // этот кейс нужно корректировать только в Chrome < 108 & Chromium-based\n if (keyboardOverlaysContent) {\n // браузеры из этой группы меняют Layout Viewport\n const layoutViewportDiff = Math.round(\n layoutMetricsRef.current.documentHeight - document.documentElement.clientHeight\n );\n if (layoutViewportDiff > 0) {\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET, `${visualViewportShift}px`);\n // сдвигаем НИЖНИЙ край контейнера ВНИЗ, чтобы футер уехал под клавиатуру\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET, `${-layoutViewportDiff}px`);\n\n // при этом может возникнуть проблема, что клавиатура перекрыла хедер\n // проверяем это и компенсируем величину перекрытия при необходимости\n const headerDOMRect = headerRef.current.getBoundingClientRect();\n const headerOutOfViewportHeight = Math.round(\n headerDOMRect.bottom + layoutViewportDiff - layoutMetricsRef.current.documentHeight\n );\n if (headerOutOfViewportHeight > 0) {\n setCSSVariable(\n CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET,\n `${headerOutOfViewportHeight - layoutViewportDiff}px`\n );\n }\n }\n } else {\n // клавиатура ПОД контентом\n // этот кейс нужно корректировать только в Safari\n\n // Safari ресайзит Visual Viewport\n const visualViewportDiff = Math.round(scrollContainerDOMREct.bottom - visualViewport.height);\n if (visualViewportDiff > 0) {\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET, `${visualViewportShift}px`);\n // сдвигаем НИЖНИЙ край контейнера ВВЕРХ, чтобы он совпал с границей Visual Viewport\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET, `${visualViewportDiff}px`);\n }\n }\n } else {\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET, `0px`);\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET, `0px`);\n }\n }, [keyboardOverlaysContent]);\n\n const handleFocus: FocusEventHandler = useCallback(\n (event) => {\n if (!scrollContainerRef.current) {\n return;\n }\n\n const focusedElement = event.target;\n const initialViewportHeight = visualViewport?.height;\n const resizeRAFStart = performance.now();\n\n if (!(focusedElement instanceof HTMLInputElement) || stateRef.current.resizeRAFHandle !== null) {\n return;\n }\n\n const handleResize = () => {\n if (stateRef.current.resizeRAFHandle !== null) {\n cancelAnimationFrame(stateRef.current.resizeRAFHandle);\n stateRef.current.resizeRAFHandle = null;\n }\n recalcKeyboardOffsets();\n };\n\n const waitForResize = () => {\n if (performance.now() - resizeRAFStart > 1000 || visualViewport?.height !== initialViewportHeight) {\n visualViewport?.removeEventListener('resize', handleResize);\n stateRef.current.resizeRAFHandle = null;\n recalcKeyboardOffsets();\n } else {\n stateRef.current.resizeRAFHandle = requestAnimationFrame(waitForResize);\n }\n };\n\n const handleBlur = () => {\n if (!scrollContainerRef.current) {\n return;\n }\n\n focusedElement.removeEventListener('blur', handleBlur);\n stateRef.current.hasFocus = false;\n scrollContainerRef.current.classList.remove(\n styles.scrollContainerNoScroll,\n styles.virtualKeyboardAnimation\n );\n\n if (isSafari) {\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET, `0px`);\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET, `0px`);\n }\n\n if (stateRef.current.resizeRAFHandle !== null) {\n cancelAnimationFrame(stateRef.current.resizeRAFHandle);\n stateRef.current.resizeRAFHandle = null;\n }\n visualViewport?.removeEventListener('resize', handleResize);\n };\n\n focusedElement.addEventListener('blur', handleBlur);\n stateRef.current.hasFocus = true;\n if (!allowScrollWhileFocused) {\n scrollContainerRef.current.classList.add(styles.scrollContainerNoScroll);\n }\n scrollContainerRef.current.classList.add(styles.virtualKeyboardAnimation);\n\n stateRef.current.resizeRAFHandle = requestAnimationFrame(waitForResize);\n visualViewport?.addEventListener('resize', handleResize);\n },\n [allowScrollWhileFocused, recalcKeyboardOffsets]\n );\n\n // Запускает анимацию translateY для показа/скрытия боттомшита или изменения высоты контента\n const runTranslateYAnimation = useCallback(() => {\n if (\n !contentRef.current ||\n !contentOverlayRef.current ||\n !footerRef.current ||\n !heightTransitionElementRef.current ||\n !scrollContainerRef.current ||\n !visualViewport\n ) {\n return;\n }\n\n if (heightDiff !== null) {\n if (heightDiff > 0) {\n contentRef.current.style.transform = `translateY(${heightDiff}px)`;\n contentOverlayRef.current.style.transform = `translateY(${heightDiff}px)`;\n footerRef.current.style.transform = `translateY(${-heightDiff}px)`;\n } else {\n heightTransitionElementRef.current.style.flexBasis = `${-heightDiff}px`;\n }\n } else {\n const contentDOMREct = contentRef.current.getBoundingClientRect();\n const translateY =\n scrollContainerRef.current.clientHeight + stateRef.current.swipeOffset - contentDOMREct.top;\n contentRef.current.style.transform = `translateY(${translateY}px)`;\n contentOverlayRef.current.style.transform = `translateY(${translateY}px)`;\n setCSSVariable(CSS_VAR_OVERLAY_OPACITY, `0`);\n }\n\n forceRepaint(scrollContainerRef.current);\n }, [heightDiff]);\n\n const resetTranslateY = useCallback(() => {\n if (\n !contentRef.current ||\n !contentOverlayRef.current ||\n !footerRef.current ||\n !heightTransitionElementRef.current ||\n !scrollContainerRef.current\n ) {\n return;\n }\n\n if (heightDiff !== null) {\n contentRef.current.style.transform = ``;\n contentOverlayRef.current.style.transform = ``;\n footerRef.current.style.transform = ``;\n heightTransitionElementRef.current.style.flexBasis = ``;\n } else {\n contentRef.current.style.transform = `translateY(${stateRef.current.swipeOffset}px)`;\n contentOverlayRef.current.style.transform = `translateY(${stateRef.current.swipeOffset}px)`;\n setCSSVariable(CSS_VAR_OVERLAY_OPACITY, `1`);\n }\n\n forceRepaint(scrollContainerRef.current);\n }, [heightDiff]);\n\n const handleAppearAnimationEnd = useCallback(() => {\n let scrollTop = scrollContainerRef.current?.scrollTop ?? 0;\n let scrollLocked = false;\n\n // Обработчик скролла для блокировки оверскролла в браузерах без поддержки css правила overscroll-behavior\n const handleScroll = (event: Event) => {\n const currentTarget = event.currentTarget as HTMLDivElement;\n const forward = currentTarget.scrollTop > scrollTop;\n const maxScroll = currentTarget.scrollHeight - currentTarget.offsetHeight;\n\n if (!scrollLocked && forward && currentTarget.scrollTop > maxScroll) {\n currentTarget.style.overflow = 'hidden';\n currentTarget.scrollTop = maxScroll;\n scrollLocked = true;\n scrollTop = maxScroll;\n setTimeout(() => {\n currentTarget.style.overflow = 'auto';\n scrollLocked = false;\n }, 1);\n event.preventDefault();\n return;\n }\n\n scrollTop = currentTarget.scrollTop;\n };\n\n // удаления хендлеров нет т.к. установлен флаг unmountOnExit, т.е. элемент удаляется из DOM\n // после завершения анимации\n scrollContainerRef.current?.addEventListener('touchmove', handleScroll, { passive: false });\n scrollContainerRef.current?.addEventListener('scroll', handleScroll, { passive: false });\n\n recalcScrollFlags();\n onAppear?.();\n }, [onAppear, recalcScrollFlags]);\n\n const handleExitAnimationStart = useCallback(() => {\n resetTranslateY();\n onBeforeExit?.();\n }, [resetTranslateY, onBeforeExit]);\n\n const handleExitAnimationEnd = useCallback(() => {\n stateRef.current.grabber = 'sticky';\n stateRef.current.hasFocus = false;\n stateRef.current.isSwipeEnabled = false;\n changeSwipeProgressState(stateRef, scrollContainerRef, false, !!allowScrollWhileFocused);\n stateRef.current.swipeOffset = 0;\n stateRef.current.resizeRAFHandle !== null && cancelAnimationFrame(stateRef.current.resizeRAFHandle);\n stateRef.current.resizeRAFHandle = null;\n\n layoutMetricsRef.current.fillHeight = 0;\n layoutMetricsRef.current.grabberSpacing = 0;\n\n setCSSVariable(CSS_VAR_OVERLAY_OPACITY, `1`);\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET, `0px`);\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET, `0px`);\n\n if (fixedGrabberRef.current !== null) {\n fixedGrabberRef.current.classList.add(styles.grabberInvisible);\n fixedGrabberRef.current.classList.remove(styles.grabberFixed, styles.grabberFakeSticky);\n fixedGrabberRef.current.style.transform = ``;\n }\n\n if (scrollContainerRef.current !== null) {\n scrollContainerRef.current.classList.remove(\n styles.scrollContainerNoScroll,\n styles.virtualKeyboardAnimation\n );\n }\n\n resetScrollFlags();\n setOnCloseContractCheck(false);\n onAfterExit?.();\n }, [resetScrollFlags, setOnCloseContractCheck, onAfterExit, allowScrollWhileFocused]);\n\n const handleClose = useCallback(() => {\n onClose();\n setOnCloseContractCheck(true);\n }, [onClose, setOnCloseContractCheck]);\n\n const handleSwipeStart: SwipeEventHandler = useCallback(() => {\n if (!scrollContainerRef.current) {\n return;\n }\n\n if (Object.is(Math.round(scrollContainerRef.current.scrollTop), 0)) {\n stateRef.current.isSwipeEnabled = true;\n stateRef.current.swipeOffset = 0;\n }\n }, []);\n\n const handleSwipeMove: SwipeEventHandler = useCallback(\n (event) => {\n if (\n !contentRef.current ||\n !contentOverlayRef.current ||\n !stateRef.current.isSwipeEnabled ||\n !scrollContainerRef.current\n ) {\n return;\n }\n\n const selection = document.getSelection();\n if (selection && !selection.isCollapsed) {\n return;\n }\n\n if (event.distanceY > 0) {\n contentRef.current.style.transform = `translateY(${event.distanceY}px)`;\n contentOverlayRef.current.style.transform = `translateY(${event.distanceY}px)`;\n if (!stateRef.current.isSwipeInProgress) {\n changeSwipeProgressState(stateRef, scrollContainerRef, true, !!allowScrollWhileFocused);\n }\n recalcScrollFlags();\n } else {\n contentRef.current.style.transform = ``;\n contentOverlayRef.current.style.transform = ``;\n stateRef.current.isSwipeEnabled = false;\n changeSwipeProgressState(stateRef, scrollContainerRef, false, !!allowScrollWhileFocused);\n }\n\n stateRef.current.swipeOffset = event.distanceY;\n },\n [recalcScrollFlags, allowScrollWhileFocused]\n );\n\n const handleSwipeCancel: SwipeEventHandler = useCallback(() => {\n if (!contentRef.current || !contentOverlayRef.current || !scrollContainerRef.current) {\n return;\n }\n\n if (stateRef.current.isSwipeEnabled && stateRef.current.isSwipeInProgress) {\n contentRef.current.style.transform = ``;\n contentOverlayRef.current.style.transform = ``;\n }\n\n stateRef.current.isSwipeEnabled = false;\n changeSwipeProgressState(stateRef, scrollContainerRef, false, !!allowScrollWhileFocused);\n stateRef.current.swipeOffset = 0;\n\n recalcScrollFlags();\n }, [recalcScrollFlags, allowScrollWhileFocused]);\n\n const handleSwipeEnd: SwipeEventHandler = useCallback(\n (event) => {\n if (stateRef.current.isSwipeEnabled && stateRef.current.isSwipeInProgress) {\n handleClose();\n } else {\n handleSwipeCancel(event);\n }\n },\n [handleClose, handleSwipeCancel]\n );\n\n const { onTouchStart, onTouchMove, onTouchEnd, onTouchCancel } = useSwipe({\n thresholdYRef: SWIPE_THRESHOLD_REF,\n onSwipeStart: handleSwipeStart,\n onSwipeMove: handleSwipeMove,\n onSwipeEnd: handleSwipeEnd,\n onSwipeCancel: handleSwipeCancel,\n });\n\n const swipeHandlers = useMemo<\n Record<'onTouchStart' | 'onTouchMove' | 'onTouchEnd' | 'onTouchCancel', TouchEventHandler<HTMLElement>>\n >(() => {\n const withStopPropagation =\n (callback?: TouchEventHandler): TouchEventHandler =>\n (event) => {\n event.stopPropagation();\n callback?.(event);\n };\n return {\n onTouchStart: withStopPropagation(onTouchStart),\n onTouchMove: withStopPropagation(onTouchMove),\n onTouchEnd,\n onTouchCancel,\n };\n }, [onTouchStart, onTouchMove, onTouchEnd, onTouchCancel]);\n\n useLayoutEffect(() => {\n if (\n !contentRef.current ||\n !footerRef.current ||\n !headerRef.current ||\n !scrollContainerRef.current ||\n !visualViewport\n ) {\n return;\n }\n\n if (visible) {\n stateRef.current.grabber = contentRef.current.offsetTop > 0 ? 'sticky' : 'sticky-inside';\n if (visible !== prevPropsRef.current.visible) {\n layoutMetricsRef.current.fillHeight = contentRef.current.offsetTop;\n layoutMetricsRef.current.grabberSpacing = scrollContainerRef.current.offsetTop;\n\n setCSSVariable(\n CSS_VAR_CONTENT_OVERLAY_TOP,\n `${contentRef.current.offsetTop + headerRef.current.clientHeight}px`\n );\n setCSSVariable(\n CSS_VAR_CONTENT_OVERLAY_HEIGHT,\n `${footerRef.current.offsetTop - headerRef.current.clientHeight}px`\n );\n setCSSVariable(CSS_VAR_INITIAL_VIEWPORT_HEIGHT, `${INITIAL_VIEWPORT_HEIGHT}px`);\n } else if (children !== prevPropsRef.current.children || height !== prevPropsRef.current.height) {\n const scrollTop = scrollContainerRef.current.scrollTop;\n scrollContainerRef.current.scrollTo({ top: 0 });\n\n const _heightDiff = layoutMetricsRef.current.fillHeight - contentRef.current.offsetTop;\n layoutMetricsRef.current.fillHeight = contentRef.current.offsetTop;\n if (_heightDiff !== 0 && !stateRef.current.hasFocus) {\n setHeightDiff(_heightDiff);\n }\n\n scrollContainerRef.current.scrollTo({ top: scrollTop });\n }\n }\n\n prevPropsRef.current = { ...prevPropsRef.current, children, height, visible };\n }, [children, height, setHeightDiff, visible]);\n\n if (onCloseContractCheck && visible) {\n console.error('onClose did not set visible=false', Date.now());\n }\n\n const contextValue = useMemo(() => ({ contentOverlayRef }), [contentOverlayRef]);\n\n const eventHandlers = useNoBubbling();\n\n if (!animationTimeout) {\n return null;\n }\n\n const renderFunc = (appearTransition: TransitionStatus, heightTransition: TransitionStatus) => (\n <Layer layer={InternalLayerName.BottomSheet}>\n <div\n {...eventHandlers}\n className={classnames(styles.overlay, {\n [styles.overlayInvisible]:\n !showOverlay || (showOverlay && appearTransition !== 'exiting' && !currentVisible),\n })}\n data-qa=\"bottom-sheet-overlay\"\n >\n <div\n className={classnames(styles.overlayBackground, {\n [styles.appearAnimation]: appearTransition === 'entering',\n [styles.disappearAnimation]: appearTransition === 'exiting',\n })}\n />\n <div\n className={classnames(styles.grabber, styles.grabberTransitionAnimation, {\n [styles.grabberInvisible]: appearTransition !== 'entered' || heightTransition !== 'exited',\n [styles.grabberFixed]:\n stateRef.current.grabber === 'fixed' || stateRef.current.grabber === 'sticky-inside',\n [styles.grabberFakeSticky]: stateRef.current.grabber === 'fake-sticky',\n })}\n ref={fixedGrabberRef}\n />\n <div\n className={classnames(styles.scrollContainer, {\n [styles.scrollContainerNoScroll]: !allowScrollWhileFocused && stateRef.current.hasFocus,\n [styles.virtualKeyboardAnimation]: stateRef.current.hasFocus,\n })}\n data-qa=\"bottom-sheet-container\"\n onScroll={recalcScrollFlags}\n ref={scrollContainerRefMulti}\n >\n <div\n className={classnames(styles.fill, {\n [styles.fillFullScreen]: height === 'full-screen',\n [styles.fillHalfScreen]: height === 'half-screen',\n })}\n data-qa=\"bottom-sheet-fill\"\n onClick={handleClose}\n />\n <div\n className={classnames(styles.content, {\n [styles.appearAnimation]: appearTransition === 'entering',\n [styles.closeBySwipeAnimation]:\n appearTransition === 'exiting' && stateRef.current.isSwipeInProgress,\n [styles.contentFullScreen]: height === 'full-screen',\n [styles.disappearAnimation]: appearTransition === 'exiting',\n [styles.heightTransitionAnimation]: heightTransition === 'entering',\n })}\n data-qa=\"bottom-sheet-content\"\n ref={contentRef}\n {...swipeHandlers}\n >\n <div\n className={classnames(styles.grabber, styles.grabberSticky, {\n [styles.grabberStickyInside]:\n appearTransition === 'entering' && stateRef.current.grabber === 'sticky-inside',\n })}\n ref={stickyGrabberRef}\n />\n <div className={styles.visualContainer}>\n <div className={styles.header} onFocus={handleFocus} ref={headerRef}>\n <NavigationBarContext.Provider value={NAVIGATION_BAR_SIZE_OVERRIDE}>\n {header}\n </NavigationBarContext.Provider>\n </div>\n <div\n className={classnames(styles.main, {\n [styles.mainWithPaddings]: withContentPaddings,\n [styles.mainWithoutHeader]: !header,\n })}\n >\n <BottomSheetContext.Provider value={contextValue}>\n {children}\n </BottomSheetContext.Provider>\n </div>\n <div\n className={classnames(styles.heightTransitionElement, {\n [styles.heightTransitionAnimation]: heightTransition === 'entering',\n })}\n ref={heightTransitionElementRef}\n />\n <div\n className={classnames(styles.footer, {\n [styles.heightTransitionAnimation]: heightTransition === 'entering',\n })}\n ref={footerRef}\n >\n {isDividerVisible && <Divider />}\n {interceptClickHandlers ? <ClickInterceptor>{footer}</ClickInterceptor> : footer}\n </div>\n </div>\n </div>\n </div>\n <div className={styles.contentOverlay} ref={contentOverlayRef} />\n </div>\n </Layer>\n );\n\n return createPortal(\n <div\n className={styles.cssVariablesContainer}\n data-qa=\"bottom-sheet-css-variables\"\n ref={cssVariablesContainerRef}\n >\n <Transition\n appear\n in={currentVisible}\n mountOnEnter\n onEnter={runTranslateYAnimation}\n onEntering={resetTranslateY}\n onEntered={handleAppearAnimationEnd}\n onExit={handleExitAnimationStart}\n onExiting={runTranslateYAnimation}\n onExited={handleExitAnimationEnd}\n timeout={animationTimeout.appear}\n unmountOnExit\n nodeRef={contentRef}\n >\n {(appearTransition) => (\n <Transition\n in={heightDiff !== null}\n onEnter={runTranslateYAnimation}\n onEntering={resetTranslateY}\n onEntered={resetHeightDiff}\n onExited={recalcScrollFlags}\n timeout={animationTimeout.height}\n nodeRef={contentRef}\n >\n {(heightTransition) => renderFunc(appearTransition, heightTransition)}\n </Transition>\n )}\n </Transition>\n </div>,\n document.body\n );\n};\n\nexport const BottomSheet = forwardRef(BottomSheetRenderFunc);\n\nBottomSheet.displayName = 'BottomSheet';\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BottomSheet.js","sources":["../src/BottomSheet.tsx"],"sourcesContent":["import {\n FocusEventHandler,\n ForwardRefRenderFunction,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { Transition, TransitionStatus } from 'react-transition-group';\nimport classnames from 'classnames';\n\nimport { disableOverscroll, disableScroll } from '@hh.ru/magritte-common-modal-helper';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useNoBubbling } from '@hh.ru/magritte-common-use-no-bubbling';\nimport { useSwipeHandlers, SwipeEventHandler } from '@hh.ru/magritte-common-use-swipe';\nimport { InertialScrollEvent, initTouchHandlers as initScrollHandlers } from '@hh.ru/magritte-internal-inertial-scroll';\nimport { InternalLayerName } from '@hh.ru/magritte-internal-layer-name';\nimport { BottomSheetContext } from '@hh.ru/magritte-ui-bottom-sheet/BottomSheetContext';\nimport { ClickInterceptor } from '@hh.ru/magritte-ui-bottom-sheet/ClickInterceptor';\nimport { BottomSheetProps } from '@hh.ru/magritte-ui-bottom-sheet/types';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { NavigationBarContext, type NavigationBarContextProps } from '@hh.ru/magritte-ui-navigation-bar';\n\nimport styles from './bottom-sheet.less';\n\nconst CSS_VAR_ENTER_ANIMATION_DURATION = '--enter-animation-duration';\nconst CSS_VAR_EXIT_ANIMATION_DURATION = '--exit-animation-duration';\nconst CSS_VAR_HEIGHT_ANIMATION_DURATION = '--height-transition-duration';\nconst CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET = '--virtual-keyboard-top-offset';\nconst CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET = '--virtual-keyboard-bottom-offset';\n\nconst NAVIGATION_BAR_SIZE_OVERRIDE: NavigationBarContextProps = { size: 'standard' };\n\nconst hasSelectedText = () => {\n const selection = document.getSelection();\n return !!selection && !selection.isCollapsed;\n};\n\nconst isSafariFunc = () => {\n let lazyValue: boolean | null = null;\n return () => {\n if (lazyValue === null) {\n lazyValue = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n }\n return lazyValue;\n };\n};\n\nconst toNumber = (value: string) => {\n const result = parseInt(value, 10);\n return Number.isInteger(result) ? result : 0;\n};\n\nconst translateY = (value: number) => `translate3d(0, ${value}px, 0)`;\n\ntype AnimationTimeout = { [AnimationType in 'appear' | 'height']: { [AnimationStage in 'enter' | 'exit']: number } };\n\ntype State = {\n dividerVisible: boolean;\n // если боттомшит упирается в верхний край экрана, челка может перекрыть граббер и его нужно переместить в safe area\n grabberUnsafe: boolean;\n hasFocus: boolean;\n resizeRAFHandle: ReturnType<typeof requestAnimationFrame> | null;\n // translateY для эмуляции скролла, отрицательный либо меньше LayoutMetrics.current.initialOffset\n scrollOffset: number;\n // translateY для эмуляции свайпа, всегда положительный либо 0\n swipeOffset: number;\n // текущее действие, инициированное пользователем\n touchAction:\n | null // может быть начато любое действие\n | 'complete' // палец приложен, но действие завершено — не реагируем на тач, пока пользователь не отпустит палец\n | 'scroll' // палец приложен, скроллим контент внутри боттомшита\n | 'swipe'; // палец приложен, свайпаем весь боттомшит вниз, чтобы закрыть его, или вверх, чтобы отменить свайп\n // анимация изменения высоты контента в открытом боттомшите\n heightAnimationRunning: boolean;\n};\n\nconst INITIAL_STATE: State = {\n dividerVisible: false,\n grabberUnsafe: false,\n hasFocus: false,\n resizeRAFHandle: null,\n scrollOffset: 0,\n swipeOffset: 0,\n touchAction: null,\n heightAnimationRunning: false,\n};\n\nconst BottomSheetRenderFunc: ForwardRefRenderFunction<HTMLElement, BottomSheetProps> = (\n {\n allowScrollWhileFocused,\n children,\n footer,\n header,\n height = 'content',\n interceptClickHandlers = true,\n keyboardOverlaysContent = true,\n onAppear,\n onBeforeExit,\n onAfterExit,\n onClose,\n showDivider = 'with-scroll',\n showOverlay = true,\n visible = false,\n withContentPaddings = true,\n },\n ref\n) => {\n const DOCUMENT_HEIGHT = useRef(0);\n const SWIPE_THRESHOLD = useRef({ max: Infinity });\n\n const contentRef = useRef<HTMLDivElement>(null);\n const contentOverlayRef = useRef<HTMLDivElement>(null);\n const cssVariablesContainerRef = useRef<HTMLDivElement>(null);\n const dividerRef = useRef<HTMLDivElement>(null);\n const footerRef = useRef<HTMLDivElement>(null);\n const grabberRef = useRef<HTMLDivElement>(null);\n const headerRef = useRef<HTMLDivElement>(null);\n const overlayRef = useRef<HTMLDivElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const swipeContainerRef = useRef<HTMLDivElement>(null);\n const visualContainerRef = useRef<HTMLDivElement>(null);\n const bottomSheetRef = useMultipleRefs(ref, visualContainerRef);\n\n const { isMobile } = useBreakpoint();\n const currentVisible = isMobile && visible;\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n const stateRef = useRef<State>({ ...INITIAL_STATE });\n const [animationTimeout, setAnimationTimeout] = useState<AnimationTimeout | null>(null);\n const [visibleHeightDiff, setVisibleHeightDiff] = useState<number | null>(null);\n const contextValue = useMemo(() => ({ contentOverlayRef }), [contentOverlayRef]);\n const isSafari = useRef(isSafariFunc()).current;\n\n const LayoutMetrics = useRef(\n (() => {\n let cachedBottomSheetHeight: number | null = null;\n let cachedContentHeight: number | null = null;\n let cachedInitialOffset: number | null = null;\n let cachedRemainingAvailableHeight: number | null = null;\n let cachedScrollContainerHeight: number | null = null;\n return {\n get bottomSheetHeight() {\n if (cachedBottomSheetHeight === null && visualContainerRef.current !== null) {\n cachedBottomSheetHeight = visualContainerRef.current.clientHeight;\n }\n return cachedBottomSheetHeight ?? 0;\n },\n get contentHeight() {\n if (cachedContentHeight === null && contentRef.current !== null) {\n cachedContentHeight = contentRef.current.clientHeight;\n }\n return cachedContentHeight ?? 0;\n },\n get initialOffset() {\n if (\n cachedInitialOffset === null &&\n visualContainerRef.current !== null &&\n visualViewport !== null\n ) {\n cachedInitialOffset =\n height === 'half-screen'\n ? Math.max(\n Math.round(visualContainerRef.current.clientHeight - visualViewport.height / 2),\n 0\n )\n : 0;\n }\n return cachedInitialOffset ?? 0;\n },\n get remainingAvailableHeight() {\n if (cachedRemainingAvailableHeight === null && grabberRef.current !== null) {\n cachedRemainingAvailableHeight = grabberRef.current.offsetTop;\n }\n return cachedRemainingAvailableHeight ?? 0;\n },\n get scrollContainerHeight() {\n if (cachedScrollContainerHeight === null && scrollContainerRef.current !== null) {\n cachedScrollContainerHeight = scrollContainerRef.current.clientHeight;\n }\n return cachedScrollContainerHeight ?? 0;\n },\n invalidateCache() {\n cachedBottomSheetHeight = null;\n cachedContentHeight = null;\n cachedInitialOffset = null;\n cachedRemainingAvailableHeight = null;\n cachedScrollContainerHeight = null;\n },\n };\n })()\n );\n\n const setCSSVariable = (name: string, value: string) =>\n cssVariablesContainerRef.current !== null && cssVariablesContainerRef.current.style.setProperty(name, value);\n\n useEffect(() => {\n if (!currentVisible) {\n return void 0;\n }\n\n DOCUMENT_HEIGHT.current = document.documentElement.clientHeight;\n if (visualViewport !== null) {\n SWIPE_THRESHOLD.current = { max: Math.round(visualViewport.height * 0.8) };\n }\n\n if (!showOverlay) {\n const enableOverscroll = disableOverscroll();\n return enableOverscroll;\n }\n\n const enableScroll = disableScroll();\n return enableScroll;\n }, [currentVisible, showOverlay]);\n\n useEffect(() => {\n const animationTimeoutElement = document.createElement('div');\n animationTimeoutElement.classList.add(styles.animationTimeout);\n document.body.appendChild(animationTimeoutElement);\n const style = window.getComputedStyle(animationTimeoutElement);\n const enter = toNumber(style.getPropertyValue(CSS_VAR_ENTER_ANIMATION_DURATION));\n const exit = toNumber(style.getPropertyValue(CSS_VAR_EXIT_ANIMATION_DURATION));\n const height = toNumber(style.getPropertyValue(CSS_VAR_HEIGHT_ANIMATION_DURATION));\n document.body.removeChild(animationTimeoutElement);\n setAnimationTimeout({ appear: { enter, exit }, height: { enter: height, exit } });\n }, [setAnimationTimeout]);\n\n useEffect(() => {\n if (!currentVisible || !contentRef.current) {\n return void 0;\n }\n\n // при изменении высоты контента анимируем ее\n // самому боттомшиту задаем фиксированную высоту и пересчитываем ее самостоятельно,\n // чтобы не было мерцания, когда новый контент отрисовался до срабатывания колбека ResizeObserver\n let prevContentHeight = LayoutMetrics.current.contentHeight;\n if (visualContainerRef.current !== null) {\n visualContainerRef.current.style.height = `${LayoutMetrics.current.bottomSheetHeight}px`;\n }\n const observer = new ResizeObserver(() => {\n if (stateRef.current.heightAnimationRunning) {\n return;\n }\n\n LayoutMetrics.current.invalidateCache();\n\n // в общем случае видимую высоту контента можно посчитать как min(scrollContainer.height, contentHeight)\n const contentHeightDiff = LayoutMetrics.current.contentHeight - prevContentHeight;\n if (contentHeightDiff > 0) {\n // но если высота контента увеличилась, мы не знаем новую высоту scrollContainer.height\n // т.к. фиксированная высота боттомшита не дает scrollContainer увеличиться\n // но сам боттомшит может увеличиться не больше чем на расстояние между ним и верхним краем экрана\n const heightDiff = Math.round(\n Math.min(contentHeightDiff, LayoutMetrics.current.remainingAvailableHeight)\n );\n // триггерим анимацию даже при нулевом heightDiff, чтобы сбросить позицию скролла\n setVisibleHeightDiff(heightDiff);\n stateRef.current.heightAnimationRunning = true;\n } else if (contentHeightDiff < 0) {\n // если высота контента уменьшилась, новая высота scrollContainer будет такая же или меньше\n // поэтому можем посчитать новую видимую высоту контента и сравнить со старой\n const prevVisibleHeight = Math.min(LayoutMetrics.current.scrollContainerHeight, prevContentHeight);\n const newVisibleHeight = Math.min(\n LayoutMetrics.current.scrollContainerHeight,\n LayoutMetrics.current.contentHeight\n );\n const heightDiff = Math.round(newVisibleHeight - prevVisibleHeight);\n // триггерим анимацию даже при нулевом heightDiff, чтобы сбросить позицию скролла\n setVisibleHeightDiff(heightDiff);\n stateRef.current.heightAnimationRunning = true;\n }\n\n prevContentHeight = LayoutMetrics.current.contentHeight;\n });\n observer.observe(contentRef.current);\n\n return () => observer.disconnect();\n }, [currentVisible, setVisibleHeightDiff]);\n\n useEffect(() => {\n if (!currentVisible || isSafari()) {\n return;\n }\n\n // используем Virtual Keyboard API через meta-тег вместо navigator.virtualKeyboard,\n // потому что второй способ работает только на страницах, открытых через HTTPS, что мешает тестированию\n let meta = document.querySelector('meta[name=\"viewport\"]');\n if (!meta) {\n meta = document.createElement('meta');\n meta.setAttribute('name', 'viewport');\n document.head.appendChild(meta);\n }\n const attributesStr = meta.getAttribute('content');\n const attributes = (\n attributesStr !== null\n ? Object.fromEntries(attributesStr.split(',').map((keyValuePairStr) => keyValuePairStr.split('=')))\n : {}\n ) as Record<string, string>;\n attributes['interactive-widget'] = keyboardOverlaysContent ? 'resizes-visual' : 'resizes-content';\n const attributesStrUpdated = Object.entries(attributes)\n .map((keyValuePair) => keyValuePair.join('='))\n .join(',');\n meta.setAttribute('content', attributesStrUpdated);\n }, [currentVisible, isSafari, keyboardOverlaysContent]);\n\n const recalcKeyboardOffsets = useCallback(() => {\n if (!headerRef.current || !overlayRef.current || !visualViewport) {\n return;\n }\n\n if (stateRef.current.hasFocus) {\n // терминология: https://developer.chrome.com/blog/viewport-resize-behavior/\n //\n // делим браузеры на три группы в зависимости от поведения при открытии виртуальной клавиатуры:\n // 1. Safari — ресайзит Visual Viewport, не меняет Layout Viewport.\n // В нем не нужно ничего корректировать при keyboardOverlaysContent=true,\n // а при keyboardOverlaysContent=false нужно сдвинуть НИЖНИЙ край контейнера ВВЕРХ,\n // чтобы он совпал с границей Visual Viewport\n // 2. Chrome < 108 & Chromium-based — ресайзит и Visual Viewport, и Layout Viewport.\n // В нем не нужно ничего корректировать при keyboardOverlaysContent=false,\n // а при keyboardOverlaysContent=true нужно сдвинуть НИЖНИЙ край контейнера ВНИЗ,\n // чтобы футер уехал под клавиатуру\n // 3. Chrome >= 108 — поддерживает Virtual Keyboard API и meta-тег interactive-widget.\n // Используем поведение `resizes-visual` (как в Safari) в случае keyboardOverlaysContent=true\n // и `resizes-content` (как в Chrome < 108 & Chromium-based) в случае keyboardOverlaysContent=false\n // Таким образом в нем ничего не нужно корректировать\n\n const overlayDOMRect = overlayRef.current.getBoundingClientRect();\n\n // любой браузер может сдвинуть Visual Viewport вверх, если фокусируемый инпут находится близко к нижней границе\n // из-за этого может возникнуть проблема, что ВЕРХНИЙ край контента уехал за границу Visual Viewport\n // сдвигаем ВЕРХНИЙ край контейнера ВНИЗ, чтобы он совпал с границей Visual Viewport\n const visualViewportShift = Math.round(-overlayDOMRect.top);\n\n // keyboardOverlaysContent=true, клавиатура ПОВЕРХ контента\n // этот кейс нужно корректировать только в Chrome < 108 & Chromium-based\n if (keyboardOverlaysContent) {\n // браузеры из этой группы меняют Layout Viewport\n const layoutViewportDiff = Math.round(DOCUMENT_HEIGHT.current - document.documentElement.clientHeight);\n if (layoutViewportDiff > 0) {\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET, `${visualViewportShift}px`);\n // сдвигаем НИЖНИЙ край контейнера ВНИЗ, чтобы футер уехал под клавиатуру\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET, `${-layoutViewportDiff}px`);\n\n // при этом может возникнуть проблема, что клавиатура перекрыла хедер\n // проверяем это и компенсируем величину перекрытия при необходимости\n const headerDOMRect = headerRef.current.getBoundingClientRect();\n const headerOutOfViewportHeight = Math.round(\n headerDOMRect.bottom + layoutViewportDiff - DOCUMENT_HEIGHT.current\n );\n if (headerOutOfViewportHeight > 0) {\n setCSSVariable(\n CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET,\n `${headerOutOfViewportHeight - layoutViewportDiff}px`\n );\n }\n }\n }\n\n // keyboardOverlaysContent=false, клавиатура ПОД контентом\n // этот кейс нужно корректировать только в Safari\n if (!keyboardOverlaysContent && isSafari()) {\n const visualViewportDiff = Math.round(overlayDOMRect.bottom - visualViewport.height);\n if (visualViewportDiff > 0) {\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET, `${visualViewportShift}px`);\n // сдвигаем НИЖНИЙ край контейнера ВВЕРХ, чтобы он совпал с границей Visual Viewport\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET, `${visualViewportDiff}px`);\n }\n }\n } else {\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET, `0px`);\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET, `0px`);\n }\n }, [isSafari, keyboardOverlaysContent]);\n\n const handleFocus: FocusEventHandler = useCallback(\n (event) => {\n const focusedElement = event.target;\n const initialViewportHeight = visualViewport?.height;\n const resizeRAFStart = performance.now();\n\n if (!(focusedElement instanceof HTMLInputElement) || stateRef.current.resizeRAFHandle !== null) {\n return;\n }\n\n const handleResize = () => {\n if (stateRef.current.resizeRAFHandle !== null) {\n cancelAnimationFrame(stateRef.current.resizeRAFHandle);\n stateRef.current.resizeRAFHandle = null;\n }\n\n recalcKeyboardOffsets();\n\n if (!stateRef.current.hasFocus) {\n visualViewport?.removeEventListener('resize', handleResize);\n }\n };\n\n // если спамить фокус/блюр инпута, ивент visualViewport.resize может не долететь\n // поэтому проверяем изменение высоты в рекурсивном RAF\n const waitForResize = () => {\n if (performance.now() - resizeRAFStart > 1000 || visualViewport?.height !== initialViewportHeight) {\n visualViewport?.removeEventListener('resize', handleResize);\n stateRef.current.resizeRAFHandle = null;\n recalcKeyboardOffsets();\n } else {\n stateRef.current.resizeRAFHandle = requestAnimationFrame(waitForResize);\n }\n };\n\n const handleBlur = () => {\n if (isSafari()) {\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET, `0px`);\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET, `0px`);\n }\n\n stateRef.current.hasFocus = false;\n if (stateRef.current.resizeRAFHandle !== null) {\n cancelAnimationFrame(stateRef.current.resizeRAFHandle);\n stateRef.current.resizeRAFHandle = null;\n }\n focusedElement.removeEventListener('blur', handleBlur);\n };\n\n stateRef.current.hasFocus = true;\n stateRef.current.resizeRAFHandle = requestAnimationFrame(waitForResize);\n visualViewport?.addEventListener('resize', handleResize);\n focusedElement.addEventListener('blur', handleBlur);\n },\n [isSafari, recalcKeyboardOffsets]\n );\n\n // contentOverlay совпадает по границам с контентом боттомшита, но лежит вне боттомшита,\n // чтобы чайлды contentOverlay не обрезались границами боттомшита\n // например, снекбар, лежащий внутри contentOverlay, при смахивании может оказаться в любом месте экрана\n // поэтому позицию contentOverlay нужно синхронизировать\n const recalcContentOverlayPosition = useCallback(() => {\n if (\n contentOverlayRef.current !== null &&\n scrollContainerRef.current !== null &&\n visualContainerRef.current !== null\n ) {\n contentOverlayRef.current.style.top = `${\n scrollContainerRef.current.offsetTop + visualContainerRef.current.offsetTop\n }px`;\n contentOverlayRef.current.style.height = `${scrollContainerRef.current.clientHeight}px`;\n }\n }, []);\n\n const recalcScrollFlags = useCallback(() => {\n if (dividerRef.current !== null) {\n const prevDividerVisible = stateRef.current.dividerVisible;\n const isNotScrolledToEnd =\n LayoutMetrics.current.contentHeight + stateRef.current.scrollOffset >\n LayoutMetrics.current.scrollContainerHeight;\n stateRef.current.dividerVisible =\n showDivider === 'always' || (showDivider === 'with-scroll' && isNotScrolledToEnd);\n if (stateRef.current.dividerVisible !== prevDividerVisible) {\n dividerRef.current.classList.toggle(styles.dividerVisible, stateRef.current.dividerVisible);\n }\n }\n\n if (grabberRef.current !== null) {\n const prevGrabberUnsafe = stateRef.current.grabberUnsafe;\n stateRef.current.grabberUnsafe =\n LayoutMetrics.current.remainingAvailableHeight -\n Math.round(Math.max(stateRef.current.scrollOffset, 0) + stateRef.current.swipeOffset) ===\n 0;\n if (stateRef.current.grabberUnsafe !== prevGrabberUnsafe) {\n grabberRef.current.classList.toggle(styles.grabberEnsureSafe, stateRef.current.grabberUnsafe);\n }\n }\n }, [showDivider]);\n\n // помещает боттомшит в позицию вне экрана снизу, которая может быть начальной либо конечной точкой анимации\n const setTransformToInvisible = useCallback(() => {\n LayoutMetrics.current.invalidateCache();\n\n if (overlayRef.current !== null) {\n overlayRef.current.style.opacity = `0`;\n }\n if (swipeContainerRef.current !== null) {\n swipeContainerRef.current.style.transform = translateY(LayoutMetrics.current.bottomSheetHeight);\n }\n\n requestAnimationFrame(recalcContentOverlayPosition);\n requestAnimationFrame(recalcScrollFlags);\n }, [recalcContentOverlayPosition, recalcScrollFlags]);\n\n // помещает боттомшит в дефолтную позицию на экране, которая может быть начальной либо конечной точкой анимации\n const setTransformToVisible = useCallback(() => {\n LayoutMetrics.current.invalidateCache();\n\n stateRef.current.scrollOffset = LayoutMetrics.current.initialOffset;\n\n if (overlayRef.current !== null) {\n overlayRef.current.style.opacity = `1`;\n }\n if (swipeContainerRef.current !== null) {\n swipeContainerRef.current.style.transform = translateY(\n LayoutMetrics.current.initialOffset + stateRef.current.swipeOffset\n );\n }\n if (footerRef.current !== null) {\n footerRef.current.style.transform = translateY(-LayoutMetrics.current.initialOffset);\n }\n\n requestAnimationFrame(recalcContentOverlayPosition);\n requestAnimationFrame(recalcScrollFlags);\n }, [recalcContentOverlayPosition, recalcScrollFlags]);\n\n const handleExitAnimationStart = useCallback(() => {\n setTransformToVisible();\n onBeforeExit?.();\n }, [setTransformToVisible, onBeforeExit]);\n\n const handleExitAnimationEnd = useCallback(() => {\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_TOP_OFFSET, `0px`);\n setCSSVariable(CSS_VAR_VIRTUAL_KEYBOARD_BOTTOM_OFFSET, `0px`);\n\n stateRef.current.resizeRAFHandle !== null && cancelAnimationFrame(stateRef.current.resizeRAFHandle);\n stateRef.current = { ...INITIAL_STATE };\n\n onAfterExit?.();\n }, [onAfterExit]);\n\n const handleHeightAnimationStart = useCallback(() => {\n LayoutMetrics.current.invalidateCache();\n\n stateRef.current.scrollOffset = LayoutMetrics.current.initialOffset;\n stateRef.current.swipeOffset = 0;\n\n if (contentRef.current !== null) {\n contentRef.current.style.transform = translateY(0);\n }\n if (swipeContainerRef.current !== null) {\n swipeContainerRef.current.style.transform = translateY(LayoutMetrics.current.initialOffset);\n }\n if (visibleHeightDiff !== null && visualContainerRef.current !== null) {\n visualContainerRef.current.style.height = `${\n LayoutMetrics.current.bottomSheetHeight + visibleHeightDiff\n }px`;\n }\n }, [visibleHeightDiff]);\n\n const handleHeightAnimationEnd = useCallback(() => {\n LayoutMetrics.current.invalidateCache();\n\n stateRef.current.heightAnimationRunning = false;\n setVisibleHeightDiff(null);\n\n requestAnimationFrame(recalcContentOverlayPosition);\n requestAnimationFrame(recalcScrollFlags);\n }, [setVisibleHeightDiff, recalcContentOverlayPosition, recalcScrollFlags]);\n\n const handleSwipeMove: SwipeEventHandler = useCallback(\n (event) => {\n if (\n (stateRef.current.touchAction !== null && stateRef.current.touchAction !== 'swipe') ||\n hasSelectedText()\n ) {\n return;\n }\n\n // храним неокругленное значение для translateY, чтобы анимация была плавнее\n let newSwipeOffset = stateRef.current.swipeOffset + event.deltaY;\n if (Math.round(newSwipeOffset) <= 0) {\n // боттомшит уперся в верхний край экрана, не даем свайпать дальше\n newSwipeOffset = 0;\n if (stateRef.current.touchAction === 'swipe') {\n stateRef.current.touchAction = 'complete';\n }\n } else {\n // свайп в процессе\n stateRef.current.touchAction = 'swipe';\n }\n\n if (stateRef.current.swipeOffset !== newSwipeOffset) {\n stateRef.current.swipeOffset = newSwipeOffset;\n\n if (swipeContainerRef.current !== null) {\n swipeContainerRef.current.style.transform = translateY(\n Math.max(stateRef.current.scrollOffset, 0) + newSwipeOffset\n );\n }\n\n recalcScrollFlags();\n }\n },\n [recalcScrollFlags]\n );\n\n const handleSwipeCancel: SwipeEventHandler = useCallback(() => {\n if (stateRef.current.touchAction === 'swipe') {\n stateRef.current.swipeOffset = 0;\n stateRef.current.touchAction = null;\n\n if (swipeContainerRef.current !== null) {\n swipeContainerRef.current.classList.add(styles.swipeCancelAnimation);\n const swipeContainer = swipeContainerRef.current;\n setTimeout(() => swipeContainer.classList.remove(styles.swipeCancelAnimation), 100);\n swipeContainerRef.current.style.transform = translateY(Math.max(stateRef.current.scrollOffset, 0));\n }\n\n recalcScrollFlags();\n }\n }, [recalcScrollFlags]);\n\n const handleSwipeEnd: SwipeEventHandler = useCallback(() => {\n if (stateRef.current.touchAction === 'swipe') {\n onCloseRef.current();\n }\n }, []);\n\n const swipeHandlers = useSwipeHandlers({\n thresholdYRef: SWIPE_THRESHOLD,\n onSwipeMove: handleSwipeMove,\n onSwipeEnd: handleSwipeEnd,\n onSwipeCancel: handleSwipeCancel,\n });\n\n useEffect(() => {\n if (!currentVisible || visualContainerRef.current === null) {\n return void 0;\n }\n\n const handleScroll = (event: InertialScrollEvent) => {\n if (\n (!allowScrollWhileFocused && stateRef.current.hasFocus) ||\n (stateRef.current.touchAction !== null && stateRef.current.touchAction !== 'scroll') ||\n hasSelectedText()\n ) {\n return;\n }\n\n if (\n LayoutMetrics.current.initialOffset !== 0 ||\n LayoutMetrics.current.contentHeight > LayoutMetrics.current.scrollContainerHeight\n ) {\n // храним неокругленное значение для translateY, чтобы анимация была плавнее\n let newScrollOffset = stateRef.current.scrollOffset + event.delta;\n const roundedNewScrollOffset = Math.round(newScrollOffset);\n\n if (roundedNewScrollOffset >= LayoutMetrics.current.initialOffset) {\n // скролла нет (touchAction is null)\n // либо контент проскроллен в начало, тогда не даем скроллить дальше\n newScrollOffset = LayoutMetrics.current.initialOffset;\n if (stateRef.current.touchAction === 'scroll') {\n stateRef.current.touchAction = 'complete';\n }\n } else if (\n LayoutMetrics.current.contentHeight + roundedNewScrollOffset <=\n LayoutMetrics.current.scrollContainerHeight\n ) {\n // скролла нет (touchAction is null)\n // либо контент проскроллен до конца, тогда не даем скроллить дальше\n newScrollOffset = LayoutMetrics.current.scrollContainerHeight - LayoutMetrics.current.contentHeight;\n if (stateRef.current.touchAction === 'scroll') {\n stateRef.current.touchAction = 'complete';\n }\n } else {\n // скролл в процессе\n stateRef.current.touchAction = 'scroll';\n }\n\n if (stateRef.current.scrollOffset !== newScrollOffset) {\n if (contentRef.current !== null && swipeContainerRef.current !== null) {\n const offsetWasPositive = stateRef.current.scrollOffset > 0;\n if (newScrollOffset > 0) {\n if (!offsetWasPositive) {\n contentRef.current.style.transform = translateY(0);\n }\n swipeContainerRef.current.style.transform = translateY(newScrollOffset);\n if (footerRef.current !== null) {\n footerRef.current.style.transform = translateY(-newScrollOffset);\n }\n } else {\n contentRef.current.style.transform = translateY(newScrollOffset);\n if (offsetWasPositive) {\n swipeContainerRef.current.style.transform = translateY(0);\n if (footerRef.current !== null) {\n footerRef.current.style.transform = translateY(0);\n }\n }\n }\n }\n\n stateRef.current.scrollOffset = newScrollOffset;\n recalcScrollFlags();\n }\n }\n };\n\n const handleScrollEnd = () => {\n if (stateRef.current.touchAction === 'scroll') {\n stateRef.current.touchAction = null;\n }\n };\n\n const handleTouchStart = (event: TouchEvent) => {\n if (stateRef.current.touchAction === 'complete') {\n stateRef.current.touchAction = null;\n }\n swipeHandlers.onTouchStart(event);\n };\n\n const handleTouchMove = (event: TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n swipeHandlers.onTouchMove(event);\n };\n\n const removeScrollHandlers = initScrollHandlers('vertical', visualContainerRef, handleScroll, handleScrollEnd);\n const visualContainer = visualContainerRef.current;\n visualContainer.addEventListener('touchstart', handleTouchStart);\n visualContainer.addEventListener('touchmove', handleTouchMove);\n visualContainer.addEventListener('touchend', swipeHandlers.onTouchEnd);\n visualContainer.addEventListener('touchcancel', swipeHandlers.onTouchCancel);\n\n return () => {\n removeScrollHandlers();\n visualContainer.removeEventListener('touchstart', swipeHandlers.onTouchStart);\n visualContainer.removeEventListener('touchmove', handleTouchMove);\n visualContainer.removeEventListener('touchend', swipeHandlers.onTouchEnd);\n visualContainer.removeEventListener('touchcancel', swipeHandlers.onTouchCancel);\n };\n }, [allowScrollWhileFocused, currentVisible, height, recalcScrollFlags, showOverlay, swipeHandlers]);\n\n const { onTouchEnd, ...eventHandlers } = useNoBubbling();\n\n if (!animationTimeout) {\n return null;\n }\n\n const renderFunc = (appearTransition: TransitionStatus, heightTransition: TransitionStatus) => (\n <Layer layer={InternalLayerName.BottomSheet}>\n <div {...eventHandlers} className={styles.overlay}>\n <div\n className={classnames(styles.overlayBackground, {\n [styles.overlayBackgroundVisible]: showOverlay,\n [styles.appearAnimation]: appearTransition === 'entering',\n [styles.disappearAnimation]: appearTransition === 'exiting',\n })}\n data-qa=\"bottom-sheet-overlay\"\n onClick={appearTransition === 'entered' ? onCloseRef.current : undefined}\n ref={overlayRef}\n />\n <div\n className={classnames(styles.swipeContainer, {\n [styles.appearAnimation]: appearTransition === 'entering',\n [styles.closeBySwipeAnimation]:\n appearTransition === 'exiting' && stateRef.current.touchAction === 'swipe',\n [styles.disappearAnimation]: appearTransition === 'exiting',\n })}\n data-qa=\"bottom-sheet-container\"\n ref={swipeContainerRef}\n >\n <div\n className={classnames(styles.grabber, styles.grabberTransitionAnimation, {\n [styles.grabberEnsureSafe]: stateRef.current.grabberUnsafe,\n })}\n ref={grabberRef}\n />\n <div\n className={classnames(styles.visualContainer, {\n [styles.visualContainerFullScreen]: height === 'full-screen',\n [styles.heightTransitionAnimation]: heightTransition === 'entering',\n })}\n data-qa=\"bottom-sheet-content\"\n ref={bottomSheetRef}\n >\n <div className={styles.header} onFocus={handleFocus} ref={headerRef}>\n <NavigationBarContext.Provider value={NAVIGATION_BAR_SIZE_OVERRIDE}>\n {header}\n </NavigationBarContext.Provider>\n </div>\n <div className={styles.scrollContainer} ref={scrollContainerRef}>\n <div\n className={classnames(styles.content, {\n [styles.contentWithPaddings]: withContentPaddings,\n [styles.contentWithoutHeader]: !header,\n })}\n ref={contentRef}\n >\n <BottomSheetContext.Provider value={contextValue}>\n {children}\n </BottomSheetContext.Provider>\n </div>\n </div>\n <div className={styles.footer} ref={footerRef}>\n {footer && (\n <div\n className={classnames(styles.divider, {\n [styles.dividerVisible]: stateRef.current.dividerVisible,\n })}\n ref={dividerRef}\n >\n <Divider />\n </div>\n )}\n {interceptClickHandlers ? <ClickInterceptor>{footer}</ClickInterceptor> : footer}\n </div>\n </div>\n <div className={styles.contentOverlay} ref={contentOverlayRef} />\n </div>\n </div>\n </Layer>\n );\n\n return createPortal(\n <div\n className={styles.cssVariablesContainer}\n data-qa=\"bottom-sheet-css-variables\"\n ref={cssVariablesContainerRef}\n >\n <Transition\n appear\n in={currentVisible}\n mountOnEnter\n onEnter={setTransformToInvisible}\n onEntering={setTransformToVisible}\n onEntered={onAppear}\n onExit={handleExitAnimationStart}\n onExiting={setTransformToInvisible}\n onExited={handleExitAnimationEnd}\n timeout={animationTimeout.appear}\n unmountOnExit\n nodeRef={contentRef}\n >\n {(appearTransition) => (\n <Transition\n in={visibleHeightDiff !== null}\n onEnter={handleHeightAnimationStart}\n onEntered={handleHeightAnimationEnd}\n timeout={animationTimeout.height}\n nodeRef={contentRef}\n >\n {(heightTransition) => renderFunc(appearTransition, heightTransition)}\n </Transition>\n )}\n </Transition>\n </div>,\n document.body\n );\n};\n\nexport const BottomSheet = forwardRef(BottomSheetRenderFunc);\n"],"names":["initScrollHandlers","_jsx","_jsxs"],"mappings":"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"}
|
package/BottomSheetFooter.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { s as styles } from './bottom-sheet-
|
|
3
|
+
import { s as styles } from './bottom-sheet-C_sZ1cCA.js';
|
|
4
4
|
|
|
5
5
|
const BottomSheetFooter = ({ children }) => (jsx("div", { className: styles.footerWithPadding, children: children }));
|
|
6
6
|
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import './index.css';
|
|
2
|
+
var styles = {"flex-container":"magritte-flex-container___muHAx_5-0-0","flexContainer":"magritte-flex-container___muHAx_5-0-0","animation-timeout":"magritte-animation-timeout___yd-SZ_5-0-0","animationTimeout":"magritte-animation-timeout___yd-SZ_5-0-0","css-variables-container":"magritte-css-variables-container___jBCr9_5-0-0","cssVariablesContainer":"magritte-css-variables-container___jBCr9_5-0-0","appear-animation":"magritte-appear-animation___P84Ln_5-0-0","appearAnimation":"magritte-appear-animation___P84Ln_5-0-0","disappear-animation":"magritte-disappear-animation___Putks_5-0-0","disappearAnimation":"magritte-disappear-animation___Putks_5-0-0","grabber-transition-animation":"magritte-grabber-transition-animation___s3Oh4_5-0-0","grabberTransitionAnimation":"magritte-grabber-transition-animation___s3Oh4_5-0-0","height-transition-animation":"magritte-height-transition-animation___xNprr_5-0-0","heightTransitionAnimation":"magritte-height-transition-animation___xNprr_5-0-0","close-by-swipe-animation":"magritte-close-by-swipe-animation___wdezY_5-0-0","closeBySwipeAnimation":"magritte-close-by-swipe-animation___wdezY_5-0-0","swipe-cancel-animation":"magritte-swipe-cancel-animation___AhYj5_5-0-0","swipeCancelAnimation":"magritte-swipe-cancel-animation___AhYj5_5-0-0","overlay":"magritte-overlay___5a2U-_5-0-0","overlay-background":"magritte-overlay-background___8Sd4V_5-0-0","overlayBackground":"magritte-overlay-background___8Sd4V_5-0-0","overlay-background_visible":"magritte-overlay-background_visible___FOJgj_5-0-0","overlayBackgroundVisible":"magritte-overlay-background_visible___FOJgj_5-0-0","swipe-container":"magritte-swipe-container___sZ2n5_5-0-0","swipeContainer":"magritte-swipe-container___sZ2n5_5-0-0","grabber":"magritte-grabber___A7SB-_5-0-0","grabber_ensure-safe":"magritte-grabber_ensure-safe___DR-dV_5-0-0","grabberEnsureSafe":"magritte-grabber_ensure-safe___DR-dV_5-0-0","visual-container":"magritte-visual-container___-VSuY_5-0-0","visualContainer":"magritte-visual-container___-VSuY_5-0-0","visual-container_full-screen":"magritte-visual-container_full-screen___jCCBb_5-0-0","visualContainerFullScreen":"magritte-visual-container_full-screen___jCCBb_5-0-0","header":"magritte-header___5mMtj_5-0-0","scroll-container":"magritte-scroll-container___4ngNY_5-0-0","scrollContainer":"magritte-scroll-container___4ngNY_5-0-0","content":"magritte-content___1gAwP_5-0-0","content_with-paddings":"magritte-content_with-paddings___gIiAv_5-0-0","contentWithPaddings":"magritte-content_with-paddings___gIiAv_5-0-0","content_without-header":"magritte-content_without-header___YZR38_5-0-0","contentWithoutHeader":"magritte-content_without-header___YZR38_5-0-0","footer":"magritte-footer___RWslT_5-0-0","footer-with-padding":"magritte-footer-with-padding___KwkhC_5-0-0","footerWithPadding":"magritte-footer-with-padding___KwkhC_5-0-0","divider":"magritte-divider___0F8hh_5-0-0","divider_visible":"magritte-divider_visible___pAWZM_5-0-0","dividerVisible":"magritte-divider_visible___pAWZM_5-0-0","content-overlay":"magritte-content-overlay___HAyzL_5-0-0","contentOverlay":"magritte-content-overlay___HAyzL_5-0-0"};
|
|
3
|
+
|
|
4
|
+
export { styles as s };
|
|
5
|
+
//# sourceMappingURL=bottom-sheet-C_sZ1cCA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bottom-sheet-C_sZ1cCA.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|