@clickhouse/click-ui 0.2.0-rc.6 → 0.2.0-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +67 -0
  2. package/dist/cjs/click-ui.css +3861 -0
  3. package/dist/cjs/components/Button/Button.css +261 -0
  4. package/dist/cjs/components/Button/Button.module.css.cjs +38 -0
  5. package/dist/cjs/components/Button/Button.module.css.cjs.map +1 -0
  6. package/dist/cjs/components/Button/index.cjs +42 -126
  7. package/dist/cjs/components/Button/index.cjs.map +1 -1
  8. package/dist/cjs/components/ButtonGroup/index.cjs +1 -1
  9. package/dist/cjs/components/ButtonGroup/index.cjs.map +1 -1
  10. package/dist/cjs/components/DatePicker/Common.cjs +21 -25
  11. package/dist/cjs/components/DatePicker/Common.cjs.map +1 -1
  12. package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs +23 -15
  13. package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs.map +1 -1
  14. package/dist/cjs/components/GenericMenu/index.cjs +1 -1
  15. package/dist/cjs/components/GenericMenu/index.cjs.map +1 -1
  16. package/dist/cjs/lib/cva.cjs +15 -0
  17. package/dist/cjs/lib/cva.cjs.map +1 -0
  18. package/dist/cjs/providers/ThemeProvider.cjs +4 -0
  19. package/dist/cjs/providers/ThemeProvider.cjs.map +1 -1
  20. package/dist/cjs/theme/styles/tokens-dark.css +1806 -0
  21. package/dist/cjs/theme/styles/tokens-light.css +1795 -0
  22. package/dist/cjs/theme/theme.config.json.cjs +12 -0
  23. package/dist/cjs/theme/theme.config.json.cjs.map +1 -0
  24. package/dist/cjs/theme/tokens/variables.dark.cjs +2 -4
  25. package/dist/cjs/theme/tokens/variables.dark.cjs.map +1 -1
  26. package/dist/cjs/theme/tokens/variables.light.cjs +1 -6
  27. package/dist/cjs/theme/tokens/variables.light.cjs.map +1 -1
  28. package/dist/cjs/utils/localStorage.cjs +3 -1
  29. package/dist/cjs/utils/localStorage.cjs.map +1 -1
  30. package/dist/esm/click-ui.css +3861 -0
  31. package/dist/esm/components/Button/Button.css +261 -0
  32. package/dist/esm/components/Button/Button.module.css.js +25 -0
  33. package/dist/esm/components/Button/Button.module.css.js.map +1 -0
  34. package/dist/esm/components/Button/index.js +42 -126
  35. package/dist/esm/components/Button/index.js.map +1 -1
  36. package/dist/esm/components/ButtonGroup/index.js +1 -1
  37. package/dist/esm/components/ButtonGroup/index.js.map +1 -1
  38. package/dist/esm/components/DatePicker/Common.js +21 -25
  39. package/dist/esm/components/DatePicker/Common.js.map +1 -1
  40. package/dist/esm/components/DatePicker/DateTimeRangePicker.js +23 -15
  41. package/dist/esm/components/DatePicker/DateTimeRangePicker.js.map +1 -1
  42. package/dist/esm/components/GenericMenu/index.js +1 -1
  43. package/dist/esm/components/GenericMenu/index.js.map +1 -1
  44. package/dist/esm/lib/cva.js +7 -0
  45. package/dist/esm/lib/cva.js.map +1 -0
  46. package/dist/esm/providers/ThemeProvider.js +4 -0
  47. package/dist/esm/providers/ThemeProvider.js.map +1 -1
  48. package/dist/esm/theme/styles/tokens-dark.css +1806 -0
  49. package/dist/esm/theme/styles/tokens-light.css +1795 -0
  50. package/dist/esm/theme/theme.config.json.js +7 -0
  51. package/dist/esm/theme/theme.config.json.js.map +1 -0
  52. package/dist/esm/theme/tokens/variables.dark.js +2 -4
  53. package/dist/esm/theme/tokens/variables.dark.js.map +1 -1
  54. package/dist/esm/theme/tokens/variables.light.js +1 -6
  55. package/dist/esm/theme/tokens/variables.light.js.map +1 -1
  56. package/dist/esm/utils/localStorage.js +3 -1
  57. package/dist/esm/utils/localStorage.js.map +1 -1
  58. package/dist/types/components/Button/Button.d.ts +25 -2
  59. package/dist/types/components/DatePicker/DateTimeRangePicker.d.ts +5 -2
  60. package/dist/types/components/DatePicker/index.d.ts +1 -1
  61. package/dist/types/lib/cva.d.ts +3 -0
  62. package/dist/types/theme/theme.config.json.d.ts +6 -0
  63. package/dist/types/theme/theme.core.d.ts +0 -7
  64. package/dist/types/theme/tokens/variables.dark.d.ts +0 -2
  65. package/dist/types/theme/tokens/variables.light.d.ts +0 -5
  66. package/dist/types/utils/dom.d.ts +1 -1
  67. package/dist/types/utils/localStorage.d.ts +1 -1
  68. package/package.json +25 -8
@@ -16,18 +16,16 @@ const Dropdown = require('../Dropdown/index.cjs');
16
16
  const IconButton = require('../IconButton/index.cjs');
17
17
 
18
18
  const explicitWidth = "250px";
