@hh.ru/magritte-ui-date-picker 6.1.105 → 6.1.107

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.
Files changed (34) hide show
  1. package/AsyncDataLoader.js +1 -1
  2. package/DatePicker/DatePicker.js +1 -1
  3. package/DatePicker/DayPicker.js +1 -1
  4. package/DatePicker/MobileDatePickerWithScroll.js +1 -1
  5. package/DatePicker/UncontrolledDatePicker.js +1 -1
  6. package/Header.js +1 -1
  7. package/InfiniteScroll.js +4 -4
  8. package/InfiniteScroll.js.map +1 -1
  9. package/InfoDatePicker/InfoDatePicker.js +1 -1
  10. package/InfoDatePicker/InfoDayPicker.js +1 -1
  11. package/InfoDatePicker/MobileInfoDatePickerWithScroll.js +1 -1
  12. package/InfoDatePicker/UncontrolledInfoDatePicker.js +1 -1
  13. package/IntervalDatePicker/DesktopMultiLayoutIntervalDatePicker.js +1 -1
  14. package/IntervalDatePicker/IntervalDatePicker.js +1 -1
  15. package/IntervalDatePicker/IntervalDayPicker.js +1 -1
  16. package/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.js +2 -2
  17. package/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.js.map +1 -1
  18. package/IntervalDatePicker/MobileSingleLayoutIntervalDatePicker.js +1 -1
  19. package/IntervalDatePicker/SingleLayoutIntervalDatePicker.js +1 -1
  20. package/IntervalDatePicker/UncontrolledIntervalDatePicker.js +1 -1
  21. package/MonthPicker.js +1 -1
  22. package/StatusDatePicker/MobileStatusDatePickerWithScroll.js +1 -1
  23. package/StatusDatePicker/StatusDatePicker.js +1 -1
  24. package/StatusDatePicker/StatusDayPicker.js +1 -1
  25. package/StatusDatePicker/UncontrolledStatusDatePicker.js +1 -1
  26. package/Weekdays.js +1 -1
  27. package/YearPicker.js +1 -1
  28. package/date-picker-CHNF7thk.js +5 -0
  29. package/date-picker-CHNF7thk.js.map +1 -0
  30. package/index.css +329 -329
  31. package/index.js +1 -1
  32. package/package.json +19 -19
  33. package/date-picker-BDmVdqvY.js +0 -5
  34. package/date-picker-BDmVdqvY.js.map +0 -1
@@ -4,7 +4,7 @@ import { useContext, useState, useMemo } from 'react';
4
4
  import classnames from 'classnames';
5
5
  import { AsyncDataContext } from './AsyncDataContext.js';
6
6
  import { Loader } from '@hh.ru/magritte-ui-loader';
7
- import { s as styles } from './date-picker-BDmVdqvY.js';
7
+ import { s as styles } from './date-picker-CHNF7thk.js';
8
8
 
