@hh.ru/magritte-ui-date-picker 6.1.9 → 6.1.10
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/AsyncDataContext.js.map +1 -1
- package/AsyncDataLoader.js +1 -1
- package/AsyncDataLoader.js.map +1 -1
- package/AsyncDataStore.js.map +1 -1
- package/DatePicker/DatePicker.js +1 -1
- package/DatePicker/DatePicker.js.map +1 -1
- package/DatePicker/DayPicker.js +1 -1
- package/DatePicker/DayPicker.js.map +1 -1
- package/DatePicker/MobileDatePickerWithScroll.js +1 -1
- package/DatePicker/MobileDatePickerWithScroll.js.map +1 -1
- package/DatePicker/UncontrolledDatePicker.js +1 -1
- package/DatePicker/UncontrolledDatePicker.js.map +1 -1
- package/Header.js +1 -1
- package/Header.js.map +1 -1
- package/InfiniteScroll.js +1 -1
- package/InfiniteScroll.js.map +1 -1
- package/InfoDatePicker/InfoDatePicker.js +1 -1
- package/InfoDatePicker/InfoDatePicker.js.map +1 -1
- package/InfoDatePicker/InfoDayPicker.js +1 -1
- package/InfoDatePicker/InfoDayPicker.js.map +1 -1
- package/InfoDatePicker/MobileInfoDatePickerWithScroll.js +1 -1
- package/InfoDatePicker/MobileInfoDatePickerWithScroll.js.map +1 -1
- package/InfoDatePicker/UncontrolledInfoDatePicker.js +1 -1
- package/InfoDatePicker/UncontrolledInfoDatePicker.js.map +1 -1
- package/IntervalDatePicker/DesktopMultiLayoutIntervalDatePicker.js +1 -1
- package/IntervalDatePicker/DesktopMultiLayoutIntervalDatePicker.js.map +1 -1
- package/IntervalDatePicker/IntervalDatePicker.js +1 -1
- package/IntervalDatePicker/IntervalDatePicker.js.map +1 -1
- package/IntervalDatePicker/IntervalDayPicker.js +1 -1
- package/IntervalDatePicker/IntervalDayPicker.js.map +1 -1
- package/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.js +1 -1
- package/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.js.map +1 -1
- package/IntervalDatePicker/MobileSingleLayoutIntervalDatePicker.js +1 -1
- package/IntervalDatePicker/MobileSingleLayoutIntervalDatePicker.js.map +1 -1
- package/IntervalDatePicker/SingleLayoutIntervalDatePicker.js +1 -1
- package/IntervalDatePicker/SingleLayoutIntervalDatePicker.js.map +1 -1
- package/IntervalDatePicker/UncontrolledIntervalDatePicker.js +1 -1
- package/IntervalDatePicker/UncontrolledIntervalDatePicker.js.map +1 -1
- package/MonthPicker.js +1 -1
- package/MonthPicker.js.map +1 -1
- package/StatusDatePicker/MobileStatusDatePickerWithScroll.js +1 -1
- package/StatusDatePicker/MobileStatusDatePickerWithScroll.js.map +1 -1
- package/StatusDatePicker/StatusDatePicker.js +1 -1
- package/StatusDatePicker/StatusDatePicker.js.map +1 -1
- package/StatusDatePicker/StatusDayPicker.js +1 -1
- package/StatusDatePicker/StatusDayPicker.js.map +1 -1
- package/StatusDatePicker/UncontrolledStatusDatePicker.js +1 -1
- package/StatusDatePicker/UncontrolledStatusDatePicker.js.map +1 -1
- package/Weekdays.js +1 -1
- package/Weekdays.js.map +1 -1
- package/WithArrowNavigationHOC.js.map +1 -1
- package/YearPicker.js +1 -1
- package/YearPicker.js.map +1 -1
- package/date-picker-KPHcXUJg.js +5 -0
- package/date-picker-KPHcXUJg.js.map +1 -0
- package/index.css +331 -331
- package/index.js +1 -1
- package/package.json +18 -18
- package/useDatePickerControls.js.map +1 -1
- package/useIntervalPicker.js.map +1 -1
- package/useMobileHorizontalScroll.js.map +1 -1
- package/useModifierDates.js.map +1 -1
- package/useModifierDatesFunc.js.map +1 -1
- package/utils.js.map +1 -1
- package/date-picker-C6H219Wj.js +0 -5
- package/date-picker-C6H219Wj.js.map +0 -1
package/AsyncDataContext.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncDataContext.js","sources":["
|
|
1
|
+
{"version":3,"file":"AsyncDataContext.js","sources":["src/AsyncDataContext.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport { DateType, ModifierDatesMap } from '@hh.ru/magritte-ui-date-picker/types';\n\nexport interface AsyncDataContextProps {\n modifierDatesMap: ModifierDatesMap;\n hasData: (startDate: DateType, endDate: DateType) => boolean;\n startAsyncLoading: (startDate: DateType, endDate: DateType) => void;\n awaitAsyncLoading: (startDate: DateType, endDate: DateType) => Promise<void>;\n isLoading: () => boolean;\n isLimitExceeded: () => boolean;\n}\n\nexport const AsyncDataContext = createContext<AsyncDataContextProps | null>(null);\n"],"names":[],"mappings":";;MAaa,gBAAgB,GAAG,aAAa,CAA+B,IAAI;;;;"}
|
package/AsyncDataLoader.js
CHANGED
|
@@ -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-
|
|
7
|
+
import { s as styles } from './date-picker-KPHcXUJg.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Отображает лоадер поверх контента во время загрузки асинхронных данных.
|
package/AsyncDataLoader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncDataLoader.js","sources":["
|
|
1
|
+
{"version":3,"file":"AsyncDataLoader.js","sources":["src/AsyncDataLoader.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useContext, useMemo, useState } from 'react';\nimport classnames from 'classnames';\n\nimport { AsyncDataContext, AsyncDataContextProps } from '@hh.ru/magritte-ui-date-picker/AsyncDataContext';\nimport { DateType } from '@hh.ru/magritte-ui-date-picker/types';\nimport { Loader } from '@hh.ru/magritte-ui-loader';\n\nimport styles from './date-picker.less';\n\n/**\n * Отображает лоадер поверх контента во время загрузки асинхронных данных.\n * В multi-лейауте каждый календарь должен быть обернут в свой лоадер,\n * чтобы календари с уже загруженными данными рендерили их, а не анимацию лоадера\n */\nexport const AsyncDataLoader: FC<PropsWithChildren<{ stretched?: boolean }>> = ({ children, stretched }) => {\n const asyncDataContext = useContext(AsyncDataContext);\n const [isLoading, setLoading] = useState(false);\n\n const value = useMemo<AsyncDataContextProps | null>(() => {\n if (!asyncDataContext) {\n return null;\n }\n\n return {\n ...asyncDataContext,\n startAsyncLoading: (startDate: DateType, endDate: DateType) => {\n setLoading(true);\n\n void (async () => {\n try {\n await asyncDataContext.awaitAsyncLoading(startDate, endDate);\n } finally {\n setLoading(false);\n }\n })();\n },\n };\n }, [asyncDataContext, setLoading]);\n\n return (\n <div\n className={classnames(styles.datePicker, {\n [styles.datePickerLoading]: isLoading,\n [styles.stretched]: stretched,\n })}\n data-qa=\"date-picker\"\n >\n {isLoading && (\n <div className={styles.loader}>\n <Loader />\n </div>\n )}\n <div className={classnames({ [styles.loading]: isLoading })}>\n <AsyncDataContext.Provider value={value}>{children}</AsyncDataContext.Provider>\n </div>\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AASA;;;;AAIG;AACU,MAAA,eAAe,GAAmD,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAI;AACvG,IAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEhD,IAAA,MAAM,KAAK,GAAG,OAAO,CAA+B,MAAK;QACrD,IAAI,CAAC,gBAAgB,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC;SACf;QAED,OAAO;AACH,YAAA,GAAG,gBAAgB;AACnB,YAAA,iBAAiB,EAAE,CAAC,SAAmB,EAAE,OAAiB,KAAI;gBAC1D,UAAU,CAAC,IAAI,CAAC,CAAC;gBAEjB,KAAK,CAAC,YAAW;AACb,oBAAA,IAAI;wBACA,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;qBAChE;4BAAS;wBACN,UAAU,CAAC,KAAK,CAAC,CAAC;qBACrB;iBACJ,GAAG,CAAC;aACR;SACJ,CAAC;AACN,KAAC,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;IAEnC,QACIA,cACI,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE;AACrC,YAAA,CAAC,MAAM,CAAC,iBAAiB,GAAG,SAAS;AACrC,YAAA,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS;SAChC,CAAC,EAAA,SAAA,EACM,aAAa,EAEpB,QAAA,EAAA,CAAA,SAAS,KACNC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,MAAM,EACzB,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAG,EAAA,CAAA,EAAA,CACR,CACT,EACDA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC,EAAA,QAAA,EACvDA,GAAC,CAAA,gBAAgB,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,KAAK,EAAA,QAAA,EAAG,QAAQ,EAA6B,CAAA,EAAA,CAC7E,CACJ,EAAA,CAAA,EACR;AACN;;;;"}
|
package/AsyncDataStore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncDataStore.js","sources":["
|
|
1
|
+
{"version":3,"file":"AsyncDataStore.js","sources":["src/AsyncDataStore.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useMemo, useRef, useState } from 'react';\n\nimport { AsyncDataContext, AsyncDataContextProps } from '@hh.ru/magritte-ui-date-picker/AsyncDataContext';\nimport { DateType, ModifierDatesMap, ModifiersFunc } from '@hh.ru/magritte-ui-date-picker/types';\nimport { updateModifierDatesMap } from '@hh.ru/magritte-ui-date-picker/useModifierDates';\n\ninterface AsyncDataStoreProps {\n modifierDatesFunc?: ModifiersFunc;\n parallelLoadersLimit?: number | null;\n}\n\nconst makeKey = (startDate: DateType, endDate: DateType) => {\n return `${new Date(startDate).getTime()}-${new Date(endDate).getTime()}`;\n};\n\n/**\n * Хранит данные, загруженные всеми вложенными AsyncDataLoader-ами, и предоставляет методы для загрузки данных\n */\nexport const AsyncDataStore: FC<PropsWithChildren<AsyncDataStoreProps>> = ({\n children,\n modifierDatesFunc,\n parallelLoadersLimit = null,\n}) => {\n const asyncDataState = useRef<Record<string, { promise: Promise<void>; state: 'loading' | 'done' }>>({});\n const [modifierDatesMap, setModifierDatesMap] = useState<ModifierDatesMap>(new Map());\n\n const value = useMemo<AsyncDataContextProps | null>(() => {\n if (!modifierDatesFunc) {\n return null;\n }\n\n return {\n modifierDatesMap,\n hasAsyncFunc: true,\n hasData: (startDate: DateType, endDate: DateType) => makeKey(startDate, endDate) in asyncDataState.current,\n startAsyncLoading: () => void 0,\n awaitAsyncLoading: (startDate: DateType, endDate: DateType) => {\n const key = makeKey(startDate, endDate);\n if (!(key in asyncDataState.current)) {\n asyncDataState.current[key] = {\n promise: new Promise<void>(async (resolve) => {\n try {\n const _modifierDates = await modifierDatesFunc(startDate, endDate);\n setModifierDatesMap((oldMap) => {\n updateModifierDatesMap(oldMap, _modifierDates);\n return new Map(oldMap);\n });\n } finally {\n asyncDataState.current[key].state = 'done';\n resolve();\n }\n }),\n state: 'loading',\n };\n }\n return asyncDataState.current[key].promise;\n },\n isLoading: () => Object.values(asyncDataState.current).some(({ state }) => state === 'loading'),\n isLimitExceeded: () =>\n parallelLoadersLimit !== null &&\n Object.values(asyncDataState.current).filter(({ state }) => state === 'loading').length >=\n parallelLoadersLimit,\n };\n }, [modifierDatesFunc, setModifierDatesMap, parallelLoadersLimit, modifierDatesMap]);\n\n return <AsyncDataContext.Provider value={value}>{children}</AsyncDataContext.Provider>;\n};\n"],"names":["_jsx"],"mappings":";;;;;;;;AAWA,MAAM,OAAO,GAAG,CAAC,SAAmB,EAAE,OAAiB,KAAI;AACvD,IAAA,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;AAC7E,CAAC,CAAC;AAEF;;AAEG;AACI,MAAM,cAAc,GAA+C,CAAC,EACvE,QAAQ,EACR,iBAAiB,EACjB,oBAAoB,GAAG,IAAI,GAC9B,KAAI;AACD,IAAA,MAAM,cAAc,GAAG,MAAM,CAAwE,EAAE,CAAC,CAAC;AACzG,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAmB,IAAI,GAAG,EAAE,CAAC,CAAC;AAEtF,IAAA,MAAM,KAAK,GAAG,OAAO,CAA+B,MAAK;QACrD,IAAI,CAAC,iBAAiB,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC;SACf;QAED,OAAO;YACH,gBAAgB;AAChB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,OAAO,EAAE,CAAC,SAAmB,EAAE,OAAiB,KAAK,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO;AAC1G,YAAA,iBAAiB,EAAE,MAAM,KAAK,CAAC;AAC/B,YAAA,iBAAiB,EAAE,CAAC,SAAmB,EAAE,OAAiB,KAAI;gBAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACxC,IAAI,EAAE,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;AAClC,oBAAA,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG;wBAC1B,OAAO,EAAE,IAAI,OAAO,CAAO,OAAO,OAAO,KAAI;AACzC,4BAAA,IAAI;gCACA,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACnE,gCAAA,mBAAmB,CAAC,CAAC,MAAM,KAAI;AAC3B,oCAAA,sBAAsB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAC/C,oCAAA,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B,iCAAC,CAAC,CAAC;6BACN;oCAAS;gCACN,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;AAC3C,gCAAA,OAAO,EAAE,CAAC;6BACb;AACL,yBAAC,CAAC;AACF,wBAAA,KAAK,EAAE,SAAS;qBACnB,CAAC;iBACL;gBACD,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;aAC9C;YACD,SAAS,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,SAAS,CAAC;AAC/F,YAAA,eAAe,EAAE,MACb,oBAAoB,KAAK,IAAI;gBAC7B,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM;oBACnF,oBAAoB;SAC/B,CAAC;KACL,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAErF,OAAOA,GAAA,CAAC,gBAAgB,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,KAAK,EAAA,QAAA,EAAG,QAAQ,EAAA,CAA6B,CAAC;AAC3F;;;;"}
|
package/DatePicker/DatePicker.js
CHANGED
|
@@ -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-
|
|
19
|
+
import { s as styles } from '../date-picker-KPHcXUJg.js';
|
|
20
20
|
import '../AsyncDataContext.js';
|
|
21
21
|
import '@hh.ru/magritte-ui-loader';
|
|
22
22
|
import 'date-fns';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","sources":["
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sources":["src/DatePicker/DatePicker.tsx"],"sourcesContent":["import { CSSProperties, forwardRef } from 'react';\nimport classnames from 'classnames';\n\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { AsyncDataLoader } from '@hh.ru/magritte-ui-date-picker/AsyncDataLoader';\nimport { AsyncDataStore } from '@hh.ru/magritte-ui-date-picker/AsyncDataStore';\nimport { DayPicker } from '@hh.ru/magritte-ui-date-picker/DatePicker/DayPicker';\nimport MobileDatePickerWithScroll from '@hh.ru/magritte-ui-date-picker/DatePicker/MobileDatePickerWithScroll';\nimport { Header } from '@hh.ru/magritte-ui-date-picker/Header';\nimport { MonthPicker } from '@hh.ru/magritte-ui-date-picker/MonthPicker';\nimport { Weekdays } from '@hh.ru/magritte-ui-date-picker/Weekdays';\nimport { WithArrowNavigationHOC } from '@hh.ru/magritte-ui-date-picker/WithArrowNavigationHOC';\nimport { YearPicker } from '@hh.ru/magritte-ui-date-picker/YearPicker';\nimport { DatePickerProps } from '@hh.ru/magritte-ui-date-picker/types';\nimport { useDatePickerControls } from '@hh.ru/magritte-ui-date-picker/useDatePickerControls';\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\nconst DatePickerRenderFunc = forwardRef<HTMLDivElement, DatePickerProps>((props, ref) => {\n const {\n // настройки функциональности\n modifierDates,\n modifierDatesFunc,\n displayDate: _displayDate,\n enabledCalendars,\n minDate,\n maxDate,\n selectedDate,\n // колбеки\n onDisplayDateChange,\n onDateSelect,\n // настройки внешнего вида\n stretched,\n activeHeader,\n alignHeader,\n headerMonthFormat,\n locale,\n showAdjacentDays = true,\n showControls,\n showHeader = true,\n showHeaderDate,\n showDivider = true,\n showWeekdays = true,\n fixedWeeks,\n mobileScrollHorizontal,\n paddingsHorizontalDesktop,\n renderDay,\n } = props;\n const displayDate = useDisplayDate(_displayDate, selectedDate);\n const { calendar, switchCalendar, zoomIntoMonth, zoomIntoYear, goToNextPeriod, goToPrevPeriod } =\n useDatePickerControls(enabledCalendars, displayDate, onDisplayDateChange);\n const { isMobile } = useBreakpoint();\n\n const modifierDatesMap = useModifierDates(modifierDates);\n\n if (isMobile && mobileScrollHorizontal) {\n return (\n <MobileDatePickerWithScroll\n {...props}\n displayDate={displayDate}\n modifierDatesMap={modifierDatesMap}\n ref={ref}\n />\n );\n }\n\n return (\n <div\n className={classnames(styles.layout, { [styles.stretched]: stretched })}\n ref={ref}\n style={\n {\n ...(!isMobile && typeof paddingsHorizontalDesktop !== 'undefined'\n ? { '--magritte-date-picker-padding-horizontal': `${paddingsHorizontalDesktop}px` }\n : {}),\n } as CSSProperties\n }\n >\n <AsyncDataStore modifierDatesFunc={modifierDatesFunc}>\n <AsyncDataLoader stretched={stretched}>\n {showHeader && (\n <Header\n calendar={calendar}\n displayDate={displayDate}\n stretched={stretched}\n activeHeader={activeHeader}\n alignHeader={alignHeader}\n goToNextPeriod={goToNextPeriod}\n goToPrevPeriod={goToPrevPeriod}\n headerMonthFormat={headerMonthFormat}\n locale={locale}\n showControls={showControls}\n showHeaderDate={showHeaderDate}\n switchCalendar={switchCalendar}\n />\n )}\n {showWeekdays && calendar === 'day' && <Weekdays locale={locale} stretched={stretched} />}\n {showDivider && (showHeader || showWeekdays) && <Divider />}\n {calendar === 'day' && (\n <DayPicker\n displayDate={displayDate}\n selectedDate={selectedDate}\n onDateSelect={onDateSelect}\n showAdjacentDays={showAdjacentDays}\n minDate={minDate}\n maxDate={maxDate}\n stretched={stretched}\n fixedWeeks={fixedWeeks}\n modifierDatesMap={modifierDatesMap}\n renderDay={renderDay}\n />\n )}\n {calendar === 'month' && (\n <MonthPicker\n locale={locale}\n displayDate={displayDate}\n selectedDate={selectedDate}\n stretched={stretched}\n onDateSelect={enabledCalendars.startsWith('dd') ? zoomIntoMonth : onDateSelect}\n />\n )}\n {calendar === 'year' && (\n <YearPicker\n displayDate={displayDate}\n selectedDate={selectedDate}\n stretched={stretched}\n onDateSelect={zoomIntoYear}\n />\n )}\n </AsyncDataLoader>\n </AsyncDataStore>\n </div>\n );\n});\n\nDatePickerRenderFunc.displayName = 'DatePickerRenderFunc';\n\nexport const DatePicker = WithArrowNavigationHOC(DatePickerRenderFunc);\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
package/DatePicker/DayPicker.js
CHANGED
|
@@ -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-
|
|
9
|
+
import { s as styles } from '../date-picker-KPHcXUJg.js';
|
|
10
10
|
import '../AsyncDataContext.js';
|
|
11
11
|
import '../useModifierDates.js';
|
|
12
12
|
import 'date-fns/constants';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DayPicker.js","sources":["
|
|
1
|
+
{"version":3,"file":"DayPicker.js","sources":["src/DatePicker/DayPicker.tsx"],"sourcesContent":["import { FC, useMemo, forwardRef, ForwardedRef, ReactNode } from 'react';\nimport classnames from 'classnames';\nimport { format, isSameDay, isSameMonth, isToday } from 'date-fns';\n\nimport { useDisabled } from '@hh.ru/magritte-common-use-disabled';\nimport { DayPickerProps, DayProps } from '@hh.ru/magritte-ui-date-picker/types';\nimport { useModifierDatesFunc } from '@hh.ru/magritte-ui-date-picker/useModifierDatesFunc';\nimport { useDayPickerDates } from '@hh.ru/magritte-ui-date-picker/utils';\n\nimport styles from '../date-picker.less';\n\nexport const DayDefault = forwardRef((props: DayProps, ref: ForwardedRef<HTMLButtonElement>) => {\n const {\n date,\n disabled,\n indicatorCount,\n isFocusAvailable,\n isAdjacent,\n selected,\n children,\n additional: _,\n ...rest\n } = props;\n const isDisabled = isAdjacent || disabled;\n\n return (\n <button\n {...rest}\n ref={ref}\n type=\"button\"\n className={classnames(styles.text, {\n [styles.textDisabled]: isDisabled,\n [styles.textSelected]: selected,\n [styles.textToday]: isToday(date),\n [styles.textUnselected]: !isDisabled && !selected,\n })}\n tabIndex={isFocusAvailable ? undefined : -1}\n disabled={isDisabled || selected}\n data-date={format(date, 'yyyy-MM-dd')}\n data-qa={classnames('date-picker-day', {\n 'date-picker-day-disabled': isDisabled,\n 'date-picker-day-selected': selected,\n 'date-picker-day-today': isToday(date),\n })}\n >\n {children}\n {indicatorCount && (\n <div className={styles.indicatorContainer}>\n {[...Array(Math.min(indicatorCount, 3)).keys()].map((i) => (\n <div key={i} className={styles.indicator} />\n ))}\n </div>\n )}\n </button>\n );\n});\n\nDayDefault.displayName = 'DayDefault';\n\nconst renderDayDefault = (props: DayProps): ReactNode => <DayDefault {...props} />;\n\nexport const DayPicker: FC<DayPickerProps> = ({\n minDate,\n maxDate,\n displayDate,\n selectedDate,\n showAdjacentDays,\n onDateSelect,\n fixedWeeks,\n stretched,\n isFocusAvailable = true,\n modifierDatesMap,\n renderDay = renderDayDefault,\n}) => {\n const dates = useDayPickerDates(displayDate, fixedWeeks);\n const { disabledDatesFunc, indicatorCountFunc, additionalFunc } = useModifierDatesFunc({\n startDate: dates[0],\n endDate: dates[dates.length - 1],\n modifierDatesMap,\n minDate,\n maxDate,\n });\n const forceDisabled = useDisabled();\n\n const onClickHandlers = useMemo(() => {\n return dates.map((date) => {\n return () => onDateSelect?.(date);\n });\n }, [dates, onDateSelect]);\n\n return (\n <div\n className={classnames(styles.calendar, styles.calendarDays, { [styles.stretched]: stretched })}\n data-qa=\"date-picker-days\"\n >\n {dates.map((date, index) => {\n const isAdjacent = !isSameMonth(date, displayDate);\n const isDisabled = forceDisabled || disabledDatesFunc(date);\n const isSelected = !!selectedDate && isSameDay(date, selectedDate);\n const display = !isAdjacent || showAdjacentDays;\n const indicatorCount = indicatorCountFunc(date);\n\n return (\n <div className={styles.item} key={`${date}`}>\n {display ? (\n renderDay({\n date,\n isFocusAvailable,\n isAdjacent,\n indicatorCount,\n disabled: isDisabled,\n selected: isSelected,\n onClick: onClickHandlers[index],\n children: format(date, 'd'),\n additional: additionalFunc(date),\n })\n ) : (\n <div className={styles.textEmpty} />\n )}\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -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-
|
|
16
|
+
import { s as styles } from '../date-picker-KPHcXUJg.js';
|
|
17
17
|
import 'classnames';
|
|
18
18
|
import '../AsyncDataContext.js';
|
|
19
19
|
import '@hh.ru/magritte-ui-loader';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileDatePickerWithScroll.js","sources":["
|
|
1
|
+
{"version":3,"file":"MobileDatePickerWithScroll.js","sources":["src/DatePicker/MobileDatePickerWithScroll.tsx"],"sourcesContent":["import { forwardRef, useCallback } from 'react';\nimport { add } from 'date-fns';\n\nimport { AsyncDataLoader } from '@hh.ru/magritte-ui-date-picker/AsyncDataLoader';\nimport { AsyncDataStore } from '@hh.ru/magritte-ui-date-picker/AsyncDataStore';\nimport { DayPicker } from '@hh.ru/magritte-ui-date-picker/DatePicker/DayPicker';\nimport { Header } from '@hh.ru/magritte-ui-date-picker/Header';\nimport { InfiniteScroll } from '@hh.ru/magritte-ui-date-picker/InfiniteScroll';\nimport { MonthPicker } from '@hh.ru/magritte-ui-date-picker/MonthPicker';\nimport { Weekdays } from '@hh.ru/magritte-ui-date-picker/Weekdays';\nimport { YearPicker } from '@hh.ru/magritte-ui-date-picker/YearPicker';\nimport { DatePickerProps, DateType, ModifierDatesMap } from '@hh.ru/magritte-ui-date-picker/types';\nimport { useDatePickerControls } from '@hh.ru/magritte-ui-date-picker/useDatePickerControls';\nimport { useMobileHorizontalScroll } from '@hh.ru/magritte-ui-date-picker/useMobileHorizontalScroll';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\n\nimport styles from '../date-picker.less';\n\ntype MobileDatePickerWithScrollProps = Omit<DatePickerProps, 'mobileScrollHorizontal' | 'displayDate'> & {\n displayDate: DateType;\n modifierDatesMap: ModifierDatesMap;\n};\n\nconst MobileDatePickerWithScroll = forwardRef<HTMLDivElement, MobileDatePickerWithScrollProps>((props, ref) => {\n const {\n modifierDatesFunc,\n displayDate,\n enabledCalendars,\n minDate,\n maxDate,\n selectedDate,\n // колбеки\n onDisplayDateChange,\n onDateSelect,\n // настройки внешнего вида\n activeHeader,\n alignHeader,\n headerMonthFormat,\n locale,\n showAdjacentDays = true,\n showControls,\n showHeader = true,\n showHeaderDate,\n showDivider = true,\n showWeekdays = true,\n modifierDatesMap,\n renderDay,\n } = props;\n\n const { visibleDate, changeDate, onVisibleItemChange, onTouchEnd } = useMobileHorizontalScroll(\n displayDate,\n onDisplayDateChange\n );\n\n const { calendar, switchCalendar, zoomIntoMonth, zoomIntoYear, goToNextPeriod, goToPrevPeriod } =\n useDatePickerControls(enabledCalendars, visibleDate, changeDate);\n\n const makeDate = useCallback(\n (index: number) => {\n if (calendar === 'day') {\n return add(displayDate, { months: index });\n }\n if (calendar === 'month') {\n return add(displayDate, { years: index });\n }\n\n return add(displayDate, { years: 12 * index });\n },\n [displayDate, calendar]\n );\n\n const renderDate = useCallback(\n (date: DateType, isFocusAvailable?: boolean) => {\n return (\n <AsyncDataLoader>\n {calendar === 'day' && (\n <DayPicker\n displayDate={date}\n selectedDate={selectedDate}\n onDateSelect={onDateSelect}\n showAdjacentDays={showAdjacentDays}\n minDate={minDate}\n maxDate={maxDate}\n isFocusAvailable={isFocusAvailable}\n modifierDatesMap={modifierDatesMap}\n renderDay={renderDay}\n fixedWeeks\n />\n )}\n {calendar === 'month' && (\n <MonthPicker\n locale={locale}\n displayDate={date}\n selectedDate={selectedDate}\n onDateSelect={enabledCalendars.startsWith('dd') ? zoomIntoMonth : onDateSelect}\n isFocusAvailable={isFocusAvailable}\n />\n )}\n {calendar === 'year' && (\n <YearPicker\n displayDate={date}\n selectedDate={selectedDate}\n onDateSelect={zoomIntoYear}\n isFocusAvailable={isFocusAvailable}\n />\n )}\n </AsyncDataLoader>\n );\n },\n [\n modifierDatesMap,\n onDateSelect,\n showAdjacentDays,\n selectedDate,\n calendar,\n zoomIntoMonth,\n zoomIntoYear,\n enabledCalendars,\n locale,\n minDate,\n maxDate,\n renderDay,\n ]\n );\n\n return (\n <div className={styles.layoutVertical} ref={ref}>\n {showHeader && (\n <Header\n calendar={calendar}\n displayDate={visibleDate}\n activeHeader={activeHeader}\n alignHeader={alignHeader}\n goToNextPeriod={goToNextPeriod}\n goToPrevPeriod={goToPrevPeriod}\n headerMonthFormat={headerMonthFormat}\n locale={locale}\n showControls={showControls}\n showHeaderDate={showHeaderDate}\n switchCalendar={switchCalendar}\n />\n )}\n {showWeekdays && calendar === 'day' && <Weekdays locale={locale} />}\n {showDivider && (showHeader || showWeekdays) && <Divider />}\n <AsyncDataStore modifierDatesFunc={modifierDatesFunc} parallelLoadersLimit={1}>\n <InfiniteScroll\n axis=\"horizontal\"\n initialRenderedItems={5}\n invisibleThreshold={100}\n visibleThreshold={50}\n makeItemFunc={makeDate}\n renderItemFunc={renderDate}\n onTouchEnd={onTouchEnd}\n onVisibleItemChange={onVisibleItemChange}\n />\n </AsyncDataStore>\n </div>\n );\n});\n\nMobileDatePickerWithScroll.displayName = 'MobileDatePickerWithScroll';\n\nexport default MobileDatePickerWithScroll;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -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-
|
|
13
|
+
import '../date-picker-KPHcXUJg.js';
|
|
14
14
|
import '../AsyncDataStore.js';
|
|
15
15
|
import '../useModifierDates.js';
|
|
16
16
|
import './DayPicker.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UncontrolledDatePicker.js","sources":["
|
|
1
|
+
{"version":3,"file":"UncontrolledDatePicker.js","sources":["src/DatePicker/UncontrolledDatePicker.tsx"],"sourcesContent":["import { useCallback, useState, forwardRef } from 'react';\n\nimport { DatePicker, DatePickerProps, DateType } from '@hh.ru/magritte-ui-date-picker';\nimport { useDisplayDate } from '@hh.ru/magritte-ui-date-picker/utils';\n\nexport const UncontrolledDatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n displayDate: initialDisplayDate,\n selectedDate: initialSelectedDate,\n onDisplayDateChange,\n onDateSelect,\n ...props\n },\n ref\n ) => {\n const [displayDate, setDisplayDate] = useState<DateType>(\n useDisplayDate(initialDisplayDate, initialSelectedDate)\n );\n const [selectedDate, setSelectedDate] = useState<DateType | null>(initialSelectedDate ?? null);\n\n const handleDisplayDateChange = useCallback(\n (value: DateType) => {\n onDisplayDateChange?.(value);\n setDisplayDate(value);\n },\n [onDisplayDateChange, setDisplayDate]\n );\n\n const handleDateSelect = useCallback(\n (value: DateType) => {\n onDateSelect?.(value);\n setSelectedDate(value);\n },\n [onDateSelect, setSelectedDate]\n );\n\n return (\n <DatePicker\n {...props}\n displayDate={displayDate}\n selectedDate={selectedDate}\n onDisplayDateChange={handleDisplayDateChange}\n onDateSelect={handleDateSelect}\n ref={ref}\n />\n );\n }\n);\n\nUncontrolledDatePicker.displayName = 'UncontrolledDatePicker';\n"],"names":["_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKa,MAAA,sBAAsB,GAAG,UAAU,CAC5C,CACI,EACI,WAAW,EAAE,kBAAkB,EAC/B,YAAY,EAAE,mBAAmB,EACjC,mBAAmB,EACnB,YAAY,EACZ,GAAG,KAAK,EACX,EACD,GAAG,KACH;AACA,IAAA,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAC1C,cAAc,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAC1D,CAAC;AACF,IAAA,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAkB,mBAAmB,IAAI,IAAI,CAAC,CAAC;AAE/F,IAAA,MAAM,uBAAuB,GAAG,WAAW,CACvC,CAAC,KAAe,KAAI;AAChB,QAAA,mBAAmB,GAAG,KAAK,CAAC,CAAC;QAC7B,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAC,EACD,CAAC,mBAAmB,EAAE,cAAc,CAAC,CACxC,CAAC;AAEF,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAChC,CAAC,KAAe,KAAI;AAChB,QAAA,YAAY,GAAG,KAAK,CAAC,CAAC;QACtB,eAAe,CAAC,KAAK,CAAC,CAAC;AAC3B,KAAC,EACD,CAAC,YAAY,EAAE,eAAe,CAAC,CAClC,CAAC;IAEF,QACIA,GAAC,CAAA,UAAU,EACH,EAAA,GAAA,KAAK,EACT,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,uBAAuB,EAC5C,YAAY,EAAE,gBAAgB,EAC9B,GAAG,EAAE,GAAG,EACV,CAAA,EACJ;AACN,CAAC,EACH;AAEF,sBAAsB,CAAC,WAAW,GAAG,wBAAwB;;;;"}
|
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-
|
|
11
|
+
import { s as styles } from './date-picker-KPHcXUJg.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/Header.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sources":["
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["src/Header.tsx"],"sourcesContent":["import { FC, Fragment } from 'react';\nimport classnames from 'classnames';\nimport { format } from 'date-fns';\n\nimport { useDisabled } from '@hh.ru/magritte-common-use-disabled';\nimport { DateType, Calendar, BaseDatePickerProps } from '@hh.ru/magritte-ui-date-picker/types';\nimport { makeYearsInterval } from '@hh.ru/magritte-ui-date-picker/utils';\nimport { IconDynamic } from '@hh.ru/magritte-ui-icon';\nimport {\n ChevronLeftOutlinedSize24,\n ChevronRightOutlinedSize24,\n ChevronDownOutlinedSize16,\n} from '@hh.ru/magritte-ui-icon/icon';\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './date-picker.less';\n\nexport const Header: FC<\n Pick<\n BaseDatePickerProps,\n | 'stretched'\n | 'activeHeader'\n | 'alignHeader'\n | 'headerMonthFormat'\n | 'locale'\n | 'showControls'\n | 'showHeaderDate'\n > & {\n calendar: Calendar;\n displayDate: DateType;\n goToNextPeriod?: VoidFunction;\n goToPrevPeriod?: VoidFunction;\n showNextControl?: boolean;\n showPrevControl?: boolean;\n switchCalendar?: VoidFunction;\n }\n> = ({\n calendar,\n displayDate,\n stretched,\n activeHeader: _activeHeader = true,\n alignHeader = 'center',\n goToNextPeriod,\n goToPrevPeriod,\n headerMonthFormat = 'mm',\n locale,\n showControls = true,\n showHeaderDate = true,\n showNextControl = true,\n showPrevControl = true,\n switchCalendar,\n}) => {\n const forceDisabled = useDisabled();\n const activeHeader = _activeHeader && !forceDisabled;\n\n if (!showControls && !showHeaderDate) {\n return null;\n }\n\n return (\n <div className={classnames(styles.headerWrapper, { [styles.stretched]: stretched })}>\n <div className={styles.header} data-qa=\"date-picker-header\">\n {showControls && (\n <div className={styles.control}>\n {showPrevControl && goToPrevPeriod && (\n <ChevronLeftOutlinedSize24\n padding={8}\n onClick={goToPrevPeriod}\n initialColor=\"secondary\"\n data-qa=\"date-picker-prev-control\"\n borderRadius=\"halfHeight\"\n />\n )}\n </div>\n )}\n <div\n className={classnames({\n [styles.headerDateWrapperCenter]: alignHeader === 'center',\n [styles.headerDateWrapperLeft]: alignHeader === 'left',\n })}\n >\n {showHeaderDate && (\n <IconDynamic>\n <button\n className={classnames(styles.headerDate, { [styles.headerDateActive]: activeHeader })}\n data-qa=\"date-picker-header-date\"\n disabled={!activeHeader}\n onClick={switchCalendar}\n >\n <Text Element={'span'} typography=\"subtitle-1-semibold\" transform=\"capitalize\">\n {calendar === 'day' &&\n format(displayDate, headerMonthFormat.endsWith('yyyy') ? 'LLLL yyyy' : 'LLLL', {\n locale,\n })}\n {calendar === 'month' && format(displayDate, 'yyyy', { locale })}\n {calendar === 'year' && (\n <Fragment>\n {format(makeYearsInterval(displayDate).start, 'yyyy', { locale })}\n {` – `}\n {format(makeYearsInterval(displayDate).end, 'yyyy', { locale })}\n </Fragment>\n )}\n </Text>\n {activeHeader && (\n <ChevronDownOutlinedSize16 initialColor=\"primary\" highlightedColor={'primary'} />\n )}\n </button>\n </IconDynamic>\n )}\n </div>\n {showControls && (\n <div className={styles.control}>\n {showNextControl && goToNextPeriod && (\n <ChevronRightOutlinedSize24\n padding={8}\n initialColor=\"secondary\"\n onClick={goToNextPeriod}\n data-qa=\"date-picker-next-control\"\n borderRadius=\"halfHeight\"\n />\n )}\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
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-
|
|
7
|
+
import { s as styles } from './date-picker-KPHcXUJg.js';
|
|
8
8
|
|
|
9
9
|
const InfiniteScroll = ({ initialRenderedItems, invisibleThreshold, visibleThreshold, makeItemFunc, renderItemFunc, onVisibleItemChange, axis = 'vertical', onTouchEnd, }) => {
|
|
10
10
|
const stateRef = useRef({
|
package/InfiniteScroll.js.map
CHANGED
|
@@ -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":"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"}
|
|
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;;;;"}
|
|
@@ -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-
|
|
17
|
+
import { s as styles } from '../date-picker-KPHcXUJg.js';
|
|
18
18
|
import 'react';
|
|
19
19
|
import '../AsyncDataContext.js';
|
|
20
20
|
import '@hh.ru/magritte-ui-loader';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InfoDatePicker.js","sources":["
|
|
1
|
+
{"version":3,"file":"InfoDatePicker.js","sources":["src/InfoDatePicker/InfoDatePicker.tsx"],"sourcesContent":["import { CSSProperties, FC } from 'react';\nimport classnames from 'classnames';\n\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { InfoDatePickerProps } 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 { InfoDayPicker } from '@hh.ru/magritte-ui-date-picker/InfoDatePicker/InfoDayPicker';\nimport { MobileInfoDatePickerWithScroll } from '@hh.ru/magritte-ui-date-picker/InfoDatePicker/MobileInfoDatePickerWithScroll';\nimport { MonthPicker } from '@hh.ru/magritte-ui-date-picker/MonthPicker';\nimport { Weekdays } from '@hh.ru/magritte-ui-date-picker/Weekdays';\nimport { YearPicker } from '@hh.ru/magritte-ui-date-picker/YearPicker';\nimport { useDatePickerControls } from '@hh.ru/magritte-ui-date-picker/useDatePickerControls';\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 InfoDatePicker: FC<InfoDatePickerProps> = (props) => {\n const {\n // настройки функциональности\n displayDate: _displayDate,\n enabledCalendars,\n // колбеки\n onDisplayDateChange,\n // настройки внешнего вида\n stretched,\n activeHeader,\n alignHeader,\n headerMonthFormat,\n locale,\n showControls,\n showDivider = true,\n showHeader = true,\n showHeaderDate,\n showWeekdays = true,\n fixedWeeks,\n mobileScrollHorizontal,\n paddingsHorizontalDesktop,\n modifierDates,\n modifierDatesFunc,\n showAdjacentDays,\n renderDay,\n } = props;\n const displayDate = useDisplayDate(_displayDate);\n const { calendar, switchCalendar, zoomIntoMonth, zoomIntoYear, goToNextPeriod, goToPrevPeriod } =\n useDatePickerControls(enabledCalendars, displayDate, onDisplayDateChange);\n const { isMobile } = useBreakpoint();\n\n const modifierDatesMap = useModifierDates(modifierDates);\n\n if (isMobile && mobileScrollHorizontal) {\n return (\n <MobileInfoDatePickerWithScroll {...props} displayDate={displayDate} modifierDatesMap={modifierDatesMap} />\n );\n }\n\n return (\n <div\n className={classnames(styles.layout, { [styles.stretched]: stretched })}\n style={\n {\n ...(!isMobile && typeof paddingsHorizontalDesktop !== 'undefined'\n ? { '--magritte-date-picker-padding-horizontal': `${paddingsHorizontalDesktop}px` }\n : {}),\n } as CSSProperties\n }\n >\n <AsyncDataStore modifierDatesFunc={modifierDatesFunc}>\n <AsyncDataLoader stretched={stretched}>\n {showHeader && (\n <Header\n calendar={calendar}\n displayDate={displayDate}\n stretched={stretched}\n activeHeader={activeHeader}\n alignHeader={alignHeader}\n goToNextPeriod={goToNextPeriod}\n goToPrevPeriod={goToPrevPeriod}\n headerMonthFormat={headerMonthFormat}\n locale={locale}\n showControls={showControls}\n showHeaderDate={showHeaderDate}\n switchCalendar={switchCalendar}\n />\n )}\n {showWeekdays && calendar === 'day' && <Weekdays locale={locale} stretched={stretched} />}\n {showDivider && (showHeader || showWeekdays) && <Divider />}\n {calendar === 'day' && (\n <InfoDayPicker\n displayDate={displayDate}\n fixedWeeks={fixedWeeks}\n stretched={stretched}\n modifierDatesMap={modifierDatesMap}\n renderDay={renderDay}\n showAdjacentDays={showAdjacentDays}\n />\n )}\n {calendar === 'month' && (\n <MonthPicker\n locale={locale}\n displayDate={displayDate}\n stretched={stretched}\n onDateSelect={zoomIntoMonth}\n />\n )}\n {calendar === 'year' && (\n <YearPicker displayDate={displayDate} stretched={stretched} onDateSelect={zoomIntoYear} />\n )}\n </AsyncDataLoader>\n </AsyncDataStore>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|