19
- const TXT_ON_MONTH_SELECT = "Month";
20
- const TXT_ON_YEAR_SELECT = "Year";
21
- const VIEW_GRID_MONTHS = {
19
+ const viewGridMonths = {
22
20
  columns: 4,
23
21
  rows: 3
24
22
  };
25
- const VIEW_GRID_YEARS = {
23
+ const viewGridYears = {
26
24
  columns: 3,
27
25
  rows: 3
28
26
  };
29
- const VIEW_TOTAL_YEARS = VIEW_GRID_YEARS.columns * VIEW_GRID_YEARS.rows;
30
- const VIEW_NAVIGATION_OFFSET_YEARS = Math.floor(VIEW_TOTAL_YEARS / 2);
27
+ const totalYears = viewGridYears.columns * viewGridYears.rows;
28
+ const yearsOffset = Math.floor(totalYears / 2);
31
29
  const HighlightedInputWrapper = styledComponents.styled(InputWrapper.InputWrapper).withConfig({
32
30
  componentId: "sc-1m6g9rm-0"
33
31
  })(["", "}"], ({
@@ -149,22 +147,20 @@ const DatePickerContainer = styledComponents.styled(Container.Container).withCon
149
147
  }) => theme.click.datePicker.dateOption.color.background.default);
150
148
  const ClickableTitle = styledComponents.styled.button.withConfig({
151
149
  componentId: "sc-1m6g9rm-2"
152
- })(["", " background:transparent;cursor:pointer;user-select:none;padding:0.25rem 0.5rem;border-radius:", ";outline:none;&:hover{background:", ";}&:focus,&:focus-visible{border-color:", ";}"], ({
150
+ })(["background:transparent;border:1px solid transparent;cursor:pointer;outline:none;padding:0.25rem 0.5rem;user-select:none;", ";&:hover{background:", ";}&:focus,&:focus-visible{border-color:", ";}"], ({
153
151
  theme
154
152
  }) => `
153
+ border-radius: ${theme.click.datePicker.dateOption.radii.default};
155
154
  color: ${theme.click.datePicker.color.title.default};
156
155
  font: ${theme.click.datePicker.typography.title.default};
157
- border: 1px solid transparent;
158
156
  `, ({
159
157
  theme
160
- }) => theme.click.datePicker.dateOption.radii.default, ({
161
- theme
162
158
  }) => theme.click.datePicker.dateOption.color.background.hover, ({
163
159
  theme
164
160
  }) => theme.click.datePicker.dateOption.color.stroke.hover);
165
161
  const UnselectableTitle = styledComponents.styled.h2.withConfig({
166
162
  componentId: "sc-1m6g9rm-3"
167
- })(["", " margin:0;padding:0;user-select:none;"], ({
163
+ })(["margin:0;padding:0;user-select:none;", ""], ({
168
164
  theme
169
165
  }) => `
170
166
  color: ${theme.click.datePicker.color.title.default};
@@ -179,20 +175,20 @@ const GridContainer = styledComponents.styled.div.withConfig({
179
175
  `);
180
176
  const MonthsGrid = styledComponents.styled(GridContainer).withConfig({
181
177
  componentId: "sc-1m6g9rm-5"
182
- })(["grid-template-columns:repeat(", ",1fr);grid-template-rows:repeat(", ",1fr);"], VIEW_GRID_MONTHS.columns, VIEW_GRID_MONTHS.rows);
178
+ })(["grid-template-columns:repeat(", ",1fr);grid-template-rows:repeat(", ",1fr);"], viewGridMonths.columns, viewGridMonths.rows);
183
179
  const YearsGrid = styledComponents.styled(GridContainer).withConfig({
184
180
  componentId: "sc-1m6g9rm-6"
185
- })(["grid-template-columns:repeat(", ",1fr);grid-template-rows:repeat(", ",1fr);"], VIEW_GRID_YEARS.columns, VIEW_GRID_YEARS.rows);
181
+ })(["grid-template-columns:repeat(", ",1fr);grid-template-rows:repeat(", ",1fr);"], viewGridYears.columns, viewGridYears.rows);
186
182
  const GridCell = styledComponents.styled.button.withConfig({
187
183
  componentId: "sc-1m6g9rm-7"
188
- })(["", " ", " ", " display:flex;align-items:center;justify-content:center;padding:8px 4px;cursor:pointer;text-align:center;min-height:26px;", ""], ({
184
+ })(["align-items:center;cursor:pointer;display:flex;justify-content:center;min-height:26px;padding:8px 4px;text-align:center;", " ", " ", " ", ""], ({
189
185
  theme
190
186
  }) => `
187
+ background: ${theme.click.datePicker.dateOption.color.background.default};
191
188
  border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.stroke.default};
192
189
  border-radius: ${theme.click.datePicker.dateOption.radii.default};
193
- font: ${theme.click.datePicker.dateOption.typography.label.default};
194
190
  color: ${theme.click.datePicker.dateOption.color.label.default};
195
- background: ${theme.click.datePicker.dateOption.color.background.default};
191
+ font: ${theme.click.datePicker.dateOption.typography.label.default};
196
192
  `, ({
197
193
  $isActive,
198
194
  theme
@@ -327,7 +323,7 @@ const CalendarRenderer = ({
327
323
  const [selectedYear, setSelectedYear] = react.useState(null);
328
324
  const [yearOffset, setYearOffset] = react.useState(0);
329
325
  const [focusedMonthIndex, setFocusedMonthIndex] = react.useState(month);
330
- const [focusedYearIndex, setFocusedYearIndex] = react.useState(VIEW_NAVIGATION_OFFSET_YEARS);
326
+ const [focusedYearIndex, setFocusedYearIndex] = react.useState(yearsOffset);
331
327
  const monthGridRef = react.useRef([]);
332
328
  const yearGridRef = react.useRef([]);
333
329
  const headerNavRefs = react.useRef([null, null, null]);
@@ -340,14 +336,14 @@ const CalendarRenderer = ({
340
336
  }, [view, focusedYearIndex, focusedMonthIndex]);
341
337
  const onNextClick = react.useCallback(() => {
342
338
  if (view === date.YEARS) {
343
- setYearOffset((prev) => prev + VIEW_TOTAL_YEARS);
339
+ setYearOffset((prev) => prev + totalYears);
344
340
  } else {
345
341
  navigation.toNext();
346
342
  }
347
343
  }, [navigation, view]);
348
344
  const onPreviousClick = react.useCallback(() => {
349
345
  if (view === date.YEARS) {
350
- setYearOffset((prev) => prev - VIEW_TOTAL_YEARS);
346
+ setYearOffset((prev) => prev - totalYears);
351
347
  return;
352
348
  }
353
349
  navigation.toPrev();
@@ -394,7 +390,7 @@ const CalendarRenderer = ({
394
390
  setYearOffset(0);
395
391
  }, [selectedYear, year, navigation, onMonthSelect]);
396
392
  const onMonthGridKeyDown = react.useCallback((e, index) => {
397
- const columns = VIEW_GRID_MONTHS.columns;
393
+ const columns = viewGridMonths.columns;
398
394
  const totalItems = 12;
399
395
  let newIndex = index;
400
396
  switch (e.key) {
@@ -426,8 +422,8 @@ const CalendarRenderer = ({
426
422
  monthGridRef.current[newIndex]?.focus();
427
423
  }, [onMonthSelection]);
428
424
  const onYearGridKeyDown = react.useCallback((e, index, yearValue) => {
429
- const columns = VIEW_GRID_YEARS.columns;
430
- const totalItems = VIEW_TOTAL_YEARS;
425
+ const columns = viewGridYears.columns;
426
+ const totalItems = totalYears;
431
427
  let newIndex = index;
432
428
  switch (e.key) {
433
429
  case "ArrowRight":
@@ -462,10 +458,10 @@ const CalendarRenderer = ({
462
458
  headerDate.setFullYear(year);
463
459
  const getHeaderTitle = (view2) => {
464
460
  if (view2 === date.MONTHS) {
465
- return TXT_ON_MONTH_SELECT;
461
+ return "Month";
466
462
  }
467
463
  if (view2 === date.YEARS) {
468
- return TXT_ON_YEAR_SELECT;
464
+ return "Year";
469
465
  }
470
466
  return utils.headerDateFormatter.format(headerDate);
471
467
  };
@@ -484,7 +480,7 @@ const CalendarRenderer = ({
484
480
  const baseYear = year + yearOffset;
485
481
  const todayYear = (/* @__PURE__ */ new Date()).getFullYear();
486
482
  const selectedYear2 = selectedDate?.getFullYear();
487
- for (let i = -VIEW_NAVIGATION_OFFSET_YEARS; i <= VIEW_NAVIGATION_OFFSET_YEARS; i++) {
483
+ for (let i = -yearsOffset; i <= yearsOffset; i++) {
488
484
  years.push(baseYear + i);
489
485
  }
490
486
  return /* @__PURE__ */ jsxRuntime.jsx(YearsGrid, { "data-testid": "years-grid", role: "grid", "aria-label": "Select year", children: years.map((currYear, index) => /* @__PURE__ */ jsxRuntime.jsx(GridCell, { type: "button", ref: (el) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Common.cjs","sources":["../../../../src/components/DatePicker/Common.tsx"],"sourcesContent":["import { styled } from 'styled-components';\nimport { InputElement, InputStartContent, InputWrapper } from '@/components/InputWrapper';\nimport {\n KeyboardEvent,\n ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { Icon, IconName } from '@/components/Icon';\nimport { Container } from '@/components/Container';\nimport { useCalendar, UseCalendarOptions } from '@h6s/calendar';\nimport { IconButton, IconButtonSize } from '@/components/IconButton';\nimport { Text } from '@/components/Text';\nimport {\n headerDateFormatter,\n selectedDateFormatter,\n selectedDateTimeFormatter,\n selectedDateTimeFormatterWithSeconds,\n weekdayFormatter,\n} from './utils';\nimport { getMonthNames, DAYS, MONTHS, YEARS, DAYS_IN_WEEK } from '@/utils/date';\nimport { Dropdown } from '@/components/Dropdown';\n\nconst explicitWidth = '250px';\nconst TXT_ON_MONTH_SELECT = 'Month';\nconst TXT_ON_YEAR_SELECT = 'Year';\n\nconst VIEW_GRID_MONTHS = {\n columns: 4,\n rows: 3,\n} as const;\n\nconst VIEW_GRID_YEARS = {\n columns: 3,\n rows: 3,\n} as const;\n\nconst VIEW_TOTAL_YEARS = VIEW_GRID_YEARS.columns * VIEW_GRID_YEARS.rows;\nconst VIEW_NAVIGATION_OFFSET_YEARS = Math.floor(VIEW_TOTAL_YEARS / 2);\n\nconst HighlightedInputWrapper = styled(InputWrapper)<{\n $isActive: boolean;\n $width?: string;\n}>`\n ${({ $isActive, $width, theme }) => {\n return `border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isActive\n ? theme.click.datePicker.dateOption.color.stroke.active\n : theme.click.field.color.stroke.default\n };\n width: ${$width ? $width : explicitWidth};\n ${$width && `min-width: ${explicitWidth};`}\n `;\n }}\n}`;\n\ninterface DatePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n partialMonth?: number;\n partialYear?: number;\n placeholder?: string;\n selectedDate?: Date;\n}\n\nconst formatPartialDate = (\n selectedDate?: Date,\n partialYear?: number,\n partialMonth?: number\n): string => {\n if (typeof partialYear === 'number' && typeof partialMonth === 'number') {\n const date = new Date(partialYear, partialMonth, 1);\n return headerDateFormatter.format(date);\n }\n if (typeof partialYear === 'number') {\n return String(partialYear);\n }\n if (selectedDate instanceof Date) {\n return selectedDateFormatter.format(selectedDate);\n }\n return '';\n};\n\nexport const DatePickerInput = ({\n isActive,\n disabled,\n id,\n partialMonth,\n partialYear,\n placeholder,\n selectedDate,\n}: DatePickerInputProps) => {\n const defaultId = useId();\n const formattedSelectedDate = formatPartialDate(\n selectedDate,\n partialYear,\n partialMonth\n );\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n data-testid=\"datepicker-input\"\n placeholder={placeholder}\n readOnly\n value={formattedSelectedDate}\n />\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n}\n\nexport const DateRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n}: DateRangePickerInputProps) => {\n const defaultId = useId();\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {selectedDateFormatter.format(selectedStartDate)} –{' '}\n {selectedDateFormatter.format(selectedEndDate)}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {selectedDateFormatter.format(selectedStartDate)}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n }\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"daterangepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateTimeRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n shouldShowSeconds?: boolean;\n}\n\nexport const DateTimeRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n shouldShowSeconds,\n}: DateTimeRangePickerInputProps) => {\n const defaultId = useId();\n\n const dateTimeFormatter = shouldShowSeconds\n ? selectedDateTimeFormatterWithSeconds\n : selectedDateTimeFormatter;\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {dateTimeFormatter\n .format(selectedStartDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}{' '}\n –{' '}\n {dateTimeFormatter\n .format(selectedEndDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {dateTimeFormatter\n .format(selectedStartDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n } else if (selectedEndDate) {\n formattedValue = (\n <span>\n <Text\n color=\"muted\"\n component=\"span\"\n >\n start date –{' '}\n </Text>\n {dateTimeFormatter\n .format(selectedEndDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}\n </span>\n );\n }\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n $width=\"max-content\"\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"datetimepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\nconst DatePickerContainer = styled(Container)`\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.default};\n`;\n\nconst ClickableTitle = styled.button`\n ${({ theme }) => `\n color: ${theme.click.datePicker.color.title.default};\n font: ${theme.click.datePicker.typography.title.default};\n border: 1px solid transparent;\n `}\n\n background: transparent;\n cursor: pointer;\n user-select: none;\n padding: 0.25rem 0.5rem;\n border-radius: ${({ theme }) => theme.click.datePicker.dateOption.radii.default};\n outline: none;\n\n &:hover {\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.hover};\n }\n\n &:focus,\n &:focus-visible {\n border-color: ${({ theme }) => theme.click.datePicker.dateOption.color.stroke.hover};\n }\n`;\n\nconst UnselectableTitle = styled.h2`\n ${({ theme }) => `\n color: ${theme.click.datePicker.color.title.default};\n font: ${theme.click.datePicker.typography.title.default};\n `}\n\n margin: 0;\n padding: 0;\n user-select: none;\n`;\n\nconst GridContainer = styled.div`\n display: grid;\n padding: 0.25rem 0 0;\n\n ${({ theme }) => `\n gap: calc(${theme.click.datePicker.space.gap} * 2);\n `}\n`;\n\nconst MonthsGrid = styled(GridContainer)`\n grid-template-columns: repeat(${VIEW_GRID_MONTHS.columns}, 1fr);\n grid-template-rows: repeat(${VIEW_GRID_MONTHS.rows}, 1fr);\n`;\n\nconst YearsGrid = styled(GridContainer)`\n grid-template-columns: repeat(${VIEW_GRID_YEARS.columns}, 1fr);\n grid-template-rows: repeat(${VIEW_GRID_YEARS.rows}, 1fr);\n`;\n\nconst GridCell = styled.button<{ $isActive?: boolean; $isPresent?: boolean }>`\n ${({ theme }) => `\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.stroke.default};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};\n font: ${theme.click.datePicker.dateOption.typography.label.default};\n color: ${theme.click.datePicker.dateOption.color.label.default};\n background: ${theme.click.datePicker.dateOption.color.background.default};\n `}\n\n ${({ $isActive, theme }) =>\n $isActive &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.active};\n color: ${theme.click.datePicker.dateOption.color.label.active};\n `}\n\n ${({ $isActive, $isPresent, theme }) =>\n $isPresent &&\n !$isActive &&\n `background: ${theme.click.datePicker.dateOption.color.background.range};`}\n\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px 4px;\n cursor: pointer;\n text-align: center;\n min-height: 26px;\n\n ${({ theme }) => `\n &:hover {\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n\n &:focus {\n outline: none;\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n\n &:focus-visible {\n outline: none;\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n `}\n`;\n\nconst DateTable = styled.table`\n border-collapse: separate;\n border-spacing: 0;\n font: ${({ theme }) => theme.typography.styles.product.text.normal.md};\n table-layout: fixed;\n user-select: none;\n width: ${explicitWidth};\n\n thead tr {\n height: ${({ theme }) => theme.click.datePicker.dateOption.size.height};\n }\n\n tbody {\n cursor: pointer;\n }\n\n td,\n th {\n padding: 4px;\n }\n`;\n\nconst DateTableHeader = styled.th`\n ${({ theme }) => `\n color: ${theme.click.datePicker.color.daytitle.default};\n font: ${theme.click.datePicker.typography.daytitle.default};\n `}\n\n width: 14%;\n`;\n\nexport const DateTableCell = styled.td<{\n $isCurrentMonth?: boolean;\n $isDisabled?: boolean;\n $isSelected?: boolean;\n $isPresent?: boolean;\n}>`\n ${({ theme }) => `\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.stroke.default};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};\n font: ${theme.click.datePicker.dateOption.typography.label.default};\n `}\n\n ${({ $isCurrentMonth, $isDisabled, theme }) =>\n (!$isCurrentMonth || $isDisabled) &&\n `\n color: ${theme.click.datePicker.dateOption.color.label.disabled};\n font: ${theme.click.datePicker.dateOption.typography.label.disabled};\n `}\n\n ${({ $isSelected, theme }) =>\n $isSelected &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.active} !important;\n color: ${theme.click.datePicker.dateOption.color.label.active};\n `}\n\n ${({ $isSelected, $isPresent, theme }) =>\n $isPresent &&\n !$isSelected &&\n `background: ${theme.click.datePicker.dateOption.color.background.range};`}\n\n text-align: center;\n outline: none;\n\n &:hover {\n ${({ $isDisabled, $isPresent, theme }) =>\n `border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };\n background: ${$isPresent ? theme.click.datePicker.dateOption.color.background.range : ''};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};`};\n }\n\n &:focus {\n ${({ $isDisabled, theme }) =>\n `outline: none;\n border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };`};\n }\n\n &:focus-visible {\n ${({ $isDisabled, theme }) =>\n `outline: none;\n border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };`};\n }\n`;\n\nexport const StyledDropdownItem = styled(Dropdown.Item)`\n box-sizing: content-box;\n min-height: 24px;\n`;\n\nexport type Body = ReturnType<typeof useCalendar>['body'];\n\ninterface CalendarRendererProps {\n calendarOptions?: UseCalendarOptions;\n children: (body: Body) => ReactNode;\n allowYearMonthSelection?: boolean;\n onYearSelect?: (year: number) => void;\n onMonthSelect?: (year: number, month: number) => void;\n selectedDate?: Date;\n}\n\nconst monthAbbreviations = getMonthNames('short');\n\ntype DateViewOption = 'days' | 'months' | 'years';\n\nconst PickerNavControl = styled(IconButton)`\n && {\n &:focus,\n &:focus-visible {\n outline: none;\n border: ${({ theme }) => theme.click.datePicker.dateOption.stroke} solid\n ${({ theme }) => theme.click.datePicker.dateOption.color.stroke.hover};\n }\n }\n`;\n\nconst EmptyDateSelectNav = styled(PickerNavControl)`\n visibility: hidden;\n pointer-events: none;\n`;\n\nconst DateSelectNav = ({\n id,\n icon,\n onClick,\n onKeyDown,\n view,\n size = 'sm',\n tabIndex,\n buttonRef,\n}: {\n id: string;\n icon: Extract<IconName, 'chevron-left' | 'chevron-right'>;\n onClick: () => void;\n onKeyDown?: (e: KeyboardEvent<HTMLButtonElement>) => void;\n view: DateViewOption;\n size?: IconButtonSize;\n tabIndex?: number;\n buttonRef?: (el: HTMLButtonElement | null) => void;\n}) => {\n if (view === MONTHS) {\n return (\n <EmptyDateSelectNav\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n onKeyDown={onKeyDown}\n />\n );\n }\n return (\n <PickerNavControl\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n onClick={onClick}\n onKeyDown={onKeyDown}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n />\n );\n};\n\nexport const CalendarRenderer = ({\n calendarOptions = {},\n children,\n allowYearMonthSelection = true,\n onYearSelect,\n onMonthSelect,\n selectedDate,\n ...props\n}: CalendarRendererProps) => {\n const { body, headers, month, navigation, year } = useCalendar({\n defaultWeekStart: 1,\n ...calendarOptions,\n });\n\n const [view, setView] = useState<DateViewOption>(DAYS);\n const [selectedYear, setSelectedYear] = useState<number | null>(null);\n const [yearOffset, setYearOffset] = useState(0);\n const [focusedMonthIndex, setFocusedMonthIndex] = useState(month);\n const [focusedYearIndex, setFocusedYearIndex] = useState(VIEW_NAVIGATION_OFFSET_YEARS);\n\n const monthGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const yearGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const headerNavRefs = useRef<Array<HTMLButtonElement | null>>([null, null, null]);\n\n useEffect(() => {\n if (view === YEARS) {\n yearGridRef.current[focusedYearIndex]?.focus();\n } else if (view === MONTHS) {\n monthGridRef.current[focusedMonthIndex]?.focus();\n }\n }, [view, focusedYearIndex, focusedMonthIndex]);\n\n const onNextClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev + VIEW_TOTAL_YEARS);\n } else {\n navigation.toNext();\n }\n }, [navigation, view]);\n\n const onPreviousClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev - VIEW_TOTAL_YEARS);\n return;\n }\n\n navigation.toPrev();\n }, [navigation, view]);\n\n const onTitleClick = useCallback(() => {\n if (view !== DAYS) {\n return;\n }\n\n setView(YEARS);\n }, [view]);\n\n const onHeaderNavKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n const validRefs = headerNavRefs.current.filter(ref => {\n if (!ref) {\n return false;\n }\n return (\n ref.offsetParent !== null ||\n (!ref.hasAttribute('hidden') && ref.getAttribute('aria-hidden') !== 'true')\n );\n });\n\n const currentValidIndex = validRefs.indexOf(e.currentTarget);\n if (currentValidIndex === -1 || validRefs.length <= 1) {\n return;\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n const nextValidIndex = (currentValidIndex + 1) % validRefs.length;\n validRefs[nextValidIndex]?.focus();\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n const prevValidIndex =\n (currentValidIndex - 1 + validRefs.length) % validRefs.length;\n validRefs[prevValidIndex]?.focus();\n }\n }, []);\n\n const onYearSelection = useCallback(\n (yearValue: number) => {\n setSelectedYear(yearValue);\n setView(MONTHS);\n onYearSelect?.(yearValue);\n },\n [onYearSelect]\n );\n\n const onMonthSelection = useCallback(\n (monthIndex: number) => {\n const finalYear = typeof selectedYear === 'number' ? selectedYear : year;\n const newDate = new Date(finalYear, monthIndex, 1);\n\n navigation.setDate(newDate);\n onMonthSelect?.(finalYear, monthIndex);\n\n setView(DAYS);\n setSelectedYear(null);\n setYearOffset(0);\n },\n [selectedYear, year, navigation, onMonthSelect]\n );\n\n const onMonthGridKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, index: number) => {\n const columns = VIEW_GRID_MONTHS.columns;\n const totalItems = 12;\n let newIndex = index;\n\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n e.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n e.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n e.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n onMonthSelection(index);\n return;\n default:\n return;\n }\n\n setFocusedMonthIndex(newIndex);\n monthGridRef.current[newIndex]?.focus();\n },\n [onMonthSelection]\n );\n\n const onYearGridKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, index: number, yearValue: number) => {\n const columns = VIEW_GRID_YEARS.columns;\n const totalItems = VIEW_TOTAL_YEARS;\n let newIndex = index;\n\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n e.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n e.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n e.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n onYearSelection(yearValue);\n return;\n default:\n return;\n }\n\n setFocusedYearIndex(newIndex);\n yearGridRef.current[newIndex]?.focus();\n },\n [onYearSelection]\n );\n\n const headerDate = new Date();\n headerDate.setMonth(month);\n headerDate.setFullYear(year);\n\n const getHeaderTitle = (view: DateViewOption) => {\n if (view === MONTHS) {\n return TXT_ON_MONTH_SELECT;\n }\n\n if (view === YEARS) {\n return TXT_ON_YEAR_SELECT;\n }\n\n return headerDateFormatter.format(headerDate);\n };\n\n const renderMonthsGrid = () => {\n const today = new Date();\n const todayMonth = today.getMonth();\n const todayYear = today.getFullYear();\n const selectedMonth = selectedDate?.getMonth();\n const selectedYear = selectedDate?.getFullYear();\n\n return (\n <MonthsGrid\n data-testid=\"months-grid\"\n role=\"grid\"\n aria-label=\"Select month\"\n >\n {monthAbbreviations.map((abbr, index) => (\n <GridCell\n key={abbr}\n type=\"button\"\n ref={el => {\n monthGridRef.current[index] = el;\n }}\n $isActive={selectedDate && index === selectedMonth && year === selectedYear}\n $isPresent={index === todayMonth && year === todayYear}\n onClick={() => onMonthSelection(index)}\n onKeyDown={e => onMonthGridKeyDown(e, index)}\n data-testid={`month-cell-${index}`}\n tabIndex={index === focusedMonthIndex ? 0 : -1}\n aria-label={abbr}\n >\n {abbr}\n </GridCell>\n ))}\n </MonthsGrid>\n );\n };\n\n const renderYearsGrid = () => {\n const years: Array<number> = [];\n const baseYear = year + yearOffset;\n const todayYear = new Date().getFullYear();\n const selectedYear = selectedDate?.getFullYear();\n\n for (let i = -VIEW_NAVIGATION_OFFSET_YEARS; i <= VIEW_NAVIGATION_OFFSET_YEARS; i++) {\n years.push(baseYear + i);\n }\n\n return (\n <YearsGrid\n data-testid=\"years-grid\"\n role=\"grid\"\n aria-label=\"Select year\"\n >\n {years.map((currYear, index) => (\n <GridCell\n key={currYear}\n type=\"button\"\n ref={el => {\n yearGridRef.current[index] = el;\n }}\n $isActive={selectedDate && currYear === selectedYear}\n $isPresent={currYear === todayYear}\n onClick={() => onYearSelection(currYear)}\n onKeyDown={e => onYearGridKeyDown(e, index, currYear)}\n data-testid={`year-cell-${currYear}`}\n tabIndex={index === focusedYearIndex ? 0 : -1}\n aria-label={String(currYear)}\n >\n {currYear}\n </GridCell>\n ))}\n </YearsGrid>\n );\n };\n\n const renderTableContent = () => {\n if (view === MONTHS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderMonthsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n if (view === YEARS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderYearsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n return (\n <>\n <thead>\n <tr>\n {headers.weekDays.map(({ key, value: date }) => {\n return (\n <DateTableHeader key={key}>\n {weekdayFormatter.format(date)}\n </DateTableHeader>\n );\n })}\n </tr>\n </thead>\n <tbody>{children(body)}</tbody>\n </>\n );\n };\n\n return (\n <DatePickerContainer\n data-testid=\"datepicker-calendar-container\"\n isResponsive={false}\n fillWidth={false}\n orientation=\"vertical\"\n padding=\"sm\"\n {...props}\n >\n <Container\n isResponsive={false}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n <DateSelectNav\n id=\"calendar-previous-month\"\n icon=\"chevron-left\"\n onClick={onPreviousClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[0] = el;\n } else {\n headerNavRefs.current[0] = null;\n }\n }}\n />\n {view === DAYS && allowYearMonthSelection ? (\n <ClickableTitle\n ref={el => {\n headerNavRefs.current[1] = el as HTMLButtonElement;\n }}\n onClick={onTitleClick}\n onKeyDown={onHeaderNavKeyDown}\n data-testid=\"calendar-title\"\n tabIndex={0}\n >\n {getHeaderTitle(view)}\n </ClickableTitle>\n ) : (\n <UnselectableTitle>{getHeaderTitle(view)}</UnselectableTitle>\n )}\n <DateSelectNav\n id=\"calendar-next-month\"\n icon=\"chevron-right\"\n onClick={onNextClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[2] = el;\n } else {\n headerNavRefs.current[2] = null;\n }\n }}\n />\n </Container>\n <DateTable>{renderTableContent()}</DateTable>\n </DatePickerContainer>\n );\n};\n"],"names":["explicitWidth","TXT_ON_MONTH_SELECT","TXT_ON_YEAR_SELECT","VIEW_GRID_MONTHS","columns","rows","VIEW_GRID_YEARS","VIEW_TOTAL_YEARS","VIEW_NAVIGATION_OFFSET_YEARS","Math","floor","HighlightedInputWrapper","styled","InputWrapper","withConfig","componentId","$isActive","$width","theme","click","datePicker","dateOption","stroke","color","active","field","default","formatPartialDate","selectedDate","partialYear","partialMonth","date","Date","headerDateFormatter","format","String","selectedDateFormatter","DatePickerInput","isActive","disabled","id","placeholder","defaultId","useId","formattedSelectedDate","jsx","InputStartContent","Icon","InputElement","DateRangePickerInput","selectedEndDate","selectedStartDate","formattedValue","Text","DateTimeRangePickerInput","shouldShowSeconds","dateTimeFormatter","selectedDateTimeFormatterWithSeconds","selectedDateTimeFormatter","replace","jsxs","DatePickerContainer","Container","background","ClickableTitle","button","title","typography","radii","hover","UnselectableTitle","h2","GridContainer","div","space","gap","MonthsGrid","YearsGrid","GridCell","label","$isPresent","range","DateTable","table","styles","product","text","normal","md","size","height","DateTableHeader","th","daytitle","DateTableCell","td","$isCurrentMonth","$isDisabled","$isSelected","StyledDropdownItem","Dropdown","Item","monthAbbreviations","getMonthNames","PickerNavControl","IconButton","EmptyDateSelectNav","DateSelectNav","icon","onClick","onKeyDown","view","tabIndex","buttonRef","MONTHS","CalendarRenderer","calendarOptions","children","allowYearMonthSelection","onYearSelect","onMonthSelect","props","body","headers","month","navigation","year","useCalendar","defaultWeekStart","setView","useState","DAYS","selectedYear","setSelectedYear","yearOffset","setYearOffset","focusedMonthIndex","setFocusedMonthIndex","focusedYearIndex","setFocusedYearIndex","monthGridRef","useRef","yearGridRef","headerNavRefs","useEffect","YEARS","current","focus","onNextClick","useCallback","prev","toNext","onPreviousClick","toPrev","onTitleClick","onHeaderNavKeyDown","e","validRefs","filter","ref","offsetParent","hasAttribute","getAttribute","currentValidIndex","indexOf","currentTarget","length","key","preventDefault","nextValidIndex","prevValidIndex","onYearSelection","yearValue","onMonthSelection","monthIndex","finalYear","newDate","setDate","onMonthGridKeyDown","index","totalItems","newIndex","onYearGridKeyDown","headerDate","setMonth","setFullYear","getHeaderTitle","renderMonthsGrid","today","todayMonth","getMonth","todayYear","getFullYear","selectedMonth","map","abbr","el","renderYearsGrid","years","baseYear","i","push","currYear","renderTableContent","DAYS_IN_WEEK","Fragment","weekDays","value","weekdayFormatter"],"mappings":";;;;;;;;;;;;;;;;;AA0BA,MAAMA,aAAAA,GAAgB,OAAA;AACtB,MAAMC,mBAAAA,GAAsB,OAAA;AAC5B,MAAMC,kBAAAA,GAAqB,MAAA;AAE3B,MAAMC,gBAAAA,GAAmB;AAAA,EACvBC,OAAAA,EAAS,CAAA;AAAA,EACTC,IAAAA,EAAM;AACR,CAAA;AAEA,MAAMC,eAAAA,GAAkB;AAAA,EACtBF,OAAAA,EAAS,CAAA;AAAA,EACTC,IAAAA,EAAM;AACR,CAAA;AAEA,MAAME,gBAAAA,GAAmBD,eAAAA,CAAgBF,OAAAA,GAAUE,eAAAA,CAAgBD,IAAAA;AACnE,MAAMG,4BAAAA,GAA+BC,IAAAA,CAAKC,KAAAA,CAAMH,gBAAAA,GAAmB,CAAC,CAAA;AAEpE,MAAMI,uBAAAA,GAA0BC,uBAAAA,CAAOC,yBAAY,CAAA,CAACC,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,GAAA,GAIhD,CAAC;AAAA,EAAEC,SAAAA;AAAAA,EAAWC,MAAAA;AAAAA,EAAQC;AAAM,CAAA,KAAM;AAClC,EAAA,OAAO,CAAA,QAAA,EAAWA,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,WAAWC,MAAM,CAAA,OAAA,EACxDN,YACIE,KAAAA,CAAMC,KAAAA,CAAMC,WAAWC,UAAAA,CAAWE,KAAAA,CAAMD,OAAOE,MAAAA,GAC/CN,KAAAA,CAAMC,MAAMM,KAAAA,CAAMF,KAAAA,CAAMD,OAAOI,OAAO,CAAA;AAAA,WAAA,EAEnCT,MAAAA,GAASA,SAASjB,aAAa,CAAA;AAAA,IAAA,EACtCiB,MAAAA,IAAU,CAAA,WAAA,EAAcjB,aAAa,CAAA,CAAA,CAAG;AAAA,IAAA,CAAA;AAE5C,CAAC,CAAA;AAaH,MAAM2B,iBAAAA,GAAoBA,CACxBC,YAAAA,EACAC,WAAAA,EACAC,YAAAA,KACW;AACX,EAAA,IAAI,OAAOD,WAAAA,KAAgB,QAAA,IAAY,OAAOC,iBAAiB,QAAA,EAAU;AACvE,IAAA,MAAMC,IAAAA,GAAO,IAAIC,IAAAA,CAAKH,WAAAA,EAAaC,cAAc,CAAC,CAAA;AAClD,IAAA,OAAOG,yBAAAA,CAAoBC,OAAOH,IAAI,CAAA;AAAA,EACxC;AACA,EAAA,IAAI,OAAOF,gBAAgB,QAAA,EAAU;AACnC,IAAA,OAAOM,OAAON,WAAW,CAAA;AAAA,EAC3B;AACA,EAAA,IAAID,wBAAwBI,IAAAA,EAAM;AAChC,IAAA,OAAOI,2BAAAA,CAAsBF,OAAON,YAAY,CAAA;AAAA,EAClD;AACA,EAAA,OAAO,EAAA;AACT,CAAA;AAEO,MAAMS,kBAAkBA,CAAC;AAAA,EAC9BC,QAAAA;AAAAA,EACAC,QAAAA;AAAAA,EACAC,EAAAA;AAAAA,EACAV,YAAAA;AAAAA,EACAD,WAAAA;AAAAA,EACAY,WAAAA;AAAAA,EACAb;AACoB,CAAA,KAAM;AAC1B,EAAA,MAAMc,YAAYC,WAAAA,EAAM;AACxB,EAAA,MAAMC,qBAAAA,GAAwBjB,iBAAAA,CAC5BC,YAAAA,EACAC,WAAAA,EACAC,YACF,CAAA;AAEA,EAAA,uCACG,uBAAA,EAAA,EACC,SAAA,EAAWQ,UACX,QAAA,EACA,EAAA,EAAIE,MAAME,SAAAA,EAEV,QAAA,EAAA;AAAA,oBAAAG,cAAA,CAACC,8BAAA,EAAA,EACC,QAAA,kBAAAD,cAAA,CAACE,SAAA,EAAA,EAAK,IAAA,EAAK,YAAU,CAAA,EACvB,CAAA;AAAA,oBACAF,cAAA,CAACG,yBAAA,EAAA,EACC,gBAAA,EAAgB,IAAA,EAChB,aAAA,EAAY,oBACZ,WAAA,EACA,QAAA,EAAQ,IAAA,EACR,KAAA,EAAOJ,qBAAAA,EAAsB;AAAA,GAAA,EAEjC,CAAA;AAEJ;AAWO,MAAMK,uBAAuBA,CAAC;AAAA,EACnCX,QAAAA;AAAAA,EACAC,QAAAA;AAAAA,EACAC,EAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAS,eAAAA;AAAAA,EACAC;AACyB,CAAA,KAAM;AAC/B,EAAA,MAAMT,YAAYC,WAAAA,EAAM;AAExB,EAAA,IAAIS,cAAAA,kCACDC,SAAA,EAAA,EACC,KAAA,EAAM,SACN,SAAA,EAAU,MAAA,EAETZ,yBAAe,EAAA,EAClB,CAAA;AAEF,EAAA,IAAIU,iBAAAA,EAAmB;AACrB,IAAA,IAAID,eAAAA,EAAiB;AACnBE,MAAAA,cAAAA,mCACG,MAAA,EAAA,EACEhB,QAAAA,EAAAA;AAAAA,QAAAA,2BAAAA,CAAsBF,OAAOiB,iBAAiB,CAAA;AAAA,QAAE,IAAA;AAAA,QAAG,GAAA;AAAA,QACnDf,2BAAAA,CAAsBF,OAAOgB,eAAe;AAAA,OAAA,EAC/C,CAAA;AAAA,IAEJ,CAAA,MAAO;AACLE,MAAAA,cAAAA,mCACG,MAAA,EAAA,EACEhB,QAAAA,EAAAA;AAAAA,QAAAA,2BAAAA,CAAsBF,OAAOiB,iBAAiB,CAAA;AAAA,QAAG,GAAA;AAAA,uCACjDE,SAAA,EAAA,EACC,KAAA,EAAM,OAAA,EACN,SAAA,EAAU,QAAM,QAAA,EAAA,YAAA,EAGlB;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ;AAAA,EACF;AAEA,EAAA,uCACG,uBAAA,EAAA,EACC,SAAA,EAAWf,UACX,QAAA,EACA,EAAA,EAAIE,MAAME,SAAAA,EAEV,QAAA,EAAA;AAAA,oBAAAG,cAAA,CAACC,8BAAA,EAAA,EACC,QAAA,kBAAAD,cAAA,CAACE,SAAA,EAAA,EAAK,IAAA,EAAK,YAAU,CAAA,EACvB,CAAA;AAAA,oBACAF,cAAA,CAACG,6BACC,gBAAA,EAAgB,IAAA,EAChB,IAAG,KAAA,EACH,aAAA,EAAY,yBAEXI,QAAAA,EAAAA,cAAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAYO,MAAME,2BAA2BA,CAAC;AAAA,EACvChB,QAAAA;AAAAA,EACAC,QAAAA;AAAAA,EACAC,EAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAS,eAAAA;AAAAA,EACAC,iBAAAA;AAAAA,EACAI;AAC6B,CAAA,KAAM;AACnC,EAAA,MAAMb,YAAYC,WAAAA,EAAM;AAExB,EAAA,MAAMa,iBAAAA,GAAoBD,oBACtBE,0CAAAA,GACAC,+BAAAA;AAEJ,EAAA,IAAIN,cAAAA,kCACDC,SAAA,EAAA,EACC,KAAA,EAAM,SACN,SAAA,EAAU,MAAA,EAETZ,yBAAe,EAAA,EAClB,CAAA;AAEF,EAAA,IAAIU,iBAAAA,EAAmB;AACrB,IAAA,IAAID,eAAAA,EAAiB;AACnBE,MAAAA,cAAAA,mCACG,MAAA,EAAA,EACEI,QAAAA,EAAAA;AAAAA,QAAAA,iBAAAA,CACEtB,MAAAA,CAAOiB,iBAAiB,CAAA,CACxBQ,OAAAA,CAAQ,MAAM,IAAI,CAAA,CAClBA,OAAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAG,GAAA;AAAA,QACzB,GAAA;AAAA,QACDH,iBAAAA,CACEtB,MAAAA,CAAOgB,eAAe,CAAA,CACtBS,OAAAA,CAAQ,MAAM,IAAI,CAAA,CAClBA,OAAAA,CAAQ,IAAA,EAAM,IAAI;AAAA,OAAA,EACvB,CAAA;AAAA,IAEJ,CAAA,MAAO;AACLP,MAAAA,cAAAA,mCACG,MAAA,EAAA,EACEI,QAAAA,EAAAA;AAAAA,QAAAA,iBAAAA,CACEtB,MAAAA,CAAOiB,iBAAiB,CAAA,CACxBQ,OAAAA,CAAQ,MAAM,IAAI,CAAA,CAClBA,OAAAA,CAAQ,IAAA,EAAM,IAAI,CAAA;AAAA,QAAG,GAAA;AAAA,uCACvBN,SAAA,EAAA,EACC,KAAA,EAAM,OAAA,EACN,SAAA,EAAU,QAAM,QAAA,EAAA,YAAA,EAGlB;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ;AAAA,EACF,WAAWH,eAAAA,EAAiB;AAC1BE,IAAAA,cAAAA,mCACG,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAQ,eAAA,CAACP,SAAA,EAAA,EACC,KAAA,EAAM,OAAA,EACN,SAAA,EAAU,MAAA,EAAM,QAAA,EAAA;AAAA,QAAA,cAAA;AAAA,QAEH;AAAA,OAAA,EACf,CAAA;AAAA,MACCG,iBAAAA,CACEtB,MAAAA,CAAOgB,eAAe,CAAA,CACtBS,OAAAA,CAAQ,MAAM,IAAI,CAAA,CAClBA,OAAAA,CAAQ,IAAA,EAAM,IAAI;AAAA,KAAA,EACvB,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEC,eAAA,CAAC,2BACC,SAAA,EAAWtB,QAAAA,EACX,UACA,EAAA,EAAIE,EAAAA,IAAME,SAAAA,EACV,MAAA,EAAO,aAAA,EAEP,QAAA,EAAA;AAAA,oBAAAG,cAAA,CAACC,8BAAA,EAAA,EACC,QAAA,kBAAAD,cAAA,CAACE,SAAA,EAAA,EAAK,IAAA,EAAK,YAAU,CAAA,EACvB,CAAA;AAAA,oBACAF,cAAA,CAACG,6BACC,gBAAA,EAAgB,IAAA,EAChB,IAAG,KAAA,EACH,aAAA,EAAY,wBAEXI,QAAAA,EAAAA,cAAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,MAAMS,mBAAAA,GAAsBjD,uBAAAA,CAAOkD,mBAAS,CAAA,CAAChD,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,aAAA,EAAA,GAAA,GAC7B,CAAC;AAAA,EAAEG;AAAM,CAAA,KACrBA,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMwC,WAAWrC,OAAO,CAAA;AAG9D,MAAMsC,cAAAA,GAAiBpD,uBAAAA,CAAOqD,MAAAA,CAAMnD,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,+FAAA,EAAA,qCAAA,yCAAA,EAAA,IAAA,GAChC,CAAC;AAAA,EAAEG;AAAM,CAAA,KAAM;AAAA,WAAA,EACNA,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWG,KAAAA,CAAM2C,MAAMxC,OAAO,CAAA;AAAA,UAAA,EAC3CR,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAW+C,UAAAA,CAAWD,MAAMxC,OAAO,CAAA;AAAA;AAAA,EAAA,CAAA,EAQxC,CAAC;AAAA,EAAER;AAAM,CAAA,KAAMA,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAW+C,KAAAA,CAAM1C,SAIxD,CAAC;AAAA,EAAER;AAAM,CAAA,KACrBA,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,WAAWE,KAAAA,CAAMwC,UAAAA,CAAWM,OAKrC,CAAC;AAAA,EAAEnD;AAAM,CAAA,KAAMA,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMD,OAAO+C,KAAK,CAAA;AAIvF,MAAMC,iBAAAA,GAAoB1D,uBAAAA,CAAO2D,EAAAA,CAAEzD,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,uCAAA,GAC/B,CAAC;AAAA,EAAEG;AAAM,CAAA,KAAM;AAAA,WAAA,EACNA,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWG,KAAAA,CAAM2C,MAAMxC,OAAO,CAAA;AAAA,UAAA,EAC3CR,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAW+C,UAAAA,CAAWD,MAAMxC,OAAO,CAAA;AAAA,EAAA,CACxD,CAAA;AAOH,MAAM8C,aAAAA,GAAgB5D,uBAAAA,CAAO6D,GAAAA,CAAG3D,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,mCAAA,EAAA,EAAA,GAI5B,CAAC;AAAA,EAAEG;AAAM,CAAA,KAAM;AAAA,cAAA,EACHA,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWsD,KAAAA,CAAMC,GAAG,CAAA;AAAA,EAAA,CAC7C,CAAA;AAGH,MAAMC,UAAAA,GAAahE,uBAAAA,CAAO4D,aAAa,CAAA,CAAC1D,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,+BAAA,EAAA,kCAAA,EAAA,QAAA,CAAA,EACNZ,gBAAAA,CAAiBC,OAAAA,EACpBD,gBAAAA,CAAiBE,IAAI,CAAA;AAGpD,MAAMwE,SAAAA,GAAYjE,uBAAAA,CAAO4D,aAAa,CAAA,CAAC1D,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,+BAAA,EAAA,kCAAA,EAAA,QAAA,CAAA,EACLT,eAAAA,CAAgBF,OAAAA,EACnBE,eAAAA,CAAgBD,IAAI,CAAA;AAGnD,MAAMyE,QAAAA,GAAWlE,uBAAAA,CAAOqD,MAAAA,CAAMnD,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,KAAA,2HAAA,EAAA,EAAA,GAC1B,CAAC;AAAA,EAAEG;AAAM,CAAA,KAAM;AAAA,YAAA,EACLA,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWC,MAAM,CAAA,OAAA,EAAUJ,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMD,MAAAA,CAAOI,OAAO,CAAA;AAAA,mBAAA,EACjGR,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAW+C,MAAM1C,OAAO,CAAA;AAAA,UAAA,EACxDR,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAW8C,UAAAA,CAAWY,MAAMrD,OAAO,CAAA;AAAA,WAAA,EACzDR,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMwD,MAAMrD,OAAO,CAAA;AAAA,gBAAA,EAChDR,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMwC,WAAWrC,OAAO,CAAA;AAAA,EAAA,CAAA,EAGxE,CAAC;AAAA,EAAEV,SAAAA;AAAAA,EAAWE;AAAM,CAAA,KACpBF,SAAAA,IACA;AAAA,gBAAA,EACcE,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMwC,WAAWvC,MAAM,CAAA;AAAA,WAAA,EAC9DN,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMwD,MAAMvD,MAAM,CAAA;AAAA,EAAA,CAAA,EAG7D,CAAC;AAAA,EAAER,SAAAA;AAAAA,EAAWgE,UAAAA;AAAAA,EAAY9D;AAAM,CAAA,KAChC8D,UAAAA,IACA,CAAChE,SAAAA,IACD,CAAA,YAAA,EAAeE,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMwC,UAAAA,CAAWkB,KAAK,CAAA,CAAA,CAAA,EAUvE,CAAC;AAAA,EAAE/D;AAAM,CAAA,KAAM;AAAA;AAAA,oBAAA,EAEGA,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMD,OAAO+C,KAAK,CAAA;AAAA;;AAAA;AAAA;AAAA,oBAAA,EAKpDnD,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMD,OAAO+C,KAAK,CAAA;AAAA;;AAAA;AAAA;AAAA,oBAAA,EAKpDnD,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMD,OAAO+C,KAAK,CAAA;AAAA;AAAA,EAAA,CAEvE,CAAA;AAGH,MAAMa,SAAAA,GAAYtE,uBAAAA,CAAOuE,KAAAA,CAAKrE,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,EAAA,CAAA,iDAAA,EAAA,+CAAA,mBAAA,EAAA,6CAAA,GAGpB,CAAC;AAAA,EAAEG;AAAM,CAAA,KAAMA,KAAAA,CAAMiD,WAAWiB,MAAAA,CAAOC,OAAAA,CAAQC,KAAKC,MAAAA,CAAOC,EAAAA,EAG1DxF,eAGG,CAAC;AAAA,EAAEkB;AAAM,CAAA,KAAMA,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWoE,KAAKC,MAAM,CAAA;AAa1E,MAAMC,eAAAA,GAAkB/E,uBAAAA,CAAOgF,EAAAA,CAAE9E,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,aAAA,GAC7B,CAAC;AAAA,EAAEG;AAAM,CAAA,KAAM;AAAA,WAAA,EACNA,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWG,KAAAA,CAAMsE,SAASnE,OAAO,CAAA;AAAA,UAAA,EAC9CR,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAW+C,UAAAA,CAAW0B,SAASnE,OAAO,CAAA;AAAA,EAAA,CAC3D,CAAA;AAKI,MAAMoE,aAAAA,GAAgBlF,uBAAAA,CAAOmF,EAAAA,CAAEjF,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,EAMlC,CAAC;AAAA,EAAEG;AAAM,CAAA,KAAM;AAAA,YAAA,EACLA,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWC,MAAM,CAAA,OAAA,EAAUJ,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMD,MAAAA,CAAOI,OAAO,CAAA;AAAA,mBAAA,EACjGR,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAW+C,MAAM1C,OAAO,CAAA;AAAA,UAAA,EACxDR,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAW8C,UAAAA,CAAWY,MAAMrD,OAAO,CAAA;AAAA,EAAA,CAAA,EAGlE,CAAC;AAAA,EAAEsE,eAAAA;AAAAA,EAAiBC,WAAAA;AAAAA,EAAa/E;AAAM,CAAA,KAAA,CACtC,CAAC8E,mBAAmBC,WAAAA,KACrB;AAAA,WAAA,EACS/E,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMwD,MAAMxC,QAAQ,CAAA;AAAA,UAAA,EACvDrB,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAW8C,UAAAA,CAAWY,MAAMxC,QAAQ,CAAA;AAAA,EAAA,CAAA,EAGnE,CAAC;AAAA,EAAE2D,WAAAA;AAAAA,EAAahF;AAAM,CAAA,KACtBgF,WAAAA,IACA;AAAA,kBAAA,EACgBhF,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMwC,WAAWvC,MAAM,CAAA;AAAA,aAAA,EAC9DN,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMwD,MAAMvD,MAAM,CAAA;AAAA,IAAA,CAAA,EAG/D,CAAC;AAAA,EAAE0E,WAAAA;AAAAA,EAAalB,UAAAA;AAAAA,EAAY9D;AAAM,CAAA,KAClC8D,UAAAA,IACA,CAACkB,WAAAA,IACD,CAAA,YAAA,EAAehF,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMwC,UAAAA,CAAWkB,KAAK,CAAA,CAAA,CAAA,EAMrE,CAAC;AAAA,EAAEgB,WAAAA;AAAAA,EAAajB,UAAAA;AAAAA,EAAY9D;AAAM,CAAA,KAClC,CAAA,QAAA,EAAWA,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,WAAWC,MAAM,CAAA,OAAA,EACjD2E,cACI/E,KAAAA,CAAMC,KAAAA,CAAMC,WAAWC,UAAAA,CAAWE,KAAAA,CAAMD,OAAOiB,QAAAA,GAC/CrB,KAAAA,CAAMC,MAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMD,MAAAA,CAAO+C,KAAK,CAAA;AAAA,kBAAA,EAE5CW,UAAAA,GAAa9D,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,WAAWE,KAAAA,CAAMwC,UAAAA,CAAWkB,QAAQ,EAAE,CAAA;AAAA,qBAAA,EACvE/D,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,WAAW+C,KAAAA,CAAM1C,OAAO,KAIhE,CAAC;AAAA,EAAEuE,WAAAA;AAAAA,EAAa/E;AAAM,CAAA,KACtB,CAAA;AAAA,cAAA,EACUA,KAAAA,CAAMC,MAAMC,UAAAA,CAAWC,UAAAA,CAAWC,MAAM,CAAA,OAAA,EAChD2E,WAAAA,GACI/E,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,MAAMD,MAAAA,CAAOiB,QAAAA,GAC/CrB,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,WAAWE,KAAAA,CAAMD,MAAAA,CAAO+C,KAAK,CAAA,CAAA,CAAA,EAK1D,CAAC;AAAA,EAAE4B,WAAAA;AAAAA,EAAa/E;AAAM,CAAA,KACtB,CAAA;AAAA,cAAA,EACUA,KAAAA,CAAMC,MAAMC,UAAAA,CAAWC,UAAAA,CAAWC,MAAM,CAAA,OAAA,EAChD2E,WAAAA,GACI/E,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,WAAWE,KAAAA,CAAMD,MAAAA,CAAOiB,WAC/CrB,KAAAA,CAAMC,KAAAA,CAAMC,WAAWC,UAAAA,CAAWE,KAAAA,CAAMD,MAAAA,CAAO+C,KAAK,CAAA,CAAA,CACvD;AAIF,MAAM8B,kBAAAA,GAAqBvF,uBAAAA,CAAOwF,iBAAAA,CAASC,IAAI,EAACvF,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,yCAAA,CAAA;AAgBvD,MAAMuF,kBAAAA,GAAqBC,mBAAc,OAAO,CAAA;AAIhD,MAAMC,gBAAAA,GAAmB5F,uBAAAA,CAAO6F,qBAAU,CAAA,CAAC3F,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,EAAA,CAAA,iDAAA,EAAA,SAAA,EAAA,KAAA,GAK3B,CAAC;AAAA,EAAEG;AAAM,CAAA,KAAMA,KAAAA,CAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWC,QACvD,CAAC;AAAA,EAAEJ;AAAM,CAAA,KAAMA,MAAMC,KAAAA,CAAMC,UAAAA,CAAWC,UAAAA,CAAWE,KAAAA,CAAMD,OAAO+C,KAAK,CAAA;AAK7E,MAAMqC,kBAAAA,GAAqB9F,uBAAAA,CAAO4F,gBAAgB,CAAA,CAAC1F,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,wCAAA,CAAA,CAAA;AAKnD,MAAM4F,gBAAgBA,CAAC;AAAA,EACrBnE,EAAAA;AAAAA,EACAoE,IAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,IAAAA;AAAAA,EACAtB,IAAAA,GAAO,IAAA;AAAA,EACPuB,QAAAA;AAAAA,EACAC;AAUF,CAAA,KAAM;AACJ,EAAA,IAAIF,SAASG,WAAAA,EAAQ;AACnB,IAAA,uBACErE,cAAA,CAAC,kBAAA,EAAA,EACC,GAAA,EAAKoE,SAAAA,EACL,aAAA,EAAazE,EAAAA,EACb,IAAA,EACA,IAAA,EACA,IAAA,EAAK,OAAA,EACL,QAAA,EACA,SAAA,EAAqB,CAAA;AAAA,EAG3B;AACA,EAAA,uBACEK,cAAA,CAAC,gBAAA,EAAA,EACC,GAAA,EAAKoE,SAAAA,EACL,aAAA,EAAazE,EAAAA,EACb,IAAA,EACA,OAAA,EACA,SAAA,EACA,IAAA,EACA,IAAA,EAAK,OAAA,EACL,QAAA,EAAmB,CAAA;AAGzB,CAAA;AAEO,MAAM2E,mBAAmBA,CAAC;AAAA,EAC/BC,kBAAkB,EAAC;AAAA,EACnBC,QAAAA;AAAAA,EACAC,uBAAAA,GAA0B,IAAA;AAAA,EAC1BC,YAAAA;AAAAA,EACAC,aAAAA;AAAAA,EACA5F,YAAAA;AAAAA,EACA,GAAG6F;AACkB,CAAA,KAAM;AAC3B,EAAA,MAAM;AAAA,IAAEC,IAAAA;AAAAA,IAAMC,OAAAA;AAAAA,IAASC,KAAAA;AAAAA,IAAOC,UAAAA;AAAAA,IAAYC;AAAAA,MAASC,oBAAAA,CAAY;AAAA,IAC7DC,gBAAAA,EAAkB,CAAA;AAAA,IAClB,GAAGZ;AAAAA,GACJ,CAAA;AAED,EAAA,MAAM,CAACL,IAAAA,EAAMkB,OAAO,CAAA,GAAIC,eAAyBC,SAAI,CAAA;AACrD,EAAA,MAAM,CAACC,YAAAA,EAAcC,eAAe,CAAA,GAAIH,eAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,CAACI,UAAAA,EAAYC,aAAa,CAAA,GAAIL,eAAS,CAAC,CAAA;AAC9C,EAAA,MAAM,CAACM,iBAAAA,EAAmBC,oBAAoB,CAAA,GAAIP,eAASN,KAAK,CAAA;AAChE,EAAA,MAAM,CAACc,gBAAAA,EAAkBC,mBAAmB,CAAA,GAAIT,eAAS1H,4BAA4B,CAAA;AAErF,EAAA,MAAMoI,YAAAA,GAAeC,YAAAA,CAAwC,EAAE,CAAA;AAC/D,EAAA,MAAMC,WAAAA,GAAcD,YAAAA,CAAwC,EAAE,CAAA;AAC9D,EAAA,MAAME,gBAAgBF,YAAAA,CAAwC,CAAC,IAAA,EAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AAEhFG,EAAAA,eAAAA,CAAU,MAAM;AACd,IAAA,IAAIjC,SAASkC,UAAAA,EAAO;AAClBH,MAAAA,WAAAA,CAAYI,OAAAA,CAAQR,gBAAgB,CAAA,EAAGS,KAAAA,EAAM;AAAA,IAC/C,CAAA,MAAA,IAAWpC,SAASG,WAAAA,EAAQ;AAC1B0B,MAAAA,YAAAA,CAAaM,OAAAA,CAAQV,iBAAiB,CAAA,EAAGW,KAAAA,EAAM;AAAA,IACjD;AAAA,EACF,CAAA,EAAG,CAACpC,IAAAA,EAAM2B,gBAAAA,EAAkBF,iBAAiB,CAAC,CAAA;AAE9C,EAAA,MAAMY,WAAAA,GAAcC,kBAAY,MAAM;AACpC,IAAA,IAAItC,SAASkC,UAAAA,EAAO;AAClBV,MAAAA,aAAAA,CAAce,CAAAA,IAAAA,KAAQA,OAAO/I,gBAAgB,CAAA;AAAA,IAC/C,CAAA,MAAO;AACLsH,MAAAA,UAAAA,CAAW0B,MAAAA,EAAO;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC1B,UAAAA,EAAYd,IAAI,CAAC,CAAA;AAErB,EAAA,MAAMyC,eAAAA,GAAkBH,kBAAY,MAAM;AACxC,IAAA,IAAItC,SAASkC,UAAAA,EAAO;AAClBV,MAAAA,aAAAA,CAAce,CAAAA,IAAAA,KAAQA,OAAO/I,gBAAgB,CAAA;AAC7C,MAAA;AAAA,IACF;AAEAsH,IAAAA,UAAAA,CAAW4B,MAAAA,EAAO;AAAA,EACpB,CAAA,EAAG,CAAC5B,UAAAA,EAAYd,IAAI,CAAC,CAAA;AAErB,EAAA,MAAM2C,YAAAA,GAAeL,kBAAY,MAAM;AACrC,IAAA,IAAItC,SAASoB,SAAAA,EAAM;AACjB,MAAA;AAAA,IACF;AAEAF,IAAAA,OAAAA,CAAQgB,UAAK,CAAA;AAAA,EACf,CAAA,EAAG,CAAClC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM4C,kBAAAA,GAAqBN,iBAAAA,CAAY,CAACO,CAAAA,KAAwC;AAC9E,IAAA,MAAMC,SAAAA,GAAYd,aAAAA,CAAcG,OAAAA,CAAQY,MAAAA,CAAOC,CAAAA,GAAAA,KAAO;AACpD,MAAA,IAAI,CAACA,GAAAA,EAAK;AACR,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,OACEA,GAAAA,CAAIC,YAAAA,KAAiB,IAAA,IACpB,CAACD,GAAAA,CAAIE,YAAAA,CAAa,QAAQ,CAAA,IAAKF,GAAAA,CAAIG,YAAAA,CAAa,aAAa,CAAA,KAAM,MAAA;AAAA,IAExE,CAAC,CAAA;AAED,IAAA,MAAMC,iBAAAA,GAAoBN,SAAAA,CAAUO,OAAAA,CAAQR,CAAAA,CAAES,aAAa,CAAA;AAC3D,IAAA,IAAIF,iBAAAA,KAAsB,EAAA,IAAMN,SAAAA,CAAUS,MAAAA,IAAU,CAAA,EAAG;AACrD,MAAA;AAAA,IACF;AAEA,IAAA,IAAIV,CAAAA,CAAEW,QAAQ,YAAA,EAAc;AAC1BX,MAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjB,MAAA,MAAMC,cAAAA,GAAAA,CAAkBN,iBAAAA,GAAoB,CAAA,IAAKN,SAAAA,CAAUS,MAAAA;AAC3DT,MAAAA,SAAAA,CAAUY,cAAc,GAAGtB,KAAAA,EAAM;AAAA,IACnC,CAAA,MAAA,IAAWS,CAAAA,CAAEW,GAAAA,KAAQ,WAAA,EAAa;AAChCX,MAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjB,MAAA,MAAME,cAAAA,GAAAA,CACHP,iBAAAA,GAAoB,CAAA,GAAIN,SAAAA,CAAUS,UAAUT,SAAAA,CAAUS,MAAAA;AACzDT,MAAAA,SAAAA,CAAUa,cAAc,GAAGvB,KAAAA,EAAM;AAAA,IACnC;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAMwB,eAAAA,GAAkBtB,iBAAAA,CACtB,CAACuB,SAAAA,KAAsB;AACrBvC,IAAAA,eAAAA,CAAgBuC,SAAS,CAAA;AACzB3C,IAAAA,OAAAA,CAAQf,WAAM,CAAA;AACdK,IAAAA,YAAAA,GAAeqD,SAAS,CAAA;AAAA,EAC1B,CAAA,EACA,CAACrD,YAAY,CACf,CAAA;AAEA,EAAA,MAAMsD,gBAAAA,GAAmBxB,iBAAAA,CACvB,CAACyB,UAAAA,KAAuB;AACtB,IAAA,MAAMC,SAAAA,GAAY,OAAO3C,YAAAA,KAAiB,QAAA,GAAWA,YAAAA,GAAeN,IAAAA;AACpE,IAAA,MAAMkD,OAAAA,GAAU,IAAIhJ,IAAAA,CAAK+I,SAAAA,EAAWD,YAAY,CAAC,CAAA;AAEjDjD,IAAAA,UAAAA,CAAWoD,QAAQD,OAAO,CAAA;AAC1BxD,IAAAA,aAAAA,GAAgBuD,WAAWD,UAAU,CAAA;AAErC7C,IAAAA,OAAAA,CAAQE,SAAI,CAAA;AACZE,IAAAA,eAAAA,CAAgB,IAAI,CAAA;AACpBE,IAAAA,aAAAA,CAAc,CAAC,CAAA;AAAA,EACjB,GACA,CAACH,YAAAA,EAAcN,IAAAA,EAAMD,UAAAA,EAAYL,aAAa,CAChD,CAAA;AAEA,EAAA,MAAM0D,kBAAAA,GAAqB7B,iBAAAA,CACzB,CAACO,CAAAA,EAAqCuB,KAAAA,KAAkB;AACtD,IAAA,MAAM/K,UAAUD,gBAAAA,CAAiBC,OAAAA;AACjC,IAAA,MAAMgL,UAAAA,GAAa,EAAA;AACnB,IAAA,IAAIC,QAAAA,GAAWF,KAAAA;AAEf,IAAA,QAAQvB,EAAEW,GAAAA;AAAG,MACX,KAAK,YAAA;AACHX,QAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjBa,QAAAA,QAAAA,GAAAA,CAAYF,QAAQ,CAAA,IAAKC,UAAAA;AACzB,QAAA;AAAA,MACF,KAAK,WAAA;AACHxB,QAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjBa,QAAAA,QAAAA,GAAAA,CAAYF,KAAAA,GAAQ,IAAIC,UAAAA,IAAcA,UAAAA;AACtC,QAAA;AAAA,MACF,KAAK,WAAA;AACHxB,QAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjBa,QAAAA,QAAAA,GAAAA,CAAYF,QAAQ/K,OAAAA,IAAWgL,UAAAA;AAC/B,QAAA;AAAA,MACF,KAAK,SAAA;AACHxB,QAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjBa,QAAAA,QAAAA,GAAAA,CAAYF,KAAAA,GAAQ/K,UAAUgL,UAAAA,IAAcA,UAAAA;AAC5C,QAAA;AAAA,MACF,KAAK,OAAA;AAAA,MACL,KAAK,GAAA;AACHxB,QAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjBK,QAAAA,gBAAAA,CAAiBM,KAAK,CAAA;AACtB,QAAA;AAAA,MACF;AACE,QAAA;AAAA;AAGJ1C,IAAAA,oBAAAA,CAAqB4C,QAAQ,CAAA;AAC7BzC,IAAAA,YAAAA,CAAaM,OAAAA,CAAQmC,QAAQ,CAAA,EAAGlC,KAAAA,EAAM;AAAA,EACxC,CAAA,EACA,CAAC0B,gBAAgB,CACnB,CAAA;AAEA,EAAA,MAAMS,iBAAAA,GAAoBjC,iBAAAA,CACxB,CAACO,CAAAA,EAAqCuB,OAAeP,SAAAA,KAAsB;AACzE,IAAA,MAAMxK,UAAUE,eAAAA,CAAgBF,OAAAA;AAChC,IAAA,MAAMgL,UAAAA,GAAa7K,gBAAAA;AACnB,IAAA,IAAI8K,QAAAA,GAAWF,KAAAA;AAEf,IAAA,QAAQvB,EAAEW,GAAAA;AAAG,MACX,KAAK,YAAA;AACHX,QAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjBa,QAAAA,QAAAA,GAAAA,CAAYF,QAAQ,CAAA,IAAKC,UAAAA;AACzB,QAAA;AAAA,MACF,KAAK,WAAA;AACHxB,QAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjBa,QAAAA,QAAAA,GAAAA,CAAYF,KAAAA,GAAQ,IAAIC,UAAAA,IAAcA,UAAAA;AACtC,QAAA;AAAA,MACF,KAAK,WAAA;AACHxB,QAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjBa,QAAAA,QAAAA,GAAAA,CAAYF,QAAQ/K,OAAAA,IAAWgL,UAAAA;AAC/B,QAAA;AAAA,MACF,KAAK,SAAA;AACHxB,QAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjBa,QAAAA,QAAAA,GAAAA,CAAYF,KAAAA,GAAQ/K,UAAUgL,UAAAA,IAAcA,UAAAA;AAC5C,QAAA;AAAA,MACF,KAAK,OAAA;AAAA,MACL,KAAK,GAAA;AACHxB,QAAAA,CAAAA,CAAEY,cAAAA,EAAe;AACjBG,QAAAA,eAAAA,CAAgBC,SAAS,CAAA;AACzB,QAAA;AAAA,MACF;AACE,QAAA;AAAA;AAGJjC,IAAAA,mBAAAA,CAAoB0C,QAAQ,CAAA;AAC5BvC,IAAAA,WAAAA,CAAYI,OAAAA,CAAQmC,QAAQ,CAAA,EAAGlC,KAAAA,EAAM;AAAA,EACvC,CAAA,EACA,CAACwB,eAAe,CAClB,CAAA;AAEA,EAAA,MAAMY,UAAAA,uBAAiBvJ,IAAAA,EAAK;AAC5BuJ,EAAAA,UAAAA,CAAWC,SAAS5D,KAAK,CAAA;AACzB2D,EAAAA,UAAAA,CAAWE,YAAY3D,IAAI,CAAA;AAE3B,EAAA,MAAM4D,cAAAA,GAAiBA,CAAC3E,KAAAA,KAAyB;AAC/C,IAAA,IAAIA,UAASG,WAAAA,EAAQ;AACnB,MAAA,OAAOjH,mBAAAA;AAAAA,IACT;AAEA,IAAA,IAAI8G,UAASkC,UAAAA,EAAO;AAClB,MAAA,OAAO/I,kBAAAA;AAAAA,IACT;AAEA,IAAA,OAAO+B,yBAAAA,CAAoBC,OAAOqJ,UAAU,CAAA;AAAA,EAC9C,CAAA;AAEA,EAAA,MAAMI,mBAAmBA,MAAM;AAC7B,IAAA,MAAMC,KAAAA,uBAAY5J,IAAAA,EAAK;AACvB,IAAA,MAAM6J,UAAAA,GAAaD,MAAME,QAAAA,EAAS;AAClC,IAAA,MAAMC,SAAAA,GAAYH,MAAMI,WAAAA,EAAY;AACpC,IAAA,MAAMC,aAAAA,GAAgBrK,cAAckK,QAAAA,EAAS;AAC7C,IAAA,MAAM1D,aAAAA,GAAexG,cAAcoK,WAAAA,EAAY;AAE/C,IAAA,sCACG,UAAA,EAAA,EACC,aAAA,EAAY,eACZ,IAAA,EAAK,MAAA,EACL,cAAW,cAAA,EAEV1F,QAAAA,EAAAA,kBAAAA,CAAmB4F,GAAAA,CAAI,CAACC,MAAMhB,KAAAA,qBAC7BtI,cAAA,CAAC,YAEC,IAAA,EAAK,QAAA,EACL,KAAKuJ,CAAAA,EAAAA,KAAM;AACTxD,MAAAA,YAAAA,CAAaM,OAAAA,CAAQiC,KAAK,CAAA,GAAIiB,EAAAA;AAAAA,IAChC,GACA,SAAA,EAAWxK,YAAAA,IAAgBuJ,KAAAA,KAAUc,aAAAA,IAAiBnE,SAASM,aAAAA,EAC/D,UAAA,EAAY+C,KAAAA,KAAUU,UAAAA,IAAc/D,SAASiE,SAAAA,EAC7C,OAAA,EAAS,MAAMlB,gBAAAA,CAAiBM,KAAK,CAAA,EACrC,SAAA,EAAWvB,CAAAA,CAAAA,KAAKsB,kBAAAA,CAAmBtB,GAAGuB,KAAK,CAAA,EAC3C,aAAA,EAAa,CAAA,WAAA,EAAcA,KAAK,CAAA,CAAA,EAChC,QAAA,EAAUA,KAAAA,KAAU3C,iBAAAA,GAAoB,IAAI,EAAA,EAC5C,YAAA,EAAY2D,MAEXA,QAAAA,EAAAA,IAAAA,EAAAA,EAbIA,IAcP,CACD,CAAA,EACH,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAME,kBAAkBA,MAAM;AAC5B,IAAA,MAAMC,QAAuB,EAAA;AAC7B,IAAA,MAAMC,WAAWzE,IAAAA,GAAOQ,UAAAA;AACxB,IAAA,MAAMyD,SAAAA,GAAAA,iBAAY,IAAI/J,IAAAA,EAAK,EAAEgK,WAAAA,EAAY;AACzC,IAAA,MAAM5D,aAAAA,GAAexG,cAAcoK,WAAAA,EAAY;AAE/C,IAAA,KAAA,IAASQ,CAAAA,GAAI,CAAChM,4BAAAA,EAA8BgM,CAAAA,IAAKhM,8BAA8BgM,CAAAA,EAAAA,EAAK;AAClFF,MAAAA,KAAAA,CAAMG,IAAAA,CAAKF,WAAWC,CAAC,CAAA;AAAA,IACzB;AAEA,IAAA,sCACG,SAAA,EAAA,EACC,aAAA,EAAY,cACZ,IAAA,EAAK,MAAA,EACL,cAAW,aAAA,EAEVF,QAAAA,EAAAA,KAAAA,CAAMJ,GAAAA,CAAI,CAACQ,UAAUvB,KAAAA,qBACpBtI,cAAA,CAAC,YAEC,IAAA,EAAK,QAAA,EACL,KAAKuJ,CAAAA,EAAAA,KAAM;AACTtD,MAAAA,WAAAA,CAAYI,OAAAA,CAAQiC,KAAK,CAAA,GAAIiB,EAAAA;AAAAA,IAC/B,GACA,SAAA,EAAWxK,YAAAA,IAAgB8K,QAAAA,KAAatE,aAAAA,EACxC,YAAYsE,QAAAA,KAAaX,SAAAA,EACzB,OAAA,EAAS,MAAMpB,gBAAgB+B,QAAQ,CAAA,EACvC,SAAA,EAAW9C,CAAAA,CAAAA,KAAK0B,kBAAkB1B,CAAAA,EAAGuB,KAAAA,EAAOuB,QAAQ,CAAA,EACpD,eAAa,CAAA,UAAA,EAAaA,QAAQ,CAAA,CAAA,EAClC,QAAA,EAAUvB,UAAUzC,gBAAAA,GAAmB,CAAA,GAAI,EAAA,EAC3C,YAAA,EAAYvG,OAAOuK,QAAQ,CAAA,EAE1BA,QAAAA,EAAAA,QAAAA,EAAAA,EAbIA,QAcP,CACD,CAAA,EACH,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAMC,qBAAqBA,MAAM;AAC/B,IAAA,IAAI5F,SAASG,WAAAA,EAAQ;AACnB,MAAA,uBACErE,cAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,IAAA,EAAA,EAAG,OAAA,EAAS+J,iBAAAA,EAAejB,QAAAA,EAAAA,gBAAAA,EAAiB,EAAE,CAAA,EACjD,CAAA,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,IAAI5E,SAASkC,UAAAA,EAAO;AAClB,MAAA,uBACEpG,cAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,IAAA,EAAA,EAAG,OAAA,EAAS+J,iBAAAA,EAAeP,QAAAA,EAAAA,eAAAA,EAAgB,EAAE,CAAA,EAChD,CAAA,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACEzI,eAAA,CAAAiJ,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAhK,cAAA,CAAC,WACC,QAAA,kBAAAA,cAAA,CAAC,IAAA,EAAA,EACE8E,QAAAA,EAAAA,OAAAA,CAAQmF,QAAAA,CAASZ,IAAI,CAAC;AAAA,QAAE3B,GAAAA;AAAAA,QAAKwC,KAAAA,EAAOhL;AAAAA,OAAK,KAAM;AAC9C,QAAA,sCACG,eAAA,EAAA,EACEiL,QAAAA,EAAAA,sBAAAA,CAAiB9K,MAAAA,CAAOH,IAAI,KADTwI,GAEtB,CAAA;AAAA,MAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAAA,sBACA1H,cAAA,CAAC,OAAA,EAAA,EAAOwE,QAAAA,EAAAA,QAAAA,CAASK,IAAI,CAAA,EAAE;AAAA,KAAA,EACzB,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,uBACE9D,eAAA,CAAC,mBAAA,EAAA,EACC,aAAA,EAAY,+BAAA,EACZ,YAAA,EAAc,KAAA,EACd,SAAA,EAAW,KAAA,EACX,WAAA,EAAY,UAAA,EACZ,OAAA,EAAQ,IAAA,EACR,GAAI6D,KAAAA,EAEJ,QAAA,EAAA;AAAA,oBAAA7D,eAAA,CAACE,uBACC,YAAA,EAAc,KAAA,EACd,cAAA,EAAe,eAAA,EACf,aAAY,YAAA,EAEZ,QAAA,EAAA;AAAA,sBAAAjB,cAAA,CAAC,iBACC,EAAA,EAAG,yBAAA,EACH,IAAA,EAAK,cAAA,EACL,SAAS2G,eAAAA,EACT,SAAA,EAAWG,kBAAAA,EACX,IAAA,EACA,UAAU5C,IAAAA,KAASG,WAAAA,GAAS,EAAA,GAAK,CAAA,EACjC,WAAWkF,CAAAA,EAAAA,KAAM;AACf,QAAA,IAAIrF,SAASG,WAAAA,EAAQ;AACnB6B,UAAAA,aAAAA,CAAcG,OAAAA,CAAQ,CAAC,CAAA,GAAIkD,EAAAA;AAAAA,QAC7B,CAAA,MAAO;AACLrD,UAAAA,aAAAA,CAAcG,OAAAA,CAAQ,CAAC,CAAA,GAAI,IAAA;AAAA,QAC7B;AAAA,MACF,CAAA,EAAE,CAAA;AAAA,MAEHnC,SAASoB,SAAAA,IAAQb,uBAAAA,mBAChBzE,cAAA,CAAC,cAAA,EAAA,EACC,KAAKuJ,CAAAA,EAAAA,KAAM;AACTrD,QAAAA,aAAAA,CAAcG,OAAAA,CAAQ,CAAC,CAAA,GAAIkD,EAAAA;AAAAA,MAC7B,GACA,OAAA,EAAS1C,YAAAA,EACT,SAAA,EAAWC,kBAAAA,EACX,eAAY,gBAAA,EACZ,QAAA,EAAU,CAAA,EAET+B,QAAAA,EAAAA,cAAAA,CAAe3E,IAAI,CAAA,EACtB,CAAA,kCAEC,iBAAA,EAAA,EAAmB2E,QAAAA,EAAAA,cAAAA,CAAe3E,IAAI,CAAA,EAAE,CAAA;AAAA,qCAE1C,aAAA,EAAA,EACC,EAAA,EAAG,qBAAA,EACH,IAAA,EAAK,iBACL,OAAA,EAASqC,WAAAA,EACT,SAAA,EAAWO,kBAAAA,EACX,MACA,QAAA,EAAU5C,IAAAA,KAASG,cAAS,EAAA,GAAK,CAAA,EACjC,WAAWkF,CAAAA,EAAAA,KAAM;AACf,QAAA,IAAIrF,SAASG,WAAAA,EAAQ;AACnB6B,UAAAA,aAAAA,CAAcG,OAAAA,CAAQ,CAAC,CAAA,GAAIkD,EAAAA;AAAAA,QAC7B,CAAA,MAAO;AACLrD,UAAAA,aAAAA,CAAcG,OAAAA,CAAQ,CAAC,CAAA,GAAI,IAAA;AAAA,QAC7B;AAAA,MACF,CAAA,EAAE;AAAA,KAAA,EAEN,CAAA;AAAA,oBACArG,cAAA,CAAC,SAAA,EAAA,EAAW8J,QAAAA,EAAAA,kBAAAA,EAAmB,EAAE;AAAA,GAAA,EACnC,CAAA;AAEJ;;;;;;;;;"}
1
+ {"version":3,"file":"Common.cjs","sources":["../../../../src/components/DatePicker/Common.tsx"],"sourcesContent":["import { styled } from 'styled-components';\nimport { InputElement, InputStartContent, InputWrapper } from '@/components/InputWrapper';\nimport {\n KeyboardEvent,\n ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { Icon, IconName } from '@/components/Icon';\nimport { Container } from '@/components/Container';\nimport { useCalendar, UseCalendarOptions } from '@h6s/calendar';\nimport { IconButton, IconButtonSize } from '@/components/IconButton';\nimport { Text } from '@/components/Text';\nimport {\n headerDateFormatter,\n selectedDateFormatter,\n selectedDateTimeFormatter,\n selectedDateTimeFormatterWithSeconds,\n weekdayFormatter,\n} from './utils';\nimport { getMonthNames, DAYS, MONTHS, YEARS, DAYS_IN_WEEK } from '@/utils/date';\nimport { Dropdown } from '@/components/Dropdown';\n\nconst explicitWidth = '250px';\n\nconst viewGridMonths = {\n columns: 4,\n rows: 3,\n} as const;\n\nconst viewGridYears = {\n columns: 3,\n rows: 3,\n} as const;\n\nconst totalYears = viewGridYears.columns * viewGridYears.rows;\nconst yearsOffset = Math.floor(totalYears / 2);\n\nconst HighlightedInputWrapper = styled(InputWrapper)<{\n $isActive: boolean;\n $width?: string;\n}>`\n ${({ $isActive, $width, theme }) => {\n return `border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isActive\n ? theme.click.datePicker.dateOption.color.stroke.active\n : theme.click.field.color.stroke.default\n };\n width: ${$width ? $width : explicitWidth};\n ${$width && `min-width: ${explicitWidth};`}\n `;\n }}\n}`;\n\ninterface DatePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n partialMonth?: number;\n partialYear?: number;\n placeholder?: string;\n selectedDate?: Date;\n}\n\nconst formatPartialDate = (\n selectedDate?: Date,\n partialYear?: number,\n partialMonth?: number\n): string => {\n if (typeof partialYear === 'number' && typeof partialMonth === 'number') {\n const date = new Date(partialYear, partialMonth, 1);\n return headerDateFormatter.format(date);\n }\n if (typeof partialYear === 'number') {\n return String(partialYear);\n }\n if (selectedDate instanceof Date) {\n return selectedDateFormatter.format(selectedDate);\n }\n return '';\n};\n\nexport const DatePickerInput = ({\n isActive,\n disabled,\n id,\n partialMonth,\n partialYear,\n placeholder,\n selectedDate,\n}: DatePickerInputProps) => {\n const defaultId = useId();\n const formattedSelectedDate = formatPartialDate(\n selectedDate,\n partialYear,\n partialMonth\n );\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n data-testid=\"datepicker-input\"\n placeholder={placeholder}\n readOnly\n value={formattedSelectedDate}\n />\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n}\n\nexport const DateRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n}: DateRangePickerInputProps) => {\n const defaultId = useId();\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {selectedDateFormatter.format(selectedStartDate)} –{' '}\n {selectedDateFormatter.format(selectedEndDate)}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {selectedDateFormatter.format(selectedStartDate)}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n }\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"daterangepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateTimeRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n shouldShowSeconds?: boolean;\n}\n\nexport const DateTimeRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n shouldShowSeconds,\n}: DateTimeRangePickerInputProps) => {\n const defaultId = useId();\n\n const dateTimeFormatter = shouldShowSeconds\n ? selectedDateTimeFormatterWithSeconds\n : selectedDateTimeFormatter;\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {dateTimeFormatter\n .format(selectedStartDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}{' '}\n –{' '}\n {dateTimeFormatter\n .format(selectedEndDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {dateTimeFormatter\n .format(selectedStartDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n } else if (selectedEndDate) {\n formattedValue = (\n <span>\n <Text\n color=\"muted\"\n component=\"span\"\n >\n start date –{' '}\n </Text>\n {dateTimeFormatter\n .format(selectedEndDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}\n </span>\n );\n }\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n $width=\"max-content\"\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"datetimepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\nconst DatePickerContainer = styled(Container)`\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.default};\n`;\n\nconst ClickableTitle = styled.button`\n background: transparent;\n border: 1px solid transparent;\n cursor: pointer;\n outline: none;\n padding: 0.25rem 0.5rem;\n user-select: none;\n\n ${({ theme }) => `\n border-radius: ${theme.click.datePicker.dateOption.radii.default};\n color: ${theme.click.datePicker.color.title.default};\n font: ${theme.click.datePicker.typography.title.default};\n `};\n\n &:hover {\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.hover};\n }\n\n &:focus,\n &:focus-visible {\n border-color: ${({ theme }) => theme.click.datePicker.dateOption.color.stroke.hover};\n }\n`;\n\nconst UnselectableTitle = styled.h2`\n margin: 0;\n padding: 0;\n user-select: none;\n\n ${({ theme }) => `\n color: ${theme.click.datePicker.color.title.default};\n font: ${theme.click.datePicker.typography.title.default};\n `}\n`;\n\nconst GridContainer = styled.div`\n display: grid;\n padding: 0.25rem 0 0;\n\n ${({ theme }) => `\n gap: calc(${theme.click.datePicker.space.gap} * 2);\n `}\n`;\n\nconst MonthsGrid = styled(GridContainer)`\n grid-template-columns: repeat(${viewGridMonths.columns}, 1fr);\n grid-template-rows: repeat(${viewGridMonths.rows}, 1fr);\n`;\n\nconst YearsGrid = styled(GridContainer)`\n grid-template-columns: repeat(${viewGridYears.columns}, 1fr);\n grid-template-rows: repeat(${viewGridYears.rows}, 1fr);\n`;\n\nconst GridCell = styled.button<{ $isActive?: boolean; $isPresent?: boolean }>`\n align-items: center;\n cursor: pointer;\n display: flex;\n justify-content: center;\n min-height: 26px;\n padding: 8px 4px;\n text-align: center;\n\n ${({ theme }) => `\n background: ${theme.click.datePicker.dateOption.color.background.default};\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.stroke.default};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};\n color: ${theme.click.datePicker.dateOption.color.label.default};\n font: ${theme.click.datePicker.dateOption.typography.label.default};\n `}\n\n ${({ $isActive, theme }) =>\n $isActive &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.active};\n color: ${theme.click.datePicker.dateOption.color.label.active};\n `}\n\n ${({ $isActive, $isPresent, theme }) =>\n $isPresent &&\n !$isActive &&\n `background: ${theme.click.datePicker.dateOption.color.background.range};`}\n\n ${({ theme }) => `\n &:hover {\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n\n &:focus {\n outline: none;\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n\n &:focus-visible {\n outline: none;\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n `}\n`;\n\nconst DateTable = styled.table`\n border-collapse: separate;\n border-spacing: 0;\n font: ${({ theme }) => theme.typography.styles.product.text.normal.md};\n table-layout: fixed;\n user-select: none;\n width: ${explicitWidth};\n\n thead tr {\n height: ${({ theme }) => theme.click.datePicker.dateOption.size.height};\n }\n\n tbody {\n cursor: pointer;\n }\n\n td,\n th {\n padding: 4px;\n }\n`;\n\nconst DateTableHeader = styled.th`\n ${({ theme }) => `\n color: ${theme.click.datePicker.color.daytitle.default};\n font: ${theme.click.datePicker.typography.daytitle.default};\n `}\n\n width: 14%;\n`;\n\nexport const DateTableCell = styled.td<{\n $isCurrentMonth?: boolean;\n $isDisabled?: boolean;\n $isSelected?: boolean;\n $isPresent?: boolean;\n}>`\n ${({ theme }) => `\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.stroke.default};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};\n font: ${theme.click.datePicker.dateOption.typography.label.default};\n `}\n\n ${({ $isCurrentMonth, $isDisabled, theme }) =>\n (!$isCurrentMonth || $isDisabled) &&\n `\n color: ${theme.click.datePicker.dateOption.color.label.disabled};\n font: ${theme.click.datePicker.dateOption.typography.label.disabled};\n `}\n\n ${({ $isSelected, theme }) =>\n $isSelected &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.active} !important;\n color: ${theme.click.datePicker.dateOption.color.label.active};\n `}\n\n ${({ $isSelected, $isPresent, theme }) =>\n $isPresent &&\n !$isSelected &&\n `background: ${theme.click.datePicker.dateOption.color.background.range};`}\n\n text-align: center;\n outline: none;\n\n &:hover {\n ${({ $isDisabled, $isPresent, theme }) =>\n `border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };\n background: ${$isPresent ? theme.click.datePicker.dateOption.color.background.range : ''};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};`};\n }\n\n &:focus {\n ${({ $isDisabled, theme }) =>\n `outline: none;\n border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };`};\n }\n\n &:focus-visible {\n ${({ $isDisabled, theme }) =>\n `outline: none;\n border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };`};\n }\n`;\n\nexport const StyledDropdownItem = styled(Dropdown.Item)`\n box-sizing: content-box;\n min-height: 24px;\n`;\n\nexport type Body = ReturnType<typeof useCalendar>['body'];\n\ninterface CalendarRendererProps {\n calendarOptions?: UseCalendarOptions;\n children: (body: Body) => ReactNode;\n allowYearMonthSelection?: boolean;\n onYearSelect?: (year: number) => void;\n onMonthSelect?: (year: number, month: number) => void;\n selectedDate?: Date;\n}\n\nconst monthAbbreviations = getMonthNames('short');\n\ntype DateViewOption = 'days' | 'months' | 'years';\n\nconst PickerNavControl = styled(IconButton)`\n && {\n &:focus,\n &:focus-visible {\n outline: none;\n border: ${({ theme }) => theme.click.datePicker.dateOption.stroke} solid\n ${({ theme }) => theme.click.datePicker.dateOption.color.stroke.hover};\n }\n }\n`;\n\nconst EmptyDateSelectNav = styled(PickerNavControl)`\n visibility: hidden;\n pointer-events: none;\n`;\n\nconst DateSelectNav = ({\n id,\n icon,\n onClick,\n onKeyDown,\n view,\n size = 'sm',\n tabIndex,\n buttonRef,\n}: {\n id: string;\n icon: Extract<IconName, 'chevron-left' | 'chevron-right'>;\n onClick: () => void;\n onKeyDown?: (e: KeyboardEvent<HTMLButtonElement>) => void;\n view: DateViewOption;\n size?: IconButtonSize;\n tabIndex?: number;\n buttonRef?: (el: HTMLButtonElement | null) => void;\n}) => {\n if (view === MONTHS) {\n return (\n <EmptyDateSelectNav\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n onKeyDown={onKeyDown}\n />\n );\n }\n return (\n <PickerNavControl\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n onClick={onClick}\n onKeyDown={onKeyDown}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n />\n );\n};\n\nexport const CalendarRenderer = ({\n calendarOptions = {},\n children,\n allowYearMonthSelection = true,\n onYearSelect,\n onMonthSelect,\n selectedDate,\n ...props\n}: CalendarRendererProps) => {\n const { body, headers, month, navigation, year } = useCalendar({\n defaultWeekStart: 1,\n ...calendarOptions,\n });\n\n const [view, setView] = useState<DateViewOption>(DAYS);\n const [selectedYear, setSelectedYear] = useState<number | null>(null);\n const [yearOffset, setYearOffset] = useState(0);\n const [focusedMonthIndex, setFocusedMonthIndex] = useState(month);\n const [focusedYearIndex, setFocusedYearIndex] = useState(yearsOffset);\n\n const monthGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const yearGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const headerNavRefs = useRef<Array<HTMLButtonElement | null>>([null, null, null]);\n\n useEffect(() => {\n if (view === YEARS) {\n yearGridRef.current[focusedYearIndex]?.focus();\n } else if (view === MONTHS) {\n monthGridRef.current[focusedMonthIndex]?.focus();\n }\n }, [view, focusedYearIndex, focusedMonthIndex]);\n\n const onNextClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev + totalYears);\n } else {\n navigation.toNext();\n }\n }, [navigation, view]);\n\n const onPreviousClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev - totalYears);\n return;\n }\n\n navigation.toPrev();\n }, [navigation, view]);\n\n const onTitleClick = useCallback(() => {\n if (view !== DAYS) {\n return;\n }\n\n setView(YEARS);\n }, [view]);\n\n const onHeaderNavKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n const validRefs = headerNavRefs.current.filter(ref => {\n if (!ref) {\n return false;\n }\n return (\n ref.offsetParent !== null ||\n (!ref.hasAttribute('hidden') && ref.getAttribute('aria-hidden') !== 'true')\n );\n });\n\n const currentValidIndex = validRefs.indexOf(e.currentTarget);\n if (currentValidIndex === -1 || validRefs.length <= 1) {\n return;\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n const nextValidIndex = (currentValidIndex + 1) % validRefs.length;\n validRefs[nextValidIndex]?.focus();\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n const prevValidIndex =\n (currentValidIndex - 1 + validRefs.length) % validRefs.length;\n validRefs[prevValidIndex]?.focus();\n }\n }, []);\n\n const onYearSelection = useCallback(\n (yearValue: number) => {\n setSelectedYear(yearValue);\n setView(MONTHS);\n onYearSelect?.(yearValue);\n },\n [onYearSelect]\n );\n\n const onMonthSelection = useCallback(\n (monthIndex: number) => {\n const finalYear = typeof selectedYear === 'number' ? selectedYear : year;\n const newDate = new Date(finalYear, monthIndex, 1);\n\n navigation.setDate(newDate);\n onMonthSelect?.(finalYear, monthIndex);\n\n setView(DAYS);\n setSelectedYear(null);\n setYearOffset(0);\n },\n [selectedYear, year, navigation, onMonthSelect]\n );\n\n const onMonthGridKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, index: number) => {\n const columns = viewGridMonths.columns;\n const totalItems = 12;\n let newIndex = index;\n\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n e.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n e.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n e.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n onMonthSelection(index);\n return;\n default:\n return;\n }\n\n setFocusedMonthIndex(newIndex);\n monthGridRef.current[newIndex]?.focus();\n },\n [onMonthSelection]\n );\n\n const onYearGridKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, index: number, yearValue: number) => {\n const columns = viewGridYears.columns;\n const totalItems = totalYears;\n let newIndex = index;\n\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n e.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n e.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n e.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n onYearSelection(yearValue);\n return;\n default:\n return;\n }\n\n setFocusedYearIndex(newIndex);\n yearGridRef.current[newIndex]?.focus();\n },\n [onYearSelection]\n );\n\n const headerDate = new Date();\n headerDate.setMonth(month);\n headerDate.setFullYear(year);\n\n const getHeaderTitle = (view: DateViewOption) => {\n if (view === MONTHS) {\n return 'Month';\n }\n\n if (view === YEARS) {\n return 'Year';\n }\n\n return headerDateFormatter.format(headerDate);\n };\n\n const renderMonthsGrid = () => {\n const today = new Date();\n const todayMonth = today.getMonth();\n const todayYear = today.getFullYear();\n const selectedMonth = selectedDate?.getMonth();\n const selectedYear = selectedDate?.getFullYear();\n\n return (\n <MonthsGrid\n data-testid=\"months-grid\"\n role=\"grid\"\n aria-label=\"Select month\"\n >\n {monthAbbreviations.map((abbr, index) => (\n <GridCell\n key={abbr}\n type=\"button\"\n ref={el => {\n monthGridRef.current[index] = el;\n }}\n $isActive={selectedDate && index === selectedMonth && year === selectedYear}\n $isPresent={index === todayMonth && year === todayYear}\n onClick={() => onMonthSelection(index)}\n onKeyDown={e => onMonthGridKeyDown(e, index)}\n data-testid={`month-cell-${index}`}\n tabIndex={index === focusedMonthIndex ? 0 : -1}\n aria-label={abbr}\n >\n {abbr}\n </GridCell>\n ))}\n </MonthsGrid>\n );\n };\n\n const renderYearsGrid = () => {\n const years: Array<number> = [];\n const baseYear = year + yearOffset;\n const todayYear = new Date().getFullYear();\n const selectedYear = selectedDate?.getFullYear();\n\n for (let i = -yearsOffset; i <= yearsOffset; i++) {\n years.push(baseYear + i);\n }\n\n return (\n <YearsGrid\n data-testid=\"years-grid\"\n role=\"grid\"\n aria-label=\"Select year\"\n >\n {years.map((currYear, index) => (\n <GridCell\n key={currYear}\n type=\"button\"\n ref={el => {\n yearGridRef.current[index] = el;\n }}\n $isActive={selectedDate && currYear === selectedYear}\n $isPresent={currYear === todayYear}\n onClick={() => onYearSelection(currYear)}\n onKeyDown={e => onYearGridKeyDown(e, index, currYear)}\n data-testid={`year-cell-${currYear}`}\n tabIndex={index === focusedYearIndex ? 0 : -1}\n aria-label={String(currYear)}\n >\n {currYear}\n </GridCell>\n ))}\n </YearsGrid>\n );\n };\n\n const renderTableContent = () => {\n if (view === MONTHS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderMonthsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n if (view === YEARS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderYearsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n return (\n <>\n <thead>\n <tr>\n {headers.weekDays.map(({ key, value: date }) => {\n return (\n <DateTableHeader key={key}>\n {weekdayFormatter.format(date)}\n </DateTableHeader>\n );\n })}\n </tr>\n </thead>\n <tbody>{children(body)}</tbody>\n </>\n );\n };\n\n return (\n <DatePickerContainer\n data-testid=\"datepicker-calendar-container\"\n isResponsive={false}\n fillWidth={false}\n orientation=\"vertical\"\n padding=\"sm\"\n {...props}\n >\n <Container\n isResponsive={false}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n <DateSelectNav\n id=\"calendar-previous-month\"\n icon=\"chevron-left\"\n onClick={onPreviousClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[0] = el;\n } else {\n headerNavRefs.current[0] = null;\n }\n }}\n />\n {view === DAYS && allowYearMonthSelection ? (\n <ClickableTitle\n ref={el => {\n headerNavRefs.current[1] = el as HTMLButtonElement;\n }}\n onClick={onTitleClick}\n onKeyDown={onHeaderNavKeyDown}\n data-testid=\"calendar-title\"\n tabIndex={0}\n >\n {getHeaderTitle(view)}\n </ClickableTitle>\n ) : (\n <UnselectableTitle>{getHeaderTitle(view)}</UnselectableTitle>\n )}\n <DateSelectNav\n id=\"calendar-next-month\"\n icon=\"chevron-right\"\n onClick={onNextClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[2] = el;\n } else {\n headerNavRefs.current[2] = null;\n }\n }}\n />\n </Container>\n <DateTable>{renderTableContent()}</DateTable>\n </DatePickerContainer>\n );\n};\n"],"names":["explicitWidth","viewGridMonths","columns","rows","viewGridYears","totalYears","yearsOffset","Math","floor","HighlightedInputWrapper","styled","InputWrapper","withConfig","componentId","$isActive","$width","theme","click","datePicker","dateOption","stroke","color","active","field","default","formatPartialDate","selectedDate","partialYear","partialMonth","date","Date","headerDateFormatter","format","String","selectedDateFormatter","DatePickerInput","isActive","disabled","id","placeholder","defaultId","useId","formattedSelectedDate","jsx","InputStartContent","Icon","InputElement","DateRangePickerInput","selectedEndDate","selectedStartDate","formattedValue","Text","DateTimeRangePickerInput","shouldShowSeconds","dateTimeFormatter","selectedDateTimeFormatterWithSeconds","selectedDateTimeFormatter","replace","jsxs","DatePickerContainer","Container","background","ClickableTitle","button","radii","title","typography","hover","UnselectableTitle","h2","GridContainer","div","space","gap","MonthsGrid","YearsGrid","GridCell","label","$isPresent","range","DateTable","table","styles","product","text","normal","md","size","height","DateTableHeader","th","daytitle","DateTableCell","td","$isCurrentMonth","$isDisabled","$isSelected","StyledDropdownItem","Dropdown","Item","monthAbbreviations","getMonthNames","PickerNavControl","IconButton","EmptyDateSelectNav","DateSelectNav","icon","onClick","onKeyDown","view","tabIndex","buttonRef","MONTHS","CalendarRenderer","calendarOptions","children","allowYearMonthSelection","onYearSelect","onMonthSelect","props","body","headers","month","navigation","year","useCalendar","defaultWeekStart","setView","useState","DAYS","selectedYear","setSelectedYear","yearOffset","setYearOffset","focusedMonthIndex","setFocusedMonthIndex","focusedYearIndex","setFocusedYearIndex","monthGridRef","useRef","yearGridRef","headerNavRefs","useEffect","YEARS","current","focus","onNextClick","useCallback","prev","toNext","onPreviousClick","toPrev","onTitleClick","onHeaderNavKeyDown","e","validRefs","filter","ref","offsetParent","hasAttribute","getAttribute","currentValidIndex","indexOf","currentTarget","length","key","preventDefault","nextValidIndex","prevValidIndex","onYearSelection","yearValue","onMonthSelection","monthIndex","finalYear","newDate","setDate","onMonthGridKeyDown","index","totalItems","newIndex","onYearGridKeyDown","headerDate","setMonth","setFullYear","getHeaderTitle","renderMonthsGrid","today","todayMonth","getMonth","todayYear","getFullYear","selectedMonth","map","abbr","el","renderYearsGrid","years","baseYear","i","push","currYear","renderTableContent","DAYS_IN_WEEK","Fragment","weekDays","value","weekdayFormatter"],"mappings":"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"}
@@ -34,7 +34,9 @@ const PredefinedTimesContainer = styledComponents.styled(Container.Container).wi
34
34
  })(["width:", ";"], calendarFullWidth);