9
9
  /**
10
10
  * Отображает лоадер поверх контента во время загрузки асинхронных данных.
@@ -16,7 +16,7 @@ import { useDatePickerControls } from '../useDatePickerControls.js';
16
16
  import { useModifierDates } from '../useModifierDates.js';
17
17
  import { useDisplayDate } from '../utils.js';
18
18
  import { Divider } from '@hh.ru/magritte-ui-divider';
19
- import { s as styles } from '../date-picker-BDmVdqvY.js';
19
+ import { s as styles } from '../date-picker-CHNF7thk.js';
20
20
  import '../AsyncDataContext.js';
21
21
  import '@hh.ru/magritte-ui-loader';
22
22
  import 'date-fns';
@@ -6,7 +6,7 @@ import { isToday, format, isSameMonth, isSameDay } from 'date-fns';
6
6
  import { useDisabled } from '@hh.ru/magritte-common-use-disabled';
7
7
  import { useModifierDatesFunc } from '../useModifierDatesFunc.js';
8
8
  import { useDayPickerDates } from '../utils.js';
9
- import { s as styles } from '../date-picker-BDmVdqvY.js';
9
+ import { s as styles } from '../date-picker-CHNF7thk.js';
10
10
  import '../AsyncDataContext.js';
11
11
  import '../useModifierDates.js';
12
12
  import 'date-fns/constants';
@@ -13,7 +13,7 @@ import { YearPicker } from '../YearPicker.js';
13
13
  import { useDatePickerControls } from '../useDatePickerControls.js';
14
14
  import { useMobileHorizontalScroll } from '../useMobileHorizontalScroll.js';
15
15
  import { Divider } from '@hh.ru/magritte-ui-divider';
16
- import { s as styles } from '../date-picker-BDmVdqvY.js';
16
+ import { s as styles } from '../date-picker-CHNF7thk.js';
17
17
  import 'classnames';
18
18
  import '../AsyncDataContext.js';
19
19
  import '@hh.ru/magritte-ui-loader';
@@ -10,7 +10,7 @@ import '@hh.ru/magritte-ui-breakpoint';
10
10
  import '../AsyncDataLoader.js';
11
11
  import '../AsyncDataContext.js';
12
12
  import '@hh.ru/magritte-ui-loader';
13
- import '../date-picker-BDmVdqvY.js';
13
+ import '../date-picker-CHNF7thk.js';
14
14
  import '../AsyncDataStore.js';
15
15
  import '../useModifierDates.js';
16
16
  import './DayPicker.js';
package/Header.js CHANGED
@@ -8,7 +8,7 @@ import { makeYearsInterval } from './utils.js';
8
8
  import { IconDynamic } from '@hh.ru/magritte-ui-icon';
9
9
  import { ChevronLeftOutlinedSize24, ChevronDownOutlinedSize16, ChevronRightOutlinedSize24 } from '@hh.ru/magritte-ui-icon/icon';
10
10
  import { Text } from '@hh.ru/magritte-ui-typography';
11
- import { s as styles } from './date-picker-BDmVdqvY.js';
11
+ import { s as styles } from './date-picker-CHNF7thk.js';
12
12
  import 'date-fns/constants';
13
13
 
14
14
  const Header = ({ calendar, displayDate, stretched, activeHeader: _activeHeader = true, alignHeader = 'center', goToNextPeriod, goToPrevPeriod, headerMonthFormat = 'mm', locale, showControls = true, showHeaderDate = true, showNextControl = true, showPrevControl = true, switchCalendar, }) => {
package/InfiniteScroll.js CHANGED
@@ -4,7 +4,7 @@ import { useRef, useState, useContext, useMemo, useCallback, useLayoutEffect, us
4
4
  import { debounce } from '@hh.ru/magritte-common-func-utils';
5
5
  import { initScrollHandlers } from '@hh.ru/magritte-internal-custom-scroll';
6
6
  import { AsyncDataContext } from './AsyncDataContext.js';
7
- import { s as styles } from './date-picker-BDmVdqvY.js';
7
+ import { s as styles } from './date-picker-CHNF7thk.js';
8
8
 
9
9
  const InfiniteScroll = ({ initialRenderedItems, invisibleThreshold, visibleThreshold, makeItemFunc, renderItemFunc, onVisibleItemChange, axis = 'vertical', onTouchEnd, }) => {
10
10
  const stateRef = useRef({
@@ -34,7 +34,7 @@ const InfiniteScroll = ({ initialRenderedItems, invisibleThreshold, visibleThres
34
34
  });
35
35
  return [key, callback];
36
36
  }));
37
- }, [stateKey]); // eslint-disable-line disable-autofix/react-hooks/exhaustive-deps
37
+ }, [stateKey]); // eslint-disable-line react-hooks/exhaustive-deps
38
38
  const addItemsIfNeeded = useCallback((scrollDirection) => {
39
39
  if (!visibleAreaMetricsRef.current) {
40
40
  return;
@@ -320,7 +320,7 @@ const InfiniteScroll = ({ initialRenderedItems, invisibleThreshold, visibleThres
320
320
  debouncedCallback();
321
321
  },
322
322
  });
323
- }, [addItemsIfNeeded, axis]); // eslint-disable-line disable-autofix/react-hooks/exhaustive-deps
323
+ }, [addItemsIfNeeded, axis]); // eslint-disable-line react-hooks/exhaustive-deps
324
324
  useLayoutEffect(() => {
325
325
  if (!visualViewport || !wrapperRef.current) {
326
326
  return;
@@ -377,7 +377,7 @@ const InfiniteScroll = ({ initialRenderedItems, invisibleThreshold, visibleThres
377
377
  }
378
378
  }
379
379
  }
380
- }, [stateKey, axis]); // eslint-disable-line disable-autofix/react-hooks/exhaustive-deps
380
+ }, [stateKey, axis]); // eslint-disable-line react-hooks/exhaustive-deps
381
381
  return (jsxs("div", { className: styles.infiniteScrollWrapper, ref: wrapperRef, "data-qa": "date-picker-infinite-container", children: [axis === 'vertical' &&
382
382
  [...stateRef.current.items.entries()].map(([key, item]) => (jsx(Fragment, { children: key >= stateRef.current.firstRenderedKey && key <= stateRef.current.lastRenderedKey ? (jsx("div", { ref: itemRefCallbacks.get(key), children: renderItemFunc(item, false) })) : (jsx("div", { style: { height: `${itemElementsRef.current.get(key)?.clientHeight}px` } })) }, `${item}`))), axis === 'horizontal' && (jsx("div", { style: { display: 'flex', flexWrap: 'nowrap' }, children: [...stateRef.current.items.entries()].map(([key, item]) => (jsx(Fragment, { children: key >= stateRef.current.firstRenderedKey && key <= stateRef.current.lastRenderedKey ? (jsx("div", { ref: itemRefCallbacks.get(key), className: styles.infiniteScrollItemHorizontal, children: renderItemFunc(item, key === visibleItemKeyRef.current) })) : (jsx("div", { style: {
383
383
  width: `${itemElementsRef.current.get(key)?.clientWidth}px`,
@@ -1 +1 @@
1
- {"version":3,"file":"InfiniteScroll.js","sources":["src/InfiniteScroll.tsx"],"sourcesContent":["import {\n Fragment,\n ReactElement,\n RefCallback,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { debounce } from '@hh.ru/magritte-common-func-utils';\nimport { initScrollHandlers } from '@hh.ru/magritte-internal-custom-scroll';\nimport { AsyncDataContext } from '@hh.ru/magritte-ui-date-picker/AsyncDataContext';\n\nimport styles from './date-picker.less';\n\ninterface InfiniteScrollState<ItemType> {\n items: Map<number, ItemType>;\n firstRenderedKey: number;\n lastRenderedKey: number;\n needScrollCorrection: boolean;\n}\n\ninterface InfiniteScrollProps<ItemType> {\n initialRenderedItems: number;\n /** Высота невидимой части айтема, при достижении которой нужно рендерить еще один айтем за ним */\n invisibleThreshold: number;\n /** Высота видимой части айтема, при достижении которой вызывается колбек onVisibleItemChange с этим айтемом в параметрах */\n visibleThreshold: number;\n makeItemFunc: (key: number) => ItemType;\n renderItemFunc: (item: ItemType, isFocusAvailable: boolean) => ReactElement;\n onVisibleItemChange: (item: ItemType, key: number) => void;\n axis?: 'horizontal' | 'vertical';\n onTouchEnd?: (item: ItemType) => void;\n}\n\nexport const InfiniteScroll = <ItemType,>({\n initialRenderedItems,\n invisibleThreshold,\n visibleThreshold,\n makeItemFunc,\n renderItemFunc,\n onVisibleItemChange,\n axis = 'vertical',\n onTouchEnd,\n}: InfiniteScrollProps<ItemType>): ReactElement => {\n const stateRef = useRef<InfiniteScrollState<ItemType>>({\n items: new Map([...Array(initialRenderedItems).keys()].map((index) => [index, makeItemFunc(index)])),\n firstRenderedKey: 0,\n lastRenderedKey: initialRenderedItems - 1,\n needScrollCorrection: false,\n });\n const touchEndRefCallback = useRef(onTouchEnd);\n touchEndRefCallback.current = onTouchEnd;\n const [stateKey, setStateKey] = useState(0);\n\n const asyncDataContext = useContext(AsyncDataContext);\n const boundariesRef = useRef<{ top: number; bottom: number; left: number; right: number } | null>(null);\n const itemElementsRef = useRef<Map<number, HTMLDivElement>>(new Map());\n const translateCoordRef = useRef(0);\n const visibleAreaMetricsRef = useRef<{ top: number; bottom: number; left: number; right: number } | null>(null);\n const visibleItemKeyRef = useRef(0);\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const prevScrollDirectionRef = useRef<string | null>(null);\n const animatedState = useRef<boolean>(false);\n\n const itemRefCallbacks = useMemo<Map<number, RefCallback<HTMLDivElement>>>(() => {\n return new Map(\n [...stateRef.current.items.entries()].map(([key]) => {\n const callback = ((ref) => {\n if (ref !== null) {\n itemElementsRef.current.set(key, ref);\n }\n }) as RefCallback<HTMLDivElement>;\n return [key, callback];\n })\n );\n }, [stateKey]); // eslint-disable-line disable-autofix/react-hooks/exhaustive-deps\n\n const addItemsIfNeeded = useCallback(\n (scrollDirection: 'up' | 'down' | 'left' | 'right') => {\n if (!visibleAreaMetricsRef.current) {\n return;\n }\n\n const { items, firstRenderedKey, lastRenderedKey } = stateRef.current;\n\n // скролл вверх\n if (scrollDirection === 'up') {\n // самый верхний видимый айтем близко к верхнему краю экрана — нужно рендерить еще один сверху\n const firstRenderedItemElement = itemElementsRef.current.get(firstRenderedKey);\n if (firstRenderedItemElement) {\n const firstRenderedItemMetrics = firstRenderedItemElement.getBoundingClientRect();\n if (visibleAreaMetricsRef.current.top - firstRenderedItemMetrics.top < invisibleThreshold) {\n if (!items.has(firstRenderedKey - 1)) {\n stateRef.current.items = new Map([\n [firstRenderedKey - 1, makeItemFunc(firstRenderedKey - 1)],\n ...items.entries(),\n ]);\n stateRef.current.needScrollCorrection = true;\n }\n stateRef.current.firstRenderedKey = firstRenderedKey - 1;\n stateRef.current.lastRenderedKey = lastRenderedKey - 1;\n setStateKey(Math.random());\n }\n }\n\n // последний пересекший верхнюю границу видимой области запоминаем как visible item\n for (let key = firstRenderedKey; key < lastRenderedKey; key += 1) {\n if (stateRef.current.items.has(key) && itemElementsRef.current.has(key)) {\n const itemElement = itemElementsRef.current.get(key) as HTMLElement;\n if (\n itemElement.getBoundingClientRect().bottom - visibleAreaMetricsRef.current.top >\n visibleThreshold\n ) {\n if (key !== visibleItemKeyRef.current) {\n onVisibleItemChange(stateRef.current.items.get(key) as ItemType, key);\n visibleItemKeyRef.current = key;\n }\n break;\n }\n }\n }\n }\n\n // скролл вниз\n if (scrollDirection === 'down') {\n // самый нижний видимый айтем близко к нижнему краю экрана — нужно рендерить еще один снизу\n const lastRenderedItemElement = itemElementsRef.current.get(lastRenderedKey);\n if (lastRenderedItemElement) {\n const lastRenderedItemMetrics = lastRenderedItemElement.getBoundingClientRect();\n if (lastRenderedItemMetrics.bottom - visibleAreaMetricsRef.current.bottom < invisibleThreshold) {\n if (!items.has(lastRenderedKey + 1)) {\n stateRef.current.items = new Map([\n ...items.entries(),\n [lastRenderedKey + 1, makeItemFunc(lastRenderedKey + 1)],\n ]);\n }\n stateRef.current.firstRenderedKey = firstRenderedKey + 1;\n stateRef.current.lastRenderedKey = lastRenderedKey + 1;\n setStateKey(Math.random());\n }\n }\n\n // последний пересекший нижнюю границу видимой области запоминаем как visible item\n for (let key = lastRenderedKey; key > firstRenderedKey; key -= 1) {\n if (stateRef.current.items.has(key) && itemElementsRef.current.has(key)) {\n const itemElement = itemElementsRef.current.get(key) as HTMLElement;\n if (\n visibleAreaMetricsRef.current.bottom - itemElement.getBoundingClientRect().top >\n visibleThreshold\n ) {\n if (key !== visibleItemKeyRef.current) {\n onVisibleItemChange(stateRef.current.items.get(key) as ItemType, key);\n visibleItemKeyRef.current = key;\n }\n break;\n }\n }\n }\n }\n\n // скролл влево\n if (scrollDirection === 'left') {\n if (!prevScrollDirectionRef.current || prevScrollDirectionRef.current === 'left') {\n // самый левый видимый айтем близко к левому краю экрана — нужно рендерить еще один слева\n const firstRenderedItemElement = itemElementsRef.current.get(firstRenderedKey);\n if (firstRenderedItemElement) {\n const firstRenderedItemMetrics = firstRenderedItemElement.getBoundingClientRect();\n if (visibleAreaMetricsRef.current.left - firstRenderedItemMetrics.left < invisibleThreshold) {\n if (!items.has(firstRenderedKey - 1)) {\n stateRef.current.items = new Map([\n [firstRenderedKey - 1, makeItemFunc(firstRenderedKey - 1)],\n ...items.entries(),\n ]);\n stateRef.current.needScrollCorrection = true;\n }\n stateRef.current.firstRenderedKey = firstRenderedKey - 1;\n stateRef.current.lastRenderedKey = lastRenderedKey - 1;\n setStateKey(Math.random());\n }\n }\n\n // последний пересекший левую границу видимой области запоминаем как visible item\n for (let key = firstRenderedKey; key < lastRenderedKey; key += 1) {\n if (stateRef.current.items.has(key) && itemElementsRef.current.has(key)) {\n const itemElement = itemElementsRef.current.get(key) as HTMLElement;\n if (\n itemElement.getBoundingClientRect().right - visibleAreaMetricsRef.current.left >\n visibleThreshold\n ) {\n if (key !== visibleItemKeyRef.current) {\n onVisibleItemChange(stateRef.current.items.get(key) as ItemType, key);\n visibleItemKeyRef.current = key;\n }\n break;\n }\n }\n }\n }\n prevScrollDirectionRef.current = 'left';\n }\n\n // скролл вправо\n if (scrollDirection === 'right') {\n if (!prevScrollDirectionRef.current || prevScrollDirectionRef.current === 'right') {\n // самый правый видимый айтем близко к правому краю экрана — нужно рендерить еще один снизу\n const lastRenderedItemElement = itemElementsRef.current.get(lastRenderedKey);\n if (lastRenderedItemElement) {\n const lastRenderedItemMetrics = lastRenderedItemElement.getBoundingClientRect();\n if (lastRenderedItemMetrics.right - visibleAreaMetricsRef.current.right < invisibleThreshold) {\n if (!items.has(lastRenderedKey + 1)) {\n stateRef.current.items = new Map([\n ...items.entries(),\n [lastRenderedKey + 1, makeItemFunc(lastRenderedKey + 1)],\n ]);\n }\n stateRef.current.firstRenderedKey = firstRenderedKey + 1;\n stateRef.current.lastRenderedKey = lastRenderedKey + 1;\n setStateKey(Math.random());\n }\n }\n\n // последний пересекший правую границу видимой области запоминаем как visible item\n for (let key = lastRenderedKey; key > firstRenderedKey; key -= 1) {\n if (stateRef.current.items.has(key) && itemElementsRef.current.has(key)) {\n const itemElement = itemElementsRef.current.get(key) as HTMLElement;\n if (\n visibleAreaMetricsRef.current.right - itemElement.getBoundingClientRect().left >\n visibleThreshold\n ) {\n if (key !== visibleItemKeyRef.current) {\n onVisibleItemChange(stateRef.current.items.get(key) as ItemType, key);\n visibleItemKeyRef.current = key;\n }\n break;\n }\n }\n }\n }\n\n prevScrollDirectionRef.current = 'right';\n }\n },\n [invisibleThreshold, visibleThreshold, makeItemFunc, onVisibleItemChange, setStateKey]\n );\n\n useLayoutEffect(() => {\n // сбрасываем стейты\n if (stateRef.current && wrapperRef.current) {\n stateRef.current.items = new Map(\n [...Array(initialRenderedItems).keys()].map((index) => [index, makeItemFunc(index)])\n );\n stateRef.current.firstRenderedKey = 0;\n stateRef.current.lastRenderedKey = initialRenderedItems - 1;\n stateRef.current.needScrollCorrection = false;\n visibleItemKeyRef.current = 0;\n translateCoordRef.current = 0;\n prevScrollDirectionRef.current = null;\n wrapperRef.current.style.transform =\n axis === 'vertical'\n ? `translateY(${translateCoordRef.current}px)`\n : `translateX(${translateCoordRef.current}px)`;\n\n setStateKey(Math.random());\n }\n }, [makeItemFunc, initialRenderedItems, axis]);\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n if (!wrapper) {\n return void 0;\n }\n\n const handleTouchMove = (event: TouchEvent) => {\n if (event.cancelable) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n const handleTransitionEnd = () => {\n wrapper.classList.remove(styles.animated);\n animatedState.current = false;\n touchEndRefCallback.current?.(stateRef.current.items.get(visibleItemKeyRef.current) as ItemType);\n };\n\n wrapper.addEventListener('touchmove', handleTouchMove);\n wrapper.addEventListener('transitionend', handleTransitionEnd);\n return () => {\n wrapper.removeEventListener('touchmove', handleTouchMove);\n wrapper.removeEventListener('transitionend', handleTransitionEnd);\n };\n }, []);\n\n useEffect(() => {\n const animateScrollEnd = () => {\n if (!wrapperRef.current || !wrapperRef.current.parentElement) {\n return;\n }\n\n const itemElement = itemElementsRef.current.get(visibleItemKeyRef.current) as HTMLElement;\n const dif =\n wrapperRef.current.parentElement.getBoundingClientRect().left -\n itemElement.getBoundingClientRect().left;\n\n if (dif !== 0) {\n translateCoordRef.current += dif;\n wrapperRef.current?.classList.add(styles.animated);\n\n animatedState.current = true;\n wrapperRef.current.style.transform = `translateX(${translateCoordRef.current}px)`;\n }\n };\n\n const debouncedCallback = debounce(() => {\n if (axis === 'horizontal') {\n animateScrollEnd();\n return;\n }\n\n touchEndRefCallback.current?.(stateRef.current.items.get(visibleItemKeyRef.current) as ItemType);\n }, 60);\n return initScrollHandlers({\n axis,\n wrapperRef,\n onTouchMove: (event) => {\n if (!wrapperRef.current || animatedState.current) {\n return;\n }\n\n // если достигнут лимит лоадеров, не даем скроллить за границы первого и последнего айтема\n if (asyncDataContext !== null && asyncDataContext.isLimitExceeded() && boundariesRef.current !== null) {\n const translate = translateCoordRef.current + event.delta;\n if (\n axis === 'vertical' &&\n translate > boundariesRef.current.bottom &&\n translate < boundariesRef.current.top\n ) {\n translateCoordRef.current = translate;\n }\n if (\n axis === 'horizontal' &&\n translate > boundariesRef.current.right &&\n translate < boundariesRef.current.left\n ) {\n translateCoordRef.current = translate;\n }\n } else {\n translateCoordRef.current += event.delta;\n }\n\n wrapperRef.current.style.transform =\n axis === 'vertical'\n ? `translateY(${translateCoordRef.current}px)`\n : `translateX(${translateCoordRef.current}px)`;\n\n if (axis === 'vertical') {\n addItemsIfNeeded(event.delta > 0 ? 'up' : 'down');\n } else {\n event.delta !== 0 && addItemsIfNeeded(event.delta > 0 ? 'left' : 'right');\n }\n },\n onTouchEnd: () => {\n if (axis === 'horizontal') {\n animateScrollEnd();\n return;\n }\n touchEndRefCallback.current?.(stateRef.current.items.get(visibleItemKeyRef.current) as ItemType);\n },\n onWheelMove: (event) => {\n if (!wrapperRef.current || animatedState.current) {\n return;\n }\n\n event.preventDefault();\n\n // если достигнут лимит лоадеров, не даем скроллить за границы первого и последнего айтема\n if (asyncDataContext !== null && asyncDataContext.isLimitExceeded() && boundariesRef.current !== null) {\n const translate = translateCoordRef.current + event.delta;\n if (\n axis === 'vertical' &&\n translate > boundariesRef.current.bottom &&\n translate < boundariesRef.current.top\n ) {\n translateCoordRef.current = translate;\n }\n if (\n axis === 'horizontal' &&\n translate > boundariesRef.current.right &&\n translate < boundariesRef.current.left\n ) {\n translateCoordRef.current = translate;\n }\n } else {\n translateCoordRef.current += event.delta;\n }\n\n wrapperRef.current.style.transform =\n axis === 'vertical'\n ? `translateY(${translateCoordRef.current}px)`\n : `translateX(${translateCoordRef.current}px)`;\n\n if (axis === 'vertical') {\n addItemsIfNeeded(event.delta > 0 ? 'up' : 'down');\n } else {\n event.delta !== 0 && addItemsIfNeeded(event.delta > 0 ? 'left' : 'right');\n }\n debouncedCallback();\n },\n });\n }, [addItemsIfNeeded, axis]); // eslint-disable-line disable-autofix/react-hooks/exhaustive-deps\n\n useLayoutEffect(() => {\n if (!visualViewport || !wrapperRef.current) {\n return;\n }\n\n if (!visibleAreaMetricsRef.current) {\n visibleAreaMetricsRef.current = {\n top: wrapperRef.current.offsetTop,\n bottom: visualViewport.height,\n left: wrapperRef.current.offsetLeft,\n right: visualViewport.width,\n };\n }\n\n const { firstRenderedKey, lastRenderedKey, needScrollCorrection } = stateRef.current;\n const firstRenderedItemElement = itemElementsRef.current.get(firstRenderedKey);\n const lastRenderedItemElement = itemElementsRef.current.get(lastRenderedKey);\n if (firstRenderedItemElement && lastRenderedItemElement) {\n // если мы добавили айтем сверху, чтобы скролл не прыгал, компенсируем его на высоту самого верхнего айтема\n if (needScrollCorrection) {\n stateRef.current.needScrollCorrection = false;\n if (axis === 'vertical') {\n translateCoordRef.current -= firstRenderedItemElement.clientHeight;\n if (boundariesRef.current !== null) {\n boundariesRef.current.top -= firstRenderedItemElement.clientHeight;\n }\n wrapperRef.current.style.transform = `translateY(${translateCoordRef.current}px)`;\n } else {\n translateCoordRef.current -= firstRenderedItemElement.clientWidth;\n if (boundariesRef.current !== null) {\n boundariesRef.current.left -= firstRenderedItemElement.clientWidth;\n }\n wrapperRef.current.style.transform = `translateX(${translateCoordRef.current}px)`;\n }\n }\n\n // если достигнут лимит лоадеров, запоминаем границы первого и последнего айтема и не даем скроллить за них\n if (asyncDataContext !== null && !asyncDataContext.isLimitExceeded()) {\n if (axis === 'vertical') {\n const top =\n translateCoordRef.current +\n visibleAreaMetricsRef.current.top -\n firstRenderedItemElement.getBoundingClientRect().top;\n const bottom =\n translateCoordRef.current +\n visibleAreaMetricsRef.current.bottom -\n lastRenderedItemElement.getBoundingClientRect().bottom;\n boundariesRef.current = { top, bottom, left: 0, right: 0 };\n } else {\n const left =\n translateCoordRef.current +\n visibleAreaMetricsRef.current.left -\n firstRenderedItemElement.getBoundingClientRect().left;\n\n const right =\n translateCoordRef.current +\n visibleAreaMetricsRef.current.right -\n lastRenderedItemElement.getBoundingClientRect().right;\n\n boundariesRef.current = { left, right, top: 0, bottom: 0 };\n }\n }\n }\n }, [stateKey, axis]); // eslint-disable-line disable-autofix/react-hooks/exhaustive-deps\n\n return (\n <div className={styles.infiniteScrollWrapper} ref={wrapperRef} data-qa=\"date-picker-infinite-container\">\n {axis === 'vertical' &&\n [...stateRef.current.items.entries()].map(([key, item]) => (\n <Fragment key={`${item}`}>\n {key >= stateRef.current.firstRenderedKey && key <= stateRef.current.lastRenderedKey ? (\n <div ref={itemRefCallbacks.get(key)}>{renderItemFunc(item, false)}</div>\n ) : (\n <div style={{ height: `${itemElementsRef.current.get(key)?.clientHeight}px` }} />\n )}\n </Fragment>\n ))}\n\n {axis === 'horizontal' && (\n <div style={{ display: 'flex', flexWrap: 'nowrap' }}>\n {[...stateRef.current.items.entries()].map(([key, item]) => (\n <Fragment key={`${item}`}>\n {key >= stateRef.current.firstRenderedKey && key <= stateRef.current.lastRenderedKey ? (\n <div ref={itemRefCallbacks.get(key)} className={styles.infiniteScrollItemHorizontal}>\n {renderItemFunc(item, key === visibleItemKeyRef.current)}\n </div>\n ) : (\n <div\n style={{\n width: `${itemElementsRef.current.get(key)?.clientWidth}px`,\n flexShrink: 0,\n }}\n />\n )}\n </Fragment>\n ))}\n </div>\n )}\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAuCa,MAAA,cAAc,GAAG,CAAY,EACtC,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,IAAI,GAAG,UAAU,EACjB,UAAU,GACkB,KAAkB;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAgC;AACnD,QAAA,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpG,QAAA,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,oBAAoB,GAAG,CAAC;AACzC,QAAA,oBAAoB,EAAE,KAAK;AAC9B,KAAA,CAAC,CAAC;AACH,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC/C,IAAA,mBAAmB,CAAC,OAAO,GAAG,UAAU,CAAC;IACzC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE5C,IAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACtD,IAAA,MAAM,aAAa,GAAG,MAAM,CAAsE,IAAI,CAAC,CAAC;IACxG,MAAM,eAAe,GAAG,MAAM,CAA8B,IAAI,GAAG,EAAE,CAAC,CAAC;AACvE,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,IAAA,MAAM,qBAAqB,GAAG,MAAM,CAAsE,IAAI,CAAC,CAAC;AAChH,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;AACvD,IAAA,MAAM,sBAAsB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;AAC3D,IAAA,MAAM,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAE7C,IAAA,MAAM,gBAAgB,GAAG,OAAO,CAA2C,MAAK;QAC5E,OAAO,IAAI,GAAG,CACV,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAI;AAChD,YAAA,MAAM,QAAQ,IAAI,CAAC,GAAG,KAAI;AACtB,gBAAA,IAAI,GAAG,KAAK,IAAI,EAAE;oBACd,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;iBACzC;AACL,aAAC,CAAgC,CAAC;AAClC,YAAA,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SAC1B,CAAC,CACL,CAAC;AACN,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEf,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAChC,CAAC,eAAiD,KAAI;AAClD,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;YAChC,OAAO;SACV;QAED,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;;AAGtE,QAAA,IAAI,eAAe,KAAK,IAAI,EAAE;;YAE1B,MAAM,wBAAwB,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC/E,IAAI,wBAAwB,EAAE;AAC1B,gBAAA,MAAM,wBAAwB,GAAG,wBAAwB,CAAC,qBAAqB,EAAE,CAAC;AAClF,gBAAA,IAAI,qBAAqB,CAAC,OAAO,CAAC,GAAG,GAAG,wBAAwB,CAAC,GAAG,GAAG,kBAAkB,EAAE;oBACvF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE;AAClC,wBAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC;4BAC7B,CAAC,gBAAgB,GAAG,CAAC,EAAE,YAAY,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;4BAC1D,GAAG,KAAK,CAAC,OAAO,EAAE;AACrB,yBAAA,CAAC,CAAC;AACH,wBAAA,QAAQ,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;qBAChD;oBACD,QAAQ,CAAC,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,GAAG,CAAC,CAAC;oBACzD,QAAQ,CAAC,OAAO,CAAC,eAAe,GAAG,eAAe,GAAG,CAAC,CAAC;AACvD,oBAAA,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;iBAC9B;aACJ;;AAGD,YAAA,KAAK,IAAI,GAAG,GAAG,gBAAgB,EAAE,GAAG,GAAG,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE;gBAC9D,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACrE,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAgB,CAAC;oBACpE,IACI,WAAW,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG;AAC9E,wBAAA,gBAAgB,EAClB;AACE,wBAAA,IAAI,GAAG,KAAK,iBAAiB,CAAC,OAAO,EAAE;AACnC,4BAAA,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAa,EAAE,GAAG,CAAC,CAAC;AACtE,4BAAA,iBAAiB,CAAC,OAAO,GAAG,GAAG,CAAC;yBACnC;wBACD,MAAM;qBACT;iBACJ;aACJ;SACJ;;AAGD,QAAA,IAAI,eAAe,KAAK,MAAM,EAAE;;YAE5B,MAAM,uBAAuB,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7E,IAAI,uBAAuB,EAAE;AACzB,gBAAA,MAAM,uBAAuB,GAAG,uBAAuB,CAAC,qBAAqB,EAAE,CAAC;AAChF,gBAAA,IAAI,uBAAuB,CAAC,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,GAAG,kBAAkB,EAAE;oBAC5F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE;AACjC,wBAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC;4BAC7B,GAAG,KAAK,CAAC,OAAO,EAAE;4BAClB,CAAC,eAAe,GAAG,CAAC,EAAE,YAAY,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;AAC3D,yBAAA,CAAC,CAAC;qBACN;oBACD,QAAQ,CAAC,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,GAAG,CAAC,CAAC;oBACzD,QAAQ,CAAC,OAAO,CAAC,eAAe,GAAG,eAAe,GAAG,CAAC,CAAC;AACvD,oBAAA,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;iBAC9B;aACJ;;AAGD,YAAA,KAAK,IAAI,GAAG,GAAG,eAAe,EAAE,GAAG,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC,EAAE;gBAC9D,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACrE,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAgB,CAAC;oBACpE,IACI,qBAAqB,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC,GAAG;AAC9E,wBAAA,gBAAgB,EAClB;AACE,wBAAA,IAAI,GAAG,KAAK,iBAAiB,CAAC,OAAO,EAAE;AACnC,4BAAA,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAa,EAAE,GAAG,CAAC,CAAC;AACtE,4BAAA,iBAAiB,CAAC,OAAO,GAAG,GAAG,CAAC;yBACnC;wBACD,MAAM;qBACT;iBACJ;aACJ;SACJ;;AAGD,QAAA,IAAI,eAAe,KAAK,MAAM,EAAE;YAC5B,IAAI,CAAC,sBAAsB,CAAC,OAAO,IAAI,sBAAsB,CAAC,OAAO,KAAK,MAAM,EAAE;;gBAE9E,MAAM,wBAAwB,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAC/E,IAAI,wBAAwB,EAAE;AAC1B,oBAAA,MAAM,wBAAwB,GAAG,wBAAwB,CAAC,qBAAqB,EAAE,CAAC;AAClF,oBAAA,IAAI,qBAAqB,CAAC,OAAO,CAAC,IAAI,GAAG,wBAAwB,CAAC,IAAI,GAAG,kBAAkB,EAAE;wBACzF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE;AAClC,4BAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC;gCAC7B,CAAC,gBAAgB,GAAG,CAAC,EAAE,YAAY,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;gCAC1D,GAAG,KAAK,CAAC,OAAO,EAAE;AACrB,6BAAA,CAAC,CAAC;AACH,4BAAA,QAAQ,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;yBAChD;wBACD,QAAQ,CAAC,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,GAAG,CAAC,CAAC;wBACzD,QAAQ,CAAC,OAAO,CAAC,eAAe,GAAG,eAAe,GAAG,CAAC,CAAC;AACvD,wBAAA,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;qBAC9B;iBACJ;;AAGD,gBAAA,KAAK,IAAI,GAAG,GAAG,gBAAgB,EAAE,GAAG,GAAG,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE;oBAC9D,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACrE,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAgB,CAAC;wBACpE,IACI,WAAW,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI;AAC9E,4BAAA,gBAAgB,EAClB;AACE,4BAAA,IAAI,GAAG,KAAK,iBAAiB,CAAC,OAAO,EAAE;AACnC,gCAAA,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAa,EAAE,GAAG,CAAC,CAAC;AACtE,gCAAA,iBAAiB,CAAC,OAAO,GAAG,GAAG,CAAC;6BACnC;4BACD,MAAM;yBACT;qBACJ;iBACJ;aACJ;AACD,YAAA,sBAAsB,CAAC,OAAO,GAAG,MAAM,CAAC;SAC3C;;AAGD,QAAA,IAAI,eAAe,KAAK,OAAO,EAAE;YAC7B,IAAI,CAAC,sBAAsB,CAAC,OAAO,IAAI,sBAAsB,CAAC,OAAO,KAAK,OAAO,EAAE;;gBAE/E,MAAM,uBAAuB,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7E,IAAI,uBAAuB,EAAE;AACzB,oBAAA,MAAM,uBAAuB,GAAG,uBAAuB,CAAC,qBAAqB,EAAE,CAAC;AAChF,oBAAA,IAAI,uBAAuB,CAAC,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,KAAK,GAAG,kBAAkB,EAAE;wBAC1F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE;AACjC,4BAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC;gCAC7B,GAAG,KAAK,CAAC,OAAO,EAAE;gCAClB,CAAC,eAAe,GAAG,CAAC,EAAE,YAAY,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;AAC3D,6BAAA,CAAC,CAAC;yBACN;wBACD,QAAQ,CAAC,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,GAAG,CAAC,CAAC;wBACzD,QAAQ,CAAC,OAAO,CAAC,eAAe,GAAG,eAAe,GAAG,CAAC,CAAC;AACvD,wBAAA,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;qBAC9B;iBACJ;;AAGD,gBAAA,KAAK,IAAI,GAAG,GAAG,eAAe,EAAE,GAAG,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC,EAAE;oBAC9D,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACrE,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAgB,CAAC;wBACpE,IACI,qBAAqB,CAAC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC,IAAI;AAC9E,4BAAA,gBAAgB,EAClB;AACE,4BAAA,IAAI,GAAG,KAAK,iBAAiB,CAAC,OAAO,EAAE;AACnC,gCAAA,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAa,EAAE,GAAG,CAAC,CAAC;AACtE,gCAAA,iBAAiB,CAAC,OAAO,GAAG,GAAG,CAAC;6BACnC;4BACD,MAAM;yBACT;qBACJ;iBACJ;aACJ;AAED,YAAA,sBAAsB,CAAC,OAAO,GAAG,OAAO,CAAC;SAC5C;AACL,KAAC,EACD,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,CAAC,CACzF,CAAC;IAEF,eAAe,CAAC,MAAK;;QAEjB,IAAI,QAAQ,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE;AACxC,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,CAC5B,CAAC,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CACvF,CAAC;AACF,YAAA,QAAQ,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,eAAe,GAAG,oBAAoB,GAAG,CAAC,CAAC;AAC5D,YAAA,QAAQ,CAAC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAC9C,YAAA,iBAAiB,CAAC,OAAO,GAAG,CAAC,CAAC;AAC9B,YAAA,iBAAiB,CAAC,OAAO,GAAG,CAAC,CAAC;AAC9B,YAAA,sBAAsB,CAAC,OAAO,GAAG,IAAI,CAAC;AACtC,YAAA,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS;AAC9B,gBAAA,IAAI,KAAK,UAAU;AACf,sBAAE,CAAA,WAAA,EAAc,iBAAiB,CAAC,OAAO,CAAK,GAAA,CAAA;AAC9C,sBAAE,CAAc,WAAA,EAAA,iBAAiB,CAAC,OAAO,KAAK,CAAC;AAEvD,YAAA,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;SAC9B;KACJ,EAAE,CAAC,YAAY,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/C,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,KAAK,CAAC,CAAC;SACjB;AAED,QAAA,MAAM,eAAe,GAAG,CAAC,KAAiB,KAAI;AAC1C,YAAA,IAAI,KAAK,CAAC,UAAU,EAAE;gBAClB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;aAC3B;AACL,SAAC,CAAC;QAEF,MAAM,mBAAmB,GAAG,MAAK;YAC7B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1C,YAAA,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;AAC9B,YAAA,mBAAmB,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAa,CAAC,CAAC;AACrG,SAAC,CAAC;AAEF,QAAA,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AACvD,QAAA,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;AAC/D,QAAA,OAAO,MAAK;AACR,YAAA,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAC1D,YAAA,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;AACtE,SAAC,CAAC;KACL,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,MAAK;QACX,MAAM,gBAAgB,GAAG,MAAK;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE;gBAC1D,OAAO;aACV;AAED,YAAA,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAgB,CAAC;YAC1F,MAAM,GAAG,GACL,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI;AAC7D,gBAAA,WAAW,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;AAE7C,YAAA,IAAI,GAAG,KAAK,CAAC,EAAE;AACX,gBAAA,iBAAiB,CAAC,OAAO,IAAI,GAAG,CAAC;gBACjC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEnD,gBAAA,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;AAC7B,gBAAA,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,iBAAiB,CAAC,OAAO,CAAA,GAAA,CAAK,CAAC;aACrF;AACL,SAAC,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,IAAI,IAAI,KAAK,YAAY,EAAE;AACvB,gBAAA,gBAAgB,EAAE,CAAC;gBACnB,OAAO;aACV;AAED,YAAA,mBAAmB,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAa,CAAC,CAAC;SACpG,EAAE,EAAE,CAAC,CAAC;AACP,QAAA,OAAO,kBAAkB,CAAC;YACtB,IAAI;YACJ,UAAU;AACV,YAAA,WAAW,EAAE,CAAC,KAAK,KAAI;gBACnB,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE;oBAC9C,OAAO;iBACV;;AAGD,gBAAA,IAAI,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,CAAC,eAAe,EAAE,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE;oBACnG,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC1D,IACI,IAAI,KAAK,UAAU;AACnB,wBAAA,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM;AACxC,wBAAA,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EACvC;AACE,wBAAA,iBAAiB,CAAC,OAAO,GAAG,SAAS,CAAC;qBACzC;oBACD,IACI,IAAI,KAAK,YAAY;AACrB,wBAAA,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK;AACvC,wBAAA,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EACxC;AACE,wBAAA,iBAAiB,CAAC,OAAO,GAAG,SAAS,CAAC;qBACzC;iBACJ;qBAAM;AACH,oBAAA,iBAAiB,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC;iBAC5C;AAED,gBAAA,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS;AAC9B,oBAAA,IAAI,KAAK,UAAU;AACf,0BAAE,CAAA,WAAA,EAAc,iBAAiB,CAAC,OAAO,CAAK,GAAA,CAAA;AAC9C,0BAAE,CAAc,WAAA,EAAA,iBAAiB,CAAC,OAAO,KAAK,CAAC;AAEvD,gBAAA,IAAI,IAAI,KAAK,UAAU,EAAE;AACrB,oBAAA,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC;iBACrD;qBAAM;oBACH,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;iBAC7E;aACJ;YACD,UAAU,EAAE,MAAK;AACb,gBAAA,IAAI,IAAI,KAAK,YAAY,EAAE;AACvB,oBAAA,gBAAgB,EAAE,CAAC;oBACnB,OAAO;iBACV;AACD,gBAAA,mBAAmB,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAa,CAAC,CAAC;aACpG;AACD,YAAA,WAAW,EAAE,CAAC,KAAK,KAAI;gBACnB,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE;oBAC9C,OAAO;iBACV;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;;AAGvB,gBAAA,IAAI,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,CAAC,eAAe,EAAE,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE;oBACnG,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC1D,IACI,IAAI,KAAK,UAAU;AACnB,wBAAA,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM;AACxC,wBAAA,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EACvC;AACE,wBAAA,iBAAiB,CAAC,OAAO,GAAG,SAAS,CAAC;qBACzC;oBACD,IACI,IAAI,KAAK,YAAY;AACrB,wBAAA,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK;AACvC,wBAAA,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EACxC;AACE,wBAAA,iBAAiB,CAAC,OAAO,GAAG,SAAS,CAAC;qBACzC;iBACJ;qBAAM;AACH,oBAAA,iBAAiB,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC;iBAC5C;AAED,gBAAA,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS;AAC9B,oBAAA,IAAI,KAAK,UAAU;AACf,0BAAE,CAAA,WAAA,EAAc,iBAAiB,CAAC,OAAO,CAAK,GAAA,CAAA;AAC9C,0BAAE,CAAc,WAAA,EAAA,iBAAiB,CAAC,OAAO,KAAK,CAAC;AAEvD,gBAAA,IAAI,IAAI,KAAK,UAAU,EAAE;AACrB,oBAAA,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC;iBACrD;qBAAM;oBACH,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;iBAC7E;AACD,gBAAA,iBAAiB,EAAE,CAAC;aACvB;AACJ,SAAA,CAAC,CAAC;KACN,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;IAE7B,eAAe,CAAC,MAAK;QACjB,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YACxC,OAAO;SACV;AAED,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;YAChC,qBAAqB,CAAC,OAAO,GAAG;AAC5B,gBAAA,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS;gBACjC,MAAM,EAAE,cAAc,CAAC,MAAM;AAC7B,gBAAA,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU;gBACnC,KAAK,EAAE,cAAc,CAAC,KAAK;aAC9B,CAAC;SACL;QAED,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrF,MAAM,wBAAwB,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC/E,MAAM,uBAAuB,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC7E,QAAA,IAAI,wBAAwB,IAAI,uBAAuB,EAAE;;YAErD,IAAI,oBAAoB,EAAE;AACtB,gBAAA,QAAQ,CAAC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAC9C,gBAAA,IAAI,IAAI,KAAK,UAAU,EAAE;AACrB,oBAAA,iBAAiB,CAAC,OAAO,IAAI,wBAAwB,CAAC,YAAY,CAAC;AACnE,oBAAA,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE;wBAChC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,wBAAwB,CAAC,YAAY,CAAC;qBACtE;AACD,oBAAA,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,iBAAiB,CAAC,OAAO,CAAA,GAAA,CAAK,CAAC;iBACrF;qBAAM;AACH,oBAAA,iBAAiB,CAAC,OAAO,IAAI,wBAAwB,CAAC,WAAW,CAAC;AAClE,oBAAA,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE;wBAChC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI,wBAAwB,CAAC,WAAW,CAAC;qBACtE;AACD,oBAAA,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,iBAAiB,CAAC,OAAO,CAAA,GAAA,CAAK,CAAC;iBACrF;aACJ;;YAGD,IAAI,gBAAgB,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,EAAE;AAClE,gBAAA,IAAI,IAAI,KAAK,UAAU,EAAE;AACrB,oBAAA,MAAM,GAAG,GACL,iBAAiB,CAAC,OAAO;wBACzB,qBAAqB,CAAC,OAAO,CAAC,GAAG;AACjC,wBAAA,wBAAwB,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;AACzD,oBAAA,MAAM,MAAM,GACR,iBAAiB,CAAC,OAAO;wBACzB,qBAAqB,CAAC,OAAO,CAAC,MAAM;AACpC,wBAAA,uBAAuB,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAC3D,oBAAA,aAAa,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBAC9D;qBAAM;AACH,oBAAA,MAAM,IAAI,GACN,iBAAiB,CAAC,OAAO;wBACzB,qBAAqB,CAAC,OAAO,CAAC,IAAI;AAClC,wBAAA,wBAAwB,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;AAE1D,oBAAA,MAAM,KAAK,GACP,iBAAiB,CAAC,OAAO;wBACzB,qBAAqB,CAAC,OAAO,CAAC,KAAK;AACnC,wBAAA,uBAAuB,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;AAE1D,oBAAA,aAAa,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;iBAC9D;aACJ;SACJ;KACJ,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAErB,IAAA,QACIA,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,qBAAqB,EAAE,GAAG,EAAE,UAAU,EAAU,SAAA,EAAA,gCAAgC,EAClG,QAAA,EAAA,CAAA,IAAI,KAAK,UAAU;gBAChB,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,MAClDC,GAAC,CAAA,QAAQ,cACJ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,IAChFA,GAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAG,QAAA,EAAA,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,EAAA,CAAO,KAExEA,GAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,MAAM,EAAE,CAAG,EAAA,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,IAAI,EAAE,EAAA,CAAI,CACpF,EALU,EAAA,CAAA,EAAG,IAAI,CAAE,CAAA,CAMb,CACd,CAAC,EAEL,IAAI,KAAK,YAAY,KAClBA,GAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAC9C,QAAA,EAAA,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,MACnDA,GAAA,CAAC,QAAQ,EACJ,EAAA,QAAA,EAAA,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,IAChFA,GAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,4BAA4B,EAC9E,QAAA,EAAA,cAAc,CAAC,IAAI,EAAE,GAAG,KAAK,iBAAiB,CAAC,OAAO,CAAC,GACtD,KAENA,GACI,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE;AACH,4BAAA,KAAK,EAAE,CAAA,EAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,CAAI,EAAA,CAAA;AAC3D,4BAAA,UAAU,EAAE,CAAC;AAChB,yBAAA,EAAA,CACH,CACL,EAAA,EAZU,CAAG,EAAA,IAAI,CAAE,CAAA,CAab,CACd,CAAC,EACA,CAAA,CACT,CACC,EAAA,CAAA,EACR;AACN;;;;"}
1
+ {"version":3,"file":"InfiniteScroll.js","sources":["src/InfiniteScroll.tsx"],"sourcesContent":["import {\n Fragment,\n ReactElement,\n RefCallback,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { debounce } from '@hh.ru/magritte-common-func-utils';\nimport { initScrollHandlers } from '@hh.ru/magritte-internal-custom-scroll';\nimport { AsyncDataContext } from '@hh.ru/magritte-ui-date-picker/AsyncDataContext';\n\nimport styles from './date-picker.less';\n\ninterface InfiniteScrollState<ItemType> {\n items: Map<number, ItemType>;\n firstRenderedKey: number;\n lastRenderedKey: number;\n needScrollCorrection: boolean;\n}\n\ninterface InfiniteScrollProps<ItemType> {\n initialRenderedItems: number;\n /** Высота невидимой части айтема, при достижении которой нужно рендерить еще один айтем за ним */\n invisibleThreshold: number;\n /** Высота видимой части айтема, при достижении которой вызывается колбек onVisibleItemChange с этим айтемом в параметрах */\n visibleThreshold: number;\n makeItemFunc: (key: number) => ItemType;\n renderItemFunc: (item: ItemType, isFocusAvailable: boolean) => ReactElement;\n onVisibleItemChange: (item: ItemType, key: number) => void;\n axis?: 'horizontal' | 'vertical';\n onTouchEnd?: (item: ItemType) => void;\n}\n\nexport const InfiniteScroll = <ItemType,>({\n initialRenderedItems,\n invisibleThreshold,\n visibleThreshold,\n makeItemFunc,\n renderItemFunc,\n onVisibleItemChange,\n axis = 'vertical',\n onTouchEnd,\n}: InfiniteScrollProps<ItemType>): ReactElement => {\n const stateRef = useRef<InfiniteScrollState<ItemType>>({\n items: new Map([...Array(initialRenderedItems).keys()].map((index) => [index, makeItemFunc(index)])),\n firstRenderedKey: 0,\n lastRenderedKey: initialRenderedItems - 1,\n needScrollCorrection: false,\n });\n const touchEndRefCallback = useRef(onTouchEnd);\n touchEndRefCallback.current = onTouchEnd;\n const [stateKey, setStateKey] = useState(0);\n\n const asyncDataContext = useContext(AsyncDataContext);\n const boundariesRef = useRef<{ top: number; bottom: number; left: number; right: number } | null>(null);\n const itemElementsRef = useRef<Map<number, HTMLDivElement>>(new Map());\n const translateCoordRef = useRef(0);\n const visibleAreaMetricsRef = useRef<{ top: number; bottom: number; left: number; right: number } | null>(null);\n const visibleItemKeyRef = useRef(0);\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const prevScrollDirectionRef = useRef<string | null>(null);\n const animatedState = useRef<boolean>(false);\n\n const itemRefCallbacks = useMemo<Map<number, RefCallback<HTMLDivElement>>>(() => {\n return new Map(\n [...stateRef.current.items.entries()].map(([key]) => {\n const callback = ((ref) => {\n if (ref !== null) {\n itemElementsRef.current.set(key, ref);\n }\n }) as RefCallback<HTMLDivElement>;\n return [key, callback];\n })\n );\n }, [stateKey]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const addItemsIfNeeded = useCallback(\n (scrollDirection: 'up' | 'down' | 'left' | 'right') => {\n if (!visibleAreaMetricsRef.current) {\n return;\n }\n\n const { items, firstRenderedKey, lastRenderedKey } = stateRef.current;\n\n // скролл вверх\n if (scrollDirection === 'up') {\n // самый верхний видимый айтем близко к верхнему краю экрана — нужно рендерить еще один сверху\n const firstRenderedItemElement = itemElementsRef.current.get(firstRenderedKey);\n if (firstRenderedItemElement) {\n const firstRenderedItemMetrics = firstRenderedItemElement.getBoundingClientRect();\n if (visibleAreaMetricsRef.current.top - firstRenderedItemMetrics.top < invisibleThreshold) {\n if (!items.has(firstRenderedKey - 1)) {\n stateRef.current.items = new Map([\n [firstRenderedKey - 1, makeItemFunc(firstRenderedKey - 1)],\n ...items.entries(),\n ]);\n stateRef.current.needScrollCorrection = true;\n }\n stateRef.current.firstRenderedKey = firstRenderedKey - 1;\n stateRef.current.lastRenderedKey = lastRenderedKey - 1;\n setStateKey(Math.random());\n }\n }\n\n // последний пересекший верхнюю границу видимой области запоминаем как visible item\n for (let key = firstRenderedKey; key < lastRenderedKey; key += 1) {\n if (stateRef.current.items.has(key) && itemElementsRef.current.has(key)) {\n const itemElement = itemElementsRef.current.get(key) as HTMLElement;\n if (\n itemElement.getBoundingClientRect().bottom - visibleAreaMetricsRef.current.top >\n visibleThreshold\n ) {\n if (key !== visibleItemKeyRef.current) {\n onVisibleItemChange(stateRef.current.items.get(key) as ItemType, key);\n visibleItemKeyRef.current = key;\n }\n break;\n }\n }\n }\n }\n\n // скролл вниз\n if (scrollDirection === 'down') {\n // самый нижний видимый айтем близко к нижнему краю экрана — нужно рендерить еще один снизу\n const lastRenderedItemElement = itemElementsRef.current.get(lastRenderedKey);\n if (lastRenderedItemElement) {\n const lastRenderedItemMetrics = lastRenderedItemElement.getBoundingClientRect();\n if (lastRenderedItemMetrics.bottom - visibleAreaMetricsRef.current.bottom < invisibleThreshold) {\n if (!items.has(lastRenderedKey + 1)) {\n stateRef.current.items = new Map([\n ...items.entries(),\n [lastRenderedKey + 1, makeItemFunc(lastRenderedKey + 1)],\n ]);\n }\n stateRef.current.firstRenderedKey = firstRenderedKey + 1;\n stateRef.current.lastRenderedKey = lastRenderedKey + 1;\n setStateKey(Math.random());\n }\n }\n\n // последний пересекший нижнюю границу видимой области запоминаем как visible item\n for (let key = lastRenderedKey; key > firstRenderedKey; key -= 1) {\n if (stateRef.current.items.has(key) && itemElementsRef.current.has(key)) {\n const itemElement = itemElementsRef.current.get(key) as HTMLElement;\n if (\n visibleAreaMetricsRef.current.bottom - itemElement.getBoundingClientRect().top >\n visibleThreshold\n ) {\n if (key !== visibleItemKeyRef.current) {\n onVisibleItemChange(stateRef.current.items.get(key) as ItemType, key);\n visibleItemKeyRef.current = key;\n }\n break;\n }\n }\n }\n }\n\n // скролл влево\n if (scrollDirection === 'left') {\n if (!prevScrollDirectionRef.current || prevScrollDirectionRef.current === 'left') {\n // самый левый видимый айтем близко к левому краю экрана — нужно рендерить еще один слева\n const firstRenderedItemElement = itemElementsRef.current.get(firstRenderedKey);\n if (firstRenderedItemElement) {\n const firstRenderedItemMetrics = firstRenderedItemElement.getBoundingClientRect();\n if (visibleAreaMetricsRef.current.left - firstRenderedItemMetrics.left < invisibleThreshold) {\n if (!items.has(firstRenderedKey - 1)) {\n stateRef.current.items = new Map([\n [firstRenderedKey - 1, makeItemFunc(firstRenderedKey - 1)],\n ...items.entries(),\n ]);\n stateRef.current.needScrollCorrection = true;\n }\n stateRef.current.firstRenderedKey = firstRenderedKey - 1;\n stateRef.current.lastRenderedKey = lastRenderedKey - 1;\n setStateKey(Math.random());\n }\n }\n\n // последний пересекший левую границу видимой области запоминаем как visible item\n for (let key = firstRenderedKey; key < lastRenderedKey; key += 1) {\n if (stateRef.current.items.has(key) && itemElementsRef.current.has(key)) {\n const itemElement = itemElementsRef.current.get(key) as HTMLElement;\n if (\n itemElement.getBoundingClientRect().right - visibleAreaMetricsRef.current.left >\n visibleThreshold\n ) {\n if (key !== visibleItemKeyRef.current) {\n onVisibleItemChange(stateRef.current.items.get(key) as ItemType, key);\n visibleItemKeyRef.current = key;\n }\n break;\n }\n }\n }\n }\n prevScrollDirectionRef.current = 'left';\n }\n\n // скролл вправо\n if (scrollDirection === 'right') {\n if (!prevScrollDirectionRef.current || prevScrollDirectionRef.current === 'right') {\n // самый правый видимый айтем близко к правому краю экрана — нужно рендерить еще один снизу\n const lastRenderedItemElement = itemElementsRef.current.get(lastRenderedKey);\n if (lastRenderedItemElement) {\n const lastRenderedItemMetrics = lastRenderedItemElement.getBoundingClientRect();\n if (lastRenderedItemMetrics.right - visibleAreaMetricsRef.current.right < invisibleThreshold) {\n if (!items.has(lastRenderedKey + 1)) {\n stateRef.current.items = new Map([\n ...items.entries(),\n [lastRenderedKey + 1, makeItemFunc(lastRenderedKey + 1)],\n ]);\n }\n stateRef.current.firstRenderedKey = firstRenderedKey + 1;\n stateRef.current.lastRenderedKey = lastRenderedKey + 1;\n setStateKey(Math.random());\n }\n }\n\n // последний пересекший правую границу видимой области запоминаем как visible item\n for (let key = lastRenderedKey; key > firstRenderedKey; key -= 1) {\n if (stateRef.current.items.has(key) && itemElementsRef.current.has(key)) {\n const itemElement = itemElementsRef.current.get(key) as HTMLElement;\n if (\n visibleAreaMetricsRef.current.right - itemElement.getBoundingClientRect().left >\n visibleThreshold\n ) {\n if (key !== visibleItemKeyRef.current) {\n onVisibleItemChange(stateRef.current.items.get(key) as ItemType, key);\n visibleItemKeyRef.current = key;\n }\n break;\n }\n }\n }\n }\n\n prevScrollDirectionRef.current = 'right';\n }\n },\n [invisibleThreshold, visibleThreshold, makeItemFunc, onVisibleItemChange, setStateKey]\n );\n\n useLayoutEffect(() => {\n // сбрасываем стейты\n if (stateRef.current && wrapperRef.current) {\n stateRef.current.items = new Map(\n [...Array(initialRenderedItems).keys()].map((index) => [index, makeItemFunc(index)])\n );\n stateRef.current.firstRenderedKey = 0;\n stateRef.current.lastRenderedKey = initialRenderedItems - 1;\n stateRef.current.needScrollCorrection = false;\n visibleItemKeyRef.current = 0;\n translateCoordRef.current = 0;\n prevScrollDirectionRef.current = null;\n wrapperRef.current.style.transform =\n axis === 'vertical'\n ? `translateY(${translateCoordRef.current}px)`\n : `translateX(${translateCoordRef.current}px)`;\n\n setStateKey(Math.random());\n }\n }, [makeItemFunc, initialRenderedItems, axis]);\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n if (!wrapper) {\n return void 0;\n }\n\n const handleTouchMove = (event: TouchEvent) => {\n if (event.cancelable) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n const handleTransitionEnd = () => {\n wrapper.classList.remove(styles.animated);\n animatedState.current = false;\n touchEndRefCallback.current?.(stateRef.current.items.get(visibleItemKeyRef.current) as ItemType);\n };\n\n wrapper.addEventListener('touchmove', handleTouchMove);\n wrapper.addEventListener('transitionend', handleTransitionEnd);\n return () => {\n wrapper.removeEventListener('touchmove', handleTouchMove);\n wrapper.removeEventListener('transitionend', handleTransitionEnd);\n };\n }, []);\n\n useEffect(() => {\n const animateScrollEnd = () => {\n if (!wrapperRef.current || !wrapperRef.current.parentElement) {\n return;\n }\n\n const itemElement = itemElementsRef.current.get(visibleItemKeyRef.current) as HTMLElement;\n const dif =\n wrapperRef.current.parentElement.getBoundingClientRect().left -\n itemElement.getBoundingClientRect().left;\n\n if (dif !== 0) {\n translateCoordRef.current += dif;\n wrapperRef.current?.classList.add(styles.animated);\n\n animatedState.current = true;\n wrapperRef.current.style.transform = `translateX(${translateCoordRef.current}px)`;\n }\n };\n\n const debouncedCallback = debounce(() => {\n if (axis === 'horizontal') {\n animateScrollEnd();\n return;\n }\n\n touchEndRefCallback.current?.(stateRef.current.items.get(visibleItemKeyRef.current) as ItemType);\n }, 60);\n return initScrollHandlers({\n axis,\n wrapperRef,\n onTouchMove: (event) => {\n if (!wrapperRef.current || animatedState.current) {\n return;\n }\n\n // если достигнут лимит лоадеров, не даем скроллить за границы первого и последнего айтема\n if (asyncDataContext !== null && asyncDataContext.isLimitExceeded() && boundariesRef.current !== null) {\n const translate = translateCoordRef.current + event.delta;\n if (\n axis === 'vertical' &&\n translate > boundariesRef.current.bottom &&\n translate < boundariesRef.current.top\n ) {\n translateCoordRef.current = translate;\n }\n if (\n axis === 'horizontal' &&\n translate > boundariesRef.current.right &&\n translate < boundariesRef.current.left\n ) {\n translateCoordRef.current = translate;\n }\n } else {\n translateCoordRef.current += event.delta;\n }\n\n wrapperRef.current.style.transform =\n axis === 'vertical'\n ? `translateY(${translateCoordRef.current}px)`\n : `translateX(${translateCoordRef.current}px)`;\n\n if (axis === 'vertical') {\n addItemsIfNeeded(event.delta > 0 ? 'up' : 'down');\n } else {\n event.delta !== 0 && addItemsIfNeeded(event.delta > 0 ? 'left' : 'right');\n }\n },\n onTouchEnd: () => {\n if (axis === 'horizontal') {\n animateScrollEnd();\n return;\n }\n touchEndRefCallback.current?.(stateRef.current.items.get(visibleItemKeyRef.current) as ItemType);\n },\n onWheelMove: (event) => {\n if (!wrapperRef.current || animatedState.current) {\n return;\n }\n\n event.preventDefault();\n\n // если достигнут лимит лоадеров, не даем скроллить за границы первого и последнего айтема\n if (asyncDataContext !== null && asyncDataContext.isLimitExceeded() && boundariesRef.current !== null) {\n const translate = translateCoordRef.current + event.delta;\n if (\n axis === 'vertical' &&\n translate > boundariesRef.current.bottom &&\n translate < boundariesRef.current.top\n ) {\n translateCoordRef.current = translate;\n }\n if (\n axis === 'horizontal' &&\n translate > boundariesRef.current.right &&\n translate < boundariesRef.current.left\n ) {\n translateCoordRef.current = translate;\n }\n } else {\n translateCoordRef.current += event.delta;\n }\n\n wrapperRef.current.style.transform =\n axis === 'vertical'\n ? `translateY(${translateCoordRef.current}px)`\n : `translateX(${translateCoordRef.current}px)`;\n\n if (axis === 'vertical') {\n addItemsIfNeeded(event.delta > 0 ? 'up' : 'down');\n } else {\n event.delta !== 0 && addItemsIfNeeded(event.delta > 0 ? 'left' : 'right');\n }\n debouncedCallback();\n },\n });\n }, [addItemsIfNeeded, axis]); // eslint-disable-line react-hooks/exhaustive-deps\n\n useLayoutEffect(() => {\n if (!visualViewport || !wrapperRef.current) {\n return;\n }\n\n if (!visibleAreaMetricsRef.current) {\n visibleAreaMetricsRef.current = {\n top: wrapperRef.current.offsetTop,\n bottom: visualViewport.height,\n left: wrapperRef.current.offsetLeft,\n right: visualViewport.width,\n };\n }\n\n const { firstRenderedKey, lastRenderedKey, needScrollCorrection } = stateRef.current;\n const firstRenderedItemElement = itemElementsRef.current.get(firstRenderedKey);\n const lastRenderedItemElement = itemElementsRef.current.get(lastRenderedKey);\n if (firstRenderedItemElement && lastRenderedItemElement) {\n // если мы добавили айтем сверху, чтобы скролл не прыгал, компенсируем его на высоту самого верхнего айтема\n if (needScrollCorrection) {\n stateRef.current.needScrollCorrection = false;\n if (axis === 'vertical') {\n translateCoordRef.current -= firstRenderedItemElement.clientHeight;\n if (boundariesRef.current !== null) {\n boundariesRef.current.top -= firstRenderedItemElement.clientHeight;\n }\n wrapperRef.current.style.transform = `translateY(${translateCoordRef.current}px)`;\n } else {\n translateCoordRef.current -= firstRenderedItemElement.clientWidth;\n if (boundariesRef.current !== null) {\n boundariesRef.current.left -= firstRenderedItemElement.clientWidth;\n }\n wrapperRef.current.style.transform = `translateX(${translateCoordRef.current}px)`;\n }\n }\n\n // если достигнут лимит лоадеров, запоминаем границы первого и последнего айтема и не даем скроллить за них\n if (asyncDataContext !== null && !asyncDataContext.isLimitExceeded()) {\n if (axis === 'vertical') {\n const top =\n translateCoordRef.current +\n visibleAreaMetricsRef.current.top -\n firstRenderedItemElement.getBoundingClientRect().top;\n const bottom =\n translateCoordRef.current +\n visibleAreaMetricsRef.current.bottom -\n lastRenderedItemElement.getBoundingClientRect().bottom;\n boundariesRef.current = { top, bottom, left: 0, right: 0 };\n } else {\n const left =\n translateCoordRef.current +\n visibleAreaMetricsRef.current.left -\n firstRenderedItemElement.getBoundingClientRect().left;\n\n const right =\n translateCoordRef.current +\n visibleAreaMetricsRef.current.right -\n lastRenderedItemElement.getBoundingClientRect().right;\n\n boundariesRef.current = { left, right, top: 0, bottom: 0 };\n }\n }\n }\n }, [stateKey, axis]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <div className={styles.infiniteScrollWrapper} ref={wrapperRef} data-qa=\"date-picker-infinite-container\">\n {axis === 'vertical' &&\n [...stateRef.current.items.entries()].map(([key, item]) => (\n <Fragment key={`${item}`}>\n {key >= stateRef.current.firstRenderedKey && key <= stateRef.current.lastRenderedKey ? (\n <div ref={itemRefCallbacks.get(key)}>{renderItemFunc(item, false)}</div>\n ) : (\n <div style={{ height: `${itemElementsRef.current.get(key)?.clientHeight}px` }} />\n )}\n </Fragment>\n ))}\n\n {axis === 'horizontal' && (\n <div style={{ display: 'flex', flexWrap: 'nowrap' }}>\n {[...stateRef.current.items.entries()].map(([key, item]) => (\n <Fragment key={`${item}`}>\n {key >= stateRef.current.firstRenderedKey && key <= stateRef.current.lastRenderedKey ? (\n <div ref={itemRefCallbacks.get(key)} className={styles.infiniteScrollItemHorizontal}>\n {renderItemFunc(item, key === visibleItemKeyRef.current)}\n </div>\n ) : (\n <div\n style={{\n width: `${itemElementsRef.current.get(key)?.clientWidth}px`,\n flexShrink: 0,\n }}\n />\n )}\n </Fragment>\n ))}\n </div>\n )}\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -14,7 +14,7 @@ import { useDatePickerControls } from '../useDatePickerControls.js';
14
14
  import { useModifierDates } from '../useModifierDates.js';
15
15
  import { useDisplayDate } from '../utils.js';
16
16
  import { Divider } from '@hh.ru/magritte-ui-divider';
17
- import { s as styles } from '../date-picker-BDmVdqvY.js';
17
+ import { s as styles } from '../date-picker-CHNF7thk.js';
18
18
  import 'react';
19
19
  import '../AsyncDataContext.js';
20
20
  import '@hh.ru/magritte-ui-loader';
@@ -6,7 +6,7 @@ import { isToday, format, isSameMonth } from 'date-fns';
6
6
  import { useDisabled } from '@hh.ru/magritte-common-use-disabled';
7
7
  import { useModifierDatesFunc } from '../useModifierDatesFunc.js';
8
8
  import { useDayPickerDates } from '../utils.js';
9
- import { s as styles } from '../date-picker-BDmVdqvY.js';
9
+ import { s as styles } from '../date-picker-CHNF7thk.js';
10
10
  import '../AsyncDataContext.js';
11
11
  import '../useModifierDates.js';
12
12
  import 'date-fns/constants';
@@ -13,7 +13,7 @@ import { YearPicker } from '../YearPicker.js';
13
13
  import { useDatePickerControls } from '../useDatePickerControls.js';
14
14
  import { useMobileHorizontalScroll } from '../useMobileHorizontalScroll.js';
15
15
  import { Divider } from '@hh.ru/magritte-ui-divider';
16
- import { s as styles } from '../date-picker-BDmVdqvY.js';
16
+ import { s as styles } from '../date-picker-CHNF7thk.js';
17
17
  import 'classnames';
18
18
  import '../AsyncDataContext.js';
19
19
  import '@hh.ru/magritte-ui-loader';
@@ -10,7 +10,7 @@ import '@hh.ru/magritte-ui-breakpoint';
10
10
  import '../AsyncDataLoader.js';
11
11
  import '../AsyncDataContext.js';
12
12
  import '@hh.ru/magritte-ui-loader';
13
- import '../date-picker-BDmVdqvY.js';
13
+ import '../date-picker-CHNF7thk.js';
14
14
  import '../AsyncDataStore.js';
15
15
  import '../useModifierDates.js';
16
16
  import '../Header.js';
@@ -13,7 +13,7 @@ import { useDatePickerControls } from '../useDatePickerControls.js';
13
13
  import { useModifierDates } from '../useModifierDates.js';
14
14
  import { useDisplayDate } from '../utils.js';
15
15
  import { Divider } from '@hh.ru/magritte-ui-divider';
16
- import { s as styles } from '../date-picker-BDmVdqvY.js';
16
+ import { s as styles } from '../date-picker-CHNF7thk.js';
17
17
  import '../AsyncDataContext.js';
18
18
  import '@hh.ru/magritte-ui-loader';
19
19
  import '@hh.ru/magritte-common-use-disabled';
@@ -11,7 +11,7 @@ import 'date-fns';
11
11
  import '../AsyncDataLoader.js';
12
12
  import '../AsyncDataContext.js';
13
13
  import '@hh.ru/magritte-ui-loader';
14
- import '../date-picker-BDmVdqvY.js';
14
+ import '../date-picker-CHNF7thk.js';
15
15
  import '../AsyncDataStore.js';
16
16
  import '../useModifierDates.js';
17
17
  import '../utils.js';
@@ -7,7 +7,7 @@ import { daysInWeek } from 'date-fns/constants';
7
7
  import { useIntervalPicker } from '../useIntervalPicker.js';
8
8
  import { useModifierDatesFunc } from '../useModifierDatesFunc.js';
9
9
  import { useDayPickerDates } from '../utils.js';
10
- import { s as styles } from '../date-picker-BDmVdqvY.js';
10
+ import { s as styles } from '../date-picker-CHNF7thk.js';
11
11
  import '@hh.ru/magritte-common-use-disabled';
12
12
  import '../AsyncDataContext.js';
13
13
  import '../useModifierDates.js';
@@ -11,7 +11,7 @@ import { Weekdays } from '../Weekdays.js';
11
11
  import { useModifierDates } from '../useModifierDates.js';
12
12
  import { useDisplayDate } from '../utils.js';
13
13
  import { Divider } from '@hh.ru/magritte-ui-divider';
14
- import { s as styles } from '../date-picker-BDmVdqvY.js';
14
+ import { s as styles } from '../date-picker-CHNF7thk.js';
15
15
  import 'classnames';
16
16
  import '../AsyncDataContext.js';
17
17
  import '@hh.ru/magritte-ui-loader';
@@ -40,7 +40,7 @@ headerMonthFormat, locale, showDivider = true, showHeader = true, showWeekdays =
40
40
  const renderDate = useCallback((date, isFocusAvailable) => {
41
41
  return (jsxs(AsyncDataLoader, { children: [jsx(Header, { calendar: "day", displayDate: date, activeHeader: false, alignHeader: "left", headerMonthFormat: headerMonthFormat, locale: locale, showControls: false }), jsx(IntervalDayPicker, { displayDate: date, selectionStart: selectionStart, selectionEnd: selectionEnd, onStartSelect: onStartSelect, onEndSelect: onEndSelect, showAdjacentDays: false, minDate: minDate, maxDate: maxDate, isFocusAvailable: isFocusAvailable, modifierDatesMap: modifierDatesMap, renderDay: renderDay })] }));
42
42
  },
43
- // eslint-disable-next-line disable-autofix/react-hooks/exhaustive-deps
43
+ // eslint-disable-next-line react-hooks/exhaustive-deps
44
44
  [
45
45
  headerMonthFormat,
46
46
  locale,
@@ -1 +1 @@
1
- {"version":3,"file":"MobileMultiLayoutIntervalDatePicker.js","sources":["src/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.tsx"],"sourcesContent":["import { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport { add } from 'date-fns';\n\nimport { DateType, IntervalDatePickerProps } from '@hh.ru/magritte-ui-date-picker';\nimport { AsyncDataLoader } from '@hh.ru/magritte-ui-date-picker/AsyncDataLoader';\nimport { AsyncDataStore } from '@hh.ru/magritte-ui-date-picker/AsyncDataStore';\nimport { Header } from '@hh.ru/magritte-ui-date-picker/Header';\nimport { InfiniteScroll } from '@hh.ru/magritte-ui-date-picker/InfiniteScroll';\nimport { IntervalDayPicker } from '@hh.ru/magritte-ui-date-picker/IntervalDatePicker/IntervalDayPicker';\nimport { Weekdays } from '@hh.ru/magritte-ui-date-picker/Weekdays';\nimport { useModifierDates } from '@hh.ru/magritte-ui-date-picker/useModifierDates';\nimport { useDisplayDate } from '@hh.ru/magritte-ui-date-picker/utils';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\n\nimport styles from '../date-picker.less';\n\nexport const MobileMultiLayoutIntervalDatePicker: FC<Omit<IntervalDatePickerProps, 'layout'>> = ({\n // настройки функциональности\n displayDate: _displayDate,\n selectionStart,\n selectionEnd,\n minDate,\n maxDate,\n // колбеки\n onStartSelect,\n onEndSelect,\n // настройки внешнего вида\n headerMonthFormat,\n locale,\n showDivider = true,\n showHeader = true,\n showWeekdays = true,\n modifierDates,\n modifierDatesFunc,\n renderDay,\n}) => {\n const displayDate = useDisplayDate(_displayDate, selectionStart);\n const makeDate = useCallback((index: number) => add(displayDate, { months: index }), [displayDate]);\n const stickyRef = useRef<HTMLDivElement | null>(null);\n const [visibleDate, setVisibleDate] = useState(displayDate);\n\n const modifierDatesMap = useModifierDates(modifierDates);\n\n const renderDate = useCallback(\n (date: DateType, isFocusAvailable?: boolean) => {\n return (\n <AsyncDataLoader>\n <Header\n calendar=\"day\"\n displayDate={date}\n activeHeader={false}\n alignHeader=\"left\"\n headerMonthFormat={headerMonthFormat}\n locale={locale}\n showControls={false}\n />\n <IntervalDayPicker\n displayDate={date}\n selectionStart={selectionStart}\n selectionEnd={selectionEnd}\n onStartSelect={onStartSelect}\n onEndSelect={onEndSelect}\n showAdjacentDays={false}\n minDate={minDate}\n maxDate={maxDate}\n isFocusAvailable={isFocusAvailable}\n modifierDatesMap={modifierDatesMap}\n renderDay={renderDay}\n />\n </AsyncDataLoader>\n );\n },\n // eslint-disable-next-line disable-autofix/react-hooks/exhaustive-deps\n [\n headerMonthFormat,\n locale,\n selectionStart,\n selectionEnd,\n onStartSelect,\n onEndSelect,\n modifierDatesMap,\n renderDay,\n ]\n );\n\n const onVisibleItemChange = useCallback(\n (date: DateType) => {\n setVisibleDate(date);\n },\n [setVisibleDate]\n );\n\n useEffect(() => {\n if (stickyRef.current !== null) {\n stickyRef.current.style.setProperty('--sticky-top', `${Math.floor(stickyRef.current.offsetTop)}px`);\n }\n }, []);\n\n return (\n <div className={styles.layoutVertical}>\n <div className={styles.stickyWrapper} ref={stickyRef}>\n {showHeader && (\n <Header\n calendar=\"month\"\n displayDate={visibleDate}\n activeHeader={false}\n alignHeader=\"left\"\n locale={locale}\n showControls={false}\n />\n )}\n {showWeekdays && <Weekdays locale={locale} />}\n {showDivider && (showHeader || showWeekdays) && <Divider />}\n </div>\n <AsyncDataStore modifierDatesFunc={modifierDatesFunc} parallelLoadersLimit={1}>\n <InfiniteScroll\n initialRenderedItems={5}\n invisibleThreshold={300}\n visibleThreshold={100}\n makeItemFunc={makeDate}\n renderItemFunc={renderDate}\n onVisibleItemChange={onVisibleItemChange}\n />\n </AsyncDataStore>\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"MobileMultiLayoutIntervalDatePicker.js","sources":["src/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.tsx"],"sourcesContent":["import { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport { add } from 'date-fns';\n\nimport { DateType, IntervalDatePickerProps } from '@hh.ru/magritte-ui-date-picker';\nimport { AsyncDataLoader } from '@hh.ru/magritte-ui-date-picker/AsyncDataLoader';\nimport { AsyncDataStore } from '@hh.ru/magritte-ui-date-picker/AsyncDataStore';\nimport { Header } from '@hh.ru/magritte-ui-date-picker/Header';\nimport { InfiniteScroll } from '@hh.ru/magritte-ui-date-picker/InfiniteScroll';\nimport { IntervalDayPicker } from '@hh.ru/magritte-ui-date-picker/IntervalDatePicker/IntervalDayPicker';\nimport { Weekdays } from '@hh.ru/magritte-ui-date-picker/Weekdays';\nimport { useModifierDates } from '@hh.ru/magritte-ui-date-picker/useModifierDates';\nimport { useDisplayDate } from '@hh.ru/magritte-ui-date-picker/utils';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\n\nimport styles from '../date-picker.less';\n\nexport const MobileMultiLayoutIntervalDatePicker: FC<Omit<IntervalDatePickerProps, 'layout'>> = ({\n // настройки функциональности\n displayDate: _displayDate,\n selectionStart,\n selectionEnd,\n minDate,\n maxDate,\n // колбеки\n onStartSelect,\n onEndSelect,\n // настройки внешнего вида\n headerMonthFormat,\n locale,\n showDivider = true,\n showHeader = true,\n showWeekdays = true,\n modifierDates,\n modifierDatesFunc,\n renderDay,\n}) => {\n const displayDate = useDisplayDate(_displayDate, selectionStart);\n const makeDate = useCallback((index: number) => add(displayDate, { months: index }), [displayDate]);\n const stickyRef = useRef<HTMLDivElement | null>(null);\n const [visibleDate, setVisibleDate] = useState(displayDate);\n\n const modifierDatesMap = useModifierDates(modifierDates);\n\n const renderDate = useCallback(\n (date: DateType, isFocusAvailable?: boolean) => {\n return (\n <AsyncDataLoader>\n <Header\n calendar=\"day\"\n displayDate={date}\n activeHeader={false}\n alignHeader=\"left\"\n headerMonthFormat={headerMonthFormat}\n locale={locale}\n showControls={false}\n />\n <IntervalDayPicker\n displayDate={date}\n selectionStart={selectionStart}\n selectionEnd={selectionEnd}\n onStartSelect={onStartSelect}\n onEndSelect={onEndSelect}\n showAdjacentDays={false}\n minDate={minDate}\n maxDate={maxDate}\n isFocusAvailable={isFocusAvailable}\n modifierDatesMap={modifierDatesMap}\n renderDay={renderDay}\n />\n </AsyncDataLoader>\n );\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n headerMonthFormat,\n locale,\n selectionStart,\n selectionEnd,\n onStartSelect,\n onEndSelect,\n modifierDatesMap,\n renderDay,\n ]\n );\n\n const onVisibleItemChange = useCallback(\n (date: DateType) => {\n setVisibleDate(date);\n },\n [setVisibleDate]\n );\n\n useEffect(() => {\n if (stickyRef.current !== null) {\n stickyRef.current.style.setProperty('--sticky-top', `${Math.floor(stickyRef.current.offsetTop)}px`);\n }\n }, []);\n\n return (\n <div className={styles.layoutVertical}>\n <div className={styles.stickyWrapper} ref={stickyRef}>\n {showHeader && (\n <Header\n calendar=\"month\"\n displayDate={visibleDate}\n activeHeader={false}\n alignHeader=\"left\"\n locale={locale}\n showControls={false}\n />\n )}\n {showWeekdays && <Weekdays locale={locale} />}\n {showDivider && (showHeader || showWeekdays) && <Divider />}\n </div>\n <AsyncDataStore modifierDatesFunc={modifierDatesFunc} parallelLoadersLimit={1}>\n <InfiniteScroll\n initialRenderedItems={5}\n invisibleThreshold={300}\n visibleThreshold={100}\n makeItemFunc={makeDate}\n renderItemFunc={renderDate}\n onVisibleItemChange={onVisibleItemChange}\n />\n </AsyncDataStore>\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,MAAM,mCAAmC,GAAgD,CAAC;AAC7F;AACA,WAAW,EAAE,YAAY,EACzB,cAAc,EACd,YAAY,EACZ,OAAO,EACP,OAAO;AACP;AACA,aAAa,EACb,WAAW;AACX;AACA,iBAAiB,EACjB,MAAM,EACN,WAAW,GAAG,IAAI,EAClB,UAAU,GAAG,IAAI,EACjB,YAAY,GAAG,IAAI,EACnB,aAAa,EACb,iBAAiB,EACjB,SAAS,GACZ,KAAI;IACD,MAAM,WAAW,GAAG,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,KAAa,KAAK,GAAG,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACpG,IAAA,MAAM,SAAS,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE5D,IAAA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,WAAW,CAC1B,CAAC,IAAc,EAAE,gBAA0B,KAAI;AAC3C,QAAA,QACIA,IAAC,CAAA,eAAe,eACZC,GAAC,CAAA,MAAM,IACH,QAAQ,EAAC,KAAK,EACd,WAAW,EAAE,IAAI,EACjB,YAAY,EAAE,KAAK,EACnB,WAAW,EAAC,MAAM,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,KAAK,EACrB,CAAA,EACFA,IAAC,iBAAiB,EAAA,EACd,WAAW,EAAE,IAAI,EACjB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,KAAK,EACvB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACtB,CAAA,CAAA,EAAA,CACY,EACpB;KACL;;AAED,IAAA;QACI,iBAAiB;QACjB,MAAM;QACN,cAAc;QACd,YAAY;QACZ,aAAa;QACb,WAAW;QACX,gBAAgB;QAChB,SAAS;AACZ,KAAA,CACJ,CAAC;AAEF,IAAA,MAAM,mBAAmB,GAAG,WAAW,CACnC,CAAC,IAAc,KAAI;QACf,cAAc,CAAC,IAAI,CAAC,CAAC;AACzB,KAAC,EACD,CAAC,cAAc,CAAC,CACnB,CAAC;IAEF,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,EAAE;YAC5B,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,CAAG,EAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAI,EAAA,CAAA,CAAC,CAAC;SACvG;KACJ,EAAE,EAAE,CAAC,CAAC;IAEP,QACID,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,cAAc,EAAA,QAAA,EAAA,CACjCA,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE,SAAS,EAAA,QAAA,EAAA,CAC/C,UAAU,KACPC,GAAA,CAAC,MAAM,EAAA,EACH,QAAQ,EAAC,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,KAAK,EACnB,WAAW,EAAC,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,KAAK,EAAA,CACrB,CACL,EACA,YAAY,IAAIA,GAAC,CAAA,QAAQ,EAAC,EAAA,MAAM,EAAE,MAAM,EAAA,CAAI,EAC5C,WAAW,KAAK,UAAU,IAAI,YAAY,CAAC,IAAIA,GAAA,CAAC,OAAO,EAAA,EAAA,CAAG,IACzD,EACNA,GAAA,CAAC,cAAc,EAAA,EAAC,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC,EAAA,QAAA,EACzEA,GAAC,CAAA,cAAc,IACX,oBAAoB,EAAE,CAAC,EACvB,kBAAkB,EAAE,GAAG,EACvB,gBAAgB,EAAE,GAAG,EACrB,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,UAAU,EAC1B,mBAAmB,EAAE,mBAAmB,EAC1C,CAAA,EAAA,CACW,CACf,EAAA,CAAA,EACR;AACN;;;;"}
@@ -16,7 +16,7 @@ import { useMobileHorizontalScroll } from '../useMobileHorizontalScroll.js';
16
16
  import { useModifierDates } from '../useModifierDates.js';
17
17
  import { useDisplayDate } from '../utils.js';
18
18
  import { Divider } from '@hh.ru/magritte-ui-divider';
19
- import { s as styles } from '../date-picker-BDmVdqvY.js';
19
+ import { s as styles } from '../date-picker-CHNF7thk.js';
20
20
  import 'classnames';
21
21
  import '../AsyncDataContext.js';
22
22
  import '@hh.ru/magritte-ui-loader';
@@ -14,7 +14,7 @@ import { useDatePickerControls } from '../useDatePickerControls.js';
14
14
  import { useModifierDates } from '../useModifierDates.js';
15
15
  import { useDisplayDate } from '../utils.js';
16
16
  import { Divider } from '@hh.ru/magritte-ui-divider';
17
- import { s as styles } from '../date-picker-BDmVdqvY.js';
17
+ import { s as styles } from '../date-picker-CHNF7thk.js';
18
18
  import '../AsyncDataContext.js';
19
19
  import '@hh.ru/magritte-ui-loader';
20
20
  import 'date-fns';
@@ -10,7 +10,7 @@ import 'date-fns';
10
10
  import '../AsyncDataLoader.js';
11
11
  import '../AsyncDataContext.js';
12
12
  import '@hh.ru/magritte-ui-loader';
13
- import '../date-picker-BDmVdqvY.js';
13
+ import '../date-picker-CHNF7thk.js';
14
14
  import '../AsyncDataStore.js';
15
15
  import '../useModifierDates.js';
16
16
  import '../Header.js';
package/MonthPicker.js CHANGED
@@ -4,7 +4,7 @@ import classnames from 'classnames';
4
4
  import { eachMonthOfInterval, startOfYear, endOfYear, isSameMonth, format, startOfMonth, endOfMonth } from 'date-fns';
5
5
  import { useDisabled } from '@hh.ru/magritte-common-use-disabled';
6
6
  import { useIntervalPicker } from './useIntervalPicker.js';
7
- import { s as styles } from './date-picker-BDmVdqvY.js';
7
+ import { s as styles } from './date-picker-CHNF7thk.js';
8
8
  import 'react';
9
9
 
10
10
  const MONTHS_IN_ROW = 3;
@@ -13,7 +13,7 @@ import { YearPicker } from '../YearPicker.js';
13
13
  import { useDatePickerControls } from '../useDatePickerControls.js';
14
14
  import { useMobileHorizontalScroll } from '../useMobileHorizontalScroll.js';
15
15
  import { Divider } from '@hh.ru/magritte-ui-divider';
16
- import { s as styles } from '../date-picker-BDmVdqvY.js';
16
+ import { s as styles } from '../date-picker-CHNF7thk.js';
17
17
  import 'classnames';
18
18
  import '../AsyncDataContext.js';
19
19
  import '@hh.ru/magritte-ui-loader';
@@ -14,7 +14,7 @@ import { useDatePickerControls } from '../useDatePickerControls.js';
14
14
  import { useModifierDates } from '../useModifierDates.js';
15
15
  import { useDisplayDate } from '../utils.js';
16
16
  import { Divider } from '@hh.ru/magritte-ui-divider';
17
- import { s as styles } from '../date-picker-BDmVdqvY.js';
17
+ import { s as styles } from '../date-picker-CHNF7thk.js';
18
18
  import 'react';
19
19
  import '../AsyncDataContext.js';
20
20
  import '@hh.ru/magritte-ui-loader';
@@ -6,7 +6,7 @@ import { isToday, format, isSameMonth } from 'date-fns';
6
6
  import { useDisabled } from '@hh.ru/magritte-common-use-disabled';
7
7
  import { useModifierDatesFunc } from '../useModifierDatesFunc.js';
8
8
  import { useDayPickerDates } from '../utils.js';
9
- import { s as styles } from '../date-picker-BDmVdqvY.js';
9
+ import { s as styles } from '../date-picker-CHNF7thk.js';
10
10
  import '../AsyncDataContext.js';
11
11
  import '../useModifierDates.js';
12
12
  import 'date-fns/constants';
@@ -10,7 +10,7 @@ import '@hh.ru/magritte-ui-breakpoint';
10
10
  import '../AsyncDataLoader.js';
11
11
  import '../AsyncDataContext.js';
12
12
  import '@hh.ru/magritte-ui-loader';
13
- import '../date-picker-BDmVdqvY.js';
13
+ import '../date-picker-CHNF7thk.js';
14
14
  import '../AsyncDataStore.js';
15
15
  import '../useModifierDates.js';
16
16
  import '../Header.js';
package/Weekdays.js CHANGED
@@ -2,7 +2,7 @@ import './index.css';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import classnames from 'classnames';
4
4
  import { Text } from '@hh.ru/magritte-ui-typography';
5
- import { s as styles } from './date-picker-BDmVdqvY.js';
5
+ import { s as styles } from './date-picker-CHNF7thk.js';
6
6
 
7
7
  const DAYS = [1, 2, 3, 4, 5, 6, 0];
8
8
  const Weekdays = ({ locale, stretched }) => {
package/YearPicker.js CHANGED
@@ -5,7 +5,7 @@ import { eachYearOfInterval, isSameYear, format, startOfYear, endOfYear } from '
5
5
  import { useDisabled } from '@hh.ru/magritte-common-use-disabled';
6
6
  import { useIntervalPicker } from './useIntervalPicker.js';
7
7
  import { makeYearsInterval } from './utils.js';
8
- import { s as styles } from './date-picker-BDmVdqvY.js';
8
+ import { s as styles } from './date-picker-CHNF7thk.js';
9
9
  import 'react';
10
10
  import 'date-fns/constants';
11
11
 
@@ -0,0 +1,5 @@
1
+ import './index.css';
2
+ var styles = {"layout":"magritte-layout___WQLZL_6-1-107","layout-horizontal":"magritte-layout-horizontal___RHMqN_6-1-107","layoutHorizontal":"magritte-layout-horizontal___RHMqN_6-1-107","layout-vertical":"magritte-layout-vertical___Q4III_6-1-107","layoutVertical":"magritte-layout-vertical___Q4III_6-1-107","date-picker":"magritte-date-picker___osO3k_6-1-107","datePicker":"magritte-date-picker___osO3k_6-1-107","date-picker_loading":"magritte-date-picker_loading___oEckY_6-1-107","datePickerLoading":"magritte-date-picker_loading___oEckY_6-1-107","loader":"magritte-loader___npAoS_6-1-107","loading":"magritte-loading___Q08Ci_6-1-107","sticky-wrapper":"magritte-sticky-wrapper___-cscS_6-1-107","stickyWrapper":"magritte-sticky-wrapper___-cscS_6-1-107","infinite-scroll-wrapper":"magritte-infinite-scroll-wrapper___4BFJP_6-1-107","infiniteScrollWrapper":"magritte-infinite-scroll-wrapper___4BFJP_6-1-107","animated":"magritte-animated___R-Rmx_6-1-107","infinite-scroll-item-horizontal":"magritte-infinite-scroll-item-horizontal___eq9oK_6-1-107","infiniteScrollItemHorizontal":"magritte-infinite-scroll-item-horizontal___eq9oK_6-1-107","header-wrapper":"magritte-header-wrapper___w3fTl_6-1-107","headerWrapper":"magritte-header-wrapper___w3fTl_6-1-107","header":"magritte-header___SYp35_6-1-107","header-date-wrapper_center":"magritte-header-date-wrapper_center___6X5Q4_6-1-107","headerDateWrapperCenter":"magritte-header-date-wrapper_center___6X5Q4_6-1-107","header-date-wrapper_left":"magritte-header-date-wrapper_left___hxe8I_6-1-107","headerDateWrapperLeft":"magritte-header-date-wrapper_left___hxe8I_6-1-107","header-date":"magritte-header-date___C28N0_6-1-107","headerDate":"magritte-header-date___C28N0_6-1-107","header-date_active":"magritte-header-date_active___FDSSp_6-1-107","headerDateActive":"magritte-header-date_active___FDSSp_6-1-107","control":"magritte-control___1JqcP_6-1-107","weekdays":"magritte-weekdays___zl5JK_6-1-107","weekday":"magritte-weekday___pDlOC_6-1-107","calendar":"magritte-calendar___X0u7X_6-1-107","calendar_days":"magritte-calendar_days___i0cpU_6-1-107","calendarDays":"magritte-calendar_days___i0cpU_6-1-107","calendar_months":"magritte-calendar_months___t0Vai_6-1-107","calendarMonths":"magritte-calendar_months___t0Vai_6-1-107","calendar_years":"magritte-calendar_years___XUL8j_6-1-107","calendarYears":"magritte-calendar_years___XUL8j_6-1-107","substrate":"magritte-substrate___EC-Ay_6-1-107","item_interval-row-start":"magritte-item_interval-row-start___8AftH_6-1-107","itemIntervalRowStart":"magritte-item_interval-row-start___8AftH_6-1-107","item_interval-start":"magritte-item_interval-start___4AC3w_6-1-107","itemIntervalStart":"magritte-item_interval-start___4AC3w_6-1-107","item_interval-row-end":"magritte-item_interval-row-end___-AIXc_6-1-107","itemIntervalRowEnd":"magritte-item_interval-row-end___-AIXc_6-1-107","item_interval-end":"magritte-item_interval-end___X-E9S_6-1-107","itemIntervalEnd":"magritte-item_interval-end___X-E9S_6-1-107","stretched":"magritte-stretched___KTCV7_6-1-107","item":"magritte-item___U0-5-_6-1-107","text":"magritte-text___pG0UY_6-1-107","text_empty":"magritte-text_empty___4h9m-_6-1-107","textEmpty":"magritte-text_empty___4h9m-_6-1-107","indicatorContainer":"magritte-indicatorContainer___kOpWk_6-1-107","indicator":"magritte-indicator___yy1HA_6-1-107","text_unselected":"magritte-text_unselected___gjuAU_6-1-107","textUnselected":"magritte-text_unselected___gjuAU_6-1-107","text_selected":"magritte-text_selected___a69MP_6-1-107","textSelected":"magritte-text_selected___a69MP_6-1-107","text_disabled":"magritte-text_disabled___I1IYo_6-1-107","textDisabled":"magritte-text_disabled___I1IYo_6-1-107","text_draggable":"magritte-text_draggable___ebUW6_6-1-107","textDraggable":"magritte-text_draggable___ebUW6_6-1-107","text_drag-source":"magritte-text_drag-source___-krSg_6-1-107","textDragSource":"magritte-text_drag-source___-krSg_6-1-107","text_drop-target":"magritte-text_drop-target___mwmCv_6-1-107","textDropTarget":"magritte-text_drop-target___mwmCv_6-1-107","text_today":"magritte-text_today___c3RHg_6-1-107","textToday":"magritte-text_today___c3RHg_6-1-107","item_interval":"magritte-item_interval___RbZXk_6-1-107","itemInterval":"magritte-item_interval___RbZXk_6-1-107","text_holiday":"magritte-text_holiday___532-b_6-1-107","textHoliday":"magritte-text_holiday___532-b_6-1-107","text_active":"magritte-text_active___vNPUG_6-1-107","textActive":"magritte-text_active___vNPUG_6-1-107","text_short-workday":"magritte-text_short-workday___lZl3F_6-1-107","textShortWorkday":"magritte-text_short-workday___lZl3F_6-1-107","text_workday":"magritte-text_workday___2Ok-d_6-1-107","textWorkday":"magritte-text_workday___2Ok-d_6-1-107","text_neutral":"magritte-text_neutral___OA4f9_6-1-107","textNeutral":"magritte-text_neutral___OA4f9_6-1-107","text_positive":"magritte-text_positive___U1G69_6-1-107","textPositive":"magritte-text_positive___U1G69_6-1-107","text_warning":"magritte-text_warning___gNctj_6-1-107","textWarning":"magritte-text_warning___gNctj_6-1-107","text_negative":"magritte-text_negative___LZdIZ_6-1-107","textNegative":"magritte-text_negative___LZdIZ_6-1-107"};
3
+
4
+ export { styles as s };
5
+ //# sourceMappingURL=date-picker-CHNF7thk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-picker-CHNF7thk.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}