@servicetitan/anvil2 1.45.1 → 1.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/dist/{Calendar-Dq_of5A3.js → Calendar-BQ5F2ENO.js} +1173 -166
- package/dist/Calendar-BQ5F2ENO.js.map +1 -0
- package/dist/Calendar.css +83 -47
- package/dist/Calendar.js +1 -1
- package/dist/{Checkbox-3y2d9mBd.js → Checkbox-DDrmVC-u.js} +2 -2
- package/dist/{Checkbox-3y2d9mBd.js.map → Checkbox-DDrmVC-u.js.map} +1 -1
- package/dist/{Checkbox-BiOzGpgJ.js → Checkbox-Dl4KTwEJ.js} +3 -3
- package/dist/{Checkbox-BiOzGpgJ.js.map → Checkbox-Dl4KTwEJ.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/{useInfiniteCombobox-BN2uGhBh.js → Combobox-B9nesJuc.js} +19 -186
- package/dist/Combobox-B9nesJuc.js.map +1 -0
- package/dist/Combobox.js +2 -1
- package/dist/Combobox.js.map +1 -1
- package/dist/{DateField-B2mnasH5.js → DateField-DXxPsRtf.js} +4 -4
- package/dist/{DateField-B2mnasH5.js.map → DateField-DXxPsRtf.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-DPbyzuHb.js → DateFieldRange-Xauviu1w.js} +34 -28
- package/dist/DateFieldRange-Xauviu1w.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-CfAJDcx9.js → DateFieldSingle-yLnwpVzd.js} +27 -27
- package/dist/DateFieldSingle-yLnwpVzd.js.map +1 -0
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-ydxcsmRV.js → DateFieldYearless-Ba7HiTiI.js} +2 -2
- package/dist/{DateFieldYearless-ydxcsmRV.js.map → DateFieldYearless-Ba7HiTiI.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DaysOfTheWeek-BYvE9QK5.js → DaysOfTheWeek-BYSYZySH.js} +2 -2
- package/dist/{DaysOfTheWeek-BYvE9QK5.js.map → DaysOfTheWeek-BYSYZySH.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-DpH2Qvbd.js → Dialog-CgkrvrQu.js} +2 -2
- package/dist/{Dialog-DpH2Qvbd.js.map → Dialog-CgkrvrQu.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/Dnd.js +1 -1
- package/dist/DndSort.js +1 -1
- package/dist/{Drawer-DI_k6W2k.js → Drawer-CM4ZbAro.js} +2 -2
- package/dist/{Drawer-DI_k6W2k.js.map → Drawer-CM4ZbAro.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{FieldLabel-BfnCXung.js → FieldLabel-BsbTTyom.js} +3 -14
- package/dist/FieldLabel-BsbTTyom.js.map +1 -0
- package/dist/FieldLabel.js +1 -1
- package/dist/{InputMask-O_qi1p_3.js → InputMask-_F139qFu.js} +2 -2
- package/dist/{InputMask-O_qi1p_3.js.map → InputMask-_F139qFu.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-jR2ZkBB7.js → ListView-pb3rIcze.js} +2 -2
- package/dist/{ListView-jR2ZkBB7.js.map → ListView-pb3rIcze.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{NumberField-1_gRsWT4.js → NumberField-CkZZrkYC.js} +5 -5
- package/dist/{NumberField-1_gRsWT4.js.map → NumberField-CkZZrkYC.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-CY6QRlvb.js → Page-cKXkjMmd.js} +2 -2
- package/dist/{Page-CY6QRlvb.js.map → Page-cKXkjMmd.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{ProgressBar-BnXuQ6Bx.js → ProgressBar-DXcXZEJ2.js} +2 -2
- package/dist/{ProgressBar-BnXuQ6Bx.js.map → ProgressBar-DXcXZEJ2.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-CwmRUIzo.js → Radio-C89VCMXd.js} +2 -2
- package/dist/{Radio-CwmRUIzo.js.map → Radio-C89VCMXd.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-BNCWIHOG.js → RadioGroup-C_4buUtG.js} +2 -2
- package/dist/{RadioGroup-BNCWIHOG.js.map → RadioGroup-C_4buUtG.js.map} +1 -1
- package/dist/{SearchField-BKXkoWPs.js → SearchField-Bb0uObwG.js} +2 -2
- package/dist/{SearchField-BKXkoWPs.js.map → SearchField-Bb0uObwG.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SelectCard-DOGCG0zr.js → SelectCard-BTYZg9TG.js} +3 -3
- package/dist/{SelectCard-DOGCG0zr.js.map → SelectCard-BTYZg9TG.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/{SelectTrigger-BMo0e-F7.js → SelectTrigger-f1hvRrSC.js} +2 -2
- package/dist/{SelectTrigger-BMo0e-F7.js.map → SelectTrigger-f1hvRrSC.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-BMMxnXrw.js → SelectTriggerBase-DP9fmRSo.js} +2 -2
- package/dist/{SelectTriggerBase-BMMxnXrw.js.map → SelectTriggerBase-DP9fmRSo.js.map} +1 -1
- package/dist/{TextField-CwgE_JJU.js → TextField-BiHxlzE3.js} +2 -2
- package/dist/{TextField-CwgE_JJU.js.map → TextField-BiHxlzE3.js.map} +1 -1
- package/dist/{TextField-DlsZEkS0.js → TextField-D8fow9j7.js} +2 -2
- package/dist/{TextField-DlsZEkS0.js.map → TextField-D8fow9j7.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-DU-SpoDL.js → Textarea-BdVJJlbP.js} +2 -2
- package/dist/{Textarea-DU-SpoDL.js.map → Textarea-BdVJJlbP.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-CfhyRfX9.js → TimeField-CmbErrsZ.js} +2 -2
- package/dist/{TimeField-CfhyRfX9.js.map → TimeField-CmbErrsZ.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-BgjT0p8b.js → Toaster-9cpG_tWR.js} +2 -2
- package/dist/{Toaster-BgjT0p8b.js.map → Toaster-9cpG_tWR.js.map} +1 -1
- package/dist/{Toaster-CfC9wod0.js → Toaster-B7zUwJOt.js} +2 -2
- package/dist/{Toaster-CfC9wod0.js.map → Toaster-B7zUwJOt.js.map} +1 -1
- package/dist/Toolbar-D4zuUFhb.js +2077 -0
- package/dist/Toolbar-D4zuUFhb.js.map +1 -0
- package/dist/Toolbar.css +139 -28
- package/dist/Toolbar.d.ts +3 -3
- package/dist/Toolbar.js +1 -1
- package/dist/beta/components/Toolbar/Filters/FilterButton.d.ts +30 -0
- package/dist/beta/components/Toolbar/Filters/FilterDateRange.d.ts +37 -0
- package/dist/beta/components/Toolbar/Filters/FilterDateSingle.d.ts +30 -0
- package/dist/beta/components/Toolbar/Filters/FilterDrawer.d.ts +15 -0
- package/dist/beta/components/Toolbar/Filters/FilterGroup.d.ts +25 -0
- package/dist/beta/components/Toolbar/Filters/FilterItemWrapper.d.ts +24 -0
- package/dist/beta/components/Toolbar/Filters/FilterSelect.d.ts +29 -0
- package/dist/beta/components/Toolbar/Filters/FilterToggleButton.d.ts +24 -0
- package/dist/beta/components/Toolbar/Filters/internal/FilterGroupContext.d.ts +40 -0
- package/dist/beta/components/Toolbar/Filters/internal/types.d.ts +130 -0
- package/dist/beta/components/Toolbar/Filters/internal/utils/filter-state.d.ts +40 -0
- package/dist/beta/components/Toolbar/Filters/internal/utils/test.d.ts +57 -0
- package/dist/beta/components/Toolbar/Toolbar.d.ts +302 -0
- package/dist/beta/components/Toolbar/ToolbarButton.d.ts +41 -0
- package/dist/beta/components/Toolbar/ToolbarButtonLink.d.ts +43 -0
- package/dist/beta/components/Toolbar/ToolbarButtonToggle.d.ts +42 -0
- package/dist/beta/components/Toolbar/ToolbarControlGroup.d.ts +20 -0
- package/dist/beta/components/Toolbar/ToolbarSearchField.d.ts +20 -0
- package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +108 -0
- package/dist/beta/components/Toolbar/index.d.ts +9 -0
- package/dist/beta/components/Toolbar/internal/ToolbarItemOverflowContext.d.ts +19 -0
- package/dist/beta/components/Toolbar/internal/ToolbarItemWrapper.d.ts +40 -0
- package/dist/beta/components/Toolbar/internal/ToolbarOverflowContext.d.ts +35 -0
- package/dist/beta/components/Toolbar/internal/ToolbarOverflowMenu.d.ts +29 -0
- package/dist/beta/components/Toolbar/internal/utils/accessibility.d.ts +26 -0
- package/dist/beta/components/Toolbar/internal/utils/test.d.ts +29 -0
- package/dist/beta/components/Toolbar/types.d.ts +50 -0
- package/dist/beta/components/index.d.ts +1 -0
- package/dist/beta/index.d.ts +1 -0
- package/dist/beta.d.ts +2 -0
- package/dist/beta.js +2 -0
- package/dist/beta.js.map +1 -0
- package/dist/components/Combobox/ComboboxTypes.d.ts +8 -0
- package/dist/components/DateFieldRange/DateFieldRange.d.ts +2 -2
- package/dist/components/DateFieldRange/internal/DateFieldRangeCalendar.d.ts +1 -1
- package/dist/components/DateFieldRange/internal/useDateFieldRangeState.d.ts +2 -7
- package/dist/components/DateFieldSingle/DateFieldSingle.d.ts +2 -2
- package/dist/components/DateFieldSingle/internal/useDateFieldSingleState.d.ts +2 -7
- package/dist/components/Dialog/index.d.ts +1 -1
- package/dist/components/NumberField/NumberField.d.ts +4 -4
- package/dist/{indeterminate_check_box-Bg24oeHy.js → indeterminate_check_box-RY9zr3xS.js} +17 -17
- package/dist/{indeterminate_check_box-Bg24oeHy.js.map → indeterminate_check_box-RY9zr3xS.js.map} +1 -1
- package/dist/indeterminate_check_box.css +72 -66
- package/dist/{index-CqdP5W00.js → index-V5Ez2gq_.js} +2 -2
- package/dist/{index-CqdP5W00.js.map → index-V5Ez2gq_.js.map} +1 -1
- package/dist/index.css +125 -26
- package/dist/index.js +773 -41
- package/dist/index.js.map +1 -1
- package/dist/index2.css +88 -105
- package/dist/internal/components/YearSelector/YearSelector.d.ts +67 -0
- package/dist/internal/components/YearSelector/index.d.ts +1 -0
- package/dist/internal/components/YearSelector/internal/YearItem.d.ts +10 -0
- package/dist/internal/components/YearSelector/internal/useYearSelectorKeys.d.ts +19 -0
- package/dist/internal/hooks/index.d.ts +1 -0
- package/dist/internal/hooks/useContainerQuery/index.d.ts +1 -0
- package/dist/internal/hooks/useContainerQuery/useContainerQuery.d.ts +46 -0
- package/dist/internal/hooks/useFocusWithin/useFocusWithin.d.ts +11 -16
- package/dist/types/PassThroughProps.d.ts +4 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/{useDateFieldOrchestration-Cqa7dxtr.js → useDateFieldOrchestration-BNJCsRkS.js} +2 -2
- package/dist/{useDateFieldOrchestration-Cqa7dxtr.js.map → useDateFieldOrchestration-BNJCsRkS.js.map} +1 -1
- package/dist/useFocusWithin-BhhgRXdZ.js +32 -0
- package/dist/useFocusWithin-BhhgRXdZ.js.map +1 -0
- package/dist/useInfiniteCombobox-WcRgC9p6.js +179 -0
- package/dist/useInfiniteCombobox-WcRgC9p6.js.map +1 -0
- package/dist/useIntersectionObserver-BEmMDO3P.js +70 -0
- package/dist/useIntersectionObserver-BEmMDO3P.js.map +1 -0
- package/package.json +3 -1
- package/dist/Calendar-Dq_of5A3.js.map +0 -1
- package/dist/DateFieldRange-DPbyzuHb.js.map +0 -1
- package/dist/DateFieldSingle-CfAJDcx9.js.map +0 -1
- package/dist/FieldLabel-BfnCXung.js.map +0 -1
- package/dist/Toolbar-DK7tXy_W.js +0 -807
- package/dist/Toolbar-DK7tXy_W.js.map +0 -1
- package/dist/components/Calendar/internal/CalendarYearSelection.d.ts +0 -25
- package/dist/useFocusWithin-BhU7hoAD.js +0 -56
- package/dist/useFocusWithin-BhU7hoAD.js.map +0 -1
- package/dist/useInfiniteCombobox-BN2uGhBh.js.map +0 -1
- /package/dist/{useInfiniteCombobox.css → Combobox.css} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { createContext, useContext, forwardRef, useState, useEffect, useRef, useCallback, useMemo, useId } from 'react';
|
|
3
4
|
import { B as Button } from './Button-BxFXQ0-n.js';
|
|
4
5
|
import { S as SvgKeyboardArrowDown } from './keyboard_arrow_down-C8WQ38p1.js';
|
|
5
6
|
import { S as SvgKeyboardArrowUp } from './keyboard_arrow_up-CxzK6LAl.js';
|
|
@@ -8,8 +9,11 @@ import { c as cx } from './index-tZvMCc77.js';
|
|
|
8
9
|
import { S as SrOnly } from './SrOnly-CTsYSuby.js';
|
|
9
10
|
import { u as useSwipe } from './useSwipe-CULmVQEk.js';
|
|
10
11
|
import { G as Grid } from './Grid-MGUC698u.js';
|
|
11
|
-
import { S as SelectCard } from './SelectCard-
|
|
12
|
+
import { S as SelectCard } from './SelectCard-BTYZg9TG.js';
|
|
12
13
|
import { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';
|
|
14
|
+
import { flushSync } from 'react-dom';
|
|
15
|
+
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
|
|
16
|
+
import { u as usePrevious } from './usePrevious-Bvq-5auG.js';
|
|
13
17
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjD5IMh0.js';
|
|
14
18
|
|
|
15
19
|
import './Calendar.css';// these aren't really private, but nor are they really useful to document
|
|
@@ -8174,37 +8178,37 @@ const CalendarYearButton = forwardRef((props, ref) => {
|
|
|
8174
8178
|
});
|
|
8175
8179
|
CalendarYearButton.displayName = "CalendarYearButton";
|
|
8176
8180
|
|
|
8177
|
-
const calendar = "
|
|
8178
|
-
const header = "
|
|
8179
|
-
const controller = "
|
|
8180
|
-
const spacer = "
|
|
8181
|
-
const cell = "
|
|
8182
|
-
const overflow = "
|
|
8183
|
-
const weekday = "
|
|
8184
|
-
const range = "
|
|
8185
|
-
const selected = "
|
|
8186
|
-
const styles = {
|
|
8181
|
+
const calendar = "_calendar_m3fpt_2";
|
|
8182
|
+
const header = "_header_m3fpt_15";
|
|
8183
|
+
const controller = "_controller_m3fpt_46";
|
|
8184
|
+
const spacer = "_spacer_m3fpt_53";
|
|
8185
|
+
const cell = "_cell_m3fpt_66";
|
|
8186
|
+
const overflow = "_overflow_m3fpt_97";
|
|
8187
|
+
const weekday = "_weekday_m3fpt_103";
|
|
8188
|
+
const range = "_range_m3fpt_148";
|
|
8189
|
+
const selected = "_selected_m3fpt_158";
|
|
8190
|
+
const styles$1 = {
|
|
8187
8191
|
calendar: calendar,
|
|
8188
8192
|
header: header,
|
|
8189
8193
|
controller: controller,
|
|
8190
8194
|
spacer: spacer,
|
|
8191
|
-
"day-grid": "_day-
|
|
8195
|
+
"day-grid": "_day-grid_m3fpt_56",
|
|
8192
8196
|
cell: cell,
|
|
8193
8197
|
overflow: overflow,
|
|
8194
8198
|
weekday: weekday,
|
|
8195
|
-
"month-selection": "_month-
|
|
8196
|
-
"selection-checkbox": "_selection-
|
|
8197
|
-
"
|
|
8198
|
-
"
|
|
8199
|
-
"range-
|
|
8200
|
-
"range-last": "_range-last_sc127_148",
|
|
8199
|
+
"month-selection": "_month-selection_m3fpt_115",
|
|
8200
|
+
"selection-checkbox": "_selection-checkbox_m3fpt_115",
|
|
8201
|
+
"selection-card": "_selection-card_m3fpt_125",
|
|
8202
|
+
"range-first": "_range-first_m3fpt_148",
|
|
8203
|
+
"range-last": "_range-last_m3fpt_148",
|
|
8201
8204
|
range: range,
|
|
8202
8205
|
selected: selected,
|
|
8203
|
-
"is-unavailable": "_is-
|
|
8204
|
-
"hover-last": "_hover-
|
|
8205
|
-
"range-fill": "_range-
|
|
8206
|
-
"range-disabled": "_range-
|
|
8207
|
-
"controller-button": "_controller-
|
|
8206
|
+
"is-unavailable": "_is-unavailable_m3fpt_166",
|
|
8207
|
+
"hover-last": "_hover-last_m3fpt_224",
|
|
8208
|
+
"range-fill": "_range-fill_m3fpt_228",
|
|
8209
|
+
"range-disabled": "_range-disabled_m3fpt_238",
|
|
8210
|
+
"controller-button": "_controller-button_m3fpt_246",
|
|
8211
|
+
"year-selector": "_year-selector_m3fpt_254"
|
|
8208
8212
|
};
|
|
8209
8213
|
|
|
8210
8214
|
const CalendarPrev = forwardRef(
|
|
@@ -8257,7 +8261,7 @@ const CalendarPrev = forwardRef(
|
|
|
8257
8261
|
{
|
|
8258
8262
|
ref,
|
|
8259
8263
|
onClick: onClickHandler,
|
|
8260
|
-
className: cx(styles["controller-button"], className),
|
|
8264
|
+
className: cx(styles$1["controller-button"], className),
|
|
8261
8265
|
appearance: "ghost",
|
|
8262
8266
|
size: "small",
|
|
8263
8267
|
icon: SvgKeyboardArrowLeft,
|
|
@@ -8322,7 +8326,7 @@ const CalendarNext = forwardRef(
|
|
|
8322
8326
|
onClick: onClickHandler,
|
|
8323
8327
|
appearance: "ghost",
|
|
8324
8328
|
size: "small",
|
|
8325
|
-
className: cx(styles["controller-button"], className),
|
|
8329
|
+
className: cx(styles$1["controller-button"], className),
|
|
8326
8330
|
icon: SvgKeyboardArrowRight,
|
|
8327
8331
|
"aria-label": "Next Month",
|
|
8328
8332
|
"data-anv": "calendar-next",
|
|
@@ -8611,14 +8615,14 @@ const CalendarDay = forwardRef(
|
|
|
8611
8615
|
defaultTimeZone
|
|
8612
8616
|
);
|
|
8613
8617
|
const hoverRange = range && hoveredDate && value.start && !value.end && date.toMillis() > value.start.toMillis() && date.toMillis() <= hoveredDate.toMillis();
|
|
8614
|
-
const cellCx = cx(styles["cell"], {
|
|
8615
|
-
[styles["selected"]]: !isUnavailable && isSelectedDate(date),
|
|
8616
|
-
[styles["range-first"]]: range && value.start && (value.end || hoveredDate) && isSameDay(date, value.start),
|
|
8617
|
-
[styles["range-last"]]: range && (value.start && value.end && isSameDay(date, value.end) || hoverRange && isSameDay(date, hoveredDate)),
|
|
8618
|
-
[styles["range"]]: isRange(date) || hoverRange,
|
|
8619
|
-
[styles["is-unavailable"]]: isUnavailable,
|
|
8620
|
-
[styles["overflow"]]: !isSameMonth(date, focusedDate),
|
|
8621
|
-
[styles["hover-last"]]: hoverRange && isSameDay(date, hoveredDate)
|
|
8618
|
+
const cellCx = cx(styles$1["cell"], {
|
|
8619
|
+
[styles$1["selected"]]: !isUnavailable && isSelectedDate(date),
|
|
8620
|
+
[styles$1["range-first"]]: range && value.start && (value.end || hoveredDate) && isSameDay(date, value.start),
|
|
8621
|
+
[styles$1["range-last"]]: range && (value.start && value.end && isSameDay(date, value.end) || hoverRange && isSameDay(date, hoveredDate)),
|
|
8622
|
+
[styles$1["range"]]: isRange(date) || hoverRange,
|
|
8623
|
+
[styles$1["is-unavailable"]]: isUnavailable,
|
|
8624
|
+
[styles$1["overflow"]]: !isSameMonth(date, focusedDate),
|
|
8625
|
+
[styles$1["hover-last"]]: hoverRange && isSameDay(date, hoveredDate)
|
|
8622
8626
|
});
|
|
8623
8627
|
const isMinDate = minDate !== null && date.toMillis() <= minDate?.toMillis();
|
|
8624
8628
|
const isMaxDate = maxDate !== null && date.toMillis() >= maxDate?.toMillis();
|
|
@@ -8634,9 +8638,9 @@ const CalendarDay = forwardRef(
|
|
|
8634
8638
|
"div",
|
|
8635
8639
|
{
|
|
8636
8640
|
role: "presentation",
|
|
8637
|
-
className: cx(styles["range-fill"], {
|
|
8638
|
-
[styles["range-disabled"]]: isDisabled,
|
|
8639
|
-
[styles["hover-last"]]: hoverRange && isSameDay(date, hoveredDate)
|
|
8641
|
+
className: cx(styles$1["range-fill"], {
|
|
8642
|
+
[styles$1["range-disabled"]]: isDisabled,
|
|
8643
|
+
[styles$1["hover-last"]]: hoverRange && isSameDay(date, hoveredDate)
|
|
8640
8644
|
})
|
|
8641
8645
|
}
|
|
8642
8646
|
) : null,
|
|
@@ -8649,7 +8653,7 @@ const CalendarDay = forwardRef(
|
|
|
8649
8653
|
className: cellCx,
|
|
8650
8654
|
onKeyDown: onKeyDownHandler,
|
|
8651
8655
|
onMouseEnter: () => onMouseEnterHandler(date),
|
|
8652
|
-
tabIndex: isSameDay(date, focusedDate) ? 0 : -1,
|
|
8656
|
+
tabIndex: disableAutofocus ? -1 : isSameDay(date, focusedDate) ? 0 : -1,
|
|
8653
8657
|
disabled: isDisabled ? true : void 0,
|
|
8654
8658
|
"aria-label": `${date.toLocaleString(dateFormat)}${isSelectedDate(date) ? " selected" : ""}${isMinDate ? ", You are on the first available date" : ""}${isMaxDate ? ", You are on the last available date" : ""}`,
|
|
8655
8659
|
id: `${uid}-${date.toISODate()}`,
|
|
@@ -8788,7 +8792,7 @@ const CalendarMonth = forwardRef(
|
|
|
8788
8792
|
startDay
|
|
8789
8793
|
} = context;
|
|
8790
8794
|
const initialized = useRef(false);
|
|
8791
|
-
const ViewCX = cx(styles["grid"], className);
|
|
8795
|
+
const ViewCX = cx(styles$1["grid"], className);
|
|
8792
8796
|
const futureDateSelection = useCallback(
|
|
8793
8797
|
(targetDate) => {
|
|
8794
8798
|
if (maxDate !== null && targetDate.toMillis() > maxDate?.toMillis()) {
|
|
@@ -8919,24 +8923,24 @@ const CalendarMonth = forwardRef(
|
|
|
8919
8923
|
...rest,
|
|
8920
8924
|
...touchProps,
|
|
8921
8925
|
children: [
|
|
8922
|
-
/* @__PURE__ */ jsxs("thead", { "aria-hidden": true, className: styles["weekdays"], children: [
|
|
8926
|
+
/* @__PURE__ */ jsxs("thead", { "aria-hidden": true, className: styles$1["weekdays"], children: [
|
|
8923
8927
|
/* @__PURE__ */ jsx("tr", { children: weekdaysArr.map((weekday, i) => {
|
|
8924
8928
|
return /* @__PURE__ */ jsx(
|
|
8925
8929
|
"th",
|
|
8926
8930
|
{
|
|
8927
8931
|
scope: "col",
|
|
8928
|
-
className: styles["weekday"],
|
|
8932
|
+
className: styles$1["weekday"],
|
|
8929
8933
|
children: weekday
|
|
8930
8934
|
},
|
|
8931
8935
|
`${weekday}${i}`
|
|
8932
8936
|
);
|
|
8933
8937
|
}) }),
|
|
8934
|
-
/* @__PURE__ */ jsx("tr", { className: styles["spacer"], children: /* @__PURE__ */ jsx("td", { colSpan: 7 }) })
|
|
8938
|
+
/* @__PURE__ */ jsx("tr", { className: styles$1["spacer"], children: /* @__PURE__ */ jsx("td", { colSpan: 7 }) })
|
|
8935
8939
|
] }),
|
|
8936
8940
|
/* @__PURE__ */ jsx(
|
|
8937
8941
|
"tbody",
|
|
8938
8942
|
{
|
|
8939
|
-
className: styles["day-grid"],
|
|
8943
|
+
className: styles$1["day-grid"],
|
|
8940
8944
|
children: splitArr.map((week, i) => {
|
|
8941
8945
|
return /* @__PURE__ */ jsx(CalendarWeek, { week }, i);
|
|
8942
8946
|
})
|
|
@@ -8976,7 +8980,7 @@ const CalendarMonthSelection = forwardRef(({ onMonthSelection, ...props }, ref)
|
|
|
8976
8980
|
}),
|
|
8977
8981
|
[maxDate, minDate, selectedYear]
|
|
8978
8982
|
);
|
|
8979
|
-
const classes = cx(styles["month-selection"], props.className);
|
|
8983
|
+
const classes = cx(styles$1["month-selection"], props.className);
|
|
8980
8984
|
const [focusedIndex, setFocusedIndex] = useState(selectedMonth - 1);
|
|
8981
8985
|
useEffect(() => {
|
|
8982
8986
|
if (minDate || maxDate) {
|
|
@@ -9085,10 +9089,10 @@ const CalendarMonthSelection = forwardRef(({ onMonthSelection, ...props }, ref)
|
|
|
9085
9089
|
onChange: () => onMonthSelection(month),
|
|
9086
9090
|
checked: selectedMonth === month && selectedYear === currentDate.year,
|
|
9087
9091
|
checkboxProps: {
|
|
9088
|
-
className: styles["selection-checkbox"],
|
|
9092
|
+
className: styles$1["selection-checkbox"],
|
|
9089
9093
|
tabIndex: focusedIndex === index ? 0 : -1
|
|
9090
9094
|
},
|
|
9091
|
-
className: styles["selection-card"],
|
|
9095
|
+
className: styles$1["selection-card"],
|
|
9092
9096
|
children: DateTime.fromObject({ month }).toFormat("MMMM")
|
|
9093
9097
|
}
|
|
9094
9098
|
) }, month.toString()))
|
|
@@ -9099,134 +9103,1120 @@ const CalendarMonthSelection = forwardRef(({ onMonthSelection, ...props }, ref)
|
|
|
9099
9103
|
});
|
|
9100
9104
|
CalendarMonthSelection.displayName = "CalendarMonthSelection";
|
|
9101
9105
|
|
|
9102
|
-
|
|
9103
|
-
|
|
9104
|
-
|
|
9105
|
-
|
|
9106
|
-
|
|
9107
|
-
|
|
9108
|
-
|
|
9109
|
-
|
|
9110
|
-
|
|
9111
|
-
|
|
9112
|
-
|
|
9106
|
+
function memo(getDeps, fn, opts) {
|
|
9107
|
+
let deps = opts.initialDeps ?? [];
|
|
9108
|
+
let result;
|
|
9109
|
+
function memoizedFunction() {
|
|
9110
|
+
var _a, _b, _c, _d;
|
|
9111
|
+
let depTime;
|
|
9112
|
+
if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();
|
|
9113
|
+
const newDeps = getDeps();
|
|
9114
|
+
const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);
|
|
9115
|
+
if (!depsChanged) {
|
|
9116
|
+
return result;
|
|
9117
|
+
}
|
|
9118
|
+
deps = newDeps;
|
|
9119
|
+
let resultTime;
|
|
9120
|
+
if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();
|
|
9121
|
+
result = fn(...newDeps);
|
|
9122
|
+
if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {
|
|
9123
|
+
const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;
|
|
9124
|
+
const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;
|
|
9125
|
+
const resultFpsPercentage = resultEndTime / 16;
|
|
9126
|
+
const pad = (str, num) => {
|
|
9127
|
+
str = String(str);
|
|
9128
|
+
while (str.length < num) {
|
|
9129
|
+
str = " " + str;
|
|
9130
|
+
}
|
|
9131
|
+
return str;
|
|
9132
|
+
};
|
|
9133
|
+
console.info(
|
|
9134
|
+
`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,
|
|
9135
|
+
`
|
|
9136
|
+
font-size: .6rem;
|
|
9137
|
+
font-weight: bold;
|
|
9138
|
+
color: hsl(${Math.max(
|
|
9139
|
+
0,
|
|
9140
|
+
Math.min(120 - 120 * resultFpsPercentage, 120)
|
|
9141
|
+
)}deg 100% 31%);`,
|
|
9142
|
+
opts == null ? void 0 : opts.key
|
|
9143
|
+
);
|
|
9144
|
+
}
|
|
9145
|
+
(_d = opts == null ? void 0 : opts.onChange) == null ? void 0 : _d.call(opts, result);
|
|
9146
|
+
return result;
|
|
9147
|
+
}
|
|
9148
|
+
memoizedFunction.updateDeps = (newDeps) => {
|
|
9149
|
+
deps = newDeps;
|
|
9150
|
+
};
|
|
9151
|
+
return memoizedFunction;
|
|
9152
|
+
}
|
|
9153
|
+
function notUndefined(value, msg) {
|
|
9154
|
+
if (value === void 0) {
|
|
9155
|
+
throw new Error(`Unexpected undefined${""}`);
|
|
9156
|
+
} else {
|
|
9157
|
+
return value;
|
|
9158
|
+
}
|
|
9159
|
+
}
|
|
9160
|
+
const approxEqual = (a, b) => Math.abs(a - b) < 1.01;
|
|
9161
|
+
const debounce = (targetWindow, fn, ms) => {
|
|
9162
|
+
let timeoutId;
|
|
9163
|
+
return function(...args) {
|
|
9164
|
+
targetWindow.clearTimeout(timeoutId);
|
|
9165
|
+
timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);
|
|
9166
|
+
};
|
|
9167
|
+
};
|
|
9168
|
+
|
|
9169
|
+
const getRect = (element) => {
|
|
9170
|
+
const { offsetWidth, offsetHeight } = element;
|
|
9171
|
+
return { width: offsetWidth, height: offsetHeight };
|
|
9172
|
+
};
|
|
9173
|
+
const defaultKeyExtractor = (index) => index;
|
|
9174
|
+
const defaultRangeExtractor = (range) => {
|
|
9175
|
+
const start = Math.max(range.startIndex - range.overscan, 0);
|
|
9176
|
+
const end = Math.min(range.endIndex + range.overscan, range.count - 1);
|
|
9177
|
+
const arr = [];
|
|
9178
|
+
for (let i = start; i <= end; i++) {
|
|
9179
|
+
arr.push(i);
|
|
9180
|
+
}
|
|
9181
|
+
return arr;
|
|
9182
|
+
};
|
|
9183
|
+
const observeElementRect = (instance, cb) => {
|
|
9184
|
+
const element = instance.scrollElement;
|
|
9185
|
+
if (!element) {
|
|
9186
|
+
return;
|
|
9187
|
+
}
|
|
9188
|
+
const targetWindow = instance.targetWindow;
|
|
9189
|
+
if (!targetWindow) {
|
|
9190
|
+
return;
|
|
9191
|
+
}
|
|
9192
|
+
const handler = (rect) => {
|
|
9193
|
+
const { width, height } = rect;
|
|
9194
|
+
cb({ width: Math.round(width), height: Math.round(height) });
|
|
9195
|
+
};
|
|
9196
|
+
handler(getRect(element));
|
|
9197
|
+
if (!targetWindow.ResizeObserver) {
|
|
9198
|
+
return () => {
|
|
9199
|
+
};
|
|
9200
|
+
}
|
|
9201
|
+
const observer = new targetWindow.ResizeObserver((entries) => {
|
|
9202
|
+
const run = () => {
|
|
9203
|
+
const entry = entries[0];
|
|
9204
|
+
if (entry == null ? void 0 : entry.borderBoxSize) {
|
|
9205
|
+
const box = entry.borderBoxSize[0];
|
|
9206
|
+
if (box) {
|
|
9207
|
+
handler({ width: box.inlineSize, height: box.blockSize });
|
|
9208
|
+
return;
|
|
9209
|
+
}
|
|
9210
|
+
}
|
|
9211
|
+
handler(getRect(element));
|
|
9212
|
+
};
|
|
9213
|
+
instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();
|
|
9214
|
+
});
|
|
9215
|
+
observer.observe(element, { box: "border-box" });
|
|
9216
|
+
return () => {
|
|
9217
|
+
observer.unobserve(element);
|
|
9218
|
+
};
|
|
9219
|
+
};
|
|
9220
|
+
const addEventListenerOptions = {
|
|
9221
|
+
passive: true
|
|
9222
|
+
};
|
|
9223
|
+
const supportsScrollend = typeof window == "undefined" ? true : "onscrollend" in window;
|
|
9224
|
+
const observeElementOffset = (instance, cb) => {
|
|
9225
|
+
const element = instance.scrollElement;
|
|
9226
|
+
if (!element) {
|
|
9227
|
+
return;
|
|
9228
|
+
}
|
|
9229
|
+
const targetWindow = instance.targetWindow;
|
|
9230
|
+
if (!targetWindow) {
|
|
9231
|
+
return;
|
|
9232
|
+
}
|
|
9233
|
+
let offset = 0;
|
|
9234
|
+
const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(
|
|
9235
|
+
targetWindow,
|
|
9236
|
+
() => {
|
|
9237
|
+
cb(offset, false);
|
|
9238
|
+
},
|
|
9239
|
+
instance.options.isScrollingResetDelay
|
|
9113
9240
|
);
|
|
9114
|
-
const
|
|
9115
|
-
|
|
9116
|
-
|
|
9117
|
-
|
|
9118
|
-
|
|
9119
|
-
|
|
9120
|
-
|
|
9121
|
-
|
|
9122
|
-
|
|
9123
|
-
|
|
9124
|
-
|
|
9125
|
-
|
|
9126
|
-
|
|
9127
|
-
|
|
9128
|
-
|
|
9129
|
-
|
|
9130
|
-
|
|
9131
|
-
|
|
9132
|
-
|
|
9241
|
+
const createHandler = (isScrolling) => () => {
|
|
9242
|
+
const { horizontal, isRtl } = instance.options;
|
|
9243
|
+
offset = horizontal ? element["scrollLeft"] * (isRtl && -1 || 1) : element["scrollTop"];
|
|
9244
|
+
fallback();
|
|
9245
|
+
cb(offset, isScrolling);
|
|
9246
|
+
};
|
|
9247
|
+
const handler = createHandler(true);
|
|
9248
|
+
const endHandler = createHandler(false);
|
|
9249
|
+
endHandler();
|
|
9250
|
+
element.addEventListener("scroll", handler, addEventListenerOptions);
|
|
9251
|
+
const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;
|
|
9252
|
+
if (registerScrollendEvent) {
|
|
9253
|
+
element.addEventListener("scrollend", endHandler, addEventListenerOptions);
|
|
9254
|
+
}
|
|
9255
|
+
return () => {
|
|
9256
|
+
element.removeEventListener("scroll", handler);
|
|
9257
|
+
if (registerScrollendEvent) {
|
|
9258
|
+
element.removeEventListener("scrollend", endHandler);
|
|
9259
|
+
}
|
|
9260
|
+
};
|
|
9261
|
+
};
|
|
9262
|
+
const measureElement = (element, entry, instance) => {
|
|
9263
|
+
if (entry == null ? void 0 : entry.borderBoxSize) {
|
|
9264
|
+
const box = entry.borderBoxSize[0];
|
|
9265
|
+
if (box) {
|
|
9266
|
+
const size = Math.round(
|
|
9267
|
+
box[instance.options.horizontal ? "inlineSize" : "blockSize"]
|
|
9268
|
+
);
|
|
9269
|
+
return size;
|
|
9270
|
+
}
|
|
9271
|
+
}
|
|
9272
|
+
return element[instance.options.horizontal ? "offsetWidth" : "offsetHeight"];
|
|
9273
|
+
};
|
|
9274
|
+
const elementScroll = (offset, {
|
|
9275
|
+
adjustments = 0,
|
|
9276
|
+
behavior
|
|
9277
|
+
}, instance) => {
|
|
9278
|
+
var _a, _b;
|
|
9279
|
+
const toOffset = offset + adjustments;
|
|
9280
|
+
(_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {
|
|
9281
|
+
[instance.options.horizontal ? "left" : "top"]: toOffset,
|
|
9282
|
+
behavior
|
|
9283
|
+
});
|
|
9284
|
+
};
|
|
9285
|
+
class Virtualizer {
|
|
9286
|
+
constructor(opts) {
|
|
9287
|
+
this.unsubs = [];
|
|
9288
|
+
this.scrollElement = null;
|
|
9289
|
+
this.targetWindow = null;
|
|
9290
|
+
this.isScrolling = false;
|
|
9291
|
+
this.measurementsCache = [];
|
|
9292
|
+
this.itemSizeCache = /* @__PURE__ */ new Map();
|
|
9293
|
+
this.pendingMeasuredCacheIndexes = [];
|
|
9294
|
+
this.scrollRect = null;
|
|
9295
|
+
this.scrollOffset = null;
|
|
9296
|
+
this.scrollDirection = null;
|
|
9297
|
+
this.scrollAdjustments = 0;
|
|
9298
|
+
this.elementsCache = /* @__PURE__ */ new Map();
|
|
9299
|
+
this.observer = /* @__PURE__ */ (() => {
|
|
9300
|
+
let _ro = null;
|
|
9301
|
+
const get = () => {
|
|
9302
|
+
if (_ro) {
|
|
9303
|
+
return _ro;
|
|
9304
|
+
}
|
|
9305
|
+
if (!this.targetWindow || !this.targetWindow.ResizeObserver) {
|
|
9306
|
+
return null;
|
|
9307
|
+
}
|
|
9308
|
+
return _ro = new this.targetWindow.ResizeObserver((entries) => {
|
|
9309
|
+
entries.forEach((entry) => {
|
|
9310
|
+
const run = () => {
|
|
9311
|
+
this._measureElement(entry.target, entry);
|
|
9312
|
+
};
|
|
9313
|
+
this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();
|
|
9314
|
+
});
|
|
9315
|
+
});
|
|
9316
|
+
};
|
|
9317
|
+
return {
|
|
9318
|
+
disconnect: () => {
|
|
9319
|
+
var _a;
|
|
9320
|
+
(_a = get()) == null ? void 0 : _a.disconnect();
|
|
9321
|
+
_ro = null;
|
|
9322
|
+
},
|
|
9323
|
+
observe: (target) => {
|
|
9324
|
+
var _a;
|
|
9325
|
+
return (_a = get()) == null ? void 0 : _a.observe(target, { box: "border-box" });
|
|
9326
|
+
},
|
|
9327
|
+
unobserve: (target) => {
|
|
9328
|
+
var _a;
|
|
9329
|
+
return (_a = get()) == null ? void 0 : _a.unobserve(target);
|
|
9330
|
+
}
|
|
9331
|
+
};
|
|
9332
|
+
})();
|
|
9333
|
+
this.range = null;
|
|
9334
|
+
this.setOptions = (opts2) => {
|
|
9335
|
+
Object.entries(opts2).forEach(([key, value]) => {
|
|
9336
|
+
if (typeof value === "undefined") delete opts2[key];
|
|
9337
|
+
});
|
|
9338
|
+
this.options = {
|
|
9339
|
+
debug: false,
|
|
9340
|
+
initialOffset: 0,
|
|
9341
|
+
overscan: 1,
|
|
9342
|
+
paddingStart: 0,
|
|
9343
|
+
paddingEnd: 0,
|
|
9344
|
+
scrollPaddingStart: 0,
|
|
9345
|
+
scrollPaddingEnd: 0,
|
|
9346
|
+
horizontal: false,
|
|
9347
|
+
getItemKey: defaultKeyExtractor,
|
|
9348
|
+
rangeExtractor: defaultRangeExtractor,
|
|
9349
|
+
onChange: () => {
|
|
9350
|
+
},
|
|
9351
|
+
measureElement,
|
|
9352
|
+
initialRect: { width: 0, height: 0 },
|
|
9353
|
+
scrollMargin: 0,
|
|
9354
|
+
gap: 0,
|
|
9355
|
+
indexAttribute: "data-index",
|
|
9356
|
+
initialMeasurementsCache: [],
|
|
9357
|
+
lanes: 1,
|
|
9358
|
+
isScrollingResetDelay: 150,
|
|
9359
|
+
enabled: true,
|
|
9360
|
+
isRtl: false,
|
|
9361
|
+
useScrollendEvent: false,
|
|
9362
|
+
useAnimationFrameWithResizeObserver: false,
|
|
9363
|
+
...opts2
|
|
9364
|
+
};
|
|
9365
|
+
};
|
|
9366
|
+
this.notify = (sync) => {
|
|
9367
|
+
var _a, _b;
|
|
9368
|
+
(_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);
|
|
9369
|
+
};
|
|
9370
|
+
this.maybeNotify = memo(
|
|
9371
|
+
() => {
|
|
9372
|
+
this.calculateRange();
|
|
9373
|
+
return [
|
|
9374
|
+
this.isScrolling,
|
|
9375
|
+
this.range ? this.range.startIndex : null,
|
|
9376
|
+
this.range ? this.range.endIndex : null
|
|
9377
|
+
];
|
|
9378
|
+
},
|
|
9379
|
+
(isScrolling) => {
|
|
9380
|
+
this.notify(isScrolling);
|
|
9381
|
+
},
|
|
9382
|
+
{
|
|
9383
|
+
key: process.env.NODE_ENV !== "production" && "maybeNotify",
|
|
9384
|
+
debug: () => this.options.debug,
|
|
9385
|
+
initialDeps: [
|
|
9386
|
+
this.isScrolling,
|
|
9387
|
+
this.range ? this.range.startIndex : null,
|
|
9388
|
+
this.range ? this.range.endIndex : null
|
|
9389
|
+
]
|
|
9390
|
+
}
|
|
9391
|
+
);
|
|
9392
|
+
this.cleanup = () => {
|
|
9393
|
+
this.unsubs.filter(Boolean).forEach((d) => d());
|
|
9394
|
+
this.unsubs = [];
|
|
9395
|
+
this.observer.disconnect();
|
|
9396
|
+
this.scrollElement = null;
|
|
9397
|
+
this.targetWindow = null;
|
|
9398
|
+
};
|
|
9399
|
+
this._didMount = () => {
|
|
9400
|
+
return () => {
|
|
9401
|
+
this.cleanup();
|
|
9402
|
+
};
|
|
9403
|
+
};
|
|
9404
|
+
this._willUpdate = () => {
|
|
9405
|
+
var _a;
|
|
9406
|
+
const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;
|
|
9407
|
+
if (this.scrollElement !== scrollElement) {
|
|
9408
|
+
this.cleanup();
|
|
9409
|
+
if (!scrollElement) {
|
|
9410
|
+
this.maybeNotify();
|
|
9411
|
+
return;
|
|
9412
|
+
}
|
|
9413
|
+
this.scrollElement = scrollElement;
|
|
9414
|
+
if (this.scrollElement && "ownerDocument" in this.scrollElement) {
|
|
9415
|
+
this.targetWindow = this.scrollElement.ownerDocument.defaultView;
|
|
9416
|
+
} else {
|
|
9417
|
+
this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;
|
|
9418
|
+
}
|
|
9419
|
+
this.elementsCache.forEach((cached) => {
|
|
9420
|
+
this.observer.observe(cached);
|
|
9133
9421
|
});
|
|
9134
|
-
|
|
9135
|
-
|
|
9136
|
-
|
|
9137
|
-
const newDates = Array.from({ length: 20 }, (_, i) => ({
|
|
9138
|
-
year: lastYear + (i + 1),
|
|
9139
|
-
disabled: false
|
|
9140
|
-
}));
|
|
9141
|
-
return [...prevDates, ...newDates];
|
|
9422
|
+
this._scrollToOffset(this.getScrollOffset(), {
|
|
9423
|
+
adjustments: void 0,
|
|
9424
|
+
behavior: void 0
|
|
9142
9425
|
});
|
|
9426
|
+
this.unsubs.push(
|
|
9427
|
+
this.options.observeElementRect(this, (rect) => {
|
|
9428
|
+
this.scrollRect = rect;
|
|
9429
|
+
this.maybeNotify();
|
|
9430
|
+
})
|
|
9431
|
+
);
|
|
9432
|
+
this.unsubs.push(
|
|
9433
|
+
this.options.observeElementOffset(this, (offset, isScrolling) => {
|
|
9434
|
+
this.scrollAdjustments = 0;
|
|
9435
|
+
this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? "forward" : "backward" : null;
|
|
9436
|
+
this.scrollOffset = offset;
|
|
9437
|
+
this.isScrolling = isScrolling;
|
|
9438
|
+
this.maybeNotify();
|
|
9439
|
+
})
|
|
9440
|
+
);
|
|
9143
9441
|
}
|
|
9144
9442
|
};
|
|
9145
|
-
|
|
9146
|
-
|
|
9147
|
-
|
|
9148
|
-
|
|
9149
|
-
|
|
9150
|
-
|
|
9151
|
-
|
|
9152
|
-
|
|
9153
|
-
|
|
9154
|
-
|
|
9155
|
-
|
|
9156
|
-
|
|
9157
|
-
|
|
9158
|
-
);
|
|
9159
|
-
|
|
9443
|
+
this.getSize = () => {
|
|
9444
|
+
if (!this.options.enabled) {
|
|
9445
|
+
this.scrollRect = null;
|
|
9446
|
+
return 0;
|
|
9447
|
+
}
|
|
9448
|
+
this.scrollRect = this.scrollRect ?? this.options.initialRect;
|
|
9449
|
+
return this.scrollRect[this.options.horizontal ? "width" : "height"];
|
|
9450
|
+
};
|
|
9451
|
+
this.getScrollOffset = () => {
|
|
9452
|
+
if (!this.options.enabled) {
|
|
9453
|
+
this.scrollOffset = null;
|
|
9454
|
+
return 0;
|
|
9455
|
+
}
|
|
9456
|
+
this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === "function" ? this.options.initialOffset() : this.options.initialOffset);
|
|
9457
|
+
return this.scrollOffset;
|
|
9458
|
+
};
|
|
9459
|
+
this.getFurthestMeasurement = (measurements, index) => {
|
|
9460
|
+
const furthestMeasurementsFound = /* @__PURE__ */ new Map();
|
|
9461
|
+
const furthestMeasurements = /* @__PURE__ */ new Map();
|
|
9462
|
+
for (let m = index - 1; m >= 0; m--) {
|
|
9463
|
+
const measurement = measurements[m];
|
|
9464
|
+
if (furthestMeasurementsFound.has(measurement.lane)) {
|
|
9465
|
+
continue;
|
|
9466
|
+
}
|
|
9467
|
+
const previousFurthestMeasurement = furthestMeasurements.get(
|
|
9468
|
+
measurement.lane
|
|
9469
|
+
);
|
|
9470
|
+
if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {
|
|
9471
|
+
furthestMeasurements.set(measurement.lane, measurement);
|
|
9472
|
+
} else if (measurement.end < previousFurthestMeasurement.end) {
|
|
9473
|
+
furthestMeasurementsFound.set(measurement.lane, true);
|
|
9474
|
+
}
|
|
9475
|
+
if (furthestMeasurementsFound.size === this.options.lanes) {
|
|
9476
|
+
break;
|
|
9477
|
+
}
|
|
9478
|
+
}
|
|
9479
|
+
return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {
|
|
9480
|
+
if (a.end === b.end) {
|
|
9481
|
+
return a.index - b.index;
|
|
9482
|
+
}
|
|
9483
|
+
return a.end - b.end;
|
|
9484
|
+
})[0] : void 0;
|
|
9485
|
+
};
|
|
9486
|
+
this.getMeasurementOptions = memo(
|
|
9487
|
+
() => [
|
|
9488
|
+
this.options.count,
|
|
9489
|
+
this.options.paddingStart,
|
|
9490
|
+
this.options.scrollMargin,
|
|
9491
|
+
this.options.getItemKey,
|
|
9492
|
+
this.options.enabled
|
|
9493
|
+
],
|
|
9494
|
+
(count, paddingStart, scrollMargin, getItemKey, enabled) => {
|
|
9495
|
+
this.pendingMeasuredCacheIndexes = [];
|
|
9496
|
+
return {
|
|
9497
|
+
count,
|
|
9498
|
+
paddingStart,
|
|
9499
|
+
scrollMargin,
|
|
9500
|
+
getItemKey,
|
|
9501
|
+
enabled
|
|
9502
|
+
};
|
|
9503
|
+
},
|
|
9504
|
+
{
|
|
9505
|
+
key: false
|
|
9506
|
+
}
|
|
9507
|
+
);
|
|
9508
|
+
this.getMeasurements = memo(
|
|
9509
|
+
() => [this.getMeasurementOptions(), this.itemSizeCache],
|
|
9510
|
+
({ count, paddingStart, scrollMargin, getItemKey, enabled }, itemSizeCache) => {
|
|
9511
|
+
if (!enabled) {
|
|
9512
|
+
this.measurementsCache = [];
|
|
9513
|
+
this.itemSizeCache.clear();
|
|
9514
|
+
return [];
|
|
9515
|
+
}
|
|
9516
|
+
if (this.measurementsCache.length === 0) {
|
|
9517
|
+
this.measurementsCache = this.options.initialMeasurementsCache;
|
|
9518
|
+
this.measurementsCache.forEach((item) => {
|
|
9519
|
+
this.itemSizeCache.set(item.key, item.size);
|
|
9520
|
+
});
|
|
9521
|
+
}
|
|
9522
|
+
const min = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
|
|
9523
|
+
this.pendingMeasuredCacheIndexes = [];
|
|
9524
|
+
const measurements = this.measurementsCache.slice(0, min);
|
|
9525
|
+
for (let i = min; i < count; i++) {
|
|
9526
|
+
const key = getItemKey(i);
|
|
9527
|
+
const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);
|
|
9528
|
+
const start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;
|
|
9529
|
+
const measuredSize = itemSizeCache.get(key);
|
|
9530
|
+
const size = typeof measuredSize === "number" ? measuredSize : this.options.estimateSize(i);
|
|
9531
|
+
const end = start + size;
|
|
9532
|
+
const lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;
|
|
9533
|
+
measurements[i] = {
|
|
9534
|
+
index: i,
|
|
9535
|
+
start,
|
|
9536
|
+
size,
|
|
9537
|
+
end,
|
|
9538
|
+
key,
|
|
9539
|
+
lane
|
|
9540
|
+
};
|
|
9541
|
+
}
|
|
9542
|
+
this.measurementsCache = measurements;
|
|
9543
|
+
return measurements;
|
|
9544
|
+
},
|
|
9545
|
+
{
|
|
9546
|
+
key: process.env.NODE_ENV !== "production" && "getMeasurements",
|
|
9547
|
+
debug: () => this.options.debug
|
|
9548
|
+
}
|
|
9549
|
+
);
|
|
9550
|
+
this.calculateRange = memo(
|
|
9551
|
+
() => [
|
|
9552
|
+
this.getMeasurements(),
|
|
9553
|
+
this.getSize(),
|
|
9554
|
+
this.getScrollOffset(),
|
|
9555
|
+
this.options.lanes
|
|
9556
|
+
],
|
|
9557
|
+
(measurements, outerSize, scrollOffset, lanes) => {
|
|
9558
|
+
return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({
|
|
9559
|
+
measurements,
|
|
9560
|
+
outerSize,
|
|
9561
|
+
scrollOffset,
|
|
9562
|
+
lanes
|
|
9563
|
+
}) : null;
|
|
9564
|
+
},
|
|
9565
|
+
{
|
|
9566
|
+
key: process.env.NODE_ENV !== "production" && "calculateRange",
|
|
9567
|
+
debug: () => this.options.debug
|
|
9568
|
+
}
|
|
9569
|
+
);
|
|
9570
|
+
this.getVirtualIndexes = memo(
|
|
9571
|
+
() => {
|
|
9572
|
+
let startIndex = null;
|
|
9573
|
+
let endIndex = null;
|
|
9574
|
+
const range = this.calculateRange();
|
|
9575
|
+
if (range) {
|
|
9576
|
+
startIndex = range.startIndex;
|
|
9577
|
+
endIndex = range.endIndex;
|
|
9578
|
+
}
|
|
9579
|
+
this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);
|
|
9580
|
+
return [
|
|
9581
|
+
this.options.rangeExtractor,
|
|
9582
|
+
this.options.overscan,
|
|
9583
|
+
this.options.count,
|
|
9584
|
+
startIndex,
|
|
9585
|
+
endIndex
|
|
9586
|
+
];
|
|
9587
|
+
},
|
|
9588
|
+
(rangeExtractor, overscan, count, startIndex, endIndex) => {
|
|
9589
|
+
return startIndex === null || endIndex === null ? [] : rangeExtractor({
|
|
9590
|
+
startIndex,
|
|
9591
|
+
endIndex,
|
|
9592
|
+
overscan,
|
|
9593
|
+
count
|
|
9594
|
+
});
|
|
9595
|
+
},
|
|
9596
|
+
{
|
|
9597
|
+
key: process.env.NODE_ENV !== "production" && "getVirtualIndexes",
|
|
9598
|
+
debug: () => this.options.debug
|
|
9599
|
+
}
|
|
9600
|
+
);
|
|
9601
|
+
this.indexFromElement = (node) => {
|
|
9602
|
+
const attributeName = this.options.indexAttribute;
|
|
9603
|
+
const indexStr = node.getAttribute(attributeName);
|
|
9604
|
+
if (!indexStr) {
|
|
9605
|
+
console.warn(
|
|
9606
|
+
`Missing attribute name '${attributeName}={index}' on measured element.`
|
|
9607
|
+
);
|
|
9608
|
+
return -1;
|
|
9609
|
+
}
|
|
9610
|
+
return parseInt(indexStr, 10);
|
|
9611
|
+
};
|
|
9612
|
+
this._measureElement = (node, entry) => {
|
|
9613
|
+
const index = this.indexFromElement(node);
|
|
9614
|
+
const item = this.measurementsCache[index];
|
|
9615
|
+
if (!item) {
|
|
9160
9616
|
return;
|
|
9161
9617
|
}
|
|
9162
|
-
const
|
|
9163
|
-
const
|
|
9164
|
-
if (
|
|
9165
|
-
|
|
9166
|
-
|
|
9167
|
-
|
|
9168
|
-
|
|
9618
|
+
const key = item.key;
|
|
9619
|
+
const prevNode = this.elementsCache.get(key);
|
|
9620
|
+
if (prevNode !== node) {
|
|
9621
|
+
if (prevNode) {
|
|
9622
|
+
this.observer.unobserve(prevNode);
|
|
9623
|
+
}
|
|
9624
|
+
this.observer.observe(node);
|
|
9625
|
+
this.elementsCache.set(key, node);
|
|
9626
|
+
}
|
|
9627
|
+
if (node.isConnected) {
|
|
9628
|
+
this.resizeItem(index, this.options.measureElement(node, entry, this));
|
|
9629
|
+
}
|
|
9630
|
+
};
|
|
9631
|
+
this.resizeItem = (index, size) => {
|
|
9632
|
+
const item = this.measurementsCache[index];
|
|
9633
|
+
if (!item) {
|
|
9634
|
+
return;
|
|
9635
|
+
}
|
|
9636
|
+
const itemSize = this.itemSizeCache.get(item.key) ?? item.size;
|
|
9637
|
+
const delta = size - itemSize;
|
|
9638
|
+
if (delta !== 0) {
|
|
9639
|
+
if (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments) {
|
|
9640
|
+
if (process.env.NODE_ENV !== "production" && this.options.debug) {
|
|
9641
|
+
console.info("correction", delta);
|
|
9642
|
+
}
|
|
9643
|
+
this._scrollToOffset(this.getScrollOffset(), {
|
|
9644
|
+
adjustments: this.scrollAdjustments += delta,
|
|
9645
|
+
behavior: void 0
|
|
9646
|
+
});
|
|
9647
|
+
}
|
|
9648
|
+
this.pendingMeasuredCacheIndexes.push(item.index);
|
|
9649
|
+
this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));
|
|
9650
|
+
this.notify(false);
|
|
9651
|
+
}
|
|
9652
|
+
};
|
|
9653
|
+
this.measureElement = (node) => {
|
|
9654
|
+
if (!node) {
|
|
9655
|
+
this.elementsCache.forEach((cached, key) => {
|
|
9656
|
+
if (!cached.isConnected) {
|
|
9657
|
+
this.observer.unobserve(cached);
|
|
9658
|
+
this.elementsCache.delete(key);
|
|
9659
|
+
}
|
|
9660
|
+
});
|
|
9661
|
+
return;
|
|
9662
|
+
}
|
|
9663
|
+
this._measureElement(node, void 0);
|
|
9664
|
+
};
|
|
9665
|
+
this.getVirtualItems = memo(
|
|
9666
|
+
() => [this.getVirtualIndexes(), this.getMeasurements()],
|
|
9667
|
+
(indexes, measurements) => {
|
|
9668
|
+
const virtualItems = [];
|
|
9669
|
+
for (let k = 0, len = indexes.length; k < len; k++) {
|
|
9670
|
+
const i = indexes[k];
|
|
9671
|
+
const measurement = measurements[i];
|
|
9672
|
+
virtualItems.push(measurement);
|
|
9673
|
+
}
|
|
9674
|
+
return virtualItems;
|
|
9675
|
+
},
|
|
9676
|
+
{
|
|
9677
|
+
key: process.env.NODE_ENV !== "production" && "getVirtualItems",
|
|
9678
|
+
debug: () => this.options.debug
|
|
9679
|
+
}
|
|
9680
|
+
);
|
|
9681
|
+
this.getVirtualItemForOffset = (offset) => {
|
|
9682
|
+
const measurements = this.getMeasurements();
|
|
9683
|
+
if (measurements.length === 0) {
|
|
9684
|
+
return void 0;
|
|
9685
|
+
}
|
|
9686
|
+
return notUndefined(
|
|
9687
|
+
measurements[findNearestBinarySearch(
|
|
9688
|
+
0,
|
|
9689
|
+
measurements.length - 1,
|
|
9690
|
+
(index) => notUndefined(measurements[index]).start,
|
|
9691
|
+
offset
|
|
9692
|
+
)]
|
|
9693
|
+
);
|
|
9694
|
+
};
|
|
9695
|
+
this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {
|
|
9696
|
+
const size = this.getSize();
|
|
9697
|
+
const scrollOffset = this.getScrollOffset();
|
|
9698
|
+
if (align === "auto") {
|
|
9699
|
+
align = toOffset >= scrollOffset + size ? "end" : "start";
|
|
9700
|
+
}
|
|
9701
|
+
if (align === "center") {
|
|
9702
|
+
toOffset += (itemSize - size) / 2;
|
|
9703
|
+
} else if (align === "end") {
|
|
9704
|
+
toOffset -= size;
|
|
9705
|
+
}
|
|
9706
|
+
const maxOffset = this.getTotalSize() + this.options.scrollMargin - size;
|
|
9707
|
+
return Math.max(Math.min(maxOffset, toOffset), 0);
|
|
9708
|
+
};
|
|
9709
|
+
this.getOffsetForIndex = (index, align = "auto") => {
|
|
9710
|
+
index = Math.max(0, Math.min(index, this.options.count - 1));
|
|
9711
|
+
const item = this.measurementsCache[index];
|
|
9712
|
+
if (!item) {
|
|
9713
|
+
return void 0;
|
|
9714
|
+
}
|
|
9715
|
+
const size = this.getSize();
|
|
9716
|
+
const scrollOffset = this.getScrollOffset();
|
|
9717
|
+
if (align === "auto") {
|
|
9718
|
+
if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {
|
|
9719
|
+
align = "end";
|
|
9720
|
+
} else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {
|
|
9721
|
+
align = "start";
|
|
9722
|
+
} else {
|
|
9723
|
+
return [scrollOffset, align];
|
|
9724
|
+
}
|
|
9725
|
+
}
|
|
9726
|
+
const toOffset = align === "end" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;
|
|
9727
|
+
return [
|
|
9728
|
+
this.getOffsetForAlignment(toOffset, align, item.size),
|
|
9729
|
+
align
|
|
9730
|
+
];
|
|
9731
|
+
};
|
|
9732
|
+
this.isDynamicMode = () => this.elementsCache.size > 0;
|
|
9733
|
+
this.scrollToOffset = (toOffset, { align = "start", behavior } = {}) => {
|
|
9734
|
+
if (behavior === "smooth" && this.isDynamicMode()) {
|
|
9735
|
+
console.warn(
|
|
9736
|
+
"The `smooth` scroll behavior is not fully supported with dynamic size."
|
|
9737
|
+
);
|
|
9738
|
+
}
|
|
9739
|
+
this._scrollToOffset(this.getOffsetForAlignment(toOffset, align), {
|
|
9740
|
+
adjustments: void 0,
|
|
9741
|
+
behavior
|
|
9742
|
+
});
|
|
9743
|
+
};
|
|
9744
|
+
this.scrollToIndex = (index, { align: initialAlign = "auto", behavior } = {}) => {
|
|
9745
|
+
if (behavior === "smooth" && this.isDynamicMode()) {
|
|
9746
|
+
console.warn(
|
|
9747
|
+
"The `smooth` scroll behavior is not fully supported with dynamic size."
|
|
9748
|
+
);
|
|
9749
|
+
}
|
|
9750
|
+
index = Math.max(0, Math.min(index, this.options.count - 1));
|
|
9751
|
+
let attempts = 0;
|
|
9752
|
+
const maxAttempts = 10;
|
|
9753
|
+
const tryScroll = (currentAlign) => {
|
|
9754
|
+
if (!this.targetWindow) return;
|
|
9755
|
+
const offsetInfo = this.getOffsetForIndex(index, currentAlign);
|
|
9756
|
+
if (!offsetInfo) {
|
|
9757
|
+
console.warn("Failed to get offset for index:", index);
|
|
9758
|
+
return;
|
|
9759
|
+
}
|
|
9760
|
+
const [offset, align] = offsetInfo;
|
|
9761
|
+
this._scrollToOffset(offset, { adjustments: void 0, behavior });
|
|
9762
|
+
this.targetWindow.requestAnimationFrame(() => {
|
|
9763
|
+
const currentOffset = this.getScrollOffset();
|
|
9764
|
+
const afterInfo = this.getOffsetForIndex(index, align);
|
|
9765
|
+
if (!afterInfo) {
|
|
9766
|
+
console.warn("Failed to get offset for index:", index);
|
|
9767
|
+
return;
|
|
9768
|
+
}
|
|
9769
|
+
if (!approxEqual(afterInfo[0], currentOffset)) {
|
|
9770
|
+
scheduleRetry(align);
|
|
9771
|
+
}
|
|
9772
|
+
});
|
|
9169
9773
|
};
|
|
9170
|
-
|
|
9171
|
-
|
|
9172
|
-
|
|
9173
|
-
|
|
9174
|
-
|
|
9175
|
-
|
|
9176
|
-
|
|
9177
|
-
|
|
9178
|
-
|
|
9179
|
-
|
|
9180
|
-
|
|
9181
|
-
|
|
9182
|
-
|
|
9183
|
-
|
|
9184
|
-
|
|
9185
|
-
|
|
9186
|
-
|
|
9187
|
-
|
|
9774
|
+
const scheduleRetry = (align) => {
|
|
9775
|
+
if (!this.targetWindow) return;
|
|
9776
|
+
attempts++;
|
|
9777
|
+
if (attempts < maxAttempts) {
|
|
9778
|
+
if (process.env.NODE_ENV !== "production" && this.options.debug) {
|
|
9779
|
+
console.info("Schedule retry", attempts, maxAttempts);
|
|
9780
|
+
}
|
|
9781
|
+
this.targetWindow.requestAnimationFrame(() => tryScroll(align));
|
|
9782
|
+
} else {
|
|
9783
|
+
console.warn(
|
|
9784
|
+
`Failed to scroll to index ${index} after ${maxAttempts} attempts.`
|
|
9785
|
+
);
|
|
9786
|
+
}
|
|
9787
|
+
};
|
|
9788
|
+
tryScroll(initialAlign);
|
|
9789
|
+
};
|
|
9790
|
+
this.scrollBy = (delta, { behavior } = {}) => {
|
|
9791
|
+
if (behavior === "smooth" && this.isDynamicMode()) {
|
|
9792
|
+
console.warn(
|
|
9793
|
+
"The `smooth` scroll behavior is not fully supported with dynamic size."
|
|
9794
|
+
);
|
|
9188
9795
|
}
|
|
9189
|
-
|
|
9190
|
-
|
|
9796
|
+
this._scrollToOffset(this.getScrollOffset() + delta, {
|
|
9797
|
+
adjustments: void 0,
|
|
9798
|
+
behavior
|
|
9799
|
+
});
|
|
9800
|
+
};
|
|
9801
|
+
this.getTotalSize = () => {
|
|
9802
|
+
var _a;
|
|
9803
|
+
const measurements = this.getMeasurements();
|
|
9804
|
+
let end;
|
|
9805
|
+
if (measurements.length === 0) {
|
|
9806
|
+
end = this.options.paddingStart;
|
|
9807
|
+
} else if (this.options.lanes === 1) {
|
|
9808
|
+
end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0;
|
|
9809
|
+
} else {
|
|
9810
|
+
const endByLane = Array(this.options.lanes).fill(null);
|
|
9811
|
+
let endIndex = measurements.length - 1;
|
|
9812
|
+
while (endIndex >= 0 && endByLane.some((val) => val === null)) {
|
|
9813
|
+
const item = measurements[endIndex];
|
|
9814
|
+
if (endByLane[item.lane] === null) {
|
|
9815
|
+
endByLane[item.lane] = item.end;
|
|
9816
|
+
}
|
|
9817
|
+
endIndex--;
|
|
9818
|
+
}
|
|
9819
|
+
end = Math.max(...endByLane.filter((val) => val !== null));
|
|
9820
|
+
}
|
|
9821
|
+
return Math.max(
|
|
9822
|
+
end - this.options.scrollMargin + this.options.paddingEnd,
|
|
9823
|
+
0
|
|
9824
|
+
);
|
|
9825
|
+
};
|
|
9826
|
+
this._scrollToOffset = (offset, {
|
|
9827
|
+
adjustments,
|
|
9828
|
+
behavior
|
|
9829
|
+
}) => {
|
|
9830
|
+
this.options.scrollToFn(offset, { behavior, adjustments }, this);
|
|
9831
|
+
};
|
|
9832
|
+
this.measure = () => {
|
|
9833
|
+
this.itemSizeCache = /* @__PURE__ */ new Map();
|
|
9834
|
+
this.notify(false);
|
|
9835
|
+
};
|
|
9836
|
+
this.setOptions(opts);
|
|
9837
|
+
}
|
|
9838
|
+
}
|
|
9839
|
+
const findNearestBinarySearch = (low, high, getCurrentValue, value) => {
|
|
9840
|
+
while (low <= high) {
|
|
9841
|
+
const middle = (low + high) / 2 | 0;
|
|
9842
|
+
const currentValue = getCurrentValue(middle);
|
|
9843
|
+
if (currentValue < value) {
|
|
9844
|
+
low = middle + 1;
|
|
9845
|
+
} else if (currentValue > value) {
|
|
9846
|
+
high = middle - 1;
|
|
9847
|
+
} else {
|
|
9848
|
+
return middle;
|
|
9849
|
+
}
|
|
9850
|
+
}
|
|
9851
|
+
if (low > 0) {
|
|
9852
|
+
return low - 1;
|
|
9853
|
+
} else {
|
|
9854
|
+
return 0;
|
|
9855
|
+
}
|
|
9856
|
+
};
|
|
9857
|
+
function calculateRange({
|
|
9858
|
+
measurements,
|
|
9859
|
+
outerSize,
|
|
9860
|
+
scrollOffset,
|
|
9861
|
+
lanes
|
|
9862
|
+
}) {
|
|
9863
|
+
const lastIndex = measurements.length - 1;
|
|
9864
|
+
const getOffset = (index) => measurements[index].start;
|
|
9865
|
+
if (measurements.length <= lanes) {
|
|
9866
|
+
return {
|
|
9867
|
+
startIndex: 0,
|
|
9868
|
+
endIndex: lastIndex
|
|
9869
|
+
};
|
|
9870
|
+
}
|
|
9871
|
+
let startIndex = findNearestBinarySearch(
|
|
9872
|
+
0,
|
|
9873
|
+
lastIndex,
|
|
9874
|
+
getOffset,
|
|
9875
|
+
scrollOffset
|
|
9876
|
+
);
|
|
9877
|
+
let endIndex = startIndex;
|
|
9878
|
+
if (lanes === 1) {
|
|
9879
|
+
while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {
|
|
9880
|
+
endIndex++;
|
|
9881
|
+
}
|
|
9882
|
+
} else if (lanes > 1) {
|
|
9883
|
+
const endPerLane = Array(lanes).fill(0);
|
|
9884
|
+
while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {
|
|
9885
|
+
const item = measurements[endIndex];
|
|
9886
|
+
endPerLane[item.lane] = item.end;
|
|
9887
|
+
endIndex++;
|
|
9888
|
+
}
|
|
9889
|
+
const startPerLane = Array(lanes).fill(scrollOffset + outerSize);
|
|
9890
|
+
while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {
|
|
9891
|
+
const item = measurements[startIndex];
|
|
9892
|
+
startPerLane[item.lane] = item.start;
|
|
9893
|
+
startIndex--;
|
|
9894
|
+
}
|
|
9895
|
+
startIndex = Math.max(0, startIndex - startIndex % lanes);
|
|
9896
|
+
endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));
|
|
9897
|
+
}
|
|
9898
|
+
return { startIndex, endIndex };
|
|
9899
|
+
}
|
|
9900
|
+
|
|
9901
|
+
const useIsomorphicLayoutEffect = typeof document !== "undefined" ? React.useLayoutEffect : React.useEffect;
|
|
9902
|
+
function useVirtualizerBase(options) {
|
|
9903
|
+
const rerender = React.useReducer(() => ({}), {})[1];
|
|
9904
|
+
const resolvedOptions = {
|
|
9905
|
+
...options,
|
|
9906
|
+
onChange: (instance2, sync) => {
|
|
9907
|
+
var _a;
|
|
9908
|
+
if (sync) {
|
|
9909
|
+
flushSync(rerender);
|
|
9910
|
+
} else {
|
|
9911
|
+
rerender();
|
|
9912
|
+
}
|
|
9913
|
+
(_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync);
|
|
9914
|
+
}
|
|
9915
|
+
};
|
|
9916
|
+
const [instance] = React.useState(
|
|
9917
|
+
() => new Virtualizer(resolvedOptions)
|
|
9191
9918
|
);
|
|
9919
|
+
instance.setOptions(resolvedOptions);
|
|
9920
|
+
useIsomorphicLayoutEffect(() => {
|
|
9921
|
+
return instance._didMount();
|
|
9922
|
+
}, []);
|
|
9923
|
+
useIsomorphicLayoutEffect(() => {
|
|
9924
|
+
return instance._willUpdate();
|
|
9925
|
+
});
|
|
9926
|
+
return instance;
|
|
9927
|
+
}
|
|
9928
|
+
function useVirtualizer(options) {
|
|
9929
|
+
return useVirtualizerBase({
|
|
9930
|
+
observeElementRect,
|
|
9931
|
+
observeElementOffset,
|
|
9932
|
+
scrollToFn: elementScroll,
|
|
9933
|
+
...options
|
|
9934
|
+
});
|
|
9935
|
+
}
|
|
9936
|
+
|
|
9937
|
+
const styles = {
|
|
9938
|
+
"year-selector": "_year-selector_1pxps_2",
|
|
9939
|
+
"year-grid": "_year-grid_1pxps_9",
|
|
9940
|
+
"year-item": "_year-item_1pxps_26",
|
|
9941
|
+
"pseudo-focused": "_pseudo-focused_1pxps_29"
|
|
9942
|
+
};
|
|
9943
|
+
|
|
9944
|
+
const useYearSelectorKeys = ({
|
|
9945
|
+
columns,
|
|
9946
|
+
scrollToYear,
|
|
9947
|
+
initialFocus,
|
|
9948
|
+
onSelect,
|
|
9949
|
+
onConfirm,
|
|
9950
|
+
pseudoFocused,
|
|
9951
|
+
setPseudoFocused,
|
|
9952
|
+
min,
|
|
9953
|
+
max,
|
|
9954
|
+
disabled,
|
|
9955
|
+
required
|
|
9956
|
+
}) => {
|
|
9957
|
+
const listRef = useRef(null);
|
|
9958
|
+
useEffect(() => {
|
|
9959
|
+
const list = listRef.current;
|
|
9960
|
+
const handleKeyDown = (e) => {
|
|
9961
|
+
if (pseudoFocused === null) return;
|
|
9962
|
+
if ([
|
|
9963
|
+
"ArrowLeft",
|
|
9964
|
+
"ArrowRight",
|
|
9965
|
+
"ArrowUp",
|
|
9966
|
+
"ArrowDown",
|
|
9967
|
+
"Home",
|
|
9968
|
+
"PageUp",
|
|
9969
|
+
"PageDown",
|
|
9970
|
+
"Enter",
|
|
9971
|
+
" ",
|
|
9972
|
+
"Backspace",
|
|
9973
|
+
"Delete"
|
|
9974
|
+
].includes(e.key)) {
|
|
9975
|
+
e.preventDefault();
|
|
9976
|
+
if (e.key === "ArrowLeft" || e.key === "ArrowRight" || e.key === "ArrowUp" || e.key === "ArrowDown") {
|
|
9977
|
+
const newYear = e.key === "ArrowLeft" || e.key === "ArrowUp" ? pseudoFocused - 1 : pseudoFocused + 1;
|
|
9978
|
+
const clampedYear = Math.min(Math.max(newYear, min), max);
|
|
9979
|
+
scrollToYear(newYear, { focus: true });
|
|
9980
|
+
setPseudoFocused(newYear);
|
|
9981
|
+
if (!disabled) {
|
|
9982
|
+
onSelect(clampedYear);
|
|
9983
|
+
}
|
|
9984
|
+
return;
|
|
9985
|
+
}
|
|
9986
|
+
if (!required && (e.key === "Backspace" || e.key === "Delete")) {
|
|
9987
|
+
onSelect(null);
|
|
9988
|
+
return;
|
|
9989
|
+
}
|
|
9990
|
+
if (e.key === "PageUp" || e.key === "PageDown") {
|
|
9991
|
+
const newYear = e.key === "PageUp" ? min : max;
|
|
9992
|
+
scrollToYear(newYear, { focus: true });
|
|
9993
|
+
setPseudoFocused(newYear);
|
|
9994
|
+
if (!disabled) {
|
|
9995
|
+
onSelect(newYear);
|
|
9996
|
+
}
|
|
9997
|
+
return;
|
|
9998
|
+
}
|
|
9999
|
+
if (e.key === "Home") {
|
|
10000
|
+
scrollToYear(initialFocus, { focus: true });
|
|
10001
|
+
setPseudoFocused(initialFocus);
|
|
10002
|
+
if (!disabled) {
|
|
10003
|
+
onSelect(initialFocus);
|
|
10004
|
+
}
|
|
10005
|
+
return;
|
|
10006
|
+
}
|
|
10007
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
10008
|
+
if (!disabled) {
|
|
10009
|
+
onConfirm();
|
|
10010
|
+
}
|
|
10011
|
+
return;
|
|
10012
|
+
}
|
|
10013
|
+
}
|
|
10014
|
+
};
|
|
10015
|
+
list?.addEventListener("keydown", handleKeyDown);
|
|
10016
|
+
return () => {
|
|
10017
|
+
list?.removeEventListener("keydown", handleKeyDown);
|
|
10018
|
+
};
|
|
10019
|
+
}, [
|
|
10020
|
+
pseudoFocused,
|
|
10021
|
+
columns,
|
|
10022
|
+
scrollToYear,
|
|
10023
|
+
onSelect,
|
|
10024
|
+
min,
|
|
10025
|
+
max,
|
|
10026
|
+
initialFocus,
|
|
10027
|
+
disabled,
|
|
10028
|
+
setPseudoFocused,
|
|
10029
|
+
required,
|
|
10030
|
+
onConfirm
|
|
10031
|
+
]);
|
|
10032
|
+
return { listRef };
|
|
10033
|
+
};
|
|
10034
|
+
|
|
10035
|
+
const YearItem = ({
|
|
10036
|
+
year,
|
|
10037
|
+
onChange,
|
|
10038
|
+
selected,
|
|
10039
|
+
pseudoFocused,
|
|
10040
|
+
disabled,
|
|
10041
|
+
onFocus,
|
|
10042
|
+
...rest
|
|
10043
|
+
}) => {
|
|
9192
10044
|
return /* @__PURE__ */ jsx(
|
|
9193
|
-
|
|
10045
|
+
SelectCard,
|
|
9194
10046
|
{
|
|
9195
|
-
|
|
9196
|
-
|
|
9197
|
-
|
|
9198
|
-
|
|
9199
|
-
|
|
9200
|
-
|
|
9201
|
-
|
|
9202
|
-
|
|
9203
|
-
|
|
9204
|
-
|
|
9205
|
-
|
|
9206
|
-
|
|
9207
|
-
|
|
9208
|
-
|
|
9209
|
-
|
|
9210
|
-
|
|
9211
|
-
|
|
9212
|
-
onChange: () => onYearSelection(year),
|
|
9213
|
-
checked: selectedYear === year,
|
|
9214
|
-
checkboxProps: {
|
|
9215
|
-
className: styles["selection-checkbox"],
|
|
9216
|
-
tabIndex: focusedIndex === index ? 0 : -1
|
|
9217
|
-
},
|
|
9218
|
-
className: styles["selection-card"],
|
|
9219
|
-
disabled,
|
|
9220
|
-
children: yearDate
|
|
9221
|
-
}
|
|
9222
|
-
) }, yearDate);
|
|
9223
|
-
})
|
|
9224
|
-
}
|
|
9225
|
-
) })
|
|
10047
|
+
disabled,
|
|
10048
|
+
id: year,
|
|
10049
|
+
onChange: !disabled ? () => onChange(year) : () => {
|
|
10050
|
+
},
|
|
10051
|
+
checked: selected,
|
|
10052
|
+
checkboxProps: {
|
|
10053
|
+
tabIndex: -1,
|
|
10054
|
+
onFocus
|
|
10055
|
+
},
|
|
10056
|
+
flexGrow: 1,
|
|
10057
|
+
className: cx(styles["year-item"], {
|
|
10058
|
+
[styles["pseudo-focused"]]: pseudoFocused
|
|
10059
|
+
}),
|
|
10060
|
+
"data-year": year,
|
|
10061
|
+
tabIndex: -1,
|
|
10062
|
+
...rest,
|
|
10063
|
+
children: year
|
|
9226
10064
|
}
|
|
9227
10065
|
);
|
|
9228
|
-
}
|
|
9229
|
-
|
|
10066
|
+
};
|
|
10067
|
+
|
|
10068
|
+
const DEFAULT_MIN = 1900;
|
|
10069
|
+
const DEFAULT_MAX = 2200;
|
|
10070
|
+
const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
|
|
10071
|
+
const YearSelector = forwardRef(
|
|
10072
|
+
({
|
|
10073
|
+
min = DEFAULT_MIN,
|
|
10074
|
+
max = DEFAULT_MAX,
|
|
10075
|
+
value: valueProp,
|
|
10076
|
+
defaultValue: defaultValueProp,
|
|
10077
|
+
onChange,
|
|
10078
|
+
onConfirm,
|
|
10079
|
+
startingYear = currentYear,
|
|
10080
|
+
columns: columnsProp,
|
|
10081
|
+
className,
|
|
10082
|
+
required = false,
|
|
10083
|
+
disabled = false,
|
|
10084
|
+
ariaLabel = "Year selection",
|
|
10085
|
+
rootProps
|
|
10086
|
+
}, ref) => {
|
|
10087
|
+
const columns = Math.max(columnsProp ?? 2, 1);
|
|
10088
|
+
const [value, setValue] = useOptionallyControlledState({
|
|
10089
|
+
controlledValue: valueProp,
|
|
10090
|
+
defaultValue: defaultValueProp ?? null,
|
|
10091
|
+
onChange
|
|
10092
|
+
});
|
|
10093
|
+
const previousValue = usePrevious(value);
|
|
10094
|
+
const initialFocusYear = value ?? startingYear;
|
|
10095
|
+
const [pseudoFocused, setPseudoFocused] = useState(initialFocusYear);
|
|
10096
|
+
const handleChange = (year) => {
|
|
10097
|
+
if (!required && value === year) {
|
|
10098
|
+
setValue(null);
|
|
10099
|
+
return;
|
|
10100
|
+
}
|
|
10101
|
+
setValue(year);
|
|
10102
|
+
if (year !== null) {
|
|
10103
|
+
setPseudoFocused(year);
|
|
10104
|
+
}
|
|
10105
|
+
};
|
|
10106
|
+
const handleItemChange = (year) => {
|
|
10107
|
+
handleChange(year);
|
|
10108
|
+
onConfirm?.(year);
|
|
10109
|
+
};
|
|
10110
|
+
const gap = 12;
|
|
10111
|
+
const rowHeight = 58;
|
|
10112
|
+
const rowCount = Math.ceil((max - min + 1) / columns);
|
|
10113
|
+
const initialOffset = (initialFocusYear - min) * (rowHeight + gap) / columns + gap / 2;
|
|
10114
|
+
const rowVirtualizer = useVirtualizer({
|
|
10115
|
+
count: rowCount,
|
|
10116
|
+
getScrollElement: () => parentRef.current,
|
|
10117
|
+
estimateSize: () => rowHeight,
|
|
10118
|
+
gap,
|
|
10119
|
+
initialOffset,
|
|
10120
|
+
paddingEnd: gap / 2
|
|
10121
|
+
});
|
|
10122
|
+
const scrollToYear = useCallback(
|
|
10123
|
+
(year, { focus } = {}) => {
|
|
10124
|
+
const index = Math.floor((year - min) / columns);
|
|
10125
|
+
rowVirtualizer.scrollToIndex(index, { align: "center" });
|
|
10126
|
+
if (focus) {
|
|
10127
|
+
setPseudoFocused(year);
|
|
10128
|
+
}
|
|
10129
|
+
},
|
|
10130
|
+
[min, columns, rowVirtualizer, setPseudoFocused]
|
|
10131
|
+
);
|
|
10132
|
+
const parentRef = useRef(null);
|
|
10133
|
+
const { listRef } = useYearSelectorKeys({
|
|
10134
|
+
columns,
|
|
10135
|
+
scrollToYear,
|
|
10136
|
+
initialFocus: initialFocusYear,
|
|
10137
|
+
onSelect: handleChange,
|
|
10138
|
+
onConfirm: () => onConfirm?.(value),
|
|
10139
|
+
min,
|
|
10140
|
+
max,
|
|
10141
|
+
disabled,
|
|
10142
|
+
pseudoFocused,
|
|
10143
|
+
setPseudoFocused,
|
|
10144
|
+
required
|
|
10145
|
+
});
|
|
10146
|
+
useEffect(() => {
|
|
10147
|
+
if (value !== null && previousValue !== value) {
|
|
10148
|
+
scrollToYear(value, { focus: true });
|
|
10149
|
+
}
|
|
10150
|
+
}, [value, previousValue, scrollToYear, listRef]);
|
|
10151
|
+
const jointRef = useMergeRefs([parentRef, listRef, ref]);
|
|
10152
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
|
|
10153
|
+
"div",
|
|
10154
|
+
{
|
|
10155
|
+
ref: jointRef,
|
|
10156
|
+
"aria-label": ariaLabel,
|
|
10157
|
+
tabIndex: 0,
|
|
10158
|
+
className: cx(styles["year-selector"], className),
|
|
10159
|
+
role: "spinbutton",
|
|
10160
|
+
"aria-valuenow": value ?? void 0,
|
|
10161
|
+
"aria-valuemin": min,
|
|
10162
|
+
"aria-valuemax": max,
|
|
10163
|
+
"aria-valuetext": value ? `${value}` : "No year selected",
|
|
10164
|
+
"data-test": rowVirtualizer.options.paddingEnd,
|
|
10165
|
+
style: {
|
|
10166
|
+
maxHeight: `${rowVirtualizer.getTotalSize() + 8}px`
|
|
10167
|
+
},
|
|
10168
|
+
...rootProps,
|
|
10169
|
+
children: /* @__PURE__ */ jsx(
|
|
10170
|
+
"div",
|
|
10171
|
+
{
|
|
10172
|
+
style: {
|
|
10173
|
+
height: `${rowVirtualizer.getTotalSize()}px`,
|
|
10174
|
+
width: "100%",
|
|
10175
|
+
position: "relative"
|
|
10176
|
+
},
|
|
10177
|
+
children: rowVirtualizer.getVirtualItems().map((virtualItem) => {
|
|
10178
|
+
const years = Array.from(
|
|
10179
|
+
{ length: columns },
|
|
10180
|
+
(_, i) => virtualItem.index * columns + i + min
|
|
10181
|
+
);
|
|
10182
|
+
return /* @__PURE__ */ jsx(
|
|
10183
|
+
"div",
|
|
10184
|
+
{
|
|
10185
|
+
"data-testid": "v-row",
|
|
10186
|
+
className: styles["year-grid"],
|
|
10187
|
+
style: {
|
|
10188
|
+
transform: `translateY(${virtualItem.start}px)`,
|
|
10189
|
+
gridTemplateColumns: `repeat(${columns}, 1fr)`
|
|
10190
|
+
},
|
|
10191
|
+
children: years.map((year) => {
|
|
10192
|
+
if (year > max) return /* @__PURE__ */ jsx("div", {}, year);
|
|
10193
|
+
return /* @__PURE__ */ jsx(
|
|
10194
|
+
YearItem,
|
|
10195
|
+
{
|
|
10196
|
+
disabled,
|
|
10197
|
+
year,
|
|
10198
|
+
onChange: handleItemChange,
|
|
10199
|
+
selected: value === year,
|
|
10200
|
+
pseudoFocused: pseudoFocused === year,
|
|
10201
|
+
onFocus: () => {
|
|
10202
|
+
listRef.current?.focus();
|
|
10203
|
+
setPseudoFocused(year);
|
|
10204
|
+
}
|
|
10205
|
+
},
|
|
10206
|
+
year
|
|
10207
|
+
);
|
|
10208
|
+
})
|
|
10209
|
+
},
|
|
10210
|
+
virtualItem.key
|
|
10211
|
+
);
|
|
10212
|
+
})
|
|
10213
|
+
}
|
|
10214
|
+
)
|
|
10215
|
+
}
|
|
10216
|
+
) });
|
|
10217
|
+
}
|
|
10218
|
+
);
|
|
10219
|
+
YearSelector.displayName = "YearSelector";
|
|
9230
10220
|
|
|
9231
10221
|
const CalendarElement = forwardRef(
|
|
9232
10222
|
(props, ref) => {
|
|
@@ -9261,6 +10251,8 @@ const CalendarElement = forwardRef(
|
|
|
9261
10251
|
const combinedRef = useMergeRefs([ref, calendarRef]);
|
|
9262
10252
|
const lastIValue = useRef(iValue);
|
|
9263
10253
|
const buttonsRef = useRef(void 0);
|
|
10254
|
+
const yearButtonRef = useRef(null);
|
|
10255
|
+
const monthButtonRef = useRef(null);
|
|
9264
10256
|
const [calendarWidth, setCalendarWidth] = useState(
|
|
9265
10257
|
void 0
|
|
9266
10258
|
);
|
|
@@ -9285,7 +10277,7 @@ const CalendarElement = forwardRef(
|
|
|
9285
10277
|
...style,
|
|
9286
10278
|
...layoutStyles
|
|
9287
10279
|
};
|
|
9288
|
-
const classNameCombined = cx(styles["calendar"], className);
|
|
10280
|
+
const classNameCombined = cx(styles$1["calendar"], className);
|
|
9289
10281
|
const { nDate, nDefaultDate, nToday } = useMemo(
|
|
9290
10282
|
() => ({
|
|
9291
10283
|
nDate: iValue ? typeof iValue === "string" ? normalizeDate(iValue, defaultTimeZone) : {
|
|
@@ -9463,6 +10455,7 @@ const CalendarElement = forwardRef(
|
|
|
9463
10455
|
}, []);
|
|
9464
10456
|
const handleMonthSelection = useCallback(
|
|
9465
10457
|
(month) => {
|
|
10458
|
+
monthButtonRef.current?.focus();
|
|
9466
10459
|
setSelectedMonth(month);
|
|
9467
10460
|
setFocusedDate(
|
|
9468
10461
|
DateTime.fromObject({
|
|
@@ -9477,6 +10470,8 @@ const CalendarElement = forwardRef(
|
|
|
9477
10470
|
);
|
|
9478
10471
|
const handleYearSelection = useCallback(
|
|
9479
10472
|
(year) => {
|
|
10473
|
+
if (year === null) return;
|
|
10474
|
+
yearButtonRef.current?.focus();
|
|
9480
10475
|
setSelectedYear(year);
|
|
9481
10476
|
setFocusedDate(
|
|
9482
10477
|
DateTime.fromObject({
|
|
@@ -9487,7 +10482,7 @@ const CalendarElement = forwardRef(
|
|
|
9487
10482
|
);
|
|
9488
10483
|
setCalendarSelectionState("day");
|
|
9489
10484
|
},
|
|
9490
|
-
[focusedDate]
|
|
10485
|
+
[defaultTimeZone, focusedDate?.month]
|
|
9491
10486
|
);
|
|
9492
10487
|
return /* @__PURE__ */ jsx(CalendarContext.Provider, { value: providerValue, children: /* @__PURE__ */ jsxs(
|
|
9493
10488
|
"div",
|
|
@@ -9499,17 +10494,18 @@ const CalendarElement = forwardRef(
|
|
|
9499
10494
|
"data-anv": "calendar",
|
|
9500
10495
|
...remainingProps,
|
|
9501
10496
|
children: [
|
|
9502
|
-
/* @__PURE__ */ jsx("div", { className: styles["header"], children: /* @__PURE__ */ jsxs(
|
|
10497
|
+
/* @__PURE__ */ jsx("div", { className: styles$1["header"], children: /* @__PURE__ */ jsxs(
|
|
9503
10498
|
"span",
|
|
9504
10499
|
{
|
|
9505
10500
|
"aria-label": "Calendar navigation",
|
|
9506
10501
|
role: "toolbar",
|
|
9507
10502
|
onKeyDown: handleHeaderKeyDown,
|
|
9508
|
-
className: styles["controller"],
|
|
10503
|
+
className: styles$1["controller"],
|
|
9509
10504
|
children: [
|
|
9510
10505
|
/* @__PURE__ */ jsx(
|
|
9511
10506
|
CalendarMonthButton,
|
|
9512
10507
|
{
|
|
10508
|
+
ref: monthButtonRef,
|
|
9513
10509
|
"data-calendar-header-button": true,
|
|
9514
10510
|
calendarSelectionState,
|
|
9515
10511
|
onClick: () => setCalendarSelectionState(
|
|
@@ -9520,6 +10516,7 @@ const CalendarElement = forwardRef(
|
|
|
9520
10516
|
/* @__PURE__ */ jsx(
|
|
9521
10517
|
CalendarYearButton,
|
|
9522
10518
|
{
|
|
10519
|
+
ref: yearButtonRef,
|
|
9523
10520
|
tabIndex: -1,
|
|
9524
10521
|
"data-calendar-header-button": true,
|
|
9525
10522
|
calendarSelectionState,
|
|
@@ -9538,7 +10535,17 @@ const CalendarElement = forwardRef(
|
|
|
9538
10535
|
) }),
|
|
9539
10536
|
calendarSelectionState === "day" && /* @__PURE__ */ jsx(CalendarMonth, {}),
|
|
9540
10537
|
calendarSelectionState === "month" && /* @__PURE__ */ jsx(CalendarMonthSelection, { onMonthSelection: handleMonthSelection }),
|
|
9541
|
-
calendarSelectionState === "year" &&
|
|
10538
|
+
calendarSelectionState === "year" && // Wrapper div provides some manual offsetting to account for internal padding of the year selector
|
|
10539
|
+
/* @__PURE__ */ jsx("div", { className: styles$1["year-selector"], children: /* @__PURE__ */ jsx(
|
|
10540
|
+
YearSelector,
|
|
10541
|
+
{
|
|
10542
|
+
onConfirm: handleYearSelection,
|
|
10543
|
+
required: true,
|
|
10544
|
+
defaultValue: selectedYear,
|
|
10545
|
+
min: normalizedMinDate?.year,
|
|
10546
|
+
max: normalizedMaxDate?.year
|
|
10547
|
+
}
|
|
10548
|
+
) })
|
|
9542
10549
|
]
|
|
9543
10550
|
}
|
|
9544
10551
|
) });
|
|
@@ -9628,4 +10635,4 @@ const Calendar = Object.assign(CalendarElement, {
|
|
|
9628
10635
|
});
|
|
9629
10636
|
|
|
9630
10637
|
export { Calendar as C, DateTime as D, CalendarNow as a, CalendarYearButton as b, CalendarPrev as c, CalendarNext as d, CalendarMonthButton as e, CalendarMonth as f, isValidDate as i, toDateString as t };
|
|
9631
|
-
//# sourceMappingURL=Calendar-
|
|
10638
|
+
//# sourceMappingURL=Calendar-BQ5F2ENO.js.map
|