35
35
  const CalendarRendererContainer = styledComponents.styled.div.withConfig({
36
36
  componentId: "sc-vcr4us-2"
37
- })(["border:", ";border-radius:", ";box-shadow:lch(6.77 0 0 / 0.15) 4px 4px 6px -1px,lch(6.77 0 0 / 0.15) 2px 2px 4px -1px;", " position:absolute;top:0;"], ({
37
+ })(["background:", ";border:", ";border-radius:", ";box-shadow:lch(6.77 0 0 / 0.15) 4px 4px 6px -1px,lch(6.77 0 0 / 0.15) 2px 2px 4px -1px;", " position:absolute;top:0;"], ({
38
+ theme
39
+ }) => `${theme.click.datePicker.dateOption.color.background.default}`, ({
38
40
  theme
39
41
  }) => `${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.background.range}`, ({
40
42
  theme
@@ -231,11 +233,6 @@ const parseTimeString = (timeString) => {
231
233
  isValid: false
232
234
  };
233
235
  }
234
- if (!parsedDate.isValid()) {
235
- return {
236
- isValid: false
237
- };
238
- }
239
236
  return {
240
237
  isValid: true,
241
238
  parsedDate
@@ -337,7 +334,7 @@ const TimeInput = ({
337
334
  ] });
338
335
  };
339
336
  const TabbedCalendar = ({
340
- closeDatePicker,
337
+ defaultActiveTab = "startDate",
341
338
  endDate,
342
339
  futureDatesDisabled,
343
340
  futureStartDatesDisabled,
@@ -348,7 +345,10 @@ const TabbedCalendar = ({
348
345
  shouldShowSeconds,
349
346
  startDate
350
347
  }) => {
351
- const [activeTab, setActiveTab] = react.useState("startDate");
348
+ const [activeTab, setActiveTab] = react.useState(defaultActiveTab);
349
+ react.useEffect(() => {
350
+ setActiveTab(defaultActiveTab);
351
+ }, [defaultActiveTab]);
352
352
  const handleTabChange = react.useCallback((newTab) => {
353
353
  setActiveTab(newTab);
354
354
  }, []);
@@ -374,19 +374,20 @@ const TabbedCalendar = ({
374
374
  /* @__PURE__ */ jsxRuntime.jsx(Tabs.Tabs.Trigger, { value: "endDate", "data-testid": "tabbed-calendar-trigger-end", children: "End date" })
375
375
  ] }),
376
376
  /* @__PURE__ */ jsxRuntime.jsxs(Tabs.Tabs.Content, { value: "startDate", children: [
377
- /* @__PURE__ */ jsxRuntime.jsx(StyledCalendarRenderer, { calendarOptions: startDateCalendarOptions, children: (body) => /* @__PURE__ */ jsxRuntime.jsx(Calendar, { calendarBody: body, calendarType: "startDate", closeDatePicker, endDate, futureDatesDisabled, futureStartDatesDisabled, maxRangeLength, setSelectedDate, startDate }) }),
377
+ /* @__PURE__ */ jsxRuntime.jsx(StyledCalendarRenderer, { calendarOptions: startDateCalendarOptions, children: (body) => /* @__PURE__ */ jsxRuntime.jsx(Calendar, { calendarBody: body, calendarType: "startDate", endDate, futureDatesDisabled, futureStartDatesDisabled, maxRangeLength, setSelectedDate, startDate }) }),
378
378
  /* @__PURE__ */ jsxRuntime.jsx(TimeInput, { date: startDate, setDate: handleSetStartDate, shouldShowSeconds })
379
379
  ] }),
380
380
  /* @__PURE__ */ jsxRuntime.jsxs(Tabs.Tabs.Content, { value: "endDate", children: [
381
- /* @__PURE__ */ jsxRuntime.jsx(StyledCalendarRenderer, { calendarOptions: endDateCalendarOptions, children: (body) => /* @__PURE__ */ jsxRuntime.jsx(Calendar, { calendarBody: body, calendarType: "endDate", closeDatePicker, endDate, futureDatesDisabled, futureStartDatesDisabled, maxRangeLength, setSelectedDate, startDate }) }),
381
+ /* @__PURE__ */ jsxRuntime.jsx(StyledCalendarRenderer, { calendarOptions: endDateCalendarOptions, children: (body) => /* @__PURE__ */ jsxRuntime.jsx(Calendar, { calendarBody: body, calendarType: "endDate", endDate, futureDatesDisabled, futureStartDatesDisabled, maxRangeLength, setSelectedDate, startDate }) }),
382
382
  /* @__PURE__ */ jsxRuntime.jsx(TimeInput, { date: endDate, setDate: handleSetEndDate, shouldShowSeconds })
383
383
  ] })
384
384
  ] });
385
385
  };
