@helsenorge/datepicker 10.0.2 → 10.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../node_modules/react-day-picker/dist/esm/UI.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js","../../../../../node_modules/react-day-picker/dist/esm/classes/DateLib.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js","../../../../../node_modules/react-day-picker/dist/esm/components/Button.js","../../../../../node_modules/react-day-picker/dist/esm/components/CaptionLabel.js","../../../../../node_modules/react-day-picker/dist/esm/components/Chevron.js","../../../../../node_modules/react-day-picker/dist/esm/components/Day.js","../../../../../node_modules/react-day-picker/dist/esm/components/DayButton.js","../../../../../node_modules/react-day-picker/dist/esm/components/Dropdown.js","../../../../../node_modules/react-day-picker/dist/esm/components/DropdownNav.js","../../../../../node_modules/react-day-picker/dist/esm/components/Footer.js","../../../../../node_modules/react-day-picker/dist/esm/components/Month.js","../../../../../node_modules/react-day-picker/dist/esm/components/MonthCaption.js","../../../../../node_modules/react-day-picker/dist/esm/components/MonthGrid.js","../../../../../node_modules/react-day-picker/dist/esm/components/Months.js","../../../../../node_modules/react-day-picker/dist/esm/useDayPicker.js","../../../../../node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/components/Nav.js","../../../../../node_modules/react-day-picker/dist/esm/components/NextMonthButton.js","../../../../../node_modules/react-day-picker/dist/esm/components/Option.js","../../../../../node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js","../../../../../node_modules/react-day-picker/dist/esm/components/Root.js","../../../../../node_modules/react-day-picker/dist/esm/components/Select.js","../../../../../node_modules/react-day-picker/dist/esm/components/Week.js","../../../../../node_modules/react-day-picker/dist/esm/components/Weekday.js","../../../../../node_modules/react-day-picker/dist/esm/components/Weekdays.js","../../../../../node_modules/react-day-picker/dist/esm/components/WeekNumber.js","../../../../../node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js","../../../../../node_modules/react-day-picker/dist/esm/components/Weeks.js","../../../../../node_modules/react-day-picker/dist/esm/components/YearsDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getComponents.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatCaption.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatDay.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getFormatters.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js","../../../../../node_modules/@date-fns/tz/tzOffset/index.js","../../../../../node_modules/@date-fns/tz/date/mini.js","../../../../../node_modules/@date-fns/tz/date/index.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelGrid.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelGridcell.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelDayButton.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelNav.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelNext.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelPrevious.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelWeekday.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getDates.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getDays.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js","../../../../../node_modules/react-day-picker/dist/esm/classes/CalendarDay.js","../../../../../node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js","../../../../../node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getMonths.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getWeeks.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js","../../../../../node_modules/react-day-picker/dist/esm/useCalendar.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js","../../../../../node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js","../../../../../node_modules/react-day-picker/dist/esm/utils/typeguards.js","../../../../../node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js","../../../../../node_modules/react-day-picker/dist/esm/useFocus.js","../../../../../node_modules/react-day-picker/dist/esm/useGetModifiers.js","../../../../../node_modules/react-day-picker/dist/esm/selection/useMulti.js","../../../../../node_modules/react-day-picker/dist/esm/utils/addToRange.js","../../../../../node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js","../../../../../node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js","../../../../../node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js","../../../../../node_modules/react-day-picker/dist/esm/selection/useRange.js","../../../../../node_modules/react-day-picker/dist/esm/selection/useSingle.js","../../../../../node_modules/react-day-picker/dist/esm/useSelection.js","../../../../../node_modules/react-day-picker/dist/esm/DayPicker.js","../../../src/components/DatePicker/position-utils.ts","../../../src/components/DatePicker/DatePickerPopup.tsx","../../../src/components/DatePicker/DatePicker.tsx","../../../src/components/DatePicker/DateTime.tsx","../../../src/components/DatePicker/DateTimePickerWrapper.tsx","../../../src/components/DatePicker/validate-utils.ts"],"sourcesContent":["/**\n * The UI elements composing DayPicker. These elements are mapped to\n * {@link CustomComponents}, the {@link ClassNames} and the {@link Styles} used by\n * DayPicker.\n *\n * Some of these elements are extended by flags and modifiers.\n */\nexport var UI;\n(function (UI) {\n /** The root component displaying the months and the navigation bar. */\n UI[\"Root\"] = \"root\";\n /** The Chevron SVG element used by navigation buttons and dropdowns. */\n UI[\"Chevron\"] = \"chevron\";\n /**\n * The grid cell with the day's date. Extended by {@link DayFlag} and\n * {@link SelectionFlag}.\n */\n UI[\"Day\"] = \"day\";\n /** The button containing the formatted day's date, inside the grid cell. */\n UI[\"DayButton\"] = \"day_button\";\n /** The caption label of the month (when not showing the dropdown navigation). */\n UI[\"CaptionLabel\"] = \"caption_label\";\n /** The container of the dropdown navigation (when enabled). */\n UI[\"Dropdowns\"] = \"dropdowns\";\n /** The dropdown element to select for years and months. */\n UI[\"Dropdown\"] = \"dropdown\";\n /** The container element of the dropdown. */\n UI[\"DropdownRoot\"] = \"dropdown_root\";\n /** The root element of the footer. */\n UI[\"Footer\"] = \"footer\";\n /** The month grid. */\n UI[\"MonthGrid\"] = \"month_grid\";\n /** Contains the dropdown navigation or the caption label. */\n UI[\"MonthCaption\"] = \"month_caption\";\n /** The dropdown with the months. */\n UI[\"MonthsDropdown\"] = \"months_dropdown\";\n /** Wrapper of the month grid. */\n UI[\"Month\"] = \"month\";\n /** The container of the displayed months. */\n UI[\"Months\"] = \"months\";\n /** The navigation bar with the previous and next buttons. */\n UI[\"Nav\"] = \"nav\";\n /**\n * The next month button in the navigation. *\n *\n * @since 9.1.0\n */\n UI[\"NextMonthButton\"] = \"button_next\";\n /**\n * The previous month button in the navigation.\n *\n * @since 9.1.0\n */\n UI[\"PreviousMonthButton\"] = \"button_previous\";\n /** The row containing the week. */\n UI[\"Week\"] = \"week\";\n /** The group of row weeks in a month (`tbody`). */\n UI[\"Weeks\"] = \"weeks\";\n /** The column header with the weekday. */\n UI[\"Weekday\"] = \"weekday\";\n /** The row grouping the weekdays in the column headers. */\n UI[\"Weekdays\"] = \"weekdays\";\n /** The cell containing the week number. */\n UI[\"WeekNumber\"] = \"week_number\";\n /** The cell header of the week numbers column. */\n UI[\"WeekNumberHeader\"] = \"week_number_header\";\n /** The dropdown with the years. */\n UI[\"YearsDropdown\"] = \"years_dropdown\";\n})(UI || (UI = {}));\n/** The flags for the {@link UI.Day}. */\nexport var DayFlag;\n(function (DayFlag) {\n /** The day is disabled. */\n DayFlag[\"disabled\"] = \"disabled\";\n /** The day is hidden. */\n DayFlag[\"hidden\"] = \"hidden\";\n /** The day is outside the current month. */\n DayFlag[\"outside\"] = \"outside\";\n /** The day is focused. */\n DayFlag[\"focused\"] = \"focused\";\n /** The day is today. */\n DayFlag[\"today\"] = \"today\";\n})(DayFlag || (DayFlag = {}));\n/**\n * The state that can be applied to the {@link UI.Day} element when in selection\n * mode.\n */\nexport var SelectionState;\n(function (SelectionState) {\n /** The day is at the end of a selected range. */\n SelectionState[\"range_end\"] = \"range_end\";\n /** The day is at the middle of a selected range. */\n SelectionState[\"range_middle\"] = \"range_middle\";\n /** The day is at the start of a selected range. */\n SelectionState[\"range_start\"] = \"range_start\";\n /** The day is selected. */\n SelectionState[\"selected\"] = \"selected\";\n})(SelectionState || (SelectionState = {}));\n//# sourceMappingURL=UI.js.map","const FIVE_WEEKS = 5;\nconst FOUR_WEEKS = 4;\n/**\n * Return the number of weeks to display in the broadcast calendar.\n *\n * @since 9.4.0\n */\nexport function getBroadcastWeeksInMonth(month, dateLib) {\n // Get the first day of the month\n const firstDayOfMonth = dateLib.startOfMonth(month);\n // Get the day of the week for the first day of the month (1-7, where 1 is Monday)\n const firstDayOfWeek = firstDayOfMonth.getDay() > 0 ? firstDayOfMonth.getDay() : 7;\n const broadcastStartDate = dateLib.addDays(month, -firstDayOfWeek + 1);\n const lastDateOfLastWeek = dateLib.addDays(broadcastStartDate, FIVE_WEEKS * 7 - 1);\n const numberOfWeeks = month.getMonth() === lastDateOfLastWeek.getMonth()\n ? FIVE_WEEKS\n : FOUR_WEEKS;\n return numberOfWeeks;\n}\n//# sourceMappingURL=getBroadcastWeeksInMonth.js.map","/**\n * Return the start date of the week in the broadcast calendar.\n *\n * @since 9.4.0\n */\nexport function startOfBroadcastWeek(date, dateLib) {\n const firstOfMonth = dateLib.startOfMonth(date);\n const dayOfWeek = firstOfMonth.getDay();\n if (dayOfWeek === 1) {\n return firstOfMonth;\n }\n else if (dayOfWeek === 0) {\n return dateLib.addDays(firstOfMonth, -1 * 6);\n }\n else {\n return dateLib.addDays(firstOfMonth, -1 * (dayOfWeek - 1));\n }\n}\n//# sourceMappingURL=startOfBroadcastWeek.js.map","import { getBroadcastWeeksInMonth } from \"./getBroadcastWeeksInMonth.js\";\nimport { startOfBroadcastWeek } from \"./startOfBroadcastWeek.js\";\n/**\n * Return the end date of the week in the broadcast calendar.\n *\n * @since 9.4.0\n */\nexport function endOfBroadcastWeek(date, dateLib) {\n const startDate = startOfBroadcastWeek(date, dateLib);\n const numberOfWeeks = getBroadcastWeeksInMonth(date, dateLib);\n const endDate = dateLib.addDays(startDate, numberOfWeeks * 7 - 1);\n return endDate;\n}\n//# sourceMappingURL=endOfBroadcastWeek.js.map","import { addDays, addMonths, addWeeks, addYears, differenceInCalendarDays, differenceInCalendarMonths, endOfISOWeek, endOfMonth, endOfWeek, endOfYear, format, getISOWeek, getWeek, isAfter, isBefore, isDate, isSameDay, isSameMonth, isSameYear, max, min, setMonth, setYear, startOfDay, startOfISOWeek, startOfMonth, startOfWeek, startOfYear } from \"date-fns\";\nimport { enUS } from \"date-fns/locale\";\nimport { endOfBroadcastWeek } from \"../helpers/endOfBroadcastWeek.js\";\nimport { startOfBroadcastWeek } from \"../helpers/startOfBroadcastWeek.js\";\n/**\n * A wrapper class around [date-fns](http://date-fns.org) sharing the same\n * options. Methods of this class can be overridden using the\n * {@link PropsBase.dateLib} prop.\n *\n * @since 9.2.0\n * @example\n * const dateLib = new DateLib({ locale: es });\n * const newDate = dateLib.addDays(new Date(), 5);\n */\nexport class DateLib {\n /**\n * Creates an instance of DateLib.\n *\n * @param options The options for the date library.\n * @param overrides Overrides for the date library functions.\n */\n constructor(options, overrides) {\n /** Reference to the built-in Date constructor. */\n this.Date = Date;\n /**\n * Adds the specified number of days to the given date.\n *\n * @param date The date to add days to.\n * @param amount The number of days to add.\n * @returns The new date with the days added.\n */\n this.addDays = (date, amount) => {\n return this.overrides?.addDays\n ? this.overrides.addDays(date, amount)\n : addDays(date, amount);\n };\n /**\n * Adds the specified number of months to the given date.\n *\n * @param date The date to add months to.\n * @param amount The number of months to add.\n * @returns The new date with the months added.\n */\n this.addMonths = (date, amount) => {\n return this.overrides?.addMonths\n ? this.overrides.addMonths(date, amount)\n : addMonths(date, amount);\n };\n /**\n * Adds the specified number of weeks to the given date.\n *\n * @param date The date to add weeks to.\n * @param amount The number of weeks to add.\n * @returns The new date with the weeks added.\n */\n this.addWeeks = (date, amount) => {\n return this.overrides?.addWeeks\n ? this.overrides.addWeeks(date, amount)\n : addWeeks(date, amount);\n };\n /**\n * Adds the specified number of years to the given date.\n *\n * @param date The date to add years to.\n * @param amount The number of years to add.\n * @returns The new date with the years added.\n */\n this.addYears = (date, amount) => {\n return this.overrides?.addYears\n ? this.overrides.addYears(date, amount)\n : addYears(date, amount);\n };\n /**\n * Returns the number of calendar days between the given dates.\n *\n * @param dateLeft The later date.\n * @param dateRight The earlier date.\n * @returns The number of calendar days between the dates.\n */\n this.differenceInCalendarDays = (dateLeft, dateRight) => {\n return this.overrides?.differenceInCalendarDays\n ? this.overrides.differenceInCalendarDays(dateLeft, dateRight)\n : differenceInCalendarDays(dateLeft, dateRight);\n };\n /**\n * Returns the number of calendar months between the given dates.\n *\n * @param dateLeft The later date.\n * @param dateRight The earlier date.\n * @returns The number of calendar months between the dates.\n */\n this.differenceInCalendarMonths = (dateLeft, dateRight) => {\n return this.overrides?.differenceInCalendarMonths\n ? this.overrides.differenceInCalendarMonths(dateLeft, dateRight)\n : differenceInCalendarMonths(dateLeft, dateRight);\n };\n /**\n * Returns the end of the broadcast week for the given date.\n *\n * @param date The original date.\n * @returns The end of the broadcast week.\n */\n this.endOfBroadcastWeek = (date) => {\n return this.overrides?.endOfBroadcastWeek\n ? this.overrides.endOfBroadcastWeek(date, this)\n : endOfBroadcastWeek(date, this);\n };\n /**\n * Returns the end of the ISO week for the given date.\n *\n * @param date The original date.\n * @returns The end of the ISO week.\n */\n this.endOfISOWeek = (date) => {\n return this.overrides?.endOfISOWeek\n ? this.overrides.endOfISOWeek(date)\n : endOfISOWeek(date);\n };\n /**\n * Returns the end of the month for the given date.\n *\n * @param date The original date.\n * @returns The end of the month.\n */\n this.endOfMonth = (date) => {\n return this.overrides?.endOfMonth\n ? this.overrides.endOfMonth(date)\n : endOfMonth(date);\n };\n /**\n * Returns the end of the week for the given date.\n *\n * @param date The original date.\n * @returns The end of the week.\n */\n this.endOfWeek = (date) => {\n return this.overrides?.endOfWeek\n ? this.overrides.endOfWeek(date, this.options)\n : endOfWeek(date, this.options);\n };\n /**\n * Returns the end of the year for the given date.\n *\n * @param date The original date.\n * @returns The end of the year.\n */\n this.endOfYear = (date) => {\n return this.overrides?.endOfYear\n ? this.overrides.endOfYear(date)\n : endOfYear(date);\n };\n /**\n * Formats the given date using the specified format string.\n *\n * @param date The date to format.\n * @param formatStr The format string.\n * @returns The formatted date string.\n */\n this.format = (date, formatStr) => {\n return this.overrides?.format\n ? this.overrides.format(date, formatStr, this.options)\n : format(date, formatStr, this.options);\n };\n /**\n * Returns the ISO week number for the given date.\n *\n * @param date The date to get the ISO week number for.\n * @returns The ISO week number.\n */\n this.getISOWeek = (date) => {\n return this.overrides?.getISOWeek\n ? this.overrides.getISOWeek(date)\n : getISOWeek(date);\n };\n /**\n * Returns the local week number for the given date.\n *\n * @param date The date to get the week number for.\n * @returns The week number.\n */\n this.getWeek = (date) => {\n return this.overrides?.getWeek\n ? this.overrides.getWeek(date, this.options)\n : getWeek(date, this.options);\n };\n /**\n * Checks if the first date is after the second date.\n *\n * @param date The date to compare.\n * @param dateToCompare The date to compare with.\n * @returns True if the first date is after the second date.\n */\n this.isAfter = (date, dateToCompare) => {\n return this.overrides?.isAfter\n ? this.overrides.isAfter(date, dateToCompare)\n : isAfter(date, dateToCompare);\n };\n /**\n * Checks if the first date is before the second date.\n *\n * @param date The date to compare.\n * @param dateToCompare The date to compare with.\n * @returns True if the first date is before the second date.\n */\n this.isBefore = (date, dateToCompare) => {\n return this.overrides?.isBefore\n ? this.overrides.isBefore(date, dateToCompare)\n : isBefore(date, dateToCompare);\n };\n /**\n * Checks if the given value is a Date object.\n *\n * @param value The value to check.\n * @returns True if the value is a Date object.\n */\n this.isDate = (value) => {\n return this.overrides?.isDate\n ? this.overrides.isDate(value)\n : isDate(value);\n };\n /**\n * Checks if the given dates are on the same day.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are on the same day.\n */\n this.isSameDay = (dateLeft, dateRight) => {\n return this.overrides?.isSameDay\n ? this.overrides.isSameDay(dateLeft, dateRight)\n : isSameDay(dateLeft, dateRight);\n };\n /**\n * Checks if the given dates are in the same month.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are in the same month.\n */\n this.isSameMonth = (dateLeft, dateRight) => {\n return this.overrides?.isSameMonth\n ? this.overrides.isSameMonth(dateLeft, dateRight)\n : isSameMonth(dateLeft, dateRight);\n };\n /**\n * Checks if the given dates are in the same year.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are in the same year.\n */\n this.isSameYear = (dateLeft, dateRight) => {\n return this.overrides?.isSameYear\n ? this.overrides.isSameYear(dateLeft, dateRight)\n : isSameYear(dateLeft, dateRight);\n };\n /**\n * Returns the latest date in the given array of dates.\n *\n * @param dates The array of dates to compare.\n * @returns The latest date.\n */\n this.max = (dates) => {\n return this.overrides?.max ? this.overrides.max(dates) : max(dates);\n };\n /**\n * Returns the earliest date in the given array of dates.\n *\n * @param dates The array of dates to compare.\n * @returns The earliest date.\n */\n this.min = (dates) => {\n return this.overrides?.min ? this.overrides.min(dates) : min(dates);\n };\n /**\n * Sets the month of the given date.\n *\n * @param date The date to set the month on.\n * @param month The month to set (0-11).\n * @returns The new date with the month set.\n */\n this.setMonth = (date, month) => {\n return this.overrides?.setMonth\n ? this.overrides.setMonth(date, month)\n : setMonth(date, month);\n };\n /**\n * Sets the year of the given date.\n *\n * @param date The date to set the year on.\n * @param year The year to set.\n * @returns The new date with the year set.\n */\n this.setYear = (date, year) => {\n return this.overrides?.setYear\n ? this.overrides.setYear(date, year)\n : setYear(date, year);\n };\n /**\n * Returns the start of the broadcast week for the given date.\n *\n * @param date The original date.\n * @returns The start of the broadcast week.\n */\n this.startOfBroadcastWeek = (date) => {\n return this.overrides?.startOfBroadcastWeek\n ? this.overrides.startOfBroadcastWeek(date, this)\n : startOfBroadcastWeek(date, this);\n };\n /**\n * Returns the start of the day for the given date.\n *\n * @param date The original date.\n * @returns The start of the day.\n */\n this.startOfDay = (date) => {\n return this.overrides?.startOfDay\n ? this.overrides.startOfDay(date)\n : startOfDay(date);\n };\n /**\n * Returns the start of the ISO week for the given date.\n *\n * @param date The original date.\n * @returns The start of the ISO week.\n */\n this.startOfISOWeek = (date) => {\n return this.overrides?.startOfISOWeek\n ? this.overrides.startOfISOWeek(date)\n : startOfISOWeek(date);\n };\n /**\n * Returns the start of the month for the given date.\n *\n * @param date The original date.\n * @returns The start of the month.\n */\n this.startOfMonth = (date) => {\n return this.overrides?.startOfMonth\n ? this.overrides.startOfMonth(date)\n : startOfMonth(date);\n };\n /**\n * Returns the start of the week for the given date.\n *\n * @param date The original date.\n * @returns The start of the week.\n */\n this.startOfWeek = (date) => {\n return this.overrides?.startOfWeek\n ? this.overrides.startOfWeek(date, this.options)\n : startOfWeek(date, this.options);\n };\n /**\n * Returns the start of the year for the given date.\n *\n * @param date The original date.\n * @returns The start of the year.\n */\n this.startOfYear = (date) => {\n return this.overrides?.startOfYear\n ? this.overrides.startOfYear(date)\n : startOfYear(date);\n };\n this.options = { locale: enUS, ...options };\n this.overrides = overrides;\n }\n}\n/** The default locale (English). */\nexport { enUS as defaultLocale } from \"date-fns/locale/en-US\";\n/**\n * The default date library with English locale.\n *\n * @since 9.2.0\n */\nexport const defaultDateLib = new DateLib();\n/** @deprecated Use `defaultDateLib`. */\nexport const dateLib = defaultDateLib;\n//# sourceMappingURL=DateLib.js.map","import { DayFlag, SelectionState, UI } from \"../UI.js\";\nexport function getClassNamesForModifiers(modifiers, classNames, modifiersClassNames = {}) {\n const modifierClassNames = Object.entries(modifiers)\n .filter(([, active]) => active === true)\n .reduce((previousValue, [key]) => {\n if (modifiersClassNames[key]) {\n previousValue.push(modifiersClassNames[key]);\n }\n else if (classNames[DayFlag[key]]) {\n previousValue.push(classNames[DayFlag[key]]);\n }\n else if (classNames[SelectionState[key]]) {\n previousValue.push(classNames[SelectionState[key]]);\n }\n return previousValue;\n }, [classNames[UI.Day]]);\n return modifierClassNames;\n}\n//# sourceMappingURL=getClassNamesForModifiers.js.map","import React from \"react\";\n/**\n * Render the button elements in the calendar.\n *\n * @private\n * @deprecated Use `PreviousMonthButton` or `@link NextMonthButton` instead.\n */\nexport function Button(props) {\n return React.createElement(\"button\", { ...props });\n}\n//# sourceMappingURL=Button.js.map","import React from \"react\";\n/**\n * Render the label in the month caption.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function CaptionLabel(props) {\n return React.createElement(\"span\", { ...props });\n}\n//# sourceMappingURL=CaptionLabel.js.map","import React from \"react\";\n/**\n * Render the chevron icon used in the navigation buttons and dropdowns.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Chevron(props) {\n const { size = 24, orientation = \"left\", className } = props;\n return (React.createElement(\"svg\", { className: className, width: size, height: size, viewBox: \"0 0 24 24\" },\n orientation === \"up\" && (React.createElement(\"polygon\", { points: \"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28\" })),\n orientation === \"down\" && (React.createElement(\"polygon\", { points: \"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72\" })),\n orientation === \"left\" && (React.createElement(\"polygon\", { points: \"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20\" })),\n orientation === \"right\" && (React.createElement(\"polygon\", { points: \"8 18.612 14.1888889 12.5 8 6.37733333 9.91111111 4.5 18 12.5 9.91111111 20.5\" }))));\n}\n//# sourceMappingURL=Chevron.js.map","import React from \"react\";\n/**\n * Render the gridcell of a day in the calendar and handle the interaction and\n * the focus with they day.\n *\n * If you need to just change the content of the day cell, consider swapping the\n * `DayDate` component instead.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Day(props) {\n const { day, modifiers, ...tdProps } = props;\n return React.createElement(\"td\", { ...tdProps });\n}\n//# sourceMappingURL=Day.js.map","import React from \"react\";\n/**\n * Render the button for a day in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function DayButton(props) {\n const { day, modifiers, ...buttonProps } = props;\n const ref = React.useRef(null);\n React.useEffect(() => {\n if (modifiers.focused)\n ref.current?.focus();\n }, [modifiers.focused]);\n return React.createElement(\"button\", { ref: ref, ...buttonProps });\n}\n//# sourceMappingURL=DayButton.js.map","import React from \"react\";\nimport { UI } from \"../UI.js\";\n/**\n * Render a dropdown component to use in the navigation bar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Dropdown(props) {\n const { options, className, components, classNames, ...selectProps } = props;\n const cssClassSelect = [classNames[UI.Dropdown], className].join(\" \");\n const selectedOption = options?.find(({ value }) => value === selectProps.value);\n return (React.createElement(\"span\", { \"data-disabled\": selectProps.disabled, className: classNames[UI.DropdownRoot] },\n React.createElement(components.Select, { className: cssClassSelect, ...selectProps }, options?.map(({ value, label, disabled }) => (React.createElement(components.Option, { key: value, value: value, disabled: disabled }, label)))),\n React.createElement(\"span\", { className: classNames[UI.CaptionLabel], \"aria-hidden\": true },\n selectedOption?.label,\n React.createElement(components.Chevron, { orientation: \"down\", size: 18, className: classNames[UI.Chevron] }))));\n}\n//# sourceMappingURL=Dropdown.js.map","import React from \"react\";\n/**\n * Render the the navigation dropdowns.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function DropdownNav(props) {\n return React.createElement(\"div\", { ...props });\n}\n//# sourceMappingURL=DropdownNav.js.map","import React from \"react\";\n/**\n * Component wrapping the footer.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Footer(props) {\n return React.createElement(\"div\", { ...props });\n}\n//# sourceMappingURL=Footer.js.map","import React from \"react\";\n/**\n * Render the grid with the weekday header row and the weeks for the given\n * month.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Month(props) {\n const { calendarMonth, displayIndex, ...divProps } = props;\n return React.createElement(\"div\", { ...divProps }, props.children);\n}\n//# sourceMappingURL=Month.js.map","import React from \"react\";\n/**\n * Render the caption of a month in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthCaption(props) {\n const { calendarMonth, displayIndex, ...divProps } = props;\n return React.createElement(\"div\", { ...divProps });\n}\n//# sourceMappingURL=MonthCaption.js.map","import React from \"react\";\n/**\n * Render the grid of days in a month.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthGrid(props) {\n return React.createElement(\"table\", { ...props });\n}\n//# sourceMappingURL=MonthGrid.js.map","import React from \"react\";\n/**\n * Component wrapping the month grids.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Months(props) {\n return React.createElement(\"div\", { ...props });\n}\n//# sourceMappingURL=Months.js.map","import { createContext, useContext } from \"react\";\n/** @ignore */\nexport const dayPickerContext = createContext(undefined);\n/**\n * Returns the context to work with `<DayPicker />` inside custom components.\n *\n * This hook provides access to the DayPicker context, which includes various\n * properties and methods to interact with the DayPicker component. It must be\n * used within a custom component.\n *\n * @template T - Use this type to refine the returned context type with a\n * specific selection mode.\n * @returns {DayPickerContext<T>} The context to work with DayPicker.\n * @throws {Error} If the hook is used outside of a DayPicker provider.\n * @group Hooks\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function useDayPicker() {\n const context = useContext(dayPickerContext);\n if (context === undefined) {\n throw new Error(\"useDayPicker() must be used within a custom component.\");\n }\n return context;\n}\n//# sourceMappingURL=useDayPicker.js.map","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the dropdown to navigate between months.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthsDropdown(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Dropdown, { ...props });\n}\n//# sourceMappingURL=MonthsDropdown.js.map","import React from \"react\";\nimport { UI } from \"../UI.js\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the toolbar with the navigation button.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Nav(props) {\n const { onPreviousClick, onNextClick, previousMonth, nextMonth, ...navProps } = props;\n const { components, classNames, labels: { labelPrevious, labelNext } } = useDayPicker();\n return (React.createElement(\"nav\", { ...navProps },\n React.createElement(components.PreviousMonthButton, { type: \"button\", className: classNames[UI.PreviousMonthButton], tabIndex: previousMonth ? undefined : -1, disabled: previousMonth ? undefined : true, \"aria-label\": labelPrevious(previousMonth), onClick: props.onPreviousClick },\n React.createElement(components.Chevron, { disabled: previousMonth ? undefined : true, className: classNames[UI.Chevron], orientation: \"left\" })),\n React.createElement(components.NextMonthButton, { type: \"button\", className: classNames[UI.NextMonthButton], tabIndex: nextMonth ? undefined : -1, disabled: nextMonth ? undefined : true, \"aria-label\": labelNext(nextMonth), onClick: props.onNextClick },\n React.createElement(components.Chevron, { disabled: nextMonth ? undefined : true, orientation: \"right\", className: classNames[UI.Chevron] }))));\n}\n//# sourceMappingURL=Nav.js.map","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the next month button element in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function NextMonthButton(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Button, { ...props });\n}\n//# sourceMappingURL=NextMonthButton.js.map","import React from \"react\";\n/**\n * Render the `option` element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Option(props) {\n return React.createElement(\"option\", { ...props });\n}\n//# sourceMappingURL=Option.js.map","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the previous month button element in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function PreviousMonthButton(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Button, { ...props });\n}\n//# sourceMappingURL=PreviousMonthButton.js.map","import React from \"react\";\n/**\n * Render the root element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Root(props) {\n return React.createElement(\"div\", { ...props });\n}\n//# sourceMappingURL=Root.js.map","import React from \"react\";\n/**\n * Render the `select` element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Select(props) {\n return React.createElement(\"select\", { ...props });\n}\n//# sourceMappingURL=Select.js.map","import React from \"react\";\n/**\n * Render a row in the calendar, with the days and the week number.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Week(props) {\n const { week, ...trProps } = props;\n return React.createElement(\"tr\", { ...trProps });\n}\n//# sourceMappingURL=Week.js.map","import React from \"react\";\n/**\n * Render the column header with the weekday name (e.g. \"Mo\", \"Tu\", etc.).\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weekday(props) {\n return React.createElement(\"th\", { ...props });\n}\n//# sourceMappingURL=Weekday.js.map","import React from \"react\";\n/**\n * Render the row with the weekday names.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weekdays(props) {\n return (React.createElement(\"thead\", { \"aria-hidden\": true },\n React.createElement(\"tr\", { ...props })));\n}\n//# sourceMappingURL=Weekdays.js.map","import React from \"react\";\n/**\n * Render the cell with the number of the week.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function WeekNumber(props) {\n const { week, ...thProps } = props;\n return React.createElement(\"th\", { ...thProps });\n}\n//# sourceMappingURL=WeekNumber.js.map","import React from \"react\";\n/**\n * Render the column header for the week numbers.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function WeekNumberHeader(props) {\n return React.createElement(\"th\", { ...props });\n}\n//# sourceMappingURL=WeekNumberHeader.js.map","import React from \"react\";\n/**\n * Render the weeks in the month grid.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weeks(props) {\n return React.createElement(\"tbody\", { ...props });\n}\n//# sourceMappingURL=Weeks.js.map","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the dropdown to navigate between years.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function YearsDropdown(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Dropdown, { ...props });\n}\n//# sourceMappingURL=YearsDropdown.js.map","import * as components from \"../components/custom-components.js\";\nexport function getComponents(customComponents) {\n return {\n ...components,\n ...customComponents\n };\n}\n//# sourceMappingURL=getComponents.js.map","/** Return the `data-` attributes from the props. */\nexport function getDataAttributes(props) {\n const dataAttributes = {\n \"data-mode\": props.mode ?? undefined,\n \"data-required\": \"required\" in props ? props.required : undefined,\n \"data-multiple-months\": (props.numberOfMonths && props.numberOfMonths > 1) || undefined,\n \"data-week-numbers\": props.showWeekNumber || undefined,\n \"data-broadcast-calendar\": props.broadcastCalendar || undefined\n };\n Object.entries(props).forEach(([key, val]) => {\n if (key.startsWith(\"data-\")) {\n dataAttributes[key] = val;\n }\n });\n return dataAttributes;\n}\n//# sourceMappingURL=getDataAttributes.js.map","import { UI, DayFlag, SelectionState } from \"../UI.js\";\n/**\n * Get the default class names for the UI elements.\n *\n * @group Utilities\n */\nexport function getDefaultClassNames() {\n const classNames = {};\n for (const key in UI) {\n classNames[UI[key]] =\n `rdp-${UI[key]}`;\n }\n for (const key in DayFlag) {\n classNames[DayFlag[key]] =\n `rdp-${DayFlag[key]}`;\n }\n for (const key in SelectionState) {\n classNames[SelectionState[key]] =\n `rdp-${SelectionState[key]}`;\n }\n return classNames;\n}\n//# sourceMappingURL=getDefaultClassNames.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Format the caption of the month.\n *\n * @defaultValue `LLLL y` (e.g. \"November 2022\")\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatCaption(month, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(month, \"LLLL y\");\n}\n/**\n * @private\n * @deprecated Use {@link formatCaption} instead.\n * @group Formatters\n */\nexport const formatMonthCaption = formatCaption;\n//# sourceMappingURL=formatCaption.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Format the day date shown in the day cell.\n *\n * @defaultValue `d` (e.g. \"1\")\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatDay(date, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(date, \"d\");\n}\n//# sourceMappingURL=formatDay.js.map","/**\n * Format the month number for the dropdown option label.\n *\n * @defaultValue The localized month name\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatMonthDropdown(\n/** The month number to format. */\nmonthNumber, \n/** The locale to use for formatting. */\nlocale) {\n return locale.localize?.month(monthNumber);\n}\n//# sourceMappingURL=formatMonthDropdown.js.map","/**\n * Format the week number.\n *\n * @defaultValue `weekNumber.toLocaleString()` with a leading zero for single-digit numbers\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekNumber(weekNumber) {\n if (weekNumber < 10) {\n return `0${weekNumber.toLocaleString()}`;\n }\n return `${weekNumber.toLocaleString()}`;\n}\n//# sourceMappingURL=formatWeekNumber.js.map","/**\n * Format the week number header.\n *\n * @defaultValue `\"\"`\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekNumberHeader() {\n return ``;\n}\n//# sourceMappingURL=formatWeekNumberHeader.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Format the weekday name to be displayed in the weekdays header.\n *\n * @defaultValue `cccccc` (e.g. \"Mo\" for Monday)\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekdayName(weekday, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(weekday, \"cccccc\");\n}\n//# sourceMappingURL=formatWeekdayName.js.map","/**\n * Format the years for the dropdown option label.\n *\n * @defaultValue `year.toString()`\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatYearDropdown(year) {\n return year.toString();\n}\n/**\n * @private\n * @deprecated Use `formatYearDropdown` instead.\n * @group Formatters\n */\nexport const formatYearCaption = formatYearDropdown;\n//# sourceMappingURL=formatYearDropdown.js.map","import * as defaultFormatters from \"../formatters/index.js\";\n/** Return the formatters from the props merged with the default formatters. */\nexport function getFormatters(customFormatters) {\n if (customFormatters?.formatMonthCaption && !customFormatters.formatCaption) {\n customFormatters.formatCaption = customFormatters.formatMonthCaption;\n }\n if (customFormatters?.formatYearCaption &&\n !customFormatters.formatYearDropdown) {\n customFormatters.formatYearDropdown = customFormatters.formatYearCaption;\n }\n return {\n ...defaultFormatters,\n ...customFormatters\n };\n}\n//# sourceMappingURL=getFormatters.js.map","import { defaultLocale } from \"../classes/DateLib.js\";\n/** Return the months to show in the dropdown. */\nexport function getMonthOptions(displayMonth, navStart, navEnd, formatters, dateLib) {\n if (!navStart)\n return undefined;\n if (!navEnd)\n return undefined;\n const { addMonths, startOfMonth } = dateLib;\n const year = displayMonth.getFullYear();\n const months = [];\n let month = navStart;\n while (months.length < 12) {\n months.push(month.getMonth());\n month = addMonths(month, 1);\n }\n const sortedMonths = months.sort((a, b) => {\n return a - b;\n });\n const options = sortedMonths.map((value) => {\n const label = formatters.formatMonthDropdown(value, dateLib.options.locale ?? defaultLocale);\n const month = dateLib.Date\n ? new dateLib.Date(year, value)\n : new Date(year, value);\n const disabled = (navStart && month < startOfMonth(navStart)) ||\n (navEnd && month > startOfMonth(navEnd)) ||\n false;\n return { value, label, disabled };\n });\n return options;\n}\n//# sourceMappingURL=getMonthOptions.js.map","import { UI } from \"../UI.js\";\nexport function getStyleForModifiers(dayModifiers, styles = {}, modifiersStyles = {}) {\n let style = { ...styles?.[UI.Day] };\n Object.entries(dayModifiers)\n .filter(([, active]) => active === true)\n .forEach(([modifier]) => {\n style = {\n ...style,\n ...modifiersStyles?.[modifier]\n };\n });\n return style;\n}\n//# sourceMappingURL=getStyleForModifiers.js.map","const offsetFormatCache = {};\nconst offsetCache = {};\n\n/**\n * The function extracts UTC offset in minutes from the given date in specified\n * time zone.\n *\n * Unlike `Date.prototype.getTimezoneOffset`, this function returns the value\n * mirrored to the sign of the offset in the time zone. For Asia/Singapore\n * (UTC+8), `tzOffset` returns 480, while `getTimezoneOffset` returns -480.\n *\n * @param timeZone - Time zone name (IANA or UTC offset)\n * @param date - Date to check the offset for\n *\n * @returns UTC offset in minutes\n */\nexport function tzOffset(timeZone, date) {\n try {\n const format = offsetFormatCache[timeZone] ||= new Intl.DateTimeFormat(\"en-GB\", {\n timeZone,\n hour: \"numeric\",\n timeZoneName: \"longOffset\"\n }).format;\n const offsetStr = format(date).split('GMT')[1] || '';\n if (offsetStr in offsetCache) return offsetCache[offsetStr];\n return calcOffset(offsetStr, offsetStr.split(\":\"));\n } catch {\n // Fallback to manual parsing if the runtime doesn't support ±HH:MM/±HHMM/±HH\n // See: https://github.com/nodejs/node/issues/53419\n if (timeZone in offsetCache) return offsetCache[timeZone];\n const captures = timeZone?.match(offsetRe);\n if (captures) return calcOffset(timeZone, captures.slice(1));\n return NaN;\n }\n}\nconst offsetRe = /([+-]\\d\\d):?(\\d\\d)?/;\nfunction calcOffset(cacheStr, values) {\n const hours = +values[0];\n const minutes = +(values[1] || 0);\n return offsetCache[cacheStr] = hours > 0 ? hours * 60 + minutes : hours * 60 - minutes;\n}","import { tzOffset } from \"../tzOffset/index.js\";\nexport class TZDateMini extends Date {\n //#region static\n\n constructor(...args) {\n super();\n if (args.length > 1 && typeof args[args.length - 1] === \"string\") {\n this.timeZone = args.pop();\n }\n this.internal = new Date();\n if (isNaN(tzOffset(this.timeZone, this))) {\n this.setTime(NaN);\n } else {\n if (!args.length) {\n this.setTime(Date.now());\n } else if (typeof args[0] === \"number\" && (args.length === 1 || args.length === 2 && typeof args[1] !== \"number\")) {\n this.setTime(args[0]);\n } else if (typeof args[0] === \"string\") {\n this.setTime(+new Date(args[0]));\n } else if (args[0] instanceof Date) {\n this.setTime(+args[0]);\n } else {\n this.setTime(+new Date(...args));\n adjustToSystemTZ(this, NaN);\n syncToInternal(this);\n }\n }\n }\n static tz(tz, ...args) {\n return args.length ? new TZDateMini(...args, tz) : new TZDateMini(Date.now(), tz);\n }\n\n //#endregion\n\n //#region time zone\n\n withTimeZone(timeZone) {\n return new TZDateMini(+this, timeZone);\n }\n getTimezoneOffset() {\n return -tzOffset(this.timeZone, this);\n }\n\n //#endregion\n\n //#region time\n\n setTime(time) {\n Date.prototype.setTime.apply(this, arguments);\n syncToInternal(this);\n return +this;\n }\n\n //#endregion\n\n //#region date-fns integration\n\n [Symbol.for(\"constructDateFrom\")](date) {\n return new TZDateMini(+new Date(date), this.timeZone);\n }\n\n //#endregion\n}\n\n// Assign getters and setters\nconst re = /^(get|set)(?!UTC)/;\nObject.getOwnPropertyNames(Date.prototype).forEach(method => {\n if (!re.test(method)) return;\n const utcMethod = method.replace(re, \"$1UTC\");\n // Filter out methods without UTC counterparts\n if (!TZDateMini.prototype[utcMethod]) return;\n if (method.startsWith(\"get\")) {\n // Delegate to internal date's UTC method\n TZDateMini.prototype[method] = function () {\n return this.internal[utcMethod]();\n };\n } else {\n // Assign regular setter\n TZDateMini.prototype[method] = function () {\n Date.prototype[utcMethod].apply(this.internal, arguments);\n syncFromInternal(this);\n return +this;\n };\n\n // Assign UTC setter\n TZDateMini.prototype[utcMethod] = function () {\n Date.prototype[utcMethod].apply(this, arguments);\n syncToInternal(this);\n return +this;\n };\n }\n});\n\n/**\n * Function syncs time to internal date, applying the time zone offset.\n *\n * @param {Date} date - Date to sync\n */\nfunction syncToInternal(date) {\n date.internal.setTime(+date);\n date.internal.setUTCMinutes(date.internal.getUTCMinutes() - date.getTimezoneOffset());\n}\n\n/**\n * Function syncs the internal date UTC values to the date. It allows to get\n * accurate timestamp value.\n *\n * @param {Date} date - The date to sync\n */\nfunction syncFromInternal(date) {\n // First we transpose the internal values\n Date.prototype.setFullYear.call(date, date.internal.getUTCFullYear(), date.internal.getUTCMonth(), date.internal.getUTCDate());\n Date.prototype.setHours.call(date, date.internal.getUTCHours(), date.internal.getUTCMinutes(), date.internal.getUTCSeconds(), date.internal.getUTCMilliseconds());\n\n // Now we have to adjust the date to the system time zone\n adjustToSystemTZ(date);\n}\n\n/**\n * Function adjusts the date to the system time zone. It uses the time zone\n * differences to calculate the offset and adjust the date.\n *\n * @param {Date} date - Date to adjust\n */\nfunction adjustToSystemTZ(date) {\n // Save the time zone offset before all the adjustments\n const offset = tzOffset(date.timeZone, date);\n\n //#region System DST adjustment\n\n // The biggest problem with using the system time zone is that when we create\n // a date from internal values stored in UTC, the system time zone might end\n // up on the DST hour:\n //\n // $ TZ=America/New_York node\n // > new Date(2020, 2, 8, 1).toString()\n // 'Sun Mar 08 2020 01:00:00 GMT-0500 (Eastern Standard Time)'\n // > new Date(2020, 2, 8, 2).toString()\n // 'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n // > new Date(2020, 2, 8, 3).toString()\n // 'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n // > new Date(2020, 2, 8, 4).toString()\n // 'Sun Mar 08 2020 04:00:00 GMT-0400 (Eastern Daylight Time)'\n //\n // Here we get the same hour for both 2 and 3, because the system time zone\n // has DST beginning at 8 March 2020, 2 a.m. and jumps to 3 a.m. So we have\n // to adjust the internal date to reflect that.\n //\n // However we want to adjust only if that's the DST hour the change happenes,\n // not the hour where DST moves to.\n\n // We calculate the previous hour to see if the time zone offset has changed\n // and we have landed on the DST hour.\n const prevHour = new Date(+date);\n // We use UTC methods here as we don't want to land on the same hour again\n // in case of DST.\n prevHour.setUTCHours(prevHour.getUTCHours() - 1);\n\n // Calculate if we are on the system DST hour.\n const systemOffset = -new Date(+date).getTimezoneOffset();\n const prevHourSystemOffset = -new Date(+prevHour).getTimezoneOffset();\n const systemDSTChange = systemOffset - prevHourSystemOffset;\n // Detect the DST shift. System DST change will occur both on\n const dstShift = Date.prototype.getHours.apply(date) !== date.internal.getUTCHours();\n\n // Move the internal date when we are on the system DST hour.\n if (systemDSTChange && dstShift) date.internal.setUTCMinutes(date.internal.getUTCMinutes() + systemDSTChange);\n\n //#endregion\n\n //#region System diff adjustment\n\n // Now we need to adjust the date, since we just applied internal values.\n // We need to calculate the difference between the system and date time zones\n // and apply it to the date.\n\n const offsetDiff = systemOffset - offset;\n if (offsetDiff) Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetDiff);\n\n //#endregion\n\n //#region Post-adjustment DST fix\n\n const postOffset = tzOffset(date.timeZone, date);\n const postSystemOffset = -new Date(+date).getTimezoneOffset();\n const postOffsetDiff = postSystemOffset - postOffset;\n const offsetChanged = postOffset !== offset;\n const postDiff = postOffsetDiff - offsetDiff;\n if (offsetChanged && postDiff) {\n Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + postDiff);\n\n // Now we need to check if got offset change during the post-adjustment.\n // If so, we also need both dates to reflect that.\n\n const newOffset = tzOffset(date.timeZone, date);\n const offsetChange = postOffset - newOffset;\n if (offsetChange) {\n date.internal.setUTCMinutes(date.internal.getUTCMinutes() + offsetChange);\n Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetChange);\n }\n }\n\n //#endregion\n}","import { TZDateMini } from \"./mini.js\";\n\n/**\n * UTC date class. It maps getters and setters to corresponding UTC methods,\n * forcing all calculations in the UTC time zone.\n *\n * Combined with date-fns, it allows using the class the same way as\n * the original date class.\n *\n * This complete version provides not only getters, setters,\n * and `getTimezoneOffset`, but also the formatter functions, mirroring\n * all original `Date` functionality. Use this version when you need to format\n * a string or in an environment you don't fully control (a library).\n * For a minimal version, see `UTCDateMini`.\n */\nexport class TZDate extends TZDateMini {\n //#region static\n\n static tz(tz, ...args) {\n return args.length ? new TZDate(...args, tz) : new TZDate(Date.now(), tz);\n }\n\n //#endregion\n\n //#region representation\n\n toISOString() {\n const [sign, hours, minutes] = this.tzComponents();\n const tz = `${sign}${hours}:${minutes}`;\n return this.internal.toISOString().slice(0, -1) + tz;\n }\n toString() {\n // \"Tue Aug 13 2024 07:50:19 GMT+0800 (Singapore Standard Time)\";\n return `${this.toDateString()} ${this.toTimeString()}`;\n }\n toDateString() {\n // toUTCString returns RFC 7231 (\"Mon, 12 Aug 2024 23:36:08 GMT\")\n const [day, date, month, year] = this.internal.toUTCString().split(\" \");\n // \"Tue Aug 13 2024\"\n return `${day?.slice(0, -1) /* Remove \",\" */} ${month} ${date} ${year}`;\n }\n toTimeString() {\n // toUTCString returns RFC 7231 (\"Mon, 12 Aug 2024 23:36:08 GMT\")\n const time = this.internal.toUTCString().split(\" \")[4];\n const [sign, hours, minutes] = this.tzComponents();\n // \"07:42:23 GMT+0800 (Singapore Standard Time)\"\n return `${time} GMT${sign}${hours}${minutes} (${tzName(this.timeZone, this)})`;\n }\n toLocaleString(locales, options) {\n return Date.prototype.toLocaleString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n toLocaleDateString(locales, options) {\n return Date.prototype.toLocaleDateString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n toLocaleTimeString(locales, options) {\n return Date.prototype.toLocaleTimeString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n\n //#endregion\n\n //#region private\n\n tzComponents() {\n const offset = this.getTimezoneOffset();\n const sign = offset > 0 ? \"-\" : \"+\";\n const hours = String(Math.floor(Math.abs(offset) / 60)).padStart(2, \"0\");\n const minutes = String(Math.abs(offset) % 60).padStart(2, \"0\");\n return [sign, hours, minutes];\n }\n\n //#endregion\n\n withTimeZone(timeZone) {\n return new TZDate(+this, timeZone);\n }\n\n //#region date-fns integration\n\n [Symbol.for(\"constructDateFrom\")](date) {\n return new TZDate(+new Date(date), this.timeZone);\n }\n\n //#endregion\n}\nfunction tzName(tz, date) {\n return new Intl.DateTimeFormat(\"en-GB\", {\n timeZone: tz,\n timeZoneName: \"long\"\n }).format(date).slice(12);\n}","import { TZDate } from \"@date-fns/tz\";\n/**\n * Generate a series of 7 days, starting from the week, to use for formatting\n * the weekday names (Monday, Tuesday, etc.).\n */\nexport function getWeekdays(\n/** The date library. */\ndateLib, \n/** Use ISOWeek instead of locale/ */\nISOWeek, timeZone, \n/** @since 9.4.0 */\nbroadcastCalendar) {\n const date = timeZone\n ? TZDate.tz(timeZone)\n : dateLib.Date\n ? new dateLib.Date()\n : new Date();\n const start = broadcastCalendar\n ? dateLib.startOfBroadcastWeek(date, dateLib)\n : ISOWeek\n ? dateLib.startOfISOWeek(date)\n : dateLib.startOfWeek(date);\n const days = [];\n for (let i = 0; i < 7; i++) {\n const day = dateLib.addDays(start, i);\n days.push(day);\n }\n return days;\n}\n//# sourceMappingURL=getWeekdays.js.map","/** Return the years to show in the dropdown. */\nexport function getYearOptions(navStart, navEnd, formatters, dateLib) {\n if (!navStart)\n return undefined;\n if (!navEnd)\n return undefined;\n const { startOfYear, endOfYear, addYears, isBefore, isSameYear } = dateLib;\n const firstNavYear = startOfYear(navStart);\n const lastNavYear = endOfYear(navEnd);\n const years = [];\n let year = firstNavYear;\n while (isBefore(year, lastNavYear) || isSameYear(year, lastNavYear)) {\n years.push(year.getFullYear());\n year = addYears(year, 1);\n }\n return years.map((value) => {\n const label = formatters.formatYearDropdown(value);\n return {\n value,\n label,\n disabled: false\n };\n });\n}\n//# sourceMappingURL=getYearOptions.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Return an ARIA label for the month grid, that will be announced when entering\n * the grid.\n *\n * @defaultValue `LLLL y` (e.g. \"November 2022\")\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelGrid(date, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(date, \"LLLL y\");\n}\n/**\n * @deprecated Use {@link labelGrid} instead.\n * @protected\n */\nexport const labelCaption = labelGrid;\n//# sourceMappingURL=labelGrid.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * The label for the day gridcell when the calendar is not interactive.\n *\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelGridcell(date, \n/** The modifiers for the day. */\nmodifiers, options, dateLib) {\n let label = (dateLib ?? new DateLib(options)).format(date, \"PPPP\");\n if (modifiers?.today) {\n label = `Today, ${label}`;\n }\n return label;\n}\n//# sourceMappingURL=labelGridcell.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * The ARIA label for the day button.\n *\n * Use the `modifiers` argument to add additional context to the label, e.g.\n * when a day is selected or is today.\n *\n * @defaultValue The formatted date.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelDayButton(date, \n/** The modifiers for the day. */\nmodifiers, options, dateLib) {\n let label = (dateLib ?? new DateLib(options)).format(date, \"PPPP\");\n if (modifiers.today)\n label = `Today, ${label}`;\n if (modifiers.selected)\n label = `${label}, selected`;\n return label;\n}\n/** @deprecated Use `labelDayButton` instead. */\nexport const labelDay = labelDayButton;\n//# sourceMappingURL=labelDayButton.js.map","/**\n * The ARIA label for the navigation toolbar.\n *\n * @defaultValue `\"\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelNav() {\n return \"\";\n}\n//# sourceMappingURL=labelNav.js.map","/**\n * The ARIA label for the months dropdown.\n *\n * @defaultValue `\"Choose the Month\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelMonthDropdown(options) {\n return \"Choose the Month\";\n}\n//# sourceMappingURL=labelMonthDropdown.js.map","/**\n * The ARIA label for next month button.\n *\n * @defaultValue `\"Go to the Next Month\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelNext(\n/** `undefined` where there's no next month to navigate to. */\nmonth) {\n return \"Go to the Next Month\";\n}\n//# sourceMappingURL=labelNext.js.map","/**\n * The ARIA label for previous month button.\n *\n * @defaultValue `\"Go to the Previous Month\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelPrevious(\n/** Undefined where there's no previous month to navigate to. */\nmonth) {\n return \"Go to the Previous Month\";\n}\n//# sourceMappingURL=labelPrevious.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * The ARIA label for the Weekday column header.\n *\n * @defaultValue `\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekday(date, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(date, \"cccc\");\n}\n//# sourceMappingURL=labelWeekday.js.map","/**\n * The ARIA label for the week number cell (the first cell in the row).\n *\n * @defaultValue `Week ${weekNumber}`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumber(weekNumber, options) {\n return `Week ${weekNumber}`;\n}\n//# sourceMappingURL=labelWeekNumber.js.map","/**\n * The ARIA label for the week number header element.\n *\n * @defaultValue `\"Week Number\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumberHeader(options) {\n return \"Week Number\";\n}\n//# sourceMappingURL=labelWeekNumberHeader.js.map","/**\n * The ARIA label for the years dropdown.\n *\n * @defaultValue `\"Choose the Year\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelYearDropdown(options) {\n return \"Choose the Year\";\n}\n//# sourceMappingURL=labelYearDropdown.js.map","/** Return all the dates to display in the calendar. */\nexport function getDates(displayMonths, maxDate, props, dateLib) {\n const firstMonth = displayMonths[0];\n const lastMonth = displayMonths[displayMonths.length - 1];\n const { ISOWeek, fixedWeeks, broadcastCalendar } = props ?? {};\n const { addDays, differenceInCalendarDays, differenceInCalendarMonths, endOfBroadcastWeek, endOfISOWeek, endOfMonth, endOfWeek, isAfter, startOfBroadcastWeek, startOfISOWeek, startOfWeek } = dateLib;\n const startWeekFirstDate = broadcastCalendar\n ? startOfBroadcastWeek(firstMonth, dateLib)\n : ISOWeek\n ? startOfISOWeek(firstMonth)\n : startOfWeek(firstMonth);\n const endWeekLastDate = broadcastCalendar\n ? endOfBroadcastWeek(lastMonth, dateLib)\n : ISOWeek\n ? endOfISOWeek(endOfMonth(lastMonth))\n : endOfWeek(endOfMonth(lastMonth));\n const nOfDays = differenceInCalendarDays(endWeekLastDate, startWeekFirstDate);\n const nOfMonths = differenceInCalendarMonths(lastMonth, firstMonth) + 1;\n const dates = [];\n for (let i = 0; i <= nOfDays; i++) {\n const date = addDays(startWeekFirstDate, i);\n if (maxDate && isAfter(date, maxDate)) {\n break;\n }\n dates.push(date);\n }\n // If fixed weeks is enabled, add the extra dates to the array\n const nrOfDaysWithFixedWeeks = broadcastCalendar ? 35 : 42;\n const extraDates = nrOfDaysWithFixedWeeks * nOfMonths;\n if (fixedWeeks && dates.length < extraDates) {\n const daysToAdd = extraDates - dates.length;\n for (let i = 0; i < daysToAdd; i++) {\n const date = addDays(dates[dates.length - 1], 1);\n dates.push(date);\n }\n }\n return dates;\n}\n//# sourceMappingURL=getDates.js.map","/**\n * Returns all the days belonging to the calendar by merging the days in the\n * weeks for each month.\n */\nexport function getDays(calendarMonths) {\n const initialDays = [];\n return calendarMonths.reduce((days, month) => {\n const initialDays = [];\n const weekDays = month.weeks.reduce((weekDays, week) => {\n return [...weekDays, ...week.days];\n }, initialDays);\n return [...days, ...weekDays];\n }, initialDays);\n}\n//# sourceMappingURL=getDays.js.map","export function getDisplayMonths(firstDisplayedMonth, calendarEndMonth, props, dateLib) {\n const { numberOfMonths = 1 } = props;\n const months = [];\n for (let i = 0; i < numberOfMonths; i++) {\n const month = dateLib.addMonths(firstDisplayedMonth, i);\n if (calendarEndMonth && month > calendarEndMonth) {\n break;\n }\n months.push(month);\n }\n return months;\n}\n//# sourceMappingURL=getDisplayMonths.js.map","import { TZDate } from \"@date-fns/tz\";\n/** Return the start month based on the props passed to DayPicker. */\nexport function getInitialMonth(props, dateLib) {\n const { month, defaultMonth, today = props.timeZone\n ? TZDate.tz(props.timeZone)\n : dateLib.Date\n ? new dateLib.Date()\n : new Date(), numberOfMonths = 1, endMonth, startMonth } = props;\n let initialMonth = month || defaultMonth || today;\n const { differenceInCalendarMonths, addMonths, startOfMonth } = dateLib;\n // Fix the initialMonth if is after the to-date\n if (endMonth && differenceInCalendarMonths(endMonth, initialMonth) < 0) {\n const offset = -1 * (numberOfMonths - 1);\n initialMonth = addMonths(endMonth, offset);\n }\n // Fix the initialMonth if is before the from-date\n if (startMonth && differenceInCalendarMonths(initialMonth, startMonth) < 0) {\n initialMonth = startMonth;\n }\n return startOfMonth(initialMonth);\n}\n//# sourceMappingURL=getInitialMonth.js.map","import { defaultDateLib } from \"./DateLib.js\";\n/**\n * Represent the day displayed in the calendar.\n *\n * In DayPicker, a `Day` is a `Date` that can be displayed in the calendar. It\n * is used as extension of the native `Date` object to provide additional\n * information about the day.\n */\nexport class CalendarDay {\n constructor(date, displayMonth, dateLib = defaultDateLib) {\n this.date = date;\n this.displayMonth = displayMonth;\n this.outside = Boolean(displayMonth && !dateLib.isSameMonth(date, displayMonth));\n this.dateLib = dateLib;\n }\n /**\n * Check if the day is the same as the given day: considering if it is in the\n * same display month.\n */\n isEqualTo(day) {\n return (this.dateLib.isSameDay(day.date, this.date) &&\n this.dateLib.isSameMonth(day.displayMonth, this.displayMonth));\n }\n}\n//# sourceMappingURL=CalendarDay.js.map","/** Represent a month in a calendar year. Contains the weeks within the month. */\nexport class CalendarMonth {\n constructor(month, weeks) {\n this.date = month;\n this.weeks = weeks;\n }\n}\n//# sourceMappingURL=CalendarMonth.js.map","/** Represent a week in a calendar month. */\nexport class CalendarWeek {\n constructor(weekNumber, days) {\n this.days = days;\n this.weekNumber = weekNumber;\n }\n}\n//# sourceMappingURL=CalendarWeek.js.map","import { CalendarWeek, CalendarDay, CalendarMonth } from \"../classes/index.js\";\n/** Return the months to display in the calendar. */\nexport function getMonths(\n/** The months (as dates) to display in the calendar. */\ndisplayMonths, \n/** The dates to display in the calendar. */\ndates, \n/** Options from the props context. */\nprops, dateLib) {\n const { addDays, endOfBroadcastWeek, endOfISOWeek, endOfMonth, endOfWeek, getISOWeek, getWeek, startOfBroadcastWeek, startOfISOWeek, startOfWeek } = dateLib;\n const dayPickerMonths = displayMonths.reduce((months, month) => {\n const firstDateOfFirstWeek = props.broadcastCalendar\n ? startOfBroadcastWeek(month, dateLib)\n : props.ISOWeek\n ? startOfISOWeek(month)\n : startOfWeek(month);\n const lastDateOfLastWeek = props.broadcastCalendar\n ? endOfBroadcastWeek(month, dateLib)\n : props.ISOWeek\n ? endOfISOWeek(endOfMonth(month))\n : endOfWeek(endOfMonth(month));\n /** The dates to display in the month. */\n const monthDates = dates.filter((date) => {\n return date >= firstDateOfFirstWeek && date <= lastDateOfLastWeek;\n });\n const nrOfDaysWithFixedWeeks = props.broadcastCalendar ? 35 : 42;\n if (props.fixedWeeks && monthDates.length < nrOfDaysWithFixedWeeks) {\n const extraDates = dates.filter((date) => {\n const daysToAdd = nrOfDaysWithFixedWeeks - monthDates.length;\n return (date > lastDateOfLastWeek &&\n date <= addDays(lastDateOfLastWeek, daysToAdd));\n });\n monthDates.push(...extraDates);\n }\n const weeks = monthDates.reduce((weeks, date) => {\n const weekNumber = props.ISOWeek ? getISOWeek(date) : getWeek(date);\n const week = weeks.find((week) => week.weekNumber === weekNumber);\n const day = new CalendarDay(date, month, dateLib);\n if (!week) {\n weeks.push(new CalendarWeek(weekNumber, [day]));\n }\n else {\n week.days.push(day);\n }\n return weeks;\n }, []);\n const dayPickerMonth = new CalendarMonth(month, weeks);\n months.push(dayPickerMonth);\n return months;\n }, []);\n if (!props.reverseMonths) {\n return dayPickerMonths;\n }\n else {\n return dayPickerMonths.reverse();\n }\n}\n//# sourceMappingURL=getMonths.js.map","import { TZDate } from \"@date-fns/tz\";\n/** Return the start and end months for the calendar navigation. */\nexport function getNavMonths(props, dateLib) {\n let { startMonth, endMonth } = props;\n const { startOfYear, startOfDay, startOfMonth, endOfMonth, addYears, endOfYear } = dateLib;\n // Handle deprecated code\n const { fromYear, toYear, fromMonth, toMonth } = props;\n if (!startMonth && fromMonth) {\n startMonth = fromMonth;\n }\n if (!startMonth && fromYear) {\n startMonth = new Date(fromYear, 0, 1);\n }\n if (!endMonth && toMonth) {\n endMonth = toMonth;\n }\n if (!endMonth && toYear) {\n endMonth = new Date(toYear, 11, 31);\n }\n const hasDropdowns = props.captionLayout?.startsWith(\"dropdown\");\n if (startMonth) {\n startMonth = startOfMonth(startMonth);\n }\n else if (fromYear) {\n startMonth = new Date(fromYear, 0, 1);\n }\n else if (!startMonth && hasDropdowns) {\n const today = props.today ??\n (props.timeZone\n ? TZDate.tz(props.timeZone)\n : dateLib.Date\n ? new dateLib.Date()\n : new Date());\n startMonth = startOfYear(addYears(today, -100));\n }\n if (endMonth) {\n endMonth = endOfMonth(endMonth);\n }\n else if (toYear) {\n endMonth = new Date(toYear, 11, 31);\n }\n else if (!endMonth && hasDropdowns) {\n const today = props.today ??\n (props.timeZone\n ? TZDate.tz(props.timeZone)\n : dateLib.Date\n ? new dateLib.Date()\n : new Date());\n endMonth = endOfYear(today);\n }\n return [\n startMonth ? startOfDay(startMonth) : startMonth,\n endMonth ? startOfDay(endMonth) : endMonth\n ];\n}\n//# sourceMappingURL=getNavMonth.js.map","/**\n * Return the next month the user can navigate to according to the given\n * options.\n *\n * Please note that the next month is not always the next calendar month:\n *\n * - If after the `calendarEndMonth` range, is `undefined`;\n * - If the navigation is paged , is the number of months displayed ahead.\n */\nexport function getNextMonth(firstDisplayedMonth, calendarEndMonth, options, dateLib) {\n if (options.disableNavigation) {\n return undefined;\n }\n const { pagedNavigation, numberOfMonths = 1 } = options;\n const { startOfMonth, addMonths, differenceInCalendarMonths } = dateLib;\n const offset = pagedNavigation ? numberOfMonths : 1;\n const month = startOfMonth(firstDisplayedMonth);\n if (!calendarEndMonth) {\n return addMonths(month, offset);\n }\n const monthsDiff = differenceInCalendarMonths(calendarEndMonth, firstDisplayedMonth);\n if (monthsDiff < numberOfMonths) {\n return undefined;\n }\n // Jump forward as the number of months when paged navigation\n return addMonths(month, offset);\n}\n//# sourceMappingURL=getNextMonth.js.map","/**\n * Return the next previous the user can navigate to, according to the given\n * options.\n *\n * Please note that the previous month is not always the previous calendar\n * month:\n *\n * - If before the `calendarStartMonth` date, is `undefined`;\n * - If the navigation is paged, is the number of months displayed before.\n */\nexport function getPreviousMonth(firstDisplayedMonth, calendarStartMonth, options, dateLib) {\n if (options.disableNavigation) {\n return undefined;\n }\n const { pagedNavigation, numberOfMonths } = options;\n const { startOfMonth, addMonths, differenceInCalendarMonths } = dateLib;\n const offset = pagedNavigation ? (numberOfMonths ?? 1) : 1;\n const month = startOfMonth(firstDisplayedMonth);\n if (!calendarStartMonth) {\n return addMonths(month, -offset);\n }\n const monthsDiff = differenceInCalendarMonths(month, calendarStartMonth);\n if (monthsDiff <= 0) {\n return undefined;\n }\n return addMonths(month, -offset);\n}\n//# sourceMappingURL=getPreviousMonth.js.map","/** Returns an array of calendar weeks from an array of calendar months. */\nexport function getWeeks(months) {\n const initialWeeks = [];\n return months.reduce((weeks, month) => {\n return [...weeks, ...month.weeks];\n }, initialWeeks);\n}\n//# sourceMappingURL=getWeeks.js.map","import { useState } from \"react\";\n/**\n * A custom hook for managing both controlled and uncontrolled component states.\n *\n * @example\n * // Uncontrolled usage\n * const [value, setValue] = useControlledValue(0, undefined);\n *\n * // Controlled usage\n * const [value, setValue] = useControlledValue(0, props.value);\n *\n * @template T - The type of the value.\n * @param {T} defaultValue - The initial value for the uncontrolled state.\n * @param {T | undefined} controlledValue - The value for the controlled state.\n * If undefined, the component will use the uncontrolled state.\n * @returns {[T, DispatchStateAction<T>]} - Returns a tuple where the first\n * element is the current value (either controlled or uncontrolled) and the\n * second element is a setter function to update the value.\n */\nexport function useControlledValue(defaultValue, controlledValue) {\n const [uncontrolledValue, setValue] = useState(defaultValue);\n const value = controlledValue === undefined ? uncontrolledValue : controlledValue;\n return [value, setValue];\n}\n//# sourceMappingURL=useControlledValue.js.map","import { useEffect } from \"react\";\nimport { getDates } from \"./helpers/getDates.js\";\nimport { getDays } from \"./helpers/getDays.js\";\nimport { getDisplayMonths } from \"./helpers/getDisplayMonths.js\";\nimport { getInitialMonth } from \"./helpers/getInitialMonth.js\";\nimport { getMonths } from \"./helpers/getMonths.js\";\nimport { getNavMonths } from \"./helpers/getNavMonth.js\";\nimport { getNextMonth } from \"./helpers/getNextMonth.js\";\nimport { getPreviousMonth } from \"./helpers/getPreviousMonth.js\";\nimport { getWeeks } from \"./helpers/getWeeks.js\";\nimport { useControlledValue } from \"./helpers/useControlledValue.js\";\n/** @private */\nexport function useCalendar(props, dateLib) {\n const [navStart, navEnd] = getNavMonths(props, dateLib);\n const { startOfMonth, endOfMonth } = dateLib;\n const initialMonth = getInitialMonth(props, dateLib);\n const [firstMonth, setFirstMonth] = useControlledValue(initialMonth, props.month ? startOfMonth(props.month) : undefined);\n useEffect(() => {\n const newInitialMonth = getInitialMonth(props, dateLib);\n setFirstMonth(newInitialMonth);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.timeZone]);\n /** The months displayed in the calendar. */\n const displayMonths = getDisplayMonths(firstMonth, navEnd, props, dateLib);\n /** The dates displayed in the calendar. */\n const dates = getDates(displayMonths, props.endMonth ? endOfMonth(props.endMonth) : undefined, props, dateLib);\n /** The Months displayed in the calendar. */\n const months = getMonths(displayMonths, dates, props, dateLib);\n /** The Weeks displayed in the calendar. */\n const weeks = getWeeks(months);\n /** The Days displayed in the calendar. */\n const days = getDays(months);\n const previousMonth = getPreviousMonth(firstMonth, navStart, props, dateLib);\n const nextMonth = getNextMonth(firstMonth, navEnd, props, dateLib);\n const { disableNavigation, onMonthChange } = props;\n const isDayInCalendar = (day) => weeks.some((week) => week.days.some((d) => d.isEqualTo(day)));\n const goToMonth = (date) => {\n if (disableNavigation) {\n return;\n }\n let newMonth = startOfMonth(date);\n // if month is before start, use the first month instead\n if (navStart && newMonth < startOfMonth(navStart)) {\n newMonth = startOfMonth(navStart);\n }\n // if month is after endMonth, use the last month instead\n if (navEnd && newMonth > startOfMonth(navEnd)) {\n newMonth = startOfMonth(navEnd);\n }\n setFirstMonth(newMonth);\n onMonthChange?.(newMonth);\n };\n const goToDay = (day) => {\n // is this check necessary?\n if (isDayInCalendar(day)) {\n return;\n }\n goToMonth(day.date);\n };\n const calendar = {\n months,\n weeks,\n days,\n navStart,\n navEnd,\n previousMonth,\n nextMonth,\n goToMonth,\n goToDay\n };\n return calendar;\n}\n//# sourceMappingURL=useCalendar.js.map","import { DayFlag } from \"../UI.js\";\nexport function calculateFocusTarget(days, getModifiers, isSelected, lastFocused) {\n let focusTarget;\n let index = 0;\n let found = false;\n while (index < days.length && !found) {\n const day = days[index];\n const modifiers = getModifiers(day);\n if (!modifiers[DayFlag.disabled] &&\n !modifiers[DayFlag.hidden] &&\n !modifiers[DayFlag.outside]) {\n if (modifiers[DayFlag.focused]) {\n focusTarget = day;\n found = true;\n }\n else if (lastFocused?.isEqualTo(day)) {\n focusTarget = day;\n found = true;\n }\n else if (isSelected(day.date)) {\n focusTarget = day;\n found = true;\n }\n else if (modifiers[DayFlag.today]) {\n focusTarget = day;\n found = true;\n }\n }\n index++;\n }\n if (!focusTarget) {\n // return the first day that is focusable\n focusTarget = days.find((day) => {\n const m = getModifiers(day);\n return !m[DayFlag.disabled] && !m[DayFlag.hidden] && !m[DayFlag.outside];\n });\n }\n return focusTarget;\n}\n//# sourceMappingURL=calculateFocusTarget.js.map","import { defaultDateLib } from \"../classes/index.js\";\n/**\n * Determines whether a given date is inside a specified date range.\n *\n * @since 9.0.0\n * @group Utilities\n */\nexport function rangeIncludesDate(range, date, \n/** If `true`, the ends of the range are excluded. */\nexcludeEnds = false, dateLib = defaultDateLib) {\n let { from, to } = range;\n const { differenceInCalendarDays, isSameDay } = dateLib;\n if (from && to) {\n const isRangeInverted = differenceInCalendarDays(to, from) < 0;\n if (isRangeInverted) {\n [from, to] = [to, from];\n }\n const isInRange = differenceInCalendarDays(date, from) >= (excludeEnds ? 1 : 0) &&\n differenceInCalendarDays(to, date) >= (excludeEnds ? 1 : 0);\n return isInRange;\n }\n if (!excludeEnds && to) {\n return isSameDay(to, date);\n }\n if (!excludeEnds && from) {\n return isSameDay(from, date);\n }\n return false;\n}\n/**\n * @private\n * @deprecated Use {@link rangeIncludesDate} instead.\n */\nexport const isDateInRange = (range, date) => rangeIncludesDate(range, date, false, defaultDateLib);\n//# sourceMappingURL=rangeIncludesDate.js.map","/**\n * Returns true if `matcher` is of type {@link DateInterval}.\n *\n * @group Utilities\n */\nexport function isDateInterval(matcher) {\n return Boolean(matcher &&\n typeof matcher === \"object\" &&\n \"before\" in matcher &&\n \"after\" in matcher);\n}\n/**\n * Returns true if `value` is a {@link DateRange} type.\n *\n * @group Utilities\n */\nexport function isDateRange(value) {\n return Boolean(value && typeof value === \"object\" && \"from\" in value);\n}\n/**\n * Returns true if `value` is of type {@link DateAfter}.\n *\n * @group Utilities\n */\nexport function isDateAfterType(value) {\n return Boolean(value && typeof value === \"object\" && \"after\" in value);\n}\n/**\n * Returns true if `value` is of type {@link DateBefore}.\n *\n * @group Utilities\n */\nexport function isDateBeforeType(value) {\n return Boolean(value && typeof value === \"object\" && \"before\" in value);\n}\n/**\n * Returns true if `value` is a {@link DayOfWeek} type.\n *\n * @group Utilities\n */\nexport function isDayOfWeekType(value) {\n return Boolean(value && typeof value === \"object\" && \"dayOfWeek\" in value);\n}\n/**\n * Returns true if `value` is an array of valid dates.\n *\n * @private\n */\nexport function isDatesArray(value, dateLib) {\n return Array.isArray(value) && value.every(dateLib.isDate);\n}\n//# sourceMappingURL=typeguards.js.map","import { defaultDateLib } from \"../classes/DateLib.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDatesArray, isDayOfWeekType } from \"./typeguards.js\";\n/**\n * Returns whether a day matches against at least one of the given\n * {@link Matcher}.\n *\n * ```tsx\n * const date = new Date(2022, 5, 19);\n * const matcher1: DateRange = {\n * from: new Date(2021, 12, 21),\n * to: new Date(2021, 12, 30)\n * };\n * const matcher2: DateRange = {\n * from: new Date(2022, 5, 1),\n * to: new Date(2022, 5, 23)\n * };\n * dateMatchModifiers(date, [matcher1, matcher2]); // true, since day is in the matcher1 range.\n * ```\n *\n * @group Utilities\n */\nexport function dateMatchModifiers(date, matchers, dateLib = defaultDateLib) {\n const matchersArr = !Array.isArray(matchers) ? [matchers] : matchers;\n const { isSameDay, differenceInCalendarDays, isAfter } = dateLib;\n return matchersArr.some((matcher) => {\n if (typeof matcher === \"boolean\") {\n return matcher;\n }\n if (dateLib.isDate(matcher)) {\n return isSameDay(date, matcher);\n }\n if (isDatesArray(matcher, dateLib)) {\n return matcher.includes(date);\n }\n if (isDateRange(matcher)) {\n return rangeIncludesDate(matcher, date, false, dateLib);\n }\n if (isDayOfWeekType(matcher)) {\n if (!Array.isArray(matcher.dayOfWeek)) {\n return matcher.dayOfWeek === date.getDay();\n }\n return matcher.dayOfWeek.includes(date.getDay());\n }\n if (isDateInterval(matcher)) {\n const diffBefore = differenceInCalendarDays(matcher.before, date);\n const diffAfter = differenceInCalendarDays(matcher.after, date);\n const isDayBefore = diffBefore > 0;\n const isDayAfter = diffAfter < 0;\n const isClosedInterval = isAfter(matcher.before, matcher.after);\n if (isClosedInterval) {\n return isDayAfter && isDayBefore;\n }\n else {\n return isDayBefore || isDayAfter;\n }\n }\n if (isDateAfterType(matcher)) {\n return differenceInCalendarDays(date, matcher.after) > 0;\n }\n if (isDateBeforeType(matcher)) {\n return differenceInCalendarDays(matcher.before, date) > 0;\n }\n if (typeof matcher === \"function\") {\n return matcher(date);\n }\n return false;\n });\n}\n/**\n * @private\n * @deprecated Use {@link dateMatchModifiers} instead.\n */\nexport const isMatch = dateMatchModifiers;\n//# sourceMappingURL=dateMatchModifiers.js.map","/** Return the next date that should be focused. */\nexport function getFocusableDate(moveBy, moveDir, refDate, navStart, navEnd, props, dateLib) {\n const { ISOWeek, broadcastCalendar } = props;\n const { addDays, addMonths, addWeeks, addYears, endOfBroadcastWeek, endOfISOWeek, endOfWeek, max, min, startOfBroadcastWeek, startOfISOWeek, startOfWeek } = dateLib;\n const moveFns = {\n day: addDays,\n week: addWeeks,\n month: addMonths,\n year: addYears,\n startOfWeek: (date) => broadcastCalendar\n ? startOfBroadcastWeek(date, dateLib)\n : ISOWeek\n ? startOfISOWeek(date)\n : startOfWeek(date),\n endOfWeek: (date) => broadcastCalendar\n ? endOfBroadcastWeek(date, dateLib)\n : ISOWeek\n ? endOfISOWeek(date)\n : endOfWeek(date)\n };\n let focusableDate = moveFns[moveBy](refDate, moveDir === \"after\" ? 1 : -1);\n if (moveDir === \"before\" && navStart) {\n focusableDate = max([navStart, focusableDate]);\n }\n else if (moveDir === \"after\" && navEnd) {\n focusableDate = min([navEnd, focusableDate]);\n }\n return focusableDate;\n}\n//# sourceMappingURL=getFocusableDate.js.map","import { CalendarDay } from \"../classes/index.js\";\nimport { dateMatchModifiers } from \"../utils/dateMatchModifiers.js\";\nimport { getFocusableDate } from \"./getFocusableDate.js\";\nexport function getNextFocus(moveBy, moveDir, \n/** The date that is currently focused. */\nrefDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt = 0) {\n if (attempt > 365) {\n // Limit the recursion to 365 attempts\n return undefined;\n }\n const focusableDate = getFocusableDate(moveBy, moveDir, refDay.date, // should be refDay? or refDay.date?\n calendarStartMonth, calendarEndMonth, props, dateLib);\n const isDisabled = Boolean(props.disabled && dateMatchModifiers(focusableDate, props.disabled, dateLib));\n const isHidden = Boolean(props.hidden && dateMatchModifiers(focusableDate, props.hidden, dateLib));\n const targetMonth = focusableDate;\n const focusDay = new CalendarDay(focusableDate, targetMonth, dateLib);\n if (!isDisabled && !isHidden) {\n return focusDay;\n }\n // Recursively attempt to find the next focusable date\n return getNextFocus(moveBy, moveDir, focusDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt + 1);\n}\n//# sourceMappingURL=getNextFocus.js.map","import { useState } from \"react\";\nimport { calculateFocusTarget } from \"./helpers/calculateFocusTarget.js\";\nimport { getNextFocus } from \"./helpers/getNextFocus.js\";\n/** @private */\nexport function useFocus(props, calendar, getModifiers, isSelected, dateLib) {\n const { autoFocus } = props;\n const [lastFocused, setLastFocused] = useState();\n const focusTarget = calculateFocusTarget(calendar.days, getModifiers, isSelected || (() => false), lastFocused);\n const [focusedDay, setFocused] = useState(autoFocus ? focusTarget : undefined);\n const blur = () => {\n setLastFocused(focusedDay);\n setFocused(undefined);\n };\n const moveFocus = (moveBy, moveDir) => {\n if (!focusedDay)\n return;\n const nextFocus = getNextFocus(moveBy, moveDir, focusedDay, calendar.navStart, calendar.navEnd, props, dateLib);\n if (!nextFocus)\n return;\n calendar.goToDay(nextFocus);\n setFocused(nextFocus);\n };\n const isFocusTarget = (day) => {\n return Boolean(focusTarget?.isEqualTo(day));\n };\n const useFocus = {\n isFocusTarget,\n setFocused,\n focused: focusedDay,\n blur,\n moveFocus\n };\n return useFocus;\n}\n//# sourceMappingURL=useFocus.js.map","import { TZDate } from \"@date-fns/tz\";\nimport { DayFlag } from \"./UI.js\";\nimport { dateMatchModifiers } from \"./utils/dateMatchModifiers.js\";\n/**\n * Return a function to get the modifiers for a given day.\n *\n * NOTE: this is not an hook, but a factory for `getModifiers`.\n *\n * @private\n */\nexport function useGetModifiers(days, props, dateLib) {\n const { disabled, hidden, modifiers, showOutsideDays, broadcastCalendar, today } = props;\n const { isSameDay, isSameMonth, startOfMonth, isBefore, endOfMonth, isAfter } = dateLib;\n const startMonth = props.startMonth && startOfMonth(props.startMonth);\n const endMonth = props.endMonth && endOfMonth(props.endMonth);\n const internalModifiersMap = {\n [DayFlag.focused]: [],\n [DayFlag.outside]: [],\n [DayFlag.disabled]: [],\n [DayFlag.hidden]: [],\n [DayFlag.today]: []\n };\n const customModifiersMap = {};\n for (const day of days) {\n const { date, displayMonth } = day;\n const isOutside = Boolean(displayMonth && !isSameMonth(date, displayMonth));\n const isBeforeStartMonth = Boolean(startMonth && isBefore(date, startMonth));\n const isAfterEndMonth = Boolean(endMonth && isAfter(date, endMonth));\n const isDisabled = Boolean(disabled && dateMatchModifiers(date, disabled, dateLib));\n const isHidden = Boolean(hidden && dateMatchModifiers(date, hidden, dateLib)) ||\n isBeforeStartMonth ||\n isAfterEndMonth ||\n // Broadcast calendar will show outside days as default\n (!broadcastCalendar && !showOutsideDays && isOutside) ||\n (broadcastCalendar && showOutsideDays === false && isOutside);\n const isToday = isSameDay(date, today ??\n (props.timeZone\n ? TZDate.tz(props.timeZone)\n : dateLib.Date\n ? new dateLib.Date()\n : new Date()));\n if (isOutside)\n internalModifiersMap.outside.push(day);\n if (isDisabled)\n internalModifiersMap.disabled.push(day);\n if (isHidden)\n internalModifiersMap.hidden.push(day);\n if (isToday)\n internalModifiersMap.today.push(day);\n // Add custom modifiers\n if (modifiers) {\n Object.keys(modifiers).forEach((name) => {\n const modifierValue = modifiers?.[name];\n const isMatch = modifierValue\n ? dateMatchModifiers(date, modifierValue, dateLib)\n : false;\n if (!isMatch)\n return;\n if (customModifiersMap[name]) {\n customModifiersMap[name].push(day);\n }\n else {\n customModifiersMap[name] = [day];\n }\n });\n }\n }\n return (day) => {\n // Initialize all the modifiers to false\n const dayFlags = {\n [DayFlag.focused]: false,\n [DayFlag.disabled]: false,\n [DayFlag.hidden]: false,\n [DayFlag.outside]: false,\n [DayFlag.today]: false\n };\n const customModifiers = {};\n // Find the modifiers for the given day\n for (const name in internalModifiersMap) {\n const days = internalModifiersMap[name];\n dayFlags[name] = days.some((d) => d === day);\n }\n for (const name in customModifiersMap) {\n customModifiers[name] = customModifiersMap[name].some((d) => d === day);\n }\n return {\n ...dayFlags,\n // custom modifiers should override all the previous ones\n ...customModifiers\n };\n };\n}\n//# sourceMappingURL=useGetModifiers.js.map","import { useControlledValue } from \"../helpers/useControlledValue.js\";\nexport function useMulti(props, dateLib) {\n const { selected: initiallySelected, required, onSelect } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const { isSameDay } = dateLib;\n const isSelected = (date) => {\n return selected?.some((d) => isSameDay(d, date)) ?? false;\n };\n const { min, max } = props;\n const select = (triggerDate, modifiers, e) => {\n let newDates = [...(selected ?? [])];\n if (isSelected(triggerDate)) {\n if (selected?.length === min) {\n // Min value reached, do nothing\n return;\n }\n if (required && selected?.length === 1) {\n // Required value already selected do nothing\n return;\n }\n newDates = selected?.filter((d) => !isSameDay(d, triggerDate));\n }\n else {\n if (selected?.length === max) {\n // Max value reached, reset the selection to date\n newDates = [triggerDate];\n }\n else {\n // Add the date to the selection\n newDates = [...newDates, triggerDate];\n }\n }\n if (!onSelect) {\n setSelected(newDates);\n }\n onSelect?.(newDates, triggerDate, modifiers, e);\n return newDates;\n };\n return {\n selected,\n select,\n isSelected\n };\n}\n//# sourceMappingURL=useMulti.js.map","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Add a day to an existing range.\n *\n * The returned range takes in account the `undefined` values and if the added\n * day is already present in the range.\n *\n * @group Utilities\n */\nexport function addToRange(\n/** The date to add to the range. */\ndate, \n/** The range where to add `date`. */\ninitialRange, min = 0, max = 0, required = false, \n/** @ignore */\ndateLib = defaultDateLib) {\n const { from, to } = initialRange || {};\n const { isSameDay, isAfter, isBefore } = dateLib;\n let range;\n if (!from && !to) {\n // the range is empty, add the date\n range = { from: date, to: min > 0 ? undefined : date };\n }\n else if (from && !to) {\n // adding date to an incomplete range\n if (isSameDay(from, date)) {\n // adding a date equal to the start of the range\n if (required) {\n range = { from, to: undefined };\n }\n else {\n range = undefined;\n }\n }\n else if (isBefore(date, from)) {\n // adding a date before the start of the range\n range = { from: date, to: from };\n }\n else {\n // adding a date after the start of the range\n range = { from, to: date };\n }\n }\n else if (from && to) {\n // adding date to a complete range\n if (isSameDay(from, date) && isSameDay(to, date)) {\n // adding a date that is equal to both start and end of the range\n if (required) {\n range = { from, to };\n }\n else {\n range = undefined;\n }\n }\n else if (isSameDay(from, date)) {\n // adding a date equal to the the start of the range\n range = { from, to: min > 0 ? undefined : date };\n }\n else if (isSameDay(to, date)) {\n // adding a dare equal to the end of the range\n range = { from: date, to: min > 0 ? undefined : date };\n }\n else if (isBefore(date, from)) {\n // adding a date before the start of the range\n range = { from: date, to: to };\n }\n else if (isAfter(date, from)) {\n // adding a date after the start of the range\n range = { from, to: date };\n }\n else if (isAfter(date, to)) {\n // adding a date after the end of the range\n range = { from, to: date };\n }\n else {\n throw new Error(\"Invalid range\");\n }\n }\n // check for min / max\n if (range?.from && range?.to) {\n const diff = dateLib.differenceInCalendarDays(range.to, range.from);\n if (max > 0 && diff > max) {\n range = { from: date, to: undefined };\n }\n else if (min > 1 && diff < min) {\n range = { from: date, to: undefined };\n }\n }\n return range;\n}\n//# sourceMappingURL=addToRange.js.map","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Returns whether a date range contains one or more days of the week.\n *\n * ```tsx\n * const range: DateRange = {\n * from: new Date(2024, 8, 1), // Sunday\n * to: new Date(2024, 8, 6) // Thursday\n * };\n * rangeContainsDayOfWeek(date, 1); // true: contains range contains Monday\n * ```\n *\n * @since 9.2.2\n * @group Utilities\n */\nexport function rangeContainsDayOfWeek(range, dayOfWeek, dateLib = defaultDateLib) {\n const dayOfWeekArr = !Array.isArray(dayOfWeek) ? [dayOfWeek] : dayOfWeek;\n let date = range.from;\n const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);\n // iterate at maximum one week or the total days if the range is shorter than one week\n const totalDaysLimit = Math.min(totalDays, 6);\n for (let i = 0; i <= totalDaysLimit; i++) {\n if (dayOfWeekArr.includes(date.getDay())) {\n return true;\n }\n date = dateLib.addDays(date, 1);\n }\n return false;\n}\n//# sourceMappingURL=rangeContainsDayOfWeek.js.map","import { defaultDateLib } from \"../classes/index.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\n/**\n * Determines whether a given range overlaps with another range.\n *\n * @since 9.2.2\n * @group Utilities\n */\nexport function rangeOverlaps(rangeLeft, rangeRight, dateLib = defaultDateLib) {\n return (rangeIncludesDate(rangeLeft, rangeRight.from, false, dateLib) ||\n rangeIncludesDate(rangeLeft, rangeRight.to, false, dateLib) ||\n rangeIncludesDate(rangeRight, rangeLeft.from, false, dateLib) ||\n rangeIncludesDate(rangeRight, rangeLeft.to, false, dateLib));\n}\n//# sourceMappingURL=rangeOverlaps.js.map","import { defaultDateLib } from \"../classes/DateLib.js\";\nimport { dateMatchModifiers } from \"./dateMatchModifiers.js\";\nimport { rangeContainsDayOfWeek } from \"./rangeContainsDayOfWeek.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\nimport { rangeOverlaps } from \"./rangeOverlaps.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDatesArray, isDayOfWeekType } from \"./typeguards.js\";\n/**\n * Returns whether a range contains dates that match the given modifiers.\n *\n * ```tsx\n * const range: DateRange = {\n * from: new Date(2021, 12, 21),\n * to: new Date(2021, 12, 30)\n * };\n * const matcher1: Date = new Date(2021, 12, 21);\n * const matcher2: DateRange = {\n * from: new Date(2022, 5, 1),\n * to: new Date(2022, 5, 23)\n * };\n * rangeContainsModifiers(range, [matcher1, matcher2]); // true, since matcher1 is in the date.\n * ```\n *\n * @since 9.2.2\n * @group Utilities\n */\nexport function rangeContainsModifiers(range, modifiers, dateLib = defaultDateLib) {\n const matchers = Array.isArray(modifiers) ? modifiers : [modifiers];\n // Defer function matchers evaluation as they are the least performant.\n const nonFunctionMatchers = matchers.filter((matcher) => typeof matcher !== \"function\");\n const nonFunctionMatchersResult = nonFunctionMatchers.some((matcher) => {\n if (typeof matcher === \"boolean\")\n return matcher;\n if (dateLib.isDate(matcher)) {\n return rangeIncludesDate(range, matcher, false, dateLib);\n }\n if (isDatesArray(matcher, dateLib)) {\n return matcher.some((date) => rangeIncludesDate(range, date, false, dateLib));\n }\n if (isDateRange(matcher)) {\n if (matcher.from && matcher.to) {\n return rangeOverlaps(range, { from: matcher.from, to: matcher.to }, dateLib);\n }\n return false;\n }\n if (isDayOfWeekType(matcher)) {\n return rangeContainsDayOfWeek(range, matcher.dayOfWeek, dateLib);\n }\n if (isDateInterval(matcher)) {\n const isClosedInterval = dateLib.isAfter(matcher.before, matcher.after);\n if (isClosedInterval) {\n return rangeOverlaps(range, {\n from: dateLib.addDays(matcher.after, 1),\n to: dateLib.addDays(matcher.before, -1)\n }, dateLib);\n }\n return (dateMatchModifiers(range.from, matcher, dateLib) ||\n dateMatchModifiers(range.to, matcher, dateLib));\n }\n if (isDateAfterType(matcher) || isDateBeforeType(matcher)) {\n return (dateMatchModifiers(range.from, matcher, dateLib) ||\n dateMatchModifiers(range.to, matcher, dateLib));\n }\n return false;\n });\n if (nonFunctionMatchersResult) {\n return true;\n }\n const functionMatchers = matchers.filter((matcher) => typeof matcher === \"function\");\n if (functionMatchers.length) {\n let date = range.from;\n const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);\n for (let i = 0; i <= totalDays; i++) {\n if (functionMatchers.some((matcher) => matcher(date))) {\n return true;\n }\n date = dateLib.addDays(date, 1);\n }\n }\n return false;\n}\n//# sourceMappingURL=rangeContainsModifiers.js.map","import { useControlledValue } from \"../helpers/useControlledValue.js\";\nimport { addToRange, rangeContainsModifiers } from \"../utils/index.js\";\nimport { rangeIncludesDate } from \"../utils/rangeIncludesDate.js\";\nexport function useRange(props, dateLib) {\n const { disabled, excludeDisabled, selected: initiallySelected, required, onSelect } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const isSelected = (date) => selected && rangeIncludesDate(selected, date, false, dateLib);\n const select = (triggerDate, modifiers, e) => {\n const { min, max } = props;\n const newRange = triggerDate\n ? addToRange(triggerDate, selected, min, max, required, dateLib)\n : undefined;\n if (excludeDisabled && disabled && newRange?.from && newRange.to) {\n if (rangeContainsModifiers({ from: newRange.from, to: newRange.to }, disabled, dateLib)) {\n // if a disabled days is found, the range is reset\n newRange.from = triggerDate;\n newRange.to = undefined;\n }\n }\n if (!onSelect) {\n setSelected(newRange);\n }\n onSelect?.(newRange, triggerDate, modifiers, e);\n return newRange;\n };\n return {\n selected,\n select,\n isSelected\n };\n}\n//# sourceMappingURL=useRange.js.map","import { useControlledValue } from \"../helpers/useControlledValue.js\";\nexport function useSingle(props, dateLib) {\n const { selected: initiallySelected, required, onSelect } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const { isSameDay } = dateLib;\n const isSelected = (compareDate) => {\n return selected ? isSameDay(selected, compareDate) : false;\n };\n const select = (triggerDate, modifiers, e) => {\n let newDate = triggerDate;\n if (!required && selected && selected && isSameDay(triggerDate, selected)) {\n // If the date is the same, clear the selection.\n newDate = undefined;\n }\n if (!onSelect) {\n setSelected(newDate);\n }\n if (required) {\n onSelect?.(newDate, triggerDate, modifiers, e);\n }\n else {\n onSelect?.(newDate, triggerDate, modifiers, e);\n }\n return newDate;\n };\n return {\n selected,\n select,\n isSelected\n };\n}\n//# sourceMappingURL=useSingle.js.map","import { useMulti } from \"./selection/useMulti.js\";\nimport { useRange } from \"./selection/useRange.js\";\nimport { useSingle } from \"./selection/useSingle.js\";\nexport function useSelection(props, dateLib) {\n const single = useSingle(props, dateLib);\n const multi = useMulti(props, dateLib);\n const range = useRange(props, dateLib);\n switch (props.mode) {\n case \"single\":\n return single;\n case \"multiple\":\n return multi;\n case \"range\":\n return range;\n default:\n return undefined;\n }\n}\n//# sourceMappingURL=useSelection.js.map","import React, { useCallback, useMemo } from \"react\";\nimport { UI, DayFlag, SelectionState } from \"./UI.js\";\nimport { DateLib, defaultLocale } from \"./classes/DateLib.js\";\nimport { getClassNamesForModifiers } from \"./helpers/getClassNamesForModifiers.js\";\nimport { getComponents } from \"./helpers/getComponents.js\";\nimport { getDataAttributes } from \"./helpers/getDataAttributes.js\";\nimport { getDefaultClassNames } from \"./helpers/getDefaultClassNames.js\";\nimport { getFormatters } from \"./helpers/getFormatters.js\";\nimport { getMonthOptions } from \"./helpers/getMonthOptions.js\";\nimport { getStyleForModifiers } from \"./helpers/getStyleForModifiers.js\";\nimport { getWeekdays } from \"./helpers/getWeekdays.js\";\nimport { getYearOptions } from \"./helpers/getYearOptions.js\";\nimport * as defaultLabels from \"./labels/index.js\";\nimport { useCalendar } from \"./useCalendar.js\";\nimport { dayPickerContext } from \"./useDayPicker.js\";\nimport { useFocus } from \"./useFocus.js\";\nimport { useGetModifiers } from \"./useGetModifiers.js\";\nimport { useSelection } from \"./useSelection.js\";\nimport { rangeIncludesDate } from \"./utils/rangeIncludesDate.js\";\nimport { isDateRange } from \"./utils/typeguards.js\";\n/**\n * Render the date picker calendar.\n *\n * @group DayPicker\n * @see https://daypicker.dev\n */\nexport function DayPicker(props) {\n const { components, formatters, labels, dateLib, locale, classNames } = useMemo(() => {\n const locale = { ...defaultLocale, ...props.locale };\n const dateLib = new DateLib({\n locale,\n weekStartsOn: props.broadcastCalendar ? 1 : props.weekStartsOn,\n firstWeekContainsDate: props.firstWeekContainsDate,\n useAdditionalWeekYearTokens: props.useAdditionalWeekYearTokens,\n useAdditionalDayOfYearTokens: props.useAdditionalDayOfYearTokens\n }, props.dateLib);\n return {\n dateLib,\n components: getComponents(props.components),\n formatters: getFormatters(props.formatters),\n labels: { ...defaultLabels, ...props.labels },\n locale,\n classNames: { ...getDefaultClassNames(), ...props.classNames }\n };\n }, [\n props.classNames,\n props.components,\n props.dateLib,\n props.firstWeekContainsDate,\n props.formatters,\n props.labels,\n props.locale,\n props.useAdditionalDayOfYearTokens,\n props.useAdditionalWeekYearTokens,\n props.weekStartsOn,\n props.broadcastCalendar\n ]);\n const { captionLayout, mode, onDayBlur, onDayClick, onDayFocus, onDayKeyDown, onDayMouseEnter, onDayMouseLeave, onNextClick, onPrevClick, showWeekNumber, styles } = props;\n const { formatCaption, formatDay, formatMonthDropdown, formatWeekNumber, formatWeekNumberHeader, formatWeekdayName, formatYearDropdown } = formatters;\n const calendar = useCalendar(props, dateLib);\n const { days, months, navStart, navEnd, previousMonth, nextMonth, goToMonth } = calendar;\n const getModifiers = useGetModifiers(days, props, dateLib);\n const { isSelected, select, selected: selectedValue } = useSelection(props, dateLib) ?? {};\n const { blur, focused, isFocusTarget, moveFocus, setFocused } = useFocus(props, calendar, getModifiers, isSelected ?? (() => false), dateLib);\n const { labelDayButton, labelGridcell, labelGrid, labelMonthDropdown, labelNav, labelWeekday, labelWeekNumber, labelWeekNumberHeader, labelYearDropdown } = labels;\n const weekdays = useMemo(() => getWeekdays(dateLib, props.ISOWeek, props.timeZone), [dateLib, props.ISOWeek, props.timeZone]);\n const isInteractive = mode !== undefined || onDayClick !== undefined;\n const handlePreviousClick = useCallback(() => {\n if (!previousMonth)\n return;\n goToMonth(previousMonth);\n onPrevClick?.(previousMonth);\n }, [previousMonth, goToMonth, onPrevClick]);\n const handleNextClick = useCallback(() => {\n if (!nextMonth)\n return;\n goToMonth(nextMonth);\n onNextClick?.(nextMonth);\n }, [goToMonth, nextMonth, onNextClick]);\n const handleDayClick = useCallback((day, m) => (e) => {\n e.preventDefault();\n e.stopPropagation();\n setFocused(day);\n select?.(day.date, m, e);\n onDayClick?.(day.date, m, e);\n }, [select, onDayClick, setFocused]);\n const handleDayFocus = useCallback((day, m) => (e) => {\n setFocused(day);\n onDayFocus?.(day.date, m, e);\n }, [onDayFocus, setFocused]);\n const handleDayBlur = useCallback((day, m) => (e) => {\n blur();\n onDayBlur?.(day.date, m, e);\n }, [blur, onDayBlur]);\n const handleDayKeyDown = useCallback((day, modifiers) => (e) => {\n const keyMap = {\n ArrowLeft: [\"day\", props.dir === \"rtl\" ? \"after\" : \"before\"],\n ArrowRight: [\"day\", props.dir === \"rtl\" ? \"before\" : \"after\"],\n ArrowDown: [\"week\", \"after\"],\n ArrowUp: [\"week\", \"before\"],\n PageUp: [e.shiftKey ? \"year\" : \"month\", \"before\"],\n PageDown: [e.shiftKey ? \"year\" : \"month\", \"after\"],\n Home: [\"startOfWeek\", \"before\"],\n End: [\"endOfWeek\", \"after\"]\n };\n if (keyMap[e.key]) {\n e.preventDefault();\n e.stopPropagation();\n const [moveBy, moveDir] = keyMap[e.key];\n moveFocus(moveBy, moveDir);\n }\n onDayKeyDown?.(day.date, modifiers, e);\n }, [moveFocus, onDayKeyDown, props.dir]);\n const handleDayMouseEnter = useCallback((day, modifiers) => (e) => {\n onDayMouseEnter?.(day.date, modifiers, e);\n }, [onDayMouseEnter]);\n const handleDayMouseLeave = useCallback((day, modifiers) => (e) => {\n onDayMouseLeave?.(day.date, modifiers, e);\n }, [onDayMouseLeave]);\n const handleMonthChange = useCallback((date) => (e) => {\n const selectedMonth = Number(e.target.value);\n const month = dateLib.setMonth(dateLib.startOfMonth(date), selectedMonth);\n goToMonth(month);\n }, [dateLib, goToMonth]);\n const handleYearChange = useCallback((date) => (e) => {\n const selectedYear = Number(e.target.value);\n const month = dateLib.setYear(dateLib.startOfMonth(date), selectedYear);\n goToMonth(month);\n }, [dateLib, goToMonth]);\n const { className, style } = useMemo(() => ({\n className: [classNames[UI.Root], props.className]\n .filter(Boolean)\n .join(\" \"),\n style: { ...styles?.[UI.Root], ...props.style }\n }), [classNames, props.className, props.style, styles]);\n const dataAttributes = getDataAttributes(props);\n const contextValue = {\n dayPickerProps: props,\n selected: selectedValue,\n select: select,\n isSelected,\n months,\n nextMonth,\n previousMonth,\n goToMonth,\n getModifiers,\n components,\n classNames,\n styles,\n labels,\n formatters\n };\n return (React.createElement(dayPickerContext.Provider, { value: contextValue },\n React.createElement(components.Root, { className: className, style: style, dir: props.dir, id: props.id, lang: props.lang, nonce: props.nonce, title: props.title, role: props.role, \"aria-label\": props[\"aria-label\"], ...dataAttributes },\n React.createElement(components.Months, { className: classNames[UI.Months], style: styles?.[UI.Months] },\n !props.hideNavigation && (React.createElement(components.Nav, { className: classNames[UI.Nav], style: styles?.[UI.Nav], \"aria-label\": labelNav(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth: previousMonth, nextMonth: nextMonth })),\n months.map((calendarMonth, displayIndex) => {\n const dropdownMonths = getMonthOptions(calendarMonth.date, navStart, navEnd, formatters, dateLib);\n const dropdownYears = getYearOptions(navStart, navEnd, formatters, dateLib);\n return (React.createElement(components.Month, { className: classNames[UI.Month], style: styles?.[UI.Month], key: displayIndex, displayIndex: displayIndex, calendarMonth: calendarMonth },\n React.createElement(components.MonthCaption, { className: classNames[UI.MonthCaption], style: styles?.[UI.MonthCaption], calendarMonth: calendarMonth, displayIndex: displayIndex }, captionLayout?.startsWith(\"dropdown\") ? (React.createElement(components.DropdownNav, { className: classNames[UI.Dropdowns], style: styles?.[UI.Dropdowns] },\n captionLayout === \"dropdown\" ||\n captionLayout === \"dropdown-months\" ? (React.createElement(components.MonthsDropdown, { className: classNames[UI.MonthsDropdown], \"aria-label\": labelMonthDropdown(), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date), options: dropdownMonths, style: styles?.[UI.Dropdown], value: calendarMonth.date.getMonth() })) : (React.createElement(\"span\", { role: \"status\", \"aria-live\": \"polite\" }, formatMonthDropdown(calendarMonth.date.getMonth(), locale))),\n captionLayout === \"dropdown\" ||\n captionLayout === \"dropdown-years\" ? (React.createElement(components.YearsDropdown, { className: classNames[UI.YearsDropdown], \"aria-label\": labelYearDropdown(dateLib.options), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date), options: dropdownYears, style: styles?.[UI.Dropdown], value: calendarMonth.date.getFullYear() })) : (React.createElement(\"span\", { role: \"status\", \"aria-live\": \"polite\" }, formatYearDropdown(calendarMonth.date.getFullYear()))))) : (React.createElement(components.CaptionLabel, { className: classNames[UI.CaptionLabel], role: \"status\", \"aria-live\": \"polite\" }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))),\n React.createElement(components.MonthGrid, { role: \"grid\", \"aria-multiselectable\": mode === \"multiple\" || mode === \"range\", \"aria-label\": labelGrid(calendarMonth.date, dateLib.options, dateLib) ||\n undefined, className: classNames[UI.MonthGrid], style: styles?.[UI.MonthGrid] },\n !props.hideWeekdays && (React.createElement(components.Weekdays, { className: classNames[UI.Weekdays], style: styles?.[UI.Weekdays] },\n showWeekNumber && (React.createElement(components.WeekNumberHeader, { \"aria-label\": labelWeekNumberHeader(dateLib.options), className: classNames[UI.WeekNumberHeader], style: styles?.[UI.WeekNumberHeader], scope: \"col\" }, formatWeekNumberHeader())),\n weekdays.map((weekday, i) => (React.createElement(components.Weekday, { \"aria-label\": labelWeekday(weekday, dateLib.options, dateLib), className: classNames[UI.Weekday], key: i, style: styles?.[UI.Weekday], scope: \"col\" }, formatWeekdayName(weekday, dateLib.options, dateLib)))))),\n React.createElement(components.Weeks, { className: classNames[UI.Weeks], style: styles?.[UI.Weeks] }, calendarMonth.weeks.map((week, weekIndex) => {\n return (React.createElement(components.Week, { className: classNames[UI.Week], key: week.weekNumber, style: styles?.[UI.Week], week: week },\n showWeekNumber && (React.createElement(components.WeekNumber, { week: week, style: styles?.[UI.WeekNumber], \"aria-label\": labelWeekNumber(week.weekNumber, {\n locale\n }), className: classNames[UI.WeekNumber], scope: \"row\", role: \"rowheader\" }, formatWeekNumber(week.weekNumber))),\n week.days.map((day) => {\n const { date } = day;\n const modifiers = getModifiers(day);\n modifiers[DayFlag.focused] =\n !modifiers.hidden &&\n Boolean(focused?.isEqualTo(day));\n modifiers[SelectionState.selected] =\n !modifiers.disabled &&\n (isSelected?.(date) || modifiers.selected);\n if (isDateRange(selectedValue)) {\n // add range modifiers\n const { from, to } = selectedValue;\n modifiers[SelectionState.range_start] = Boolean(from && to && dateLib.isSameDay(date, from));\n modifiers[SelectionState.range_end] = Boolean(from && to && dateLib.isSameDay(date, to));\n modifiers[SelectionState.range_middle] =\n rangeIncludesDate(selectedValue, date, true, dateLib);\n }\n const style = getStyleForModifiers(modifiers, styles, props.modifiersStyles);\n const className = getClassNamesForModifiers(modifiers, classNames, props.modifiersClassNames);\n const ariaLabel = !isInteractive && !modifiers.hidden\n ? labelGridcell(date, modifiers, dateLib.options, dateLib)\n : undefined;\n return (React.createElement(components.Day, { key: `${dateLib.format(date, \"yyyy-MM-dd\")}_${dateLib.format(day.displayMonth, \"yyyy-MM\")}`, day: day, modifiers: modifiers, className: className.join(\" \"), style: style, role: \"gridcell\", \"aria-selected\": modifiers.selected || undefined, \"aria-label\": ariaLabel, \"data-day\": dateLib.format(date, \"yyyy-MM-dd\"), \"data-month\": day.outside\n ? dateLib.format(date, \"yyyy-MM\")\n : undefined, \"data-selected\": modifiers.selected || undefined, \"data-disabled\": modifiers.disabled || undefined, \"data-hidden\": modifiers.hidden || undefined, \"data-outside\": day.outside || undefined, \"data-focused\": modifiers.focused || undefined, \"data-today\": modifiers.today || undefined }, !modifiers.hidden && isInteractive ? (React.createElement(components.DayButton, { className: classNames[UI.DayButton], style: styles?.[UI.DayButton], type: \"button\", day: day, modifiers: modifiers, disabled: modifiers.disabled || undefined, tabIndex: isFocusTarget(day) ? 0 : -1, \"aria-label\": labelDayButton(date, modifiers, dateLib.options, dateLib), onClick: handleDayClick(day, modifiers), onBlur: handleDayBlur(day, modifiers), onFocus: handleDayFocus(day, modifiers), onKeyDown: handleDayKeyDown(day, modifiers), onMouseEnter: handleDayMouseEnter(day, modifiers), onMouseLeave: handleDayMouseLeave(day, modifiers) }, formatDay(date, dateLib.options, dateLib))) : (!modifiers.hidden &&\n formatDay(day.date, dateLib.options, dateLib))));\n })));\n })))));\n })),\n props.footer && (React.createElement(components.Footer, { className: classNames[UI.Footer], style: styles?.[UI.Footer], role: \"status\", \"aria-live\": \"polite\" }, props.footer)))));\n}\n//# sourceMappingURL=DayPicker.js.map","import { CSSProperties } from 'react';\n\nimport { PopOverVariant } from '@helsenorge/designsystem-react/components/PopOver';\n\ntype HorizontalPosition = 'left' | 'right' | 'floating';\ntype BubblePosition = 'leftabove' | 'leftbelow' | 'rightabove' | 'rightbelow' | 'floatingabove' | 'floatingbelow';\n\n/** Bredde på hjelpeboble */\nconst BUBBLE_WIDTH_PX = 329;\n/** Hjelpeboblen skal holde avstand til venstre/høyre kant på vinduet */\nconst WINDOW_MARGIN_PX = 12;\n/** Vertikal avstand fra hjelpeboble til kontroller */\nconst BUBBLE_VERTICAL_OFFSET_PX = 26;\n/** Høyde/bredde på pil */\nconst ARROW_WIDTH_PX = 20;\n/** Avstand fra pil til hjelpeboble */\nconst ARROW_VERTICAL_OFFSET_PX = 9;\n/** Pilen skal holde avstand til venstre/høyre kant av hjelpeboblen */\nconst ARROW_HORIZONTAL_MARGIN_PX = 12;\n\n// @todo these functions are similar to the ones in utils in PopOver, should be moved to a shared location\n/**\n * Beregn om hjelpeboblen skal vises over eller under kontrolleren\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @param variant Ønsket plassering av hjelpeboblen (over/under/automatisk)\n * @returns Om hjelpeboblen skal vises over eller under\n */\nexport const getVerticalPosition = (\n controllerSize: DOMRect,\n bubbleSize: DOMRect,\n variant?: keyof typeof PopOverVariant\n): keyof typeof PopOverVariant => {\n if (variant !== PopOverVariant.positionautomatic && variant !== undefined) {\n return variant;\n }\n if (controllerSize.top > bubbleSize.height + BUBBLE_VERTICAL_OFFSET_PX) {\n return PopOverVariant.positionabove;\n } else {\n return PopOverVariant.positionbelow;\n }\n};\n\n/**\n * Finn horisontalt midtpunkt på kontrolleren i forhold til venstre kant av vinduet\n * @param controllerSize DOMRect for controlleren\n * @returns Horisontalt senter av controlleren i px\n */\nconst getControllerLeftEdgePx = (controllerSize: DOMRect): number => controllerSize.left + controllerSize.width / 4;\n\n/**\n * Finn horisontalt midtpunkt på kontrolleren i forhold til høyre kant av vinduet\n * @param controllerSize DOMRect for controlleren\n * @returns Horisontalt senter av controlleren i px\n */\nconst getControllerRightEdgePx = (controllerSize: DOMRect): number =>\n document.documentElement.clientWidth - controllerSize.right + controllerSize.width / 4;\n\n/**\n * Finn venstre kant av hjelpeboblen i forhold til kontrolleren\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns Venstre kant av hjelpeboblen i px\n */\n\n/**\n * Finn høyre kant av hjelpeboblen i forhold til kontrolleren\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns Høyre kant av hjelpeboblen i px\n */\nconst getBubbleRightPx = (controllerSize: DOMRect, bubbleSize: DOMRect): number => {\n return controllerSize.left + bubbleSize.width;\n};\n\n/**\n * Sjekk om venstre kant av hjelpeboblen er innenfor vinduet\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns true dersom venstre kant er innenfor vinduet\n */\nconst getBubbleLeftVisible = (controllerSize: DOMRect): boolean => {\n return controllerSize.left > WINDOW_MARGIN_PX;\n};\n\n/**\n * Sjekk om høyre kant av hjelpeboblen er innenfor vinduet\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns true dersom høyre kant er innenfor vinduet\n */\nconst getBubbleRightIsVisible = (controllerSize: DOMRect, bubbleSize: DOMRect): boolean => {\n const bubbleRightPx = getBubbleRightPx(controllerSize, bubbleSize);\n\n return bubbleRightPx < document.documentElement.clientWidth - WINDOW_MARGIN_PX;\n};\n\n/**\n * Finn riktig horisontal plassering til hjelpeboblen\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns left, right eller floating\n */\nconst getHorizontalPosition = (controllerSize: DOMRect, bubbleSize: DOMRect): HorizontalPosition => {\n if (!getBubbleRightIsVisible(controllerSize, bubbleSize)) {\n return 'right';\n }\n if (!getBubbleLeftVisible(controllerSize)) {\n return 'left';\n }\n\n return 'floating';\n};\n\n/**\n * Finn vertikal plassering av hjelpeboblen når den skal vises over\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns \"Top\" for hjelpeboblen i px\n */\nconst getBubbleAbovePx = (controllerSize: DOMRect, bubbleSize: DOMRect): number =>\n controllerSize.top - BUBBLE_VERTICAL_OFFSET_PX - bubbleSize.height;\n\n/**\n * Finn vertikal plassering av hjelpeboblen når den skal vises under\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns \"Top\" for hjelpeboblen i px\n */\nconst getBubbleBelowPx = (controllerSize: DOMRect): number => controllerSize.bottom + BUBBLE_VERTICAL_OFFSET_PX;\n\n/**\n * Finn maks bredde på hjelpeboblen i forhold til vinduet\n * @returns Bredde på hjelpeboblen i px\n */\nconst getBubbleWidth = (): number => document.documentElement.clientWidth - WINDOW_MARGIN_PX * 2;\n\n/**\n * Sjekk om hjelpeboblen har plass i vinduet\n * @returns true dersom det er plass til hjelpeboblen i vinduet\n */\nconst getBubbleFitsInWindow = (): boolean => {\n return document.documentElement.clientWidth > BUBBLE_WIDTH_PX + WINDOW_MARGIN_PX * 2;\n};\n\n/**\n * Finn vertikal plassering av pilen når den skal vises over\n * @param controllerSize DOMRect for controlleren\n * @returns \"Top\" for pilen i px\n */\nconst getArrowTopxPx = (controllerSize: DOMRect): number => controllerSize.top - BUBBLE_VERTICAL_OFFSET_PX - ARROW_VERTICAL_OFFSET_PX + 5;\n\n/**\n * Finn horisontal plassering av pilen i forhold til venstre kant av vinduet\n * @param controllerSize DOMRect for controlleren\n * @returns Venstre kant av pilen i px\n */\nconst getArrowLeftPx = (controllerSize: DOMRect): number => getControllerLeftEdgePx(controllerSize) - ARROW_WIDTH_PX / 2;\n\n/**\n * Finn horisontal plassering av pilen\n * @param controllerSize DOMRect for controlleren\n * @returns Venstre kant av pilen i px\n */\nconst getArrowRightPx = (controllerSize: DOMRect): number => getControllerRightEdgePx(controllerSize) - ARROW_WIDTH_PX / 2;\n\n/**\n * Finn riktig plassering av hjelpeboblen\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @param variant Ønsket plassering av hjelpeboblen (over/under)\n * @returns Beste mulige plassering av hjelpeboblen\n */\nconst getBubblePosition = (controllerSize: DOMRect, bubbleSize: DOMRect, variant: keyof typeof PopOverVariant): BubblePosition => {\n const horizontalPosition = getHorizontalPosition(controllerSize, bubbleSize);\n const verticalPosition = getVerticalPosition(controllerSize, bubbleSize, variant);\n\n if (horizontalPosition === 'left') {\n if (verticalPosition === PopOverVariant.positionabove) {\n return 'leftabove';\n }\n return 'leftbelow';\n }\n\n if (horizontalPosition === 'right') {\n if (verticalPosition === PopOverVariant.positionabove) {\n return 'rightabove';\n }\n return 'rightbelow';\n }\n\n if (verticalPosition === PopOverVariant.positionabove) {\n return 'floatingabove';\n }\n\n return 'floatingbelow';\n};\n\n/**\n * Finn riktig plassering av hjelpeboblen\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @param variant Ønsket plassering av hjelpeboblen (over/under)\n * @returns CSSProperties som plasserer hjelpeboblen riktig\n */\nexport const getBubbleStyle = (controllerSize: DOMRect, bubbleSize: DOMRect, variant: keyof typeof PopOverVariant): CSSProperties => {\n const bubblePosition = getBubblePosition(controllerSize, bubbleSize, variant);\n const bubbleWidth = !getBubbleFitsInWindow() ? getBubbleWidth() : undefined;\n\n if (bubblePosition === 'leftabove') {\n return {\n left: WINDOW_MARGIN_PX,\n top: getBubbleAbovePx(controllerSize, bubbleSize),\n width: bubbleWidth,\n };\n }\n if (bubblePosition === 'leftbelow') {\n return { left: WINDOW_MARGIN_PX, top: getBubbleBelowPx(controllerSize), width: bubbleWidth };\n }\n if (bubblePosition === 'rightabove') {\n return { right: WINDOW_MARGIN_PX, top: getBubbleAbovePx(controllerSize, bubbleSize), width: bubbleWidth };\n }\n if (bubblePosition === 'rightbelow') {\n return { right: WINDOW_MARGIN_PX, top: getBubbleBelowPx(controllerSize), width: bubbleWidth };\n }\n\n if (bubblePosition === 'floatingbelow') {\n return { left: getBubbleLeftPx(controllerSize, bubbleSize), top: getBubbleBelowPx(controllerSize), width: bubbleWidth };\n }\n\n return { left: getBubbleLeftPx(controllerSize, bubbleSize), top: getBubbleAbovePx(controllerSize, bubbleSize), width: bubbleWidth };\n};\n\n/**\n * Finn venstre kant av hjelpeboblen i forhold til kontrolleren\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns Venstre kant av hjelpeboblen i px\n */\nconst getBubbleLeftPx = (controllerSize: DOMRect, bubbleSize: DOMRect): number => {\n const controllerHorizontalCenterPx = getControllerLeftCenterPx(controllerSize);\n\n return controllerHorizontalCenterPx - bubbleSize.width / 2;\n};\n\n/**\n * Finn horisontalt midtpunkt på kontrolleren i forhold til venstre kant av vinduet\n * @param controllerSize DOMRect for controlleren\n * @returns Horisontalt senter av controlleren i px\n */\nconst getControllerLeftCenterPx = (controllerSize: DOMRect): number => controllerSize.left + controllerSize.width / 2;\n\n/**\n * Finn riktig plassering av pilen\n * @param bubbleStyle CSSProperties for hjelpeboblen\n * @param controllerSize DOMRect for kontrolleren\n * @param verticalPosition Ønsket plassering av hjelpeboblen (over/under)\n * @returns CSSProperties som plasserer pilen riktig\n */\nexport const getArrowStyle = (\n bubbleStyle: CSSProperties,\n controllerSize: DOMRect,\n verticalPosition: keyof typeof PopOverVariant\n): CSSProperties => {\n const leftPx = getArrowLeftPx(controllerSize);\n const rightPx = getArrowRightPx(controllerSize);\n const minLeftPx = (bubbleStyle.left as number) + ARROW_HORIZONTAL_MARGIN_PX;\n const minRightPx = (bubbleStyle.right as number) + ARROW_HORIZONTAL_MARGIN_PX;\n\n if (bubbleStyle.right) {\n if (verticalPosition === PopOverVariant.positionabove) {\n return {\n right: rightPx > minRightPx ? rightPx : minRightPx,\n top: getArrowTopxPx(controllerSize),\n };\n }\n\n return {\n right: rightPx > minRightPx ? rightPx : minRightPx,\n top: controllerSize.bottom + ARROW_VERTICAL_OFFSET_PX,\n };\n }\n\n if (verticalPosition === PopOverVariant.positionabove) {\n return {\n left: leftPx > minLeftPx ? leftPx : minLeftPx,\n top: getArrowTopxPx(controllerSize),\n };\n }\n\n return {\n left: leftPx > minLeftPx ? leftPx : minLeftPx,\n top: controllerSize.bottom + ARROW_VERTICAL_OFFSET_PX,\n };\n};\n","import React, { useState, useRef } from 'react';\n\nimport classNames from 'classnames';\nimport { Locale, format } from 'date-fns';\nimport { nb } from 'date-fns/locale';\nimport { DayPicker, DayPickerProps, PropsSingle, Labels } from 'react-day-picker';\nimport reactdaypickerstyles from 'react-day-picker/dist/style.module.css';\n\nimport { PopOverVariant } from '@helsenorge/designsystem-react/components/PopOver';\nimport { useFocusTrap } from '@helsenorge/designsystem-react/hooks/useFocusTrap';\nimport { useInterval } from '@helsenorge/designsystem-react/hooks/useInterval';\nimport { useIsVisible } from '@helsenorge/designsystem-react/hooks/useIsVisible';\nimport { useLayoutEvent } from '@helsenorge/designsystem-react/hooks/useLayoutEvent';\nimport { useSize } from '@helsenorge/designsystem-react/hooks/useSize';\nimport { getSpacer } from '@helsenorge/designsystem-react/theme/currys/spacing';\n\nimport { getArrowStyle, getBubbleStyle, getVerticalPosition } from './position-utils';\n\nimport styles from './styles.module.scss';\n\nexport interface DatePickerAriaLabels {\n /** Tekst brukt for vanlige dager i kalenderen.\n * {date} - placeholder for den faktiske datoen.\n */\n dayButtonBase?: string;\n\n /** Tekst brukt når en dag er \"i dag\".\n * {date} - placeholder for den faktiske datoen.\n */\n dayButtonToday?: string;\n\n /** Tekst brukt når en dag er valgt.\n * {date} - placeholder for den faktiske datoen.\n */\n dayButtonSelected?: string;\n\n /** Tekst brukt for knappen som viser neste måned. */\n nextMonth?: string;\n\n /** Tekst brukt for knappen som viser forrige måned. */\n previousMonth?: string;\n\n /** Tekst brukt for nedtrekkslisten over måneder. */\n monthDropdown?: string;\n\n /** Tekst brukt for nedtrekkslisten over år. */\n yearDropdown?: string;\n}\n\ninterface DatePickerPopupProps\n extends Pick<\n DayPickerProps,\n 'dir' | 'disabled' | 'footer' | 'startMonth' | 'initialFocus' | 'locale' | 'month' | 'onMonthChange' | 'endMonth'\n >,\n Pick<PropsSingle, 'selected' | 'onSelect'> {\n ariaLabels?: DatePickerAriaLabels;\n datepickerWrapperRef: React.RefObject<HTMLDivElement>;\n inputRef: React.RefObject<HTMLInputElement>;\n testId?: string;\n variant: keyof typeof PopOverVariant;\n zIndex?: number;\n}\n\nconst DatePickerPopup: React.FC<DatePickerPopupProps> = props => {\n const { ariaLabels, datepickerWrapperRef, endMonth, footer, inputRef, locale, startMonth, testId, variant, zIndex, ...rest } = props;\n\n const today = new Date();\n const arrowRef = useRef<HTMLDivElement>(null);\n const [controllerSize, setControllerSize] = useState<DOMRect>();\n const bubbleSize = useSize(datepickerWrapperRef);\n const controllerisVisible = useIsVisible(datepickerWrapperRef, 0);\n useFocusTrap(datepickerWrapperRef, true);\n\n function getDateFnsLocale(dayPickerLocale?: Partial<Locale>): Locale {\n return (dayPickerLocale as Locale) ?? nb;\n }\n\n const buildAriaLabels = (custom: DatePickerAriaLabels = {}): Partial<Labels> => {\n return {\n labelDayButton: (date, modifiers): string => {\n const dateString = format(date, 'PPPP', {\n locale: getDateFnsLocale(locale),\n });\n\n let label = custom.dayButtonBase ? custom.dayButtonBase.replace('{date}', dateString) : dateString;\n\n if (modifiers.today && custom.dayButtonToday) {\n label = custom.dayButtonToday.replace('{date}', dateString);\n }\n\n if (modifiers.selected && custom.dayButtonSelected) {\n label = custom.dayButtonSelected.replace('{date}', dateString);\n }\n\n return label;\n },\n\n labelNext: (): string => {\n return custom.nextMonth ?? 'Neste måned';\n },\n labelPrevious: (): string => {\n return custom.previousMonth ?? 'Forrige måned';\n },\n labelMonthDropdown: (): string => {\n return custom.monthDropdown ?? 'Velg måned';\n },\n labelYearDropdown: (): string => {\n return custom.yearDropdown ?? 'Velg år';\n },\n };\n };\n\n const updateControllerSize = (): void => {\n setControllerSize(inputRef.current?.getBoundingClientRect());\n };\n\n React.useEffect(() => {\n updateControllerSize();\n }, []);\n\n useInterval(updateControllerSize, 500);\n useLayoutEvent(updateControllerSize, ['scroll', 'resize'], 10);\n\n const datepickerPopupContainerClasses = classNames(styles['datepicker-popup-container'], {\n [styles['datepicker-popup-container--visible']]: controllerisVisible,\n });\n const verticalPosition = controllerSize && bubbleSize && getVerticalPosition(controllerSize, bubbleSize, variant);\n const popupArrowClasses = classNames(styles['datepicker-popup-arrow'], {\n [styles['datepicker-popup-arrow--visible']]: controllerisVisible,\n [styles['datepicker-popup-arrow--over']]: verticalPosition === PopOverVariant.positionbelow,\n [styles['datepicker-popup-arrow--under']]: verticalPosition === PopOverVariant.positionabove,\n });\n\n const bubbleStyle = controllerSize && bubbleSize && getBubbleStyle(controllerSize, bubbleSize, variant);\n const arrowStyle = bubbleStyle && controllerSize && verticalPosition && getArrowStyle(bubbleStyle, controllerSize, verticalPosition);\n\n const datePickerClassNames = {\n ...reactdaypickerstyles,\n ...styles,\n };\n\n return (\n <>\n <div className={datepickerPopupContainerClasses} data-testid={testId} ref={datepickerWrapperRef} style={{ ...bubbleStyle, zIndex }}>\n <DayPicker\n captionLayout=\"dropdown\"\n classNames={datePickerClassNames}\n mode={'single'}\n style={{ '--rdp-cell-size': getSpacer('l') } as React.CSSProperties}\n modifiersClassNames={{\n today: styles['day--today'],\n selected: styles['day--selected'],\n disabled: styles['day--disabled'],\n }}\n footer={<span className={styles['footer-wrapper']}>{footer}</span>}\n fixedWeeks\n labels={buildAriaLabels(ariaLabels)}\n startMonth={startMonth ?? new Date(today.getFullYear() - 100, today.getMonth(), 1)}\n endMonth={endMonth ?? new Date(today.getFullYear() + 100, today.getMonth(), 1)}\n {...rest}\n />\n </div>\n <div ref={arrowRef} className={popupArrowClasses} style={{ ...arrowStyle, zIndex }} />\n </>\n );\n};\n\nexport default DatePickerPopup;\n","import React, { useState, useRef, useEffect } from 'react';\n\nimport { Locale, format, isValid, parse } from 'date-fns';\nimport { nb } from 'date-fns/locale';\nimport { Modifiers, DayOfWeek, DayPickerProps, PropsSingle } from 'react-day-picker';\n\nimport Button from '@helsenorge/designsystem-react/components/Button';\nimport { ErrorWrapperClassNameProps } from '@helsenorge/designsystem-react/components/ErrorWrapper';\nimport Icon from '@helsenorge/designsystem-react/components/Icon';\nimport Calendar from '@helsenorge/designsystem-react/components/Icons/Calendar';\nimport Input from '@helsenorge/designsystem-react/components/Input';\nimport { PopOverVariant } from '@helsenorge/designsystem-react/components/PopOver';\nimport { KeyboardEventKey, ZIndex } from '@helsenorge/designsystem-react/constants';\nimport { useKeyboardEvent } from '@helsenorge/designsystem-react/hooks/useKeyboardEvent';\nimport { useOutsideEvent } from '@helsenorge/designsystem-react/hooks/useOutsideEvent';\nimport { usePseudoClasses } from '@helsenorge/designsystem-react/hooks/usePseudoClasses';\nimport { isMobileUA } from '@helsenorge/designsystem-react/utils/mobile';\nimport { isMutableRefObject, mergeRefs } from '@helsenorge/designsystem-react/utils/refs';\n\nimport DatePickerPopup, { DatePickerAriaLabels } from './DatePickerPopup';\n\nimport styles from './styles.module.scss';\n\nexport type DateFormat = 'dd.MM.yyyy';\n\nexport interface DatePickerProps\n extends ErrorWrapperClassNameProps,\n Pick<React.InputHTMLAttributes<HTMLInputElement>, 'name' | 'aria-describedby' | 'onBlur' | 'autoComplete'>,\n Pick<DayPickerProps, 'dir' | 'initialFocus'> {\n /** Setter labels for popup på desktop visning */\n ariaLabels?: DatePickerAriaLabels;\n /** Adds custom classes to the element. */\n className?: string;\n /** Sets aria-label on the button that opens the datepicker dialogue */\n dateButtonAriaLabel?: string;\n /** Sets the format of the date - only applies for desktop use. Native mobile date fields base their formats on the device */\n dateFormat?: DateFormat;\n /** Sets the date of the component */\n dateValue?: Date;\n /** Sets the current month */\n defaultMonth?: Date;\n /** Disables the datepicker */\n disabled?: boolean;\n /** Disables the days in the datepicker */\n disableDays?: Date[];\n /** Disables weekends in the datepicker */\n disableWeekends?: boolean;\n /** Activates Error style for the input */\n error?: boolean;\n /** Error text to show above the component */\n errorText?: string;\n /** Error text id */\n errorTextId?: string;\n /** Content to be rendered in the footer of the datepicker popup */\n footerContent?: React.ReactNode;\n /** Label of the input */\n label?: React.ReactNode;\n /** Input element id */\n inputId?: string;\n /** Sets the locale of the datepicker */\n locale?: Locale;\n /** Maximum date allowed to be selected */\n maxDate?: Date;\n /** Minimum date allowed to be selected */\n minDate?: Date;\n /** onChange callback triggered by change in chosen date */\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement> | React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>,\n date?: Date | string\n ) => void;\n /** Only use this to trigger validation. Callback triggered by change in chosen date via the datepicker popup */\n onDatePopupClosed?: (date: Date | string | undefined) => void;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Determines the placement of the DatePicker popup. Default: automatic positioning. */\n variant?: keyof typeof PopOverVariant;\n /** Overrides the default z-index of DatePicker */\n zIndex?: number;\n}\n\nexport const DatePicker = React.forwardRef((props: DatePickerProps, ref: React.Ref<HTMLInputElement>) => {\n const {\n className,\n dateButtonAriaLabel,\n dateFormat = 'dd.MM.yyyy',\n dateValue,\n defaultMonth,\n dir,\n disabled,\n disableDays = [],\n disableWeekends,\n error,\n errorText,\n errorTextId,\n errorWrapperClassName,\n footerContent,\n label,\n ariaLabels,\n inputId,\n locale = nb,\n maxDate,\n minDate,\n onBlur,\n onChange,\n onDatePopupClosed,\n testId,\n autoComplete = 'off',\n variant = PopOverVariant.positionautomatic,\n zIndex = ZIndex.PopOver,\n ...rest\n } = props;\n\n const [dateState, setDateState] = useState<Date | undefined>(dateValue);\n const [inputValue, setInputValue] = useState<string>(dateState ? format(dateState, dateFormat) : '');\n const [month, setMonth] = useState<Date | undefined>(defaultMonth);\n const [datePickerOpen, setDatePickerOpen] = useState<boolean>(false);\n const [returnInputFocus, setReturnInputFocus] = useState<boolean>(false);\n\n const weekendMatcher: DayOfWeek = {\n dayOfWeek: [0, 6],\n };\n const disabledDays = disableWeekends\n ? [...disableDays, weekendMatcher, ...(minDate ? [{ before: minDate }] : []), ...(maxDate ? [{ after: maxDate }] : [])]\n : [...disableDays, ...(minDate ? [{ before: minDate }] : []), ...(maxDate ? [{ after: maxDate }] : [])];\n\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const datepickerWrapperRef = useRef<HTMLDivElement>(null);\n const { refObject } = usePseudoClasses<HTMLInputElement>(isMutableRefObject(ref) ? ref : null);\n const mergedRefs = mergeRefs([ref, refObject]);\n const isTyping = useRef<boolean>(false);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useOutsideEvent(inputContainerRef, (e: any) => {\n if (\n inputContainerRef.current &&\n datepickerWrapperRef.current &&\n !e?.composedPath().includes(inputContainerRef.current) &&\n !e?.composedPath().includes(datepickerWrapperRef.current)\n ) {\n setDatePickerOpen(false);\n }\n });\n\n useEffect(() => {\n if (isValid(dateValue)) {\n setInputValue(dateValue ? format(dateValue, dateFormat) : '');\n setDateState(dateValue);\n setMonth(dateValue);\n } else {\n setInputValue('');\n setDateState(undefined);\n setMonth(undefined);\n }\n }, [dateValue, dateFormat]);\n\n useEffect(() => {\n if (returnInputFocus && refObject.current) {\n refObject.current.focus();\n }\n }, [returnInputFocus]);\n\n const handleEscapeKeyDown = (): void => {\n refObject?.current && refObject.current.focus();\n setDatePickerOpen(false);\n };\n\n useKeyboardEvent(datepickerWrapperRef, handleEscapeKeyDown, [KeyboardEventKey.Escape]);\n useKeyboardEvent(inputWrapperRef, handleEscapeKeyDown, [KeyboardEventKey.Escape]);\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>, inputFormat: string): void => {\n setInputValue(event.currentTarget.value);\n const newDate = parse(event.currentTarget.value, inputFormat, new Date());\n\n if (isValid(newDate)) {\n setDateState(newDate);\n setMonth(newDate);\n } else {\n setDateState(undefined);\n }\n\n onChange && onChange(event, event.currentTarget.value);\n };\n\n const handleInputFocus = (): void => {\n if (!returnInputFocus) {\n setDatePickerOpen(true);\n } else {\n setReturnInputFocus(false);\n }\n };\n\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const handleSingleDatePickerSelect: PropsSingle['onSelect'] = (\n date: Date | undefined,\n _selectedDay: Date,\n _activeModifiers: Modifiers,\n e: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>\n ): void => {\n setReturnInputFocus(true);\n\n if (!date) {\n setDatePickerOpen(false);\n return;\n }\n\n setDateState(date);\n\n if (refObject.current) {\n setInputValue(format(date, dateFormat));\n setDatePickerOpen(false);\n }\n\n onChange && onChange(e, date);\n triggerSyntheticInputEvents(refObject, format(date, dateFormat), date);\n onDatePopupClosed && onDatePopupClosed(date);\n };\n\n // We do this to make sure selecting from the DatePickerPopup triggers the onChange events properly, and works with react-hook-form\n const triggerSyntheticInputEvents = (\n inputRef: React.RefObject<HTMLInputElement>,\n value: string,\n date: Date,\n _onChange?: (event: React.ChangeEvent<HTMLInputElement>, date: Date) => void\n ): void => {\n if (inputRef.current) {\n inputRef.current.value = value;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const inputEvent = new Event('change', { bubbles: true });\n\n // Since the event is synthetic we have to add the target for webcomponents to not throw an error\n Object.defineProperty(inputEvent, 'target', {\n value: inputRef.current,\n writable: false,\n enumerable: true,\n configurable: true,\n });\n\n Object.defineProperty(inputEvent, 'currentTarget', {\n value: inputRef.current,\n writable: false,\n enumerable: true,\n configurable: true,\n });\n\n inputRef.current.dispatchEvent(inputEvent);\n\n if (onChange) {\n onChange(inputEvent as unknown as React.ChangeEvent<HTMLInputElement>, date);\n }\n }\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement, Element>): void => {\n // We don't trigger the native onBlur event if the user select via the datepicker and the onDatePopupClosed callback is used (usually to trigger validation manually)\n if (!datePickerOpen && (typeof onDatePopupClosed === 'undefined' || isTyping.current)) {\n onBlur && onBlur(e);\n }\n\n isTyping.current = false;\n };\n\n const handleButtonClick = (\n e?: React.MouseEvent<HTMLElement, MouseEvent> | React.FormEvent<{}> | React.KeyboardEvent<HTMLUListElement> | null | undefined\n ): void => {\n e?.stopPropagation();\n setDatePickerOpen(!datePickerOpen);\n };\n\n // This differentiates between typing in the input field and selecting a date from the datepicker, especially on native mobile date fields\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent): void => {\n if (!['Escape', 'Enter', 'Tab'].includes(e.key)) {\n isTyping.current = true;\n setDatePickerOpen(false);\n }\n };\n\n const inputElement = refObject.current;\n if (inputElement) {\n inputElement.addEventListener('keydown', handleKeyDown);\n }\n\n return (): void => {\n if (inputElement) {\n inputElement.removeEventListener('keydown', handleKeyDown);\n }\n };\n }, [refObject]);\n\n const handleMobileInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n handleInputChange(e, 'yyyy-MM-dd');\n\n if (!isTyping.current) {\n onDatePopupClosed && onDatePopupClosed(dateState);\n }\n };\n\n const renderMobile = (\n <Input\n disabled={disabled}\n error={error}\n errorText={errorText}\n errorTextId={errorTextId}\n inputId={inputId}\n label={label}\n max={maxDate ? format(maxDate, 'yyyy-MM-dd') : ''}\n min={minDate ? format(minDate, 'yyyy-MM-dd') : ''}\n type=\"date\"\n ref={mergedRefs}\n value={dateState ? format(dateState, 'yyyy-MM-dd') : ''}\n width={14}\n {...rest}\n onBlur={handleInputBlur}\n onChange={handleMobileInputChange}\n autoComplete={autoComplete ? autoComplete : undefined}\n />\n );\n\n const renderDesktop = (\n <>\n <div>\n <Input\n errorWrapperClassName={errorWrapperClassName}\n disabled={disabled}\n error={error}\n errorText={errorText}\n errorTextId={errorTextId}\n inputId={inputId}\n inputContainerRef={inputContainerRef}\n inputWrapperRef={inputWrapperRef}\n label={label}\n onFocus={handleInputFocus}\n type=\"text\"\n ref={mergedRefs}\n value={inputValue}\n width={12}\n {...rest}\n onBlur={handleInputBlur}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleInputChange(e, 'yyyy-MM-dd')}\n rightOfInput={\n <Button\n disabled={disabled}\n ariaLabel={dateButtonAriaLabel ?? 'Velg dato'}\n onClick={handleButtonClick}\n tabIndex={datePickerOpen ? -1 : 0}\n variant={'borderless'}\n wrapperClassName={styles['date-button']}\n className={styles['date-button__inner']}\n >\n <Icon color={'black'} svgIcon={Calendar} />\n </Button>\n }\n autoComplete={autoComplete ? autoComplete : undefined}\n />\n </div>\n {datePickerOpen && !disabled && (\n <DatePickerPopup\n dir={dir}\n disabled={disabledDays}\n datepickerWrapperRef={datepickerWrapperRef}\n footer={footerContent}\n startMonth={minDate}\n endMonth={maxDate}\n inputRef={refObject}\n locale={locale}\n month={month}\n selected={dateState}\n onSelect={handleSingleDatePickerSelect}\n onMonthChange={setMonth}\n variant={variant}\n zIndex={zIndex}\n ariaLabels={ariaLabels}\n />\n )}\n </>\n );\n\n return (\n <div className={className} data-testid={testId}>\n {isMobileUA() ? renderMobile : renderDesktop}\n </div>\n );\n});\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n","import React, { useEffect, useState } from 'react';\n\nimport { ErrorWrapperClassNameProps } from '@helsenorge/designsystem-react/components/ErrorWrapper';\nimport Input from '@helsenorge/designsystem-react/components/Input';\nimport { usePseudoClasses } from '@helsenorge/designsystem-react/hooks/usePseudoClasses';\nimport { isMutableRefObject, mergeRefs } from '@helsenorge/designsystem-react/utils/refs';\n\nimport styles from './styles.module.scss';\n\nexport type TimeUnit = 'hours' | 'minutes';\n\nexport interface DateTimeProps\n extends ErrorWrapperClassNameProps,\n Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'name' | 'aria-describedby' | 'aria-labelledby' | 'onBlur' | 'onChange' | 'disabled' | 'autoComplete'\n > {\n /** Default value that is set on the input field */\n defaultValue?: number;\n /** Activates Error style for the input */\n error?: boolean;\n /** Error text to show above the component */\n errorText?: string;\n /** Error text id */\n errorTextId?: string;\n /** input id of the checkbox */\n inputId?: string;\n /** Label of the input */\n label?: React.ReactNode;\n /** Sets the unit of time for the input field */\n timeUnit: TimeUnit;\n /** Value that is set on the input field */\n value?: number;\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nconst formatAsTwoDigits = (value: string | number): string => {\n const stringValue = String(value);\n return stringValue.length === 1 ? '0' + stringValue : stringValue;\n};\n\nconst isNumericString = (str: string): boolean => {\n return !str || (/^\\d+$/.test(str) && str.length <= 2);\n};\n\nexport const DateTime = React.forwardRef((props: DateTimeProps, ref: React.Ref<HTMLInputElement>) => {\n const {\n error,\n errorText,\n errorTextId,\n errorWrapperClassName,\n label,\n onBlur,\n onChange,\n timeUnit,\n testId,\n inputId,\n value,\n autoComplete = 'off',\n ...rest\n } = props;\n\n const [inputValue, setInputValue] = useState<number | string | undefined>(\n typeof value !== 'undefined' ? formatAsTwoDigits(value) : undefined\n );\n const { refObject } = usePseudoClasses<HTMLInputElement>(isMutableRefObject(ref) ? ref : null);\n const mergedRefs = mergeRefs([ref, refObject]);\n\n useEffect(() => {\n setInputValue(value ? formatAsTwoDigits(value) : undefined);\n }, [value]);\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const value = event.target.value;\n\n if (isNumericString(value)) {\n setInputValue(value);\n onChange && onChange(event);\n }\n };\n\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>): void => {\n const formattedValue = formatAsTwoDigits(event.target.value);\n setInputValue(formattedValue);\n onChange && onChange(event);\n onBlur && onBlur(event);\n };\n\n /** Firefox stopper ikke vanlige characters fra å skrives til input type number - derfor håndterer vi det selv her */\n const handleInputOnKeyDown = (event: React.KeyboardEvent) => {\n const validChars = /[0-9]/;\n const allowedKeys = ['Backspace', ' ', 'Enter', 'Tab', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n if (!validChars.test(event.key) && !allowedKeys.includes(event.key)) {\n event.preventDefault();\n }\n };\n\n const renderTimeSeparator = (): React.ReactNode => {\n return timeUnit === 'hours' && <span className={styles['time-separator']}>{':'}</span>;\n };\n\n return (\n <div data-testid={testId}>\n <Input\n inputId={inputId}\n error={error}\n errorText={errorText}\n errorTextId={errorTextId}\n errorWrapperClassName={errorWrapperClassName}\n label={label}\n max={timeUnit === 'hours' ? 23 : 59}\n min={0}\n type=\"number\"\n ref={mergedRefs}\n value={inputValue}\n width={5}\n defaultValue={typeof props.defaultValue !== 'undefined' ? formatAsTwoDigits(props.defaultValue) : undefined}\n {...rest}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n rightOfInput={renderTimeSeparator()}\n onKeyDown={handleInputOnKeyDown}\n autoComplete={autoComplete ? autoComplete : undefined}\n />\n </div>\n );\n});\n\nDateTime.displayName = 'DateTime';\n\nexport default DateTime;\n","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport ErrorWrapper, { ErrorWrapperClassNameProps } from '@helsenorge/designsystem-react/components/ErrorWrapper';\nimport { useUuid } from '@helsenorge/designsystem-react/hooks/useUuid';\nimport { isComponent } from '@helsenorge/designsystem-react/utils/component';\n\nimport DatePicker, { DatePickerProps } from './DatePicker';\nimport DateTime, { DateTimeProps } from './DateTime';\n\nimport styles from './styles.module.scss';\n\nexport type TimeUnits = 'hours' | 'minutes';\n\ninterface DateTimePickerWrapperProps extends ErrorWrapperClassNameProps {\n /** Sets the children of the datetimepicker - the DatePicker and DateTime components go here */\n children?: React.ReactNode;\n /** Error text to show above the component */\n errorText?: string;\n /** text placed in the legend tag of the fieldset */\n legend?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nexport const DateTimePickerWrapper = React.forwardRef((props: DateTimePickerWrapperProps, ref: React.ForwardedRef<HTMLDivElement>) => {\n const { children, errorWrapperClassName, errorText, legend, testId } = props;\n const errorTextId = useUuid();\n\n const mapDateComponents = (child: React.ReactNode): React.ReactNode => {\n if (isComponent<DatePickerProps>(child, DatePicker)) {\n return React.cloneElement(child, {\n className: classNames(styles['date-time-picker-wrapper__date-picker']),\n error: !!errorText,\n errorTextId,\n });\n } else if (isComponent<DateTimeProps>(child, DateTime)) {\n return React.cloneElement(child, {\n error: !!errorText,\n errorTextId,\n });\n }\n return child;\n };\n\n return (\n <div ref={ref} tabIndex={-1}>\n <ErrorWrapper className={errorWrapperClassName} errorText={errorText} errorTextId={errorTextId}>\n {props.legend ? (\n <fieldset className={styles['date-time-picker-wrapper']} data-testid={testId}>\n {props.legend && <legend className={styles['date-time-picker-wrapper__legend']}>{legend}</legend>}\n {React.Children.map(children, mapDateComponents)}\n </fieldset>\n ) : (\n <div className={styles['date-time-picker-wrapper']}>{React.Children.map(children, mapDateComponents)}</div>\n )}\n </ErrorWrapper>\n </div>\n );\n});\n\nDateTimePickerWrapper.displayName = 'DateTimePickerWrapper';\n\nexport default DateTimePickerWrapper;\n","import { isWithinInterval, isAfter, isBefore, isSameDay, parse, isValid } from 'date-fns';\n\nexport const parseInputDate = (dateString: string): Date | null => {\n const possibleFormats = ['yyyy-MM-dd', 'dd.MM.yyyy'];\n\n for (const format of possibleFormats) {\n const parsedDate = parse(dateString, format, new Date());\n if (isValid(parsedDate)) {\n return parsedDate;\n }\n }\n\n return null;\n};\n\nexport const isValidDate = (dateString: string): boolean => {\n const date = new Date(dateString);\n return date instanceof Date && !isNaN(date.getTime());\n};\n\n/** react-hook-form fromDate and toDate validation */\nexport const validateMinMaxDate = (\n date: string,\n outsideRangeErrorMessage: string,\n invalidFormatErrorMessage?: string,\n minDate?: Date,\n maxDate?: Date\n): string | true => {\n const formattedDate = parseInputDate(date);\n const hasMinDate = typeof minDate !== 'undefined';\n const hasMaxDate = typeof maxDate !== 'undefined';\n if (!formattedDate || (hasMinDate && !isValid(minDate)) || (hasMaxDate && !isValid(maxDate))) {\n return invalidFormatErrorMessage || 'Invalid date format';\n }\n\n if (hasMinDate && !hasMaxDate && (isSameDay(formattedDate, minDate) || isAfter(formattedDate, minDate))) return true;\n else if (hasMaxDate && !hasMinDate && (isSameDay(formattedDate, maxDate) || isBefore(formattedDate, maxDate))) return true;\n else if (\n hasMinDate &&\n hasMaxDate &&\n (isSameDay(formattedDate, minDate) ||\n isSameDay(formattedDate, maxDate) ||\n isWithinInterval(formattedDate, { start: minDate, end: maxDate }))\n ) {\n return true;\n }\n\n return outsideRangeErrorMessage;\n};\n\n/** react-hook-form fromDate and toDate validation */\nexport const validateDisabledDates = (\n date: string,\n disabledDates: Date[],\n isDisabledErrorMessage: string,\n invalidFormatErrorMessage?: string\n): string | true => {\n const formattedDate = parseInputDate(date);\n if (!formattedDate) {\n return invalidFormatErrorMessage || 'Invalid date format';\n }\n if (!disabledDates.some(d => isSameDay(d, formattedDate))) {\n return true;\n }\n\n return isDisabledErrorMessage;\n};\n\n/** react-hook-form fromTime and toTime validation */\nexport const validateMinTimeMaxTime = (\n time: { hour: number; minute: number },\n errorMessage: string,\n minTime?: { hour: number; minute: number },\n maxTime?: { hour: number; minute: number }\n): string | true => {\n const timeParsed = parse((time.hour + ':' + time.minute).toString(), 'HH:mm', new Date());\n const minTimeParsed = parse((minTime?.hour + ':' + minTime?.minute).toString(), 'HH:mm', new Date());\n const maxTimeParsed = parse((maxTime?.hour + ':' + maxTime?.minute).toString(), 'HH:mm', new Date());\n\n if ((typeof minTime === 'undefined' || timeParsed >= minTimeParsed) && (typeof maxTime === 'undefined' || timeParsed <= maxTimeParsed)) {\n return true;\n }\n\n return errorMessage;\n};\n"],"names":["UI","DayFlag","SelectionState","classNames","components","labelPrevious","labelNext","addMonths","startOfMonth","defaultLocale","month","styles","format","startOfYear","endOfYear","addYears","isBefore","isSameYear","addDays","differenceInCalendarDays","differenceInCalendarMonths","endOfBroadcastWeek","endOfISOWeek","endOfMonth","endOfWeek","isAfter","startOfBroadcastWeek","startOfISOWeek","startOfWeek","initialDays","weekDays","getISOWeek","getWeek","weeks","week","startOfDay","isSameDay","addWeeks","max","min","useFocus","isSameMonth","days","locale","dateLib","formatCaption","formatDay","formatMonthDropdown","formatWeekNumber","formatWeekNumberHeader","formatWeekdayName","formatYearDropdown","labelDayButton","labelGridcell","labelGrid","labelMonthDropdown","labelNav","labelWeekday","labelWeekNumber","labelWeekNumberHeader","labelYearDropdown","style","className","setMonth","Button","value"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,IAAI;AAAA,CACV,SAAUA,KAAI;AAEX,EAAAA,IAAG,MAAM,IAAI;AAEb,EAAAA,IAAG,SAAS,IAAI;AAKhB,EAAAA,IAAG,KAAK,IAAI;AAEZ,EAAAA,IAAG,WAAW,IAAI;AAElB,EAAAA,IAAG,cAAc,IAAI;AAErB,EAAAA,IAAG,WAAW,IAAI;AAElB,EAAAA,IAAG,UAAU,IAAI;AAEjB,EAAAA,IAAG,cAAc,IAAI;AAErB,EAAAA,IAAG,QAAQ,IAAI;AAEf,EAAAA,IAAG,WAAW,IAAI;AAElB,EAAAA,IAAG,cAAc,IAAI;AAErB,EAAAA,IAAG,gBAAgB,IAAI;AAEvB,EAAAA,IAAG,OAAO,IAAI;AAEd,EAAAA,IAAG,QAAQ,IAAI;AAEf,EAAAA,IAAG,KAAK,IAAI;AAMZ,EAAAA,IAAG,iBAAiB,IAAI;AAMxB,EAAAA,IAAG,qBAAqB,IAAI;AAE5B,EAAAA,IAAG,MAAM,IAAI;AAEb,EAAAA,IAAG,OAAO,IAAI;AAEd,EAAAA,IAAG,SAAS,IAAI;AAEhB,EAAAA,IAAG,UAAU,IAAI;AAEjB,EAAAA,IAAG,YAAY,IAAI;AAEnB,EAAAA,IAAG,kBAAkB,IAAI;AAEzB,EAAAA,IAAG,eAAe,IAAI;AAC1B,GAAG,OAAO,KAAK,CAAA,EAAG;AAEX,IAAI;AAAA,CACV,SAAUC,UAAS;AAEhB,EAAAA,SAAQ,UAAU,IAAI;AAEtB,EAAAA,SAAQ,QAAQ,IAAI;AAEpB,EAAAA,SAAQ,SAAS,IAAI;AAErB,EAAAA,SAAQ,SAAS,IAAI;AAErB,EAAAA,SAAQ,OAAO,IAAI;AACvB,GAAG,YAAY,UAAU,CAAA,EAAG;AAKrB,IAAI;AAAA,CACV,SAAUC,iBAAgB;AAEvB,EAAAA,gBAAe,WAAW,IAAI;AAE9B,EAAAA,gBAAe,cAAc,IAAI;AAEjC,EAAAA,gBAAe,aAAa,IAAI;AAEhC,EAAAA,gBAAe,UAAU,IAAI;AACjC,GAAG,mBAAmB,iBAAiB,CAAA,EAAG;ACjG1C,MAAM,aAAa;AACnB,MAAM,aAAa;AAMZ,SAAS,yBAAyB,OAAO,SAAS;AAErD,QAAM,kBAAkB,QAAQ,aAAa,KAAK;AAElD,QAAM,iBAAiB,gBAAgB,OAAM,IAAK,IAAI,gBAAgB,OAAM,IAAK;AACjF,QAAM,qBAAqB,QAAQ,QAAQ,OAAO,CAAC,iBAAiB,CAAC;AACrE,QAAM,qBAAqB,QAAQ,QAAQ,oBAAoB,aAAa,IAAI,CAAC;AACjF,QAAM,gBAAgB,MAAM,SAAU,MAAK,mBAAmB,SAAQ,IAChE,aACA;AACN,SAAO;AACX;ACbO,SAAS,qBAAqB,MAAM,SAAS;AAChD,QAAM,eAAe,QAAQ,aAAa,IAAI;AAC9C,QAAM,YAAY,aAAa,OAAQ;AACvC,MAAI,cAAc,GAAG;AACjB,WAAO;AAAA,EACf,WACa,cAAc,GAAG;AACtB,WAAO,QAAQ,QAAQ,cAAc,KAAK,CAAC;AAAA,EACnD,OACS;AACD,WAAO,QAAQ,QAAQ,cAAc,MAAM,YAAY,EAAE;AAAA,EACjE;AACA;ACVO,SAAS,mBAAmB,MAAM,SAAS;AAC9C,QAAM,YAAY,qBAAqB,MAAM,OAAO;AACpD,QAAM,gBAAgB,yBAAyB,MAAM,OAAO;AAC5D,QAAM,UAAU,QAAQ,QAAQ,WAAW,gBAAgB,IAAI,CAAC;AAChE,SAAO;AACX;ACEO,MAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjB,YAAY,SAAS,WAAW;AAE5B,SAAK,OAAO;AAQZ,SAAK,UAAU,CAAC,MAAM,WAAW;;AAC7B,eAAO,UAAK,cAAL,mBAAgB,WACjB,KAAK,UAAU,QAAQ,MAAM,MAAM,IACnC,QAAQ,MAAM,MAAM;AAAA,IAC7B;AAQD,SAAK,YAAY,CAAC,MAAM,WAAW;;AAC/B,eAAO,UAAK,cAAL,mBAAgB,aACjB,KAAK,UAAU,UAAU,MAAM,MAAM,IACrC,UAAU,MAAM,MAAM;AAAA,IAC/B;AAQD,SAAK,WAAW,CAAC,MAAM,WAAW;;AAC9B,eAAO,UAAK,cAAL,mBAAgB,YACjB,KAAK,UAAU,SAAS,MAAM,MAAM,IACpC,SAAS,MAAM,MAAM;AAAA,IAC9B;AAQD,SAAK,WAAW,CAAC,MAAM,WAAW;;AAC9B,eAAO,UAAK,cAAL,mBAAgB,YACjB,KAAK,UAAU,SAAS,MAAM,MAAM,IACpC,SAAS,MAAM,MAAM;AAAA,IAC9B;AAQD,SAAK,2BAA2B,CAAC,UAAU,cAAc;;AACrD,eAAO,UAAK,cAAL,mBAAgB,4BACjB,KAAK,UAAU,yBAAyB,UAAU,SAAS,IAC3D,yBAAyB,UAAU,SAAS;AAAA,IACrD;AAQD,SAAK,6BAA6B,CAAC,UAAU,cAAc;;AACvD,eAAO,UAAK,cAAL,mBAAgB,8BACjB,KAAK,UAAU,2BAA2B,UAAU,SAAS,IAC7D,2BAA2B,UAAU,SAAS;AAAA,IACvD;AAOD,SAAK,qBAAqB,CAAC,SAAS;;AAChC,eAAO,UAAK,cAAL,mBAAgB,sBACjB,KAAK,UAAU,mBAAmB,MAAM,IAAI,IAC5C,mBAAmB,MAAM,IAAI;AAAA,IACtC;AAOD,SAAK,eAAe,CAAC,SAAS;;AAC1B,eAAO,UAAK,cAAL,mBAAgB,gBACjB,KAAK,UAAU,aAAa,IAAI,IAChC,aAAa,IAAI;AAAA,IAC1B;AAOD,SAAK,aAAa,CAAC,SAAS;;AACxB,eAAO,UAAK,cAAL,mBAAgB,cACjB,KAAK,UAAU,WAAW,IAAI,IAC9B,WAAW,IAAI;AAAA,IACxB;AAOD,SAAK,YAAY,CAAC,SAAS;;AACvB,eAAO,UAAK,cAAL,mBAAgB,aACjB,KAAK,UAAU,UAAU,MAAM,KAAK,OAAO,IAC3C,UAAU,MAAM,KAAK,OAAO;AAAA,IACrC;AAOD,SAAK,YAAY,CAAC,SAAS;;AACvB,eAAO,UAAK,cAAL,mBAAgB,aACjB,KAAK,UAAU,UAAU,IAAI,IAC7B,UAAU,IAAI;AAAA,IACvB;AAQD,SAAK,SAAS,CAAC,MAAM,cAAc;;AAC/B,eAAO,UAAK,cAAL,mBAAgB,UACjB,KAAK,UAAU,OAAO,MAAM,WAAW,KAAK,OAAO,IACnD,OAAO,MAAM,WAAW,KAAK,OAAO;AAAA,IAC7C;AAOD,SAAK,aAAa,CAAC,SAAS;;AACxB,eAAO,UAAK,cAAL,mBAAgB,cACjB,KAAK,UAAU,WAAW,IAAI,IAC9B,WAAW,IAAI;AAAA,IACxB;AAOD,SAAK,UAAU,CAAC,SAAS;;AACrB,eAAO,UAAK,cAAL,mBAAgB,WACjB,KAAK,UAAU,QAAQ,MAAM,KAAK,OAAO,IACzC,QAAQ,MAAM,KAAK,OAAO;AAAA,IACnC;AAQD,SAAK,UAAU,CAAC,MAAM,kBAAkB;;AACpC,eAAO,UAAK,cAAL,mBAAgB,WACjB,KAAK,UAAU,QAAQ,MAAM,aAAa,IAC1C,QAAQ,MAAM,aAAa;AAAA,IACpC;AAQD,SAAK,WAAW,CAAC,MAAM,kBAAkB;;AACrC,eAAO,UAAK,cAAL,mBAAgB,YACjB,KAAK,UAAU,SAAS,MAAM,aAAa,IAC3C,SAAS,MAAM,aAAa;AAAA,IACrC;AAOD,SAAK,SAAS,CAAC,UAAU;;AACrB,eAAO,UAAK,cAAL,mBAAgB,UACjB,KAAK,UAAU,OAAO,KAAK,IAC3B,OAAO,KAAK;AAAA,IACrB;AAQD,SAAK,YAAY,CAAC,UAAU,cAAc;;AACtC,eAAO,UAAK,cAAL,mBAAgB,aACjB,KAAK,UAAU,UAAU,UAAU,SAAS,IAC5C,UAAU,UAAU,SAAS;AAAA,IACtC;AAQD,SAAK,cAAc,CAAC,UAAU,cAAc;;AACxC,eAAO,UAAK,cAAL,mBAAgB,eACjB,KAAK,UAAU,YAAY,UAAU,SAAS,IAC9C,YAAY,UAAU,SAAS;AAAA,IACxC;AAQD,SAAK,aAAa,CAAC,UAAU,cAAc;;AACvC,eAAO,UAAK,cAAL,mBAAgB,cACjB,KAAK,UAAU,WAAW,UAAU,SAAS,IAC7C,WAAW,UAAU,SAAS;AAAA,IACvC;AAOD,SAAK,MAAM,CAAC,UAAU;;AAClB,eAAO,UAAK,cAAL,mBAAgB,OAAM,KAAK,UAAU,IAAI,KAAK,IAAI,IAAI,KAAK;AAAA,IACrE;AAOD,SAAK,MAAM,CAAC,UAAU;;AAClB,eAAO,UAAK,cAAL,mBAAgB,OAAM,KAAK,UAAU,IAAI,KAAK,IAAI,IAAI,KAAK;AAAA,IACrE;AAQD,SAAK,WAAW,CAAC,MAAM,UAAU;;AAC7B,eAAO,UAAK,cAAL,mBAAgB,YACjB,KAAK,UAAU,SAAS,MAAM,KAAK,IACnC,SAAS,MAAM,KAAK;AAAA,IAC7B;AAQD,SAAK,UAAU,CAAC,MAAM,SAAS;;AAC3B,eAAO,UAAK,cAAL,mBAAgB,WACjB,KAAK,UAAU,QAAQ,MAAM,IAAI,IACjC,QAAQ,MAAM,IAAI;AAAA,IAC3B;AAOD,SAAK,uBAAuB,CAAC,SAAS;;AAClC,eAAO,UAAK,cAAL,mBAAgB,wBACjB,KAAK,UAAU,qBAAqB,MAAM,IAAI,IAC9C,qBAAqB,MAAM,IAAI;AAAA,IACxC;AAOD,SAAK,aAAa,CAAC,SAAS;;AACxB,eAAO,UAAK,cAAL,mBAAgB,cACjB,KAAK,UAAU,WAAW,IAAI,IAC9B,WAAW,IAAI;AAAA,IACxB;AAOD,SAAK,iBAAiB,CAAC,SAAS;;AAC5B,eAAO,UAAK,cAAL,mBAAgB,kBACjB,KAAK,UAAU,eAAe,IAAI,IAClC,eAAe,IAAI;AAAA,IAC5B;AAOD,SAAK,eAAe,CAAC,SAAS;;AAC1B,eAAO,UAAK,cAAL,mBAAgB,gBACjB,KAAK,UAAU,aAAa,IAAI,IAChC,aAAa,IAAI;AAAA,IAC1B;AAOD,SAAK,cAAc,CAAC,SAAS;;AACzB,eAAO,UAAK,cAAL,mBAAgB,eACjB,KAAK,UAAU,YAAY,MAAM,KAAK,OAAO,IAC7C,YAAY,MAAM,KAAK,OAAO;AAAA,IACvC;AAOD,SAAK,cAAc,CAAC,SAAS;;AACzB,eAAO,UAAK,cAAL,mBAAgB,eACjB,KAAK,UAAU,YAAY,IAAI,IAC/B,YAAY,IAAI;AAAA,IACzB;AACD,SAAK,UAAU,EAAE,QAAQ,MAAM,GAAG,QAAS;AAC3C,SAAK,YAAY;AAAA,EACzB;AACA;AAQO,MAAM,iBAAiB,IAAI,QAAS;ACtXpC,SAAS,0BAA0B,WAAWC,aAAY,sBAAsB,CAAA,GAAI;AACvF,QAAM,qBAAqB,OAAO,QAAQ,SAAS,EAC9C,OAAO,CAAC,CAAA,EAAG,MAAM,MAAM,WAAW,IAAI,EACtC,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM;AAClC,QAAI,oBAAoB,GAAG,GAAG;AAC1B,oBAAc,KAAK,oBAAoB,GAAG,CAAC;AAAA,IACvD,WACiBA,YAAW,QAAQ,GAAG,CAAC,GAAG;AAC/B,oBAAc,KAAKA,YAAW,QAAQ,GAAG,CAAC,CAAC;AAAA,IACvD,WACiBA,YAAW,eAAe,GAAG,CAAC,GAAG;AACtC,oBAAc,KAAKA,YAAW,eAAe,GAAG,CAAC,CAAC;AAAA,IAC9D;AACQ,WAAO;AAAA,EACV,GAAE,CAACA,YAAW,GAAG,GAAG,CAAC,CAAC;AACvB,SAAO;AACX;ACVO,SAAS,OAAO,OAAO;AAC1B,SAAO,MAAM,cAAc,UAAU,EAAE,GAAG,MAAK,CAAE;AACrD;ACFO,SAAS,aAAa,OAAO;AAChC,SAAO,MAAM,cAAc,QAAQ,EAAE,GAAG,MAAK,CAAE;AACnD;ACFO,SAAS,QAAQ,OAAO;AAC3B,QAAM,EAAE,OAAO,IAAI,cAAc,QAAQ,UAAS,IAAK;AACvD,SAAQ,MAAM;AAAA,IAAc;AAAA,IAAO,EAAE,WAAsB,OAAO,MAAM,QAAQ,MAAM,SAAS,YAAa;AAAA,IACxG,gBAAgB,QAAS,MAAM,cAAc,WAAW,EAAE,QAAQ,sDAAqD,CAAE;AAAA,IACzH,gBAAgB,UAAW,MAAM,cAAc,WAAW,EAAE,QAAQ,mDAAkD,CAAE;AAAA,IACxH,gBAAgB,UAAW,MAAM,cAAc,WAAW,EAAE,QAAQ,wEAAuE,CAAE;AAAA,IAC7I,gBAAgB,WAAY,MAAM,cAAc,WAAW,EAAE,QAAQ,+EAAgF,CAAA;AAAA,EAAE;AAC/J;ACHO,SAAS,IAAI,OAAO;AACvB,QAAM,EAAE,KAAK,WAAW,GAAG,QAAS,IAAG;AACvC,SAAO,MAAM,cAAc,MAAM,EAAE,GAAG,QAAO,CAAE;AACnD;ACPO,SAAS,UAAU,OAAO;AAC7B,QAAM,EAAE,KAAK,WAAW,GAAG,YAAa,IAAG;AAC3C,QAAM,MAAM,MAAM,OAAO,IAAI;AAC7B,QAAM,UAAU,MAAM;;AAClB,QAAI,UAAU;AACV,gBAAI,YAAJ,mBAAa;AAAA,EACzB,GAAO,CAAC,UAAU,OAAO,CAAC;AACtB,SAAO,MAAM,cAAc,UAAU,EAAE,KAAU,GAAG,aAAa;AACrE;ACPO,SAAS,SAAS,OAAO;AAC5B,QAAM,EAAE,SAAS,WAAW,YAAAC,aAAY,YAAAD,aAAY,GAAG,YAAW,IAAK;AACvE,QAAM,iBAAiB,CAACA,YAAW,GAAG,QAAQ,GAAG,SAAS,EAAE,KAAK,GAAG;AACpE,QAAM,iBAAiB,mCAAS,KAAK,CAAC,EAAE,YAAY,UAAU,YAAY;AAC1E,SAAQ,MAAM;AAAA,IAAc;AAAA,IAAQ,EAAE,iBAAiB,YAAY,UAAU,WAAWA,YAAW,GAAG,YAAY,EAAG;AAAA,IACjH,MAAM,cAAcC,YAAW,QAAQ,EAAE,WAAW,gBAAgB,GAAG,YAAW,GAAI,mCAAS,IAAI,CAAC,EAAE,OAAO,OAAO,eAAgB,MAAM,cAAcA,YAAW,QAAQ,EAAE,KAAK,OAAO,OAAc,SAAoB,GAAE,KAAK,EAAG;AAAA,IACrO,MAAM;AAAA,MAAc;AAAA,MAAQ,EAAE,WAAWD,YAAW,GAAG,YAAY,GAAG,eAAe,KAAM;AAAA,MACvF,iDAAgB;AAAA,MAChB,MAAM,cAAcC,YAAW,SAAS,EAAE,aAAa,QAAQ,MAAM,IAAI,WAAWD,YAAW,GAAG,OAAO,EAAC,CAAE;AAAA,IAAC;AAAA,EAAC;AAC1H;ACVO,SAAS,YAAY,OAAO;AAC/B,SAAO,MAAM,cAAc,OAAO,EAAE,GAAG,MAAK,CAAE;AAClD;ACFO,SAAS,OAAO,OAAO;AAC1B,SAAO,MAAM,cAAc,OAAO,EAAE,GAAG,MAAK,CAAE;AAClD;ACDO,SAAS,MAAM,OAAO;AACzB,QAAM,EAAE,eAAe,cAAc,GAAG,SAAU,IAAG;AACrD,SAAO,MAAM,cAAc,OAAO,EAAE,GAAG,SAAU,GAAE,MAAM,QAAQ;AACrE;ACJO,SAAS,aAAa,OAAO;AAChC,QAAM,EAAE,eAAe,cAAc,GAAG,SAAU,IAAG;AACrD,SAAO,MAAM,cAAc,OAAO,EAAE,GAAG,SAAQ,CAAE;AACrD;ACHO,SAAS,UAAU,OAAO;AAC7B,SAAO,MAAM,cAAc,SAAS,EAAE,GAAG,MAAK,CAAE;AACpD;ACFO,SAAS,OAAO,OAAO;AAC1B,SAAO,MAAM,cAAc,OAAO,EAAE,GAAG,MAAK,CAAE;AAClD;ACPO,MAAM,mBAAmB,cAAc,MAAS;AAehD,SAAS,eAAe;AAC3B,QAAM,UAAU,WAAW,gBAAgB;AAC3C,MAAI,YAAY,QAAW;AACvB,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAChF;AACI,SAAO;AACX;ACfO,SAAS,eAAe,OAAO;AAClC,QAAM,EAAE,YAAAC,YAAY,IAAG,aAAc;AACrC,SAAO,MAAM,cAAcA,YAAW,UAAU,EAAE,GAAG,OAAO;AAChE;ACFO,SAAS,IAAI,OAAO;AACvB,QAAM,EAAE,iBAAiB,aAAa,eAAe,WAAW,GAAG,SAAQ,IAAK;AAChF,QAAM,EAAE,YAAAA,aAAY,YAAAD,aAAY,QAAQ,EAAE,eAAAE,gBAAe,WAAAC,WAAS,EAAI,IAAG,aAAc;AACvF,SAAQ,MAAM;AAAA,IAAc;AAAA,IAAO,EAAE,GAAG,SAAU;AAAA,IAC9C,MAAM;AAAA,MAAcF,YAAW;AAAA,MAAqB,EAAE,MAAM,UAAU,WAAWD,YAAW,GAAG,mBAAmB,GAAG,UAAU,gBAAgB,SAAY,IAAI,UAAU,gBAAgB,SAAY,MAAM,cAAcE,eAAc,aAAa,GAAG,SAAS,MAAM,gBAAiB;AAAA,MACnR,MAAM,cAAcD,YAAW,SAAS,EAAE,UAAU,gBAAgB,SAAY,MAAM,WAAWD,YAAW,GAAG,OAAO,GAAG,aAAa,OAAM,CAAE;AAAA,IAAC;AAAA,IACnJ,MAAM;AAAA,MAAcC,YAAW;AAAA,MAAiB,EAAE,MAAM,UAAU,WAAWD,YAAW,GAAG,eAAe,GAAG,UAAU,YAAY,SAAY,IAAI,UAAU,YAAY,SAAY,MAAM,cAAcG,WAAU,SAAS,GAAG,SAAS,MAAM,YAAa;AAAA,MACvP,MAAM,cAAcF,YAAW,SAAS,EAAE,UAAU,YAAY,SAAY,MAAM,aAAa,SAAS,WAAWD,YAAW,GAAG,OAAO,EAAG,CAAA;AAAA,IAAC;AAAA,EAAC;AACzJ;ACTO,SAAS,gBAAgB,OAAO;AACnC,QAAM,EAAE,YAAAC,YAAY,IAAG,aAAc;AACrC,SAAO,MAAM,cAAcA,YAAW,QAAQ,EAAE,GAAG,OAAO;AAC9D;ACJO,SAAS,OAAO,OAAO;AAC1B,SAAO,MAAM,cAAc,UAAU,EAAE,GAAG,MAAK,CAAE;AACrD;ACDO,SAAS,oBAAoB,OAAO;AACvC,QAAM,EAAE,YAAAA,YAAY,IAAG,aAAc;AACrC,SAAO,MAAM,cAAcA,YAAW,QAAQ,EAAE,GAAG,OAAO;AAC9D;ACJO,SAAS,KAAK,OAAO;AACxB,SAAO,MAAM,cAAc,OAAO,EAAE,GAAG,MAAK,CAAE;AAClD;ACFO,SAAS,OAAO,OAAO;AAC1B,SAAO,MAAM,cAAc,UAAU,EAAE,GAAG,MAAK,CAAE;AACrD;ACFO,SAAS,KAAK,OAAO;AACxB,QAAM,EAAE,MAAM,GAAG,QAAO,IAAK;AAC7B,SAAO,MAAM,cAAc,MAAM,EAAE,GAAG,QAAO,CAAE;AACnD;ACHO,SAAS,QAAQ,OAAO;AAC3B,SAAO,MAAM,cAAc,MAAM,EAAE,GAAG,MAAK,CAAE;AACjD;ACFO,SAAS,SAAS,OAAO;AAC5B,SAAQ,MAAM;AAAA,IAAc;AAAA,IAAS,EAAE,eAAe,KAAM;AAAA,IACxD,MAAM,cAAc,MAAM,EAAE,GAAG,MAAO,CAAA;AAAA,EAAC;AAC/C;ACHO,SAAS,WAAW,OAAO;AAC9B,QAAM,EAAE,MAAM,GAAG,QAAO,IAAK;AAC7B,SAAO,MAAM,cAAc,MAAM,EAAE,GAAG,QAAO,CAAE;AACnD;ACHO,SAAS,iBAAiB,OAAO;AACpC,SAAO,MAAM,cAAc,MAAM,EAAE,GAAG,MAAK,CAAE;AACjD;ACFO,SAAS,MAAM,OAAO;AACzB,SAAO,MAAM,cAAc,SAAS,EAAE,GAAG,MAAK,CAAE;AACpD;ACDO,SAAS,cAAc,OAAO;AACjC,QAAM,EAAE,YAAAA,YAAY,IAAG,aAAc;AACrC,SAAO,MAAM,cAAcA,YAAW,UAAU,EAAE,GAAG,OAAO;AAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVO,SAAS,cAAc,kBAAkB;AAC5C,SAAO;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACN;AACL;ACLO,SAAS,kBAAkB,OAAO;AACrC,QAAM,iBAAiB;AAAA,IACnB,aAAa,MAAM,QAAQ;AAAA,IAC3B,iBAAiB,cAAc,QAAQ,MAAM,WAAW;AAAA,IACxD,wBAAyB,MAAM,kBAAkB,MAAM,iBAAiB,KAAM;AAAA,IAC9E,qBAAqB,MAAM,kBAAkB;AAAA,IAC7C,2BAA2B,MAAM,qBAAqB;AAAA,EACzD;AACD,SAAO,QAAQ,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM;AAC1C,QAAI,IAAI,WAAW,OAAO,GAAG;AACzB,qBAAe,GAAG,IAAI;AAAA,IAClC;AAAA,EACA,CAAK;AACD,SAAO;AACX;ACTO,SAAS,uBAAuB;AACnC,QAAMD,cAAa,CAAE;AACrB,aAAW,OAAO,IAAI;AAClB,IAAAA,YAAW,GAAG,GAAG,CAAC,IACd,OAAO,GAAG,GAAG,CAAC;AAAA,EAC1B;AACI,aAAW,OAAO,SAAS;AACvB,IAAAA,YAAW,QAAQ,GAAG,CAAC,IACnB,OAAO,QAAQ,GAAG,CAAC;AAAA,EAC/B;AACI,aAAW,OAAO,gBAAgB;AAC9B,IAAAA,YAAW,eAAe,GAAG,CAAC,IAC1B,OAAO,eAAe,GAAG,CAAC;AAAA,EACtC;AACI,SAAOA;AACX;ACbO,SAAS,cAAc,OAAO,SAAS,SAAS;AACnD,UAAQ,WAAW,IAAI,QAAQ,OAAO,GAAG,OAAO,OAAO,QAAQ;AACnE;AAMO,MAAM,qBAAqB;ACR3B,SAAS,UAAU,MAAM,SAAS,SAAS;AAC9C,UAAQ,WAAW,IAAI,QAAQ,OAAO,GAAG,OAAO,MAAM,GAAG;AAC7D;ACHO,SAAS,oBAEhB,aAEA,QAAQ;;AACJ,UAAO,YAAO,aAAP,mBAAiB,MAAM;AAClC;ACNO,SAAS,iBAAiB,YAAY;AACzC,MAAI,aAAa,IAAI;AACjB,WAAO,IAAI,WAAW,eAAgB,CAAA;AAAA,EAC9C;AACI,SAAO,GAAG,WAAW,eAAc,CAAE;AACzC;ACLO,SAAS,yBAAyB;AACrC,SAAO;AACX;ACDO,SAAS,kBAAkB,SAAS,SAAS,SAAS;AACzD,UAAQ,WAAW,IAAI,QAAQ,OAAO,GAAG,OAAO,SAAS,QAAQ;AACrE;ACHO,SAAS,mBAAmB,MAAM;AACrC,SAAO,KAAK,SAAU;AAC1B;AAMO,MAAM,oBAAoB;;;;;;;;;;;;;ACb1B,SAAS,cAAc,kBAAkB;AAC5C,OAAI,qDAAkB,uBAAsB,CAAC,iBAAiB,eAAe;AACzE,qBAAiB,gBAAgB,iBAAiB;AAAA,EAC1D;AACI,OAAI,qDAAkB,sBAClB,CAAC,iBAAiB,oBAAoB;AACtC,qBAAiB,qBAAqB,iBAAiB;AAAA,EAC/D;AACI,SAAO;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACN;AACL;ACZO,SAAS,gBAAgB,cAAc,UAAU,QAAQ,YAAY,SAAS;AACjF,MAAI,CAAC;AACD,WAAO;AACX,MAAI,CAAC;AACD,WAAO;AACX,QAAM,EAAE,WAAAI,YAAW,cAAAC,cAAY,IAAK;AACpC,QAAM,OAAO,aAAa,YAAa;AACvC,QAAM,SAAS,CAAE;AACjB,MAAI,QAAQ;AACZ,SAAO,OAAO,SAAS,IAAI;AACvB,WAAO,KAAK,MAAM,UAAU;AAC5B,YAAQD,WAAU,OAAO,CAAC;AAAA,EAClC;AACI,QAAM,eAAe,OAAO,KAAK,CAAC,GAAG,MAAM;AACvC,WAAO,IAAI;AAAA,EACnB,CAAK;AACD,QAAM,UAAU,aAAa,IAAI,CAAC,UAAU;AACxC,UAAM,QAAQ,WAAW,oBAAoB,OAAO,QAAQ,QAAQ,UAAUE,MAAa;AAC3F,UAAMC,SAAQ,QAAQ,OAChB,IAAI,QAAQ,KAAK,MAAM,KAAK,IAC5B,IAAI,KAAK,MAAM,KAAK;AAC1B,UAAM,WAAY,YAAYA,SAAQF,cAAa,QAAQ,KACtD,UAAUE,SAAQF,cAAa,MAAM,KACtC;AACJ,WAAO,EAAE,OAAO,OAAO,SAAU;AAAA,EACzC,CAAK;AACD,SAAO;AACX;AC5BO,SAAS,qBAAqB,cAAcG,UAAS,CAAA,GAAI,kBAAkB,CAAA,GAAI;AAClF,MAAI,QAAQ,EAAE,GAAGA,WAAA,gBAAAA,QAAS,GAAG,KAAM;AACnC,SAAO,QAAQ,YAAY,EACtB,OAAO,CAAC,CAAA,EAAG,MAAM,MAAM,WAAW,IAAI,EACtC,QAAQ,CAAC,CAAC,QAAQ,MAAM;AACzB,YAAQ;AAAA,MACJ,GAAG;AAAA,MACH,GAAG,mDAAkB;AAAA,IACxB;AAAA,EACT,CAAK;AACD,SAAO;AACX;ACZA,MAAM,oBAAoB,CAAE;AAC5B,MAAM,cAAc,CAAE;AAef,SAAS,SAAS,UAAU,MAAM;AACvC,MAAI;AACF,UAAMC,UAAS,8DAAgC,IAAI,KAAK,eAAe,SAAS;AAAA,MAC9E;AAAA,MACA,MAAM;AAAA,MACN,cAAc;AAAA,IACf,CAAA,EAAE;AACH,UAAM,YAAYA,QAAO,IAAI,EAAE,MAAM,KAAK,EAAE,CAAC,KAAK;AAClD,QAAI,aAAa,YAAa,QAAO,YAAY,SAAS;AAC1D,WAAO,WAAW,WAAW,UAAU,MAAM,GAAG,CAAC;AAAA,EACrD,QAAU;AAGN,QAAI,YAAY,YAAa,QAAO,YAAY,QAAQ;AACxD,UAAM,WAAW,qCAAU,MAAM;AACjC,QAAI,SAAU,QAAO,WAAW,UAAU,SAAS,MAAM,CAAC,CAAC;AAC3D,WAAO;AAAA,EACX;AACA;AACA,MAAM,WAAW;AACjB,SAAS,WAAW,UAAU,QAAQ;AACpC,QAAM,QAAQ,CAAC,OAAO,CAAC;AACvB,QAAM,UAAU,EAAE,OAAO,CAAC,KAAK;AAC/B,SAAO,YAAY,QAAQ,IAAI,QAAQ,IAAI,QAAQ,KAAK,UAAU,QAAQ,KAAK;AACjF;ACvCO,MAAM,mBAAmB,KAAK;AAAA;AAAA,EAGnC,eAAe,MAAM;AACnB,UAAO;AACP,QAAI,KAAK,SAAS,KAAK,OAAO,KAAK,KAAK,SAAS,CAAC,MAAM,UAAU;AAChE,WAAK,WAAW,KAAK,IAAK;AAAA,IAChC;AACI,SAAK,WAAW,oBAAI,KAAM;AAC1B,QAAI,MAAM,SAAS,KAAK,UAAU,IAAI,CAAC,GAAG;AACxC,WAAK,QAAQ,GAAG;AAAA,IACtB,OAAW;AACL,UAAI,CAAC,KAAK,QAAQ;AAChB,aAAK,QAAQ,KAAK,KAAK;AAAA,MAC/B,WAAiB,OAAO,KAAK,CAAC,MAAM,aAAa,KAAK,WAAW,KAAK,KAAK,WAAW,KAAK,OAAO,KAAK,CAAC,MAAM,WAAW;AACjH,aAAK,QAAQ,KAAK,CAAC,CAAC;AAAA,MACrB,WAAU,OAAO,KAAK,CAAC,MAAM,UAAU;AACtC,aAAK,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;AAAA,MAChC,WAAU,KAAK,CAAC,aAAa,MAAM;AAClC,aAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;AAAA,MAC7B,OAAa;AACL,aAAK,QAAQ,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC;AAC/B,yBAAiB,IAAS;AAC1B,uBAAe,IAAI;AAAA,MAC3B;AAAA,IACA;AAAA,EACA;AAAA,EACE,OAAO,GAAG,OAAO,MAAM;AACrB,WAAO,KAAK,SAAS,IAAI,WAAW,GAAG,MAAM,EAAE,IAAI,IAAI,WAAW,KAAK,IAAG,GAAI,EAAE;AAAA,EACpF;AAAA;AAAA;AAAA,EAME,aAAa,UAAU;AACrB,WAAO,IAAI,WAAW,CAAC,MAAM,QAAQ;AAAA,EACzC;AAAA,EACE,oBAAoB;AAClB,WAAO,CAAC,SAAS,KAAK,UAAU,IAAI;AAAA,EACxC;AAAA;AAAA;AAAA,EAME,QAAQ,MAAM;AACZ,SAAK,UAAU,QAAQ,MAAM,MAAM,SAAS;AAC5C,mBAAe,IAAI;AACnB,WAAO,CAAC;AAAA,EACZ;AAAA;AAAA;AAAA,EAME,CAAC,OAAO,IAAI,mBAAmB,CAAC,EAAE,MAAM;AACtC,WAAO,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,GAAG,KAAK,QAAQ;AAAA,EACxD;AAAA;AAGA;AAGA,MAAM,KAAK;AACX,OAAO,oBAAoB,KAAK,SAAS,EAAE,QAAQ,YAAU;AAC3D,MAAI,CAAC,GAAG,KAAK,MAAM,EAAG;AACtB,QAAM,YAAY,OAAO,QAAQ,IAAI,OAAO;AAE5C,MAAI,CAAC,WAAW,UAAU,SAAS,EAAG;AACtC,MAAI,OAAO,WAAW,KAAK,GAAG;AAE5B,eAAW,UAAU,MAAM,IAAI,WAAY;AACzC,aAAO,KAAK,SAAS,SAAS,EAAG;AAAA,IAClC;AAAA,EACL,OAAS;AAEL,eAAW,UAAU,MAAM,IAAI,WAAY;AACzC,WAAK,UAAU,SAAS,EAAE,MAAM,KAAK,UAAU,SAAS;AACxD,uBAAiB,IAAI;AACrB,aAAO,CAAC;AAAA,IACT;AAGD,eAAW,UAAU,SAAS,IAAI,WAAY;AAC5C,WAAK,UAAU,SAAS,EAAE,MAAM,MAAM,SAAS;AAC/C,qBAAe,IAAI;AACnB,aAAO,CAAC;AAAA,IACT;AAAA,EACL;AACA,CAAC;AAOD,SAAS,eAAe,MAAM;AAC5B,OAAK,SAAS,QAAQ,CAAC,IAAI;AAC3B,OAAK,SAAS,cAAc,KAAK,SAAS,cAAe,IAAG,KAAK,mBAAmB;AACtF;AAQA,SAAS,iBAAiB,MAAM;AAE9B,OAAK,UAAU,YAAY,KAAK,MAAM,KAAK,SAAS,eAAgB,GAAE,KAAK,SAAS,YAAW,GAAI,KAAK,SAAS,YAAY;AAC7H,OAAK,UAAU,SAAS,KAAK,MAAM,KAAK,SAAS,eAAe,KAAK,SAAS,cAAa,GAAI,KAAK,SAAS,cAAa,GAAI,KAAK,SAAS,oBAAoB;AAGhK,mBAAiB,IAAI;AACvB;AAQA,SAAS,iBAAiB,MAAM;AAE9B,QAAM,SAAS,SAAS,KAAK,UAAU,IAAI;AA2B3C,QAAM,WAAW,oBAAI,KAAK,CAAC,IAAI;AAG/B,WAAS,YAAY,SAAS,YAAW,IAAK,CAAC;AAG/C,QAAM,eAAe,EAAC,oBAAI,KAAK,CAAC,IAAI,GAAE,kBAAmB;AACzD,QAAM,uBAAuB,EAAC,oBAAI,KAAK,CAAC,QAAQ,GAAE,kBAAmB;AACrE,QAAM,kBAAkB,eAAe;AAEvC,QAAM,WAAW,KAAK,UAAU,SAAS,MAAM,IAAI,MAAM,KAAK,SAAS,YAAa;AAGpF,MAAI,mBAAmB,SAAU,MAAK,SAAS,cAAc,KAAK,SAAS,cAAe,IAAG,eAAe;AAU5G,QAAM,aAAa,eAAe;AAClC,MAAI,WAAY,MAAK,UAAU,cAAc,KAAK,MAAM,KAAK,UAAU,cAAc,KAAK,IAAI,IAAI,UAAU;AAM5G,QAAM,aAAa,SAAS,KAAK,UAAU,IAAI;AAC/C,QAAM,mBAAmB,EAAC,oBAAI,KAAK,CAAC,IAAI,GAAE,kBAAmB;AAC7D,QAAM,iBAAiB,mBAAmB;AAC1C,QAAM,gBAAgB,eAAe;AACrC,QAAM,WAAW,iBAAiB;AAClC,MAAI,iBAAiB,UAAU;AAC7B,SAAK,UAAU,cAAc,KAAK,MAAM,KAAK,UAAU,cAAc,KAAK,IAAI,IAAI,QAAQ;AAK1F,UAAM,YAAY,SAAS,KAAK,UAAU,IAAI;AAC9C,UAAM,eAAe,aAAa;AAClC,QAAI,cAAc;AAChB,WAAK,SAAS,cAAc,KAAK,SAAS,cAAe,IAAG,YAAY;AACxE,WAAK,UAAU,cAAc,KAAK,MAAM,KAAK,UAAU,cAAc,KAAK,IAAI,IAAI,YAAY;AAAA,IACpG;AAAA,EACA;AAGA;AC5LO,MAAM,eAAe,WAAW;AAAA;AAAA,EAGrC,OAAO,GAAG,OAAO,MAAM;AACrB,WAAO,KAAK,SAAS,IAAI,OAAO,GAAG,MAAM,EAAE,IAAI,IAAI,OAAO,KAAK,IAAG,GAAI,EAAE;AAAA,EAC5E;AAAA;AAAA;AAAA,EAME,cAAc;AACZ,UAAM,CAAC,MAAM,OAAO,OAAO,IAAI,KAAK,aAAc;AAClD,UAAM,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,OAAO;AACrC,WAAO,KAAK,SAAS,YAAa,EAAC,MAAM,GAAG,EAAE,IAAI;AAAA,EACtD;AAAA,EACE,WAAW;AAET,WAAO,GAAG,KAAK,aAAY,CAAE,IAAI,KAAK,aAAY,CAAE;AAAA,EACxD;AAAA,EACE,eAAe;AAEb,UAAM,CAAC,KAAK,MAAM,OAAO,IAAI,IAAI,KAAK,SAAS,cAAc,MAAM,GAAG;AAEtE,WAAO,GAAG,2BAAK,MAAM,GAAG,OAAwB,KAAK,IAAI,IAAI,IAAI,IAAI;AAAA,EACzE;AAAA,EACE,eAAe;AAEb,UAAM,OAAO,KAAK,SAAS,YAAa,EAAC,MAAM,GAAG,EAAE,CAAC;AACrD,UAAM,CAAC,MAAM,OAAO,OAAO,IAAI,KAAK,aAAc;AAElD,WAAO,GAAG,IAAI,OAAO,IAAI,GAAG,KAAK,GAAG,OAAO,KAAK,OAAO,KAAK,UAAU,IAAI,CAAC;AAAA,EAC/E;AAAA,EACE,eAAe,SAAS,SAAS;AAC/B,WAAO,KAAK,UAAU,eAAe,KAAK,MAAM,SAAS;AAAA,MACvD,GAAG;AAAA,MACH,WAAU,mCAAS,aAAY,KAAK;AAAA,IAC1C,CAAK;AAAA,EACL;AAAA,EACE,mBAAmB,SAAS,SAAS;AACnC,WAAO,KAAK,UAAU,mBAAmB,KAAK,MAAM,SAAS;AAAA,MAC3D,GAAG;AAAA,MACH,WAAU,mCAAS,aAAY,KAAK;AAAA,IAC1C,CAAK;AAAA,EACL;AAAA,EACE,mBAAmB,SAAS,SAAS;AACnC,WAAO,KAAK,UAAU,mBAAmB,KAAK,MAAM,SAAS;AAAA,MAC3D,GAAG;AAAA,MACH,WAAU,mCAAS,aAAY,KAAK;AAAA,IAC1C,CAAK;AAAA,EACL;AAAA;AAAA;AAAA,EAME,eAAe;AACb,UAAM,SAAS,KAAK,kBAAmB;AACvC,UAAM,OAAO,SAAS,IAAI,MAAM;AAChC,UAAM,QAAQ,OAAO,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG;AACvE,UAAM,UAAU,OAAO,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7D,WAAO,CAAC,MAAM,OAAO,OAAO;AAAA,EAChC;AAAA;AAAA,EAIE,aAAa,UAAU;AACrB,WAAO,IAAI,OAAO,CAAC,MAAM,QAAQ;AAAA,EACrC;AAAA;AAAA,EAIE,CAAC,OAAO,IAAI,mBAAmB,CAAC,EAAE,MAAM;AACtC,WAAO,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,GAAG,KAAK,QAAQ;AAAA,EACpD;AAAA;AAGA;AACA,SAAS,OAAO,IAAI,MAAM;AACxB,SAAO,IAAI,KAAK,eAAe,SAAS;AAAA,IACtC,UAAU;AAAA,IACV,cAAc;AAAA,EACf,CAAA,EAAE,OAAO,IAAI,EAAE,MAAM,EAAE;AAC1B;AC7FO,SAAS,YAEhB,SAEA,SAAS,UAET,mBAAmB;AACf,QAAM,OAAO,WACP,OAAO,GAAG,QAAQ,IAClB,QAAQ,OACJ,IAAI,QAAQ,KAAI,IAChB,oBAAI,KAAM;AACpB,QAAM,QAEA,UACI,QAAQ,eAAe,IAAI,IAC3B,QAAQ,YAAY,IAAI;AAClC,QAAM,OAAO,CAAE;AACf,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AACxB,UAAM,MAAM,QAAQ,QAAQ,OAAO,CAAC;AACpC,SAAK,KAAK,GAAG;AAAA,EACrB;AACI,SAAO;AACX;AC3BO,SAAS,eAAe,UAAU,QAAQ,YAAY,SAAS;AAClE,MAAI,CAAC;AACD,WAAO;AACX,MAAI,CAAC;AACD,WAAO;AACX,QAAM,EAAE,aAAAC,cAAa,WAAAC,YAAW,UAAAC,WAAU,UAAAC,WAAU,YAAAC,YAAU,IAAK;AACnE,QAAM,eAAeJ,aAAY,QAAQ;AACzC,QAAM,cAAcC,WAAU,MAAM;AACpC,QAAM,QAAQ,CAAE;AAChB,MAAI,OAAO;AACX,SAAOE,UAAS,MAAM,WAAW,KAAKC,YAAW,MAAM,WAAW,GAAG;AACjE,UAAM,KAAK,KAAK,aAAa;AAC7B,WAAOF,UAAS,MAAM,CAAC;AAAA,EAC/B;AACI,SAAO,MAAM,IAAI,CAAC,UAAU;AACxB,UAAM,QAAQ,WAAW,mBAAmB,KAAK;AACjD,WAAO;AAAA,MACH;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IACb;AAAA,EACT,CAAK;AACL;ACdO,SAAS,UAAU,MAAM,SAAS,SAAS;AAC9C,UAAQ,WAAW,IAAI,QAAQ,OAAO,GAAG,OAAO,MAAM,QAAQ;AAClE;AAKO,MAAM,eAAe;ACTrB,SAAS,cAAc,MAE9B,WAAW,SAAS,SAAS;AACzB,MAAI,SAAS,WAAW,IAAI,QAAQ,OAAO,GAAG,OAAO,MAAM,MAAM;AACjE,MAAI,uCAAW,OAAO;AAClB,YAAQ,UAAU,KAAK;AAAA,EAC/B;AACI,SAAO;AACX;ACJO,SAAS,eAAe,MAE/B,WAAW,SAAS,SAAS;AACzB,MAAI,SAAS,WAAW,IAAI,QAAQ,OAAO,GAAG,OAAO,MAAM,MAAM;AACjE,MAAI,UAAU;AACV,YAAQ,UAAU,KAAK;AAC3B,MAAI,UAAU;AACV,YAAQ,GAAG,KAAK;AACpB,SAAO;AACX;AAEO,MAAM,WAAW;ACfjB,SAAS,WAAW;AACvB,SAAO;AACX;ACFO,SAAS,mBAAmB,SAAS;AACxC,SAAO;AACX;ACFO,SAAS,UAEhB,OAAO;AACH,SAAO;AACX;ACJO,SAAS,cAEhB,OAAO;AACH,SAAO;AACX;ACHO,SAAS,aAAa,MAAM,SAAS,SAAS;AACjD,UAAQ,WAAW,IAAI,QAAQ,OAAO,GAAG,OAAO,MAAM,MAAM;AAChE;ACHO,SAAS,gBAAgB,YAAY,SAAS;AACjD,SAAO,QAAQ,UAAU;AAC7B;ACFO,SAAS,sBAAsB,SAAS;AAC3C,SAAO;AACX;ACFO,SAAS,kBAAkB,SAAS;AACvC,SAAO;AACX;;;;;;;;;;;;;;;;;ACRO,SAAS,SAAS,eAAe,SAAS,OAAO,SAAS;AAC7D,QAAM,aAAa,cAAc,CAAC;AAClC,QAAM,YAAY,cAAc,cAAc,SAAS,CAAC;AACxD,QAAM,EAAE,SAAS,YAAY,kBAAmB,IAAG,SAAS,CAAE;AAC9D,QAAM,EAAE,SAAAG,UAAS,0BAAAC,2BAA0B,4BAAAC,6BAA4B,oBAAAC,qBAAoB,cAAAC,eAAc,YAAAC,aAAY,WAAAC,YAAW,SAAAC,UAAS,sBAAAC,uBAAsB,gBAAAC,iBAAgB,aAAAC,aAAa,IAAG;AAC/L,QAAM,qBAAqB,oBACrBF,sBAAqB,YAAY,OAAO,IACxC,UACIC,gBAAe,UAAU,IACzBC,aAAY,UAAU;AAChC,QAAM,kBAAkB,oBAClBP,oBAAmB,WAAW,OAAO,IACrC,UACIC,cAAaC,YAAW,SAAS,CAAC,IAClCC,WAAUD,YAAW,SAAS,CAAC;AACzC,QAAM,UAAUJ,0BAAyB,iBAAiB,kBAAkB;AAC5E,QAAM,YAAYC,4BAA2B,WAAW,UAAU,IAAI;AACtE,QAAM,QAAQ,CAAE;AAChB,WAAS,IAAI,GAAG,KAAK,SAAS,KAAK;AAC/B,UAAM,OAAOF,SAAQ,oBAAoB,CAAC;AAC1C,QAAI,WAAWO,SAAQ,MAAM,OAAO,GAAG;AACnC;AAAA,IACZ;AACQ,UAAM,KAAK,IAAI;AAAA,EACvB;AAEI,QAAM,yBAAyB,oBAAoB,KAAK;AACxD,QAAM,aAAa,yBAAyB;AAC5C,MAAI,cAAc,MAAM,SAAS,YAAY;AACzC,UAAM,YAAY,aAAa,MAAM;AACrC,aAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAChC,YAAM,OAAOP,SAAQ,MAAM,MAAM,SAAS,CAAC,GAAG,CAAC;AAC/C,YAAM,KAAK,IAAI;AAAA,IAC3B;AAAA,EACA;AACI,SAAO;AACX;ACjCO,SAAS,QAAQ,gBAAgB;AACpC,QAAM,cAAc,CAAE;AACtB,SAAO,eAAe,OAAO,CAAC,MAAM,UAAU;AAC1C,UAAMW,eAAc,CAAE;AACtB,UAAM,WAAW,MAAM,MAAM,OAAO,CAACC,WAAU,SAAS;AACpD,aAAO,CAAC,GAAGA,WAAU,GAAG,KAAK,IAAI;AAAA,IACpC,GAAED,YAAW;AACd,WAAO,CAAC,GAAG,MAAM,GAAG,QAAQ;AAAA,EAC/B,GAAE,WAAW;AAClB;ACbO,SAAS,iBAAiB,qBAAqB,kBAAkB,OAAO,SAAS;AACpF,QAAM,EAAE,iBAAiB,EAAC,IAAK;AAC/B,QAAM,SAAS,CAAE;AACjB,WAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACrC,UAAM,QAAQ,QAAQ,UAAU,qBAAqB,CAAC;AACtD,QAAI,oBAAoB,QAAQ,kBAAkB;AAC9C;AAAA,IACZ;AACQ,WAAO,KAAK,KAAK;AAAA,EACzB;AACI,SAAO;AACX;ACTO,SAAS,gBAAgB,OAAO,SAAS;AAC5C,QAAM,EAAE,OAAO,cAAc,QAAQ,MAAM,WACrC,OAAO,GAAG,MAAM,QAAQ,IACxB,QAAQ,OACJ,IAAI,QAAQ,KAAI,IAChB,oBAAI,KAAM,GAAE,iBAAiB,GAAG,UAAU,WAAU,IAAK;AACnE,MAAI,eAAe,SAAS,gBAAgB;AAC5C,QAAM,EAAE,4BAAAT,6BAA4B,WAAAb,YAAW,cAAAC,cAAc,IAAG;AAEhE,MAAI,YAAYY,4BAA2B,UAAU,YAAY,IAAI,GAAG;AACpE,UAAM,SAAS,MAAM,iBAAiB;AACtC,mBAAeb,WAAU,UAAU,MAAM;AAAA,EACjD;AAEI,MAAI,cAAca,4BAA2B,cAAc,UAAU,IAAI,GAAG;AACxE,mBAAe;AAAA,EACvB;AACI,SAAOZ,cAAa,YAAY;AACpC;ACZO,MAAM,YAAY;AAAA,EACrB,YAAY,MAAM,cAAc,UAAU,gBAAgB;AACtD,SAAK,OAAO;AACZ,SAAK,eAAe;AACpB,SAAK,UAAU,QAAQ,gBAAgB,CAAC,QAAQ,YAAY,MAAM,YAAY,CAAC;AAC/E,SAAK,UAAU;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,UAAU,KAAK;AACX,WAAQ,KAAK,QAAQ,UAAU,IAAI,MAAM,KAAK,IAAI,KAC9C,KAAK,QAAQ,YAAY,IAAI,cAAc,KAAK,YAAY;AAAA,EACxE;AACA;ACtBO,MAAM,cAAc;AAAA,EACvB,YAAY,OAAO,OAAO;AACtB,SAAK,OAAO;AACZ,SAAK,QAAQ;AAAA,EACrB;AACA;ACLO,MAAM,aAAa;AAAA,EACtB,YAAY,YAAY,MAAM;AAC1B,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,EAC1B;AACA;ACJO,SAAS,UAEhB,eAEA,OAEA,OAAO,SAAS;AACZ,QAAM,EAAE,SAAAU,UAAS,oBAAAG,qBAAoB,cAAAC,eAAc,YAAAC,aAAY,WAAAC,YAAW,YAAAO,aAAY,SAAAC,UAAS,sBAAAN,uBAAsB,gBAAAC,iBAAgB,aAAAC,aAAa,IAAG;AACrJ,QAAM,kBAAkB,cAAc,OAAO,CAAC,QAAQ,UAAU;AAC5D,UAAM,uBAAuB,MAAM,oBAC7BF,sBAAqB,OAAO,OAAO,IACnC,MAAM,UACFC,gBAAe,KAAK,IACpBC,aAAY,KAAK;AAC3B,UAAM,qBAAqB,MAAM,oBAC3BP,oBAAmB,OAAO,OAAO,IACjC,MAAM,UACFC,cAAaC,YAAW,KAAK,CAAC,IAC9BC,WAAUD,YAAW,KAAK,CAAC;AAErC,UAAM,aAAa,MAAM,OAAO,CAAC,SAAS;AACtC,aAAO,QAAQ,wBAAwB,QAAQ;AAAA,IAC3D,CAAS;AACD,UAAM,yBAAyB,MAAM,oBAAoB,KAAK;AAC9D,QAAI,MAAM,cAAc,WAAW,SAAS,wBAAwB;AAChE,YAAM,aAAa,MAAM,OAAO,CAAC,SAAS;AACtC,cAAM,YAAY,yBAAyB,WAAW;AACtD,eAAQ,OAAO,sBACX,QAAQL,SAAQ,oBAAoB,SAAS;AAAA,MACjE,CAAa;AACD,iBAAW,KAAK,GAAG,UAAU;AAAA,IACzC;AACQ,UAAM,QAAQ,WAAW,OAAO,CAACe,QAAO,SAAS;AAC7C,YAAM,aAAa,MAAM,UAAUF,YAAW,IAAI,IAAIC,SAAQ,IAAI;AAClE,YAAM,OAAOC,OAAM,KAAK,CAACC,UAASA,MAAK,eAAe,UAAU;AAChE,YAAM,MAAM,IAAI,YAAY,MAAM,OAAO,OAAO;AAChD,UAAI,CAAC,MAAM;AACP,QAAAD,OAAM,KAAK,IAAI,aAAa,YAAY,CAAC,GAAG,CAAC,CAAC;AAAA,MAC9D,OACiB;AACD,aAAK,KAAK,KAAK,GAAG;AAAA,MAClC;AACY,aAAOA;AAAA,IACV,GAAE,EAAE;AACL,UAAM,iBAAiB,IAAI,cAAc,OAAO,KAAK;AACrD,WAAO,KAAK,cAAc;AAC1B,WAAO;AAAA,EACV,GAAE,EAAE;AACL,MAAI,CAAC,MAAM,eAAe;AACtB,WAAO;AAAA,EACf,OACS;AACD,WAAO,gBAAgB,QAAS;AAAA,EACxC;AACA;ACtDO,SAAS,aAAa,OAAO,SAAS;;AACzC,MAAI,EAAE,YAAY,SAAQ,IAAK;AAC/B,QAAM,EAAE,aAAApB,cAAa,YAAAsB,aAAY,cAAA3B,eAAc,YAAAe,aAAY,UAAAR,WAAU,WAAAD,WAAS,IAAK;AAEnF,QAAM,EAAE,UAAU,QAAQ,WAAW,QAAS,IAAG;AACjD,MAAI,CAAC,cAAc,WAAW;AAC1B,iBAAa;AAAA,EACrB;AACI,MAAI,CAAC,cAAc,UAAU;AACzB,iBAAa,IAAI,KAAK,UAAU,GAAG,CAAC;AAAA,EAC5C;AACI,MAAI,CAAC,YAAY,SAAS;AACtB,eAAW;AAAA,EACnB;AACI,MAAI,CAAC,YAAY,QAAQ;AACrB,eAAW,IAAI,KAAK,QAAQ,IAAI,EAAE;AAAA,EAC1C;AACI,QAAM,gBAAe,WAAM,kBAAN,mBAAqB,WAAW;AACrD,MAAI,YAAY;AACZ,iBAAaN,cAAa,UAAU;AAAA,EAC5C,WACa,UAAU;AACf,iBAAa,IAAI,KAAK,UAAU,GAAG,CAAC;AAAA,EAC5C,WACa,CAAC,cAAc,cAAc;AAClC,UAAM,QAAQ,MAAM,UACf,MAAM,WACD,OAAO,GAAG,MAAM,QAAQ,IACxB,QAAQ,OACJ,IAAI,QAAQ,KAAI,IAChB,oBAAI,KAAI;AACtB,iBAAaK,aAAYE,UAAS,OAAO,IAAI,CAAC;AAAA,EACtD;AACI,MAAI,UAAU;AACV,eAAWQ,YAAW,QAAQ;AAAA,EACtC,WACa,QAAQ;AACb,eAAW,IAAI,KAAK,QAAQ,IAAI,EAAE;AAAA,EAC1C,WACa,CAAC,YAAY,cAAc;AAChC,UAAM,QAAQ,MAAM,UACf,MAAM,WACD,OAAO,GAAG,MAAM,QAAQ,IACxB,QAAQ,OACJ,IAAI,QAAQ,KAAI,IAChB,oBAAI,KAAI;AACtB,eAAWT,WAAU,KAAK;AAAA,EAClC;AACI,SAAO;AAAA,IACH,aAAaqB,YAAW,UAAU,IAAI;AAAA,IACtC,WAAWA,YAAW,QAAQ,IAAI;AAAA,EACrC;AACL;AC7CO,SAAS,aAAa,qBAAqB,kBAAkB,SAAS,SAAS;AAClF,MAAI,QAAQ,mBAAmB;AAC3B,WAAO;AAAA,EACf;AACI,QAAM,EAAE,iBAAiB,iBAAiB,EAAG,IAAG;AAChD,QAAM,EAAE,cAAA3B,eAAc,WAAAD,YAAW,4BAAAa,4BAA4B,IAAG;AAChE,QAAM,SAAS,kBAAkB,iBAAiB;AAClD,QAAM,QAAQZ,cAAa,mBAAmB;AAC9C,MAAI,CAAC,kBAAkB;AACnB,WAAOD,WAAU,OAAO,MAAM;AAAA,EACtC;AACI,QAAM,aAAaa,4BAA2B,kBAAkB,mBAAmB;AACnF,MAAI,aAAa,gBAAgB;AAC7B,WAAO;AAAA,EACf;AAEI,SAAOb,WAAU,OAAO,MAAM;AAClC;AChBO,SAAS,iBAAiB,qBAAqB,oBAAoB,SAAS,SAAS;AACxF,MAAI,QAAQ,mBAAmB;AAC3B,WAAO;AAAA,EACf;AACI,QAAM,EAAE,iBAAiB,eAAc,IAAK;AAC5C,QAAM,EAAE,cAAAC,eAAc,WAAAD,YAAW,4BAAAa,4BAA4B,IAAG;AAChE,QAAM,SAAS,kBAAmB,kBAAkB,IAAK;AACzD,QAAM,QAAQZ,cAAa,mBAAmB;AAC9C,MAAI,CAAC,oBAAoB;AACrB,WAAOD,WAAU,OAAO,CAAC,MAAM;AAAA,EACvC;AACI,QAAM,aAAaa,4BAA2B,OAAO,kBAAkB;AACvE,MAAI,cAAc,GAAG;AACjB,WAAO;AAAA,EACf;AACI,SAAOb,WAAU,OAAO,CAAC,MAAM;AACnC;ACzBO,SAAS,SAAS,QAAQ;AAC7B,QAAM,eAAe,CAAE;AACvB,SAAO,OAAO,OAAO,CAAC,OAAO,UAAU;AACnC,WAAO,CAAC,GAAG,OAAO,GAAG,MAAM,KAAK;AAAA,EACnC,GAAE,YAAY;AACnB;ACaO,SAAS,mBAAmB,cAAc,iBAAiB;AAC9D,QAAM,CAAC,mBAAmB,QAAQ,IAAI,SAAS,YAAY;AAC3D,QAAM,QAAQ,oBAAoB,SAAY,oBAAoB;AAClE,SAAO,CAAC,OAAO,QAAQ;AAC3B;ACXO,SAAS,YAAY,OAAO,SAAS;AACxC,QAAM,CAAC,UAAU,MAAM,IAAI,aAAa,OAAO,OAAO;AACtD,QAAM,EAAE,cAAAC,eAAc,YAAAe,YAAU,IAAK;AACrC,QAAM,eAAe,gBAAgB,OAAO,OAAO;AACnD,QAAM,CAAC,YAAY,aAAa,IAAI,mBAAmB,cAAc,MAAM,QAAQf,cAAa,MAAM,KAAK,IAAI,MAAS;AACxH,YAAU,MAAM;AACZ,UAAM,kBAAkB,gBAAgB,OAAO,OAAO;AACtD,kBAAc,eAAe;AAAA,EAErC,GAAO,CAAC,MAAM,QAAQ,CAAC;AAEnB,QAAM,gBAAgB,iBAAiB,YAAY,QAAQ,OAAO,OAAO;AAEzE,QAAM,QAAQ,SAAS,eAAe,MAAM,WAAWe,YAAW,MAAM,QAAQ,IAAI,QAAW,OAAO,OAAO;AAE7G,QAAM,SAAS,UAAU,eAAe,OAAO,OAAO,OAAO;AAE7D,QAAM,QAAQ,SAAS,MAAM;AAE7B,QAAM,OAAO,QAAQ,MAAM;AAC3B,QAAM,gBAAgB,iBAAiB,YAAY,UAAU,OAAO,OAAO;AAC3E,QAAM,YAAY,aAAa,YAAY,QAAQ,OAAO,OAAO;AACjE,QAAM,EAAE,mBAAmB,cAAa,IAAK;AAC7C,QAAM,kBAAkB,CAAC,QAAQ,MAAM,KAAK,CAAC,SAAS,KAAK,KAAK,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,CAAC;AAC7F,QAAM,YAAY,CAAC,SAAS;AACxB,QAAI,mBAAmB;AACnB;AAAA,IACZ;AACQ,QAAI,WAAWf,cAAa,IAAI;AAEhC,QAAI,YAAY,WAAWA,cAAa,QAAQ,GAAG;AAC/C,iBAAWA,cAAa,QAAQ;AAAA,IAC5C;AAEQ,QAAI,UAAU,WAAWA,cAAa,MAAM,GAAG;AAC3C,iBAAWA,cAAa,MAAM;AAAA,IAC1C;AACQ,kBAAc,QAAQ;AACtB,mDAAgB;AAAA,EACnB;AACD,QAAM,UAAU,CAAC,QAAQ;AAErB,QAAI,gBAAgB,GAAG,GAAG;AACtB;AAAA,IACZ;AACQ,cAAU,IAAI,IAAI;AAAA,EACrB;AACD,QAAM,WAAW;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACH;AACD,SAAO;AACX;ACtEO,SAAS,qBAAqB,MAAM,cAAc,YAAY,aAAa;AAC9E,MAAI;AACJ,MAAI,QAAQ;AACZ,MAAI,QAAQ;AACZ,SAAO,QAAQ,KAAK,UAAU,CAAC,OAAO;AAClC,UAAM,MAAM,KAAK,KAAK;AACtB,UAAM,YAAY,aAAa,GAAG;AAClC,QAAI,CAAC,UAAU,QAAQ,QAAQ,KAC3B,CAAC,UAAU,QAAQ,MAAM,KACzB,CAAC,UAAU,QAAQ,OAAO,GAAG;AAC7B,UAAI,UAAU,QAAQ,OAAO,GAAG;AAC5B,sBAAc;AACd,gBAAQ;AAAA,MACxB,WACqB,2CAAa,UAAU,MAAM;AAClC,sBAAc;AACd,gBAAQ;AAAA,MACxB,WACqB,WAAW,IAAI,IAAI,GAAG;AAC3B,sBAAc;AACd,gBAAQ;AAAA,MACxB,WACqB,UAAU,QAAQ,KAAK,GAAG;AAC/B,sBAAc;AACd,gBAAQ;AAAA,MACxB;AAAA,IACA;AACQ;AAAA,EACR;AACI,MAAI,CAAC,aAAa;AAEd,kBAAc,KAAK,KAAK,CAAC,QAAQ;AAC7B,YAAM,IAAI,aAAa,GAAG;AAC1B,aAAO,CAAC,EAAE,QAAQ,QAAQ,KAAK,CAAC,EAAE,QAAQ,MAAM,KAAK,CAAC,EAAE,QAAQ,OAAO;AAAA,IACnF,CAAS;AAAA,EACT;AACI,SAAO;AACX;AC/BO,SAAS,kBAAkB,OAAO,MAEzC,cAAc,OAAO,UAAU,gBAAgB;AAC3C,MAAI,EAAE,MAAM,GAAE,IAAK;AACnB,QAAM,EAAE,0BAAAW,2BAA0B,WAAAiB,WAAS,IAAK;AAChD,MAAI,QAAQ,IAAI;AACZ,UAAM,kBAAkBjB,0BAAyB,IAAI,IAAI,IAAI;AAC7D,QAAI,iBAAiB;AACjB,OAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI;AAAA,IAClC;AACQ,UAAM,YAAYA,0BAAyB,MAAM,IAAI,MAAM,cAAc,IAAI,MACzEA,0BAAyB,IAAI,IAAI,MAAM,cAAc,IAAI;AAC7D,WAAO;AAAA,EACf;AACI,MAAI,CAAC,eAAe,IAAI;AACpB,WAAOiB,WAAU,IAAI,IAAI;AAAA,EACjC;AACI,MAAI,CAAC,eAAe,MAAM;AACtB,WAAOA,WAAU,MAAM,IAAI;AAAA,EACnC;AACI,SAAO;AACX;ACvBO,SAAS,eAAe,SAAS;AACpC,SAAO,QAAQ,WACX,OAAO,YAAY,YACnB,YAAY,WACZ,WAAW,OAAO;AAC1B;AAMO,SAAS,YAAY,OAAO;AAC/B,SAAO,QAAQ,SAAS,OAAO,UAAU,YAAY,UAAU,KAAK;AACxE;AAMO,SAAS,gBAAgB,OAAO;AACnC,SAAO,QAAQ,SAAS,OAAO,UAAU,YAAY,WAAW,KAAK;AACzE;AAMO,SAAS,iBAAiB,OAAO;AACpC,SAAO,QAAQ,SAAS,OAAO,UAAU,YAAY,YAAY,KAAK;AAC1E;AAMO,SAAS,gBAAgB,OAAO;AACnC,SAAO,QAAQ,SAAS,OAAO,UAAU,YAAY,eAAe,KAAK;AAC7E;AAMO,SAAS,aAAa,OAAO,SAAS;AACzC,SAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,MAAM,QAAQ,MAAM;AAC7D;AC5BO,SAAS,mBAAmB,MAAM,UAAU,UAAU,gBAAgB;AACzE,QAAM,cAAc,CAAC,MAAM,QAAQ,QAAQ,IAAI,CAAC,QAAQ,IAAI;AAC5D,QAAM,EAAE,WAAAA,YAAW,0BAAAjB,2BAA0B,SAAAM,SAAS,IAAG;AACzD,SAAO,YAAY,KAAK,CAAC,YAAY;AACjC,QAAI,OAAO,YAAY,WAAW;AAC9B,aAAO;AAAA,IACnB;AACQ,QAAI,QAAQ,OAAO,OAAO,GAAG;AACzB,aAAOW,WAAU,MAAM,OAAO;AAAA,IAC1C;AACQ,QAAI,aAAa,SAAS,OAAO,GAAG;AAChC,aAAO,QAAQ,SAAS,IAAI;AAAA,IACxC;AACQ,QAAI,YAAY,OAAO,GAAG;AACtB,aAAO,kBAAkB,SAAS,MAAM,OAAO,OAAO;AAAA,IAClE;AACQ,QAAI,gBAAgB,OAAO,GAAG;AAC1B,UAAI,CAAC,MAAM,QAAQ,QAAQ,SAAS,GAAG;AACnC,eAAO,QAAQ,cAAc,KAAK,OAAQ;AAAA,MAC1D;AACY,aAAO,QAAQ,UAAU,SAAS,KAAK,OAAM,CAAE;AAAA,IAC3D;AACQ,QAAI,eAAe,OAAO,GAAG;AACzB,YAAM,aAAajB,0BAAyB,QAAQ,QAAQ,IAAI;AAChE,YAAM,YAAYA,0BAAyB,QAAQ,OAAO,IAAI;AAC9D,YAAM,cAAc,aAAa;AACjC,YAAM,aAAa,YAAY;AAC/B,YAAM,mBAAmBM,SAAQ,QAAQ,QAAQ,QAAQ,KAAK;AAC9D,UAAI,kBAAkB;AAClB,eAAO,cAAc;AAAA,MACrC,OACiB;AACD,eAAO,eAAe;AAAA,MACtC;AAAA,IACA;AACQ,QAAI,gBAAgB,OAAO,GAAG;AAC1B,aAAON,0BAAyB,MAAM,QAAQ,KAAK,IAAI;AAAA,IACnE;AACQ,QAAI,iBAAiB,OAAO,GAAG;AAC3B,aAAOA,0BAAyB,QAAQ,QAAQ,IAAI,IAAI;AAAA,IACpE;AACQ,QAAI,OAAO,YAAY,YAAY;AAC/B,aAAO,QAAQ,IAAI;AAAA,IAC/B;AACQ,WAAO;AAAA,EACf,CAAK;AACL;ACnEO,SAAS,iBAAiB,QAAQ,SAAS,SAAS,UAAU,QAAQ,OAAO,SAAS;AACzF,QAAM,EAAE,SAAS,kBAAiB,IAAK;AACvC,QAAM,EAAE,SAAAD,UAAS,WAAAX,YAAW,UAAA8B,WAAU,UAAAtB,WAAU,oBAAAM,qBAAoB,cAAAC,eAAc,WAAAE,YAAW,KAAAc,MAAK,KAAAC,MAAK,sBAAAb,uBAAsB,gBAAAC,iBAAgB,aAAAC,aAAa,IAAG;AAC7J,QAAM,UAAU;AAAA,IACZ,KAAKV;AAAA,IACL,MAAMmB;AAAA,IACN,OAAO9B;AAAA,IACP,MAAMQ;AAAA,IACN,aAAa,CAAC,SAAS,oBACjBW,sBAAqB,MAAM,OAAO,IAClC,UACIC,gBAAe,IAAI,IACnBC,aAAY,IAAI;AAAA,IAC1B,WAAW,CAAC,SAAS,oBACfP,oBAAmB,MAAM,OAAO,IAChC,UACIC,cAAa,IAAI,IACjBE,WAAU,IAAI;AAAA,EAC3B;AACD,MAAI,gBAAgB,QAAQ,MAAM,EAAE,SAAS,YAAY,UAAU,IAAI,EAAE;AACzE,MAAI,YAAY,YAAY,UAAU;AAClC,oBAAgBc,KAAI,CAAC,UAAU,aAAa,CAAC;AAAA,EACrD,WACa,YAAY,WAAW,QAAQ;AACpC,oBAAgBC,KAAI,CAAC,QAAQ,aAAa,CAAC;AAAA,EACnD;AACI,SAAO;AACX;ACzBO,SAAS,aAAa,QAAQ,SAErC,QAAQ,oBAAoB,kBAAkB,OAAO,SAAS,UAAU,GAAG;AACvE,MAAI,UAAU,KAAK;AAEf,WAAO;AAAA,EACf;AACI,QAAM,gBAAgB;AAAA,IAAiB;AAAA,IAAQ;AAAA,IAAS,OAAO;AAAA;AAAA,IAC/D;AAAA,IAAoB;AAAA,IAAkB;AAAA,IAAO;AAAA,EAAO;AACpD,QAAM,aAAa,QAAQ,MAAM,YAAY,mBAAmB,eAAe,MAAM,UAAU,OAAO,CAAC;AACvG,QAAM,WAAW,QAAQ,MAAM,UAAU,mBAAmB,eAAe,MAAM,QAAQ,OAAO,CAAC;AACjG,QAAM,cAAc;AACpB,QAAM,WAAW,IAAI,YAAY,eAAe,aAAa,OAAO;AACpE,MAAI,CAAC,cAAc,CAAC,UAAU;AAC1B,WAAO;AAAA,EACf;AAEI,SAAO,aAAa,QAAQ,SAAS,UAAU,oBAAoB,kBAAkB,OAAO,SAAS,UAAU,CAAC;AACpH;ACjBO,SAAS,SAAS,OAAO,UAAU,cAAc,YAAY,SAAS;AACzE,QAAM,EAAE,UAAS,IAAK;AACtB,QAAM,CAAC,aAAa,cAAc,IAAI,SAAU;AAChD,QAAM,cAAc,qBAAqB,SAAS,MAAM,cAAc,eAAe,MAAM,QAAQ,WAAW;AAC9G,QAAM,CAAC,YAAY,UAAU,IAAI,SAAS,YAAY,cAAc,MAAS;AAC7E,QAAM,OAAO,MAAM;AACf,mBAAe,UAAU;AACzB,eAAW,MAAS;AAAA,EACvB;AACD,QAAM,YAAY,CAAC,QAAQ,YAAY;AACnC,QAAI,CAAC;AACD;AACJ,UAAM,YAAY,aAAa,QAAQ,SAAS,YAAY,SAAS,UAAU,SAAS,QAAQ,OAAO,OAAO;AAC9G,QAAI,CAAC;AACD;AACJ,aAAS,QAAQ,SAAS;AAC1B,eAAW,SAAS;AAAA,EACvB;AACD,QAAM,gBAAgB,CAAC,QAAQ;AAC3B,WAAO,QAAQ,2CAAa,UAAU,IAAI;AAAA,EAC7C;AACD,QAAMC,YAAW;AAAA,IACb;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACH;AACD,SAAOA;AACX;ACvBO,SAAS,gBAAgB,MAAM,OAAO,SAAS;AAClD,QAAM,EAAE,UAAU,QAAQ,WAAW,iBAAiB,mBAAmB,MAAK,IAAK;AACnF,QAAM,EAAE,WAAAJ,YAAW,aAAAK,cAAa,cAAAjC,eAAc,UAAAQ,WAAU,YAAAO,aAAY,SAAAE,SAAO,IAAK;AAChF,QAAM,aAAa,MAAM,cAAcjB,cAAa,MAAM,UAAU;AACpE,QAAM,WAAW,MAAM,YAAYe,YAAW,MAAM,QAAQ;AAC5D,QAAM,uBAAuB;AAAA,IACzB,CAAC,QAAQ,OAAO,GAAG,CAAE;AAAA,IACrB,CAAC,QAAQ,OAAO,GAAG,CAAE;AAAA,IACrB,CAAC,QAAQ,QAAQ,GAAG,CAAE;AAAA,IACtB,CAAC,QAAQ,MAAM,GAAG,CAAE;AAAA,IACpB,CAAC,QAAQ,KAAK,GAAG,CAAA;AAAA,EACpB;AACD,QAAM,qBAAqB,CAAE;AAC7B,aAAW,OAAO,MAAM;AACpB,UAAM,EAAE,MAAM,aAAY,IAAK;AAC/B,UAAM,YAAY,QAAQ,gBAAgB,CAACkB,aAAY,MAAM,YAAY,CAAC;AAC1E,UAAM,qBAAqB,QAAQ,cAAczB,UAAS,MAAM,UAAU,CAAC;AAC3E,UAAM,kBAAkB,QAAQ,YAAYS,SAAQ,MAAM,QAAQ,CAAC;AACnE,UAAM,aAAa,QAAQ,YAAY,mBAAmB,MAAM,UAAU,OAAO,CAAC;AAClF,UAAM,WAAW,QAAQ,UAAU,mBAAmB,MAAM,QAAQ,OAAO,CAAC,KACxE,sBACA;AAAA,IAEC,CAAC,qBAAqB,CAAC,mBAAmB,aAC1C,qBAAqB,oBAAoB,SAAS;AACvD,UAAM,UAAUW,WAAU,MAAM,UAC3B,MAAM,WACD,OAAO,GAAG,MAAM,QAAQ,IACxB,QAAQ,OACJ,IAAI,QAAQ,KAAI,IAChB,oBAAI,KAAM,EAAC;AACzB,QAAI;AACA,2BAAqB,QAAQ,KAAK,GAAG;AACzC,QAAI;AACA,2BAAqB,SAAS,KAAK,GAAG;AAC1C,QAAI;AACA,2BAAqB,OAAO,KAAK,GAAG;AACxC,QAAI;AACA,2BAAqB,MAAM,KAAK,GAAG;AAEvC,QAAI,WAAW;AACX,aAAO,KAAK,SAAS,EAAE,QAAQ,CAAC,SAAS;AACrC,cAAM,gBAAgB,uCAAY;AAClC,cAAM,UAAU,gBACV,mBAAmB,MAAM,eAAe,OAAO,IAC/C;AACN,YAAI,CAAC;AACD;AACJ,YAAI,mBAAmB,IAAI,GAAG;AAC1B,6BAAmB,IAAI,EAAE,KAAK,GAAG;AAAA,QACrD,OACqB;AACD,6BAAmB,IAAI,IAAI,CAAC,GAAG;AAAA,QACnD;AAAA,MACA,CAAa;AAAA,IACb;AAAA,EACA;AACI,SAAO,CAAC,QAAQ;AAEZ,UAAM,WAAW;AAAA,MACb,CAAC,QAAQ,OAAO,GAAG;AAAA,MACnB,CAAC,QAAQ,QAAQ,GAAG;AAAA,MACpB,CAAC,QAAQ,MAAM,GAAG;AAAA,MAClB,CAAC,QAAQ,OAAO,GAAG;AAAA,MACnB,CAAC,QAAQ,KAAK,GAAG;AAAA,IACpB;AACD,UAAM,kBAAkB,CAAE;AAE1B,eAAW,QAAQ,sBAAsB;AACrC,YAAMM,QAAO,qBAAqB,IAAI;AACtC,eAAS,IAAI,IAAIA,MAAK,KAAK,CAAC,MAAM,MAAM,GAAG;AAAA,IACvD;AACQ,eAAW,QAAQ,oBAAoB;AACnC,sBAAgB,IAAI,IAAI,mBAAmB,IAAI,EAAE,KAAK,CAAC,MAAM,MAAM,GAAG;AAAA,IAClF;AACQ,WAAO;AAAA,MACH,GAAG;AAAA;AAAA,MAEH,GAAG;AAAA,IACN;AAAA,EACJ;AACL;AC1FO,SAAS,SAAS,OAAO,SAAS;AACrC,QAAM,EAAE,UAAU,mBAAmB,UAAU,SAAU,IAAG;AAC5D,QAAM,CAAC,oBAAoB,WAAW,IAAI,mBAAmB,mBAAmB,WAAW,oBAAoB,MAAS;AACxH,QAAM,WAAW,CAAC,WAAW,qBAAqB;AAClD,QAAM,EAAE,WAAAN,WAAS,IAAK;AACtB,QAAM,aAAa,CAAC,SAAS;AACzB,YAAO,qCAAU,KAAK,CAAC,MAAMA,WAAU,GAAG,IAAI,OAAM;AAAA,EACvD;AACD,QAAM,EAAE,KAAAG,MAAK,KAAAD,KAAG,IAAK;AACrB,QAAM,SAAS,CAAC,aAAa,WAAW,MAAM;AAC1C,QAAI,WAAW,CAAC,GAAI,YAAY,CAAE,CAAC;AACnC,QAAI,WAAW,WAAW,GAAG;AACzB,WAAI,qCAAU,YAAWC,MAAK;AAE1B;AAAA,MAChB;AACY,UAAI,aAAY,qCAAU,YAAW,GAAG;AAEpC;AAAA,MAChB;AACY,iBAAW,qCAAU,OAAO,CAAC,MAAM,CAACH,WAAU,GAAG,WAAW;AAAA,IACxE,OACa;AACD,WAAI,qCAAU,YAAWE,MAAK;AAE1B,mBAAW,CAAC,WAAW;AAAA,MACvC,OACiB;AAED,mBAAW,CAAC,GAAG,UAAU,WAAW;AAAA,MACpD;AAAA,IACA;AACQ,QAAI,CAAC,UAAU;AACX,kBAAY,QAAQ;AAAA,IAChC;AACQ,yCAAW,UAAU,aAAa,WAAW;AAC7C,WAAO;AAAA,EACV;AACD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACH;AACL;ACnCO,SAAS,WAEhB,MAEA,cAAcC,OAAM,GAAGD,OAAM,GAAG,WAAW,OAE3C,UAAU,gBAAgB;AACtB,QAAM,EAAE,MAAM,GAAI,IAAG,gBAAgB,CAAE;AACvC,QAAM,EAAE,WAAAF,YAAW,SAAAX,UAAS,UAAAT,UAAU,IAAG;AACzC,MAAI;AACJ,MAAI,CAAC,QAAQ,CAAC,IAAI;AAEd,YAAQ,EAAE,MAAM,MAAM,IAAIuB,OAAM,IAAI,SAAY,KAAM;AAAA,EAC9D,WACa,QAAQ,CAAC,IAAI;AAElB,QAAIH,WAAU,MAAM,IAAI,GAAG;AAEvB,UAAI,UAAU;AACV,gBAAQ,EAAE,MAAM,IAAI,OAAW;AAAA,MAC/C,OACiB;AACD,gBAAQ;AAAA,MACxB;AAAA,IACA,WACiBpB,UAAS,MAAM,IAAI,GAAG;AAE3B,cAAQ,EAAE,MAAM,MAAM,IAAI,KAAM;AAAA,IAC5C,OACa;AAED,cAAQ,EAAE,MAAM,IAAI,KAAM;AAAA,IACtC;AAAA,EACA,WACa,QAAQ,IAAI;AAEjB,QAAIoB,WAAU,MAAM,IAAI,KAAKA,WAAU,IAAI,IAAI,GAAG;AAE9C,UAAI,UAAU;AACV,gBAAQ,EAAE,MAAM,GAAI;AAAA,MACpC,OACiB;AACD,gBAAQ;AAAA,MACxB;AAAA,IACA,WACiBA,WAAU,MAAM,IAAI,GAAG;AAE5B,cAAQ,EAAE,MAAM,IAAIG,OAAM,IAAI,SAAY,KAAM;AAAA,IAC5D,WACiBH,WAAU,IAAI,IAAI,GAAG;AAE1B,cAAQ,EAAE,MAAM,MAAM,IAAIG,OAAM,IAAI,SAAY,KAAM;AAAA,IAClE,WACiBvB,UAAS,MAAM,IAAI,GAAG;AAE3B,cAAQ,EAAE,MAAM,MAAM,GAAQ;AAAA,IAC1C,WACiBS,SAAQ,MAAM,IAAI,GAAG;AAE1B,cAAQ,EAAE,MAAM,IAAI,KAAM;AAAA,IACtC,WACiBA,SAAQ,MAAM,EAAE,GAAG;AAExB,cAAQ,EAAE,MAAM,IAAI,KAAM;AAAA,IACtC,OACa;AACD,YAAM,IAAI,MAAM,eAAe;AAAA,IAC3C;AAAA,EACA;AAEI,OAAI,+BAAO,UAAQ,+BAAO,KAAI;AAC1B,UAAM,OAAO,QAAQ,yBAAyB,MAAM,IAAI,MAAM,IAAI;AAClE,QAAIa,OAAM,KAAK,OAAOA,MAAK;AACvB,cAAQ,EAAE,MAAM,MAAM,IAAI,OAAW;AAAA,IACjD,WACiBC,OAAM,KAAK,OAAOA,MAAK;AAC5B,cAAQ,EAAE,MAAM,MAAM,IAAI,OAAW;AAAA,IACjD;AAAA,EACA;AACI,SAAO;AACX;AC1EO,SAAS,uBAAuB,OAAO,WAAW,UAAU,gBAAgB;AAC/E,QAAM,eAAe,CAAC,MAAM,QAAQ,SAAS,IAAI,CAAC,SAAS,IAAI;AAC/D,MAAI,OAAO,MAAM;AACjB,QAAM,YAAY,QAAQ,yBAAyB,MAAM,IAAI,MAAM,IAAI;AAEvE,QAAM,iBAAiB,KAAK,IAAI,WAAW,CAAC;AAC5C,WAAS,IAAI,GAAG,KAAK,gBAAgB,KAAK;AACtC,QAAI,aAAa,SAAS,KAAK,OAAQ,CAAA,GAAG;AACtC,aAAO;AAAA,IACnB;AACQ,WAAO,QAAQ,QAAQ,MAAM,CAAC;AAAA,EACtC;AACI,SAAO;AACX;ACpBO,SAAS,cAAc,WAAW,YAAY,UAAU,gBAAgB;AAC3E,SAAQ,kBAAkB,WAAW,WAAW,MAAM,OAAO,OAAO,KAChE,kBAAkB,WAAW,WAAW,IAAI,OAAO,OAAO,KAC1D,kBAAkB,YAAY,UAAU,MAAM,OAAO,OAAO,KAC5D,kBAAkB,YAAY,UAAU,IAAI,OAAO,OAAO;AAClE;ACYO,SAAS,uBAAuB,OAAO,WAAW,UAAU,gBAAgB;AAC/E,QAAM,WAAW,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC,SAAS;AAElE,QAAM,sBAAsB,SAAS,OAAO,CAAC,YAAY,OAAO,YAAY,UAAU;AACtF,QAAM,4BAA4B,oBAAoB,KAAK,CAAC,YAAY;AACpE,QAAI,OAAO,YAAY;AACnB,aAAO;AACX,QAAI,QAAQ,OAAO,OAAO,GAAG;AACzB,aAAO,kBAAkB,OAAO,SAAS,OAAO,OAAO;AAAA,IACnE;AACQ,QAAI,aAAa,SAAS,OAAO,GAAG;AAChC,aAAO,QAAQ,KAAK,CAAC,SAAS,kBAAkB,OAAO,MAAM,OAAO,OAAO,CAAC;AAAA,IACxF;AACQ,QAAI,YAAY,OAAO,GAAG;AACtB,UAAI,QAAQ,QAAQ,QAAQ,IAAI;AAC5B,eAAO,cAAc,OAAO,EAAE,MAAM,QAAQ,MAAM,IAAI,QAAQ,GAAI,GAAE,OAAO;AAAA,MAC3F;AACY,aAAO;AAAA,IACnB;AACQ,QAAI,gBAAgB,OAAO,GAAG;AAC1B,aAAO,uBAAuB,OAAO,QAAQ,WAAW,OAAO;AAAA,IAC3E;AACQ,QAAI,eAAe,OAAO,GAAG;AACzB,YAAM,mBAAmB,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,KAAK;AACtE,UAAI,kBAAkB;AAClB,eAAO,cAAc,OAAO;AAAA,UACxB,MAAM,QAAQ,QAAQ,QAAQ,OAAO,CAAC;AAAA,UACtC,IAAI,QAAQ,QAAQ,QAAQ,QAAQ,EAAE;AAAA,QACzC,GAAE,OAAO;AAAA,MAC1B;AACY,aAAQ,mBAAmB,MAAM,MAAM,SAAS,OAAO,KACnD,mBAAmB,MAAM,IAAI,SAAS,OAAO;AAAA,IAC7D;AACQ,QAAI,gBAAgB,OAAO,KAAK,iBAAiB,OAAO,GAAG;AACvD,aAAQ,mBAAmB,MAAM,MAAM,SAAS,OAAO,KACnD,mBAAmB,MAAM,IAAI,SAAS,OAAO;AAAA,IAC7D;AACQ,WAAO;AAAA,EACf,CAAK;AACD,MAAI,2BAA2B;AAC3B,WAAO;AAAA,EACf;AACI,QAAM,mBAAmB,SAAS,OAAO,CAAC,YAAY,OAAO,YAAY,UAAU;AACnF,MAAI,iBAAiB,QAAQ;AACzB,QAAI,OAAO,MAAM;AACjB,UAAM,YAAY,QAAQ,yBAAyB,MAAM,IAAI,MAAM,IAAI;AACvE,aAAS,IAAI,GAAG,KAAK,WAAW,KAAK;AACjC,UAAI,iBAAiB,KAAK,CAAC,YAAY,QAAQ,IAAI,CAAC,GAAG;AACnD,eAAO;AAAA,MACvB;AACY,aAAO,QAAQ,QAAQ,MAAM,CAAC;AAAA,IAC1C;AAAA,EACA;AACI,SAAO;AACX;AC5EO,SAAS,SAAS,OAAO,SAAS;AACrC,QAAM,EAAE,UAAU,iBAAiB,UAAU,mBAAmB,UAAU,SAAQ,IAAK;AACvF,QAAM,CAAC,oBAAoB,WAAW,IAAI,mBAAmB,mBAAmB,WAAW,oBAAoB,MAAS;AACxH,QAAM,WAAW,CAAC,WAAW,qBAAqB;AAClD,QAAM,aAAa,CAAC,SAAS,YAAY,kBAAkB,UAAU,MAAM,OAAO,OAAO;AACzF,QAAM,SAAS,CAAC,aAAa,WAAW,MAAM;AAC1C,UAAM,EAAE,KAAAA,MAAK,KAAAD,KAAG,IAAK;AACrB,UAAM,WAAW,cACX,WAAW,aAAa,UAAUC,MAAKD,MAAK,UAAU,OAAO,IAC7D;AACN,QAAI,mBAAmB,aAAY,qCAAU,SAAQ,SAAS,IAAI;AAC9D,UAAI,uBAAuB,EAAE,MAAM,SAAS,MAAM,IAAI,SAAS,GAAE,GAAI,UAAU,OAAO,GAAG;AAErF,iBAAS,OAAO;AAChB,iBAAS,KAAK;AAAA,MAC9B;AAAA,IACA;AACQ,QAAI,CAAC,UAAU;AACX,kBAAY,QAAQ;AAAA,IAChC;AACQ,yCAAW,UAAU,aAAa,WAAW;AAC7C,WAAO;AAAA,EACV;AACD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACH;AACL;AC9BO,SAAS,UAAU,OAAO,SAAS;AACtC,QAAM,EAAE,UAAU,mBAAmB,UAAU,SAAU,IAAG;AAC5D,QAAM,CAAC,oBAAoB,WAAW,IAAI,mBAAmB,mBAAmB,WAAW,oBAAoB,MAAS;AACxH,QAAM,WAAW,CAAC,WAAW,qBAAqB;AAClD,QAAM,EAAE,WAAAF,WAAS,IAAK;AACtB,QAAM,aAAa,CAAC,gBAAgB;AAChC,WAAO,WAAWA,WAAU,UAAU,WAAW,IAAI;AAAA,EACxD;AACD,QAAM,SAAS,CAAC,aAAa,WAAW,MAAM;AAC1C,QAAI,UAAU;AACd,QAAI,CAAC,YAAY,YAAY,YAAYA,WAAU,aAAa,QAAQ,GAAG;AAEvE,gBAAU;AAAA,IACtB;AACQ,QAAI,CAAC,UAAU;AACX,kBAAY,OAAO;AAAA,IAC/B;AACQ,QAAI,UAAU;AACV,2CAAW,SAAS,aAAa,WAAW;AAAA,IACxD,OACa;AACD,2CAAW,SAAS,aAAa,WAAW;AAAA,IACxD;AACQ,WAAO;AAAA,EACV;AACD,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACH;AACL;AC5BO,SAAS,aAAa,OAAO,SAAS;AACzC,QAAM,SAAS,UAAU,OAAO,OAAO;AACvC,QAAM,QAAQ,SAAS,OAAO,OAAO;AACrC,QAAM,QAAQ,SAAS,OAAO,OAAO;AACrC,UAAQ,MAAM,MAAI;AAAA,IACd,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX;AACI,aAAO;AAAA,EACnB;AACA;ACSO,SAAS,UAAU,OAAO;AAC7B,QAAM,EAAE,YAAAhC,aAAY,YAAY,QAAQ,SAAS,QAAQ,YAAAD,gBAAe,QAAQ,MAAM;AAClF,UAAMwC,UAAS,EAAE,GAAGlC,QAAe,GAAG,MAAM,OAAQ;AACpD,UAAMmC,WAAU,IAAI,QAAQ;AAAA,MACxB,QAAAD;AAAA,MACA,cAAc,MAAM,oBAAoB,IAAI,MAAM;AAAA,MAClD,uBAAuB,MAAM;AAAA,MAC7B,6BAA6B,MAAM;AAAA,MACnC,8BAA8B,MAAM;AAAA,IAChD,GAAW,MAAM,OAAO;AAChB,WAAO;AAAA,MACH,SAAAC;AAAA,MACA,YAAY,cAAc,MAAM,UAAU;AAAA,MAC1C,YAAY,cAAc,MAAM,UAAU;AAAA,MAC1C,QAAQ,EAAE,GAAG,eAAe,GAAG,MAAM,OAAQ;AAAA,MAC7C,QAAAD;AAAA,MACA,YAAY,EAAE,GAAG,wBAAwB,GAAG,MAAM,WAAU;AAAA,IAC/D;AAAA,EACT,GAAO;AAAA,IACC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACd,CAAK;AACD,QAAM,EAAE,eAAe,MAAM,WAAW,YAAY,YAAY,cAAc,iBAAiB,iBAAiB,aAAa,aAAa,gBAAgB,QAAAhC,QAAQ,IAAG;AACrK,QAAM,EAAE,eAAAkC,gBAAe,WAAAC,YAAW,qBAAAC,sBAAqB,kBAAAC,mBAAkB,wBAAAC,yBAAwB,mBAAAC,oBAAmB,oBAAAC,oBAAkB,IAAK;AAC3I,QAAM,WAAW,YAAY,OAAO,OAAO;AAC3C,QAAM,EAAE,MAAM,QAAQ,UAAU,QAAQ,eAAe,WAAW,UAAS,IAAK;AAChF,QAAM,eAAe,gBAAgB,MAAM,OAAO,OAAO;AACzD,QAAM,EAAE,YAAY,QAAQ,UAAU,cAAe,IAAG,aAAa,OAAO,OAAO,KAAK,CAAE;AAC1F,QAAM,EAAE,MAAM,SAAS,eAAe,WAAW,WAAU,IAAK,SAAS,OAAO,UAAU,cAAc,eAAe,MAAM,QAAQ,OAAO;AAC5I,QAAM,EAAE,gBAAAC,iBAAgB,eAAAC,gBAAe,WAAAC,YAAW,oBAAAC,qBAAoB,UAAAC,WAAU,cAAAC,eAAc,iBAAAC,kBAAiB,uBAAAC,wBAAuB,mBAAAC,mBAAmB,IAAG;AAC5J,QAAM,WAAW,QAAQ,MAAM,YAAY,SAAS,MAAM,SAAS,MAAM,QAAQ,GAAG,CAAC,SAAS,MAAM,SAAS,MAAM,QAAQ,CAAC;AAC5H,QAAM,gBAAgB,SAAS,UAAa,eAAe;AAC3D,QAAM,sBAAsB,YAAY,MAAM;AAC1C,QAAI,CAAC;AACD;AACJ,cAAU,aAAa;AACvB,+CAAc;AAAA,EACjB,GAAE,CAAC,eAAe,WAAW,WAAW,CAAC;AAC1C,QAAM,kBAAkB,YAAY,MAAM;AACtC,QAAI,CAAC;AACD;AACJ,cAAU,SAAS;AACnB,+CAAc;AAAA,EACjB,GAAE,CAAC,WAAW,WAAW,WAAW,CAAC;AACtC,QAAM,iBAAiB,YAAY,CAAC,KAAK,MAAM,CAAC,MAAM;AAClD,MAAE,eAAgB;AAClB,MAAE,gBAAiB;AACnB,eAAW,GAAG;AACd,qCAAS,IAAI,MAAM,GAAG;AACtB,6CAAa,IAAI,MAAM,GAAG;AAAA,EAC7B,GAAE,CAAC,QAAQ,YAAY,UAAU,CAAC;AACnC,QAAM,iBAAiB,YAAY,CAAC,KAAK,MAAM,CAAC,MAAM;AAClD,eAAW,GAAG;AACd,6CAAa,IAAI,MAAM,GAAG;AAAA,EAClC,GAAO,CAAC,YAAY,UAAU,CAAC;AAC3B,QAAM,gBAAgB,YAAY,CAAC,KAAK,MAAM,CAAC,MAAM;AACjD,SAAM;AACN,2CAAY,IAAI,MAAM,GAAG;AAAA,EACjC,GAAO,CAAC,MAAM,SAAS,CAAC;AACpB,QAAM,mBAAmB,YAAY,CAAC,KAAK,cAAc,CAAC,MAAM;AAC5D,UAAM,SAAS;AAAA,MACX,WAAW,CAAC,OAAO,MAAM,QAAQ,QAAQ,UAAU,QAAQ;AAAA,MAC3D,YAAY,CAAC,OAAO,MAAM,QAAQ,QAAQ,WAAW,OAAO;AAAA,MAC5D,WAAW,CAAC,QAAQ,OAAO;AAAA,MAC3B,SAAS,CAAC,QAAQ,QAAQ;AAAA,MAC1B,QAAQ,CAAC,EAAE,WAAW,SAAS,SAAS,QAAQ;AAAA,MAChD,UAAU,CAAC,EAAE,WAAW,SAAS,SAAS,OAAO;AAAA,MACjD,MAAM,CAAC,eAAe,QAAQ;AAAA,MAC9B,KAAK,CAAC,aAAa,OAAO;AAAA,IAC7B;AACD,QAAI,OAAO,EAAE,GAAG,GAAG;AACf,QAAE,eAAgB;AAClB,QAAE,gBAAiB;AACnB,YAAM,CAAC,QAAQ,OAAO,IAAI,OAAO,EAAE,GAAG;AACtC,gBAAU,QAAQ,OAAO;AAAA,IACrC;AACQ,iDAAe,IAAI,MAAM,WAAW;AAAA,EACvC,GAAE,CAAC,WAAW,cAAc,MAAM,GAAG,CAAC;AACvC,QAAM,sBAAsB,YAAY,CAAC,KAAK,cAAc,CAAC,MAAM;AAC/D,uDAAkB,IAAI,MAAM,WAAW;AAAA,EAC/C,GAAO,CAAC,eAAe,CAAC;AACpB,QAAM,sBAAsB,YAAY,CAAC,KAAK,cAAc,CAAC,MAAM;AAC/D,uDAAkB,IAAI,MAAM,WAAW;AAAA,EAC/C,GAAO,CAAC,eAAe,CAAC;AACpB,QAAM,oBAAoB,YAAY,CAAC,SAAS,CAAC,MAAM;AACnD,UAAM,gBAAgB,OAAO,EAAE,OAAO,KAAK;AAC3C,UAAM,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,GAAG,aAAa;AACxE,cAAU,KAAK;AAAA,EACvB,GAAO,CAAC,SAAS,SAAS,CAAC;AACvB,QAAM,mBAAmB,YAAY,CAAC,SAAS,CAAC,MAAM;AAClD,UAAM,eAAe,OAAO,EAAE,OAAO,KAAK;AAC1C,UAAM,QAAQ,QAAQ,QAAQ,QAAQ,aAAa,IAAI,GAAG,YAAY;AACtE,cAAU,KAAK;AAAA,EACvB,GAAO,CAAC,SAAS,SAAS,CAAC;AACvB,QAAM,EAAE,WAAW,MAAO,IAAG,QAAQ,OAAO;AAAA,IACxC,WAAW,CAACzD,YAAW,GAAG,IAAI,GAAG,MAAM,SAAS,EAC3C,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACb,OAAO,EAAE,GAAGQ,WAAA,gBAAAA,QAAS,GAAG,OAAO,GAAG,MAAM,MAAK;AAAA,EACrD,IAAQ,CAACR,aAAY,MAAM,WAAW,MAAM,OAAOQ,OAAM,CAAC;AACtD,QAAM,iBAAiB,kBAAkB,KAAK;AAC9C,QAAM,eAAe;AAAA,IACjB,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAAP;AAAA,IACA,YAAAD;AAAA,IACA,QAAAQ;AAAA,IACA;AAAA,IACA;AAAA,EACH;AACD,SAAQ,MAAM;AAAA,IAAc,iBAAiB;AAAA,IAAU,EAAE,OAAO,aAAc;AAAA,IAC1E,MAAM;AAAA,MAAcP,YAAW;AAAA,MAAM,EAAE,WAAsB,OAAc,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,MAAM,MAAM,MAAM,OAAO,MAAM,OAAO,OAAO,MAAM,OAAO,MAAM,MAAM,MAAM,cAAc,MAAM,YAAY,GAAG,GAAG,eAAgB;AAAA,MACvO,MAAM;AAAA,QAAcA,YAAW;AAAA,QAAQ,EAAE,WAAWD,YAAW,GAAG,MAAM,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,QAAS;AAAA,QACnG,CAAC,MAAM,kBAAmB,MAAM,cAAcP,YAAW,KAAK,EAAE,WAAWD,YAAW,GAAG,GAAG,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,MAAM,cAAc6C,UAAU,GAAE,iBAAiB,qBAAqB,aAAa,iBAAiB,eAA8B,UAAsB,CAAA;AAAA,QAC1Q,OAAO,IAAI,CAAC,eAAe,iBAAiB;AACxC,gBAAM,iBAAiB,gBAAgB,cAAc,MAAM,UAAU,QAAQ,YAAY,OAAO;AAChG,gBAAM,gBAAgB,eAAe,UAAU,QAAQ,YAAY,OAAO;AAC1E,iBAAQ,MAAM;AAAA,YAAcpD,YAAW;AAAA,YAAO,EAAE,WAAWD,YAAW,GAAG,KAAK,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,QAAQ,KAAK,cAAc,cAA4B,cAA8B;AAAA,YACrL,MAAM,cAAcP,YAAW,cAAc,EAAE,WAAWD,YAAW,GAAG,YAAY,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,eAAe,eAA8B,aAA4B,IAAE,+CAAe,WAAW,eAAe,MAAM;AAAA,cAAcP,YAAW;AAAA,cAAa,EAAE,WAAWD,YAAW,GAAG,SAAS,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,WAAY;AAAA,cAC5U,kBAAkB,cACd,kBAAkB,oBAAqB,MAAM,cAAcP,YAAW,gBAAgB,EAAE,WAAWD,YAAW,GAAG,cAAc,GAAG,cAAcoD,uBAAsB,YAAYpD,aAAY,YAAYC,aAAY,UAAU,QAAQ,MAAM,iBAAiB,GAAG,UAAU,kBAAkB,cAAc,IAAI,GAAG,SAAS,gBAAgB,OAAOO,WAAA,gBAAAA,QAAS,GAAG,WAAW,OAAO,cAAc,KAAK,SAAU,EAAA,CAAE,IAAM,MAAM,cAAc,QAAQ,EAAE,MAAM,UAAU,aAAa,SAAU,GAAEoC,qBAAoB,cAAc,KAAK,YAAY,MAAM,CAAC;AAAA,cAC3hB,kBAAkB,cACd,kBAAkB,mBAAoB,MAAM,cAAc3C,YAAW,eAAe,EAAE,WAAWD,YAAW,GAAG,aAAa,GAAG,cAAcyD,mBAAkB,QAAQ,OAAO,GAAG,YAAYzD,aAAY,YAAYC,aAAY,UAAU,QAAQ,MAAM,iBAAiB,GAAG,UAAU,iBAAiB,cAAc,IAAI,GAAG,SAAS,eAAe,OAAOO,WAAA,gBAAAA,QAAS,GAAG,WAAW,OAAO,cAAc,KAAK,YAAa,EAAA,CAAE,IAAM,MAAM,cAAc,QAAQ,EAAE,MAAM,UAAU,aAAa,SAAQ,GAAIwC,oBAAmB,cAAc,KAAK,YAAa,CAAA,CAAC;AAAA,YAAE,IAAM,MAAM,cAAc/C,YAAW,cAAc,EAAE,WAAWD,YAAW,GAAG,YAAY,GAAG,MAAM,UAAU,aAAa,YAAY0C,eAAc,cAAc,MAAM,QAAQ,SAAS,OAAO,CAAC,CAAE;AAAA,YAC1uB,MAAM;AAAA,cAAczC,YAAW;AAAA,cAAW,EAAE,MAAM,QAAQ,wBAAwB,SAAS,cAAc,SAAS,SAAS,cAAckD,WAAU,cAAc,MAAM,QAAQ,SAAS,OAAO,KACvL,QAAW,WAAWnD,YAAW,GAAG,SAAS,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,WAAY;AAAA,cACnF,CAAC,MAAM,gBAAiB,MAAM;AAAA,gBAAcP,YAAW;AAAA,gBAAU,EAAE,WAAWD,YAAW,GAAG,QAAQ,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,UAAW;AAAA,gBACjI,kBAAmB,MAAM,cAAcP,YAAW,kBAAkB,EAAE,cAAcuD,uBAAsB,QAAQ,OAAO,GAAG,WAAWxD,YAAW,GAAG,gBAAgB,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,mBAAmB,OAAO,SAASsC,wBAAwB,CAAA;AAAA,gBACtP,SAAS,IAAI,CAAC,SAAS,MAAO,MAAM,cAAc7C,YAAW,SAAS,EAAE,cAAcqD,cAAa,SAAS,QAAQ,SAAS,OAAO,GAAG,WAAWtD,YAAW,GAAG,OAAO,GAAG,KAAK,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,UAAU,OAAO,MAAK,GAAIuC,mBAAkB,SAAS,QAAQ,SAAS,OAAO,CAAC,CAAE;AAAA,cAAC;AAAA,cAC1R,MAAM,cAAc9C,YAAW,OAAO,EAAE,WAAWD,YAAW,GAAG,KAAK,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,UAAU,cAAc,MAAM,IAAI,CAAC,MAAM,cAAc;AAC/I,uBAAQ,MAAM;AAAA,kBAAcP,YAAW;AAAA,kBAAM,EAAE,WAAWD,YAAW,GAAG,IAAI,GAAG,KAAK,KAAK,YAAY,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,OAAO,KAAY;AAAA,kBACvI,kBAAmB,MAAM,cAAcP,YAAW,YAAY,EAAE,MAAY,OAAOO,WAAA,gBAAAA,QAAS,GAAG,aAAa,cAAc+C,iBAAgB,KAAK,YAAY;AAAA,oBACnJ;AAAA,kBACH,CAAA,GAAG,WAAWvD,YAAW,GAAG,UAAU,GAAG,OAAO,OAAO,MAAM,YAAW,GAAI6C,kBAAiB,KAAK,UAAU,CAAC;AAAA,kBAClH,KAAK,KAAK,IAAI,CAAC,QAAQ;AACnB,0BAAM,EAAE,KAAI,IAAK;AACjB,0BAAM,YAAY,aAAa,GAAG;AAClC,8BAAU,QAAQ,OAAO,IACrB,CAAC,UAAU,UACP,QAAQ,mCAAS,UAAU,IAAI;AACvC,8BAAU,eAAe,QAAQ,IAC7B,CAAC,UAAU,cACN,yCAAa,UAAS,UAAU;AACzC,wBAAI,YAAY,aAAa,GAAG;AAE5B,4BAAM,EAAE,MAAM,GAAE,IAAK;AACrB,gCAAU,eAAe,WAAW,IAAI,QAAQ,QAAQ,MAAM,QAAQ,UAAU,MAAM,IAAI,CAAC;AAC3F,gCAAU,eAAe,SAAS,IAAI,QAAQ,QAAQ,MAAM,QAAQ,UAAU,MAAM,EAAE,CAAC;AACvF,gCAAU,eAAe,YAAY,IACjC,kBAAkB,eAAe,MAAM,MAAM,OAAO;AAAA,oBACpG;AACwC,0BAAMa,SAAQ,qBAAqB,WAAWlD,SAAQ,MAAM,eAAe;AAC3E,0BAAMmD,aAAY,0BAA0B,WAAW3D,aAAY,MAAM,mBAAmB;AAC5F,0BAAM,YAAY,CAAC,iBAAiB,CAAC,UAAU,SACzCkD,eAAc,MAAM,WAAW,QAAQ,SAAS,OAAO,IACvD;AACN,2BAAQ,MAAM,cAAcjD,YAAW,KAAK,EAAE,KAAK,GAAG,QAAQ,OAAO,MAAM,YAAY,CAAC,IAAI,QAAQ,OAAO,IAAI,cAAc,SAAS,CAAC,IAAI,KAAU,WAAsB,WAAW0D,WAAU,KAAK,GAAG,GAAG,OAAOD,QAAO,MAAM,YAAY,iBAAiB,UAAU,YAAY,QAAW,cAAc,WAAW,YAAY,QAAQ,OAAO,MAAM,YAAY,GAAG,cAAc,IAAI,UAC9W,QAAQ,OAAO,MAAM,SAAS,IAC9B,QAAW,iBAAiB,UAAU,YAAY,QAAW,iBAAiB,UAAU,YAAY,QAAW,eAAe,UAAU,UAAU,QAAW,gBAAgB,IAAI,WAAW,QAAW,gBAAgB,UAAU,WAAW,QAAW,cAAc,UAAU,SAAS,UAAa,CAAC,UAAU,UAAU,gBAAiB,MAAM,cAAczD,YAAW,WAAW,EAAE,WAAWD,YAAW,GAAG,SAAS,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,YAAY,MAAM,UAAU,KAAU,WAAsB,UAAU,UAAU,YAAY,QAAW,UAAU,cAAc,GAAG,IAAI,IAAI,IAAI,cAAcyC,gBAAe,MAAM,WAAW,QAAQ,SAAS,OAAO,GAAG,SAAS,eAAe,KAAK,SAAS,GAAG,QAAQ,cAAc,KAAK,SAAS,GAAG,SAAS,eAAe,KAAK,SAAS,GAAG,WAAW,iBAAiB,KAAK,SAAS,GAAG,cAAc,oBAAoB,KAAK,SAAS,GAAG,cAAc,oBAAoB,KAAK,SAAS,EAAG,GAAEN,WAAU,MAAM,QAAQ,SAAS,OAAO,CAAC,IAAM,CAAC,UAAU,UACp9BA,WAAU,IAAI,MAAM,QAAQ,SAAS,OAAO,CAAE;AAAA,kBAC1F,CAAqC;AAAA,gBAAC;AAAA,cACT,CAAA,CAAC;AAAA,YAAC;AAAA,UAAC;AAAA,QAChC,CAAiB;AAAA,MAAC;AAAA,MACN,MAAM,UAAW,MAAM,cAAc1C,YAAW,QAAQ,EAAE,WAAWD,YAAW,GAAG,MAAM,GAAG,OAAOQ,WAAA,gBAAAA,QAAS,GAAG,SAAS,MAAM,UAAU,aAAa,YAAY,MAAM,MAAM;AAAA,IAAE;AAAA,EAAC;AAC5L;ACrMA,MAAM,kBAAkB;AAExB,MAAM,mBAAmB;AAEzB,MAAM,4BAA4B;AAElC,MAAM,iBAAiB;AAEvB,MAAM,2BAA2B;AAEjC,MAAM,6BAA6B;AAU5B,MAAM,sBAAsB,CACjC,gBACA,YACA,YACgC;AAChC,MAAI,YAAY,eAAe,qBAAqB,YAAY,QAAW;AAClE,WAAA;AAAA,EAAA;AAET,MAAI,eAAe,MAAM,WAAW,SAAS,2BAA2B;AACtE,WAAO,eAAe;AAAA,EAAA,OACjB;AACL,WAAO,eAAe;AAAA,EAAA;AAE1B;AAOA,MAAM,0BAA0B,CAAC,mBAAoC,eAAe,OAAO,eAAe,QAAQ;AAOlH,MAAM,2BAA2B,CAAC,mBAChC,SAAS,gBAAgB,cAAc,eAAe,QAAQ,eAAe,QAAQ;AAevF,MAAM,mBAAmB,CAAC,gBAAyB,eAAgC;AAC1E,SAAA,eAAe,OAAO,WAAW;AAC1C;AAQA,MAAM,uBAAuB,CAAC,mBAAqC;AACjE,SAAO,eAAe,OAAO;AAC/B;AAQA,MAAM,0BAA0B,CAAC,gBAAyB,eAAiC;AACnF,QAAA,gBAAgB,iBAAiB,gBAAgB,UAAU;AAE1D,SAAA,gBAAgB,SAAS,gBAAgB,cAAc;AAChE;AAQA,MAAM,wBAAwB,CAAC,gBAAyB,eAA4C;AAClG,MAAI,CAAC,wBAAwB,gBAAgB,UAAU,GAAG;AACjD,WAAA;AAAA,EAAA;AAEL,MAAA,CAAC,qBAAqB,cAAc,GAAG;AAClC,WAAA;AAAA,EAAA;AAGF,SAAA;AACT;AAQA,MAAM,mBAAmB,CAAC,gBAAyB,eACjD,eAAe,MAAM,4BAA4B,WAAW;AAQ9D,MAAM,mBAAmB,CAAC,mBAAoC,eAAe,SAAS;AAMtF,MAAM,iBAAiB,MAAc,SAAS,gBAAgB,cAAc,mBAAmB;AAM/F,MAAM,wBAAwB,MAAe;AAC3C,SAAO,SAAS,gBAAgB,cAAc,kBAAkB,mBAAmB;AACrF;AAOA,MAAM,iBAAiB,CAAC,mBAAoC,eAAe,MAAM,4BAA4B,2BAA2B;AAOxI,MAAM,iBAAiB,CAAC,mBAAoC,wBAAwB,cAAc,IAAI,iBAAiB;AAOvH,MAAM,kBAAkB,CAAC,mBAAoC,yBAAyB,cAAc,IAAI,iBAAiB;AASzH,MAAM,oBAAoB,CAAC,gBAAyB,YAAqB,YAAyD;AAC1H,QAAA,qBAAqB,sBAAsB,gBAAgB,UAAU;AAC3E,QAAM,mBAAmB,oBAAoB,gBAAgB,YAAY,OAAO;AAEhF,MAAI,uBAAuB,QAAQ;AAC7B,QAAA,qBAAqB,eAAe,eAAe;AAC9C,aAAA;AAAA,IAAA;AAEF,WAAA;AAAA,EAAA;AAGT,MAAI,uBAAuB,SAAS;AAC9B,QAAA,qBAAqB,eAAe,eAAe;AAC9C,aAAA;AAAA,IAAA;AAEF,WAAA;AAAA,EAAA;AAGL,MAAA,qBAAqB,eAAe,eAAe;AAC9C,WAAA;AAAA,EAAA;AAGF,SAAA;AACT;AASO,MAAM,iBAAiB,CAAC,gBAAyB,YAAqB,YAAwD;AACnI,QAAM,iBAAiB,kBAAkB,gBAAgB,YAAY,OAAO;AAC5E,QAAM,cAAc,CAAC,sBAAsB,IAAI,mBAAmB;AAElE,MAAI,mBAAmB,aAAa;AAC3B,WAAA;AAAA,MACL,MAAM;AAAA,MACN,KAAK,iBAAiB,gBAAgB,UAAU;AAAA,MAChD,OAAO;AAAA,IACT;AAAA,EAAA;AAEF,MAAI,mBAAmB,aAAa;AAC3B,WAAA,EAAE,MAAM,kBAAkB,KAAK,iBAAiB,cAAc,GAAG,OAAO,YAAY;AAAA,EAAA;AAE7F,MAAI,mBAAmB,cAAc;AAC5B,WAAA,EAAE,OAAO,kBAAkB,KAAK,iBAAiB,gBAAgB,UAAU,GAAG,OAAO,YAAY;AAAA,EAAA;AAE1G,MAAI,mBAAmB,cAAc;AAC5B,WAAA,EAAE,OAAO,kBAAkB,KAAK,iBAAiB,cAAc,GAAG,OAAO,YAAY;AAAA,EAAA;AAG9F,MAAI,mBAAmB,iBAAiB;AAC/B,WAAA,EAAE,MAAM,gBAAgB,gBAAgB,UAAU,GAAG,KAAK,iBAAiB,cAAc,GAAG,OAAO,YAAY;AAAA,EAAA;AAGxH,SAAO,EAAE,MAAM,gBAAgB,gBAAgB,UAAU,GAAG,KAAK,iBAAiB,gBAAgB,UAAU,GAAG,OAAO,YAAY;AACpI;AAQA,MAAM,kBAAkB,CAAC,gBAAyB,eAAgC;AAC1E,QAAA,+BAA+B,0BAA0B,cAAc;AAEtE,SAAA,+BAA+B,WAAW,QAAQ;AAC3D;AAOA,MAAM,4BAA4B,CAAC,mBAAoC,eAAe,OAAO,eAAe,QAAQ;AAS7G,MAAM,gBAAgB,CAC3B,aACA,gBACA,qBACkB;AACZ,QAAA,SAAS,eAAe,cAAc;AACtC,QAAA,UAAU,gBAAgB,cAAc;AACxC,QAAA,YAAa,YAAY,OAAkB;AAC3C,QAAA,aAAc,YAAY,QAAmB;AAEnD,MAAI,YAAY,OAAO;AACjB,QAAA,qBAAqB,eAAe,eAAe;AAC9C,aAAA;AAAA,QACL,OAAO,UAAU,aAAa,UAAU;AAAA,QACxC,KAAK,eAAe,cAAc;AAAA,MACpC;AAAA,IAAA;AAGK,WAAA;AAAA,MACL,OAAO,UAAU,aAAa,UAAU;AAAA,MACxC,KAAK,eAAe,SAAS;AAAA,IAC/B;AAAA,EAAA;AAGE,MAAA,qBAAqB,eAAe,eAAe;AAC9C,WAAA;AAAA,MACL,MAAM,SAAS,YAAY,SAAS;AAAA,MACpC,KAAK,eAAe,cAAc;AAAA,IACpC;AAAA,EAAA;AAGK,SAAA;AAAA,IACL,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,KAAK,eAAe,SAAS;AAAA,EAC/B;AACF;ACvOA,MAAM,kBAAkD,CAAS,UAAA;AAC/D,QAAM,EAAE,YAAY,sBAAsB,UAAU,QAAQ,UAAU,QAAQ,YAAY,QAAQ,SAAS,QAAQ,GAAG,KAAS,IAAA;AAEzH,QAAA,4BAAY,KAAK;AACjB,QAAA,WAAW,OAAuB,IAAI;AAC5C,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAkB;AACxD,QAAA,aAAa,QAAQ,oBAAoB;AACzC,QAAA,sBAAsB,aAAa,sBAAsB,CAAC;AAChE,eAAa,sBAAsB,IAAI;AAEvC,WAAS,iBAAiB,iBAA2C;AACnE,WAAQ,mBAA8B;AAAA,EAAA;AAGxC,QAAM,kBAAkB,CAAC,SAA+B,OAAwB;AACvE,WAAA;AAAA,MACL,gBAAgB,CAAC,MAAM,cAAsB;AACrC,cAAA,aAAa,OAAO,MAAM,QAAQ;AAAA,UACtC,QAAQ,iBAAiB,MAAM;AAAA,QAAA,CAChC;AAEG,YAAA,QAAQ,OAAO,gBAAgB,OAAO,cAAc,QAAQ,UAAU,UAAU,IAAI;AAEpF,YAAA,UAAU,SAAS,OAAO,gBAAgB;AAC5C,kBAAQ,OAAO,eAAe,QAAQ,UAAU,UAAU;AAAA,QAAA;AAGxD,YAAA,UAAU,YAAY,OAAO,mBAAmB;AAClD,kBAAQ,OAAO,kBAAkB,QAAQ,UAAU,UAAU;AAAA,QAAA;AAGxD,eAAA;AAAA,MACT;AAAA,MAEA,WAAW,MAAc;AACvB,eAAO,OAAO,aAAa;AAAA,MAC7B;AAAA,MACA,eAAe,MAAc;AAC3B,eAAO,OAAO,iBAAiB;AAAA,MACjC;AAAA,MACA,oBAAoB,MAAc;AAChC,eAAO,OAAO,iBAAiB;AAAA,MACjC;AAAA,MACA,mBAAmB,MAAc;AAC/B,eAAO,OAAO,gBAAgB;AAAA,MAAA;AAAA,IAElC;AAAA,EACF;AAEA,QAAM,uBAAuB,MAAY;;AACrB,uBAAA,cAAS,YAAT,mBAAkB,uBAAuB;AAAA,EAC7D;AAEA,QAAM,UAAU,MAAM;AACC,yBAAA;AAAA,EACvB,GAAG,EAAE;AAEL,cAAY,sBAAsB,GAAG;AACrC,iBAAe,sBAAsB,CAAC,UAAU,QAAQ,GAAG,EAAE;AAE7D,QAAM,kCAAkC,WAAW,OAAO,4BAA4B,GAAG;AAAA,IACvF,CAAC,OAAO,qCAAqC,CAAC,GAAG;AAAA,EAAA,CAClD;AACD,QAAM,mBAAmB,kBAAkB,cAAc,oBAAoB,gBAAgB,YAAY,OAAO;AAChH,QAAM,oBAAoB,WAAW,OAAO,wBAAwB,GAAG;AAAA,IACrE,CAAC,OAAO,iCAAiC,CAAC,GAAG;AAAA,IAC7C,CAAC,OAAO,8BAA8B,CAAC,GAAG,qBAAqB,eAAe;AAAA,IAC9E,CAAC,OAAO,+BAA+B,CAAC,GAAG,qBAAqB,eAAe;AAAA,EAAA,CAChF;AAED,QAAM,cAAc,kBAAkB,cAAc,eAAe,gBAAgB,YAAY,OAAO;AACtG,QAAM,aAAa,eAAe,kBAAkB,oBAAoB,cAAc,aAAa,gBAAgB,gBAAgB;AAEnI,QAAM,uBAAuB;AAAA,IAC3B,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,SAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA,oBAAC,OAAI,EAAA,WAAW,iCAAiC,eAAa,QAAQ,KAAK,sBAAsB,OAAO,EAAE,GAAG,aAAa,OACxH,GAAA,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAc;AAAA,QACd,YAAY;AAAA,QACZ,MAAM;AAAA,QACN,OAAO,EAAE,mBAAmB,UAAU,GAAG,EAAE;AAAA,QAC3C,qBAAqB;AAAA,UACnB,OAAO,OAAO,YAAY;AAAA,UAC1B,UAAU,OAAO,eAAe;AAAA,UAChC,UAAU,OAAO,eAAe;AAAA,QAClC;AAAA,QACA,QAAS,oBAAA,QAAA,EAAK,WAAW,OAAO,gBAAgB,GAAI,UAAO,QAAA;AAAA,QAC3D,YAAU;AAAA,QACV,QAAQ,gBAAgB,UAAU;AAAA,QAClC,YAAY,cAAc,IAAI,KAAK,MAAM,gBAAgB,KAAK,MAAM,SAAS,GAAG,CAAC;AAAA,QACjF,UAAU,YAAY,IAAI,KAAK,MAAM,gBAAgB,KAAK,MAAM,SAAS,GAAG,CAAC;AAAA,QAC5E,GAAG;AAAA,MAAA;AAAA,IAAA,GAER;AAAA,IACA,oBAAC,OAAI,EAAA,KAAK,UAAU,WAAW,mBAAmB,OAAO,EAAE,GAAG,YAAY,OAAA,EAAU,CAAA;AAAA,EAAA,GACtF;AAEJ;ACrFO,MAAM,aAAa,MAAM,WAAW,CAAC,OAAwB,QAAqC;AACjG,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,CAAC;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,UAAU,eAAe;AAAA,IACzB,SAAS,OAAO;AAAA,IAChB,GAAG;AAAA,EAAA,IACD;AAEJ,QAAM,CAAC,WAAW,YAAY,IAAI,SAA2B,SAAS;AAChE,QAAA,CAAC,YAAY,aAAa,IAAI,SAAiB,YAAY,OAAO,WAAW,UAAU,IAAI,EAAE;AACnG,QAAM,CAAC,OAAOoD,SAAQ,IAAI,SAA2B,YAAY;AACjE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAkB,KAAK;AACnE,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAkB,KAAK;AAEvE,QAAM,iBAA4B;AAAA,IAChC,WAAW,CAAC,GAAG,CAAC;AAAA,EAClB;AACM,QAAA,eAAe,kBACjB,CAAC,GAAG,aAAa,gBAAgB,GAAI,UAAU,CAAC,EAAE,QAAQ,QAAS,CAAA,IAAI,CAAK,GAAA,GAAI,UAAU,CAAC,EAAE,OAAO,QAAA,CAAS,IAAI,CAAG,CAAA,IACpH,CAAC,GAAG,aAAa,GAAI,UAAU,CAAC,EAAE,QAAQ,QAAQ,CAAC,IAAI,CAAC,GAAI,GAAI,UAAU,CAAC,EAAE,OAAO,QAAQ,CAAC,IAAI,EAAG;AAElG,QAAA,kBAAkB,OAAuB,IAAI;AAC7C,QAAA,oBAAoB,OAAuB,IAAI;AAC/C,QAAA,uBAAuB,OAAuB,IAAI;AAClD,QAAA,EAAE,cAAc,iBAAmC,mBAAmB,GAAG,IAAI,MAAM,IAAI;AAC7F,QAAM,aAAa,UAAU,CAAC,KAAK,SAAS,CAAC;AACvC,QAAA,WAAW,OAAgB,KAAK;AAGtB,kBAAA,mBAAmB,CAAC,MAAW;AAC7C,QACE,kBAAkB,WAClB,qBAAqB,WACrB,EAAC,uBAAG,eAAe,SAAS,kBAAkB,aAC9C,EAAC,uBAAG,eAAe,SAAS,qBAAqB,WACjD;AACA,wBAAkB,KAAK;AAAA,IAAA;AAAA,EACzB,CACD;AAED,YAAU,MAAM;AACV,QAAA,QAAQ,SAAS,GAAG;AACtB,oBAAc,YAAY,OAAO,WAAW,UAAU,IAAI,EAAE;AAC5D,mBAAa,SAAS;AACtB,MAAAA,UAAS,SAAS;AAAA,IAAA,OACb;AACL,oBAAc,EAAE;AAChB,mBAAa,MAAS;AACtB,MAAAA,UAAS,MAAS;AAAA,IAAA;AAAA,EACpB,GACC,CAAC,WAAW,UAAU,CAAC;AAE1B,YAAU,MAAM;AACV,QAAA,oBAAoB,UAAU,SAAS;AACzC,gBAAU,QAAQ,MAAM;AAAA,IAAA;AAAA,EAC1B,GACC,CAAC,gBAAgB,CAAC;AAErB,QAAM,sBAAsB,MAAY;AAC3B,4CAAA,YAAW,UAAU,QAAQ,MAAM;AAC9C,sBAAkB,KAAK;AAAA,EACzB;AAEA,mBAAiB,sBAAsB,qBAAqB,CAAC,iBAAiB,MAAM,CAAC;AACrF,mBAAiB,iBAAiB,qBAAqB,CAAC,iBAAiB,MAAM,CAAC;AAE1E,QAAA,oBAAoB,CAAC,OAA4C,gBAA8B;AACrF,kBAAA,MAAM,cAAc,KAAK;AACjC,UAAA,UAAU,MAAM,MAAM,cAAc,OAAO,aAAa,oBAAI,MAAM;AAEpE,QAAA,QAAQ,OAAO,GAAG;AACpB,mBAAa,OAAO;AACpB,MAAAA,UAAS,OAAO;AAAA,IAAA,OACX;AACL,mBAAa,MAAS;AAAA,IAAA;AAGxB,gBAAY,SAAS,OAAO,MAAM,cAAc,KAAK;AAAA,EACvD;AAEA,QAAM,mBAAmB,MAAY;AACnC,QAAI,CAAC,kBAAkB;AACrB,wBAAkB,IAAI;AAAA,IAAA,OACjB;AACL,0BAAoB,KAAK;AAAA,IAAA;AAAA,EAE7B;AAGA,QAAM,+BAAwD,CAC5D,MACA,cACA,kBACA,MACS;AACT,wBAAoB,IAAI;AAExB,QAAI,CAAC,MAAM;AACT,wBAAkB,KAAK;AACvB;AAAA,IAAA;AAGF,iBAAa,IAAI;AAEjB,QAAI,UAAU,SAAS;AACP,oBAAA,OAAO,MAAM,UAAU,CAAC;AACtC,wBAAkB,KAAK;AAAA,IAAA;AAGb,gBAAA,SAAS,GAAG,IAAI;AAC5B,gCAA4B,WAAW,OAAO,MAAM,UAAU,GAAG,IAAI;AACrE,yBAAqB,kBAAkB,IAAI;AAAA,EAC7C;AAGA,QAAM,8BAA8B,CAClC,UACA,OACA,MACA,cACS;AACT,QAAI,SAAS,SAAS;AACpB,eAAS,QAAQ,QAAQ;AAEzB,YAAM,aAAa,IAAI,MAAM,UAAU,EAAE,SAAS,MAAM;AAGjD,aAAA,eAAe,YAAY,UAAU;AAAA,QAC1C,OAAO,SAAS;AAAA,QAChB,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA,CACf;AAEM,aAAA,eAAe,YAAY,iBAAiB;AAAA,QACjD,OAAO,SAAS;AAAA,QAChB,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA,CACf;AAEQ,eAAA,QAAQ,cAAc,UAAU;AAEzC,UAAI,UAAU;AACZ,iBAAS,YAA8D,IAAI;AAAA,MAAA;AAAA,IAC7E;AAAA,EAEJ;AAEM,QAAA,kBAAkB,CAAC,MAAyD;AAEhF,QAAI,CAAC,mBAAmB,OAAO,sBAAsB,eAAe,SAAS,UAAU;AACrF,gBAAU,OAAO,CAAC;AAAA,IAAA;AAGpB,aAAS,UAAU;AAAA,EACrB;AAEM,QAAA,oBAAoB,CACxB,MACS;AACT,2BAAG;AACH,sBAAkB,CAAC,cAAc;AAAA,EACnC;AAGA,YAAU,MAAM;AACR,UAAA,gBAAgB,CAAC,MAA2B;AAC5C,UAAA,CAAC,CAAC,UAAU,SAAS,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG;AAC/C,iBAAS,UAAU;AACnB,0BAAkB,KAAK;AAAA,MAAA;AAAA,IAE3B;AAEA,UAAM,eAAe,UAAU;AAC/B,QAAI,cAAc;AACH,mBAAA,iBAAiB,WAAW,aAAa;AAAA,IAAA;AAGxD,WAAO,MAAY;AACjB,UAAI,cAAc;AACH,qBAAA,oBAAoB,WAAW,aAAa;AAAA,MAAA;AAAA,IAE7D;AAAA,EAAA,GACC,CAAC,SAAS,CAAC;AAER,QAAA,0BAA0B,CAAC,MAAiD;AAChF,sBAAkB,GAAG,YAAY;AAE7B,QAAA,CAAC,SAAS,SAAS;AACrB,2BAAqB,kBAAkB,SAAS;AAAA,IAAA;AAAA,EAEpD;AAEA,QAAM,eACJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK,UAAU,OAAO,SAAS,YAAY,IAAI;AAAA,MAC/C,KAAK,UAAU,OAAO,SAAS,YAAY,IAAI;AAAA,MAC/C,MAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO,YAAY,OAAO,WAAW,YAAY,IAAI;AAAA,MACrD,OAAO;AAAA,MACN,GAAG;AAAA,MACJ,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,cAAc,eAAe,eAAe;AAAA,IAAA;AAAA,EAC9C;AAGF,QAAM,gBAEF,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA,oBAAC,OACC,EAAA,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT,MAAK;AAAA,QACL,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACN,GAAG;AAAA,QACJ,QAAQ;AAAA,QACR,UAAU,CAAC,MAA2C,kBAAkB,GAAG,YAAY;AAAA,QACvF,cACE;AAAA,UAACC;AAAAA,UAAA;AAAA,YACC;AAAA,YACA,WAAW,uBAAuB;AAAA,YAClC,SAAS;AAAA,YACT,UAAU,iBAAiB,KAAK;AAAA,YAChC,SAAS;AAAA,YACT,kBAAkB,OAAO,aAAa;AAAA,YACtC,WAAW,OAAO,oBAAoB;AAAA,YAEtC,UAAC,oBAAA,MAAA,EAAK,OAAO,SAAS,SAAS,SAAU,CAAA;AAAA,UAAA;AAAA,QAC3C;AAAA,QAEF,cAAc,eAAe,eAAe;AAAA,MAAA;AAAA,IAAA,GAEhD;AAAA,IACC,kBAAkB,CAAC,YAClB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,UAAU;AAAA,QACV,eAAeD;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GAEJ;AAIA,SAAA,oBAAC,SAAI,WAAsB,eAAa,QACrC,UAAW,WAAA,IAAI,eAAe,cACjC,CAAA;AAEJ,CAAC;AAED,WAAW,cAAc;AC5VzB,MAAM,oBAAoB,CAAC,UAAmC;AACtD,QAAA,cAAc,OAAO,KAAK;AAChC,SAAO,YAAY,WAAW,IAAI,MAAM,cAAc;AACxD;AAEA,MAAM,kBAAkB,CAAC,QAAyB;AAChD,SAAO,CAAC,OAAQ,QAAQ,KAAK,GAAG,KAAK,IAAI,UAAU;AACrD;AAEO,MAAM,WAAW,MAAM,WAAW,CAAC,OAAsB,QAAqC;AAC7F,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,GAAG;AAAA,EAAA,IACD;AAEE,QAAA,CAAC,YAAY,aAAa,IAAI;AAAA,IAClC,OAAO,UAAU,cAAc,kBAAkB,KAAK,IAAI;AAAA,EAC5D;AACM,QAAA,EAAE,cAAc,iBAAmC,mBAAmB,GAAG,IAAI,MAAM,IAAI;AAC7F,QAAM,aAAa,UAAU,CAAC,KAAK,SAAS,CAAC;AAE7C,YAAU,MAAM;AACd,kBAAc,QAAQ,kBAAkB,KAAK,IAAI,MAAS;AAAA,EAAA,GACzD,CAAC,KAAK,CAAC;AAEJ,QAAA,oBAAoB,CAAC,UAAqD;AACxEE,UAAAA,SAAQ,MAAM,OAAO;AAEvB,QAAA,gBAAgBA,MAAK,GAAG;AAC1B,oBAAcA,MAAK;AACnB,kBAAY,SAAS,KAAK;AAAA,IAAA;AAAA,EAE9B;AAEM,QAAA,kBAAkB,CAAC,UAAoD;AAC3E,UAAM,iBAAiB,kBAAkB,MAAM,OAAO,KAAK;AAC3D,kBAAc,cAAc;AAC5B,gBAAY,SAAS,KAAK;AAC1B,cAAU,OAAO,KAAK;AAAA,EACxB;AAGM,QAAA,uBAAuB,CAAC,UAA+B;AAC3D,UAAM,aAAa;AACb,UAAA,cAAc,CAAC,aAAa,KAAK,SAAS,OAAO,WAAW,aAAa,aAAa,YAAY;AACpG,QAAA,CAAC,WAAW,KAAK,MAAM,GAAG,KAAK,CAAC,YAAY,SAAS,MAAM,GAAG,GAAG;AACnE,YAAM,eAAe;AAAA,IAAA;AAAA,EAEzB;AAEA,QAAM,sBAAsB,MAAuB;AAC1C,WAAA,aAAa,WAAY,oBAAA,QAAA,EAAK,WAAW,OAAO,gBAAgB,GAAI,UAAI,IAAA,CAAA;AAAA,EACjF;AAGE,SAAA,oBAAC,OAAI,EAAA,eAAa,QAChB,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK,aAAa,UAAU,KAAK;AAAA,MACjC,KAAK;AAAA,MACL,MAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,cAAc,OAAO,MAAM,iBAAiB,cAAc,kBAAkB,MAAM,YAAY,IAAI;AAAA,MACjG,GAAG;AAAA,MACJ,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,cAAc,oBAAoB;AAAA,MAClC,WAAW;AAAA,MACX,cAAc,eAAe,eAAe;AAAA,IAAA;AAAA,EAAA,GAEhD;AAEJ,CAAC;AAED,SAAS,cAAc;ACvGhB,MAAM,wBAAwB,MAAM,WAAW,CAAC,OAAmC,QAA4C;AACpI,QAAM,EAAE,UAAU,uBAAuB,WAAW,QAAQ,WAAW;AACvE,QAAM,cAAc,QAAQ;AAEtB,QAAA,oBAAoB,CAAC,UAA4C;AACjE,QAAA,YAA6B,OAAO,UAAU,GAAG;AAC5C,aAAA,MAAM,aAAa,OAAO;AAAA,QAC/B,WAAW,WAAW,OAAO,uCAAuC,CAAC;AAAA,QACrE,OAAO,CAAC,CAAC;AAAA,QACT;AAAA,MAAA,CACD;AAAA,IACQ,WAAA,YAA2B,OAAO,QAAQ,GAAG;AAC/C,aAAA,MAAM,aAAa,OAAO;AAAA,QAC/B,OAAO,CAAC,CAAC;AAAA,QACT;AAAA,MAAA,CACD;AAAA,IAAA;AAEI,WAAA;AAAA,EACT;AAGE,SAAA,oBAAC,SAAI,KAAU,UAAU,IACvB,UAAC,oBAAA,cAAA,EAAa,WAAW,uBAAuB,WAAsB,aACnE,UAAM,MAAA,8BACJ,YAAS,EAAA,WAAW,OAAO,0BAA0B,GAAG,eAAa,QACnE,UAAA;AAAA,IAAA,MAAM,UAAW,oBAAA,UAAA,EAAO,WAAW,OAAO,kCAAkC,GAAI,UAAO,QAAA;AAAA,IACvF,MAAM,SAAS,IAAI,UAAU,iBAAiB;AAAA,EAAA,EACjD,CAAA,IAEA,oBAAC,OAAI,EAAA,WAAW,OAAO,0BAA0B,GAAI,UAAM,MAAA,SAAS,IAAI,UAAU,iBAAiB,EAAE,CAAA,EAEzG,CAAA,GACF;AAEJ,CAAC;AAED,sBAAsB,cAAc;AC5DvB,MAAA,iBAAiB,CAAC,eAAoC;AAC3D,QAAA,kBAAkB,CAAC,cAAc,YAAY;AAEnD,aAAWrD,WAAU,iBAAiB;AACpC,UAAM,aAAa,MAAM,YAAYA,SAAQ,oBAAI,MAAM;AACnD,QAAA,QAAQ,UAAU,GAAG;AAChB,aAAA;AAAA,IAAA;AAAA,EACT;AAGK,SAAA;AACT;AAEa,MAAA,cAAc,CAAC,eAAgC;AACpD,QAAA,OAAO,IAAI,KAAK,UAAU;AAChC,SAAO,gBAAgB,QAAQ,CAAC,MAAM,KAAK,SAAS;AACtD;AAGO,MAAM,qBAAqB,CAChC,MACA,0BACA,2BACA,SACA,YACkB;AACZ,QAAA,gBAAgB,eAAe,IAAI;AACnC,QAAA,aAAa,OAAO,YAAY;AAChC,QAAA,aAAa,OAAO,YAAY;AAClC,MAAA,CAAC,iBAAkB,cAAc,CAAC,QAAQ,OAAO,KAAO,cAAc,CAAC,QAAQ,OAAO,GAAI;AAC5F,WAAO,6BAA6B;AAAA,EAAA;AAGlC,MAAA,cAAc,CAAC,eAAe,UAAU,eAAe,OAAO,KAAK,QAAQ,eAAe,OAAO,GAAW,QAAA;AAAA,WACvG,cAAc,CAAC,eAAe,UAAU,eAAe,OAAO,KAAK,SAAS,eAAe,OAAO,GAAW,QAAA;AAAA,WAEpH,cACA,eACC,UAAU,eAAe,OAAO,KAC/B,UAAU,eAAe,OAAO,KAChC,iBAAiB,eAAe,EAAE,OAAO,SAAS,KAAK,QAAS,CAAA,IAClE;AACO,WAAA;AAAA,EAAA;AAGF,SAAA;AACT;AAGO,MAAM,wBAAwB,CACnC,MACA,eACA,wBACA,8BACkB;AACZ,QAAA,gBAAgB,eAAe,IAAI;AACzC,MAAI,CAAC,eAAe;AAClB,WAAO,6BAA6B;AAAA,EAAA;AAElC,MAAA,CAAC,cAAc,KAAK,CAAA,MAAK,UAAU,GAAG,aAAa,CAAC,GAAG;AAClD,WAAA;AAAA,EAAA;AAGF,SAAA;AACT;AAGO,MAAM,yBAAyB,CACpC,MACA,cACA,SACA,YACkB;AAClB,QAAM,aAAa,OAAO,KAAK,OAAO,MAAM,KAAK,QAAQ,SAAY,GAAA,SAAa,oBAAA,KAAA,CAAM;AACxF,QAAM,gBAAgB,QAAO,mCAAS,QAAO,OAAM,mCAAS,SAAQ,SAAY,GAAA,SAAa,oBAAA,KAAA,CAAM;AACnG,QAAM,gBAAgB,QAAO,mCAAS,QAAO,OAAM,mCAAS,SAAQ,SAAY,GAAA,SAAa,oBAAA,KAAA,CAAM;AAE9F,OAAA,OAAO,YAAY,eAAe,cAAc,mBAAmB,OAAO,YAAY,eAAe,cAAc,gBAAgB;AAC/H,WAAA;AAAA,EAAA;AAGF,SAAA;AACT;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92]}
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/react-day-picker/dist/esm/UI.js","../../../../../node_modules/@date-fns/tz/tzOffset/index.js","../../../../../node_modules/@date-fns/tz/date/mini.js","../../../../../node_modules/@date-fns/tz/date/index.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js","../../../../../node_modules/react-day-picker/dist/esm/classes/DateLib.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js","../../../../../node_modules/react-day-picker/dist/esm/components/Button.js","../../../../../node_modules/react-day-picker/dist/esm/components/CaptionLabel.js","../../../../../node_modules/react-day-picker/dist/esm/components/Chevron.js","../../../../../node_modules/react-day-picker/dist/esm/components/Day.js","../../../../../node_modules/react-day-picker/dist/esm/components/DayButton.js","../../../../../node_modules/react-day-picker/dist/esm/components/Dropdown.js","../../../../../node_modules/react-day-picker/dist/esm/components/DropdownNav.js","../../../../../node_modules/react-day-picker/dist/esm/components/Footer.js","../../../../../node_modules/react-day-picker/dist/esm/components/Month.js","../../../../../node_modules/react-day-picker/dist/esm/components/MonthCaption.js","../../../../../node_modules/react-day-picker/dist/esm/components/MonthGrid.js","../../../../../node_modules/react-day-picker/dist/esm/components/Months.js","../../../../../node_modules/react-day-picker/dist/esm/useDayPicker.js","../../../../../node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/components/Nav.js","../../../../../node_modules/react-day-picker/dist/esm/components/NextMonthButton.js","../../../../../node_modules/react-day-picker/dist/esm/components/Option.js","../../../../../node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js","../../../../../node_modules/react-day-picker/dist/esm/components/Root.js","../../../../../node_modules/react-day-picker/dist/esm/components/Select.js","../../../../../node_modules/react-day-picker/dist/esm/components/Week.js","../../../../../node_modules/react-day-picker/dist/esm/components/Weekday.js","../../../../../node_modules/react-day-picker/dist/esm/components/Weekdays.js","../../../../../node_modules/react-day-picker/dist/esm/components/WeekNumber.js","../../../../../node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js","../../../../../node_modules/react-day-picker/dist/esm/components/Weeks.js","../../../../../node_modules/react-day-picker/dist/esm/components/YearsDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getComponents.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatCaption.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatDay.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js","../../../../../node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getFormatters.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelGrid.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelGridcell.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelDayButton.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelNav.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelNext.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelPrevious.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelWeekday.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js","../../../../../node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getDates.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getDays.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js","../../../../../node_modules/react-day-picker/dist/esm/classes/CalendarDay.js","../../../../../node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js","../../../../../node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getMonths.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getWeeks.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js","../../../../../node_modules/react-day-picker/dist/esm/useCalendar.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js","../../../../../node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js","../../../../../node_modules/react-day-picker/dist/esm/utils/typeguards.js","../../../../../node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js","../../../../../node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js","../../../../../node_modules/react-day-picker/dist/esm/useFocus.js","../../../../../node_modules/react-day-picker/dist/esm/useGetModifiers.js","../../../../../node_modules/react-day-picker/dist/esm/selection/useMulti.js","../../../../../node_modules/react-day-picker/dist/esm/utils/addToRange.js","../../../../../node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js","../../../../../node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js","../../../../../node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js","../../../../../node_modules/react-day-picker/dist/esm/selection/useRange.js","../../../../../node_modules/react-day-picker/dist/esm/selection/useSingle.js","../../../../../node_modules/react-day-picker/dist/esm/useSelection.js","../../../../../node_modules/react-day-picker/dist/esm/DayPicker.js","../../../src/components/DatePicker/position-utils.ts","../../../src/components/DatePicker/DatePickerPopup.tsx","../../../src/components/DatePicker/DatePicker.tsx","../../../src/components/DatePicker/DateTime.tsx","../../../src/components/DatePicker/DateTimePickerWrapper.tsx","../../../src/components/DatePicker/validate-utils.ts"],"sourcesContent":["/**\n * The UI elements composing DayPicker. These elements are mapped to\n * {@link CustomComponents}, the {@link ClassNames} and the {@link Styles} used by\n * DayPicker.\n *\n * Some of these elements are extended by flags and modifiers.\n */\nexport var UI;\n(function (UI) {\n /** The root component displaying the months and the navigation bar. */\n UI[\"Root\"] = \"root\";\n /** The Chevron SVG element used by navigation buttons and dropdowns. */\n UI[\"Chevron\"] = \"chevron\";\n /**\n * The grid cell with the day's date. Extended by {@link DayFlag} and\n * {@link SelectionFlag}.\n */\n UI[\"Day\"] = \"day\";\n /** The button containing the formatted day's date, inside the grid cell. */\n UI[\"DayButton\"] = \"day_button\";\n /** The caption label of the month (when not showing the dropdown navigation). */\n UI[\"CaptionLabel\"] = \"caption_label\";\n /** The container of the dropdown navigation (when enabled). */\n UI[\"Dropdowns\"] = \"dropdowns\";\n /** The dropdown element to select for years and months. */\n UI[\"Dropdown\"] = \"dropdown\";\n /** The container element of the dropdown. */\n UI[\"DropdownRoot\"] = \"dropdown_root\";\n /** The root element of the footer. */\n UI[\"Footer\"] = \"footer\";\n /** The month grid. */\n UI[\"MonthGrid\"] = \"month_grid\";\n /** Contains the dropdown navigation or the caption label. */\n UI[\"MonthCaption\"] = \"month_caption\";\n /** The dropdown with the months. */\n UI[\"MonthsDropdown\"] = \"months_dropdown\";\n /** Wrapper of the month grid. */\n UI[\"Month\"] = \"month\";\n /** The container of the displayed months. */\n UI[\"Months\"] = \"months\";\n /** The navigation bar with the previous and next buttons. */\n UI[\"Nav\"] = \"nav\";\n /**\n * The next month button in the navigation. *\n *\n * @since 9.1.0\n */\n UI[\"NextMonthButton\"] = \"button_next\";\n /**\n * The previous month button in the navigation.\n *\n * @since 9.1.0\n */\n UI[\"PreviousMonthButton\"] = \"button_previous\";\n /** The row containing the week. */\n UI[\"Week\"] = \"week\";\n /** The group of row weeks in a month (`tbody`). */\n UI[\"Weeks\"] = \"weeks\";\n /** The column header with the weekday. */\n UI[\"Weekday\"] = \"weekday\";\n /** The row grouping the weekdays in the column headers. */\n UI[\"Weekdays\"] = \"weekdays\";\n /** The cell containing the week number. */\n UI[\"WeekNumber\"] = \"week_number\";\n /** The cell header of the week numbers column. */\n UI[\"WeekNumberHeader\"] = \"week_number_header\";\n /** The dropdown with the years. */\n UI[\"YearsDropdown\"] = \"years_dropdown\";\n})(UI || (UI = {}));\n/** The flags for the {@link UI.Day}. */\nexport var DayFlag;\n(function (DayFlag) {\n /** The day is disabled. */\n DayFlag[\"disabled\"] = \"disabled\";\n /** The day is hidden. */\n DayFlag[\"hidden\"] = \"hidden\";\n /** The day is outside the current month. */\n DayFlag[\"outside\"] = \"outside\";\n /** The day is focused. */\n DayFlag[\"focused\"] = \"focused\";\n /** The day is today. */\n DayFlag[\"today\"] = \"today\";\n})(DayFlag || (DayFlag = {}));\n/**\n * The state that can be applied to the {@link UI.Day} element when in selection\n * mode.\n */\nexport var SelectionState;\n(function (SelectionState) {\n /** The day is at the end of a selected range. */\n SelectionState[\"range_end\"] = \"range_end\";\n /** The day is at the middle of a selected range. */\n SelectionState[\"range_middle\"] = \"range_middle\";\n /** The day is at the start of a selected range. */\n SelectionState[\"range_start\"] = \"range_start\";\n /** The day is selected. */\n SelectionState[\"selected\"] = \"selected\";\n})(SelectionState || (SelectionState = {}));\n//# sourceMappingURL=UI.js.map","const offsetFormatCache = {};\nconst offsetCache = {};\n\n/**\n * The function extracts UTC offset in minutes from the given date in specified\n * time zone.\n *\n * Unlike `Date.prototype.getTimezoneOffset`, this function returns the value\n * mirrored to the sign of the offset in the time zone. For Asia/Singapore\n * (UTC+8), `tzOffset` returns 480, while `getTimezoneOffset` returns -480.\n *\n * @param timeZone - Time zone name (IANA or UTC offset)\n * @param date - Date to check the offset for\n *\n * @returns UTC offset in minutes\n */\nexport function tzOffset(timeZone, date) {\n try {\n const format = offsetFormatCache[timeZone] ||= new Intl.DateTimeFormat(\"en-GB\", {\n timeZone,\n hour: \"numeric\",\n timeZoneName: \"longOffset\"\n }).format;\n const offsetStr = format(date).split('GMT')[1] || '';\n if (offsetStr in offsetCache) return offsetCache[offsetStr];\n return calcOffset(offsetStr, offsetStr.split(\":\"));\n } catch {\n // Fallback to manual parsing if the runtime doesn't support ±HH:MM/±HHMM/±HH\n // See: https://github.com/nodejs/node/issues/53419\n if (timeZone in offsetCache) return offsetCache[timeZone];\n const captures = timeZone?.match(offsetRe);\n if (captures) return calcOffset(timeZone, captures.slice(1));\n return NaN;\n }\n}\nconst offsetRe = /([+-]\\d\\d):?(\\d\\d)?/;\nfunction calcOffset(cacheStr, values) {\n const hours = +values[0];\n const minutes = +(values[1] || 0);\n return offsetCache[cacheStr] = hours > 0 ? hours * 60 + minutes : hours * 60 - minutes;\n}","import { tzOffset } from \"../tzOffset/index.js\";\nexport class TZDateMini extends Date {\n //#region static\n\n constructor(...args) {\n super();\n if (args.length > 1 && typeof args[args.length - 1] === \"string\") {\n this.timeZone = args.pop();\n }\n this.internal = new Date();\n if (isNaN(tzOffset(this.timeZone, this))) {\n this.setTime(NaN);\n } else {\n if (!args.length) {\n this.setTime(Date.now());\n } else if (typeof args[0] === \"number\" && (args.length === 1 || args.length === 2 && typeof args[1] !== \"number\")) {\n this.setTime(args[0]);\n } else if (typeof args[0] === \"string\") {\n this.setTime(+new Date(args[0]));\n } else if (args[0] instanceof Date) {\n this.setTime(+args[0]);\n } else {\n this.setTime(+new Date(...args));\n adjustToSystemTZ(this, NaN);\n syncToInternal(this);\n }\n }\n }\n static tz(tz, ...args) {\n return args.length ? new TZDateMini(...args, tz) : new TZDateMini(Date.now(), tz);\n }\n\n //#endregion\n\n //#region time zone\n\n withTimeZone(timeZone) {\n return new TZDateMini(+this, timeZone);\n }\n getTimezoneOffset() {\n return -tzOffset(this.timeZone, this);\n }\n\n //#endregion\n\n //#region time\n\n setTime(time) {\n Date.prototype.setTime.apply(this, arguments);\n syncToInternal(this);\n return +this;\n }\n\n //#endregion\n\n //#region date-fns integration\n\n [Symbol.for(\"constructDateFrom\")](date) {\n return new TZDateMini(+new Date(date), this.timeZone);\n }\n\n //#endregion\n}\n\n// Assign getters and setters\nconst re = /^(get|set)(?!UTC)/;\nObject.getOwnPropertyNames(Date.prototype).forEach(method => {\n if (!re.test(method)) return;\n const utcMethod = method.replace(re, \"$1UTC\");\n // Filter out methods without UTC counterparts\n if (!TZDateMini.prototype[utcMethod]) return;\n if (method.startsWith(\"get\")) {\n // Delegate to internal date's UTC method\n TZDateMini.prototype[method] = function () {\n return this.internal[utcMethod]();\n };\n } else {\n // Assign regular setter\n TZDateMini.prototype[method] = function () {\n Date.prototype[utcMethod].apply(this.internal, arguments);\n syncFromInternal(this);\n return +this;\n };\n\n // Assign UTC setter\n TZDateMini.prototype[utcMethod] = function () {\n Date.prototype[utcMethod].apply(this, arguments);\n syncToInternal(this);\n return +this;\n };\n }\n});\n\n/**\n * Function syncs time to internal date, applying the time zone offset.\n *\n * @param {Date} date - Date to sync\n */\nfunction syncToInternal(date) {\n date.internal.setTime(+date);\n date.internal.setUTCMinutes(date.internal.getUTCMinutes() - date.getTimezoneOffset());\n}\n\n/**\n * Function syncs the internal date UTC values to the date. It allows to get\n * accurate timestamp value.\n *\n * @param {Date} date - The date to sync\n */\nfunction syncFromInternal(date) {\n // First we transpose the internal values\n Date.prototype.setFullYear.call(date, date.internal.getUTCFullYear(), date.internal.getUTCMonth(), date.internal.getUTCDate());\n Date.prototype.setHours.call(date, date.internal.getUTCHours(), date.internal.getUTCMinutes(), date.internal.getUTCSeconds(), date.internal.getUTCMilliseconds());\n\n // Now we have to adjust the date to the system time zone\n adjustToSystemTZ(date);\n}\n\n/**\n * Function adjusts the date to the system time zone. It uses the time zone\n * differences to calculate the offset and adjust the date.\n *\n * @param {Date} date - Date to adjust\n */\nfunction adjustToSystemTZ(date) {\n // Save the time zone offset before all the adjustments\n const offset = tzOffset(date.timeZone, date);\n\n //#region System DST adjustment\n\n // The biggest problem with using the system time zone is that when we create\n // a date from internal values stored in UTC, the system time zone might end\n // up on the DST hour:\n //\n // $ TZ=America/New_York node\n // > new Date(2020, 2, 8, 1).toString()\n // 'Sun Mar 08 2020 01:00:00 GMT-0500 (Eastern Standard Time)'\n // > new Date(2020, 2, 8, 2).toString()\n // 'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n // > new Date(2020, 2, 8, 3).toString()\n // 'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n // > new Date(2020, 2, 8, 4).toString()\n // 'Sun Mar 08 2020 04:00:00 GMT-0400 (Eastern Daylight Time)'\n //\n // Here we get the same hour for both 2 and 3, because the system time zone\n // has DST beginning at 8 March 2020, 2 a.m. and jumps to 3 a.m. So we have\n // to adjust the internal date to reflect that.\n //\n // However we want to adjust only if that's the DST hour the change happenes,\n // not the hour where DST moves to.\n\n // We calculate the previous hour to see if the time zone offset has changed\n // and we have landed on the DST hour.\n const prevHour = new Date(+date);\n // We use UTC methods here as we don't want to land on the same hour again\n // in case of DST.\n prevHour.setUTCHours(prevHour.getUTCHours() - 1);\n\n // Calculate if we are on the system DST hour.\n const systemOffset = -new Date(+date).getTimezoneOffset();\n const prevHourSystemOffset = -new Date(+prevHour).getTimezoneOffset();\n const systemDSTChange = systemOffset - prevHourSystemOffset;\n // Detect the DST shift. System DST change will occur both on\n const dstShift = Date.prototype.getHours.apply(date) !== date.internal.getUTCHours();\n\n // Move the internal date when we are on the system DST hour.\n if (systemDSTChange && dstShift) date.internal.setUTCMinutes(date.internal.getUTCMinutes() + systemDSTChange);\n\n //#endregion\n\n //#region System diff adjustment\n\n // Now we need to adjust the date, since we just applied internal values.\n // We need to calculate the difference between the system and date time zones\n // and apply it to the date.\n\n const offsetDiff = systemOffset - offset;\n if (offsetDiff) Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetDiff);\n\n //#endregion\n\n //#region Post-adjustment DST fix\n\n const postOffset = tzOffset(date.timeZone, date);\n const postSystemOffset = -new Date(+date).getTimezoneOffset();\n const postOffsetDiff = postSystemOffset - postOffset;\n const offsetChanged = postOffset !== offset;\n const postDiff = postOffsetDiff - offsetDiff;\n if (offsetChanged && postDiff) {\n Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + postDiff);\n\n // Now we need to check if got offset change during the post-adjustment.\n // If so, we also need both dates to reflect that.\n\n const newOffset = tzOffset(date.timeZone, date);\n const offsetChange = postOffset - newOffset;\n if (offsetChange) {\n date.internal.setUTCMinutes(date.internal.getUTCMinutes() + offsetChange);\n Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetChange);\n }\n }\n\n //#endregion\n}","import { TZDateMini } from \"./mini.js\";\n\n/**\n * UTC date class. It maps getters and setters to corresponding UTC methods,\n * forcing all calculations in the UTC time zone.\n *\n * Combined with date-fns, it allows using the class the same way as\n * the original date class.\n *\n * This complete version provides not only getters, setters,\n * and `getTimezoneOffset`, but also the formatter functions, mirroring\n * all original `Date` functionality. Use this version when you need to format\n * a string or in an environment you don't fully control (a library).\n * For a minimal version, see `UTCDateMini`.\n */\nexport class TZDate extends TZDateMini {\n //#region static\n\n static tz(tz, ...args) {\n return args.length ? new TZDate(...args, tz) : new TZDate(Date.now(), tz);\n }\n\n //#endregion\n\n //#region representation\n\n toISOString() {\n const [sign, hours, minutes] = this.tzComponents();\n const tz = `${sign}${hours}:${minutes}`;\n return this.internal.toISOString().slice(0, -1) + tz;\n }\n toString() {\n // \"Tue Aug 13 2024 07:50:19 GMT+0800 (Singapore Standard Time)\";\n return `${this.toDateString()} ${this.toTimeString()}`;\n }\n toDateString() {\n // toUTCString returns RFC 7231 (\"Mon, 12 Aug 2024 23:36:08 GMT\")\n const [day, date, month, year] = this.internal.toUTCString().split(\" \");\n // \"Tue Aug 13 2024\"\n return `${day?.slice(0, -1) /* Remove \",\" */} ${month} ${date} ${year}`;\n }\n toTimeString() {\n // toUTCString returns RFC 7231 (\"Mon, 12 Aug 2024 23:36:08 GMT\")\n const time = this.internal.toUTCString().split(\" \")[4];\n const [sign, hours, minutes] = this.tzComponents();\n // \"07:42:23 GMT+0800 (Singapore Standard Time)\"\n return `${time} GMT${sign}${hours}${minutes} (${tzName(this.timeZone, this)})`;\n }\n toLocaleString(locales, options) {\n return Date.prototype.toLocaleString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n toLocaleDateString(locales, options) {\n return Date.prototype.toLocaleDateString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n toLocaleTimeString(locales, options) {\n return Date.prototype.toLocaleTimeString.call(this, locales, {\n ...options,\n timeZone: options?.timeZone || this.timeZone\n });\n }\n\n //#endregion\n\n //#region private\n\n tzComponents() {\n const offset = this.getTimezoneOffset();\n const sign = offset > 0 ? \"-\" : \"+\";\n const hours = String(Math.floor(Math.abs(offset) / 60)).padStart(2, \"0\");\n const minutes = String(Math.abs(offset) % 60).padStart(2, \"0\");\n return [sign, hours, minutes];\n }\n\n //#endregion\n\n withTimeZone(timeZone) {\n return new TZDate(+this, timeZone);\n }\n\n //#region date-fns integration\n\n [Symbol.for(\"constructDateFrom\")](date) {\n return new TZDate(+new Date(date), this.timeZone);\n }\n\n //#endregion\n}\nfunction tzName(tz, date) {\n return new Intl.DateTimeFormat(\"en-GB\", {\n timeZone: tz,\n timeZoneName: \"long\"\n }).format(date).slice(12);\n}","const FIVE_WEEKS = 5;\nconst FOUR_WEEKS = 4;\n/**\n * Return the number of weeks to display in the broadcast calendar.\n *\n * @since 9.4.0\n */\nexport function getBroadcastWeeksInMonth(month, dateLib) {\n // Get the first day of the month\n const firstDayOfMonth = dateLib.startOfMonth(month);\n // Get the day of the week for the first day of the month (1-7, where 1 is Monday)\n const firstDayOfWeek = firstDayOfMonth.getDay() > 0 ? firstDayOfMonth.getDay() : 7;\n const broadcastStartDate = dateLib.addDays(month, -firstDayOfWeek + 1);\n const lastDateOfLastWeek = dateLib.addDays(broadcastStartDate, FIVE_WEEKS * 7 - 1);\n const numberOfWeeks = dateLib.getMonth(month) === dateLib.getMonth(lastDateOfLastWeek)\n ? FIVE_WEEKS\n : FOUR_WEEKS;\n return numberOfWeeks;\n}\n//# sourceMappingURL=getBroadcastWeeksInMonth.js.map","/**\n * Return the start date of the week in the broadcast calendar.\n *\n * @since 9.4.0\n */\nexport function startOfBroadcastWeek(date, dateLib) {\n const firstOfMonth = dateLib.startOfMonth(date);\n const dayOfWeek = firstOfMonth.getDay();\n if (dayOfWeek === 1) {\n return firstOfMonth;\n }\n else if (dayOfWeek === 0) {\n return dateLib.addDays(firstOfMonth, -1 * 6);\n }\n else {\n return dateLib.addDays(firstOfMonth, -1 * (dayOfWeek - 1));\n }\n}\n//# sourceMappingURL=startOfBroadcastWeek.js.map","import { getBroadcastWeeksInMonth } from \"./getBroadcastWeeksInMonth.js\";\nimport { startOfBroadcastWeek } from \"./startOfBroadcastWeek.js\";\n/**\n * Return the end date of the week in the broadcast calendar.\n *\n * @since 9.4.0\n */\nexport function endOfBroadcastWeek(date, dateLib) {\n const startDate = startOfBroadcastWeek(date, dateLib);\n const numberOfWeeks = getBroadcastWeeksInMonth(date, dateLib);\n const endDate = dateLib.addDays(startDate, numberOfWeeks * 7 - 1);\n return endDate;\n}\n//# sourceMappingURL=endOfBroadcastWeek.js.map","import { TZDate } from \"@date-fns/tz\";\nimport { addDays, addMonths, addWeeks, addYears, differenceInCalendarDays, differenceInCalendarMonths, eachMonthOfInterval, endOfISOWeek, endOfMonth, endOfWeek, endOfYear, format, getISOWeek, getMonth, getWeek, getYear, isAfter, isBefore, isDate, isSameDay, isSameMonth, isSameYear, max, min, setMonth, setYear, startOfDay, startOfISOWeek, startOfMonth, startOfWeek, startOfYear } from \"date-fns\";\nimport { enUS } from \"date-fns/locale\";\nimport { endOfBroadcastWeek } from \"../helpers/endOfBroadcastWeek.js\";\nimport { startOfBroadcastWeek } from \"../helpers/startOfBroadcastWeek.js\";\n/**\n * A wrapper class around [date-fns](http://date-fns.org) sharing the same\n * options.\n *\n * @since 9.2.0\n * @example\n * const dateLib = new DateLib({ locale: es });\n * const newDate = dateLib.addDays(new Date(), 5);\n */\nexport class DateLib {\n /**\n * Creates an instance of DateLib.\n *\n * @param options The options for the date library.\n * @param overrides Overrides for the date library functions.\n */\n constructor(options, overrides) {\n /**\n * Reference to the built-in Date constructor.\n *\n * @deprecated Use `newDate()` or `today()`.\n */\n this.Date = Date;\n /**\n * Creates a new date object to the today's date.\n *\n * @since 9.5.0\n * @returns The new date object.\n */\n this.today = () => {\n if (this.overrides?.today) {\n return this.overrides.today();\n }\n if (this.options.timeZone) {\n return TZDate.tz(this.options.timeZone);\n }\n return new this.Date();\n };\n /**\n * Creates a new date object with the specified year, month and date.\n *\n * @since 9.5.0\n * @param year The year.\n * @param monthIndex The month (0-11).\n * @param date The day of the month.\n * @returns The new date object.\n */\n this.newDate = (year, monthIndex, date) => {\n if (this.overrides?.newDate) {\n return this.overrides.newDate(year, monthIndex, date);\n }\n if (this.options.timeZone) {\n return new TZDate(year, monthIndex, date, this.options.timeZone);\n }\n return new Date(year, monthIndex, date);\n };\n /**\n * Adds the specified number of days to the given date.\n *\n * @param date The date to add days to.\n * @param amount The number of days to add.\n * @returns The new date with the days added.\n */\n this.addDays = (date, amount) => {\n return this.overrides?.addDays?.(date, amount) ?? addDays(date, amount);\n };\n /**\n * Adds the specified number of months to the given date.\n *\n * @param date The date to add months to.\n * @param amount The number of months to add.\n * @returns The new date with the months added.\n */\n this.addMonths = (date, amount) => {\n return this.overrides?.addMonths?.(date, amount) ?? addMonths(date, amount);\n };\n /**\n * Adds the specified number of weeks to the given date.\n *\n * @param date The date to add weeks to.\n * @param amount The number of weeks to add.\n * @returns The new date with the weeks added.\n */\n this.addWeeks = (date, amount) => {\n return this.overrides?.addWeeks?.(date, amount) ?? addWeeks(date, amount);\n };\n /**\n * Adds the specified number of years to the given date.\n *\n * @param date The date to add years to.\n * @param amount The number of years to add.\n * @returns The new date with the years added.\n */\n this.addYears = (date, amount) => {\n return this.overrides?.addYears?.(date, amount) ?? addYears(date, amount);\n };\n /**\n * Returns the number of calendar days between the given dates.\n *\n * @param dateLeft The later date.\n * @param dateRight The earlier date.\n * @returns The number of calendar days between the dates.\n */\n this.differenceInCalendarDays = (dateLeft, dateRight) => {\n return (this.overrides?.differenceInCalendarDays?.(dateLeft, dateRight) ??\n differenceInCalendarDays(dateLeft, dateRight));\n };\n /**\n * Returns the number of calendar months between the given dates.\n *\n * @param dateLeft The later date.\n * @param dateRight The earlier date.\n * @returns The number of calendar months between the dates.\n */\n this.differenceInCalendarMonths = (dateLeft, dateRight) => {\n return (this.overrides?.differenceInCalendarMonths?.(dateLeft, dateRight) ??\n differenceInCalendarMonths(dateLeft, dateRight));\n };\n /**\n * Returns the months between the given dates.\n *\n * @param interval The interval to get the months for.\n */\n this.eachMonthOfInterval = (interval) => {\n return (this.overrides?.eachMonthOfInterval?.(interval) ??\n eachMonthOfInterval(interval));\n };\n /**\n * Returns the end of the broadcast week for the given date.\n *\n * @param date The original date.\n * @returns The end of the broadcast week.\n */\n this.endOfBroadcastWeek = (date, dateLib) => {\n return (this.overrides?.endOfBroadcastWeek?.(date, dateLib) ??\n endOfBroadcastWeek(date, this));\n };\n /**\n * Returns the end of the ISO week for the given date.\n *\n * @param date The original date.\n * @returns The end of the ISO week.\n */\n this.endOfISOWeek = (date) => {\n return this.overrides?.endOfISOWeek?.(date) ?? endOfISOWeek(date);\n };\n /**\n * Returns the end of the month for the given date.\n *\n * @param date The original date.\n * @returns The end of the month.\n */\n this.endOfMonth = (date) => {\n return this.overrides?.endOfMonth?.(date) ?? endOfMonth(date);\n };\n /**\n * Returns the end of the week for the given date.\n *\n * @param date The original date.\n * @returns The end of the week.\n */\n this.endOfWeek = (date, options) => {\n return (this.overrides?.endOfWeek?.(date, options ?? this.options) ??\n endOfWeek(date, options ?? this.options));\n };\n /**\n * Returns the end of the year for the given date.\n *\n * @param date The original date.\n * @returns The end of the year.\n */\n this.endOfYear = (date) => {\n return this.overrides?.endOfYear?.(date) ?? endOfYear(date);\n };\n /**\n * Formats the given date using the specified format string.\n *\n * @param date The date to format.\n * @param formatStr The format string.\n * @returns The formatted date string.\n */\n this.format = (date, formatStr, options) => {\n const formatted = this.overrides?.format?.(date, formatStr, options ?? this.options) ??\n format(date, formatStr, options ?? this.options);\n if (this.options.numerals && this.options.numerals !== \"latn\") {\n return this.replaceDigits(formatted);\n }\n return formatted;\n };\n /**\n * Returns the ISO week number for the given date.\n *\n * @param date The date to get the ISO week number for.\n * @returns The ISO week number.\n */\n this.getISOWeek = (date) => {\n return this.overrides?.getISOWeek?.(date) ?? getISOWeek(date);\n };\n /**\n * Returns the month of the given date.\n *\n * @param date The date to get the month for.\n * @returns The month.\n */\n this.getMonth = (date) => {\n return this.overrides?.getMonth?.(date) ?? getMonth(date);\n };\n /**\n * Returns the year of the given date.\n *\n * @param date The date to get the year for.\n * @returns The year.\n */\n this.getYear = (date) => {\n return this.overrides?.getYear?.(date) ?? getYear(date);\n };\n /**\n * Returns the local week number for the given date.\n *\n * @param date The date to get the week number for.\n * @returns The week number.\n */\n this.getWeek = (date, options) => {\n return (this.overrides?.getWeek?.(date, options ?? this.options) ??\n getWeek(date, options ?? this.options));\n };\n /**\n * Checks if the first date is after the second date.\n *\n * @param date The date to compare.\n * @param dateToCompare The date to compare with.\n * @returns True if the first date is after the second date.\n */\n this.isAfter = (date, dateToCompare) => {\n return (this.overrides?.isAfter?.(date, dateToCompare) ??\n isAfter(date, dateToCompare));\n };\n /**\n * Checks if the first date is before the second date.\n *\n * @param date The date to compare.\n * @param dateToCompare The date to compare with.\n * @returns True if the first date is before the second date.\n */\n this.isBefore = (date, dateToCompare) => {\n return (this.overrides?.isBefore?.(date, dateToCompare) ??\n isBefore(date, dateToCompare));\n };\n /**\n * Checks if the given value is a Date object.\n *\n * @param value The value to check.\n * @returns True if the value is a Date object.\n */\n this.isDate = (value) => {\n return this.overrides?.isDate?.(value) ?? isDate(value);\n };\n /**\n * Checks if the given dates are on the same day.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are on the same day.\n */\n this.isSameDay = (dateLeft, dateRight) => {\n return (this.overrides?.isSameDay?.(dateLeft, dateRight) ??\n isSameDay(dateLeft, dateRight));\n };\n /**\n * Checks if the given dates are in the same month.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are in the same month.\n */\n this.isSameMonth = (dateLeft, dateRight) => {\n return (this.overrides?.isSameMonth?.(dateLeft, dateRight) ??\n isSameMonth(dateLeft, dateRight));\n };\n /**\n * Checks if the given dates are in the same year.\n *\n * @param dateLeft The first date to compare.\n * @param dateRight The second date to compare.\n * @returns True if the dates are in the same year.\n */\n this.isSameYear = (dateLeft, dateRight) => {\n return (this.overrides?.isSameYear?.(dateLeft, dateRight) ??\n isSameYear(dateLeft, dateRight));\n };\n /**\n * Returns the latest date in the given array of dates.\n *\n * @param dates The array of dates to compare.\n * @returns The latest date.\n */\n this.max = (dates) => {\n return this.overrides?.max?.(dates) ?? max(dates);\n };\n /**\n * Returns the earliest date in the given array of dates.\n *\n * @param dates The array of dates to compare.\n * @returns The earliest date.\n */\n this.min = (dates) => {\n return this.overrides?.min?.(dates) ?? min(dates);\n };\n /**\n * Sets the month of the given date.\n *\n * @param date The date to set the month on.\n * @param month The month to set (0-11).\n * @returns The new date with the month set.\n */\n this.setMonth = (date, month) => {\n return this.overrides?.setMonth?.(date, month) ?? setMonth(date, month);\n };\n /**\n * Sets the year of the given date.\n *\n * @param date The date to set the year on.\n * @param year The year to set.\n * @returns The new date with the year set.\n */\n this.setYear = (date, year) => {\n return this.overrides?.setYear?.(date, year) ?? setYear(date, year);\n };\n /**\n * Returns the start of the broadcast week for the given date.\n *\n * @param date The original date.\n * @returns The start of the broadcast week.\n */\n this.startOfBroadcastWeek = (date, dateLib) => {\n return (this.overrides?.startOfBroadcastWeek?.(date, dateLib ?? this) ??\n startOfBroadcastWeek(date, dateLib ?? this));\n };\n /**\n * Returns the start of the day for the given date.\n *\n * @param date The original date.\n * @returns The start of the day.\n */\n this.startOfDay = (date) => {\n return this.overrides?.startOfDay?.(date) ?? startOfDay(date);\n };\n /**\n * Returns the start of the ISO week for the given date.\n *\n * @param date The original date.\n * @returns The start of the ISO week.\n */\n this.startOfISOWeek = (date) => {\n return this.overrides?.startOfISOWeek?.(date) ?? startOfISOWeek(date);\n };\n /**\n * Returns the start of the month for the given date.\n *\n * @param date The original date.\n * @returns The start of the month.\n */\n this.startOfMonth = (date) => {\n return this.overrides?.startOfMonth?.(date) ?? startOfMonth(date);\n };\n /**\n * Returns the start of the week for the given date.\n *\n * @param date The original date.\n * @returns The start of the week.\n */\n this.startOfWeek = (date) => {\n return (this.overrides?.startOfWeek?.(date) ?? startOfWeek(date, this.options));\n };\n /**\n * Returns the start of the year for the given date.\n *\n * @param date The original date.\n * @returns The start of the year.\n */\n this.startOfYear = (date) => {\n return this.overrides?.startOfYear?.(date) ?? startOfYear(date);\n };\n this.options = { locale: enUS, ...options };\n this.overrides = overrides;\n }\n /**\n * Generate digit map dynamically using Intl.NumberFormat.\n *\n * @since 9.5.0\n */\n getDigitMap() {\n const { numerals = \"latn\" } = this.options;\n // Use Intl.NumberFormat to create a formatter with the specified numbering system\n const formatter = new Intl.NumberFormat(\"en-US\", {\n numberingSystem: numerals\n });\n // Map Arabic digits (0-9) to the target numerals\n const digitMap = {};\n for (let i = 0; i < 10; i++) {\n digitMap[i.toString()] = formatter.format(i);\n }\n return digitMap;\n }\n /**\n * Replace Arabic digits with the target numbering system digits.\n *\n * @since 9.5.0\n */\n replaceDigits(input) {\n const digitMap = this.getDigitMap();\n return input.replace(/\\d/g, (digit) => digitMap[digit] || digit);\n }\n /**\n * Format number using the custom numbering system.\n *\n * @since 9.5.0\n * @param value The number to format.\n * @returns The formatted number.\n */\n formatNumber(value) {\n return this.replaceDigits(value.toString());\n }\n}\n/** The default locale (English). */\nexport { enUS as defaultLocale } from \"date-fns/locale/en-US\";\n/**\n * The default date library with English locale.\n *\n * @since 9.2.0\n */\nexport const defaultDateLib = new DateLib();\n/**\n * @ignore\n * @deprecated Use `defaultDateLib`.\n */\nexport const dateLib = defaultDateLib;\n//# sourceMappingURL=DateLib.js.map","import { DayFlag, SelectionState, UI } from \"../UI.js\";\nexport function getClassNamesForModifiers(modifiers, classNames, modifiersClassNames = {}) {\n const modifierClassNames = Object.entries(modifiers)\n .filter(([, active]) => active === true)\n .reduce((previousValue, [key]) => {\n if (modifiersClassNames[key]) {\n previousValue.push(modifiersClassNames[key]);\n }\n else if (classNames[DayFlag[key]]) {\n previousValue.push(classNames[DayFlag[key]]);\n }\n else if (classNames[SelectionState[key]]) {\n previousValue.push(classNames[SelectionState[key]]);\n }\n return previousValue;\n }, [classNames[UI.Day]]);\n return modifierClassNames;\n}\n//# sourceMappingURL=getClassNamesForModifiers.js.map","import React from \"react\";\n/**\n * Render the button elements in the calendar.\n *\n * @private\n * @deprecated Use `PreviousMonthButton` or `@link NextMonthButton` instead.\n */\nexport function Button(props) {\n return React.createElement(\"button\", { ...props });\n}\n//# sourceMappingURL=Button.js.map","import React from \"react\";\n/**\n * Render the label in the month caption.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function CaptionLabel(props) {\n return React.createElement(\"span\", { ...props });\n}\n//# sourceMappingURL=CaptionLabel.js.map","import React from \"react\";\n/**\n * Render the chevron icon used in the navigation buttons and dropdowns.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Chevron(props) {\n const { size = 24, orientation = \"left\", className } = props;\n return (React.createElement(\"svg\", { className: className, width: size, height: size, viewBox: \"0 0 24 24\" },\n orientation === \"up\" && (React.createElement(\"polygon\", { points: \"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28\" })),\n orientation === \"down\" && (React.createElement(\"polygon\", { points: \"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72\" })),\n orientation === \"left\" && (React.createElement(\"polygon\", { points: \"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20\" })),\n orientation === \"right\" && (React.createElement(\"polygon\", { points: \"8 18.612 14.1888889 12.5 8 6.37733333 9.91111111 4.5 18 12.5 9.91111111 20.5\" }))));\n}\n//# sourceMappingURL=Chevron.js.map","import React from \"react\";\n/**\n * Render the gridcell of a day in the calendar and handle the interaction and\n * the focus with they day.\n *\n * If you need to just change the content of the day cell, consider swapping the\n * `DayDate` component instead.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Day(props) {\n const { day, modifiers, ...tdProps } = props;\n return React.createElement(\"td\", { ...tdProps });\n}\n//# sourceMappingURL=Day.js.map","import React from \"react\";\n/**\n * Render the button for a day in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function DayButton(props) {\n const { day, modifiers, ...buttonProps } = props;\n const ref = React.useRef(null);\n React.useEffect(() => {\n if (modifiers.focused)\n ref.current?.focus();\n }, [modifiers.focused]);\n return React.createElement(\"button\", { ref: ref, ...buttonProps });\n}\n//# sourceMappingURL=DayButton.js.map","import React from \"react\";\nimport { UI } from \"../UI.js\";\n/**\n * Render a dropdown component to use in the navigation bar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Dropdown(props) {\n const { options, className, components, classNames, ...selectProps } = props;\n const cssClassSelect = [classNames[UI.Dropdown], className].join(\" \");\n const selectedOption = options?.find(({ value }) => value === selectProps.value);\n return (React.createElement(\"span\", { \"data-disabled\": selectProps.disabled, className: classNames[UI.DropdownRoot] },\n React.createElement(components.Select, { className: cssClassSelect, ...selectProps }, options?.map(({ value, label, disabled }) => (React.createElement(components.Option, { key: value, value: value, disabled: disabled }, label)))),\n React.createElement(\"span\", { className: classNames[UI.CaptionLabel], \"aria-hidden\": true },\n selectedOption?.label,\n React.createElement(components.Chevron, { orientation: \"down\", size: 18, className: classNames[UI.Chevron] }))));\n}\n//# sourceMappingURL=Dropdown.js.map","import React from \"react\";\n/**\n * Render the the navigation dropdowns.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function DropdownNav(props) {\n return React.createElement(\"div\", { ...props });\n}\n//# sourceMappingURL=DropdownNav.js.map","import React from \"react\";\n/**\n * Component wrapping the footer.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Footer(props) {\n return React.createElement(\"div\", { ...props });\n}\n//# sourceMappingURL=Footer.js.map","import React from \"react\";\n/**\n * Render the grid with the weekday header row and the weeks for the given\n * month.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Month(props) {\n const { calendarMonth, displayIndex, ...divProps } = props;\n return React.createElement(\"div\", { ...divProps }, props.children);\n}\n//# sourceMappingURL=Month.js.map","import React from \"react\";\n/**\n * Render the caption of a month in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthCaption(props) {\n const { calendarMonth, displayIndex, ...divProps } = props;\n return React.createElement(\"div\", { ...divProps });\n}\n//# sourceMappingURL=MonthCaption.js.map","import React from \"react\";\n/**\n * Render the grid of days in a month.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthGrid(props) {\n return React.createElement(\"table\", { ...props });\n}\n//# sourceMappingURL=MonthGrid.js.map","import React from \"react\";\n/**\n * Component wrapping the month grids.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Months(props) {\n return React.createElement(\"div\", { ...props });\n}\n//# sourceMappingURL=Months.js.map","import { createContext, useContext } from \"react\";\n/** @ignore */\nexport const dayPickerContext = createContext(undefined);\n/**\n * Returns the context to work with `<DayPicker />` inside custom components.\n *\n * This hook provides access to the DayPicker context, which includes various\n * properties and methods to interact with the DayPicker component. It must be\n * used within a custom component.\n *\n * @template T - Use this type to refine the returned context type with a\n * specific selection mode.\n * @returns {DayPickerContext<T>} The context to work with DayPicker.\n * @throws {Error} If the hook is used outside of a DayPicker provider.\n * @group Hooks\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function useDayPicker() {\n const context = useContext(dayPickerContext);\n if (context === undefined) {\n throw new Error(\"useDayPicker() must be used within a custom component.\");\n }\n return context;\n}\n//# sourceMappingURL=useDayPicker.js.map","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the dropdown to navigate between months.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthsDropdown(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Dropdown, { ...props });\n}\n//# sourceMappingURL=MonthsDropdown.js.map","import React from \"react\";\nimport { UI } from \"../UI.js\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the toolbar with the navigation button.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Nav(props) {\n const { onPreviousClick, onNextClick, previousMonth, nextMonth, ...navProps } = props;\n const { components, classNames, labels: { labelPrevious, labelNext } } = useDayPicker();\n return (React.createElement(\"nav\", { ...navProps },\n React.createElement(components.PreviousMonthButton, { type: \"button\", className: classNames[UI.PreviousMonthButton], tabIndex: previousMonth ? undefined : -1, disabled: previousMonth ? undefined : true, \"aria-label\": labelPrevious(previousMonth), onClick: props.onPreviousClick },\n React.createElement(components.Chevron, { disabled: previousMonth ? undefined : true, className: classNames[UI.Chevron], orientation: \"left\" })),\n React.createElement(components.NextMonthButton, { type: \"button\", className: classNames[UI.NextMonthButton], tabIndex: nextMonth ? undefined : -1, disabled: nextMonth ? undefined : true, \"aria-label\": labelNext(nextMonth), onClick: props.onNextClick },\n React.createElement(components.Chevron, { disabled: nextMonth ? undefined : true, orientation: \"right\", className: classNames[UI.Chevron] }))));\n}\n//# sourceMappingURL=Nav.js.map","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the next month button element in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function NextMonthButton(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Button, { ...props });\n}\n//# sourceMappingURL=NextMonthButton.js.map","import React from \"react\";\n/**\n * Render the `option` element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Option(props) {\n return React.createElement(\"option\", { ...props });\n}\n//# sourceMappingURL=Option.js.map","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the previous month button element in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function PreviousMonthButton(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Button, { ...props });\n}\n//# sourceMappingURL=PreviousMonthButton.js.map","import React from \"react\";\n/**\n * Render the root element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Root(props) {\n return React.createElement(\"div\", { ...props });\n}\n//# sourceMappingURL=Root.js.map","import React from \"react\";\n/**\n * Render the `select` element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Select(props) {\n return React.createElement(\"select\", { ...props });\n}\n//# sourceMappingURL=Select.js.map","import React from \"react\";\n/**\n * Render a row in the calendar, with the days and the week number.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Week(props) {\n const { week, ...trProps } = props;\n return React.createElement(\"tr\", { ...trProps });\n}\n//# sourceMappingURL=Week.js.map","import React from \"react\";\n/**\n * Render the column header with the weekday name (e.g. \"Mo\", \"Tu\", etc.).\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weekday(props) {\n return React.createElement(\"th\", { ...props });\n}\n//# sourceMappingURL=Weekday.js.map","import React from \"react\";\n/**\n * Render the row with the weekday names.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weekdays(props) {\n return (React.createElement(\"thead\", { \"aria-hidden\": true },\n React.createElement(\"tr\", { ...props })));\n}\n//# sourceMappingURL=Weekdays.js.map","import React from \"react\";\n/**\n * Render the cell with the number of the week.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function WeekNumber(props) {\n const { week, ...thProps } = props;\n return React.createElement(\"th\", { ...thProps });\n}\n//# sourceMappingURL=WeekNumber.js.map","import React from \"react\";\n/**\n * Render the column header for the week numbers.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function WeekNumberHeader(props) {\n return React.createElement(\"th\", { ...props });\n}\n//# sourceMappingURL=WeekNumberHeader.js.map","import React from \"react\";\n/**\n * Render the weeks in the month grid.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weeks(props) {\n return React.createElement(\"tbody\", { ...props });\n}\n//# sourceMappingURL=Weeks.js.map","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the dropdown to navigate between years.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function YearsDropdown(props) {\n const { components } = useDayPicker();\n return React.createElement(components.Dropdown, { ...props });\n}\n//# sourceMappingURL=YearsDropdown.js.map","import * as components from \"../components/custom-components.js\";\nexport function getComponents(customComponents) {\n return {\n ...components,\n ...customComponents\n };\n}\n//# sourceMappingURL=getComponents.js.map","/** Return the `data-` attributes from the props. */\nexport function getDataAttributes(props) {\n const dataAttributes = {\n \"data-mode\": props.mode ?? undefined,\n \"data-required\": \"required\" in props ? props.required : undefined,\n \"data-multiple-months\": (props.numberOfMonths && props.numberOfMonths > 1) || undefined,\n \"data-week-numbers\": props.showWeekNumber || undefined,\n \"data-broadcast-calendar\": props.broadcastCalendar || undefined\n };\n Object.entries(props).forEach(([key, val]) => {\n if (key.startsWith(\"data-\")) {\n dataAttributes[key] = val;\n }\n });\n return dataAttributes;\n}\n//# sourceMappingURL=getDataAttributes.js.map","import { UI, DayFlag, SelectionState } from \"../UI.js\";\n/**\n * Get the default class names for the UI elements.\n *\n * @group Utilities\n */\nexport function getDefaultClassNames() {\n const classNames = {};\n for (const key in UI) {\n classNames[UI[key]] =\n `rdp-${UI[key]}`;\n }\n for (const key in DayFlag) {\n classNames[DayFlag[key]] =\n `rdp-${DayFlag[key]}`;\n }\n for (const key in SelectionState) {\n classNames[SelectionState[key]] =\n `rdp-${SelectionState[key]}`;\n }\n return classNames;\n}\n//# sourceMappingURL=getDefaultClassNames.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Format the caption of the month.\n *\n * @defaultValue `LLLL y` (e.g. \"November 2022\")\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatCaption(month, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(month, \"LLLL y\");\n}\n/**\n * @private\n * @deprecated Use {@link formatCaption} instead.\n * @group Formatters\n */\nexport const formatMonthCaption = formatCaption;\n//# sourceMappingURL=formatCaption.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Format the day date shown in the day cell.\n *\n * @defaultValue `d` (e.g. \"1\")\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatDay(date, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(date, \"d\");\n}\n//# sourceMappingURL=formatDay.js.map","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Format the month number for the dropdown option label.\n *\n * @defaultValue The localized month name\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatMonthDropdown(month, dateLib = defaultDateLib) {\n return dateLib.format(month, \"LLLL\");\n}\n//# sourceMappingURL=formatMonthDropdown.js.map","/**\n * Format the week number.\n *\n * @defaultValue `weekNumber.toLocaleString()` with a leading zero for single-digit numbers\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekNumber(weekNumber) {\n if (weekNumber < 10) {\n return `0${weekNumber.toLocaleString()}`;\n }\n return `${weekNumber.toLocaleString()}`;\n}\n//# sourceMappingURL=formatWeekNumber.js.map","/**\n * Format the week number header.\n *\n * @defaultValue `\"\"`\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekNumberHeader() {\n return ``;\n}\n//# sourceMappingURL=formatWeekNumberHeader.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Format the weekday name to be displayed in the weekdays header.\n *\n * @defaultValue `cccccc` (e.g. \"Mo\" for Monday)\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekdayName(weekday, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(weekday, \"cccccc\");\n}\n//# sourceMappingURL=formatWeekdayName.js.map","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Format the years for the dropdown option label.\n *\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatYearDropdown(year, dateLib = defaultDateLib) {\n return dateLib.format(year, \"yyyy\");\n}\n/**\n * @private\n * @deprecated Use `formatYearDropdown` instead.\n * @group Formatters\n */\nexport const formatYearCaption = formatYearDropdown;\n//# sourceMappingURL=formatYearDropdown.js.map","import * as defaultFormatters from \"../formatters/index.js\";\n/** Return the formatters from the props merged with the default formatters. */\nexport function getFormatters(customFormatters) {\n if (customFormatters?.formatMonthCaption && !customFormatters.formatCaption) {\n customFormatters.formatCaption = customFormatters.formatMonthCaption;\n }\n if (customFormatters?.formatYearCaption &&\n !customFormatters.formatYearDropdown) {\n customFormatters.formatYearDropdown = customFormatters.formatYearCaption;\n }\n return {\n ...defaultFormatters,\n ...customFormatters\n };\n}\n//# sourceMappingURL=getFormatters.js.map","/** Return the months to show in the dropdown. */\nexport function getMonthOptions(displayMonth, navStart, navEnd, formatters, dateLib) {\n const { startOfMonth, startOfYear, endOfYear, eachMonthOfInterval, getMonth } = dateLib;\n const months = eachMonthOfInterval({\n start: startOfYear(displayMonth),\n end: endOfYear(displayMonth)\n });\n const options = months.map((month) => {\n const label = formatters.formatMonthDropdown(month, dateLib);\n const value = getMonth(month);\n const disabled = (navStart && month < startOfMonth(navStart)) ||\n (navEnd && month > startOfMonth(navEnd)) ||\n false;\n return { value, label, disabled };\n });\n return options;\n}\n//# sourceMappingURL=getMonthOptions.js.map","import { UI } from \"../UI.js\";\nexport function getStyleForModifiers(dayModifiers, styles = {}, modifiersStyles = {}) {\n let style = { ...styles?.[UI.Day] };\n Object.entries(dayModifiers)\n .filter(([, active]) => active === true)\n .forEach(([modifier]) => {\n style = {\n ...style,\n ...modifiersStyles?.[modifier]\n };\n });\n return style;\n}\n//# sourceMappingURL=getStyleForModifiers.js.map","/**\n * Generate a series of 7 days, starting from the week, to use for formatting\n * the weekday names (Monday, Tuesday, etc.).\n */\nexport function getWeekdays(\n/** The date library. */\ndateLib, \n/** Use ISOWeek instead of locale/ */\nISOWeek, \n/** @since 9.4.0 */\nbroadcastCalendar) {\n const today = dateLib.today();\n const start = broadcastCalendar\n ? dateLib.startOfBroadcastWeek(today, dateLib)\n : ISOWeek\n ? dateLib.startOfISOWeek(today)\n : dateLib.startOfWeek(today);\n const days = [];\n for (let i = 0; i < 7; i++) {\n const day = dateLib.addDays(start, i);\n days.push(day);\n }\n return days;\n}\n//# sourceMappingURL=getWeekdays.js.map","/** Return the years to show in the dropdown. */\nexport function getYearOptions(navStart, navEnd, formatters, dateLib) {\n if (!navStart)\n return undefined;\n if (!navEnd)\n return undefined;\n const { startOfYear, endOfYear, addYears, getYear, isBefore, isSameYear } = dateLib;\n const firstNavYear = startOfYear(navStart);\n const lastNavYear = endOfYear(navEnd);\n const years = [];\n let year = firstNavYear;\n while (isBefore(year, lastNavYear) || isSameYear(year, lastNavYear)) {\n years.push(year);\n year = addYears(year, 1);\n }\n return years.map((year) => {\n const label = formatters.formatYearDropdown(year, dateLib);\n return {\n value: getYear(year),\n label,\n disabled: false\n };\n });\n}\n//# sourceMappingURL=getYearOptions.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * The ARIA label for the month grid, that will be announced when entering the\n * grid.\n *\n * @defaultValue `LLLL y` (e.g. \"November 2022\")\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelGrid(date, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(date, \"LLLL y\");\n}\n/**\n * @ignore\n * @deprecated Use {@link labelGrid} instead.\n */\nexport const labelCaption = labelGrid;\n//# sourceMappingURL=labelGrid.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * The label for the day gridcell when the calendar is not interactive.\n *\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelGridcell(date, \n/** The modifiers for the day. */\nmodifiers, options, dateLib) {\n let label = (dateLib ?? new DateLib(options)).format(date, \"PPPP\");\n if (modifiers?.today) {\n label = `Today, ${label}`;\n }\n return label;\n}\n//# sourceMappingURL=labelGridcell.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * The ARIA label for the day button.\n *\n * Use the `modifiers` argument to add additional context to the label, e.g.\n * when a day is selected or is today.\n *\n * @defaultValue The formatted date.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelDayButton(date, \n/** The modifiers for the day. */\nmodifiers, options, dateLib) {\n let label = (dateLib ?? new DateLib(options)).format(date, \"PPPP\");\n if (modifiers.today)\n label = `Today, ${label}`;\n if (modifiers.selected)\n label = `${label}, selected`;\n return label;\n}\n/**\n * @ignore\n * @deprecated Use `labelDayButton` instead.\n */\nexport const labelDay = labelDayButton;\n//# sourceMappingURL=labelDayButton.js.map","/**\n * The ARIA label for the navigation toolbar.\n *\n * @defaultValue `\"\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelNav() {\n return \"\";\n}\n//# sourceMappingURL=labelNav.js.map","/**\n * The ARIA label for the months dropdown.\n *\n * @defaultValue `\"Choose the Month\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelMonthDropdown(options) {\n return \"Choose the Month\";\n}\n//# sourceMappingURL=labelMonthDropdown.js.map","/**\n * The ARIA label for next month button.\n *\n * @defaultValue `\"Go to the Next Month\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelNext(\n/** `undefined` where there's no next month to navigate to. */\nmonth) {\n return \"Go to the Next Month\";\n}\n//# sourceMappingURL=labelNext.js.map","/**\n * The ARIA label for previous month button.\n *\n * @defaultValue `\"Go to the Previous Month\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelPrevious(\n/** Undefined where there's no previous month to navigate to. */\nmonth) {\n return \"Go to the Previous Month\";\n}\n//# sourceMappingURL=labelPrevious.js.map","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * The ARIA label for the Weekday column header.\n *\n * @defaultValue `\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekday(date, options, dateLib) {\n return (dateLib ?? new DateLib(options)).format(date, \"cccc\");\n}\n//# sourceMappingURL=labelWeekday.js.map","/**\n * The ARIA label for the week number cell (the first cell in the row).\n *\n * @defaultValue `Week ${weekNumber}`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumber(weekNumber, options) {\n return `Week ${weekNumber}`;\n}\n//# sourceMappingURL=labelWeekNumber.js.map","/**\n * The ARIA label for the week number header element.\n *\n * @defaultValue `\"Week Number\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumberHeader(options) {\n return \"Week Number\";\n}\n//# sourceMappingURL=labelWeekNumberHeader.js.map","/**\n * The ARIA label for the years dropdown.\n *\n * @defaultValue `\"Choose the Year\"`\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelYearDropdown(options) {\n return \"Choose the Year\";\n}\n//# sourceMappingURL=labelYearDropdown.js.map","/** Return all the dates to display in the calendar. */\nexport function getDates(displayMonths, maxDate, props, dateLib) {\n const firstMonth = displayMonths[0];\n const lastMonth = displayMonths[displayMonths.length - 1];\n const { ISOWeek, fixedWeeks, broadcastCalendar } = props ?? {};\n const { addDays, differenceInCalendarDays, differenceInCalendarMonths, endOfBroadcastWeek, endOfISOWeek, endOfMonth, endOfWeek, isAfter, startOfBroadcastWeek, startOfISOWeek, startOfWeek } = dateLib;\n const startWeekFirstDate = broadcastCalendar\n ? startOfBroadcastWeek(firstMonth, dateLib)\n : ISOWeek\n ? startOfISOWeek(firstMonth)\n : startOfWeek(firstMonth);\n const endWeekLastDate = broadcastCalendar\n ? endOfBroadcastWeek(lastMonth, dateLib)\n : ISOWeek\n ? endOfISOWeek(endOfMonth(lastMonth))\n : endOfWeek(endOfMonth(lastMonth));\n const nOfDays = differenceInCalendarDays(endWeekLastDate, startWeekFirstDate);\n const nOfMonths = differenceInCalendarMonths(lastMonth, firstMonth) + 1;\n const dates = [];\n for (let i = 0; i <= nOfDays; i++) {\n const date = addDays(startWeekFirstDate, i);\n if (maxDate && isAfter(date, maxDate)) {\n break;\n }\n dates.push(date);\n }\n // If fixed weeks is enabled, add the extra dates to the array\n const nrOfDaysWithFixedWeeks = broadcastCalendar ? 35 : 42;\n const extraDates = nrOfDaysWithFixedWeeks * nOfMonths;\n if (fixedWeeks && dates.length < extraDates) {\n const daysToAdd = extraDates - dates.length;\n for (let i = 0; i < daysToAdd; i++) {\n const date = addDays(dates[dates.length - 1], 1);\n dates.push(date);\n }\n }\n return dates;\n}\n//# sourceMappingURL=getDates.js.map","/**\n * Returns all the days belonging to the calendar by merging the days in the\n * weeks for each month.\n */\nexport function getDays(calendarMonths) {\n const initialDays = [];\n return calendarMonths.reduce((days, month) => {\n const initialDays = [];\n const weekDays = month.weeks.reduce((weekDays, week) => {\n return [...weekDays, ...week.days];\n }, initialDays);\n return [...days, ...weekDays];\n }, initialDays);\n}\n//# sourceMappingURL=getDays.js.map","export function getDisplayMonths(firstDisplayedMonth, calendarEndMonth, props, dateLib) {\n const { numberOfMonths = 1 } = props;\n const months = [];\n for (let i = 0; i < numberOfMonths; i++) {\n const month = dateLib.addMonths(firstDisplayedMonth, i);\n if (calendarEndMonth && month > calendarEndMonth) {\n break;\n }\n months.push(month);\n }\n return months;\n}\n//# sourceMappingURL=getDisplayMonths.js.map","/** Return the start month based on the props passed to DayPicker. */\nexport function getInitialMonth(props, dateLib) {\n const { month, defaultMonth, today = dateLib.today(), numberOfMonths = 1, endMonth, startMonth } = props;\n let initialMonth = month || defaultMonth || today;\n const { differenceInCalendarMonths, addMonths, startOfMonth } = dateLib;\n // Fix the initialMonth if is after the endMonth\n if (endMonth && differenceInCalendarMonths(endMonth, initialMonth) < 0) {\n const offset = -1 * (numberOfMonths - 1);\n initialMonth = addMonths(endMonth, offset);\n }\n // Fix the initialMonth if is before the startMonth\n if (startMonth && differenceInCalendarMonths(initialMonth, startMonth) < 0) {\n initialMonth = startMonth;\n }\n return startOfMonth(initialMonth);\n}\n//# sourceMappingURL=getInitialMonth.js.map","import { defaultDateLib } from \"./DateLib.js\";\n/**\n * Represent the day displayed in the calendar.\n *\n * In DayPicker, a `Day` is a `Date` that can be displayed in the calendar. It\n * is used as extension of the native `Date` object to provide additional\n * information about the day.\n */\nexport class CalendarDay {\n constructor(date, displayMonth, dateLib = defaultDateLib) {\n this.date = date;\n this.displayMonth = displayMonth;\n this.outside = Boolean(displayMonth && !dateLib.isSameMonth(date, displayMonth));\n this.dateLib = dateLib;\n }\n /**\n * Check if the day is the same as the given day: considering if it is in the\n * same display month.\n */\n isEqualTo(day) {\n return (this.dateLib.isSameDay(day.date, this.date) &&\n this.dateLib.isSameMonth(day.displayMonth, this.displayMonth));\n }\n}\n//# sourceMappingURL=CalendarDay.js.map","/** Represent a month in a calendar year. Contains the weeks within the month. */\nexport class CalendarMonth {\n constructor(month, weeks) {\n this.date = month;\n this.weeks = weeks;\n }\n}\n//# sourceMappingURL=CalendarMonth.js.map","/** Represent a week in a calendar month. */\nexport class CalendarWeek {\n constructor(weekNumber, days) {\n this.days = days;\n this.weekNumber = weekNumber;\n }\n}\n//# sourceMappingURL=CalendarWeek.js.map","import { CalendarWeek, CalendarDay, CalendarMonth } from \"../classes/index.js\";\n/** Return the months to display in the calendar. */\nexport function getMonths(\n/** The months (as dates) to display in the calendar. */\ndisplayMonths, \n/** The dates to display in the calendar. */\ndates, \n/** Options from the props context. */\nprops, dateLib) {\n const { addDays, endOfBroadcastWeek, endOfISOWeek, endOfMonth, endOfWeek, getISOWeek, getWeek, startOfBroadcastWeek, startOfISOWeek, startOfWeek } = dateLib;\n const dayPickerMonths = displayMonths.reduce((months, month) => {\n const firstDateOfFirstWeek = props.broadcastCalendar\n ? startOfBroadcastWeek(month, dateLib)\n : props.ISOWeek\n ? startOfISOWeek(month)\n : startOfWeek(month);\n const lastDateOfLastWeek = props.broadcastCalendar\n ? endOfBroadcastWeek(month, dateLib)\n : props.ISOWeek\n ? endOfISOWeek(endOfMonth(month))\n : endOfWeek(endOfMonth(month));\n /** The dates to display in the month. */\n const monthDates = dates.filter((date) => {\n return date >= firstDateOfFirstWeek && date <= lastDateOfLastWeek;\n });\n const nrOfDaysWithFixedWeeks = props.broadcastCalendar ? 35 : 42;\n if (props.fixedWeeks && monthDates.length < nrOfDaysWithFixedWeeks) {\n const extraDates = dates.filter((date) => {\n const daysToAdd = nrOfDaysWithFixedWeeks - monthDates.length;\n return (date > lastDateOfLastWeek &&\n date <= addDays(lastDateOfLastWeek, daysToAdd));\n });\n monthDates.push(...extraDates);\n }\n const weeks = monthDates.reduce((weeks, date) => {\n const weekNumber = props.ISOWeek ? getISOWeek(date) : getWeek(date);\n const week = weeks.find((week) => week.weekNumber === weekNumber);\n const day = new CalendarDay(date, month, dateLib);\n if (!week) {\n weeks.push(new CalendarWeek(weekNumber, [day]));\n }\n else {\n week.days.push(day);\n }\n return weeks;\n }, []);\n const dayPickerMonth = new CalendarMonth(month, weeks);\n months.push(dayPickerMonth);\n return months;\n }, []);\n if (!props.reverseMonths) {\n return dayPickerMonths;\n }\n else {\n return dayPickerMonths.reverse();\n }\n}\n//# sourceMappingURL=getMonths.js.map","/** Return the start and end months for the calendar navigation. */\nexport function getNavMonths(props, dateLib) {\n let { startMonth, endMonth } = props;\n const { startOfYear, startOfDay, startOfMonth, endOfMonth, addYears, endOfYear, newDate, today } = dateLib;\n // Handle deprecated code\n const { fromYear, toYear, fromMonth, toMonth } = props;\n if (!startMonth && fromMonth) {\n startMonth = fromMonth;\n }\n if (!startMonth && fromYear) {\n startMonth = dateLib.newDate(fromYear, 0, 1);\n }\n if (!endMonth && toMonth) {\n endMonth = toMonth;\n }\n if (!endMonth && toYear) {\n endMonth = newDate(toYear, 11, 31);\n }\n const hasYearDropdown = props.captionLayout === \"dropdown\" ||\n props.captionLayout === \"dropdown-years\";\n if (startMonth) {\n startMonth = startOfMonth(startMonth);\n }\n else if (fromYear) {\n startMonth = newDate(fromYear, 0, 1);\n }\n else if (!startMonth && hasYearDropdown) {\n startMonth = startOfYear(addYears(props.today ?? today(), -100));\n }\n if (endMonth) {\n endMonth = endOfMonth(endMonth);\n }\n else if (toYear) {\n endMonth = newDate(toYear, 11, 31);\n }\n else if (!endMonth && hasYearDropdown) {\n endMonth = endOfYear(props.today ?? today());\n }\n return [\n startMonth ? startOfDay(startMonth) : startMonth,\n endMonth ? startOfDay(endMonth) : endMonth\n ];\n}\n//# sourceMappingURL=getNavMonth.js.map","/**\n * Return the next month the user can navigate to according to the given\n * options.\n *\n * Please note that the next month is not always the next calendar month:\n *\n * - If after the `calendarEndMonth` range, is `undefined`;\n * - If the navigation is paged , is the number of months displayed ahead.\n */\nexport function getNextMonth(firstDisplayedMonth, calendarEndMonth, options, dateLib) {\n if (options.disableNavigation) {\n return undefined;\n }\n const { pagedNavigation, numberOfMonths = 1 } = options;\n const { startOfMonth, addMonths, differenceInCalendarMonths } = dateLib;\n const offset = pagedNavigation ? numberOfMonths : 1;\n const month = startOfMonth(firstDisplayedMonth);\n if (!calendarEndMonth) {\n return addMonths(month, offset);\n }\n const monthsDiff = differenceInCalendarMonths(calendarEndMonth, firstDisplayedMonth);\n if (monthsDiff < numberOfMonths) {\n return undefined;\n }\n // Jump forward as the number of months when paged navigation\n return addMonths(month, offset);\n}\n//# sourceMappingURL=getNextMonth.js.map","/**\n * Return the next previous the user can navigate to, according to the given\n * options.\n *\n * Please note that the previous month is not always the previous calendar\n * month:\n *\n * - If before the `calendarStartMonth` date, is `undefined`;\n * - If the navigation is paged, is the number of months displayed before.\n */\nexport function getPreviousMonth(firstDisplayedMonth, calendarStartMonth, options, dateLib) {\n if (options.disableNavigation) {\n return undefined;\n }\n const { pagedNavigation, numberOfMonths } = options;\n const { startOfMonth, addMonths, differenceInCalendarMonths } = dateLib;\n const offset = pagedNavigation ? (numberOfMonths ?? 1) : 1;\n const month = startOfMonth(firstDisplayedMonth);\n if (!calendarStartMonth) {\n return addMonths(month, -offset);\n }\n const monthsDiff = differenceInCalendarMonths(month, calendarStartMonth);\n if (monthsDiff <= 0) {\n return undefined;\n }\n return addMonths(month, -offset);\n}\n//# sourceMappingURL=getPreviousMonth.js.map","/** Returns an array of calendar weeks from an array of calendar months. */\nexport function getWeeks(months) {\n const initialWeeks = [];\n return months.reduce((weeks, month) => {\n return [...weeks, ...month.weeks];\n }, initialWeeks);\n}\n//# sourceMappingURL=getWeeks.js.map","import { useState } from \"react\";\n/**\n * A custom hook for managing both controlled and uncontrolled component states.\n *\n * @example\n * // Uncontrolled usage\n * const [value, setValue] = useControlledValue(0, undefined);\n *\n * // Controlled usage\n * const [value, setValue] = useControlledValue(0, props.value);\n *\n * @template T - The type of the value.\n * @param {T} defaultValue - The initial value for the uncontrolled state.\n * @param {T | undefined} controlledValue - The value for the controlled state.\n * If undefined, the component will use the uncontrolled state.\n * @returns {[T, DispatchStateAction<T>]} - Returns a tuple where the first\n * element is the current value (either controlled or uncontrolled) and the\n * second element is a setter function to update the value.\n */\nexport function useControlledValue(defaultValue, controlledValue) {\n const [uncontrolledValue, setValue] = useState(defaultValue);\n const value = controlledValue === undefined ? uncontrolledValue : controlledValue;\n return [value, setValue];\n}\n//# sourceMappingURL=useControlledValue.js.map","import { useEffect } from \"react\";\nimport { getDates } from \"./helpers/getDates.js\";\nimport { getDays } from \"./helpers/getDays.js\";\nimport { getDisplayMonths } from \"./helpers/getDisplayMonths.js\";\nimport { getInitialMonth } from \"./helpers/getInitialMonth.js\";\nimport { getMonths } from \"./helpers/getMonths.js\";\nimport { getNavMonths } from \"./helpers/getNavMonth.js\";\nimport { getNextMonth } from \"./helpers/getNextMonth.js\";\nimport { getPreviousMonth } from \"./helpers/getPreviousMonth.js\";\nimport { getWeeks } from \"./helpers/getWeeks.js\";\nimport { useControlledValue } from \"./helpers/useControlledValue.js\";\n/** @private */\nexport function useCalendar(props, dateLib) {\n const [navStart, navEnd] = getNavMonths(props, dateLib);\n const { startOfMonth, endOfMonth } = dateLib;\n const initialMonth = getInitialMonth(props, dateLib);\n const [firstMonth, setFirstMonth] = useControlledValue(initialMonth, \n // initialMonth is always computed from props.month if provided\n props.month ? initialMonth : undefined);\n useEffect(() => {\n const newInitialMonth = getInitialMonth(props, dateLib);\n setFirstMonth(newInitialMonth);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.timeZone]);\n /** The months displayed in the calendar. */\n const displayMonths = getDisplayMonths(firstMonth, navEnd, props, dateLib);\n /** The dates displayed in the calendar. */\n const dates = getDates(displayMonths, props.endMonth ? endOfMonth(props.endMonth) : undefined, props, dateLib);\n /** The Months displayed in the calendar. */\n const months = getMonths(displayMonths, dates, props, dateLib);\n /** The Weeks displayed in the calendar. */\n const weeks = getWeeks(months);\n /** The Days displayed in the calendar. */\n const days = getDays(months);\n const previousMonth = getPreviousMonth(firstMonth, navStart, props, dateLib);\n const nextMonth = getNextMonth(firstMonth, navEnd, props, dateLib);\n const { disableNavigation, onMonthChange } = props;\n const isDayInCalendar = (day) => weeks.some((week) => week.days.some((d) => d.isEqualTo(day)));\n const goToMonth = (date) => {\n if (disableNavigation) {\n return;\n }\n let newMonth = startOfMonth(date);\n // if month is before start, use the first month instead\n if (navStart && newMonth < startOfMonth(navStart)) {\n newMonth = startOfMonth(navStart);\n }\n // if month is after endMonth, use the last month instead\n if (navEnd && newMonth > startOfMonth(navEnd)) {\n newMonth = startOfMonth(navEnd);\n }\n setFirstMonth(newMonth);\n onMonthChange?.(newMonth);\n };\n const goToDay = (day) => {\n // is this check necessary?\n if (isDayInCalendar(day)) {\n return;\n }\n goToMonth(day.date);\n };\n const calendar = {\n months,\n weeks,\n days,\n navStart,\n navEnd,\n previousMonth,\n nextMonth,\n goToMonth,\n goToDay\n };\n return calendar;\n}\n//# sourceMappingURL=useCalendar.js.map","import { DayFlag } from \"../UI.js\";\nexport function calculateFocusTarget(days, getModifiers, isSelected, lastFocused) {\n let focusTarget;\n let index = 0;\n let found = false;\n while (index < days.length && !found) {\n const day = days[index];\n const modifiers = getModifiers(day);\n if (!modifiers[DayFlag.disabled] &&\n !modifiers[DayFlag.hidden] &&\n !modifiers[DayFlag.outside]) {\n if (modifiers[DayFlag.focused]) {\n focusTarget = day;\n found = true;\n }\n else if (lastFocused?.isEqualTo(day)) {\n focusTarget = day;\n found = true;\n }\n else if (isSelected(day.date)) {\n focusTarget = day;\n found = true;\n }\n else if (modifiers[DayFlag.today]) {\n focusTarget = day;\n found = true;\n }\n }\n index++;\n }\n if (!focusTarget) {\n // return the first day that is focusable\n focusTarget = days.find((day) => {\n const m = getModifiers(day);\n return !m[DayFlag.disabled] && !m[DayFlag.hidden] && !m[DayFlag.outside];\n });\n }\n return focusTarget;\n}\n//# sourceMappingURL=calculateFocusTarget.js.map","import { defaultDateLib } from \"../classes/index.js\";\n/**\n * Determines whether a given date is inside a specified date range.\n *\n * @since 9.0.0\n * @group Utilities\n */\nexport function rangeIncludesDate(range, date, \n/** If `true`, the ends of the range are excluded. */\nexcludeEnds = false, dateLib = defaultDateLib) {\n let { from, to } = range;\n const { differenceInCalendarDays, isSameDay } = dateLib;\n if (from && to) {\n const isRangeInverted = differenceInCalendarDays(to, from) < 0;\n if (isRangeInverted) {\n [from, to] = [to, from];\n }\n const isInRange = differenceInCalendarDays(date, from) >= (excludeEnds ? 1 : 0) &&\n differenceInCalendarDays(to, date) >= (excludeEnds ? 1 : 0);\n return isInRange;\n }\n if (!excludeEnds && to) {\n return isSameDay(to, date);\n }\n if (!excludeEnds && from) {\n return isSameDay(from, date);\n }\n return false;\n}\n/**\n * @private\n * @deprecated Use {@link rangeIncludesDate} instead.\n */\nexport const isDateInRange = (range, date) => rangeIncludesDate(range, date, false, defaultDateLib);\n//# sourceMappingURL=rangeIncludesDate.js.map","/**\n * Returns true if `matcher` is of type {@link DateInterval}.\n *\n * @group Utilities\n */\nexport function isDateInterval(matcher) {\n return Boolean(matcher &&\n typeof matcher === \"object\" &&\n \"before\" in matcher &&\n \"after\" in matcher);\n}\n/**\n * Returns true if `value` is a {@link DateRange} type.\n *\n * @group Utilities\n */\nexport function isDateRange(value) {\n return Boolean(value && typeof value === \"object\" && \"from\" in value);\n}\n/**\n * Returns true if `value` is of type {@link DateAfter}.\n *\n * @group Utilities\n */\nexport function isDateAfterType(value) {\n return Boolean(value && typeof value === \"object\" && \"after\" in value);\n}\n/**\n * Returns true if `value` is of type {@link DateBefore}.\n *\n * @group Utilities\n */\nexport function isDateBeforeType(value) {\n return Boolean(value && typeof value === \"object\" && \"before\" in value);\n}\n/**\n * Returns true if `value` is a {@link DayOfWeek} type.\n *\n * @group Utilities\n */\nexport function isDayOfWeekType(value) {\n return Boolean(value && typeof value === \"object\" && \"dayOfWeek\" in value);\n}\n/**\n * Returns true if `value` is an array of valid dates.\n *\n * @private\n */\nexport function isDatesArray(value, dateLib) {\n return Array.isArray(value) && value.every(dateLib.isDate);\n}\n//# sourceMappingURL=typeguards.js.map","import { defaultDateLib } from \"../classes/DateLib.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDatesArray, isDayOfWeekType } from \"./typeguards.js\";\n/**\n * Returns whether a day matches against at least one of the given\n * {@link Matcher}.\n *\n * ```tsx\n * const date = new Date(2022, 5, 19);\n * const matcher1: DateRange = {\n * from: new Date(2021, 12, 21),\n * to: new Date(2021, 12, 30)\n * };\n * const matcher2: DateRange = {\n * from: new Date(2022, 5, 1),\n * to: new Date(2022, 5, 23)\n * };\n * dateMatchModifiers(date, [matcher1, matcher2]); // true, since day is in the matcher1 range.\n * ```\n *\n * @group Utilities\n */\nexport function dateMatchModifiers(date, matchers, dateLib = defaultDateLib) {\n const matchersArr = !Array.isArray(matchers) ? [matchers] : matchers;\n const { isSameDay, differenceInCalendarDays, isAfter } = dateLib;\n return matchersArr.some((matcher) => {\n if (typeof matcher === \"boolean\") {\n return matcher;\n }\n if (dateLib.isDate(matcher)) {\n return isSameDay(date, matcher);\n }\n if (isDatesArray(matcher, dateLib)) {\n return matcher.includes(date);\n }\n if (isDateRange(matcher)) {\n return rangeIncludesDate(matcher, date, false, dateLib);\n }\n if (isDayOfWeekType(matcher)) {\n if (!Array.isArray(matcher.dayOfWeek)) {\n return matcher.dayOfWeek === date.getDay();\n }\n return matcher.dayOfWeek.includes(date.getDay());\n }\n if (isDateInterval(matcher)) {\n const diffBefore = differenceInCalendarDays(matcher.before, date);\n const diffAfter = differenceInCalendarDays(matcher.after, date);\n const isDayBefore = diffBefore > 0;\n const isDayAfter = diffAfter < 0;\n const isClosedInterval = isAfter(matcher.before, matcher.after);\n if (isClosedInterval) {\n return isDayAfter && isDayBefore;\n }\n else {\n return isDayBefore || isDayAfter;\n }\n }\n if (isDateAfterType(matcher)) {\n return differenceInCalendarDays(date, matcher.after) > 0;\n }\n if (isDateBeforeType(matcher)) {\n return differenceInCalendarDays(matcher.before, date) > 0;\n }\n if (typeof matcher === \"function\") {\n return matcher(date);\n }\n return false;\n });\n}\n/**\n * @private\n * @deprecated Use {@link dateMatchModifiers} instead.\n */\nexport const isMatch = dateMatchModifiers;\n//# sourceMappingURL=dateMatchModifiers.js.map","/** Return the next date that should be focused. */\nexport function getFocusableDate(moveBy, moveDir, refDate, navStart, navEnd, props, dateLib) {\n const { ISOWeek, broadcastCalendar } = props;\n const { addDays, addMonths, addWeeks, addYears, endOfBroadcastWeek, endOfISOWeek, endOfWeek, max, min, startOfBroadcastWeek, startOfISOWeek, startOfWeek } = dateLib;\n const moveFns = {\n day: addDays,\n week: addWeeks,\n month: addMonths,\n year: addYears,\n startOfWeek: (date) => broadcastCalendar\n ? startOfBroadcastWeek(date, dateLib)\n : ISOWeek\n ? startOfISOWeek(date)\n : startOfWeek(date),\n endOfWeek: (date) => broadcastCalendar\n ? endOfBroadcastWeek(date, dateLib)\n : ISOWeek\n ? endOfISOWeek(date)\n : endOfWeek(date)\n };\n let focusableDate = moveFns[moveBy](refDate, moveDir === \"after\" ? 1 : -1);\n if (moveDir === \"before\" && navStart) {\n focusableDate = max([navStart, focusableDate]);\n }\n else if (moveDir === \"after\" && navEnd) {\n focusableDate = min([navEnd, focusableDate]);\n }\n return focusableDate;\n}\n//# sourceMappingURL=getFocusableDate.js.map","import { CalendarDay } from \"../classes/index.js\";\nimport { dateMatchModifiers } from \"../utils/dateMatchModifiers.js\";\nimport { getFocusableDate } from \"./getFocusableDate.js\";\nexport function getNextFocus(moveBy, moveDir, \n/** The date that is currently focused. */\nrefDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt = 0) {\n if (attempt > 365) {\n // Limit the recursion to 365 attempts\n return undefined;\n }\n const focusableDate = getFocusableDate(moveBy, moveDir, refDay.date, // should be refDay? or refDay.date?\n calendarStartMonth, calendarEndMonth, props, dateLib);\n const isDisabled = Boolean(props.disabled && dateMatchModifiers(focusableDate, props.disabled, dateLib));\n const isHidden = Boolean(props.hidden && dateMatchModifiers(focusableDate, props.hidden, dateLib));\n const targetMonth = focusableDate;\n const focusDay = new CalendarDay(focusableDate, targetMonth, dateLib);\n if (!isDisabled && !isHidden) {\n return focusDay;\n }\n // Recursively attempt to find the next focusable date\n return getNextFocus(moveBy, moveDir, focusDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt + 1);\n}\n//# sourceMappingURL=getNextFocus.js.map","import { useState } from \"react\";\nimport { calculateFocusTarget } from \"./helpers/calculateFocusTarget.js\";\nimport { getNextFocus } from \"./helpers/getNextFocus.js\";\n/** @private */\nexport function useFocus(props, calendar, getModifiers, isSelected, dateLib) {\n const { autoFocus } = props;\n const [lastFocused, setLastFocused] = useState();\n const focusTarget = calculateFocusTarget(calendar.days, getModifiers, isSelected || (() => false), lastFocused);\n const [focusedDay, setFocused] = useState(autoFocus ? focusTarget : undefined);\n const blur = () => {\n setLastFocused(focusedDay);\n setFocused(undefined);\n };\n const moveFocus = (moveBy, moveDir) => {\n if (!focusedDay)\n return;\n const nextFocus = getNextFocus(moveBy, moveDir, focusedDay, calendar.navStart, calendar.navEnd, props, dateLib);\n if (!nextFocus)\n return;\n calendar.goToDay(nextFocus);\n setFocused(nextFocus);\n };\n const isFocusTarget = (day) => {\n return Boolean(focusTarget?.isEqualTo(day));\n };\n const useFocus = {\n isFocusTarget,\n setFocused,\n focused: focusedDay,\n blur,\n moveFocus\n };\n return useFocus;\n}\n//# sourceMappingURL=useFocus.js.map","import { DayFlag } from \"./UI.js\";\nimport { dateMatchModifiers } from \"./utils/dateMatchModifiers.js\";\n/**\n * Return a function to get the modifiers for a given day.\n *\n * NOTE: this is not an hook, but a factory for `getModifiers`.\n *\n * @private\n */\nexport function useGetModifiers(days, props, dateLib) {\n const { disabled, hidden, modifiers, showOutsideDays, broadcastCalendar, today } = props;\n const { isSameDay, isSameMonth, startOfMonth, isBefore, endOfMonth, isAfter } = dateLib;\n const startMonth = props.startMonth && startOfMonth(props.startMonth);\n const endMonth = props.endMonth && endOfMonth(props.endMonth);\n const internalModifiersMap = {\n [DayFlag.focused]: [],\n [DayFlag.outside]: [],\n [DayFlag.disabled]: [],\n [DayFlag.hidden]: [],\n [DayFlag.today]: []\n };\n const customModifiersMap = {};\n for (const day of days) {\n const { date, displayMonth } = day;\n const isOutside = Boolean(displayMonth && !isSameMonth(date, displayMonth));\n const isBeforeStartMonth = Boolean(startMonth && isBefore(date, startMonth));\n const isAfterEndMonth = Boolean(endMonth && isAfter(date, endMonth));\n const isDisabled = Boolean(disabled && dateMatchModifiers(date, disabled, dateLib));\n const isHidden = Boolean(hidden && dateMatchModifiers(date, hidden, dateLib)) ||\n isBeforeStartMonth ||\n isAfterEndMonth ||\n // Broadcast calendar will show outside days as default\n (!broadcastCalendar && !showOutsideDays && isOutside) ||\n (broadcastCalendar && showOutsideDays === false && isOutside);\n const isToday = isSameDay(date, today ?? dateLib.today());\n if (isOutside)\n internalModifiersMap.outside.push(day);\n if (isDisabled)\n internalModifiersMap.disabled.push(day);\n if (isHidden)\n internalModifiersMap.hidden.push(day);\n if (isToday)\n internalModifiersMap.today.push(day);\n // Add custom modifiers\n if (modifiers) {\n Object.keys(modifiers).forEach((name) => {\n const modifierValue = modifiers?.[name];\n const isMatch = modifierValue\n ? dateMatchModifiers(date, modifierValue, dateLib)\n : false;\n if (!isMatch)\n return;\n if (customModifiersMap[name]) {\n customModifiersMap[name].push(day);\n }\n else {\n customModifiersMap[name] = [day];\n }\n });\n }\n }\n return (day) => {\n // Initialize all the modifiers to false\n const dayFlags = {\n [DayFlag.focused]: false,\n [DayFlag.disabled]: false,\n [DayFlag.hidden]: false,\n [DayFlag.outside]: false,\n [DayFlag.today]: false\n };\n const customModifiers = {};\n // Find the modifiers for the given day\n for (const name in internalModifiersMap) {\n const days = internalModifiersMap[name];\n dayFlags[name] = days.some((d) => d === day);\n }\n for (const name in customModifiersMap) {\n customModifiers[name] = customModifiersMap[name].some((d) => d === day);\n }\n return {\n ...dayFlags,\n // custom modifiers should override all the previous ones\n ...customModifiers\n };\n };\n}\n//# sourceMappingURL=useGetModifiers.js.map","import { useControlledValue } from \"../helpers/useControlledValue.js\";\nexport function useMulti(props, dateLib) {\n const { selected: initiallySelected, required, onSelect } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const { isSameDay } = dateLib;\n const isSelected = (date) => {\n return selected?.some((d) => isSameDay(d, date)) ?? false;\n };\n const { min, max } = props;\n const select = (triggerDate, modifiers, e) => {\n let newDates = [...(selected ?? [])];\n if (isSelected(triggerDate)) {\n if (selected?.length === min) {\n // Min value reached, do nothing\n return;\n }\n if (required && selected?.length === 1) {\n // Required value already selected do nothing\n return;\n }\n newDates = selected?.filter((d) => !isSameDay(d, triggerDate));\n }\n else {\n if (selected?.length === max) {\n // Max value reached, reset the selection to date\n newDates = [triggerDate];\n }\n else {\n // Add the date to the selection\n newDates = [...newDates, triggerDate];\n }\n }\n if (!onSelect) {\n setSelected(newDates);\n }\n onSelect?.(newDates, triggerDate, modifiers, e);\n return newDates;\n };\n return {\n selected,\n select,\n isSelected\n };\n}\n//# sourceMappingURL=useMulti.js.map","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Add a day to an existing range.\n *\n * The returned range takes in account the `undefined` values and if the added\n * day is already present in the range.\n *\n * @group Utilities\n */\nexport function addToRange(\n/** The date to add to the range. */\ndate, \n/** The range where to add `date`. */\ninitialRange, min = 0, max = 0, required = false, \n/** @ignore */\ndateLib = defaultDateLib) {\n const { from, to } = initialRange || {};\n const { isSameDay, isAfter, isBefore } = dateLib;\n let range;\n if (!from && !to) {\n // the range is empty, add the date\n range = { from: date, to: min > 0 ? undefined : date };\n }\n else if (from && !to) {\n // adding date to an incomplete range\n if (isSameDay(from, date)) {\n // adding a date equal to the start of the range\n if (required) {\n range = { from, to: undefined };\n }\n else {\n range = undefined;\n }\n }\n else if (isBefore(date, from)) {\n // adding a date before the start of the range\n range = { from: date, to: from };\n }\n else {\n // adding a date after the start of the range\n range = { from, to: date };\n }\n }\n else if (from && to) {\n // adding date to a complete range\n if (isSameDay(from, date) && isSameDay(to, date)) {\n // adding a date that is equal to both start and end of the range\n if (required) {\n range = { from, to };\n }\n else {\n range = undefined;\n }\n }\n else if (isSameDay(from, date)) {\n // adding a date equal to the the start of the range\n range = { from, to: min > 0 ? undefined : date };\n }\n else if (isSameDay(to, date)) {\n // adding a dare equal to the end of the range\n range = { from: date, to: min > 0 ? undefined : date };\n }\n else if (isBefore(date, from)) {\n // adding a date before the start of the range\n range = { from: date, to: to };\n }\n else if (isAfter(date, from)) {\n // adding a date after the start of the range\n range = { from, to: date };\n }\n else if (isAfter(date, to)) {\n // adding a date after the end of the range\n range = { from, to: date };\n }\n else {\n throw new Error(\"Invalid range\");\n }\n }\n // check for min / max\n if (range?.from && range?.to) {\n const diff = dateLib.differenceInCalendarDays(range.to, range.from);\n if (max > 0 && diff > max) {\n range = { from: date, to: undefined };\n }\n else if (min > 1 && diff < min) {\n range = { from: date, to: undefined };\n }\n }\n return range;\n}\n//# sourceMappingURL=addToRange.js.map","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Returns whether a date range contains one or more days of the week.\n *\n * ```tsx\n * const range: DateRange = {\n * from: new Date(2024, 8, 1), // Sunday\n * to: new Date(2024, 8, 6) // Thursday\n * };\n * rangeContainsDayOfWeek(date, 1); // true: contains range contains Monday\n * ```\n *\n * @since 9.2.2\n * @group Utilities\n */\nexport function rangeContainsDayOfWeek(range, dayOfWeek, dateLib = defaultDateLib) {\n const dayOfWeekArr = !Array.isArray(dayOfWeek) ? [dayOfWeek] : dayOfWeek;\n let date = range.from;\n const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);\n // iterate at maximum one week or the total days if the range is shorter than one week\n const totalDaysLimit = Math.min(totalDays, 6);\n for (let i = 0; i <= totalDaysLimit; i++) {\n if (dayOfWeekArr.includes(date.getDay())) {\n return true;\n }\n date = dateLib.addDays(date, 1);\n }\n return false;\n}\n//# sourceMappingURL=rangeContainsDayOfWeek.js.map","import { defaultDateLib } from \"../classes/index.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\n/**\n * Determines whether a given range overlaps with another range.\n *\n * @since 9.2.2\n * @group Utilities\n */\nexport function rangeOverlaps(rangeLeft, rangeRight, dateLib = defaultDateLib) {\n return (rangeIncludesDate(rangeLeft, rangeRight.from, false, dateLib) ||\n rangeIncludesDate(rangeLeft, rangeRight.to, false, dateLib) ||\n rangeIncludesDate(rangeRight, rangeLeft.from, false, dateLib) ||\n rangeIncludesDate(rangeRight, rangeLeft.to, false, dateLib));\n}\n//# sourceMappingURL=rangeOverlaps.js.map","import { defaultDateLib } from \"../classes/DateLib.js\";\nimport { dateMatchModifiers } from \"./dateMatchModifiers.js\";\nimport { rangeContainsDayOfWeek } from \"./rangeContainsDayOfWeek.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\nimport { rangeOverlaps } from \"./rangeOverlaps.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDatesArray, isDayOfWeekType } from \"./typeguards.js\";\n/**\n * Returns whether a range contains dates that match the given modifiers.\n *\n * ```tsx\n * const range: DateRange = {\n * from: new Date(2021, 12, 21),\n * to: new Date(2021, 12, 30)\n * };\n * const matcher1: Date = new Date(2021, 12, 21);\n * const matcher2: DateRange = {\n * from: new Date(2022, 5, 1),\n * to: new Date(2022, 5, 23)\n * };\n * rangeContainsModifiers(range, [matcher1, matcher2]); // true, since matcher1 is in the date.\n * ```\n *\n * @since 9.2.2\n * @group Utilities\n */\nexport function rangeContainsModifiers(range, modifiers, dateLib = defaultDateLib) {\n const matchers = Array.isArray(modifiers) ? modifiers : [modifiers];\n // Defer function matchers evaluation as they are the least performant.\n const nonFunctionMatchers = matchers.filter((matcher) => typeof matcher !== \"function\");\n const nonFunctionMatchersResult = nonFunctionMatchers.some((matcher) => {\n if (typeof matcher === \"boolean\")\n return matcher;\n if (dateLib.isDate(matcher)) {\n return rangeIncludesDate(range, matcher, false, dateLib);\n }\n if (isDatesArray(matcher, dateLib)) {\n return matcher.some((date) => rangeIncludesDate(range, date, false, dateLib));\n }\n if (isDateRange(matcher)) {\n if (matcher.from && matcher.to) {\n return rangeOverlaps(range, { from: matcher.from, to: matcher.to }, dateLib);\n }\n return false;\n }\n if (isDayOfWeekType(matcher)) {\n return rangeContainsDayOfWeek(range, matcher.dayOfWeek, dateLib);\n }\n if (isDateInterval(matcher)) {\n const isClosedInterval = dateLib.isAfter(matcher.before, matcher.after);\n if (isClosedInterval) {\n return rangeOverlaps(range, {\n from: dateLib.addDays(matcher.after, 1),\n to: dateLib.addDays(matcher.before, -1)\n }, dateLib);\n }\n return (dateMatchModifiers(range.from, matcher, dateLib) ||\n dateMatchModifiers(range.to, matcher, dateLib));\n }\n if (isDateAfterType(matcher) || isDateBeforeType(matcher)) {\n return (dateMatchModifiers(range.from, matcher, dateLib) ||\n dateMatchModifiers(range.to, matcher, dateLib));\n }\n return false;\n });\n if (nonFunctionMatchersResult) {\n return true;\n }\n const functionMatchers = matchers.filter((matcher) => typeof matcher === \"function\");\n if (functionMatchers.length) {\n let date = range.from;\n const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);\n for (let i = 0; i <= totalDays; i++) {\n if (functionMatchers.some((matcher) => matcher(date))) {\n return true;\n }\n date = dateLib.addDays(date, 1);\n }\n }\n return false;\n}\n//# sourceMappingURL=rangeContainsModifiers.js.map","import { useControlledValue } from \"../helpers/useControlledValue.js\";\nimport { addToRange, rangeContainsModifiers } from \"../utils/index.js\";\nimport { rangeIncludesDate } from \"../utils/rangeIncludesDate.js\";\nexport function useRange(props, dateLib) {\n const { disabled, excludeDisabled, selected: initiallySelected, required, onSelect } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const isSelected = (date) => selected && rangeIncludesDate(selected, date, false, dateLib);\n const select = (triggerDate, modifiers, e) => {\n const { min, max } = props;\n const newRange = triggerDate\n ? addToRange(triggerDate, selected, min, max, required, dateLib)\n : undefined;\n if (excludeDisabled && disabled && newRange?.from && newRange.to) {\n if (rangeContainsModifiers({ from: newRange.from, to: newRange.to }, disabled, dateLib)) {\n // if a disabled days is found, the range is reset\n newRange.from = triggerDate;\n newRange.to = undefined;\n }\n }\n if (!onSelect) {\n setSelected(newRange);\n }\n onSelect?.(newRange, triggerDate, modifiers, e);\n return newRange;\n };\n return {\n selected,\n select,\n isSelected\n };\n}\n//# sourceMappingURL=useRange.js.map","import { useControlledValue } from \"../helpers/useControlledValue.js\";\nexport function useSingle(props, dateLib) {\n const { selected: initiallySelected, required, onSelect } = props;\n const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n const selected = !onSelect ? internallySelected : initiallySelected;\n const { isSameDay } = dateLib;\n const isSelected = (compareDate) => {\n return selected ? isSameDay(selected, compareDate) : false;\n };\n const select = (triggerDate, modifiers, e) => {\n let newDate = triggerDate;\n if (!required && selected && selected && isSameDay(triggerDate, selected)) {\n // If the date is the same, clear the selection.\n newDate = undefined;\n }\n if (!onSelect) {\n setSelected(newDate);\n }\n if (required) {\n onSelect?.(newDate, triggerDate, modifiers, e);\n }\n else {\n onSelect?.(newDate, triggerDate, modifiers, e);\n }\n return newDate;\n };\n return {\n selected,\n select,\n isSelected\n };\n}\n//# sourceMappingURL=useSingle.js.map","import { useMulti } from \"./selection/useMulti.js\";\nimport { useRange } from \"./selection/useRange.js\";\nimport { useSingle } from \"./selection/useSingle.js\";\nexport function useSelection(props, dateLib) {\n const single = useSingle(props, dateLib);\n const multi = useMulti(props, dateLib);\n const range = useRange(props, dateLib);\n switch (props.mode) {\n case \"single\":\n return single;\n case \"multiple\":\n return multi;\n case \"range\":\n return range;\n default:\n return undefined;\n }\n}\n//# sourceMappingURL=useSelection.js.map","import React, { useCallback, useMemo } from \"react\";\nimport { UI, DayFlag, SelectionState } from \"./UI.js\";\nimport { DateLib, defaultLocale } from \"./classes/DateLib.js\";\nimport { getClassNamesForModifiers } from \"./helpers/getClassNamesForModifiers.js\";\nimport { getComponents } from \"./helpers/getComponents.js\";\nimport { getDataAttributes } from \"./helpers/getDataAttributes.js\";\nimport { getDefaultClassNames } from \"./helpers/getDefaultClassNames.js\";\nimport { getFormatters } from \"./helpers/getFormatters.js\";\nimport { getMonthOptions } from \"./helpers/getMonthOptions.js\";\nimport { getStyleForModifiers } from \"./helpers/getStyleForModifiers.js\";\nimport { getWeekdays } from \"./helpers/getWeekdays.js\";\nimport { getYearOptions } from \"./helpers/getYearOptions.js\";\nimport * as defaultLabels from \"./labels/index.js\";\nimport { useCalendar } from \"./useCalendar.js\";\nimport { dayPickerContext } from \"./useDayPicker.js\";\nimport { useFocus } from \"./useFocus.js\";\nimport { useGetModifiers } from \"./useGetModifiers.js\";\nimport { useSelection } from \"./useSelection.js\";\nimport { rangeIncludesDate } from \"./utils/rangeIncludesDate.js\";\nimport { isDateRange } from \"./utils/typeguards.js\";\n/**\n * Render the date picker calendar.\n *\n * @group DayPicker\n * @see https://daypicker.dev\n */\nexport function DayPicker(props) {\n const { components, formatters, labels, dateLib, locale, classNames } = useMemo(() => {\n const locale = { ...defaultLocale, ...props.locale };\n const dateLib = new DateLib({\n locale,\n weekStartsOn: props.broadcastCalendar ? 1 : props.weekStartsOn,\n firstWeekContainsDate: props.firstWeekContainsDate,\n useAdditionalWeekYearTokens: props.useAdditionalWeekYearTokens,\n useAdditionalDayOfYearTokens: props.useAdditionalDayOfYearTokens,\n timeZone: props.timeZone,\n numerals: props.numerals\n }, props.dateLib);\n return {\n dateLib,\n components: getComponents(props.components),\n formatters: getFormatters(props.formatters),\n labels: { ...defaultLabels, ...props.labels },\n locale,\n classNames: { ...getDefaultClassNames(), ...props.classNames }\n };\n }, [\n props.locale,\n props.broadcastCalendar,\n props.weekStartsOn,\n props.firstWeekContainsDate,\n props.useAdditionalWeekYearTokens,\n props.useAdditionalDayOfYearTokens,\n props.timeZone,\n props.numerals,\n props.dateLib,\n props.components,\n props.formatters,\n props.labels,\n props.classNames\n ]);\n const { captionLayout, mode, onDayBlur, onDayClick, onDayFocus, onDayKeyDown, onDayMouseEnter, onDayMouseLeave, onNextClick, onPrevClick, showWeekNumber, styles } = props;\n const { formatCaption, formatDay, formatMonthDropdown, formatWeekNumber, formatWeekNumberHeader, formatWeekdayName, formatYearDropdown } = formatters;\n const calendar = useCalendar(props, dateLib);\n const { days, months, navStart, navEnd, previousMonth, nextMonth, goToMonth } = calendar;\n const getModifiers = useGetModifiers(days, props, dateLib);\n const { isSelected, select, selected: selectedValue } = useSelection(props, dateLib) ?? {};\n const { blur, focused, isFocusTarget, moveFocus, setFocused } = useFocus(props, calendar, getModifiers, isSelected ?? (() => false), dateLib);\n const { labelDayButton, labelGridcell, labelGrid, labelMonthDropdown, labelNav, labelWeekday, labelWeekNumber, labelWeekNumberHeader, labelYearDropdown } = labels;\n const weekdays = useMemo(() => getWeekdays(dateLib, props.ISOWeek), [dateLib, props.ISOWeek]);\n const isInteractive = mode !== undefined || onDayClick !== undefined;\n const handlePreviousClick = useCallback(() => {\n if (!previousMonth)\n return;\n goToMonth(previousMonth);\n onPrevClick?.(previousMonth);\n }, [previousMonth, goToMonth, onPrevClick]);\n const handleNextClick = useCallback(() => {\n if (!nextMonth)\n return;\n goToMonth(nextMonth);\n onNextClick?.(nextMonth);\n }, [goToMonth, nextMonth, onNextClick]);\n const handleDayClick = useCallback((day, m) => (e) => {\n e.preventDefault();\n e.stopPropagation();\n setFocused(day);\n select?.(day.date, m, e);\n onDayClick?.(day.date, m, e);\n }, [select, onDayClick, setFocused]);\n const handleDayFocus = useCallback((day, m) => (e) => {\n setFocused(day);\n onDayFocus?.(day.date, m, e);\n }, [onDayFocus, setFocused]);\n const handleDayBlur = useCallback((day, m) => (e) => {\n blur();\n onDayBlur?.(day.date, m, e);\n }, [blur, onDayBlur]);\n const handleDayKeyDown = useCallback((day, modifiers) => (e) => {\n const keyMap = {\n ArrowLeft: [\"day\", props.dir === \"rtl\" ? \"after\" : \"before\"],\n ArrowRight: [\"day\", props.dir === \"rtl\" ? \"before\" : \"after\"],\n ArrowDown: [\"week\", \"after\"],\n ArrowUp: [\"week\", \"before\"],\n PageUp: [e.shiftKey ? \"year\" : \"month\", \"before\"],\n PageDown: [e.shiftKey ? \"year\" : \"month\", \"after\"],\n Home: [\"startOfWeek\", \"before\"],\n End: [\"endOfWeek\", \"after\"]\n };\n if (keyMap[e.key]) {\n e.preventDefault();\n e.stopPropagation();\n const [moveBy, moveDir] = keyMap[e.key];\n moveFocus(moveBy, moveDir);\n }\n onDayKeyDown?.(day.date, modifiers, e);\n }, [moveFocus, onDayKeyDown, props.dir]);\n const handleDayMouseEnter = useCallback((day, modifiers) => (e) => {\n onDayMouseEnter?.(day.date, modifiers, e);\n }, [onDayMouseEnter]);\n const handleDayMouseLeave = useCallback((day, modifiers) => (e) => {\n onDayMouseLeave?.(day.date, modifiers, e);\n }, [onDayMouseLeave]);\n const handleMonthChange = useCallback((date) => (e) => {\n const selectedMonth = Number(e.target.value);\n const month = dateLib.setMonth(dateLib.startOfMonth(date), selectedMonth);\n goToMonth(month);\n }, [dateLib, goToMonth]);\n const handleYearChange = useCallback((date) => (e) => {\n const selectedYear = Number(e.target.value);\n const month = dateLib.setYear(dateLib.startOfMonth(date), selectedYear);\n goToMonth(month);\n }, [dateLib, goToMonth]);\n const { className, style } = useMemo(() => ({\n className: [classNames[UI.Root], props.className]\n .filter(Boolean)\n .join(\" \"),\n style: { ...styles?.[UI.Root], ...props.style }\n }), [classNames, props.className, props.style, styles]);\n const dataAttributes = getDataAttributes(props);\n const contextValue = {\n dayPickerProps: props,\n selected: selectedValue,\n select: select,\n isSelected,\n months,\n nextMonth,\n previousMonth,\n goToMonth,\n getModifiers,\n components,\n classNames,\n styles,\n labels,\n formatters\n };\n return (React.createElement(dayPickerContext.Provider, { value: contextValue },\n React.createElement(components.Root, { className: className, style: style, dir: props.dir, id: props.id, lang: props.lang, nonce: props.nonce, title: props.title, role: props.role, \"aria-label\": props[\"aria-label\"], ...dataAttributes },\n React.createElement(components.Months, { className: classNames[UI.Months], style: styles?.[UI.Months] },\n !props.hideNavigation && (React.createElement(components.Nav, { className: classNames[UI.Nav], style: styles?.[UI.Nav], \"aria-label\": labelNav(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth: previousMonth, nextMonth: nextMonth })),\n months.map((calendarMonth, displayIndex) => {\n const dropdownMonths = getMonthOptions(calendarMonth.date, navStart, navEnd, formatters, dateLib);\n const dropdownYears = getYearOptions(navStart, navEnd, formatters, dateLib);\n return (React.createElement(components.Month, { className: classNames[UI.Month], style: styles?.[UI.Month], key: displayIndex, displayIndex: displayIndex, calendarMonth: calendarMonth },\n React.createElement(components.MonthCaption, { className: classNames[UI.MonthCaption], style: styles?.[UI.MonthCaption], calendarMonth: calendarMonth, displayIndex: displayIndex }, captionLayout?.startsWith(\"dropdown\") ? (React.createElement(components.DropdownNav, { className: classNames[UI.Dropdowns], style: styles?.[UI.Dropdowns] },\n captionLayout === \"dropdown\" ||\n captionLayout === \"dropdown-months\" ? (React.createElement(components.MonthsDropdown, { className: classNames[UI.MonthsDropdown], \"aria-label\": labelMonthDropdown(), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date), options: dropdownMonths, style: styles?.[UI.Dropdown], value: dateLib.getMonth(calendarMonth.date) })) : (React.createElement(\"span\", { role: \"status\", \"aria-live\": \"polite\" }, formatMonthDropdown(calendarMonth.date, dateLib))),\n captionLayout === \"dropdown\" ||\n captionLayout === \"dropdown-years\" ? (React.createElement(components.YearsDropdown, { className: classNames[UI.YearsDropdown], \"aria-label\": labelYearDropdown(dateLib.options), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date), options: dropdownYears, style: styles?.[UI.Dropdown], value: dateLib.getYear(calendarMonth.date) })) : (React.createElement(\"span\", { role: \"status\", \"aria-live\": \"polite\" }, formatYearDropdown(calendarMonth.date, dateLib))))) : (React.createElement(components.CaptionLabel, { className: classNames[UI.CaptionLabel], role: \"status\", \"aria-live\": \"polite\" }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))),\n React.createElement(components.MonthGrid, { role: \"grid\", \"aria-multiselectable\": mode === \"multiple\" || mode === \"range\", \"aria-label\": labelGrid(calendarMonth.date, dateLib.options, dateLib) ||\n undefined, className: classNames[UI.MonthGrid], style: styles?.[UI.MonthGrid] },\n !props.hideWeekdays && (React.createElement(components.Weekdays, { className: classNames[UI.Weekdays], style: styles?.[UI.Weekdays] },\n showWeekNumber && (React.createElement(components.WeekNumberHeader, { \"aria-label\": labelWeekNumberHeader(dateLib.options), className: classNames[UI.WeekNumberHeader], style: styles?.[UI.WeekNumberHeader], scope: \"col\" }, formatWeekNumberHeader())),\n weekdays.map((weekday, i) => (React.createElement(components.Weekday, { \"aria-label\": labelWeekday(weekday, dateLib.options, dateLib), className: classNames[UI.Weekday], key: i, style: styles?.[UI.Weekday], scope: \"col\" }, formatWeekdayName(weekday, dateLib.options, dateLib)))))),\n React.createElement(components.Weeks, { className: classNames[UI.Weeks], style: styles?.[UI.Weeks] }, calendarMonth.weeks.map((week, weekIndex) => {\n return (React.createElement(components.Week, { className: classNames[UI.Week], key: week.weekNumber, style: styles?.[UI.Week], week: week },\n showWeekNumber && (React.createElement(components.WeekNumber, { week: week, style: styles?.[UI.WeekNumber], \"aria-label\": labelWeekNumber(week.weekNumber, {\n locale\n }), className: classNames[UI.WeekNumber], scope: \"row\", role: \"rowheader\" }, formatWeekNumber(week.weekNumber))),\n week.days.map((day) => {\n const { date } = day;\n const modifiers = getModifiers(day);\n modifiers[DayFlag.focused] =\n !modifiers.hidden &&\n Boolean(focused?.isEqualTo(day));\n modifiers[SelectionState.selected] =\n !modifiers.disabled &&\n (isSelected?.(date) || modifiers.selected);\n if (isDateRange(selectedValue)) {\n // add range modifiers\n const { from, to } = selectedValue;\n modifiers[SelectionState.range_start] = Boolean(from && to && dateLib.isSameDay(date, from));\n modifiers[SelectionState.range_end] = Boolean(from && to && dateLib.isSameDay(date, to));\n modifiers[SelectionState.range_middle] =\n rangeIncludesDate(selectedValue, date, true, dateLib);\n }\n const style = getStyleForModifiers(modifiers, styles, props.modifiersStyles);\n const className = getClassNamesForModifiers(modifiers, classNames, props.modifiersClassNames);\n const ariaLabel = !isInteractive && !modifiers.hidden\n ? labelGridcell(date, modifiers, dateLib.options, dateLib)\n : undefined;\n return (React.createElement(components.Day, { key: `${dateLib.format(date, \"yyyy-MM-dd\")}_${dateLib.format(day.displayMonth, \"yyyy-MM\")}`, day: day, modifiers: modifiers, className: className.join(\" \"), style: style, role: \"gridcell\", \"aria-selected\": modifiers.selected || undefined, \"aria-label\": ariaLabel, \"data-day\": dateLib.format(date, \"yyyy-MM-dd\"), \"data-month\": day.outside\n ? dateLib.format(date, \"yyyy-MM\")\n : undefined, \"data-selected\": modifiers.selected || undefined, \"data-disabled\": modifiers.disabled || undefined, \"data-hidden\": modifiers.hidden || undefined, \"data-outside\": day.outside || undefined, \"data-focused\": modifiers.focused || undefined, \"data-today\": modifiers.today || undefined }, !modifiers.hidden && isInteractive ? (React.createElement(components.DayButton, { className: classNames[UI.DayButton], style: styles?.[UI.DayButton], type: \"button\", day: day, modifiers: modifiers, disabled: modifiers.disabled || undefined, tabIndex: isFocusTarget(day) ? 0 : -1, \"aria-label\": labelDayButton(date, modifiers, dateLib.options, dateLib), onClick: handleDayClick(day, modifiers), onBlur: handleDayBlur(day, modifiers), onFocus: handleDayFocus(day, modifiers), onKeyDown: handleDayKeyDown(day, modifiers), onMouseEnter: handleDayMouseEnter(day, modifiers), onMouseLeave: handleDayMouseLeave(day, modifiers) }, formatDay(date, dateLib.options, dateLib))) : (!modifiers.hidden &&\n formatDay(day.date, dateLib.options, dateLib))));\n })));\n })))));\n })),\n props.footer && (React.createElement(components.Footer, { className: classNames[UI.Footer], style: styles?.[UI.Footer], role: \"status\", \"aria-live\": \"polite\" }, props.footer)))));\n}\n//# sourceMappingURL=DayPicker.js.map","import { CSSProperties } from 'react';\n\nimport { PopOverVariant } from '@helsenorge/designsystem-react/components/PopOver';\n\ntype HorizontalPosition = 'left' | 'right' | 'floating';\ntype BubblePosition = 'leftabove' | 'leftbelow' | 'rightabove' | 'rightbelow' | 'floatingabove' | 'floatingbelow';\n\n/** Bredde på hjelpeboble */\nconst BUBBLE_WIDTH_PX = 329;\n/** Hjelpeboblen skal holde avstand til venstre/høyre kant på vinduet */\nconst WINDOW_MARGIN_PX = 12;\n/** Vertikal avstand fra hjelpeboble til kontroller */\nconst BUBBLE_VERTICAL_OFFSET_PX = 26;\n/** Høyde/bredde på pil */\nconst ARROW_WIDTH_PX = 20;\n/** Avstand fra pil til hjelpeboble */\nconst ARROW_VERTICAL_OFFSET_PX = 9;\n/** Pilen skal holde avstand til venstre/høyre kant av hjelpeboblen */\nconst ARROW_HORIZONTAL_MARGIN_PX = 12;\n\n// @todo these functions are similar to the ones in utils in PopOver, should be moved to a shared location\n/**\n * Beregn om hjelpeboblen skal vises over eller under kontrolleren\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @param variant Ønsket plassering av hjelpeboblen (over/under/automatisk)\n * @returns Om hjelpeboblen skal vises over eller under\n */\nexport const getVerticalPosition = (\n controllerSize: DOMRect,\n bubbleSize: DOMRect,\n variant?: keyof typeof PopOverVariant\n): keyof typeof PopOverVariant => {\n if (variant !== PopOverVariant.positionautomatic && variant !== undefined) {\n return variant;\n }\n if (controllerSize.top > bubbleSize.height + BUBBLE_VERTICAL_OFFSET_PX) {\n return PopOverVariant.positionabove;\n } else {\n return PopOverVariant.positionbelow;\n }\n};\n\n/**\n * Finn horisontalt midtpunkt på kontrolleren i forhold til venstre kant av vinduet\n * @param controllerSize DOMRect for controlleren\n * @returns Horisontalt senter av controlleren i px\n */\nconst getControllerLeftEdgePx = (controllerSize: DOMRect): number => controllerSize.left + controllerSize.width / 4;\n\n/**\n * Finn horisontalt midtpunkt på kontrolleren i forhold til høyre kant av vinduet\n * @param controllerSize DOMRect for controlleren\n * @returns Horisontalt senter av controlleren i px\n */\nconst getControllerRightEdgePx = (controllerSize: DOMRect): number =>\n document.documentElement.clientWidth - controllerSize.right + controllerSize.width / 4;\n\n/**\n * Finn venstre kant av hjelpeboblen i forhold til kontrolleren\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns Venstre kant av hjelpeboblen i px\n */\n\n/**\n * Finn høyre kant av hjelpeboblen i forhold til kontrolleren\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns Høyre kant av hjelpeboblen i px\n */\nconst getBubbleRightPx = (controllerSize: DOMRect, bubbleSize: DOMRect): number => {\n return controllerSize.left + bubbleSize.width;\n};\n\n/**\n * Sjekk om venstre kant av hjelpeboblen er innenfor vinduet\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns true dersom venstre kant er innenfor vinduet\n */\nconst getBubbleLeftVisible = (controllerSize: DOMRect): boolean => {\n return controllerSize.left > WINDOW_MARGIN_PX;\n};\n\n/**\n * Sjekk om høyre kant av hjelpeboblen er innenfor vinduet\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns true dersom høyre kant er innenfor vinduet\n */\nconst getBubbleRightIsVisible = (controllerSize: DOMRect, bubbleSize: DOMRect): boolean => {\n const bubbleRightPx = getBubbleRightPx(controllerSize, bubbleSize);\n\n return bubbleRightPx < document.documentElement.clientWidth - WINDOW_MARGIN_PX;\n};\n\n/**\n * Finn riktig horisontal plassering til hjelpeboblen\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns left, right eller floating\n */\nconst getHorizontalPosition = (controllerSize: DOMRect, bubbleSize: DOMRect): HorizontalPosition => {\n if (!getBubbleRightIsVisible(controllerSize, bubbleSize)) {\n return 'right';\n }\n if (!getBubbleLeftVisible(controllerSize)) {\n return 'left';\n }\n\n return 'floating';\n};\n\n/**\n * Finn vertikal plassering av hjelpeboblen når den skal vises over\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns \"Top\" for hjelpeboblen i px\n */\nconst getBubbleAbovePx = (controllerSize: DOMRect, bubbleSize: DOMRect): number =>\n controllerSize.top - BUBBLE_VERTICAL_OFFSET_PX - bubbleSize.height;\n\n/**\n * Finn vertikal plassering av hjelpeboblen når den skal vises under\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns \"Top\" for hjelpeboblen i px\n */\nconst getBubbleBelowPx = (controllerSize: DOMRect): number => controllerSize.bottom + BUBBLE_VERTICAL_OFFSET_PX;\n\n/**\n * Finn maks bredde på hjelpeboblen i forhold til vinduet\n * @returns Bredde på hjelpeboblen i px\n */\nconst getBubbleWidth = (): number => document.documentElement.clientWidth - WINDOW_MARGIN_PX * 2;\n\n/**\n * Sjekk om hjelpeboblen har plass i vinduet\n * @returns true dersom det er plass til hjelpeboblen i vinduet\n */\nconst getBubbleFitsInWindow = (): boolean => {\n return document.documentElement.clientWidth > BUBBLE_WIDTH_PX + WINDOW_MARGIN_PX * 2;\n};\n\n/**\n * Finn vertikal plassering av pilen når den skal vises over\n * @param controllerSize DOMRect for controlleren\n * @returns \"Top\" for pilen i px\n */\nconst getArrowTopxPx = (controllerSize: DOMRect): number => controllerSize.top - BUBBLE_VERTICAL_OFFSET_PX - ARROW_VERTICAL_OFFSET_PX + 5;\n\n/**\n * Finn horisontal plassering av pilen i forhold til venstre kant av vinduet\n * @param controllerSize DOMRect for controlleren\n * @returns Venstre kant av pilen i px\n */\nconst getArrowLeftPx = (controllerSize: DOMRect): number => getControllerLeftEdgePx(controllerSize) - ARROW_WIDTH_PX / 2;\n\n/**\n * Finn horisontal plassering av pilen\n * @param controllerSize DOMRect for controlleren\n * @returns Venstre kant av pilen i px\n */\nconst getArrowRightPx = (controllerSize: DOMRect): number => getControllerRightEdgePx(controllerSize) - ARROW_WIDTH_PX / 2;\n\n/**\n * Finn riktig plassering av hjelpeboblen\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @param variant Ønsket plassering av hjelpeboblen (over/under)\n * @returns Beste mulige plassering av hjelpeboblen\n */\nconst getBubblePosition = (controllerSize: DOMRect, bubbleSize: DOMRect, variant: keyof typeof PopOverVariant): BubblePosition => {\n const horizontalPosition = getHorizontalPosition(controllerSize, bubbleSize);\n const verticalPosition = getVerticalPosition(controllerSize, bubbleSize, variant);\n\n if (horizontalPosition === 'left') {\n if (verticalPosition === PopOverVariant.positionabove) {\n return 'leftabove';\n }\n return 'leftbelow';\n }\n\n if (horizontalPosition === 'right') {\n if (verticalPosition === PopOverVariant.positionabove) {\n return 'rightabove';\n }\n return 'rightbelow';\n }\n\n if (verticalPosition === PopOverVariant.positionabove) {\n return 'floatingabove';\n }\n\n return 'floatingbelow';\n};\n\n/**\n * Finn riktig plassering av hjelpeboblen\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @param variant Ønsket plassering av hjelpeboblen (over/under)\n * @returns CSSProperties som plasserer hjelpeboblen riktig\n */\nexport const getBubbleStyle = (controllerSize: DOMRect, bubbleSize: DOMRect, variant: keyof typeof PopOverVariant): CSSProperties => {\n const bubblePosition = getBubblePosition(controllerSize, bubbleSize, variant);\n const bubbleWidth = !getBubbleFitsInWindow() ? getBubbleWidth() : undefined;\n\n if (bubblePosition === 'leftabove') {\n return {\n left: WINDOW_MARGIN_PX,\n top: getBubbleAbovePx(controllerSize, bubbleSize),\n width: bubbleWidth,\n };\n }\n if (bubblePosition === 'leftbelow') {\n return { left: WINDOW_MARGIN_PX, top: getBubbleBelowPx(controllerSize), width: bubbleWidth };\n }\n if (bubblePosition === 'rightabove') {\n return { right: WINDOW_MARGIN_PX, top: getBubbleAbovePx(controllerSize, bubbleSize), width: bubbleWidth };\n }\n if (bubblePosition === 'rightbelow') {\n return { right: WINDOW_MARGIN_PX, top: getBubbleBelowPx(controllerSize), width: bubbleWidth };\n }\n\n if (bubblePosition === 'floatingbelow') {\n return { left: getBubbleLeftPx(controllerSize, bubbleSize), top: getBubbleBelowPx(controllerSize), width: bubbleWidth };\n }\n\n return { left: getBubbleLeftPx(controllerSize, bubbleSize), top: getBubbleAbovePx(controllerSize, bubbleSize), width: bubbleWidth };\n};\n\n/**\n * Finn venstre kant av hjelpeboblen i forhold til kontrolleren\n * @param controllerSize DOMRect for controlleren\n * @param bubbleSize DOMRect for hjelpeboblen\n * @returns Venstre kant av hjelpeboblen i px\n */\nconst getBubbleLeftPx = (controllerSize: DOMRect, bubbleSize: DOMRect): number => {\n const controllerHorizontalCenterPx = getControllerLeftCenterPx(controllerSize);\n\n return controllerHorizontalCenterPx - bubbleSize.width / 2;\n};\n\n/**\n * Finn horisontalt midtpunkt på kontrolleren i forhold til venstre kant av vinduet\n * @param controllerSize DOMRect for controlleren\n * @returns Horisontalt senter av controlleren i px\n */\nconst getControllerLeftCenterPx = (controllerSize: DOMRect): number => controllerSize.left + controllerSize.width / 2;\n\n/**\n * Finn riktig plassering av pilen\n * @param bubbleStyle CSSProperties for hjelpeboblen\n * @param controllerSize DOMRect for kontrolleren\n * @param verticalPosition Ønsket plassering av hjelpeboblen (over/under)\n * @returns CSSProperties som plasserer pilen riktig\n */\nexport const getArrowStyle = (\n bubbleStyle: CSSProperties,\n controllerSize: DOMRect,\n verticalPosition: keyof typeof PopOverVariant\n): CSSProperties => {\n const leftPx = getArrowLeftPx(controllerSize);\n const rightPx = getArrowRightPx(controllerSize);\n const minLeftPx = (bubbleStyle.left as number) + ARROW_HORIZONTAL_MARGIN_PX;\n const minRightPx = (bubbleStyle.right as number) + ARROW_HORIZONTAL_MARGIN_PX;\n\n if (bubbleStyle.right) {\n if (verticalPosition === PopOverVariant.positionabove) {\n return {\n right: rightPx > minRightPx ? rightPx : minRightPx,\n top: getArrowTopxPx(controllerSize),\n };\n }\n\n return {\n right: rightPx > minRightPx ? rightPx : minRightPx,\n top: controllerSize.bottom + ARROW_VERTICAL_OFFSET_PX,\n };\n }\n\n if (verticalPosition === PopOverVariant.positionabove) {\n return {\n left: leftPx > minLeftPx ? leftPx : minLeftPx,\n top: getArrowTopxPx(controllerSize),\n };\n }\n\n return {\n left: leftPx > minLeftPx ? leftPx : minLeftPx,\n top: controllerSize.bottom + ARROW_VERTICAL_OFFSET_PX,\n };\n};\n","import React, { useState, useRef } from 'react';\n\nimport classNames from 'classnames';\nimport { Locale, format } from 'date-fns';\nimport { nb } from 'date-fns/locale';\nimport { DayPicker, DayPickerProps, PropsSingle, Labels } from 'react-day-picker';\nimport reactdaypickerstyles from 'react-day-picker/dist/style.module.css';\n\nimport { PopOverVariant } from '@helsenorge/designsystem-react/components/PopOver';\nimport { useInterval } from '@helsenorge/designsystem-react/hooks/useInterval';\nimport { useIsVisible } from '@helsenorge/designsystem-react/hooks/useIsVisible';\nimport { useLayoutEvent } from '@helsenorge/designsystem-react/hooks/useLayoutEvent';\nimport { useSize } from '@helsenorge/designsystem-react/hooks/useSize';\nimport { getSpacer } from '@helsenorge/designsystem-react/theme/currys/spacing';\n\nimport { getArrowStyle, getBubbleStyle, getVerticalPosition } from './position-utils';\n\nimport styles from './styles.module.scss';\n\nexport interface DatePickerAriaLabels {\n /** Tekst brukt for vanlige dager i kalenderen.\n * {date} - placeholder for den faktiske datoen.\n */\n dayButtonBase?: string;\n\n /** Tekst brukt når en dag er \"i dag\".\n * {date} - placeholder for den faktiske datoen.\n */\n dayButtonToday?: string;\n\n /** Tekst brukt når en dag er valgt.\n * {date} - placeholder for den faktiske datoen.\n */\n dayButtonSelected?: string;\n\n /** Tekst brukt for knappen som viser neste måned. */\n nextMonth?: string;\n\n /** Tekst brukt for knappen som viser forrige måned. */\n previousMonth?: string;\n\n /** Tekst brukt for nedtrekkslisten over måneder. */\n monthDropdown?: string;\n\n /** Tekst brukt for nedtrekkslisten over år. */\n yearDropdown?: string;\n}\n\ninterface DatePickerPopupProps\n extends Pick<\n DayPickerProps,\n 'dir' | 'disabled' | 'footer' | 'startMonth' | 'initialFocus' | 'locale' | 'month' | 'onMonthChange' | 'endMonth'\n >,\n Pick<PropsSingle, 'selected' | 'onSelect'> {\n ariaLabels?: DatePickerAriaLabels;\n datepickerWrapperRef: React.RefObject<HTMLDivElement>;\n inputRef: React.RefObject<HTMLInputElement>;\n testId?: string;\n variant: keyof typeof PopOverVariant;\n zIndex?: number;\n}\n\nconst DatePickerPopup: React.FC<DatePickerPopupProps> = props => {\n const { ariaLabels, datepickerWrapperRef, endMonth, footer, inputRef, locale, startMonth, testId, variant, zIndex, ...rest } = props;\n\n const today = new Date();\n const arrowRef = useRef<HTMLDivElement>(null);\n const [controllerSize, setControllerSize] = useState<DOMRect>();\n const bubbleSize = useSize(datepickerWrapperRef);\n const controllerisVisible = useIsVisible(datepickerWrapperRef, 0);\n\n function getDateFnsLocale(dayPickerLocale?: Partial<Locale>): Locale {\n return (dayPickerLocale as Locale) ?? nb;\n }\n\n const buildAriaLabels = (custom: DatePickerAriaLabels = {}): Partial<Labels> => {\n return {\n labelDayButton: (date, modifiers): string => {\n const dateString = format(date, 'PPPP', {\n locale: getDateFnsLocale(locale),\n });\n\n let label = custom.dayButtonBase ? custom.dayButtonBase.replace('{date}', dateString) : dateString;\n\n if (modifiers.today && custom.dayButtonToday) {\n label = custom.dayButtonToday.replace('{date}', dateString);\n }\n\n if (modifiers.selected && custom.dayButtonSelected) {\n label = custom.dayButtonSelected.replace('{date}', dateString);\n }\n\n return label;\n },\n\n labelNext: (): string => {\n return custom.nextMonth ?? 'Neste måned';\n },\n labelPrevious: (): string => {\n return custom.previousMonth ?? 'Forrige måned';\n },\n labelMonthDropdown: (): string => {\n return custom.monthDropdown ?? 'Velg måned';\n },\n labelYearDropdown: (): string => {\n return custom.yearDropdown ?? 'Velg år';\n },\n };\n };\n\n const updateControllerSize = (): void => {\n setControllerSize(inputRef.current?.getBoundingClientRect());\n };\n\n React.useEffect(() => {\n updateControllerSize();\n }, []);\n\n useInterval(updateControllerSize, 500);\n useLayoutEvent(updateControllerSize, ['scroll', 'resize'], 10);\n\n const datepickerPopupContainerClasses = classNames(styles['datepicker-popup-container'], {\n [styles['datepicker-popup-container--visible']]: controllerisVisible,\n });\n const verticalPosition = controllerSize && bubbleSize && getVerticalPosition(controllerSize, bubbleSize, variant);\n const popupArrowClasses = classNames(styles['datepicker-popup-arrow'], {\n [styles['datepicker-popup-arrow--visible']]: controllerisVisible,\n [styles['datepicker-popup-arrow--over']]: verticalPosition === PopOverVariant.positionbelow,\n [styles['datepicker-popup-arrow--under']]: verticalPosition === PopOverVariant.positionabove,\n });\n\n const bubbleStyle = controllerSize && bubbleSize && getBubbleStyle(controllerSize, bubbleSize, variant);\n const arrowStyle = bubbleStyle && controllerSize && verticalPosition && getArrowStyle(bubbleStyle, controllerSize, verticalPosition);\n\n const datePickerClassNames = {\n ...reactdaypickerstyles,\n ...styles,\n };\n\n return (\n <>\n <div className={datepickerPopupContainerClasses} data-testid={testId} ref={datepickerWrapperRef} style={{ ...bubbleStyle, zIndex }}>\n <DayPicker\n captionLayout=\"dropdown\"\n classNames={datePickerClassNames}\n mode={'single'}\n style={{ '--rdp-cell-size': getSpacer('l') } as React.CSSProperties}\n modifiersClassNames={{\n today: styles['day--today'],\n selected: styles['day--selected'],\n disabled: styles['day--disabled'],\n }}\n footer={<span className={styles['footer-wrapper']}>{footer}</span>}\n fixedWeeks\n labels={buildAriaLabels(ariaLabels)}\n startMonth={startMonth ?? new Date(today.getFullYear() - 100, today.getMonth(), 1)}\n endMonth={endMonth ?? new Date(today.getFullYear() + 100, today.getMonth(), 1)}\n locale={locale}\n {...rest}\n />\n </div>\n <div ref={arrowRef} className={popupArrowClasses} style={{ ...arrowStyle, zIndex }} />\n </>\n );\n};\n\nexport default DatePickerPopup;\n","import React, { useState, useRef, useEffect } from 'react';\n\nimport { Locale, format, isValid, parse } from 'date-fns';\nimport { nb } from 'date-fns/locale';\nimport { Modifiers, DayOfWeek, DayPickerProps, PropsSingle } from 'react-day-picker';\n\nimport Button from '@helsenorge/designsystem-react/components/Button';\nimport { ErrorWrapperClassNameProps } from '@helsenorge/designsystem-react/components/ErrorWrapper';\nimport Icon from '@helsenorge/designsystem-react/components/Icon';\nimport Calendar from '@helsenorge/designsystem-react/components/Icons/Calendar';\nimport Input from '@helsenorge/designsystem-react/components/Input';\nimport { PopOverVariant } from '@helsenorge/designsystem-react/components/PopOver';\nimport { KeyboardEventKey, ZIndex } from '@helsenorge/designsystem-react/constants';\nimport { useKeyboardEvent } from '@helsenorge/designsystem-react/hooks/useKeyboardEvent';\nimport { useOutsideEvent } from '@helsenorge/designsystem-react/hooks/useOutsideEvent';\nimport { usePseudoClasses } from '@helsenorge/designsystem-react/hooks/usePseudoClasses';\nimport { isMobileUA } from '@helsenorge/designsystem-react/utils/mobile';\nimport { isMutableRefObject, mergeRefs } from '@helsenorge/designsystem-react/utils/refs';\n\nimport DatePickerPopup, { DatePickerAriaLabels } from './DatePickerPopup';\n\nimport styles from './styles.module.scss';\n\nexport type DateFormat = 'dd.MM.yyyy';\n\nexport interface DatePickerProps\n extends ErrorWrapperClassNameProps,\n Pick<React.InputHTMLAttributes<HTMLInputElement>, 'name' | 'aria-describedby' | 'onBlur' | 'autoComplete'>,\n Pick<DayPickerProps, 'dir' | 'initialFocus'> {\n /** Setter labels for popup på desktop visning */\n ariaLabels?: DatePickerAriaLabels;\n /** Adds custom classes to the element. */\n className?: string;\n /** Sets aria-label on the button that opens the datepicker dialogue */\n dateButtonAriaLabel?: string;\n /** Sets the format of the date - only applies for desktop use. Native mobile date fields base their formats on the device */\n dateFormat?: DateFormat;\n /** Sets the date of the component */\n dateValue?: Date;\n /** Sets the current month */\n defaultMonth?: Date;\n /** Disables the datepicker */\n disabled?: boolean;\n /** Disables the days in the datepicker */\n disableDays?: Date[];\n /** Disables weekends in the datepicker */\n disableWeekends?: boolean;\n /** Activates Error style for the input */\n error?: boolean;\n /** Error text to show above the component */\n errorText?: string;\n /** Error text id */\n errorTextId?: string;\n /** Content to be rendered in the footer of the datepicker popup */\n footerContent?: React.ReactNode;\n /** Label of the input */\n label?: React.ReactNode;\n /** Input element id */\n inputId?: string;\n /** Sets the locale of the datepicker */\n locale?: Locale;\n /** Maximum date allowed to be selected */\n maxDate?: Date;\n /** Minimum date allowed to be selected */\n minDate?: Date;\n /** onChange callback triggered by change in chosen date */\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement> | React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>,\n date?: Date | string\n ) => void;\n /** Only use this to trigger validation. Callback triggered by change in chosen date via the datepicker popup */\n onDatePopupClosed?: (date: Date | string | undefined) => void;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Determines the placement of the DatePicker popup. Default: automatic positioning. */\n variant?: keyof typeof PopOverVariant;\n /** Overrides the default z-index of DatePicker */\n zIndex?: number;\n}\n\nexport const DatePicker = React.forwardRef((props: DatePickerProps, ref: React.Ref<HTMLInputElement>) => {\n const {\n className,\n dateButtonAriaLabel,\n dateFormat = 'dd.MM.yyyy',\n dateValue,\n defaultMonth,\n dir,\n disabled,\n disableDays = [],\n disableWeekends,\n error,\n errorText,\n errorTextId,\n errorWrapperClassName,\n footerContent,\n label,\n ariaLabels,\n inputId,\n locale = nb,\n maxDate,\n minDate,\n onBlur,\n onChange,\n onDatePopupClosed,\n testId,\n autoComplete = 'off',\n variant = PopOverVariant.positionautomatic,\n zIndex = ZIndex.PopOver,\n ...rest\n } = props;\n\n const [dateState, setDateState] = useState<Date | undefined>(dateValue);\n const [inputValue, setInputValue] = useState<string>(dateState ? format(dateState, dateFormat) : '');\n const [month, setMonth] = useState<Date | undefined>(defaultMonth);\n const [datePickerOpen, setDatePickerOpen] = useState<boolean>(false);\n const [returnInputFocus, setReturnInputFocus] = useState<boolean>(false);\n\n const weekendMatcher: DayOfWeek = {\n dayOfWeek: [0, 6],\n };\n const disabledDays = disableWeekends\n ? [...disableDays, weekendMatcher, ...(minDate ? [{ before: minDate }] : []), ...(maxDate ? [{ after: maxDate }] : [])]\n : [...disableDays, ...(minDate ? [{ before: minDate }] : []), ...(maxDate ? [{ after: maxDate }] : [])];\n\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const datepickerWrapperRef = useRef<HTMLDivElement>(null);\n const { refObject } = usePseudoClasses<HTMLInputElement>(isMutableRefObject(ref) ? ref : null);\n const mergedRefs = mergeRefs([ref, refObject]);\n const isTyping = useRef<boolean>(false);\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n useOutsideEvent(\n [inputContainerRef, datepickerWrapperRef],\n (e: any) => {\n if (\n inputContainerRef.current &&\n datepickerWrapperRef.current &&\n !e?.composedPath().includes(inputContainerRef.current) &&\n !e?.composedPath().includes(datepickerWrapperRef.current)\n ) {\n setDatePickerOpen(false);\n }\n },\n ['mousedown', 'focusin', 'blur']\n );\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n useEffect(() => {\n if (isValid(dateValue)) {\n setInputValue(dateValue ? format(dateValue, dateFormat) : '');\n setDateState(dateValue);\n setMonth(dateValue);\n } else {\n setInputValue('');\n setDateState(undefined);\n setMonth(undefined);\n }\n }, [dateValue, dateFormat]);\n\n useEffect(() => {\n if (returnInputFocus && refObject.current) {\n refObject.current.focus();\n }\n }, [returnInputFocus]);\n\n const handleEscapeKeyDown = (): void => {\n refObject?.current && refObject.current.focus();\n setDatePickerOpen(false);\n };\n\n useKeyboardEvent(datepickerWrapperRef, handleEscapeKeyDown, [KeyboardEventKey.Escape]);\n useKeyboardEvent(inputWrapperRef, handleEscapeKeyDown, [KeyboardEventKey.Escape]);\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>, inputFormat: string): void => {\n setInputValue(event.currentTarget.value);\n const newDate = parse(event.currentTarget.value, inputFormat, new Date());\n\n if (isValid(newDate)) {\n setDateState(newDate);\n setMonth(newDate);\n } else {\n setDateState(undefined);\n }\n\n onChange && onChange(event, event.currentTarget.value);\n };\n\n const handleInputFocus = (): void => {\n if (!returnInputFocus) {\n setDatePickerOpen(true);\n } else {\n setReturnInputFocus(false);\n }\n };\n\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const handleSingleDatePickerSelect: PropsSingle['onSelect'] = (\n date: Date | undefined,\n _selectedDay: Date,\n _activeModifiers: Modifiers,\n e: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>\n ): void => {\n setReturnInputFocus(true);\n\n if (!date) {\n setDatePickerOpen(false);\n return;\n }\n\n setDateState(date);\n\n if (refObject.current) {\n setInputValue(format(date, dateFormat));\n setDatePickerOpen(false);\n }\n\n onChange && onChange(e, date);\n triggerSyntheticInputEvents(refObject, format(date, dateFormat), date);\n onDatePopupClosed && onDatePopupClosed(date);\n };\n\n // We do this to make sure selecting from the DatePickerPopup triggers the onChange events properly, and works with react-hook-form\n const triggerSyntheticInputEvents = (\n inputRef: React.RefObject<HTMLInputElement>,\n value: string,\n date: Date,\n _onChange?: (event: React.ChangeEvent<HTMLInputElement>, date: Date) => void\n ): void => {\n if (inputRef.current) {\n inputRef.current.value = value;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const inputEvent = new Event('change', { bubbles: true });\n\n // Since the event is synthetic we have to add the target for webcomponents to not throw an error\n Object.defineProperty(inputEvent, 'target', {\n value: inputRef.current,\n writable: false,\n enumerable: true,\n configurable: true,\n });\n\n Object.defineProperty(inputEvent, 'currentTarget', {\n value: inputRef.current,\n writable: false,\n enumerable: true,\n configurable: true,\n });\n\n inputRef.current.dispatchEvent(inputEvent);\n\n if (onChange) {\n onChange(inputEvent as unknown as React.ChangeEvent<HTMLInputElement>, date);\n }\n }\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement, Element>): void => {\n // We don't trigger the native onBlur event if the user select via the datepicker and the onDatePopupClosed callback is used (usually to trigger validation manually)\n if (!datePickerOpen && (typeof onDatePopupClosed === 'undefined' || isTyping.current)) {\n onBlur && onBlur(e);\n }\n\n isTyping.current = false;\n };\n\n const handleButtonClick = (\n e?: React.MouseEvent<HTMLElement, MouseEvent> | React.FormEvent<{}> | React.KeyboardEvent<HTMLUListElement> | null | undefined\n ): void => {\n e?.stopPropagation();\n setDatePickerOpen(!datePickerOpen);\n };\n\n // This differentiates between typing in the input field and selecting a date from the datepicker, especially on native mobile date fields\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent): void => {\n if (!['Escape', 'Enter', 'Tab'].includes(e.key)) {\n isTyping.current = true;\n setDatePickerOpen(false);\n }\n };\n\n const inputElement = refObject.current;\n if (inputElement) {\n inputElement.addEventListener('keydown', handleKeyDown);\n }\n\n return (): void => {\n if (inputElement) {\n inputElement.removeEventListener('keydown', handleKeyDown);\n }\n };\n }, [refObject]);\n\n const handleMobileInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n handleInputChange(e, 'yyyy-MM-dd');\n\n if (!isTyping.current) {\n onDatePopupClosed && onDatePopupClosed(dateState);\n }\n };\n\n const renderMobile = (\n <Input\n disabled={disabled}\n error={error}\n errorText={errorText}\n errorTextId={errorTextId}\n inputId={inputId}\n label={label}\n max={maxDate ? format(maxDate, 'yyyy-MM-dd') : ''}\n min={minDate ? format(minDate, 'yyyy-MM-dd') : ''}\n type=\"date\"\n ref={mergedRefs}\n value={dateState ? format(dateState, 'yyyy-MM-dd') : ''}\n width={14}\n {...rest}\n onBlur={handleInputBlur}\n onChange={handleMobileInputChange}\n autoComplete={autoComplete ? autoComplete : undefined}\n />\n );\n\n const renderDesktop = (\n <>\n <div>\n <Input\n errorWrapperClassName={errorWrapperClassName}\n disabled={disabled}\n error={error}\n errorText={errorText}\n errorTextId={errorTextId}\n inputId={inputId}\n inputContainerRef={inputContainerRef}\n inputWrapperRef={inputWrapperRef}\n label={label}\n onFocus={handleInputFocus}\n type=\"text\"\n ref={mergedRefs}\n value={inputValue}\n width={12}\n {...rest}\n onBlur={handleInputBlur}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleInputChange(e, 'yyyy-MM-dd')}\n rightOfInput={\n <Button\n disabled={disabled}\n ariaLabel={dateButtonAriaLabel ?? 'Velg dato'}\n onClick={handleButtonClick}\n tabIndex={datePickerOpen ? -1 : 0}\n variant={'borderless'}\n wrapperClassName={styles['date-button']}\n className={styles['date-button__inner']}\n >\n <Icon color={'black'} svgIcon={Calendar} />\n </Button>\n }\n autoComplete={autoComplete ? autoComplete : undefined}\n />\n </div>\n {datePickerOpen && !disabled && (\n <DatePickerPopup\n dir={dir}\n disabled={disabledDays}\n datepickerWrapperRef={datepickerWrapperRef}\n footer={footerContent}\n startMonth={minDate}\n endMonth={maxDate}\n inputRef={refObject}\n locale={locale}\n month={month}\n selected={dateState}\n onSelect={handleSingleDatePickerSelect}\n onMonthChange={setMonth}\n variant={variant}\n zIndex={zIndex}\n ariaLabels={ariaLabels}\n />\n )}\n </>\n );\n\n return (\n <div className={className} data-testid={testId}>\n {isMobileUA() ? renderMobile : renderDesktop}\n </div>\n );\n});\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n","import React, { useEffect, useState } from 'react';\n\nimport { ErrorWrapperClassNameProps } from '@helsenorge/designsystem-react/components/ErrorWrapper';\nimport Input from '@helsenorge/designsystem-react/components/Input';\nimport { usePseudoClasses } from '@helsenorge/designsystem-react/hooks/usePseudoClasses';\nimport { isMutableRefObject, mergeRefs } from '@helsenorge/designsystem-react/utils/refs';\n\nimport styles from './styles.module.scss';\n\nexport type TimeUnit = 'hours' | 'minutes';\n\nexport interface DateTimeProps\n extends ErrorWrapperClassNameProps,\n Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'name' | 'aria-describedby' | 'aria-labelledby' | 'onBlur' | 'onChange' | 'disabled' | 'autoComplete'\n > {\n /** Default value that is set on the input field */\n defaultValue?: number;\n /** Activates Error style for the input */\n error?: boolean;\n /** Error text to show above the component */\n errorText?: string;\n /** Error text id */\n errorTextId?: string;\n /** input id of the checkbox */\n inputId?: string;\n /** Label of the input */\n label?: React.ReactNode;\n /** Sets the unit of time for the input field */\n timeUnit: TimeUnit;\n /** Value that is set on the input field */\n value?: number;\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nconst formatAsTwoDigits = (value: string | number): string => {\n const stringValue = String(value);\n return stringValue.length === 1 ? '0' + stringValue : stringValue;\n};\n\nconst isNumericString = (str: string): boolean => {\n return !str || (/^\\d+$/.test(str) && str.length <= 2);\n};\n\nexport const DateTime = React.forwardRef((props: DateTimeProps, ref: React.Ref<HTMLInputElement>) => {\n const {\n error,\n errorText,\n errorTextId,\n errorWrapperClassName,\n label,\n onBlur,\n onChange,\n timeUnit,\n testId,\n inputId,\n value,\n autoComplete = 'off',\n ...rest\n } = props;\n\n const [inputValue, setInputValue] = useState<number | string | undefined>(\n typeof value !== 'undefined' ? formatAsTwoDigits(value) : undefined\n );\n const { refObject } = usePseudoClasses<HTMLInputElement>(isMutableRefObject(ref) ? ref : null);\n const mergedRefs = mergeRefs([ref, refObject]);\n\n useEffect(() => {\n setInputValue(value ? formatAsTwoDigits(value) : undefined);\n }, [value]);\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const value = event.target.value;\n\n if (isNumericString(value)) {\n setInputValue(value);\n onChange && onChange(event);\n }\n };\n\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>): void => {\n const formattedValue = formatAsTwoDigits(event.target.value);\n setInputValue(formattedValue);\n onChange && onChange(event);\n onBlur && onBlur(event);\n };\n\n /** Firefox stopper ikke vanlige characters fra å skrives til input type number - derfor håndterer vi det selv her */\n const handleInputOnKeyDown = (event: React.KeyboardEvent): void => {\n const validChars = /[0-9]/;\n const allowedKeys = ['Backspace', ' ', 'Enter', 'Tab', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n if (!validChars.test(event.key) && !allowedKeys.includes(event.key)) {\n event.preventDefault();\n }\n };\n\n const renderTimeSeparator = (): React.ReactNode => {\n return timeUnit === 'hours' && <span className={styles['time-separator']}>{':'}</span>;\n };\n\n return (\n <div data-testid={testId}>\n <Input\n inputId={inputId}\n error={error}\n errorText={errorText}\n errorTextId={errorTextId}\n errorWrapperClassName={errorWrapperClassName}\n label={label}\n max={timeUnit === 'hours' ? 23 : 59}\n min={0}\n type=\"number\"\n ref={mergedRefs}\n value={inputValue}\n width={5}\n defaultValue={typeof props.defaultValue !== 'undefined' ? formatAsTwoDigits(props.defaultValue) : undefined}\n {...rest}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n rightOfInput={renderTimeSeparator()}\n onKeyDown={handleInputOnKeyDown}\n autoComplete={autoComplete ? autoComplete : undefined}\n />\n </div>\n );\n});\n\nDateTime.displayName = 'DateTime';\n\nexport default DateTime;\n","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport ErrorWrapper, { ErrorWrapperClassNameProps } from '@helsenorge/designsystem-react/components/ErrorWrapper';\nimport { useUuid } from '@helsenorge/designsystem-react/hooks/useUuid';\nimport { isComponent } from '@helsenorge/designsystem-react/utils/component';\n\nimport DatePicker, { DatePickerProps } from './DatePicker';\nimport DateTime, { DateTimeProps } from './DateTime';\n\nimport styles from './styles.module.scss';\n\nexport type TimeUnits = 'hours' | 'minutes';\n\ninterface DateTimePickerWrapperProps extends ErrorWrapperClassNameProps {\n /** Sets the children of the datetimepicker - the DatePicker and DateTime components go here */\n children?: React.ReactNode;\n /** Error text to show above the component */\n errorText?: string;\n /** text placed in the legend tag of the fieldset */\n legend?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nexport const DateTimePickerWrapper = React.forwardRef((props: DateTimePickerWrapperProps, ref: React.ForwardedRef<HTMLDivElement>) => {\n const { children, errorWrapperClassName, errorText, legend, testId } = props;\n const errorTextId = useUuid();\n\n const mapDateComponents = (child: React.ReactNode): React.ReactNode => {\n if (isComponent<DatePickerProps>(child, DatePicker)) {\n return React.cloneElement(child, {\n className: classNames(styles['date-time-picker-wrapper__date-picker']),\n error: !!errorText,\n errorTextId,\n });\n } else if (isComponent<DateTimeProps>(child, DateTime)) {\n return React.cloneElement(child, {\n error: !!errorText,\n errorTextId,\n });\n }\n return child;\n };\n\n return (\n <div ref={ref} tabIndex={-1}>\n <ErrorWrapper className={errorWrapperClassName} errorText={errorText} errorTextId={errorTextId}>\n {props.legend ? (\n <fieldset className={styles['date-time-picker-wrapper']} data-testid={testId}>\n {props.legend && <legend className={styles['date-time-picker-wrapper__legend']}>{legend}</legend>}\n {React.Children.map(children, mapDateComponents)}\n </fieldset>\n ) : (\n <div className={styles['date-time-picker-wrapper']}>{React.Children.map(children, mapDateComponents)}</div>\n )}\n </ErrorWrapper>\n </div>\n );\n});\n\nDateTimePickerWrapper.displayName = 'DateTimePickerWrapper';\n\nexport default DateTimePickerWrapper;\n","import { isWithinInterval, isAfter, isBefore, isSameDay, parse, isValid } from 'date-fns';\n\nexport const parseInputDate = (dateString: string): Date | null => {\n const possibleFormats = ['yyyy-MM-dd', 'dd.MM.yyyy'];\n\n for (const format of possibleFormats) {\n const parsedDate = parse(dateString, format, new Date());\n if (isValid(parsedDate)) {\n return parsedDate;\n }\n }\n\n return null;\n};\n\nexport const isValidDate = (dateString: string): boolean => {\n const date = new Date(dateString);\n return date instanceof Date && !isNaN(date.getTime());\n};\n\n/** react-hook-form fromDate and toDate validation */\nexport const validateMinMaxDate = (\n date: string,\n outsideRangeErrorMessage: string,\n invalidFormatErrorMessage?: string,\n minDate?: Date,\n maxDate?: Date\n): string | true => {\n const formattedDate = parseInputDate(date);\n const hasMinDate = typeof minDate !== 'undefined';\n const hasMaxDate = typeof maxDate !== 'undefined';\n if (!formattedDate || (hasMinDate && !isValid(minDate)) || (hasMaxDate && !isValid(maxDate))) {\n return invalidFormatErrorMessage || 'Invalid date format';\n }\n\n if (hasMinDate && !hasMaxDate && (isSameDay(formattedDate, minDate) || isAfter(formattedDate, minDate))) return true;\n else if (hasMaxDate && !hasMinDate && (isSameDay(formattedDate, maxDate) || isBefore(formattedDate, maxDate))) return true;\n else if (\n hasMinDate &&\n hasMaxDate &&\n (isSameDay(formattedDate, minDate) ||\n isSameDay(formattedDate, maxDate) ||\n isWithinInterval(formattedDate, { start: minDate, end: maxDate }))\n ) {\n return true;\n }\n\n return outsideRangeErrorMessage;\n};\n\n/** react-hook-form fromDate and toDate validation */\nexport const validateDisabledDates = (\n date: string,\n disabledDates: Date[],\n isDisabledErrorMessage: string,\n invalidFormatErrorMessage?: string\n): string | true => {\n const formattedDate = parseInputDate(date);\n if (!formattedDate) {\n return invalidFormatErrorMessage || 'Invalid date format';\n }\n if (!disabledDates.some(d => isSameDay(d, formattedDate))) {\n return true;\n }\n\n return isDisabledErrorMessage;\n};\n\n/** react-hook-form fromTime and toTime validation */\nexport const validateMinTimeMaxTime = (\n time: { hour: number; minute: number },\n errorMessage: string,\n minTime?: { hour: number; minute: number },\n maxTime?: { hour: number; minute: number }\n): string | true => {\n const timeParsed = parse((time.hour + ':' + time.minute).toString(), 'HH:mm', new Date());\n const minTimeParsed = parse((minTime?.hour + ':' + minTime?.minute).toString(), 'HH:mm', new Date());\n const maxTimeParsed = parse((maxTime?.hour + ':' + maxTime?.minute).toString(), 'HH:mm', new Date());\n\n if ((typeof minTime === 'undefined' || timeParsed >= minTimeParsed) && (typeof maxTime === 'undefined' || timeParsed <= maxTimeParsed)) {\n return true;\n }\n\n return errorMessage;\n};\n"],"names":["UI","DayFlag","SelectionState","format","options","classNames","components","labelPrevious","labelNext","startOfMonth","startOfYear","endOfYear","eachMonthOfInterval","getMonth","styles","addYears","getYear","isBefore","isSameYear","year","addDays","differenceInCalendarDays","differenceInCalendarMonths","endOfBroadcastWeek","endOfISOWeek","endOfMonth","endOfWeek","isAfter","startOfBroadcastWeek","startOfISOWeek","startOfWeek","initialDays","weekDays","addMonths","getISOWeek","getWeek","weeks","week","startOfDay","isSameDay","addWeeks","max","min","useFocus","isSameMonth","days","locale","defaultLocale","dateLib","formatCaption","formatDay","formatMonthDropdown","formatWeekNumber","formatWeekNumberHeader","formatWeekdayName","formatYearDropdown","labelDayButton","labelGridcell","labelGrid","labelMonthDropdown","labelNav","labelWeekday","labelWeekNumber","labelWeekNumberHeader","labelYearDropdown","style","className","setMonth","Button","value"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92]}