386
386
  const DateTimeRangePicker = ({
387
- endDate,
388
- startDate,
387
+ closeOnDateRangeSelected = false,
388
+ defaultActiveTab,
389
389
  disabled = false,
390
+ endDate,
390
391
  futureDatesDisabled = false,
391
392
  futureStartDatesDisabled = false,
392
393
  maxRangeLength = -1,
@@ -394,7 +395,8 @@ const DateTimeRangePicker = ({
394
395
  openDirection = "right",
395
396
  placeholder = "start date – end date",
396
397
  predefinedTimesList,
397
- shouldShowSeconds
398
+ shouldShowSeconds,
399
+ startDate
398
400
  }) => {
399
401
  const [isOpen, setIsOpen] = react.useState(false);
400
402
  const [selectedStartDate, setSelectedStartDate] = react.useState();
@@ -446,12 +448,18 @@ const DateTimeRangePicker = ({
446
448
  setSelectedStartDate(selectedDate);
447
449
  if (selectedEndDate) {
448
450
  onSelectDateRange(selectedDate, selectedEndDate);
451
+ if (closeOnDateRangeSelected) {
452
+ closeDatePicker();
453
+ }
449
454
  }
450
455
  }
451
456
  if (calendarType === "endDate") {
452
457
  setSelectedEndDate(selectedDate);
453
458
  if (selectedStartDate) {
454
459
  onSelectDateRange(selectedStartDate, selectedDate);
460
+ if (closeOnDateRangeSelected) {
461
+ closeDatePicker();
462
+ }
455
463
  }
456
464
  }
457
465
  }, [onSelectDateRange, selectedEndDate, selectedStartDate]);
@@ -466,8 +474,8 @@ const DateTimeRangePicker = ({
466
474
  /* @__PURE__ */ jsxRuntime.jsx(Dropdown.Dropdown.Trigger, { disabled, onKeyDown: onTriggerKeyDown, children: /* @__PURE__ */ jsxRuntime.jsx(Common.DateTimeRangePickerInput, { "data-testid": "datepicker-input-container", disabled, isActive: isOpen, placeholder, selectedEndDate, selectedStartDate, shouldShowSeconds }) }),
467
475
  /* @__PURE__ */ jsxRuntime.jsx(Dropdown.Dropdown.Content, { align: "start", children: /* @__PURE__ */ jsxRuntime.jsx(Container.Container, { orientation: "horizontal", children: shouldShowPredefinedTimes ? /* @__PURE__ */ jsxRuntime.jsxs(PredefinedCalendarContainer, { gap: "none", orientation: "horizontal", padding: "none", children: [
468
476
  /* @__PURE__ */ jsxRuntime.jsx(PredefinedTimes, { onSelectDateRange, predefinedTimesList, selectedEndDate, selectedStartDate, setEndDate: setSelectedEndDate, setStartDate: setSelectedStartDate, shouldShowCustomRange, showCustomDateRange: setShouldShowCustomRange }),
469
- shouldShowCustomRange && /* @__PURE__ */ jsxRuntime.jsx(CalendarRendererContainer, { $openDirection: calendarOpenDirection, ref: calendarContainerRef, children: /* @__PURE__ */ jsxRuntime.jsx(TabbedCalendar, { closeDatePicker, endDate: selectedEndDate, futureDatesDisabled, futureStartDatesDisabled, maxRangeLength, setEndDate: setSelectedEndDate, setSelectedDate: handleSelectDate, setStartDate: setSelectedStartDate, shouldShowSeconds: Boolean(shouldShowSeconds), startDate: selectedStartDate }) })
470
- ] }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(TabbedCalendar, { closeDatePicker, endDate: selectedEndDate, futureDatesDisabled, futureStartDatesDisabled, maxRangeLength, setEndDate: setSelectedEndDate, setSelectedDate: handleSelectDate, setStartDate: setSelectedStartDate, shouldShowSeconds: Boolean(shouldShowSeconds), startDate: selectedStartDate }) }) }) })
477
+ shouldShowCustomRange && /* @__PURE__ */ jsxRuntime.jsx(CalendarRendererContainer, { $openDirection: calendarOpenDirection, ref: calendarContainerRef, children: /* @__PURE__ */ jsxRuntime.jsx(TabbedCalendar, { defaultActiveTab, endDate: selectedEndDate, futureDatesDisabled, futureStartDatesDisabled, maxRangeLength, setEndDate: setSelectedEndDate, setSelectedDate: handleSelectDate, setStartDate: setSelectedStartDate, shouldShowSeconds: Boolean(shouldShowSeconds), startDate: selectedStartDate }) })
478
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(TabbedCalendar, { defaultActiveTab, endDate: selectedEndDate, futureDatesDisabled, futureStartDatesDisabled, maxRangeLength, setEndDate: setSelectedEndDate, setSelectedDate: handleSelectDate, setStartDate: setSelectedStartDate, shouldShowSeconds: Boolean(shouldShowSeconds), startDate: selectedStartDate }) }) }) })
471
479
  ] });
472
480
  };
473
481