@jenesei-software/jenesei-kit-react 2.3.1 → 2.3.2

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 (158) hide show
  1. package/build/area-outside.cjs.js +1 -1
  2. package/build/area-outside.es.js +1 -1
  3. package/build/area-preview.cjs.js +1 -1
  4. package/build/area-preview.es.js +1 -1
  5. package/build/area-skeleton.cjs.js +1 -1
  6. package/build/area-skeleton.es.js +1 -1
  7. package/build/button-6CFvwtSz.cjs +3 -0
  8. package/build/button-6CFvwtSz.cjs.map +1 -0
  9. package/build/button-D6Bg00Uh.js +120 -0
  10. package/build/button-D6Bg00Uh.js.map +1 -0
  11. package/build/{checkbox-Bxt8K0ZY.cjs → checkbox-9ue4f3-6.cjs} +2 -2
  12. package/build/{checkbox-Bxt8K0ZY.cjs.map → checkbox-9ue4f3-6.cjs.map} +1 -1
  13. package/build/{checkbox-DPkXe4_5.js → checkbox-TW5VSNui.js} +3 -3
  14. package/build/{checkbox-DPkXe4_5.js.map → checkbox-TW5VSNui.js.map} +1 -1
  15. package/build/component-button.cjs.js +1 -1
  16. package/build/component-button.es.js +1 -1
  17. package/build/component-checkbox.cjs.js +1 -1
  18. package/build/component-checkbox.es.js +1 -1
  19. package/build/component-date-picker.cjs.js +1 -1
  20. package/build/component-date-picker.es.js +1 -1
  21. package/build/component-icon.cjs.js +1 -1
  22. package/build/component-icon.es.js +1 -1
  23. package/build/component-input-otp.cjs.js +1 -1
  24. package/build/component-input-otp.es.js +1 -1
  25. package/build/component-input.cjs.js +1 -1
  26. package/build/component-input.es.js +1 -1
  27. package/build/component-pagination.cjs.js +1 -1
  28. package/build/component-pagination.es.js +1 -1
  29. package/build/component-popover.cjs.js +1 -1
  30. package/build/component-popover.es.js +1 -1
  31. package/build/component-select.cjs.js +1 -1
  32. package/build/component-select.es.js +1 -1
  33. package/build/component-textarea.cjs.js +1 -1
  34. package/build/component-textarea.es.js +1 -1
  35. package/build/component-toggle.cjs.js +1 -1
  36. package/build/component-toggle.es.js +1 -1
  37. package/build/component-tooltip.cjs.js +1 -1
  38. package/build/component-tooltip.es.js +1 -1
  39. package/build/component-typography.cjs.js +1 -1
  40. package/build/component-typography.es.js +1 -1
  41. package/build/components/button/component.d.ts +1 -2
  42. package/build/components/select/component.types.d.ts +1 -0
  43. package/build/components-error.cjs.js +1 -1
  44. package/build/components-error.es.js +1 -1
  45. package/build/{context-app-Dsa1tKlU.cjs → context-app-29ajupjq.cjs} +2 -2
  46. package/build/{context-app-Dsa1tKlU.cjs.map → context-app-29ajupjq.cjs.map} +1 -1
  47. package/build/{context-app-C9XoarPw.js → context-app-CxNgCfd2.js} +2 -2
  48. package/build/{context-app-C9XoarPw.js.map → context-app-CxNgCfd2.js.map} +1 -1
  49. package/build/context-app.cjs.js +1 -1
  50. package/build/context-app.es.js +1 -1
  51. package/build/{context-dialog-DctdSBC8.cjs → context-dialog-BLb0fPJw.cjs} +2 -2
  52. package/build/{context-dialog-DctdSBC8.cjs.map → context-dialog-BLb0fPJw.cjs.map} +1 -1
  53. package/build/{context-dialog-DzwL2ElF.js → context-dialog-IYNzoNOe.js} +2 -2
  54. package/build/{context-dialog-DzwL2ElF.js.map → context-dialog-IYNzoNOe.js.map} +1 -1
  55. package/build/context-dialog.cjs.js +1 -1
  56. package/build/context-dialog.es.js +1 -1
  57. package/build/{context-sonner-Dqw0jhwT.cjs → context-sonner-B-eO7pwI.cjs} +2 -2
  58. package/build/{context-sonner-Dqw0jhwT.cjs.map → context-sonner-B-eO7pwI.cjs.map} +1 -1
  59. package/build/{context-sonner-MO6uE8y0.js → context-sonner-CtCttHLD.js} +3 -3
  60. package/build/{context-sonner-MO6uE8y0.js.map → context-sonner-CtCttHLD.js.map} +1 -1
  61. package/build/context-sonner.cjs.js +1 -1
  62. package/build/context-sonner.es.js +1 -1
  63. package/build/{date-picker-ATktGA1c.cjs → date-picker-9rpPgP0a.cjs} +2 -2
  64. package/build/{date-picker-ATktGA1c.cjs.map → date-picker-9rpPgP0a.cjs.map} +1 -1
  65. package/build/{date-picker-D81n3KbO.js → date-picker-BvKtH7lp.js} +6 -6
  66. package/build/{date-picker-D81n3KbO.js.map → date-picker-BvKtH7lp.js.map} +1 -1
  67. package/build/{error-BdFba_yV.cjs → error-aQfsl_Kl.cjs} +1 -1
  68. package/build/{error-BdFba_yV.cjs.map → error-aQfsl_Kl.cjs.map} +1 -1
  69. package/build/{error-BFb2NCum.js → error-iaB6e_aq.js} +1 -1
  70. package/build/{error-BFb2NCum.js.map → error-iaB6e_aq.js.map} +1 -1
  71. package/build/hooks/use-fps/index.d.ts +2 -0
  72. package/build/hooks/use-fps/use.d.ts +2 -0
  73. package/build/hooks/use-fps/use.types.d.ts +10 -0
  74. package/build/hooks-use-deep-compare-memoize.cjs.js +1 -1
  75. package/build/hooks-use-deep-compare-memoize.es.js +1 -1
  76. package/build/hooks-use-deep-memo.cjs.js +1 -1
  77. package/build/hooks-use-deep-memo.es.js +1 -1
  78. package/build/hooks-use-fps.cjs.js +3 -0
  79. package/build/hooks-use-fps.cjs.js.map +1 -0
  80. package/build/hooks-use-fps.d.ts +2 -0
  81. package/build/hooks-use-fps.es.js +46 -0
  82. package/build/hooks-use-fps.es.js.map +1 -0
  83. package/build/{icon-Ddkbk3-m.cjs → icon-DyjaxKWq.cjs} +2 -2
  84. package/build/{icon-Ddkbk3-m.cjs.map → icon-DyjaxKWq.cjs.map} +1 -1
  85. package/build/{icon-D2w7GViT.js → icon-Y-IZxLXB.js} +2 -2
  86. package/build/{icon-D2w7GViT.js.map → icon-Y-IZxLXB.js.map} +1 -1
  87. package/build/index.cjs.js +1 -1
  88. package/build/index.d.ts +1 -0
  89. package/build/index.es.js +46 -44
  90. package/build/{input-B9ceeR9v.js → input-Buf_HFGH.js} +34 -30
  91. package/build/{input-B9ceeR9v.js.map → input-Buf_HFGH.js.map} +1 -1
  92. package/build/{input-CmdwwrV2.cjs → input-DMm67Wyr.cjs} +3 -3
  93. package/build/{input-CmdwwrV2.cjs.map → input-DMm67Wyr.cjs.map} +1 -1
  94. package/build/input-otp-MDjIcfVu.cjs +3 -0
  95. package/build/input-otp-MDjIcfVu.cjs.map +1 -0
  96. package/build/{input-otp-CeMGm5Xq.js → input-otp-q4zKk_nP.js} +26 -26
  97. package/build/input-otp-q4zKk_nP.js.map +1 -0
  98. package/build/{isEqual-0jZ23Bb6.js → isEqual-BHn_Fkkw.js} +1 -1
  99. package/build/{isEqual-0jZ23Bb6.js.map → isEqual-BHn_Fkkw.js.map} +1 -1
  100. package/build/{isEqual-BA0P9-C8.cjs → isEqual-Q-mEN2md.cjs} +1 -1
  101. package/build/{isEqual-BA0P9-C8.cjs.map → isEqual-Q-mEN2md.cjs.map} +1 -1
  102. package/build/{outside-CXyCk8h1.cjs → outside-BP81eKu0.cjs} +2 -2
  103. package/build/{outside-CXyCk8h1.cjs.map → outside-BP81eKu0.cjs.map} +1 -1
  104. package/build/{outside-DopxX0PZ.js → outside-_oOot7z3.js} +6 -6
  105. package/build/{outside-DopxX0PZ.js.map → outside-_oOot7z3.js.map} +1 -1
  106. package/build/{pagination-BluJtJl7.js → pagination-BFTnpYCz.js} +33 -23
  107. package/build/pagination-BFTnpYCz.js.map +1 -0
  108. package/build/pagination-ZXl2fVKZ.cjs +3 -0
  109. package/build/pagination-ZXl2fVKZ.cjs.map +1 -0
  110. package/build/{popover-DHWcQVp1.js → popover--NOw9qfd.js} +1 -1
  111. package/build/{popover-DHWcQVp1.js.map → popover--NOw9qfd.js.map} +1 -1
  112. package/build/{popover-DQkn4RWI.cjs → popover-B1KASIeD.cjs} +1 -1
  113. package/build/{popover-DQkn4RWI.cjs.map → popover-B1KASIeD.cjs.map} +1 -1
  114. package/build/{preview-Bc2qdyd4.js → preview-C-mtYSGG.js} +20 -20
  115. package/build/preview-C-mtYSGG.js.map +1 -0
  116. package/build/preview-p2i9Ju3I.cjs +3 -0
  117. package/build/preview-p2i9Ju3I.cjs.map +1 -0
  118. package/build/select-7yVS14II.cjs +9 -0
  119. package/build/select-7yVS14II.cjs.map +1 -0
  120. package/build/{select-CCbtkj6f.js → select-BdGRG7zf.js} +1069 -1054
  121. package/build/select-BdGRG7zf.js.map +1 -0
  122. package/build/skeleton-BfOHjRgT.cjs +3 -0
  123. package/build/skeleton-BfOHjRgT.cjs.map +1 -0
  124. package/build/skeleton-wRSg85X7.js +39 -0
  125. package/build/skeleton-wRSg85X7.js.map +1 -0
  126. package/build/{textarea-DInJb6Lz.cjs → textarea-Bm3ki2-6.cjs} +2 -2
  127. package/build/{textarea-DInJb6Lz.cjs.map → textarea-Bm3ki2-6.cjs.map} +1 -1
  128. package/build/{textarea-jIGZ0JdP.js → textarea-DLZq4RT-.js} +2 -2
  129. package/build/{textarea-jIGZ0JdP.js.map → textarea-DLZq4RT-.js.map} +1 -1
  130. package/build/{toggle-D1nXs-LD.js → toggle-Bzru0yZw.js} +2 -2
  131. package/build/{toggle-D1nXs-LD.js.map → toggle-Bzru0yZw.js.map} +1 -1
  132. package/build/{toggle-BEmUm0of.cjs → toggle-CdUVhH0Z.cjs} +2 -2
  133. package/build/{toggle-BEmUm0of.cjs.map → toggle-CdUVhH0Z.cjs.map} +1 -1
  134. package/build/{typography-BKp4OAQI.cjs → typography-DzYrzZZb.cjs} +2 -2
  135. package/build/{typography-BKp4OAQI.cjs.map → typography-DzYrzZZb.cjs.map} +1 -1
  136. package/build/{typography-07KEDl9_.js → typography-Tebu6c9L.js} +2 -2
  137. package/build/{typography-07KEDl9_.js.map → typography-Tebu6c9L.js.map} +1 -1
  138. package/package.json +7 -1
  139. package/build/button-C1w25-Hk.js +0 -102
  140. package/build/button-C1w25-Hk.js.map +0 -1
  141. package/build/button-CHEeSypf.cjs +0 -3
  142. package/build/button-CHEeSypf.cjs.map +0 -1
  143. package/build/input-otp-CJfZoWd7.cjs +0 -3
  144. package/build/input-otp-CJfZoWd7.cjs.map +0 -1
  145. package/build/input-otp-CeMGm5Xq.js.map +0 -1
  146. package/build/pagination-BluJtJl7.js.map +0 -1
  147. package/build/pagination-VMAFNidU.cjs +0 -3
  148. package/build/pagination-VMAFNidU.cjs.map +0 -1
  149. package/build/preview-BLu-NOv2.cjs +0 -3
  150. package/build/preview-BLu-NOv2.cjs.map +0 -1
  151. package/build/preview-Bc2qdyd4.js.map +0 -1
  152. package/build/select-CCbtkj6f.js.map +0 -1
  153. package/build/select-CGXyVf57.cjs +0 -9
  154. package/build/select-CGXyVf57.cjs.map +0 -1
  155. package/build/skeleton-Bh6zA5iB.js +0 -39
  156. package/build/skeleton-Bh6zA5iB.js.map +0 -1
  157. package/build/skeleton-DmaXsm9C.cjs +0 -3
  158. package/build/skeleton-DmaXsm9C.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker-D81n3KbO.js","names":[],"sources":["../src/components/date-picker/component.types.ts","../src/components/date-picker/component.tsx"],"sourcesContent":["import { IErrorMessage } from '@local/components/error';\nimport { ISelectMonth } from '@local/components/select';\nimport { ITypography } from '@local/styles/utils';\nimport { IThemeControl, IThemeGenreDatePicker, IThemeSize } from '@local/styles/utils/types';\n\nimport { CSSProperties, HTMLInputAutoCompleteAttribute } from 'react';\n\nexport type IDatePickerMode = DatePickerVariant[];\n\nexport enum DatePickerVariant {\n DD = 'DD',\n MM = 'MM',\n YYYY = 'YYYY',\n}\n\nexport type IDatePickerType = 'manual' | 'select' | 'manualAndSelect';\n\nexport type IDatePickerCommon = {\n className?: string;\n style?: CSSProperties;\n\n classNamePopover?: string;\n stylePopover?: CSSProperties;\n\n sxTypography?: ITypography;\n control?: IThemeControl;\n error?: IErrorMessage;\n\n genre: IThemeGenreDatePicker;\n\n id?: string;\n\n isNiceNumber?: boolean;\n isReadOnly?: boolean;\n isDisabled?: boolean;\n isBold?: boolean;\n isMinWidth?: boolean;\n isShowClearButton?: boolean;\n isOnClickClose?: boolean;\n\n labelPlaceholder?: string;\n\n locale: {\n months: ISelectMonth['monthsLocale'];\n weeks: IDatePickerTranslateWeek[];\n inputs: IDatePickerTranslateInput;\n };\n\n notValidDate?: Omit<IErrorMessage, 'size' | 'isError'>;\n\n mode?: IDatePickerMode;\n\n type?: IDatePickerType;\n\n name?: string;\n\n ariaLabel?: string;\n\n autoComplete?: HTMLInputAutoCompleteAttribute | string;\n\n onBlur?: () => void;\n\n onChange: (timestamp: number | null) => void;\n\n onFocus?: () => void;\n\n size: IThemeSize;\n\n dateMax?: number;\n\n dateMin?: number;\n\n dateDefault: number;\n};\n\ntype IDatePickerControlledValue = {\n value: number | null | undefined;\n\n defaultValue?: never;\n};\n\ntype IDatePickerUncontrolledValue = {\n defaultValue: number | null | undefined;\n\n value?: never;\n};\nexport type IDatePicker = IDatePickerCommon & (IDatePickerControlledValue | IDatePickerUncontrolledValue);\n\nexport interface IDatePickerDay {\n dayOfWeek: number;\n\n isCurrentMonth: boolean;\n\n isDisabled: boolean;\n\n isChoice: boolean;\n\n isToday: boolean;\n\n isWeekend: boolean;\n\n labelNumber: number;\n\n labelString: string;\n\n value: number;\n\n weekOfMonth: number;\n}\n\nexport type IDatePickerTranslateMonth = {\n localeLong: string;\n\n localeShort: string;\n\n value:\n | 'january'\n | 'february'\n | 'march'\n | 'april'\n | 'may'\n | 'june'\n | 'july'\n | 'august'\n | 'september'\n | 'october'\n | 'november'\n | 'december';\n};\nexport type IDatePickerTranslateWeek = {\n localeLong: string;\n\n localeShort: string;\n\n value: 'mo' | 'tu' | 'we' | 'th' | 'fr' | 'sa' | 'su';\n};\nexport type IDatePickerTranslateInput = {\n day: string;\n\n month: string;\n\n year: string;\n};\n","/** biome-ignore-all lint/a11y/useKeyWithClickEvents: Date segments mirror the hidden keyboard input. */\nimport { Button } from '@local/components/button';\nimport { ErrorMessage } from '@local/components/error';\nimport { Popover, usePopover } from '@local/components/popover';\nimport { SelectMonth, SelectYear } from '@local/components/select';\nimport { Stack } from '@local/components/stack';\nimport { Typography } from '@local/components/typography';\nimport { useTypographyStyles } from '@local/hooks/use-typography-styles';\nimport { CSS_CLASS, CSS_VARS, CSS_VARS_RAW, EXTRA_VALUE } from '@local/styles/utils';\nimport { setClasses, setStyles } from '@local/styles/utils/functions';\n\nimport moment, { Moment } from 'moment';\nimport {\n ChangeEvent,\n CSSProperties,\n Fragment,\n KeyboardEvent,\n RefObject,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createContext, useContextSelector } from 'use-context-selector';\n\nimport {\n DatePickerVariant,\n IDatePicker,\n IDatePickerDay,\n IDatePickerMode,\n IDatePickerTranslateWeek,\n IDatePickerType,\n} from './component.types';\n\ntype DatePickerInput = Record<DatePickerVariant, string>;\n\ntype DatePickerPopoverApi = ReturnType<typeof usePopover>;\n\ntype DatePickerWeekDay = {\n index: number;\n label: string;\n};\n\ntype DatePickerInputPlaceholders = Record<DatePickerVariant, string>;\n\ntype DatePickerContextValue = {\n activeSegment: DatePickerVariant | null;\n activateSegment: (segment: DatePickerVariant) => void;\n ariaLabel: IDatePicker['ariaLabel'];\n autoComplete: IDatePicker['autoComplete'];\n classNamePopover: string;\n classNameTypography: string;\n classNameTypographyDay: string;\n classNameWrapper: string;\n clearActiveSegment: () => void;\n clearDate: () => void;\n close: DatePickerPopoverApi['close'];\n control: IDatePicker['control'];\n dateMax: IDatePicker['dateMax'];\n dateMin: IDatePicker['dateMin'];\n daysInMonth: IDatePickerDay[];\n daysInWeek: DatePickerWeekDay[];\n error: IDatePicker['error'];\n floatingStyles: DatePickerPopoverApi['floatingStyles'];\n genre: IDatePicker['genre'];\n id: IDatePicker['id'];\n input: DatePickerInput;\n inputPlaceholders: DatePickerInputPlaceholders;\n isBlockNextMonth: boolean;\n isBlockPrevMonth: boolean;\n isDisabled: IDatePicker['isDisabled'];\n isError: boolean;\n isHasInput: boolean;\n isHasValue: boolean;\n isOpen: boolean;\n isReadOnly: IDatePicker['isReadOnly'];\n isShowButtonList: boolean;\n isShowClearButton: IDatePicker['isShowClearButton'];\n isShowPlaceholder: boolean;\n labelPlaceholder: IDatePicker['labelPlaceholder'];\n localeMonths: IDatePicker['locale']['months'];\n mode: IDatePickerMode;\n monthSelectValue: number;\n name: IDatePicker['name'];\n onBlurInput: () => void;\n onChangeInput: (e: ChangeEvent<HTMLInputElement>) => void;\n onFocusInput: () => void;\n onKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void;\n onNextMonth: () => void;\n onPrevMonth: () => void;\n onSelectDay: (timestamp: number) => void;\n onSelectMonthYear: (timestamp: number | null) => void;\n refFloating: DatePickerPopoverApi['refFloating'];\n refHiddenInput: RefObject<HTMLInputElement | null>;\n refReference: DatePickerPopoverApi['refReference'];\n refSelectMonth: RefObject<HTMLElement | null>;\n refSelectYear: RefObject<HTMLElement | null>;\n rows: number;\n size: IDatePicker['size'];\n stylePopover: CSSProperties | undefined;\n styleTypography: CSSProperties | undefined;\n styleTypographyDay: CSSProperties | undefined;\n styleWrapper: CSSProperties | undefined;\n toggle: DatePickerPopoverApi['toggle'];\n type: IDatePickerType;\n yearSelectValue: number;\n};\n\nconst weekOrder: IDatePickerTranslateWeek['value'][] = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su'];\n\nconst inputSegments: IDatePickerMode = [DatePickerVariant.DD, DatePickerVariant.MM, DatePickerVariant.YYYY];\n\nconst defaultMode: IDatePickerMode = inputSegments;\n\nconst emptyInput: DatePickerInput = {\n [DatePickerVariant.DD]: '',\n [DatePickerVariant.MM]: '',\n [DatePickerVariant.YYYY]: '',\n};\n\nconst DatePickerContext = createContext<DatePickerContextValue | null>(null);\n\nfunction useDatePickerSelector<T>(selector: (value: DatePickerContextValue) => T): T {\n return useContextSelector(DatePickerContext, (value) => {\n if (!value) {\n throw new Error('DatePicker context is not available.');\n }\n\n return selector(value);\n });\n}\n\nexport const DatePicker = (props: IDatePicker) => {\n const {\n ariaLabel,\n autoComplete,\n className,\n classNamePopover: classNamePopoverProp,\n control,\n dateDefault,\n dateMax,\n dateMin,\n error,\n genre,\n id,\n isBold,\n isDisabled,\n isOnClickClose,\n isReadOnly,\n isShowClearButton,\n labelPlaceholder,\n locale,\n mode: modeProp,\n name,\n onBlur,\n onChange,\n onFocus,\n size,\n style,\n stylePopover: stylePopoverProp,\n sxTypography,\n type: typeProp,\n } = props;\n\n const [valueMoment, setValueMoment] = useState<null | Moment>(null);\n const [dateDefaultMoment, setDateDefaultMoment] = useState<Moment>(moment(dateDefault).utc());\n const [input, setInput] = useState<DatePickerInput>(emptyInput);\n const [activeSegment, setActiveSegment] = useState<DatePickerVariant | null>(null);\n const [isError, setIsError] = useState(false);\n const [isInputFocused, setIsInputFocused] = useState(false);\n\n const refInputValue = useRef(input);\n const refIsHasValueOnce = useRef(false);\n const refPrevValue = useRef('');\n const refSelectMonth = useRef<HTMLElement>(null);\n const refSelectYear = useRef<HTMLElement>(null);\n const refHiddenInput = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n refInputValue.current = input;\n }, [input]);\n\n const isHasInput = useMemo(\n () =>\n input[DatePickerVariant.DD] !== '' || input[DatePickerVariant.MM] !== '' || input[DatePickerVariant.YYYY] !== '',\n [input],\n );\n\n const setInputValues = useCallback((value: DatePickerInput) => {\n setInput((prev) => (isSameDatePickerInput(prev, value) ? prev : value));\n }, []);\n\n const onClearInput = useCallback(() => {\n setInputValues(emptyInput);\n }, [setInputValues]);\n\n const mode: IDatePickerMode = useMemo(() => {\n if (!modeProp || modeProp.length === 0) {\n return defaultMode;\n }\n\n const hasDuplicates = new Set(modeProp).size !== modeProp.length;\n\n if (hasDuplicates) {\n return defaultMode;\n }\n\n return modeProp;\n }, [modeProp]);\n\n const type: IDatePickerType = useMemo(() => {\n if (!typeProp) {\n return 'manualAndSelect';\n }\n\n return typeProp;\n }, [typeProp]);\n\n const inputPlaceholders = useMemo<DatePickerInputPlaceholders>(\n () => ({\n [DatePickerVariant.DD]: locale.inputs.day,\n [DatePickerVariant.MM]: locale.inputs.month,\n [DatePickerVariant.YYYY]: locale.inputs.year,\n }),\n [locale.inputs.day, locale.inputs.month, locale.inputs.year],\n );\n\n const setSegmentValue = useCallback((segment: DatePickerVariant, value: string) => {\n setInput((prev) => (prev[segment] === value ? prev : { ...prev, [segment]: value }));\n }, []);\n\n const activateSegment = useCallback((segment: DatePickerVariant) => {\n setActiveSegment(segment);\n }, []);\n\n const clearActiveSegment = useCallback(() => {\n setActiveSegment(null);\n }, []);\n\n const activateNextSegment = useCallback(\n (segment: DatePickerVariant) => {\n setActiveSegment(getNextSegment(segment, mode));\n },\n [mode],\n );\n\n const activatePrevSegment = useCallback(\n (segment: DatePickerVariant) => {\n setActiveSegment(getPrevSegment(segment, mode));\n },\n [mode],\n );\n\n const daysInWeek = useMemo<DatePickerWeekDay[]>(() => {\n return weekOrder.map((key, index) => {\n const found = locale.weeks.find((w) => w.value === key);\n return {\n index,\n label: found?.localeShort ?? key.toUpperCase(),\n };\n });\n }, [locale.weeks]);\n\n const daysInMonth: IDatePickerDay[] = useMemo(() => {\n const dateToday = moment.utc();\n const dateValue = valueMoment ?? dateDefaultMoment;\n const dateStartOfMonth = dateValue.clone().startOf('month');\n const dateEndOfMonth = dateValue.clone().endOf('month');\n const dateMinMoment = dateMin ? moment.utc(dateMin) : null;\n const dateMaxMoment = dateMax ? moment.utc(dateMax) : null;\n\n const dateVisibleDayFirst = dateStartOfMonth.clone().subtract(dateStartOfMonth.isoWeekday() - 1, 'days');\n const dateVisibleDayLast = dateEndOfMonth.clone().add(7 - dateEndOfMonth.isoWeekday(), 'days');\n\n const result: IDatePickerDay[] = [];\n const dateCurrent = dateVisibleDayFirst.clone();\n\n while (dateCurrent <= dateVisibleDayLast) {\n const isCurrentMonth = dateCurrent.isBetween(dateStartOfMonth, dateEndOfMonth, 'day', '[]');\n result.push({\n value: dateCurrent.valueOf(),\n labelString: dateCurrent.format('dd'),\n labelNumber: dateCurrent.date(),\n dayOfWeek: dateCurrent.isoWeekday(),\n isWeekend: [6, 7].includes(dateCurrent.isoWeekday()),\n weekOfMonth: Math.ceil((result.length + 1) / 7),\n isToday: dateCurrent.isSame(dateToday, 'day'),\n isCurrentMonth,\n isChoice: dateCurrent.valueOf() === valueMoment?.valueOf(),\n isDisabled: !!(\n (dateMinMoment && dateCurrent.isBefore(dateMinMoment, 'day')) ||\n (dateMaxMoment && dateCurrent.isAfter(dateMaxMoment, 'day'))\n ),\n });\n\n dateCurrent.add(1, 'day');\n }\n\n return result;\n }, [valueMoment, dateDefaultMoment, dateMax, dateMin]);\n\n const rows = useMemo(() => getCountSevens(daysInMonth.length) + 1, [daysInMonth]);\n const sizeRadius = useMemo(() => CSS_VARS.sizeValue[size].radius, [size]);\n const sizePadding = useMemo(() => CSS_VARS.sizeValue[size].padding, [size]);\n const isHasValue = useMemo(() => valueMoment !== null, [valueMoment]);\n\n const isBlockNextMonth = useMemo(() => {\n const nextMonth = (valueMoment ?? dateDefaultMoment).clone().add(1, 'month').startOf('month');\n const isBeforeEndDate = dateMax ? nextMonth.isAfter(moment.utc(dateMax), 'month') : false;\n return isBeforeEndDate;\n }, [valueMoment, dateMax, dateDefaultMoment]);\n\n const isBlockPrevMonth = useMemo(() => {\n const prevMonth = (valueMoment ?? dateDefaultMoment).clone().subtract(1, 'month').startOf('month');\n const isAfterStartDate = dateMin ? prevMonth.isBefore(moment.utc(dateMin), 'month') : false;\n return isAfterStartDate;\n }, [valueMoment, dateMin, dateDefaultMoment]);\n\n const onFocusPopover = useCallback(() => {\n onFocus?.();\n }, [onFocus]);\n\n const onBlurPopover = useCallback(() => {\n onBlur?.();\n }, [onBlur]);\n\n const refsExcludeClickOutside = useMemo(() => [refSelectMonth, refSelectYear], []);\n\n const { isOpen, refReference, refFloating, floatingStyles, close, toggle } = usePopover({\n isFocusTrap: true,\n placement: 'bottom-start',\n offset: sizePadding,\n mode: 'independence',\n isClickOutside: true,\n refsExcludeClickOutside,\n isDisabled: isDisabled || isReadOnly,\n onFocus: onFocusPopover,\n onBlur: onBlurPopover,\n onBlurReference: clearActiveSegment,\n });\n\n const isShowPlaceholder = useMemo(() => {\n return !!(\n !isInputFocused &&\n !isHasValue &&\n labelPlaceholder &&\n (type !== 'select' ? !isOpen : true) &&\n !isHasInput &&\n !activeSegment\n );\n }, [isInputFocused, isHasValue, isOpen, labelPlaceholder, isHasInput, activeSegment, type]);\n\n const onChangeDate = useCallback(\n (timestamp: number, isAddLeadingZeros: boolean, input?: DatePickerInput) => {\n const momentNewDate = moment(timestamp).utc();\n\n const dd = momentNewDate.clone().date().toString();\n const mm = (momentNewDate.clone().month() + 1).toString();\n\n const ddWithZero = dd.padStart(2, '0');\n const mmWithZero = mm.padStart(2, '0');\n\n const yyyy = momentNewDate.clone().year().toString();\n const ddInput = input?.[DatePickerVariant.DD];\n const mmInput = input?.[DatePickerVariant.MM];\n const yyyyInput = input?.[DatePickerVariant.YYYY];\n\n const isSameInput = ddWithZero === ddInput && mmWithZero === mmInput && yyyyInput === yyyy;\n const isSameMoment = valueMoment?.isSame(momentNewDate, 'day');\n\n if (!isSameMoment) {\n setValueMoment(momentNewDate);\n onChange(momentNewDate.valueOf());\n }\n\n const shouldUpdateInput = input ? !isSameInput : !isSameMoment;\n\n if (shouldUpdateInput) {\n setInputValues({\n [DatePickerVariant.DD]: isAddLeadingZeros ? ddWithZero : dd,\n [DatePickerVariant.MM]: isAddLeadingZeros ? mmWithZero : mm,\n [DatePickerVariant.YYYY]: yyyy,\n });\n }\n },\n [valueMoment, onChange, setInputValues],\n );\n\n const onKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n const key = e.key;\n const allowedKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Backspace', 'Delete', 'Tab', 'Enter'];\n const isDigit = /^\\d$/.test(key);\n const isAllowed = isDigit || allowedKeys.includes(key) || e.ctrlKey || e.metaKey;\n\n if (!isAllowed) {\n e.preventDefault();\n return;\n }\n\n if (!activeSegment) {\n return;\n }\n\n if (isDigit) {\n getDigitKey(key, activeSegment, input, setSegmentValue, activateNextSegment);\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (key === 'Tab') {\n if (mode[mode.length - 1] !== activeSegment) {\n e.preventDefault();\n activateNextSegment(activeSegment);\n } else {\n refHiddenInput?.current?.blur();\n }\n }\n\n if (key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (key === 'Backspace' || key === 'Delete') {\n const current = input[activeSegment];\n\n if (current !== '') {\n setSegmentValue(activeSegment, current.length === 1 ? '' : current.slice(0, -1));\n } else {\n activatePrevSegment(activeSegment);\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (key === 'ArrowLeft' || key === 'ArrowDown') {\n e.preventDefault();\n activatePrevSegment(activeSegment);\n }\n\n if (key === 'ArrowRight' || key === 'ArrowUp') {\n e.preventDefault();\n activateNextSegment(activeSegment);\n }\n },\n [activeSegment, activateNextSegment, activatePrevSegment, input, mode, setSegmentValue],\n );\n\n const onNextMonth = useCallback(() => {\n const newDate = (valueMoment ?? dateDefaultMoment).clone().add(1, 'month');\n onChangeDate(newDate.valueOf(), true);\n }, [valueMoment, onChangeDate, dateDefaultMoment]);\n\n const onPrevMonth = useCallback(() => {\n const newDate = (valueMoment ?? dateDefaultMoment).clone().subtract(1, 'month');\n onChangeDate(newDate.valueOf(), true);\n }, [valueMoment, onChangeDate, dateDefaultMoment]);\n\n const onFocusInput = useCallback(() => {\n if (type === 'select') return;\n setIsInputFocused(true);\n setActiveSegment((current) => current ?? DatePickerVariant.DD);\n }, [type]);\n\n const onBlurInput = useCallback(() => {\n setIsInputFocused(false);\n\n if (!isOpen) {\n onBlur?.();\n }\n }, [isOpen, onBlur]);\n\n const onChangeInput = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n const result = getParseDateString(value);\n\n if (result) {\n setInputValues({\n [DatePickerVariant.DD]: String(result.day).padStart(2, '0'),\n [DatePickerVariant.MM]: String(result.month).padStart(2, '0'),\n [DatePickerVariant.YYYY]: String(result.year),\n });\n if (refHiddenInput.current) refHiddenInput.current.value = '';\n return;\n }\n\n const prevValue = refPrevValue.current;\n const newChar = value.length > prevValue.length ? value.slice(-1) : null;\n\n refPrevValue.current = value;\n\n if (newChar && /^\\d$/.test(newChar)) {\n onKeyDown({\n key: newChar,\n preventDefault: () => {},\n stopPropagation: () => {},\n } as unknown as KeyboardEvent<HTMLInputElement>);\n }\n\n if (value.length < prevValue.length) {\n onKeyDown({\n key: 'Backspace',\n preventDefault: () => {},\n stopPropagation: () => {},\n } as unknown as KeyboardEvent<HTMLInputElement>);\n }\n\n if (refHiddenInput.current) refHiddenInput.current.value = '';\n },\n [onKeyDown, setInputValues],\n );\n\n useEffect(() => {\n if (isHasValue && !refIsHasValueOnce.current) refIsHasValueOnce.current = true;\n }, [isHasValue]);\n\n useEffect(() => {\n setDateDefaultMoment(moment(dateDefault).utc());\n }, [dateDefault]);\n\n useEffect(() => {\n setValueMoment(props.value || props.defaultValue ? moment(props.value ?? props.defaultValue).utc() : null);\n if (props.value) {\n const m = moment(props.value).utc();\n setInputValues({\n [DatePickerVariant.DD]: m.date().toString().padStart(2, '0'),\n [DatePickerVariant.MM]: (m.month() + 1).toString().padStart(2, '0'),\n [DatePickerVariant.YYYY]: m.year().toString(),\n });\n }\n }, [props.value, props.defaultValue, setInputValues]);\n\n useEffect(() => {\n if (!activeSegment)\n getValidateInput(\n input,\n (value) => {\n onChangeDate(value, true, input);\n setIsError(false);\n },\n () => {\n onChange(null);\n setIsError(true);\n },\n (isHasInput) => {\n if (!isHasInput) {\n if (refIsHasValueOnce.current) {\n onChange(null);\n refIsHasValueOnce.current = false;\n }\n setIsError(false);\n }\n },\n );\n }, [onChangeDate, onChange, input, activeSegment]);\n\n useEffect(() => {\n if (!isOpen && !isInputFocused && isHasInput && !activeSegment)\n getValidateInput(\n input,\n () => {},\n () => {\n onChange(null);\n onClearInput();\n setIsError(false);\n },\n () => {\n onChange(null);\n onClearInput();\n setIsError(false);\n },\n );\n }, [onClearInput, input, isOpen, isInputFocused, onChange, isHasInput, activeSegment]);\n\n useEffect(() => {\n if (!activeSegment) return;\n getValidateInput(\n refInputValue.current,\n (value) => {\n onChangeDate(value, true, refInputValue.current);\n setIsError(false);\n },\n () => {\n setIsError(true);\n },\n (isHasInput) => {\n if (!isHasInput) {\n setIsError(false);\n }\n },\n );\n }, [onChangeDate, activeSegment]);\n\n useEffect(() => {\n if (activeSegment) {\n close();\n refHiddenInput?.current?.focus();\n }\n }, [activeSegment, close]);\n\n const monthSelectValue = useMemo(\n () => (valueMoment ?? dateDefaultMoment).clone().startOf('month').utc().valueOf(),\n [valueMoment, dateDefaultMoment],\n );\n\n const yearSelectValue = useMemo(\n () => (valueMoment ?? dateDefaultMoment).clone().startOf('year').utc().valueOf(),\n [valueMoment, dateDefaultMoment],\n );\n\n const clearDate = useCallback(() => {\n onChange(null);\n onClearInput();\n setIsError(false);\n }, [onChange, onClearInput]);\n\n const onSelectDay = useCallback(\n (timestamp: number) => {\n onChangeDate(timestamp, true);\n if (isOnClickClose) {\n close();\n }\n },\n [onChangeDate, isOnClickClose, close],\n );\n\n const onSelectMonthYear = useCallback(\n (timestamp: number | null) => {\n if (timestamp) onChangeDate(timestamp, true);\n },\n [onChangeDate],\n );\n\n const { className: classNameTypographyDay, style: styleTypographyDay } = useTypographyStyles({\n sx: {\n variant: EXTRA_VALUE.sizeToController.small,\n weight: '500',\n ...sxTypography,\n },\n });\n\n const { className: classNameTypography, style: styleTypography } = useTypographyStyles({\n sx: {\n size: 16,\n weight: isBold ? '700' : '400',\n ...sxTypography,\n },\n });\n\n const { className: classNameWrapper, style: styleWrapper } = useMemo(() => {\n const classNameWrapper = setClasses([CSS_CLASS.component.datePicker.wrapper, className]);\n const vars: Record<string, string> = {};\n\n vars[CSS_VARS_RAW.component.datePicker.padding] = CSS_VARS.size[size].padding;\n vars[CSS_VARS_RAW.component.datePicker.inputBackground] = CSS_VARS.genre.select[genre].background.index;\n vars[CSS_VARS_RAW.component.datePicker.inputBackgroundHover] = CSS_VARS.genre.input[genre].background;\n vars[CSS_VARS_RAW.component.datePicker.inputSegmentBackgroundActive] = CSS_VARS.palette.fillQuaternaryLight;\n vars[CSS_VARS_RAW.component.datePicker.inputBorderColor] = CSS_VARS.genre.input[genre].border;\n vars[CSS_VARS_RAW.component.datePicker.inputBorderColorHover] = CSS_VARS.genre.input[genre].border;\n vars[CSS_VARS_RAW.component.datePicker.inputColor] = CSS_VARS.genre.input[genre].color;\n vars[CSS_VARS_RAW.component.datePicker.inputColorHover] = CSS_VARS.genre.input[genre].color;\n vars[CSS_VARS_RAW.component.datePicker.inputPadding] = isShowPlaceholder\n ? `0px ${CSS_VARS.size[size].padding}`\n : `0px ${CSS_VARS.size[size].padding} 0px ${CSS_VARS.sizeValue[size].padding - 2}px`;\n vars[CSS_VARS_RAW.component.datePicker.inputHeight] = CSS_VARS.size[size].height;\n vars[CSS_VARS_RAW.component.datePicker.inputRadius] = CSS_VARS.size[size].radius;\n vars[CSS_VARS_RAW.component.datePicker.inputValueColor] = CSS_VARS.genre.input[genre].color;\n vars[CSS_VARS_RAW.component.datePicker.inputPlaceholderColor] = CSS_VARS.genre.input[genre].placeholder;\n vars[CSS_VARS_RAW.component.datePicker.buttonToggleRight] = `${CSS_VARS.size[size].padding}`;\n vars[CSS_VARS_RAW.component.datePicker.buttonClearRight] =\n `${CSS_VARS.sizeValue[size].padding * 2 + CSS_VARS.sizeValue[size].height}px`;\n\n const styleWrapper = setStyles([Object.keys(vars).length ? vars : undefined, style]);\n\n return { className: classNameWrapper, style: styleWrapper };\n }, [className, style, isShowPlaceholder, genre, size]);\n\n const { className: classNamePopover, style: stylePopover } = useMemo(() => {\n const classNamePopover = setClasses([classNamePopoverProp]);\n const vars: Record<string, string> = {};\n\n vars[CSS_VARS_RAW.component.datePicker.dayRadius] = `${sizeRadius}px`;\n vars[CSS_VARS_RAW.component.datePicker.dayBackgroundRest] = CSS_VARS.genre.datepicker[genre].background.index;\n vars[CSS_VARS_RAW.component.datePicker.dayBackgroundHover] = CSS_VARS.genre.datepicker[genre].background.hover;\n vars[CSS_VARS_RAW.component.datePicker.dayBackgroundWeekend] = CSS_VARS.genre.datepicker[genre].background.weekend;\n vars[CSS_VARS_RAW.component.datePicker.dayBackgroundToday] = CSS_VARS.genre.datepicker[genre].background.today;\n vars[CSS_VARS_RAW.component.datePicker.dayBackgroundChoice] = CSS_VARS.genre.datepicker[genre].background.choice;\n vars[CSS_VARS_RAW.component.datePicker.dayBorderRest] = CSS_VARS.genre.datepicker[genre].border.index;\n vars[CSS_VARS_RAW.component.datePicker.dayBorderWeekend] = CSS_VARS.genre.datepicker[genre].border.weekend;\n vars[CSS_VARS_RAW.component.datePicker.dayBorderToday] = CSS_VARS.genre.datepicker[genre].border.today;\n vars[CSS_VARS_RAW.component.datePicker.dayBorderChoice] = CSS_VARS.genre.datepicker[genre].border.choice;\n vars[CSS_VARS_RAW.component.datePicker.dayBorderHover] = CSS_VARS.genre.datepicker[genre].border.hover;\n vars[CSS_VARS_RAW.component.datePicker.dayColorRest] = CSS_VARS.genre.datepicker[genre].color.index;\n vars[CSS_VARS_RAW.component.datePicker.dayColorHover] = CSS_VARS.genre.datepicker[genre].color.hover;\n vars[CSS_VARS_RAW.component.datePicker.dayColorWeekend] = CSS_VARS.genre.datepicker[genre].color.weekend;\n vars[CSS_VARS_RAW.component.datePicker.dayColorToday] = CSS_VARS.genre.datepicker[genre].color.today;\n vars[CSS_VARS_RAW.component.datePicker.dayColorChoice] = CSS_VARS.genre.datepicker[genre].color.choice;\n\n const stylePopover = setStyles([\n Object.keys(vars).length ? vars : undefined,\n {\n background: CSS_VARS.genre.popover[genre].background,\n border: `solid 1px ${CSS_VARS.genre.input[genre].border}`,\n },\n stylePopoverProp,\n ]);\n\n return { className: classNamePopover, style: stylePopover };\n }, [classNamePopoverProp, stylePopoverProp, genre, sizeRadius]);\n\n const isShowButtonList = useMemo(() => {\n return type !== 'manual' || !!(isShowClearButton && (isHasValue || isHasInput) && !isDisabled && !isReadOnly);\n }, [type, isHasInput, isHasValue, isShowClearButton, isDisabled, isReadOnly]);\n\n const contextValue = useMemo<DatePickerContextValue>(\n () => ({\n activeSegment,\n activateSegment,\n ariaLabel,\n autoComplete,\n classNamePopover,\n classNameTypography,\n classNameTypographyDay,\n classNameWrapper,\n clearActiveSegment,\n clearDate,\n close,\n control,\n dateMax,\n dateMin,\n daysInMonth,\n daysInWeek,\n error,\n floatingStyles,\n genre,\n id,\n input,\n inputPlaceholders,\n isBlockNextMonth,\n isBlockPrevMonth,\n isDisabled,\n isError,\n isHasInput,\n isHasValue,\n isOpen,\n isReadOnly,\n isShowButtonList,\n isShowClearButton,\n isShowPlaceholder,\n labelPlaceholder,\n localeMonths: locale.months,\n mode,\n monthSelectValue,\n name,\n onBlurInput,\n onChangeInput,\n onFocusInput,\n onKeyDown,\n onNextMonth,\n onPrevMonth,\n onSelectDay,\n onSelectMonthYear,\n refFloating,\n refHiddenInput,\n refReference,\n refSelectMonth,\n refSelectYear,\n rows,\n size,\n stylePopover,\n styleTypography,\n styleTypographyDay,\n styleWrapper,\n toggle,\n type,\n yearSelectValue,\n }),\n [\n activeSegment,\n activateSegment,\n ariaLabel,\n autoComplete,\n classNamePopover,\n classNameTypography,\n classNameTypographyDay,\n classNameWrapper,\n clearActiveSegment,\n clearDate,\n close,\n control,\n dateMax,\n dateMin,\n daysInMonth,\n daysInWeek,\n error,\n floatingStyles,\n genre,\n id,\n input,\n inputPlaceholders,\n isBlockNextMonth,\n isBlockPrevMonth,\n isDisabled,\n isError,\n isHasInput,\n isHasValue,\n isOpen,\n isReadOnly,\n isShowButtonList,\n isShowClearButton,\n isShowPlaceholder,\n labelPlaceholder,\n locale.months,\n mode,\n monthSelectValue,\n name,\n onBlurInput,\n onChangeInput,\n onFocusInput,\n onKeyDown,\n onNextMonth,\n onPrevMonth,\n onSelectDay,\n onSelectMonthYear,\n refFloating,\n refReference,\n rows,\n size,\n stylePopover,\n styleTypography,\n styleTypographyDay,\n styleWrapper,\n toggle,\n type,\n yearSelectValue,\n ],\n );\n\n return (\n <DatePickerContext.Provider value={contextValue}>\n <DatePickerContent />\n </DatePickerContext.Provider>\n );\n};\n\nconst DatePickerContent = memo(() => {\n const classNameWrapper = useDatePickerSelector((value) => value.classNameWrapper);\n const styleWrapper = useDatePickerSelector((value) => value.styleWrapper);\n\n return (\n <>\n <div className={classNameWrapper} style={styleWrapper} tabIndex={-1}>\n <DatePickerInputWrapper />\n </div>\n <DatePickerPopover />\n <DatePickerError />\n </>\n );\n});\n\nconst DatePickerInputWrapper = memo(() => {\n const activeSegment = useDatePickerSelector((value) => value.activeSegment);\n const activateSegment = useDatePickerSelector((value) => value.activateSegment);\n const control = useDatePickerSelector((value) => value.control);\n const isDisabled = useDatePickerSelector((value) => value.isDisabled);\n const isOpen = useDatePickerSelector((value) => value.isOpen);\n const isReadOnly = useDatePickerSelector((value) => value.isReadOnly);\n const refReference = useDatePickerSelector((value) => value.refReference);\n const toggle = useDatePickerSelector((value) => value.toggle);\n const type = useDatePickerSelector((value) => value.type);\n\n const handleClick = useCallback(() => {\n if (type === 'select') {\n toggle();\n return;\n }\n\n if (!activeSegment && !isReadOnly) {\n activateSegment(DatePickerVariant.DD);\n }\n }, [activeSegment, activateSegment, isReadOnly, toggle, type]);\n\n return (\n <div\n ref={refReference as RefObject<HTMLDivElement | null>}\n tabIndex={-1}\n onClick={handleClick}\n className={setClasses([\n CSS_CLASS.component.datePicker.inputWrapper,\n CSS_CLASS.transition.color,\n CSS_CLASS.control[\n isDisabled ? 'none' : (control ?? (isOpen || activeSegment ? 'boxShadowSelect' : 'boxShadowOnlyHover'))\n ],\n ])}\n >\n <DatePickerHiddenInput />\n <DatePickerDisplay />\n <DatePickerButtonList />\n </div>\n );\n});\n\nconst DatePickerHiddenInput = memo(() => {\n const ariaLabel = useDatePickerSelector((value) => value.ariaLabel);\n const autoComplete = useDatePickerSelector((value) => value.autoComplete);\n const id = useDatePickerSelector((value) => value.id);\n const isDisabled = useDatePickerSelector((value) => value.isDisabled);\n const isReadOnly = useDatePickerSelector((value) => value.isReadOnly);\n const name = useDatePickerSelector((value) => value.name);\n const onBlurInput = useDatePickerSelector((value) => value.onBlurInput);\n const onChangeInput = useDatePickerSelector((value) => value.onChangeInput);\n const onFocusInput = useDatePickerSelector((value) => value.onFocusInput);\n const onKeyDown = useDatePickerSelector((value) => value.onKeyDown);\n const refHiddenInput = useDatePickerSelector((value) => value.refHiddenInput);\n const type = useDatePickerSelector((value) => value.type);\n\n if (type === 'select') {\n return null;\n }\n\n return (\n <input\n name={name}\n aria-label={ariaLabel ?? name}\n autoComplete={autoComplete}\n id={id}\n ref={refHiddenInput}\n type='tel'\n inputMode='numeric'\n tabIndex={0}\n disabled={isDisabled || isReadOnly}\n style={{\n position: 'absolute',\n left: '-100dvw',\n top: 0,\n width: '100%',\n height: '100%',\n opacity: 0,\n border: 'none',\n background: 'transparent',\n }}\n onKeyDown={onKeyDown}\n onChange={onChangeInput}\n onFocus={onFocusInput}\n onBlur={onBlurInput}\n />\n );\n});\n\nconst DatePickerDisplay = memo(() => {\n const isShowPlaceholder = useDatePickerSelector((value) => value.isShowPlaceholder);\n\n return isShowPlaceholder ? <DatePickerPlaceholder /> : <DatePickerInputSegments />;\n});\n\nconst DatePickerPlaceholder = memo(() => {\n const genre = useDatePickerSelector((value) => value.genre);\n const labelPlaceholder = useDatePickerSelector((value) => value.labelPlaceholder);\n\n return (\n <Typography\n sx={{ size: 16, line: 1, isNoUserSelect: true }}\n style={{\n color: CSS_VARS.genre.input[genre].placeholder,\n }}\n >\n {labelPlaceholder}\n </Typography>\n );\n});\n\nconst DatePickerInputSegments = memo(() => {\n const mode = useDatePickerSelector((value) => value.mode);\n\n return mode.map((segment, index) => (\n <Fragment key={segment}>\n <DatePickerInputSegment segment={segment} />\n {index !== mode.length - 1 && <span style={{ width: '4px', pointerEvents: 'none', textAlign: 'center' }}>.</span>}\n </Fragment>\n ));\n});\n\ntype DatePickerInputSegmentProps = {\n segment: DatePickerVariant;\n};\n\nconst DatePickerInputSegment = memo((props: DatePickerInputSegmentProps) => {\n const { segment } = props;\n const activateSegment = useDatePickerSelector((value) => value.activateSegment);\n const classNameTypography = useDatePickerSelector((value) => value.classNameTypography);\n const inputValue = useDatePickerSelector((value) => value.input[segment]);\n const isActive = useDatePickerSelector((value) => value.activeSegment === segment);\n const isDisabled = useDatePickerSelector((value) => value.isDisabled);\n const isReadOnly = useDatePickerSelector((value) => value.isReadOnly);\n const placeholder = useDatePickerSelector((value) => value.inputPlaceholders[segment]);\n const styleTypography = useDatePickerSelector((value) => value.styleTypography);\n const type = useDatePickerSelector((value) => value.type);\n\n return (\n <div\n className={setClasses([\n CSS_CLASS.component.datePicker.inputSegment,\n CSS_CLASS.transition.color,\n classNameTypography,\n !!inputValue && CSS_CLASS.component.datePicker.inputSegmentHasValue,\n isActive && CSS_CLASS.component.datePicker.inputSegmentIsActive,\n ])}\n style={styleTypography}\n onClick={(e) => {\n if (type === 'select') return;\n e.preventDefault();\n e.stopPropagation();\n if (isDisabled || isReadOnly) return;\n activateSegment(segment);\n }}\n >\n {inputValue || placeholder || ''}\n </div>\n );\n});\n\nconst DatePickerButtonList = memo(() => {\n const isShowButtonList = useDatePickerSelector((value) => value.isShowButtonList);\n\n if (!isShowButtonList) {\n return null;\n }\n\n return (\n <div className={setClasses([CSS_CLASS.component.datePicker.listButton])}>\n <DatePickerClearButton />\n <DatePickerCalendarButton />\n </div>\n );\n});\n\nconst DatePickerClearButton = memo(() => {\n const clearActiveSegment = useDatePickerSelector((value) => value.clearActiveSegment);\n const clearDate = useDatePickerSelector((value) => value.clearDate);\n const genre = useDatePickerSelector((value) => value.genre);\n const isDisabled = useDatePickerSelector((value) => value.isDisabled);\n const isHasInput = useDatePickerSelector((value) => value.isHasInput);\n const isHasValue = useDatePickerSelector((value) => value.isHasValue);\n const isReadOnly = useDatePickerSelector((value) => value.isReadOnly);\n const isShowClearButton = useDatePickerSelector((value) => value.isShowClearButton);\n\n if (!isShowClearButton || (!isHasValue && !isHasInput) || isDisabled || isReadOnly) {\n return null;\n }\n\n return (\n <Button\n genre={genre}\n size='small'\n isWidthAsHeight\n isFullRadius\n isFullSize\n isHiddenBorder\n isOnlyIcon\n tabIndex={0}\n icons={[{ name: 'Close', type: 'id' }]}\n isDisabled={isDisabled || isReadOnly}\n onFocus={(e) => {\n e.preventDefault();\n e.stopPropagation();\n clearActiveSegment();\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n clearDate();\n }}\n />\n );\n});\n\nconst DatePickerCalendarButton = memo(() => {\n const clearActiveSegment = useDatePickerSelector((value) => value.clearActiveSegment);\n const genre = useDatePickerSelector((value) => value.genre);\n const isDisabled = useDatePickerSelector((value) => value.isDisabled);\n const isReadOnly = useDatePickerSelector((value) => value.isReadOnly);\n const toggle = useDatePickerSelector((value) => value.toggle);\n const type = useDatePickerSelector((value) => value.type);\n\n if (type === 'manual') {\n return null;\n }\n\n return (\n <Button\n genre={genre}\n size='small'\n isWidthAsHeight\n isFullRadius\n isFullSize\n isHiddenBorder\n isOnlyIcon\n icons={[{ name: 'Calendar', type: 'id' }]}\n isDisabled={isDisabled || isReadOnly}\n tabIndex={0}\n onFocus={(e) => {\n e.preventDefault();\n e.stopPropagation();\n clearActiveSegment();\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n toggle();\n }}\n />\n );\n});\n\nconst DatePickerPopover = memo(() => {\n const classNamePopover = useDatePickerSelector((value) => value.classNamePopover);\n const floatingStyles = useDatePickerSelector((value) => value.floatingStyles);\n const genre = useDatePickerSelector((value) => value.genre);\n const isOpen = useDatePickerSelector((value) => value.isOpen);\n const refFloating = useDatePickerSelector((value) => value.refFloating);\n const size = useDatePickerSelector((value) => value.size);\n const stylePopover = useDatePickerSelector((value) => value.stylePopover);\n\n return (\n <Popover\n style={stylePopover}\n className={classNamePopover}\n size={size}\n genre={genre}\n isOpen={isOpen}\n floatingStyles={floatingStyles}\n ref={refFloating}\n control='boxShadowSelect'\n isDisabledBoxShadow\n >\n <DatePickerDropdownList />\n </Popover>\n );\n});\n\nconst DatePickerDropdownList = memo(() => {\n return (\n <div className={setClasses([CSS_CLASS.component.datePicker.dropdownList])}>\n <DatePickerNavigation />\n <DatePickerDayGrid />\n </div>\n );\n});\n\nconst DatePickerNavigation = memo(() => {\n const dateMax = useDatePickerSelector((value) => value.dateMax);\n const dateMin = useDatePickerSelector((value) => value.dateMin);\n const genre = useDatePickerSelector((value) => value.genre);\n const isBlockNextMonth = useDatePickerSelector((value) => value.isBlockNextMonth);\n const isBlockPrevMonth = useDatePickerSelector((value) => value.isBlockPrevMonth);\n const localeMonths = useDatePickerSelector((value) => value.localeMonths);\n const monthSelectValue = useDatePickerSelector((value) => value.monthSelectValue);\n const onNextMonth = useDatePickerSelector((value) => value.onNextMonth);\n const onPrevMonth = useDatePickerSelector((value) => value.onPrevMonth);\n const onSelectMonthYear = useDatePickerSelector((value) => value.onSelectMonthYear);\n const refSelectMonth = useDatePickerSelector((value) => value.refSelectMonth);\n const refSelectYear = useDatePickerSelector((value) => value.refSelectYear);\n const yearSelectValue = useDatePickerSelector((value) => value.yearSelectValue);\n\n return (\n <Stack\n style={{\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <Button\n type='button'\n isFullRadius\n icons={[\n {\n name: 'Arrow2',\n type: 'id',\n turn: 90,\n },\n ]}\n isWidthAsHeight\n genre={genre}\n size='small'\n onClick={onPrevMonth}\n isHidden={isBlockPrevMonth}\n isDisabled={isBlockPrevMonth}\n />\n <Stack style={{ gap: '8px' }}>\n <SelectMonth\n isToggleWhenClickSelectListOption\n monthsLocale={localeMonths}\n genre={genre}\n size='small'\n value={monthSelectValue}\n isOnClickOptionClose\n isStayValueAfterSelect\n isOnlyColorInSelectListOption\n isCenter\n isShortLabel\n refFloating={refSelectMonth}\n onChange={onSelectMonthYear}\n dateMin={dateMin}\n dateMax={dateMax}\n style={{ width: '60px' }}\n />\n <SelectYear\n isToggleWhenClickSelectListOption\n genre={genre}\n size='small'\n refFloating={refSelectYear}\n value={yearSelectValue}\n onChange={onSelectMonthYear}\n isOnClickOptionClose\n isStayValueAfterSelect\n isOnlyColorInSelectListOption\n isCenter\n dateMin={dateMin}\n dateMax={dateMax}\n style={{ width: '60px' }}\n />\n </Stack>\n <Button\n type='button'\n onClick={onNextMonth}\n isWidthAsHeight\n isFullRadius\n icons={[\n {\n name: 'Arrow2',\n type: 'id',\n turn: -90,\n },\n ]}\n genre={genre}\n size='small'\n isDisabled={isBlockNextMonth}\n isHidden={isBlockNextMonth}\n />\n </Stack>\n );\n});\n\nconst DatePickerDayGrid = memo(() => {\n const classNameTypographyDay = useDatePickerSelector((value) => value.classNameTypographyDay);\n const daysInMonth = useDatePickerSelector((value) => value.daysInMonth);\n const daysInWeek = useDatePickerSelector((value) => value.daysInWeek);\n const rows = useDatePickerSelector((value) => value.rows);\n const styleTypographyDay = useDatePickerSelector((value) => value.styleTypographyDay);\n\n return (\n <div\n className={setClasses([CSS_CLASS.component.datePicker.dropdownListDays])}\n style={setStyles([\n {\n [CSS_VARS_RAW.component.datePicker.rows]: rows,\n },\n ])}\n >\n {daysInWeek.map((day) => (\n <div\n className={setClasses([\n CSS_CLASS.component.datePicker.dayOfWeek,\n classNameTypographyDay,\n CSS_CLASS.transition.color,\n ])}\n style={setStyles([\n styleTypographyDay,\n {\n [CSS_VARS_RAW.component.datePicker.row]: daysInMonth[0]?.weekOfMonth - 1,\n [CSS_VARS_RAW.component.datePicker.column]: day.index + 1,\n },\n ])}\n tabIndex={-1}\n key={`${day.label}-${day.index}`}\n >\n {day.label}\n </div>\n ))}\n {daysInMonth.map((day) => (\n <DatePickerDayCell\n day={day}\n classNameTypographyDay={classNameTypographyDay}\n styleTypographyDay={styleTypographyDay}\n key={day.value}\n />\n ))}\n </div>\n );\n});\n\ntype DatePickerDayCellProps = {\n classNameTypographyDay: string;\n day: IDatePickerDay;\n styleTypographyDay: CSSProperties | undefined;\n};\n\nconst DatePickerDayCell = memo((props: DatePickerDayCellProps) => {\n const { classNameTypographyDay, day, styleTypographyDay } = props;\n const onSelectDay = useDatePickerSelector((value) => value.onSelectDay);\n\n return (\n <div\n className={setClasses([\n CSS_CLASS.component.datePicker.day,\n classNameTypographyDay,\n CSS_CLASS.control[day.isDisabled || day.isChoice ? 'none' : 'boxShadow'],\n CSS_CLASS.transition.color,\n day.isDisabled && CSS_CLASS.component.datePicker.dayIsHidden,\n day.isToday && CSS_CLASS.component.datePicker.dayIsToday,\n day.isWeekend && CSS_CLASS.component.datePicker.dayIsWeekend,\n day.isChoice && CSS_CLASS.component.datePicker.dayIsChoice,\n !day.isCurrentMonth && CSS_CLASS.component.datePicker.dayIsNotCurrentMonth,\n ])}\n style={setStyles([\n styleTypographyDay,\n {\n [CSS_VARS_RAW.component.datePicker.row]: day.weekOfMonth + 1,\n [CSS_VARS_RAW.component.datePicker.column]: day.dayOfWeek,\n },\n ])}\n onClick={() => {\n if (!day.isDisabled) {\n onSelectDay(day.value);\n }\n }}\n tabIndex={day.isDisabled ? -1 : 0}\n >\n {day.labelNumber}\n </div>\n );\n});\n\nconst DatePickerError = memo(() => {\n const error = useDatePickerSelector((value) => value.error);\n const isError = useDatePickerSelector((value) => value.isError);\n const size = useDatePickerSelector((value) => value.size);\n\n if (!error?.isError && !isError) {\n return null;\n }\n\n return (\n <ErrorMessage\n size={error?.size ?? size}\n sxTypography={{ size: 16, weight: '400', ...error?.sxTypography }}\n {...(error ?? {})}\n />\n );\n});\n\nconst ISO_DATE_REGEX = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst SLASH_DATE_REGEX = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\n\nfunction getDigitKey(\n key: string,\n activeSegment: DatePickerVariant,\n input: DatePickerInput,\n setValue: (segment: DatePickerVariant, value: string) => void,\n onNextSegment: (segment: DatePickerVariant) => void,\n) {\n const current = input[activeSegment] ?? '';\n\n if (activeSegment === DatePickerVariant.YYYY) {\n setValue(activeSegment, current.length >= 4 ? key : current + key);\n return;\n }\n\n if (current.length >= 2 || current === '') {\n setValue(activeSegment, key);\n return;\n }\n\n const maxValue = activeSegment === DatePickerVariant.DD ? 31 : 12;\n const potential = current + key;\n const potentialNumber = Number(potential);\n\n if (potentialNumber > maxValue || potentialNumber === 0) {\n setValue(activeSegment, key);\n return;\n }\n\n setValue(activeSegment, potential);\n onNextSegment(activeSegment);\n}\n\nfunction getParseDateString(value: string) {\n if (ISO_DATE_REGEX.test(value)) {\n const [year, month, day] = value.split('-').map(Number);\n return getValidateDate(year, month, day);\n }\n\n const match = SLASH_DATE_REGEX.exec(value);\n if (match) {\n const p1 = match[1];\n const p2 = match[2];\n const p3 = match[3];\n const num1 = Number(p1);\n const num2 = Number(p2);\n const year = Number(p3);\n\n let month: number;\n let day: number;\n\n if (num1 > 12) {\n day = num1;\n month = num2;\n } else {\n month = num1;\n day = num2;\n }\n\n return getValidateDate(year, month, day);\n }\n\n return null;\n}\n\nfunction getValidateDate(year: number, month: number, day: number) {\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day) {\n return { year, month, day };\n }\n return null;\n}\n\nfunction getCountSevens(number: number) {\n const divisor = 7;\n const count = Math.floor(number / divisor);\n const remainder = number % divisor;\n\n return remainder > 0 ? count + 1 : count;\n}\n\nfunction getNextSegment(currentSegment: DatePickerVariant, mode: IDatePickerMode): DatePickerVariant | null {\n const currentIndex = mode.indexOf(currentSegment);\n return currentIndex < mode.length - 1 ? mode[currentIndex + 1] : mode[0];\n}\n\nfunction getPrevSegment(currentSegment: DatePickerVariant, mode: IDatePickerMode): DatePickerVariant | null {\n const currentIndex = mode.indexOf(currentSegment);\n return currentIndex > 0 ? mode[currentIndex - 1] : mode[mode.length - 1];\n}\n\nfunction getValidateInput(\n input: DatePickerInput,\n onSuccess?: (value: number) => void,\n onFailure?: () => void,\n onNan?: (isHasInput: boolean) => void,\n) {\n const dayStr = input.DD;\n const monthStr = input.MM;\n const yearStr = input.YYYY;\n\n const day = dayStr === '' ? NaN : Number(dayStr);\n const month = monthStr === '' ? NaN : Number(monthStr);\n const year = yearStr === '' ? NaN : Number(yearStr);\n\n const isHasInput = dayStr !== '' || monthStr !== '' || yearStr !== '';\n\n if (!Number.isNaN(day) && !Number.isNaN(month) && !Number.isNaN(year)) {\n const m = moment.utc(`${day}.${month}.${year}`, 'D.M.YYYY', true).startOf('day');\n if (m.isValid()) {\n onSuccess?.(m.valueOf());\n } else {\n onFailure?.();\n }\n } else {\n onNan?.(isHasInput);\n }\n}\n\nfunction isSameDatePickerInput(left: DatePickerInput, right: DatePickerInput) {\n return (\n left[DatePickerVariant.DD] === right[DatePickerVariant.DD] &&\n left[DatePickerVariant.MM] === right[DatePickerVariant.MM] &&\n left[DatePickerVariant.YYYY] === right[DatePickerVariant.YYYY]\n );\n}\n"],"mappings":";;;;;;;;;;;;;AASA,IAAY,IAAL,0BAAA,GAAA;AACL,SAAA,EAAA,KAAK,MACL,EAAA,KAAK,MACL,EAAA,OAAO;QCkGH,KAAiD;AAAA,EAAC;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;GAItF,KAFiC;AAAA,EAAC,EAAkB;AAAA,EAAI,EAAkB;AAAA,EAAI,EAAkB;GAIhG,KAA8B;AAAA,GACjC,EAAkB,EAAA,GAAK;AAAA,GACvB,EAAkB,EAAA,GAAK;AAAA,GACvB,EAAkB,IAAA,GAAO;GAGtB,KAAoB,GAA6C,IAAA;AAEvE,SAAS,EAAyB,GAAmD;AACnF,SAAO,GAAmB,IAAA,CAAoB,MAAU;AACtD,QAAI,CAAC,EACH,OAAM,IAAI,MAAM,sCAAA;AAGlB,WAAO,EAAS,CAAA;AAAA;;AAIpB,IAAa,KAAA,CAAc,MAAuB;AAChD,QAAM,EACJ,WAAA,GACA,cAAA,GACA,WAAA,GACA,kBAAkB,GAClB,SAAA,GACA,aAAA,GACA,SAAA,GACA,SAAA,GACA,OAAA,GACA,OAAA,GACA,IAAA,GACA,QAAA,IACA,YAAA,GACA,gBAAA,IACA,YAAA,GACA,mBAAA,IACA,kBAAA,IACA,QAAA,GACA,MAAM,GACN,MAAA,IACA,QAAA,IACA,UAAA,GACA,SAAA,IACA,MAAA,GACA,OAAA,IACA,cAAc,IACd,cAAA,IACA,MAAM,GAAA,IACJ,GAEE,CAAC,GAAa,EAAA,IAAkB,EAAwB,IAAA,GACxD,CAAC,GAAmB,EAAA,IAAwB,EAAiB,EAAO,CAAA,EAAa,IAAA,CAAK,GACtF,CAAC,GAAO,EAAA,IAAY,EAA0B,EAAA,GAC9C,CAAC,GAAe,EAAA,IAAoB,EAAmC,IAAA,GACvE,CAAC,IAAS,CAAA,IAAc,EAAS,EAAA,GACjC,CAAC,IAAgB,EAAA,IAAqB,EAAS,EAAA,GAE/C,KAAgB,EAAO,CAAA,GACvB,KAAoB,EAAO,EAAA,GAC3B,KAAe,EAAO,EAAA,GACtB,KAAiB,EAAoB,IAAA,GACrC,KAAgB,EAAoB,IAAA,GACpC,IAAiB,EAAyB,IAAA;AAEhD,EAAA,EAAA,MAAgB;AACd,IAAA,GAAc,UAAU;AAAA,KACvB,CAAC,CAAA,CAAM;AAEV,QAAM,IAAa,EAAA,MAEf,EAAM,EAAkB,EAAA,MAAQ,MAAM,EAAM,EAAkB,EAAA,MAAQ,MAAM,EAAM,EAAkB,IAAA,MAAU,IAChH,CAAC,CAAA,CAAM,GAGH,IAAiB,EAAA,CAAa,MAA2B;AAC7D,IAAA,GAAA,CAAU,MAAU,GAAsB,GAAM,CAAA,IAAS,IAAO,CAAA;AAAA,KAC/D,CAAA,CAAE,GAEC,KAAe,EAAA,MAAkB;AACrC,IAAA,EAAe,EAAA;AAAA,KACd,CAAC,CAAA,CAAe,GAEb,IAAwB,EAAA,MACxB,CAAC,KAAY,EAAS,WAAW,KAIf,IAAI,IAAI,CAAA,EAAU,SAAS,EAAS,SAGjD,KAGF,GACN,CAAC,CAAA,CAAS,GAEP,IAAwB,EAAA,MACvB,MACI,mBAIR,CAAC,EAAA,CAAS,GAEP,KAAoB,EAAA,OACjB;AAAA,KACJ,EAAkB,EAAA,GAAK,EAAO,OAAO;AAAA,KACrC,EAAkB,EAAA,GAAK,EAAO,OAAO;AAAA,KACrC,EAAkB,IAAA,GAAO,EAAO,OAAO;AAAA,MAE1C;AAAA,IAAC,EAAO,OAAO;AAAA,IAAK,EAAO,OAAO;AAAA,IAAO,EAAO,OAAO;AAAA,GAAK,GAGxD,KAAkB,EAAA,CAAa,GAA4B,MAAkB;AACjF,IAAA,GAAA,CAAU,MAAU,EAAK,CAAA,MAAa,IAAQ,IAAO;AAAA,MAAE,GAAG;AAAA,OAAO,CAAA,GAAU;AAAA,KAAO;AAAA,KACjF,CAAA,CAAE,GAEC,KAAkB,EAAA,CAAa,MAA+B;AAClE,IAAA,GAAiB,CAAA;AAAA,KAChB,CAAA,CAAE,GAEC,KAAqB,EAAA,MAAkB;AAC3C,IAAA,GAAiB,IAAA;AAAA,KAChB,CAAA,CAAE,GAEC,KAAsB,EAAA,CACzB,MAA+B;AAC9B,IAAA,GAAiB,GAAe,GAAS,CAAA,CAAK;AAAA,KAEhD,CAAC,CAAA,CAAK,GAGF,KAAsB,EAAA,CACzB,MAA+B;AAC9B,IAAA,GAAiB,GAAe,GAAS,CAAA,CAAK;AAAA,KAEhD,CAAC,CAAA,CAAK,GAGF,KAAa,EAAA,MACV,GAAU,IAAA,CAAK,GAAK,OAElB;AAAA,IACL,OAAA;AAAA,IACA,OAHY,EAAO,MAAM,KAAA,CAAM,MAAM,EAAE,UAAU,CAAA,GAGnC,eAAe,EAAI,YAAA;AAAA,OAGpC,CAAC,EAAO,KAAA,CAAM,GAEX,KAAgC,EAAA,MAAc;AAClD,UAAM,IAAY,EAAO,IAAA,GACnB,IAAY,KAAe,GAC3B,IAAmB,EAAU,MAAA,EAAQ,QAAQ,OAAA,GAC7C,IAAiB,EAAU,MAAA,EAAQ,MAAM,OAAA,GACzC,IAAgB,IAAU,EAAO,IAAI,CAAA,IAAW,MAChD,KAAgB,IAAU,EAAO,IAAI,CAAA,IAAW,MAEhD,KAAsB,EAAiB,MAAA,EAAQ,SAAS,EAAiB,WAAA,IAAe,GAAG,MAAA,GAC3F,KAAqB,EAAe,MAAA,EAAQ,IAAI,IAAI,EAAe,WAAA,GAAc,MAAA,GAEjF,IAA2B,CAAA,GAC3B,IAAc,GAAoB,MAAA;AAExC,WAAO,KAAe,MAAoB;AACxC,YAAM,KAAiB,EAAY,UAAU,GAAkB,GAAgB,OAAO,IAAA;AACtF,MAAA,EAAO,KAAK;AAAA,QACV,OAAO,EAAY,QAAA;AAAA,QACnB,aAAa,EAAY,OAAO,IAAA;AAAA,QAChC,aAAa,EAAY,KAAA;AAAA,QACzB,WAAW,EAAY,WAAA;AAAA,QACvB,WAAW,CAAC,GAAG,CAAA,EAAG,SAAS,EAAY,WAAA,CAAY;AAAA,QACnD,aAAa,KAAK,MAAM,EAAO,SAAS,KAAK,CAAA;AAAA,QAC7C,SAAS,EAAY,OAAO,GAAW,KAAA;AAAA,QACvC,gBAAA;AAAA,QACA,UAAU,EAAY,QAAA,MAAc,GAAa,QAAA;AAAA,QACjD,YAAY,CAAC,EACV,KAAiB,EAAY,SAAS,GAAe,KAAA,KACrD,MAAiB,EAAY,QAAQ,IAAe,KAAA;AAAA,OAExD,GAED,EAAY,IAAI,GAAG,KAAA;AAAA;AAGrB,WAAO;AAAA,KACN;AAAA,IAAC;AAAA,IAAa;AAAA,IAAmB;AAAA,IAAS;AAAA,GAAQ,GAE/C,KAAO,EAAA,MAAc,GAAe,GAAY,MAAA,IAAU,GAAG,CAAC,EAAA,CAAY,GAC1E,KAAa,EAAA,MAAc,EAAS,UAAU,CAAA,EAAM,QAAQ,CAAC,CAAA,CAAK,GAClE,KAAc,EAAA,MAAc,EAAS,UAAU,CAAA,EAAM,SAAS,CAAC,CAAA,CAAK,GACpE,IAAa,EAAA,MAAc,MAAgB,MAAM,CAAC,CAAA,CAAY,GAE9D,KAAmB,EAAA,MAAc;AACrC,UAAM,KAAa,KAAe,GAAmB,MAAA,EAAQ,IAAI,GAAG,OAAA,EAAS,QAAQ,OAAA;AAErF,WADwB,IAAU,EAAU,QAAQ,EAAO,IAAI,CAAA,GAAU,OAAA,IAAW;AAAA,KAEnF;AAAA,IAAC;AAAA,IAAa;AAAA,IAAS;AAAA,GAAkB,GAEtC,KAAmB,EAAA,MAAc;AACrC,UAAM,KAAa,KAAe,GAAmB,MAAA,EAAQ,SAAS,GAAG,OAAA,EAAS,QAAQ,OAAA;AAE1F,WADyB,IAAU,EAAU,SAAS,EAAO,IAAI,CAAA,GAAU,OAAA,IAAW;AAAA,KAErF;AAAA,IAAC;AAAA,IAAa;AAAA,IAAS;AAAA,GAAkB,GAEtC,KAAiB,EAAA,MAAkB;AACvC,IAAA,KAAA;AAAA,KACC,CAAC,EAAA,CAAQ,GAEN,KAAgB,EAAA,MAAkB;AACtC,IAAA,KAAA;AAAA,KACC,CAAC,EAAA,CAAO,GAIL,EAAE,QAAA,GAAQ,cAAA,IAAc,aAAA,IAAa,gBAAA,IAAgB,OAAA,GAAO,QAAA,GAAA,IAAW,GAAW;AAAA,IACtF,aAAa;AAAA,IACb,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,gBAAgB;AAAA,IAChB,yBAR8B,EAAA,MAAc,CAAC,IAAgB,EAAA,GAAgB,CAAA,CAAE;AAAA,IAS/E,YAAY,KAAc;AAAA,IAC1B,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,iBAAiB;AAAA,GAClB,GAEK,KAAoB,EAAA,MACjB,CAAC,EACN,CAAC,MACD,CAAC,KACD,OACC,MAAS,YAAW,CAAC,MACtB,CAAC,KACD,CAAC,IAEF;AAAA,IAAC;AAAA,IAAgB;AAAA,IAAY;AAAA,IAAQ;AAAA,IAAkB;AAAA,IAAY;AAAA,IAAe;AAAA,GAAK,GAEpF,IAAe,EAAA,CAClB,GAAmB,GAA4B,MAA4B;AAC1E,UAAM,IAAgB,EAAO,CAAA,EAAW,IAAA,GAElC,IAAK,EAAc,MAAA,EAAQ,KAAA,EAAO,SAAA,GAClC,MAAM,EAAc,MAAA,EAAQ,MAAA,IAAU,GAAG,SAAA,GAEzC,KAAa,EAAG,SAAS,GAAG,GAAA,GAC5B,KAAa,GAAG,SAAS,GAAG,GAAA,GAE5B,IAAO,EAAc,MAAA,EAAQ,KAAA,EAAO,SAAA,GACpC,IAAU,IAAQ,EAAkB,EAAA,GACpC,KAAU,IAAQ,EAAkB,EAAA,GACpC,KAAY,IAAQ,EAAkB,IAAA,GAEtC,KAAc,OAAe,KAAW,OAAe,MAAW,OAAc,GAChF,KAAe,GAAa,OAAO,GAAe,KAAA;AAExD,IAAK,OACH,GAAe,CAAA,GACf,EAAS,EAAc,QAAA,CAAS,KAGR,IAAQ,CAAC,KAAc,CAAC,OAGhD,EAAe;AAAA,OACZ,EAAkB,EAAA,GAAK,IAAoB,KAAa;AAAA,OACxD,EAAkB,EAAA,GAAK,IAAoB,KAAa;AAAA,OACxD,EAAkB,IAAA,GAAO;AAAA,KAC3B;AAAA,KAGL;AAAA,IAAC;AAAA,IAAa;AAAA,IAAU;AAAA,GAAe,GAGnC,KAAY,EAAA,CACf,MAAuC;AACtC,UAAM,IAAM,EAAE,KACR,IAAc;AAAA,MAAC;AAAA,MAAa;AAAA,MAAc;AAAA,MAAW;AAAA,MAAa;AAAA,MAAa;AAAA,MAAU;AAAA,MAAO;AAAA,OAChG,IAAU,OAAO,KAAK,CAAA;AAG5B,QAAI,EAFc,KAAW,EAAY,SAAS,CAAA,KAAQ,EAAE,WAAW,EAAE,UAEzD;AACd,MAAA,EAAE,eAAA;AACF;AAAA;AAGF,QAAK,GAwBL;AAAA,UApBI,MACF,GAAY,GAAK,GAAe,GAAO,IAAiB,EAAA,GACxD,EAAE,eAAA,GACF,EAAE,gBAAA,IAGA,MAAQ,UACN,EAAK,EAAK,SAAS,CAAA,MAAO,KAC5B,EAAE,eAAA,GACF,GAAoB,CAAA,KAEpB,GAAgB,SAAS,KAAA,IAIzB,MAAQ,YACV,EAAE,eAAA,GACF,EAAE,gBAAA,IAGA,MAAQ,eAAe,MAAQ,UAAU;AAC3C,cAAM,IAAU,EAAM,CAAA;AAEtB,QAAI,MAAY,KACd,GAAgB,GAAe,EAAQ,WAAW,IAAI,KAAK,EAAQ,MAAM,GAAG,EAAA,CAAG,IAE/E,GAAoB,CAAA,GAGtB,EAAE,eAAA,GACF,EAAE,gBAAA;AAAA;AAGJ,OAAI,MAAQ,eAAe,MAAQ,iBACjC,EAAE,eAAA,GACF,GAAoB,CAAA,KAGlB,MAAQ,gBAAgB,MAAQ,eAClC,EAAE,eAAA,GACF,GAAoB,CAAA;AAAA;AAAA,KAGxB;AAAA,IAAC;AAAA,IAAe;AAAA,IAAqB;AAAA,IAAqB;AAAA,IAAO;AAAA,IAAM;AAAA,GAAgB,GAGnF,KAAc,EAAA,MAAkB;AAEpC,IAAA,GADiB,KAAe,GAAmB,MAAA,EAAQ,IAAI,GAAG,OAAA,EAC7C,QAAA,GAAW,EAAA;AAAA,KAC/B;AAAA,IAAC;AAAA,IAAa;AAAA,IAAc;AAAA,GAAkB,GAE3C,KAAc,EAAA,MAAkB;AAEpC,IAAA,GADiB,KAAe,GAAmB,MAAA,EAAQ,SAAS,GAAG,OAAA,EAClD,QAAA,GAAW,EAAA;AAAA,KAC/B;AAAA,IAAC;AAAA,IAAa;AAAA,IAAc;AAAA,GAAkB,GAE3C,KAAe,EAAA,MAAkB;AACrC,IAAI,MAAS,aACb,GAAkB,EAAA,GAClB,GAAA,CAAkB,MAAY,KAAW,EAAkB,EAAA;AAAA,KAC1D,CAAC,CAAA,CAAK,GAEH,KAAc,EAAA,MAAkB;AACpC,IAAA,GAAkB,EAAA,GAEb,KACH,KAAA;AAAA,KAED,CAAC,GAAQ,EAAA,CAAO,GAEb,KAAgB,EAAA,CACnB,MAAqC;AACpC,UAAM,IAAQ,EAAE,OAAO,OACjB,IAAS,GAAmB,CAAA;AAElC,QAAI,GAAQ;AACV,MAAA,EAAe;AAAA,SACZ,EAAkB,EAAA,GAAK,OAAO,EAAO,GAAA,EAAK,SAAS,GAAG,GAAA;AAAA,SACtD,EAAkB,EAAA,GAAK,OAAO,EAAO,KAAA,EAAO,SAAS,GAAG,GAAA;AAAA,SACxD,EAAkB,IAAA,GAAO,OAAO,EAAO,IAAA;AAAA,OACzC,GACG,EAAe,YAAS,EAAe,QAAQ,QAAQ;AAC3D;AAAA;AAGF,UAAM,IAAY,GAAa,SACzB,IAAU,EAAM,SAAS,EAAU,SAAS,EAAM,MAAM,EAAA,IAAM;AAEpE,IAAA,GAAa,UAAU,GAEnB,KAAW,OAAO,KAAK,CAAA,KACzB,GAAU;AAAA,MACR,KAAK;AAAA,MACL,gBAAA,MAAsB;AAAA,MAAA;AAAA,MACtB,iBAAA,MAAuB;AAAA,MAAA;AAAA,KACxB,GAGC,EAAM,SAAS,EAAU,UAC3B,GAAU;AAAA,MACR,KAAK;AAAA,MACL,gBAAA,MAAsB;AAAA,MAAA;AAAA,MACtB,iBAAA,MAAuB;AAAA,MAAA;AAAA,KACxB,GAGC,EAAe,YAAS,EAAe,QAAQ,QAAQ;AAAA,KAE7D,CAAC,IAAW,CAAA,CAAe;AAG7B,EAAA,EAAA,MAAgB;AACd,IAAI,KAAc,CAAC,GAAkB,YAAS,GAAkB,UAAU;AAAA,KACzE,CAAC,CAAA,CAAW,GAEf,EAAA,MAAgB;AACd,IAAA,GAAqB,EAAO,CAAA,EAAa,IAAA,CAAK;AAAA,KAC7C,CAAC,CAAA,CAAY,GAEhB,EAAA,MAAgB;AAEd,QADA,GAAe,EAAM,SAAS,EAAM,eAAe,EAAO,EAAM,SAAS,EAAM,YAAA,EAAc,IAAA,IAAQ,IAAA,GACjG,EAAM,OAAO;AACf,YAAM,IAAI,EAAO,EAAM,KAAA,EAAO,IAAA;AAC9B,MAAA,EAAe;AAAA,SACZ,EAAkB,EAAA,GAAK,EAAE,KAAA,EAAO,SAAA,EAAW,SAAS,GAAG,GAAA;AAAA,SACvD,EAAkB,EAAA,IAAM,EAAE,MAAA,IAAU,GAAG,SAAA,EAAW,SAAS,GAAG,GAAA;AAAA,SAC9D,EAAkB,IAAA,GAAO,EAAE,KAAA,EAAO,SAAA;AAAA,OACpC;AAAA;KAEF;AAAA,IAAC,EAAM;AAAA,IAAO,EAAM;AAAA,IAAc;AAAA,GAAe,GAEpD,EAAA,MAAgB;AACd,IAAK,KACH,GACE,GAAA,CACC,MAAU;AACT,MAAA,EAAa,GAAO,IAAM,CAAA,GAC1B,EAAW,EAAA;AAAA,aAEP;AACJ,MAAA,EAAS,IAAA,GACT,EAAW,EAAA;AAAA,QAEZ,MAAe;AACd,MAAK,MACC,GAAkB,YACpB,EAAS,IAAA,GACT,GAAkB,UAAU,KAE9B,EAAW,EAAA;AAAA;KAIlB;AAAA,IAAC;AAAA,IAAc;AAAA,IAAU;AAAA,IAAO;AAAA,GAAc,GAEjD,EAAA,MAAgB;AACd,IAAI,CAAC,KAAU,CAAC,MAAkB,KAAc,CAAC,KAC/C,GACE,GAAA,MACM;AAAA,IAAA,GAAA,MACA;AACJ,MAAA,EAAS,IAAA,GACT,GAAA,GACA,EAAW,EAAA;AAAA,aAEP;AACJ,MAAA,EAAS,IAAA,GACT,GAAA,GACA,EAAW,EAAA;AAAA;KAGhB;AAAA,IAAC;AAAA,IAAc;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAgB;AAAA,IAAU;AAAA,IAAY;AAAA,GAAc,GAErF,EAAA,MAAgB;AACd,IAAK,KACL,GACE,GAAc,SAAA,CACb,MAAU;AACT,MAAA,EAAa,GAAO,IAAM,GAAc,OAAA,GACxC,EAAW,EAAA;AAAA,aAEP;AACJ,MAAA,EAAW,EAAA;AAAA,QAEZ,MAAe;AACd,MAAK,KACH,EAAW,EAAA;AAAA;KAIhB,CAAC,GAAc,CAAA,CAAc,GAEhC,EAAA,MAAgB;AACd,IAAI,MACF,EAAA,GACA,GAAgB,SAAS,MAAA;AAAA,KAE1B,CAAC,GAAe,CAAA,CAAM;AAEzB,QAAM,KAAmB,EAAA,OAChB,KAAe,GAAmB,MAAA,EAAQ,QAAQ,OAAA,EAAS,IAAA,EAAM,QAAA,GACxE,CAAC,GAAa,CAAA,CAAkB,GAG5B,KAAkB,EAAA,OACf,KAAe,GAAmB,MAAA,EAAQ,QAAQ,MAAA,EAAQ,IAAA,EAAM,QAAA,GACvE,CAAC,GAAa,CAAA,CAAkB,GAG5B,KAAY,EAAA,MAAkB;AAClC,IAAA,EAAS,IAAA,GACT,GAAA,GACA,EAAW,EAAA;AAAA,KACV,CAAC,GAAU,EAAA,CAAa,GAErB,KAAc,EAAA,CACjB,MAAsB;AACrB,IAAA,EAAa,GAAW,EAAA,GACpB,MACF,EAAA;AAAA,KAGJ;AAAA,IAAC;AAAA,IAAc;AAAA,IAAgB;AAAA,GAAM,GAGjC,KAAoB,EAAA,CACvB,MAA6B;AAC5B,IAAI,KAAW,EAAa,GAAW,EAAA;AAAA,KAEzC,CAAC,CAAA,CAAa,GAGV,EAAE,WAAW,IAAwB,OAAO,GAAA,IAAuB,GAAoB,EAC3F,IAAI;AAAA,IACF,SAAS,GAAY,iBAAiB;AAAA,IACtC,QAAQ;AAAA,IACR,GAAG;AAAA,IACJ,CACF,GAEK,EAAE,WAAW,IAAqB,OAAO,GAAA,IAAoB,GAAoB,EACrF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,QAAQ,KAAS,QAAQ;AAAA,IACzB,GAAG;AAAA,IACJ,CACF,GAEK,EAAE,WAAW,IAAkB,OAAO,GAAA,IAAiB,EAAA,MAAc;AACzE,UAAM,IAAmB,EAAW,CAAC,EAAU,UAAU,WAAW,SAAS,CAAA,CAAU,GACjF,IAA+B,CAAA;AAErC,WAAA,EAAK,EAAa,UAAU,WAAW,OAAA,IAAW,EAAS,KAAK,CAAA,EAAM,SACtE,EAAK,EAAa,UAAU,WAAW,eAAA,IAAmB,EAAS,MAAM,OAAO,CAAA,EAAO,WAAW,OAClG,EAAK,EAAa,UAAU,WAAW,oBAAA,IAAwB,EAAS,MAAM,MAAM,CAAA,EAAO,YAC3F,EAAK,EAAa,UAAU,WAAW,4BAAA,IAAgC,EAAS,QAAQ,qBACxF,EAAK,EAAa,UAAU,WAAW,gBAAA,IAAoB,EAAS,MAAM,MAAM,CAAA,EAAO,QACvF,EAAK,EAAa,UAAU,WAAW,qBAAA,IAAyB,EAAS,MAAM,MAAM,CAAA,EAAO,QAC5F,EAAK,EAAa,UAAU,WAAW,UAAA,IAAc,EAAS,MAAM,MAAM,CAAA,EAAO,OACjF,EAAK,EAAa,UAAU,WAAW,eAAA,IAAmB,EAAS,MAAM,MAAM,CAAA,EAAO,OACtF,EAAK,EAAa,UAAU,WAAW,YAAA,IAAgB,KACnD,OAAO,EAAS,KAAK,CAAA,EAAM,OAAA,KAC3B,OAAO,EAAS,KAAK,CAAA,EAAM,OAAA,QAAe,EAAS,UAAU,CAAA,EAAM,UAAU,CAAA,MACjF,EAAK,EAAa,UAAU,WAAW,WAAA,IAAe,EAAS,KAAK,CAAA,EAAM,QAC1E,EAAK,EAAa,UAAU,WAAW,WAAA,IAAe,EAAS,KAAK,CAAA,EAAM,QAC1E,EAAK,EAAa,UAAU,WAAW,eAAA,IAAmB,EAAS,MAAM,MAAM,CAAA,EAAO,OACtF,EAAK,EAAa,UAAU,WAAW,qBAAA,IAAyB,EAAS,MAAM,MAAM,CAAA,EAAO,aAC5F,EAAK,EAAa,UAAU,WAAW,iBAAA,IAAqB,GAAG,EAAS,KAAK,CAAA,EAAM,OAAA,IACnF,EAAK,EAAa,UAAU,WAAW,gBAAA,IACrC,GAAG,EAAS,UAAU,CAAA,EAAM,UAAU,IAAI,EAAS,UAAU,CAAA,EAAM,MAAA,MAI9D;AAAA,MAAE,WAAW;AAAA,MAAkB,OAFjB,GAAU,CAAC,OAAO,KAAK,CAAA,EAAM,SAAS,IAAO,QAAW,EAAA,CAAM;AAAA;KAGlF;AAAA,IAAC;AAAA,IAAW;AAAA,IAAO;AAAA,IAAmB;AAAA,IAAO;AAAA,GAAK,GAE/C,EAAE,WAAW,IAAkB,OAAO,GAAA,IAAiB,EAAA,MAAc;AACzE,UAAM,IAAmB,EAAW,CAAC,CAAA,CAAqB,GACpD,IAA+B,CAAA;AAErC,WAAA,EAAK,EAAa,UAAU,WAAW,SAAA,IAAa,GAAG,EAAA,MACvD,EAAK,EAAa,UAAU,WAAW,iBAAA,IAAqB,EAAS,MAAM,WAAW,CAAA,EAAO,WAAW,OACxG,EAAK,EAAa,UAAU,WAAW,kBAAA,IAAsB,EAAS,MAAM,WAAW,CAAA,EAAO,WAAW,OACzG,EAAK,EAAa,UAAU,WAAW,oBAAA,IAAwB,EAAS,MAAM,WAAW,CAAA,EAAO,WAAW,SAC3G,EAAK,EAAa,UAAU,WAAW,kBAAA,IAAsB,EAAS,MAAM,WAAW,CAAA,EAAO,WAAW,OACzG,EAAK,EAAa,UAAU,WAAW,mBAAA,IAAuB,EAAS,MAAM,WAAW,CAAA,EAAO,WAAW,QAC1G,EAAK,EAAa,UAAU,WAAW,aAAA,IAAiB,EAAS,MAAM,WAAW,CAAA,EAAO,OAAO,OAChG,EAAK,EAAa,UAAU,WAAW,gBAAA,IAAoB,EAAS,MAAM,WAAW,CAAA,EAAO,OAAO,SACnG,EAAK,EAAa,UAAU,WAAW,cAAA,IAAkB,EAAS,MAAM,WAAW,CAAA,EAAO,OAAO,OACjG,EAAK,EAAa,UAAU,WAAW,eAAA,IAAmB,EAAS,MAAM,WAAW,CAAA,EAAO,OAAO,QAClG,EAAK,EAAa,UAAU,WAAW,cAAA,IAAkB,EAAS,MAAM,WAAW,CAAA,EAAO,OAAO,OACjG,EAAK,EAAa,UAAU,WAAW,YAAA,IAAgB,EAAS,MAAM,WAAW,CAAA,EAAO,MAAM,OAC9F,EAAK,EAAa,UAAU,WAAW,aAAA,IAAiB,EAAS,MAAM,WAAW,CAAA,EAAO,MAAM,OAC/F,EAAK,EAAa,UAAU,WAAW,eAAA,IAAmB,EAAS,MAAM,WAAW,CAAA,EAAO,MAAM,SACjG,EAAK,EAAa,UAAU,WAAW,aAAA,IAAiB,EAAS,MAAM,WAAW,CAAA,EAAO,MAAM,OAC/F,EAAK,EAAa,UAAU,WAAW,cAAA,IAAkB,EAAS,MAAM,WAAW,CAAA,EAAO,MAAM,QAWzF;AAAA,MAAE,WAAW;AAAA,MAAkB,OATjB,GAAU;AAAA,QAC7B,OAAO,KAAK,CAAA,EAAM,SAAS,IAAO;AAAA,QAClC;AAAA,UACE,YAAY,EAAS,MAAM,QAAQ,CAAA,EAAO;AAAA,UAC1C,QAAQ,aAAa,EAAS,MAAM,MAAM,CAAA,EAAO,MAAA;AAAA;QAEnD;AAAA,OACD;AAAA;KAGA;AAAA,IAAC;AAAA,IAAsB;AAAA,IAAkB;AAAA,IAAO;AAAA,GAAW,GAExD,KAAmB,EAAA,MAChB,MAAS,YAAY,CAAC,EAAE,OAAsB,KAAc,MAAe,CAAC,KAAc,CAAC,IACjG;AAAA,IAAC;AAAA,IAAM;AAAA,IAAY;AAAA,IAAY;AAAA,IAAmB;AAAA,IAAY;AAAA,GAAW,GAEtE,KAAe,EAAA,OACZ;AAAA,IACL,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,qBAAA;AAAA,IACA,wBAAA;AAAA,IACA,kBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,gBAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,mBAAA;AAAA,IACA,kBAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,kBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAc,EAAO;AAAA,IACrB,MAAA;AAAA,IACA,kBAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,mBAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA;AAAA,IACA,eAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,iBAAA;AAAA,MAEF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,GACD;AAGH,SACE,gBAAA,EAAC,GAAkB,UAAnB;AAAA,IAA4B,OAAO;AAAA,cACjC,gBAAA,EAAC,IAAD,CAAA,CAAqB;AAAA,GACM;GAI3B,KAAoB,EAAA,MAKtB,gBAAA,EAAA,IAAA,EAAA,UAAA;AAAA,EACE,gBAAA,EAAC,OAAD;AAAA,IAAK,WALgB,EAAA,CAAuB,MAAU,EAAM,gBAAA;AAAA,IAK1B,OAJjB,EAAA,CAAuB,MAAU,EAAM,YAAA;AAAA,IAID,UAAU;AAAA,cAC/D,gBAAA,EAAC,IAAD,CAAA,CAA0B;AAAA,GACtB;AAAA,EACN,gBAAA,EAAC,IAAD,CAAA,CAAqB;AAAA,EACrB,gBAAA,EAAC,IAAD,CAAA,CAAmB;EAClB,CAAA,IAID,KAAyB,EAAA,MAAW;AACxC,QAAM,IAAgB,EAAA,CAAuB,MAAU,EAAM,aAAA,GACvD,IAAkB,EAAA,CAAuB,MAAU,EAAM,eAAA,GACzD,IAAU,EAAA,CAAuB,MAAU,EAAM,OAAA,GACjD,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAS,EAAA,CAAuB,MAAU,EAAM,MAAA,GAChD,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAe,EAAA,CAAuB,MAAU,EAAM,YAAA,GACtD,IAAS,EAAA,CAAuB,MAAU,EAAM,MAAA,GAChD,IAAO,EAAA,CAAuB,MAAU,EAAM,IAAA;AAapD,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAfgB,EAAA,MAAkB;AACpC,UAAI,MAAS,UAAU;AACrB,QAAA,EAAA;AACA;AAAA;AAGF,MAAI,CAAC,KAAiB,CAAC,KACrB,EAAgB,EAAkB,EAAA;AAAA,OAEnC;AAAA,MAAC;AAAA,MAAe;AAAA,MAAiB;AAAA,MAAY;AAAA,MAAQ;AAAA,KAAK;AAAA,IAOzD,WAAW,EAAW;AAAA,MACpB,EAAU,UAAU,WAAW;AAAA,MAC/B,EAAU,WAAW;AAAA,MACrB,EAAU,QACR,IAAa,SAAU,MAAY,KAAU,IAAgB,oBAAoB,qBAAA;AAAA,KAEpF;AAAA,cAVH;AAAA,MAYE,gBAAA,EAAC,IAAD,CAAA,CAAyB;AAAA,MACzB,gBAAA,EAAC,IAAD,CAAA,CAAqB;AAAA,MACrB,gBAAA,EAAC,IAAD,CAAA,CAAwB;AAAA;;IAKxB,KAAwB,EAAA,MAAW;AACvC,QAAM,IAAY,EAAA,CAAuB,MAAU,EAAM,SAAA,GACnD,IAAe,EAAA,CAAuB,MAAU,EAAM,YAAA,GACtD,IAAK,EAAA,CAAuB,MAAU,EAAM,EAAA,GAC5C,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAO,EAAA,CAAuB,MAAU,EAAM,IAAA,GAC9C,IAAc,EAAA,CAAuB,MAAU,EAAM,WAAA,GACrD,IAAgB,EAAA,CAAuB,MAAU,EAAM,aAAA,GACvD,IAAe,EAAA,CAAuB,MAAU,EAAM,YAAA,GACtD,IAAY,EAAA,CAAuB,MAAU,EAAM,SAAA,GACnD,IAAiB,EAAA,CAAuB,MAAU,EAAM,cAAA;AAG9D,SAFa,EAAA,CAAuB,MAAU,EAAM,IAAA,MAEvC,WACJ,OAIP,gBAAA,EAAC,SAAD;AAAA,IACQ,MAAA;AAAA,IACN,cAAY,KAAa;AAAA,IACX,cAAA;AAAA,IACV,IAAA;AAAA,IACJ,KAAK;AAAA,IACL,MAAK;AAAA,IACL,WAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU,KAAc;AAAA,IACxB,OAAO;AAAA,MACL,UAAU;AAAA,MACV,MAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,YAAY;AAAA;IAEH,WAAA;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA,IACT,QAAQ;AAAA,GACR;IAIA,KAAoB,EAAA,MACE,EAAA,CAAuB,MAAU,EAAM,iBAAA,IAEtC,gBAAA,EAAC,IAAD,CAAA,CAAyB,IAAG,gBAAA,EAAC,IAAD,CAAA,CAA2B,IAG9E,KAAwB,EAAA,MAAW;AACvC,QAAM,IAAQ,EAAA,CAAuB,MAAU,EAAM,KAAA,GAC/C,IAAmB,EAAA,CAAuB,MAAU,EAAM,gBAAA;AAEhE,SACE,gBAAA,EAAC,IAAD;AAAA,IACE,IAAI;AAAA,MAAE,MAAM;AAAA,MAAI,MAAM;AAAA,MAAG,gBAAgB;AAAA;IACzC,OAAO,EACL,OAAO,EAAS,MAAM,MAAM,CAAA,EAAO,YAAA;AAAA,cAGpC;AAAA,GACU;IAIX,KAA0B,EAAA,MAAW;AACzC,QAAM,IAAO,EAAA,CAAuB,MAAU,EAAM,IAAA;AAEpD,SAAO,EAAK,IAAA,CAAK,GAAS,MACxB,gBAAA,EAAC,IAAD,EAAA,UAAA,CACE,gBAAA,EAAC,IAAD,EAAiC,SAAA,EAAA,CAAW,GAC3C,MAAU,EAAK,SAAS,KAAK,gBAAA,EAAC,QAAD;AAAA,IAAM,OAAO;AAAA,MAAE,OAAO;AAAA,MAAO,eAAe;AAAA,MAAQ,WAAW;AAAA;cAAY;AAAA,GAAQ,CAAA,EACxG,GAHI,CAAA,CAGJ;IAQT,KAAyB,EAAA,CAAM,MAAuC;AAC1E,QAAM,EAAE,SAAA,EAAA,IAAY,GACd,IAAkB,EAAA,CAAuB,MAAU,EAAM,eAAA,GACzD,IAAsB,EAAA,CAAuB,MAAU,EAAM,mBAAA,GAC7D,IAAa,EAAA,CAAuB,MAAU,EAAM,MAAM,CAAA,CAAA,GAC1D,IAAW,EAAA,CAAuB,MAAU,EAAM,kBAAkB,CAAA,GACpE,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAc,EAAA,CAAuB,MAAU,EAAM,kBAAkB,CAAA,CAAA,GACvE,IAAkB,EAAA,CAAuB,MAAU,EAAM,eAAA,GACzD,IAAO,EAAA,CAAuB,MAAU,EAAM,IAAA;AAEpD,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,WAAW,EAAW;AAAA,MACpB,EAAU,UAAU,WAAW;AAAA,MAC/B,EAAU,WAAW;AAAA,MACrB;AAAA,MACA,CAAC,CAAC,KAAc,EAAU,UAAU,WAAW;AAAA,MAC/C,KAAY,EAAU,UAAU,WAAW;AAAA,KAC5C;AAAA,IACD,OAAO;AAAA,IACP,SAAA,CAAU,MAAM;AACd,MAAI,MAAS,aACb,EAAE,eAAA,GACF,EAAE,gBAAA,GACE,EAAA,KAAc,MAClB,EAAgB,CAAA;AAAA;cAGjB,KAAc,KAAe;AAAA,GAC1B;IAIJ,KAAuB,EAAA,MACF,EAAA,CAAuB,MAAU,EAAM,gBAAA,IAO9D,gBAAA,EAAC,OAAD;AAAA,EAAK,WAAW,EAAW,CAAC,EAAU,UAAU,WAAW,UAAA,CAAW;AAAA,YAAtE,CACE,gBAAA,EAAC,IAAD,CAAA,CAAyB,GACzB,gBAAA,EAAC,IAAD,CAAA,CAA4B,CAAA;KANvB,OAWL,KAAwB,EAAA,MAAW;AACvC,QAAM,IAAqB,EAAA,CAAuB,MAAU,EAAM,kBAAA,GAC5D,IAAY,EAAA,CAAuB,MAAU,EAAM,SAAA,GACnD,IAAQ,EAAA,CAAuB,MAAU,EAAM,KAAA,GAC/C,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA;AAG1D,SAAI,CAFsB,EAAA,CAAuB,MAAU,EAAM,iBAAA,KAEtC,CAAC,KAAc,CAAC,KAAe,KAAc,IAC/D,OAIP,gBAAA,EAAC,IAAD;AAAA,IACS,OAAA;AAAA,IACP,MAAK;AAAA,IACL,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAU;AAAA,IACV,OAAO,CAAC;AAAA,MAAE,MAAM;AAAA,MAAS,MAAM;AAAA,KAAM;AAAA,IACrC,YAAY,KAAc;AAAA,IAC1B,SAAA,CAAU,MAAM;AACd,MAAA,EAAE,eAAA,GACF,EAAE,gBAAA,GACF,EAAA;AAAA;IAEF,SAAA,CAAU,MAAM;AACd,MAAA,EAAE,eAAA,GACF,EAAE,gBAAA,GACF,EAAA;AAAA;GAEF;IAIA,KAA2B,EAAA,MAAW;AAC1C,QAAM,IAAqB,EAAA,CAAuB,MAAU,EAAM,kBAAA,GAC5D,IAAQ,EAAA,CAAuB,MAAU,EAAM,KAAA,GAC/C,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAS,EAAA,CAAuB,MAAU,EAAM,MAAA;AAGtD,SAFa,EAAA,CAAuB,MAAU,EAAM,IAAA,MAEvC,WACJ,OAIP,gBAAA,EAAC,IAAD;AAAA,IACS,OAAA;AAAA,IACP,MAAK;AAAA,IACL,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAO,CAAC;AAAA,MAAE,MAAM;AAAA,MAAY,MAAM;AAAA,KAAM;AAAA,IACxC,YAAY,KAAc;AAAA,IAC1B,UAAU;AAAA,IACV,SAAA,CAAU,MAAM;AACd,MAAA,EAAE,eAAA,GACF,EAAE,gBAAA,GACF,EAAA;AAAA;IAEF,SAAA,CAAU,MAAM;AACd,MAAA,EAAE,eAAA,GACF,EAAE,gBAAA,GACF,EAAA;AAAA;GAEF;IAIA,KAAoB,EAAA,MAAW;AACnC,QAAM,IAAmB,EAAA,CAAuB,MAAU,EAAM,gBAAA,GAC1D,IAAiB,EAAA,CAAuB,MAAU,EAAM,cAAA,GACxD,IAAQ,EAAA,CAAuB,MAAU,EAAM,KAAA,GAC/C,IAAS,EAAA,CAAuB,MAAU,EAAM,MAAA,GAChD,IAAc,EAAA,CAAuB,MAAU,EAAM,WAAA,GACrD,IAAO,EAAA,CAAuB,MAAU,EAAM,IAAA;AAGpD,SACE,gBAAA,EAAC,IAAD;AAAA,IACE,OAJiB,EAAA,CAAuB,MAAU,EAAM,YAAA;AAAA,IAKxD,WAAW;AAAA,IACL,MAAA;AAAA,IACC,OAAA;AAAA,IACC,QAAA;AAAA,IACQ,gBAAA;AAAA,IAChB,KAAK;AAAA,IACL,SAAQ;AAAA,IACR,qBAAA;AAAA,cAEA,gBAAA,EAAC,IAAD,CAAA,CAA0B;AAAA,GAClB;IAIR,KAAyB,EAAA,MAE3B,gBAAA,EAAC,OAAD;AAAA,EAAK,WAAW,EAAW,CAAC,EAAU,UAAU,WAAW,YAAA,CAAa;AAAA,YAAxE,CACE,gBAAA,EAAC,IAAD,CAAA,CAAwB,GACxB,gBAAA,EAAC,IAAD,CAAA,CAAqB,CAAA;KAKrB,KAAuB,EAAA,MAAW;AACtC,QAAM,IAAU,EAAA,CAAuB,MAAU,EAAM,OAAA,GACjD,IAAU,EAAA,CAAuB,MAAU,EAAM,OAAA,GACjD,IAAQ,EAAA,CAAuB,MAAU,EAAM,KAAA,GAC/C,IAAmB,EAAA,CAAuB,MAAU,EAAM,gBAAA,GAC1D,IAAmB,EAAA,CAAuB,MAAU,EAAM,gBAAA,GAC1D,IAAe,EAAA,CAAuB,MAAU,EAAM,YAAA,GACtD,IAAmB,EAAA,CAAuB,MAAU,EAAM,gBAAA,GAC1D,IAAc,EAAA,CAAuB,MAAU,EAAM,WAAA,GACrD,IAAc,EAAA,CAAuB,MAAU,EAAM,WAAA,GACrD,IAAoB,EAAA,CAAuB,MAAU,EAAM,iBAAA,GAC3D,IAAiB,EAAA,CAAuB,MAAU,EAAM,cAAA,GACxD,IAAgB,EAAA,CAAuB,MAAU,EAAM,aAAA,GACvD,KAAkB,EAAA,CAAuB,MAAU,EAAM,eAAA;AAE/D,SACE,gBAAA,EAAC,IAAD;AAAA,IACE,OAAO;AAAA,MACL,gBAAgB;AAAA,MAChB,YAAY;AAAA;cAHhB;AAAA,MAME,gBAAA,EAAC,IAAD;AAAA,QACE,MAAK;AAAA,QACL,cAAA;AAAA,QACA,OAAO,CACL;AAAA,UACE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,SACP;AAAA,QAEH,iBAAA;AAAA,QACO,OAAA;AAAA,QACP,MAAK;AAAA,QACL,SAAS;AAAA,QACT,UAAU;AAAA,QACV,YAAY;AAAA,OACZ;AAAA,MACF,gBAAA,EAAC,IAAD;AAAA,QAAO,OAAO,EAAE,KAAK,MAAA;AAAA,kBAArB,CACE,gBAAA,EAAC,IAAD;AAAA,UACE,mCAAA;AAAA,UACA,cAAc;AAAA,UACP,OAAA;AAAA,UACP,MAAK;AAAA,UACL,OAAO;AAAA,UACP,sBAAA;AAAA,UACA,wBAAA;AAAA,UACA,+BAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA,aAAa;AAAA,UACb,UAAU;AAAA,UACD,SAAA;AAAA,UACA,SAAA;AAAA,UACT,OAAO,EAAE,OAAO,OAAA;AAAA,SAChB,GACF,gBAAA,EAAC,IAAD;AAAA,UACE,mCAAA;AAAA,UACO,OAAA;AAAA,UACP,MAAK;AAAA,UACL,aAAa;AAAA,UACb,OAAO;AAAA,UACP,UAAU;AAAA,UACV,sBAAA;AAAA,UACA,wBAAA;AAAA,UACA,+BAAA;AAAA,UACA,UAAA;AAAA,UACS,SAAA;AAAA,UACA,SAAA;AAAA,UACT,OAAO,EAAE,OAAO,OAAA;AAAA,SAChB,CAAA;AAAA;MAEJ,gBAAA,EAAC,IAAD;AAAA,QACE,MAAK;AAAA,QACL,SAAS;AAAA,QACT,iBAAA;AAAA,QACA,cAAA;AAAA,QACA,OAAO,CACL;AAAA,UACE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,SACP;AAAA,QAEI,OAAA;AAAA,QACP,MAAK;AAAA,QACL,YAAY;AAAA,QACZ,UAAU;AAAA,OACV;AAAA;;IAKF,KAAoB,EAAA,MAAW;AACnC,QAAM,IAAyB,EAAA,CAAuB,MAAU,EAAM,sBAAA,GAChE,IAAc,EAAA,CAAuB,MAAU,EAAM,WAAA,GACrD,IAAa,EAAA,CAAuB,MAAU,EAAM,UAAA,GACpD,IAAO,EAAA,CAAuB,MAAU,EAAM,IAAA,GAC9C,IAAqB,EAAA,CAAuB,MAAU,EAAM,kBAAA;AAElE,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,WAAW,EAAW,CAAC,EAAU,UAAU,WAAW,gBAAA,CAAiB;AAAA,IACvE,OAAO,GAAU,CACf,EAAA,CACG,EAAa,UAAU,WAAW,IAAA,GAAO,EAAA,CAC3C,CACF;AAAA,cANH,CAQG,EAAW,IAAA,CAAK,MACf,gBAAA,EAAC,OAAD;AAAA,MACE,WAAW,EAAW;AAAA,QACpB,EAAU,UAAU,WAAW;AAAA,QAC/B;AAAA,QACA,EAAU,WAAW;AAAA,OACtB;AAAA,MACD,OAAO,GAAU,CACf,GACA;AAAA,SACG,EAAa,UAAU,WAAW,GAAA,GAAM,EAAY,CAAA,GAAI,cAAc;AAAA,SACtE,EAAa,UAAU,WAAW,MAAA,GAAS,EAAI,QAAQ;AAAA,OACzD,CACF;AAAA,MACD,UAAU;AAAA,gBAGT,EAAI;AAAA,OAFA,GAAG,EAAI,KAAA,IAAS,EAAI,KAAA,EAAA,CAGrB,GAEP,EAAY,IAAA,CAAK,MAChB,gBAAA,EAAC,IAAD;AAAA,MACO,KAAA;AAAA,MACmB,wBAAA;AAAA,MACJ,oBAAA;AAAA,OACf,EAAI,KAAA,CACT,CACF;AAAA;IAWF,KAAoB,EAAA,CAAM,MAAkC;AAChE,QAAM,EAAE,wBAAA,GAAwB,KAAA,GAAK,oBAAA,EAAA,IAAuB,GACtD,IAAc,EAAA,CAAuB,MAAU,EAAM,WAAA;AAE3D,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,WAAW,EAAW;AAAA,MACpB,EAAU,UAAU,WAAW;AAAA,MAC/B;AAAA,MACA,EAAU,QAAQ,EAAI,cAAc,EAAI,WAAW,SAAS,WAAA;AAAA,MAC5D,EAAU,WAAW;AAAA,MACrB,EAAI,cAAc,EAAU,UAAU,WAAW;AAAA,MACjD,EAAI,WAAW,EAAU,UAAU,WAAW;AAAA,MAC9C,EAAI,aAAa,EAAU,UAAU,WAAW;AAAA,MAChD,EAAI,YAAY,EAAU,UAAU,WAAW;AAAA,MAC/C,CAAC,EAAI,kBAAkB,EAAU,UAAU,WAAW;AAAA,KACvD;AAAA,IACD,OAAO,GAAU,CACf,GACA;AAAA,OACG,EAAa,UAAU,WAAW,GAAA,GAAM,EAAI,cAAc;AAAA,OAC1D,EAAa,UAAU,WAAW,MAAA,GAAS,EAAI;AAAA,KACjD,CACF;AAAA,IACD,SAAA,MAAe;AACb,MAAK,EAAI,cACP,EAAY,EAAI,KAAA;AAAA;IAGpB,UAAU,EAAI,aAAa,KAAK;AAAA,cAE/B,EAAI;AAAA,GACD;IAIJ,KAAkB,EAAA,MAAW;AACjC,QAAM,IAAQ,EAAA,CAAuB,MAAU,EAAM,KAAA,GAC/C,IAAU,EAAA,CAAuB,MAAU,EAAM,OAAA,GACjD,IAAO,EAAA,CAAuB,MAAU,EAAM,IAAA;AAEpD,SAAI,CAAC,GAAO,WAAW,CAAC,IACf,OAIP,gBAAA,EAAC,IAAD;AAAA,IACE,MAAM,GAAO,QAAQ;AAAA,IACrB,cAAc;AAAA,MAAE,MAAM;AAAA,MAAI,QAAQ;AAAA,MAAO,GAAG,GAAO;AAAA;IACnD,GAAK,KAAS,CAAA;AAAA,GACd;IAIA,KAAiB,uBACjB,KAAmB;AAEzB,SAAS,GACP,GACA,GACA,GACA,GACA,GACA;AACA,QAAM,IAAU,EAAM,CAAA,KAAkB;AAExC,MAAI,MAAkB,EAAkB,MAAM;AAC5C,IAAA,EAAS,GAAe,EAAQ,UAAU,IAAI,IAAM,IAAU,CAAA;AAC9D;AAAA;AAGF,MAAI,EAAQ,UAAU,KAAK,MAAY,IAAI;AACzC,IAAA,EAAS,GAAe,CAAA;AACxB;AAAA;AAGF,QAAM,IAAW,MAAkB,EAAkB,KAAK,KAAK,IACzD,IAAY,IAAU,GACtB,IAAkB,OAAO,CAAA;AAE/B,MAAI,IAAkB,KAAY,MAAoB,GAAG;AACvD,IAAA,EAAS,GAAe,CAAA;AACxB;AAAA;AAGF,EAAA,EAAS,GAAe,CAAA,GACxB,EAAc,CAAA;;AAGhB,SAAS,GAAmB,GAAe;AACzC,MAAI,GAAe,KAAK,CAAA,GAAQ;AAC9B,UAAM,CAAC,GAAM,GAAO,CAAA,IAAO,EAAM,MAAM,GAAA,EAAK,IAAI,MAAA;AAChD,WAAO,GAAgB,GAAM,GAAO,CAAA;AAAA;AAGtC,QAAM,IAAQ,GAAiB,KAAK,CAAA;AACpC,MAAI,GAAO;AACT,UAAM,IAAK,EAAM,CAAA,GACX,IAAK,EAAM,CAAA,GACX,IAAK,EAAM,CAAA,GACX,IAAO,OAAO,CAAA,GACd,IAAO,OAAO,CAAA,GACd,IAAO,OAAO,CAAA;AAEpB,QAAI,GACA;AAEJ,WAAI,IAAO,MACT,IAAM,GACN,IAAQ,MAER,IAAQ,GACR,IAAM,IAGD,GAAgB,GAAM,GAAO,CAAA;AAAA;AAGtC,SAAO;;AAGT,SAAS,GAAgB,GAAc,GAAe,GAAa;AACjE,QAAM,IAAO,IAAI,KAAK,GAAM,IAAQ,GAAG,CAAA;AACvC,SAAI,EAAK,YAAA,MAAkB,KAAQ,EAAK,SAAA,MAAe,IAAQ,KAAK,EAAK,QAAA,MAAc,IAC9E;AAAA,IAAE,MAAA;AAAA,IAAM,OAAA;AAAA,IAAO,KAAA;AAAA,MAEjB;;AAGT,SAAS,GAAe,GAAgB;AAEtC,QAAM,IAAQ,KAAK,MAAM,IAAS,CAAA;AAGlC,SAFkB,IAAS,IAER,IAAI,IAAQ,IAAI;;AAGrC,SAAS,GAAe,GAAmC,GAAiD;AAC1G,QAAM,IAAe,EAAK,QAAQ,CAAA;AAClC,SAAO,IAAe,EAAK,SAAS,IAAI,EAAK,IAAe,CAAA,IAAK,EAAK,CAAA;;AAGxE,SAAS,GAAe,GAAmC,GAAiD;AAC1G,QAAM,IAAe,EAAK,QAAQ,CAAA;AAClC,SAAO,IAAe,IAAI,EAAK,IAAe,CAAA,IAAK,EAAK,EAAK,SAAS,CAAA;;AAGxE,SAAS,GACP,GACA,GACA,GACA,GACA;AACA,QAAM,IAAS,EAAM,IACf,IAAW,EAAM,IACjB,IAAU,EAAM,MAEhB,IAAM,MAAW,KAAK,MAAM,OAAO,CAAA,GACnC,IAAQ,MAAa,KAAK,MAAM,OAAO,CAAA,GACvC,IAAO,MAAY,KAAK,MAAM,OAAO,CAAA,GAErC,IAAa,MAAW,MAAM,MAAa,MAAM,MAAY;AAEnE,MAAI,CAAC,OAAO,MAAM,CAAA,KAAQ,CAAC,OAAO,MAAM,CAAA,KAAU,CAAC,OAAO,MAAM,CAAA,GAAO;AACrE,UAAM,IAAI,EAAO,IAAI,GAAG,CAAA,IAAO,CAAA,IAAS,CAAA,IAAQ,YAAY,EAAA,EAAM,QAAQ,KAAA;AAC1E,IAAI,EAAE,QAAA,IACJ,IAAY,EAAE,QAAA,CAAS,IAEvB,IAAA;AAAA,QAGF,CAAA,IAAQ,CAAA;;AAIZ,SAAS,GAAsB,GAAuB,GAAwB;AAC5E,SACE,EAAK,EAAkB,EAAA,MAAQ,EAAM,EAAkB,EAAA,KACvD,EAAK,EAAkB,EAAA,MAAQ,EAAM,EAAkB,EAAA,KACvD,EAAK,EAAkB,IAAA,MAAU,EAAM,EAAkB,IAAA"}
1
+ {"version":3,"file":"date-picker-BvKtH7lp.js","names":[],"sources":["../src/components/date-picker/component.types.ts","../src/components/date-picker/component.tsx"],"sourcesContent":["import { IErrorMessage } from '@local/components/error';\nimport { ISelectMonth } from '@local/components/select';\nimport { ITypography } from '@local/styles/utils';\nimport { IThemeControl, IThemeGenreDatePicker, IThemeSize } from '@local/styles/utils/types';\n\nimport { CSSProperties, HTMLInputAutoCompleteAttribute } from 'react';\n\nexport type IDatePickerMode = DatePickerVariant[];\n\nexport enum DatePickerVariant {\n DD = 'DD',\n MM = 'MM',\n YYYY = 'YYYY',\n}\n\nexport type IDatePickerType = 'manual' | 'select' | 'manualAndSelect';\n\nexport type IDatePickerCommon = {\n className?: string;\n style?: CSSProperties;\n\n classNamePopover?: string;\n stylePopover?: CSSProperties;\n\n sxTypography?: ITypography;\n control?: IThemeControl;\n error?: IErrorMessage;\n\n genre: IThemeGenreDatePicker;\n\n id?: string;\n\n isNiceNumber?: boolean;\n isReadOnly?: boolean;\n isDisabled?: boolean;\n isBold?: boolean;\n isMinWidth?: boolean;\n isShowClearButton?: boolean;\n isOnClickClose?: boolean;\n\n labelPlaceholder?: string;\n\n locale: {\n months: ISelectMonth['monthsLocale'];\n weeks: IDatePickerTranslateWeek[];\n inputs: IDatePickerTranslateInput;\n };\n\n notValidDate?: Omit<IErrorMessage, 'size' | 'isError'>;\n\n mode?: IDatePickerMode;\n\n type?: IDatePickerType;\n\n name?: string;\n\n ariaLabel?: string;\n\n autoComplete?: HTMLInputAutoCompleteAttribute | string;\n\n onBlur?: () => void;\n\n onChange: (timestamp: number | null) => void;\n\n onFocus?: () => void;\n\n size: IThemeSize;\n\n dateMax?: number;\n\n dateMin?: number;\n\n dateDefault: number;\n};\n\ntype IDatePickerControlledValue = {\n value: number | null | undefined;\n\n defaultValue?: never;\n};\n\ntype IDatePickerUncontrolledValue = {\n defaultValue: number | null | undefined;\n\n value?: never;\n};\nexport type IDatePicker = IDatePickerCommon & (IDatePickerControlledValue | IDatePickerUncontrolledValue);\n\nexport interface IDatePickerDay {\n dayOfWeek: number;\n\n isCurrentMonth: boolean;\n\n isDisabled: boolean;\n\n isChoice: boolean;\n\n isToday: boolean;\n\n isWeekend: boolean;\n\n labelNumber: number;\n\n labelString: string;\n\n value: number;\n\n weekOfMonth: number;\n}\n\nexport type IDatePickerTranslateMonth = {\n localeLong: string;\n\n localeShort: string;\n\n value:\n | 'january'\n | 'february'\n | 'march'\n | 'april'\n | 'may'\n | 'june'\n | 'july'\n | 'august'\n | 'september'\n | 'october'\n | 'november'\n | 'december';\n};\nexport type IDatePickerTranslateWeek = {\n localeLong: string;\n\n localeShort: string;\n\n value: 'mo' | 'tu' | 'we' | 'th' | 'fr' | 'sa' | 'su';\n};\nexport type IDatePickerTranslateInput = {\n day: string;\n\n month: string;\n\n year: string;\n};\n","/** biome-ignore-all lint/a11y/useKeyWithClickEvents: Date segments mirror the hidden keyboard input. */\nimport { Button } from '@local/components/button';\nimport { ErrorMessage } from '@local/components/error';\nimport { Popover, usePopover } from '@local/components/popover';\nimport { SelectMonth, SelectYear } from '@local/components/select';\nimport { Stack } from '@local/components/stack';\nimport { Typography } from '@local/components/typography';\nimport { useTypographyStyles } from '@local/hooks/use-typography-styles';\nimport { CSS_CLASS, CSS_VARS, CSS_VARS_RAW, EXTRA_VALUE } from '@local/styles/utils';\nimport { setClasses, setStyles } from '@local/styles/utils/functions';\n\nimport moment, { Moment } from 'moment';\nimport {\n ChangeEvent,\n CSSProperties,\n Fragment,\n KeyboardEvent,\n RefObject,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createContext, useContextSelector } from 'use-context-selector';\n\nimport {\n DatePickerVariant,\n IDatePicker,\n IDatePickerDay,\n IDatePickerMode,\n IDatePickerTranslateWeek,\n IDatePickerType,\n} from './component.types';\n\ntype DatePickerInput = Record<DatePickerVariant, string>;\n\ntype DatePickerPopoverApi = ReturnType<typeof usePopover>;\n\ntype DatePickerWeekDay = {\n index: number;\n label: string;\n};\n\ntype DatePickerInputPlaceholders = Record<DatePickerVariant, string>;\n\ntype DatePickerContextValue = {\n activeSegment: DatePickerVariant | null;\n activateSegment: (segment: DatePickerVariant) => void;\n ariaLabel: IDatePicker['ariaLabel'];\n autoComplete: IDatePicker['autoComplete'];\n classNamePopover: string;\n classNameTypography: string;\n classNameTypographyDay: string;\n classNameWrapper: string;\n clearActiveSegment: () => void;\n clearDate: () => void;\n close: DatePickerPopoverApi['close'];\n control: IDatePicker['control'];\n dateMax: IDatePicker['dateMax'];\n dateMin: IDatePicker['dateMin'];\n daysInMonth: IDatePickerDay[];\n daysInWeek: DatePickerWeekDay[];\n error: IDatePicker['error'];\n floatingStyles: DatePickerPopoverApi['floatingStyles'];\n genre: IDatePicker['genre'];\n id: IDatePicker['id'];\n input: DatePickerInput;\n inputPlaceholders: DatePickerInputPlaceholders;\n isBlockNextMonth: boolean;\n isBlockPrevMonth: boolean;\n isDisabled: IDatePicker['isDisabled'];\n isError: boolean;\n isHasInput: boolean;\n isHasValue: boolean;\n isOpen: boolean;\n isReadOnly: IDatePicker['isReadOnly'];\n isShowButtonList: boolean;\n isShowClearButton: IDatePicker['isShowClearButton'];\n isShowPlaceholder: boolean;\n labelPlaceholder: IDatePicker['labelPlaceholder'];\n localeMonths: IDatePicker['locale']['months'];\n mode: IDatePickerMode;\n monthSelectValue: number;\n name: IDatePicker['name'];\n onBlurInput: () => void;\n onChangeInput: (e: ChangeEvent<HTMLInputElement>) => void;\n onFocusInput: () => void;\n onKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void;\n onNextMonth: () => void;\n onPrevMonth: () => void;\n onSelectDay: (timestamp: number) => void;\n onSelectMonthYear: (timestamp: number | null) => void;\n refFloating: DatePickerPopoverApi['refFloating'];\n refHiddenInput: RefObject<HTMLInputElement | null>;\n refReference: DatePickerPopoverApi['refReference'];\n refSelectMonth: RefObject<HTMLElement | null>;\n refSelectYear: RefObject<HTMLElement | null>;\n rows: number;\n size: IDatePicker['size'];\n stylePopover: CSSProperties | undefined;\n styleTypography: CSSProperties | undefined;\n styleTypographyDay: CSSProperties | undefined;\n styleWrapper: CSSProperties | undefined;\n toggle: DatePickerPopoverApi['toggle'];\n type: IDatePickerType;\n yearSelectValue: number;\n};\n\nconst weekOrder: IDatePickerTranslateWeek['value'][] = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su'];\n\nconst inputSegments: IDatePickerMode = [DatePickerVariant.DD, DatePickerVariant.MM, DatePickerVariant.YYYY];\n\nconst defaultMode: IDatePickerMode = inputSegments;\n\nconst emptyInput: DatePickerInput = {\n [DatePickerVariant.DD]: '',\n [DatePickerVariant.MM]: '',\n [DatePickerVariant.YYYY]: '',\n};\n\nconst DatePickerContext = createContext<DatePickerContextValue | null>(null);\n\nfunction useDatePickerSelector<T>(selector: (value: DatePickerContextValue) => T): T {\n return useContextSelector(DatePickerContext, (value) => {\n if (!value) {\n throw new Error('DatePicker context is not available.');\n }\n\n return selector(value);\n });\n}\n\nexport const DatePicker = (props: IDatePicker) => {\n const {\n ariaLabel,\n autoComplete,\n className,\n classNamePopover: classNamePopoverProp,\n control,\n dateDefault,\n dateMax,\n dateMin,\n error,\n genre,\n id,\n isBold,\n isDisabled,\n isOnClickClose,\n isReadOnly,\n isShowClearButton,\n labelPlaceholder,\n locale,\n mode: modeProp,\n name,\n onBlur,\n onChange,\n onFocus,\n size,\n style,\n stylePopover: stylePopoverProp,\n sxTypography,\n type: typeProp,\n } = props;\n\n const [valueMoment, setValueMoment] = useState<null | Moment>(null);\n const [dateDefaultMoment, setDateDefaultMoment] = useState<Moment>(moment(dateDefault).utc());\n const [input, setInput] = useState<DatePickerInput>(emptyInput);\n const [activeSegment, setActiveSegment] = useState<DatePickerVariant | null>(null);\n const [isError, setIsError] = useState(false);\n const [isInputFocused, setIsInputFocused] = useState(false);\n\n const refInputValue = useRef(input);\n const refIsHasValueOnce = useRef(false);\n const refPrevValue = useRef('');\n const refSelectMonth = useRef<HTMLElement>(null);\n const refSelectYear = useRef<HTMLElement>(null);\n const refHiddenInput = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n refInputValue.current = input;\n }, [input]);\n\n const isHasInput = useMemo(\n () =>\n input[DatePickerVariant.DD] !== '' || input[DatePickerVariant.MM] !== '' || input[DatePickerVariant.YYYY] !== '',\n [input],\n );\n\n const setInputValues = useCallback((value: DatePickerInput) => {\n setInput((prev) => (isSameDatePickerInput(prev, value) ? prev : value));\n }, []);\n\n const onClearInput = useCallback(() => {\n setInputValues(emptyInput);\n }, [setInputValues]);\n\n const mode: IDatePickerMode = useMemo(() => {\n if (!modeProp || modeProp.length === 0) {\n return defaultMode;\n }\n\n const hasDuplicates = new Set(modeProp).size !== modeProp.length;\n\n if (hasDuplicates) {\n return defaultMode;\n }\n\n return modeProp;\n }, [modeProp]);\n\n const type: IDatePickerType = useMemo(() => {\n if (!typeProp) {\n return 'manualAndSelect';\n }\n\n return typeProp;\n }, [typeProp]);\n\n const inputPlaceholders = useMemo<DatePickerInputPlaceholders>(\n () => ({\n [DatePickerVariant.DD]: locale.inputs.day,\n [DatePickerVariant.MM]: locale.inputs.month,\n [DatePickerVariant.YYYY]: locale.inputs.year,\n }),\n [locale.inputs.day, locale.inputs.month, locale.inputs.year],\n );\n\n const setSegmentValue = useCallback((segment: DatePickerVariant, value: string) => {\n setInput((prev) => (prev[segment] === value ? prev : { ...prev, [segment]: value }));\n }, []);\n\n const activateSegment = useCallback((segment: DatePickerVariant) => {\n setActiveSegment(segment);\n }, []);\n\n const clearActiveSegment = useCallback(() => {\n setActiveSegment(null);\n }, []);\n\n const activateNextSegment = useCallback(\n (segment: DatePickerVariant) => {\n setActiveSegment(getNextSegment(segment, mode));\n },\n [mode],\n );\n\n const activatePrevSegment = useCallback(\n (segment: DatePickerVariant) => {\n setActiveSegment(getPrevSegment(segment, mode));\n },\n [mode],\n );\n\n const daysInWeek = useMemo<DatePickerWeekDay[]>(() => {\n return weekOrder.map((key, index) => {\n const found = locale.weeks.find((w) => w.value === key);\n return {\n index,\n label: found?.localeShort ?? key.toUpperCase(),\n };\n });\n }, [locale.weeks]);\n\n const daysInMonth: IDatePickerDay[] = useMemo(() => {\n const dateToday = moment.utc();\n const dateValue = valueMoment ?? dateDefaultMoment;\n const dateStartOfMonth = dateValue.clone().startOf('month');\n const dateEndOfMonth = dateValue.clone().endOf('month');\n const dateMinMoment = dateMin ? moment.utc(dateMin) : null;\n const dateMaxMoment = dateMax ? moment.utc(dateMax) : null;\n\n const dateVisibleDayFirst = dateStartOfMonth.clone().subtract(dateStartOfMonth.isoWeekday() - 1, 'days');\n const dateVisibleDayLast = dateEndOfMonth.clone().add(7 - dateEndOfMonth.isoWeekday(), 'days');\n\n const result: IDatePickerDay[] = [];\n const dateCurrent = dateVisibleDayFirst.clone();\n\n while (dateCurrent <= dateVisibleDayLast) {\n const isCurrentMonth = dateCurrent.isBetween(dateStartOfMonth, dateEndOfMonth, 'day', '[]');\n result.push({\n value: dateCurrent.valueOf(),\n labelString: dateCurrent.format('dd'),\n labelNumber: dateCurrent.date(),\n dayOfWeek: dateCurrent.isoWeekday(),\n isWeekend: [6, 7].includes(dateCurrent.isoWeekday()),\n weekOfMonth: Math.ceil((result.length + 1) / 7),\n isToday: dateCurrent.isSame(dateToday, 'day'),\n isCurrentMonth,\n isChoice: dateCurrent.valueOf() === valueMoment?.valueOf(),\n isDisabled: !!(\n (dateMinMoment && dateCurrent.isBefore(dateMinMoment, 'day')) ||\n (dateMaxMoment && dateCurrent.isAfter(dateMaxMoment, 'day'))\n ),\n });\n\n dateCurrent.add(1, 'day');\n }\n\n return result;\n }, [valueMoment, dateDefaultMoment, dateMax, dateMin]);\n\n const rows = useMemo(() => getCountSevens(daysInMonth.length) + 1, [daysInMonth]);\n const sizeRadius = useMemo(() => CSS_VARS.sizeValue[size].radius, [size]);\n const sizePadding = useMemo(() => CSS_VARS.sizeValue[size].padding, [size]);\n const isHasValue = useMemo(() => valueMoment !== null, [valueMoment]);\n\n const isBlockNextMonth = useMemo(() => {\n const nextMonth = (valueMoment ?? dateDefaultMoment).clone().add(1, 'month').startOf('month');\n const isBeforeEndDate = dateMax ? nextMonth.isAfter(moment.utc(dateMax), 'month') : false;\n return isBeforeEndDate;\n }, [valueMoment, dateMax, dateDefaultMoment]);\n\n const isBlockPrevMonth = useMemo(() => {\n const prevMonth = (valueMoment ?? dateDefaultMoment).clone().subtract(1, 'month').startOf('month');\n const isAfterStartDate = dateMin ? prevMonth.isBefore(moment.utc(dateMin), 'month') : false;\n return isAfterStartDate;\n }, [valueMoment, dateMin, dateDefaultMoment]);\n\n const onFocusPopover = useCallback(() => {\n onFocus?.();\n }, [onFocus]);\n\n const onBlurPopover = useCallback(() => {\n onBlur?.();\n }, [onBlur]);\n\n const refsExcludeClickOutside = useMemo(() => [refSelectMonth, refSelectYear], []);\n\n const { isOpen, refReference, refFloating, floatingStyles, close, toggle } = usePopover({\n isFocusTrap: true,\n placement: 'bottom-start',\n offset: sizePadding,\n mode: 'independence',\n isClickOutside: true,\n refsExcludeClickOutside,\n isDisabled: isDisabled || isReadOnly,\n onFocus: onFocusPopover,\n onBlur: onBlurPopover,\n onBlurReference: clearActiveSegment,\n });\n\n const isShowPlaceholder = useMemo(() => {\n return !!(\n !isInputFocused &&\n !isHasValue &&\n labelPlaceholder &&\n (type !== 'select' ? !isOpen : true) &&\n !isHasInput &&\n !activeSegment\n );\n }, [isInputFocused, isHasValue, isOpen, labelPlaceholder, isHasInput, activeSegment, type]);\n\n const onChangeDate = useCallback(\n (timestamp: number, isAddLeadingZeros: boolean, input?: DatePickerInput) => {\n const momentNewDate = moment(timestamp).utc();\n\n const dd = momentNewDate.clone().date().toString();\n const mm = (momentNewDate.clone().month() + 1).toString();\n\n const ddWithZero = dd.padStart(2, '0');\n const mmWithZero = mm.padStart(2, '0');\n\n const yyyy = momentNewDate.clone().year().toString();\n const ddInput = input?.[DatePickerVariant.DD];\n const mmInput = input?.[DatePickerVariant.MM];\n const yyyyInput = input?.[DatePickerVariant.YYYY];\n\n const isSameInput = ddWithZero === ddInput && mmWithZero === mmInput && yyyyInput === yyyy;\n const isSameMoment = valueMoment?.isSame(momentNewDate, 'day');\n\n if (!isSameMoment) {\n setValueMoment(momentNewDate);\n onChange(momentNewDate.valueOf());\n }\n\n const shouldUpdateInput = input ? !isSameInput : !isSameMoment;\n\n if (shouldUpdateInput) {\n setInputValues({\n [DatePickerVariant.DD]: isAddLeadingZeros ? ddWithZero : dd,\n [DatePickerVariant.MM]: isAddLeadingZeros ? mmWithZero : mm,\n [DatePickerVariant.YYYY]: yyyy,\n });\n }\n },\n [valueMoment, onChange, setInputValues],\n );\n\n const onKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n const key = e.key;\n const allowedKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Backspace', 'Delete', 'Tab', 'Enter'];\n const isDigit = /^\\d$/.test(key);\n const isAllowed = isDigit || allowedKeys.includes(key) || e.ctrlKey || e.metaKey;\n\n if (!isAllowed) {\n e.preventDefault();\n return;\n }\n\n if (!activeSegment) {\n return;\n }\n\n if (isDigit) {\n getDigitKey(key, activeSegment, input, setSegmentValue, activateNextSegment);\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (key === 'Tab') {\n if (mode[mode.length - 1] !== activeSegment) {\n e.preventDefault();\n activateNextSegment(activeSegment);\n } else {\n refHiddenInput?.current?.blur();\n }\n }\n\n if (key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (key === 'Backspace' || key === 'Delete') {\n const current = input[activeSegment];\n\n if (current !== '') {\n setSegmentValue(activeSegment, current.length === 1 ? '' : current.slice(0, -1));\n } else {\n activatePrevSegment(activeSegment);\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (key === 'ArrowLeft' || key === 'ArrowDown') {\n e.preventDefault();\n activatePrevSegment(activeSegment);\n }\n\n if (key === 'ArrowRight' || key === 'ArrowUp') {\n e.preventDefault();\n activateNextSegment(activeSegment);\n }\n },\n [activeSegment, activateNextSegment, activatePrevSegment, input, mode, setSegmentValue],\n );\n\n const onNextMonth = useCallback(() => {\n const newDate = (valueMoment ?? dateDefaultMoment).clone().add(1, 'month');\n onChangeDate(newDate.valueOf(), true);\n }, [valueMoment, onChangeDate, dateDefaultMoment]);\n\n const onPrevMonth = useCallback(() => {\n const newDate = (valueMoment ?? dateDefaultMoment).clone().subtract(1, 'month');\n onChangeDate(newDate.valueOf(), true);\n }, [valueMoment, onChangeDate, dateDefaultMoment]);\n\n const onFocusInput = useCallback(() => {\n if (type === 'select') return;\n setIsInputFocused(true);\n setActiveSegment((current) => current ?? DatePickerVariant.DD);\n }, [type]);\n\n const onBlurInput = useCallback(() => {\n setIsInputFocused(false);\n\n if (!isOpen) {\n onBlur?.();\n }\n }, [isOpen, onBlur]);\n\n const onChangeInput = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n const result = getParseDateString(value);\n\n if (result) {\n setInputValues({\n [DatePickerVariant.DD]: String(result.day).padStart(2, '0'),\n [DatePickerVariant.MM]: String(result.month).padStart(2, '0'),\n [DatePickerVariant.YYYY]: String(result.year),\n });\n if (refHiddenInput.current) refHiddenInput.current.value = '';\n return;\n }\n\n const prevValue = refPrevValue.current;\n const newChar = value.length > prevValue.length ? value.slice(-1) : null;\n\n refPrevValue.current = value;\n\n if (newChar && /^\\d$/.test(newChar)) {\n onKeyDown({\n key: newChar,\n preventDefault: () => {},\n stopPropagation: () => {},\n } as unknown as KeyboardEvent<HTMLInputElement>);\n }\n\n if (value.length < prevValue.length) {\n onKeyDown({\n key: 'Backspace',\n preventDefault: () => {},\n stopPropagation: () => {},\n } as unknown as KeyboardEvent<HTMLInputElement>);\n }\n\n if (refHiddenInput.current) refHiddenInput.current.value = '';\n },\n [onKeyDown, setInputValues],\n );\n\n useEffect(() => {\n if (isHasValue && !refIsHasValueOnce.current) refIsHasValueOnce.current = true;\n }, [isHasValue]);\n\n useEffect(() => {\n setDateDefaultMoment(moment(dateDefault).utc());\n }, [dateDefault]);\n\n useEffect(() => {\n setValueMoment(props.value || props.defaultValue ? moment(props.value ?? props.defaultValue).utc() : null);\n if (props.value) {\n const m = moment(props.value).utc();\n setInputValues({\n [DatePickerVariant.DD]: m.date().toString().padStart(2, '0'),\n [DatePickerVariant.MM]: (m.month() + 1).toString().padStart(2, '0'),\n [DatePickerVariant.YYYY]: m.year().toString(),\n });\n }\n }, [props.value, props.defaultValue, setInputValues]);\n\n useEffect(() => {\n if (!activeSegment)\n getValidateInput(\n input,\n (value) => {\n onChangeDate(value, true, input);\n setIsError(false);\n },\n () => {\n onChange(null);\n setIsError(true);\n },\n (isHasInput) => {\n if (!isHasInput) {\n if (refIsHasValueOnce.current) {\n onChange(null);\n refIsHasValueOnce.current = false;\n }\n setIsError(false);\n }\n },\n );\n }, [onChangeDate, onChange, input, activeSegment]);\n\n useEffect(() => {\n if (!isOpen && !isInputFocused && isHasInput && !activeSegment)\n getValidateInput(\n input,\n () => {},\n () => {\n onChange(null);\n onClearInput();\n setIsError(false);\n },\n () => {\n onChange(null);\n onClearInput();\n setIsError(false);\n },\n );\n }, [onClearInput, input, isOpen, isInputFocused, onChange, isHasInput, activeSegment]);\n\n useEffect(() => {\n if (!activeSegment) return;\n getValidateInput(\n refInputValue.current,\n (value) => {\n onChangeDate(value, true, refInputValue.current);\n setIsError(false);\n },\n () => {\n setIsError(true);\n },\n (isHasInput) => {\n if (!isHasInput) {\n setIsError(false);\n }\n },\n );\n }, [onChangeDate, activeSegment]);\n\n useEffect(() => {\n if (activeSegment) {\n close();\n refHiddenInput?.current?.focus();\n }\n }, [activeSegment, close]);\n\n const monthSelectValue = useMemo(\n () => (valueMoment ?? dateDefaultMoment).clone().startOf('month').utc().valueOf(),\n [valueMoment, dateDefaultMoment],\n );\n\n const yearSelectValue = useMemo(\n () => (valueMoment ?? dateDefaultMoment).clone().startOf('year').utc().valueOf(),\n [valueMoment, dateDefaultMoment],\n );\n\n const clearDate = useCallback(() => {\n onChange(null);\n onClearInput();\n setIsError(false);\n }, [onChange, onClearInput]);\n\n const onSelectDay = useCallback(\n (timestamp: number) => {\n onChangeDate(timestamp, true);\n if (isOnClickClose) {\n close();\n }\n },\n [onChangeDate, isOnClickClose, close],\n );\n\n const onSelectMonthYear = useCallback(\n (timestamp: number | null) => {\n if (timestamp) onChangeDate(timestamp, true);\n },\n [onChangeDate],\n );\n\n const { className: classNameTypographyDay, style: styleTypographyDay } = useTypographyStyles({\n sx: {\n variant: EXTRA_VALUE.sizeToController.small,\n weight: '500',\n ...sxTypography,\n },\n });\n\n const { className: classNameTypography, style: styleTypography } = useTypographyStyles({\n sx: {\n size: 16,\n weight: isBold ? '700' : '400',\n ...sxTypography,\n },\n });\n\n const { className: classNameWrapper, style: styleWrapper } = useMemo(() => {\n const classNameWrapper = setClasses([CSS_CLASS.component.datePicker.wrapper, className]);\n const vars: Record<string, string> = {};\n\n vars[CSS_VARS_RAW.component.datePicker.padding] = CSS_VARS.size[size].padding;\n vars[CSS_VARS_RAW.component.datePicker.inputBackground] = CSS_VARS.genre.select[genre].background.index;\n vars[CSS_VARS_RAW.component.datePicker.inputBackgroundHover] = CSS_VARS.genre.input[genre].background;\n vars[CSS_VARS_RAW.component.datePicker.inputSegmentBackgroundActive] = CSS_VARS.palette.fillQuaternaryLight;\n vars[CSS_VARS_RAW.component.datePicker.inputBorderColor] = CSS_VARS.genre.input[genre].border;\n vars[CSS_VARS_RAW.component.datePicker.inputBorderColorHover] = CSS_VARS.genre.input[genre].border;\n vars[CSS_VARS_RAW.component.datePicker.inputColor] = CSS_VARS.genre.input[genre].color;\n vars[CSS_VARS_RAW.component.datePicker.inputColorHover] = CSS_VARS.genre.input[genre].color;\n vars[CSS_VARS_RAW.component.datePicker.inputPadding] = isShowPlaceholder\n ? `0px ${CSS_VARS.size[size].padding}`\n : `0px ${CSS_VARS.size[size].padding} 0px ${CSS_VARS.sizeValue[size].padding - 2}px`;\n vars[CSS_VARS_RAW.component.datePicker.inputHeight] = CSS_VARS.size[size].height;\n vars[CSS_VARS_RAW.component.datePicker.inputRadius] = CSS_VARS.size[size].radius;\n vars[CSS_VARS_RAW.component.datePicker.inputValueColor] = CSS_VARS.genre.input[genre].color;\n vars[CSS_VARS_RAW.component.datePicker.inputPlaceholderColor] = CSS_VARS.genre.input[genre].placeholder;\n vars[CSS_VARS_RAW.component.datePicker.buttonToggleRight] = `${CSS_VARS.size[size].padding}`;\n vars[CSS_VARS_RAW.component.datePicker.buttonClearRight] =\n `${CSS_VARS.sizeValue[size].padding * 2 + CSS_VARS.sizeValue[size].height}px`;\n\n const styleWrapper = setStyles([Object.keys(vars).length ? vars : undefined, style]);\n\n return { className: classNameWrapper, style: styleWrapper };\n }, [className, style, isShowPlaceholder, genre, size]);\n\n const { className: classNamePopover, style: stylePopover } = useMemo(() => {\n const classNamePopover = setClasses([classNamePopoverProp]);\n const vars: Record<string, string> = {};\n\n vars[CSS_VARS_RAW.component.datePicker.dayRadius] = `${sizeRadius}px`;\n vars[CSS_VARS_RAW.component.datePicker.dayBackgroundRest] = CSS_VARS.genre.datepicker[genre].background.index;\n vars[CSS_VARS_RAW.component.datePicker.dayBackgroundHover] = CSS_VARS.genre.datepicker[genre].background.hover;\n vars[CSS_VARS_RAW.component.datePicker.dayBackgroundWeekend] = CSS_VARS.genre.datepicker[genre].background.weekend;\n vars[CSS_VARS_RAW.component.datePicker.dayBackgroundToday] = CSS_VARS.genre.datepicker[genre].background.today;\n vars[CSS_VARS_RAW.component.datePicker.dayBackgroundChoice] = CSS_VARS.genre.datepicker[genre].background.choice;\n vars[CSS_VARS_RAW.component.datePicker.dayBorderRest] = CSS_VARS.genre.datepicker[genre].border.index;\n vars[CSS_VARS_RAW.component.datePicker.dayBorderWeekend] = CSS_VARS.genre.datepicker[genre].border.weekend;\n vars[CSS_VARS_RAW.component.datePicker.dayBorderToday] = CSS_VARS.genre.datepicker[genre].border.today;\n vars[CSS_VARS_RAW.component.datePicker.dayBorderChoice] = CSS_VARS.genre.datepicker[genre].border.choice;\n vars[CSS_VARS_RAW.component.datePicker.dayBorderHover] = CSS_VARS.genre.datepicker[genre].border.hover;\n vars[CSS_VARS_RAW.component.datePicker.dayColorRest] = CSS_VARS.genre.datepicker[genre].color.index;\n vars[CSS_VARS_RAW.component.datePicker.dayColorHover] = CSS_VARS.genre.datepicker[genre].color.hover;\n vars[CSS_VARS_RAW.component.datePicker.dayColorWeekend] = CSS_VARS.genre.datepicker[genre].color.weekend;\n vars[CSS_VARS_RAW.component.datePicker.dayColorToday] = CSS_VARS.genre.datepicker[genre].color.today;\n vars[CSS_VARS_RAW.component.datePicker.dayColorChoice] = CSS_VARS.genre.datepicker[genre].color.choice;\n\n const stylePopover = setStyles([\n Object.keys(vars).length ? vars : undefined,\n {\n background: CSS_VARS.genre.popover[genre].background,\n border: `solid 1px ${CSS_VARS.genre.input[genre].border}`,\n },\n stylePopoverProp,\n ]);\n\n return { className: classNamePopover, style: stylePopover };\n }, [classNamePopoverProp, stylePopoverProp, genre, sizeRadius]);\n\n const isShowButtonList = useMemo(() => {\n return type !== 'manual' || !!(isShowClearButton && (isHasValue || isHasInput) && !isDisabled && !isReadOnly);\n }, [type, isHasInput, isHasValue, isShowClearButton, isDisabled, isReadOnly]);\n\n const contextValue = useMemo<DatePickerContextValue>(\n () => ({\n activeSegment,\n activateSegment,\n ariaLabel,\n autoComplete,\n classNamePopover,\n classNameTypography,\n classNameTypographyDay,\n classNameWrapper,\n clearActiveSegment,\n clearDate,\n close,\n control,\n dateMax,\n dateMin,\n daysInMonth,\n daysInWeek,\n error,\n floatingStyles,\n genre,\n id,\n input,\n inputPlaceholders,\n isBlockNextMonth,\n isBlockPrevMonth,\n isDisabled,\n isError,\n isHasInput,\n isHasValue,\n isOpen,\n isReadOnly,\n isShowButtonList,\n isShowClearButton,\n isShowPlaceholder,\n labelPlaceholder,\n localeMonths: locale.months,\n mode,\n monthSelectValue,\n name,\n onBlurInput,\n onChangeInput,\n onFocusInput,\n onKeyDown,\n onNextMonth,\n onPrevMonth,\n onSelectDay,\n onSelectMonthYear,\n refFloating,\n refHiddenInput,\n refReference,\n refSelectMonth,\n refSelectYear,\n rows,\n size,\n stylePopover,\n styleTypography,\n styleTypographyDay,\n styleWrapper,\n toggle,\n type,\n yearSelectValue,\n }),\n [\n activeSegment,\n activateSegment,\n ariaLabel,\n autoComplete,\n classNamePopover,\n classNameTypography,\n classNameTypographyDay,\n classNameWrapper,\n clearActiveSegment,\n clearDate,\n close,\n control,\n dateMax,\n dateMin,\n daysInMonth,\n daysInWeek,\n error,\n floatingStyles,\n genre,\n id,\n input,\n inputPlaceholders,\n isBlockNextMonth,\n isBlockPrevMonth,\n isDisabled,\n isError,\n isHasInput,\n isHasValue,\n isOpen,\n isReadOnly,\n isShowButtonList,\n isShowClearButton,\n isShowPlaceholder,\n labelPlaceholder,\n locale.months,\n mode,\n monthSelectValue,\n name,\n onBlurInput,\n onChangeInput,\n onFocusInput,\n onKeyDown,\n onNextMonth,\n onPrevMonth,\n onSelectDay,\n onSelectMonthYear,\n refFloating,\n refReference,\n rows,\n size,\n stylePopover,\n styleTypography,\n styleTypographyDay,\n styleWrapper,\n toggle,\n type,\n yearSelectValue,\n ],\n );\n\n return (\n <DatePickerContext.Provider value={contextValue}>\n <DatePickerContent />\n </DatePickerContext.Provider>\n );\n};\n\nconst DatePickerContent = memo(() => {\n const classNameWrapper = useDatePickerSelector((value) => value.classNameWrapper);\n const styleWrapper = useDatePickerSelector((value) => value.styleWrapper);\n\n return (\n <>\n <div className={classNameWrapper} style={styleWrapper} tabIndex={-1}>\n <DatePickerInputWrapper />\n </div>\n <DatePickerPopover />\n <DatePickerError />\n </>\n );\n});\n\nconst DatePickerInputWrapper = memo(() => {\n const activeSegment = useDatePickerSelector((value) => value.activeSegment);\n const activateSegment = useDatePickerSelector((value) => value.activateSegment);\n const control = useDatePickerSelector((value) => value.control);\n const isDisabled = useDatePickerSelector((value) => value.isDisabled);\n const isOpen = useDatePickerSelector((value) => value.isOpen);\n const isReadOnly = useDatePickerSelector((value) => value.isReadOnly);\n const refReference = useDatePickerSelector((value) => value.refReference);\n const toggle = useDatePickerSelector((value) => value.toggle);\n const type = useDatePickerSelector((value) => value.type);\n\n const handleClick = useCallback(() => {\n if (type === 'select') {\n toggle();\n return;\n }\n\n if (!activeSegment && !isReadOnly) {\n activateSegment(DatePickerVariant.DD);\n }\n }, [activeSegment, activateSegment, isReadOnly, toggle, type]);\n\n return (\n <div\n ref={refReference as RefObject<HTMLDivElement | null>}\n tabIndex={-1}\n onClick={handleClick}\n className={setClasses([\n CSS_CLASS.component.datePicker.inputWrapper,\n CSS_CLASS.transition.color,\n CSS_CLASS.control[\n isDisabled ? 'none' : (control ?? (isOpen || activeSegment ? 'boxShadowSelect' : 'boxShadowOnlyHover'))\n ],\n ])}\n >\n <DatePickerHiddenInput />\n <DatePickerDisplay />\n <DatePickerButtonList />\n </div>\n );\n});\n\nconst DatePickerHiddenInput = memo(() => {\n const ariaLabel = useDatePickerSelector((value) => value.ariaLabel);\n const autoComplete = useDatePickerSelector((value) => value.autoComplete);\n const id = useDatePickerSelector((value) => value.id);\n const isDisabled = useDatePickerSelector((value) => value.isDisabled);\n const isReadOnly = useDatePickerSelector((value) => value.isReadOnly);\n const name = useDatePickerSelector((value) => value.name);\n const onBlurInput = useDatePickerSelector((value) => value.onBlurInput);\n const onChangeInput = useDatePickerSelector((value) => value.onChangeInput);\n const onFocusInput = useDatePickerSelector((value) => value.onFocusInput);\n const onKeyDown = useDatePickerSelector((value) => value.onKeyDown);\n const refHiddenInput = useDatePickerSelector((value) => value.refHiddenInput);\n const type = useDatePickerSelector((value) => value.type);\n\n if (type === 'select') {\n return null;\n }\n\n return (\n <input\n name={name}\n aria-label={ariaLabel ?? name}\n autoComplete={autoComplete}\n id={id}\n ref={refHiddenInput}\n type='tel'\n inputMode='numeric'\n tabIndex={0}\n disabled={isDisabled || isReadOnly}\n style={{\n position: 'absolute',\n left: '-100dvw',\n top: 0,\n width: '100%',\n height: '100%',\n opacity: 0,\n border: 'none',\n background: 'transparent',\n }}\n onKeyDown={onKeyDown}\n onChange={onChangeInput}\n onFocus={onFocusInput}\n onBlur={onBlurInput}\n />\n );\n});\n\nconst DatePickerDisplay = memo(() => {\n const isShowPlaceholder = useDatePickerSelector((value) => value.isShowPlaceholder);\n\n return isShowPlaceholder ? <DatePickerPlaceholder /> : <DatePickerInputSegments />;\n});\n\nconst DatePickerPlaceholder = memo(() => {\n const genre = useDatePickerSelector((value) => value.genre);\n const labelPlaceholder = useDatePickerSelector((value) => value.labelPlaceholder);\n\n return (\n <Typography\n sx={{ size: 16, line: 1, isNoUserSelect: true }}\n style={{\n color: CSS_VARS.genre.input[genre].placeholder,\n }}\n >\n {labelPlaceholder}\n </Typography>\n );\n});\n\nconst DatePickerInputSegments = memo(() => {\n const mode = useDatePickerSelector((value) => value.mode);\n\n return mode.map((segment, index) => (\n <Fragment key={segment}>\n <DatePickerInputSegment segment={segment} />\n {index !== mode.length - 1 && <span style={{ width: '4px', pointerEvents: 'none', textAlign: 'center' }}>.</span>}\n </Fragment>\n ));\n});\n\ntype DatePickerInputSegmentProps = {\n segment: DatePickerVariant;\n};\n\nconst DatePickerInputSegment = memo((props: DatePickerInputSegmentProps) => {\n const { segment } = props;\n const activateSegment = useDatePickerSelector((value) => value.activateSegment);\n const classNameTypography = useDatePickerSelector((value) => value.classNameTypography);\n const inputValue = useDatePickerSelector((value) => value.input[segment]);\n const isActive = useDatePickerSelector((value) => value.activeSegment === segment);\n const isDisabled = useDatePickerSelector((value) => value.isDisabled);\n const isReadOnly = useDatePickerSelector((value) => value.isReadOnly);\n const placeholder = useDatePickerSelector((value) => value.inputPlaceholders[segment]);\n const styleTypography = useDatePickerSelector((value) => value.styleTypography);\n const type = useDatePickerSelector((value) => value.type);\n\n return (\n <div\n className={setClasses([\n CSS_CLASS.component.datePicker.inputSegment,\n CSS_CLASS.transition.color,\n classNameTypography,\n !!inputValue && CSS_CLASS.component.datePicker.inputSegmentHasValue,\n isActive && CSS_CLASS.component.datePicker.inputSegmentIsActive,\n ])}\n style={styleTypography}\n onClick={(e) => {\n if (type === 'select') return;\n e.preventDefault();\n e.stopPropagation();\n if (isDisabled || isReadOnly) return;\n activateSegment(segment);\n }}\n >\n {inputValue || placeholder || ''}\n </div>\n );\n});\n\nconst DatePickerButtonList = memo(() => {\n const isShowButtonList = useDatePickerSelector((value) => value.isShowButtonList);\n\n if (!isShowButtonList) {\n return null;\n }\n\n return (\n <div className={setClasses([CSS_CLASS.component.datePicker.listButton])}>\n <DatePickerClearButton />\n <DatePickerCalendarButton />\n </div>\n );\n});\n\nconst DatePickerClearButton = memo(() => {\n const clearActiveSegment = useDatePickerSelector((value) => value.clearActiveSegment);\n const clearDate = useDatePickerSelector((value) => value.clearDate);\n const genre = useDatePickerSelector((value) => value.genre);\n const isDisabled = useDatePickerSelector((value) => value.isDisabled);\n const isHasInput = useDatePickerSelector((value) => value.isHasInput);\n const isHasValue = useDatePickerSelector((value) => value.isHasValue);\n const isReadOnly = useDatePickerSelector((value) => value.isReadOnly);\n const isShowClearButton = useDatePickerSelector((value) => value.isShowClearButton);\n\n if (!isShowClearButton || (!isHasValue && !isHasInput) || isDisabled || isReadOnly) {\n return null;\n }\n\n return (\n <Button\n genre={genre}\n size='small'\n isWidthAsHeight\n isFullRadius\n isFullSize\n isHiddenBorder\n isOnlyIcon\n tabIndex={0}\n icons={[{ name: 'Close', type: 'id' }]}\n isDisabled={isDisabled || isReadOnly}\n onFocus={(e) => {\n e.preventDefault();\n e.stopPropagation();\n clearActiveSegment();\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n clearDate();\n }}\n />\n );\n});\n\nconst DatePickerCalendarButton = memo(() => {\n const clearActiveSegment = useDatePickerSelector((value) => value.clearActiveSegment);\n const genre = useDatePickerSelector((value) => value.genre);\n const isDisabled = useDatePickerSelector((value) => value.isDisabled);\n const isReadOnly = useDatePickerSelector((value) => value.isReadOnly);\n const toggle = useDatePickerSelector((value) => value.toggle);\n const type = useDatePickerSelector((value) => value.type);\n\n if (type === 'manual') {\n return null;\n }\n\n return (\n <Button\n genre={genre}\n size='small'\n isWidthAsHeight\n isFullRadius\n isFullSize\n isHiddenBorder\n isOnlyIcon\n icons={[{ name: 'Calendar', type: 'id' }]}\n isDisabled={isDisabled || isReadOnly}\n tabIndex={0}\n onFocus={(e) => {\n e.preventDefault();\n e.stopPropagation();\n clearActiveSegment();\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n toggle();\n }}\n />\n );\n});\n\nconst DatePickerPopover = memo(() => {\n const classNamePopover = useDatePickerSelector((value) => value.classNamePopover);\n const floatingStyles = useDatePickerSelector((value) => value.floatingStyles);\n const genre = useDatePickerSelector((value) => value.genre);\n const isOpen = useDatePickerSelector((value) => value.isOpen);\n const refFloating = useDatePickerSelector((value) => value.refFloating);\n const size = useDatePickerSelector((value) => value.size);\n const stylePopover = useDatePickerSelector((value) => value.stylePopover);\n\n return (\n <Popover\n style={stylePopover}\n className={classNamePopover}\n size={size}\n genre={genre}\n isOpen={isOpen}\n floatingStyles={floatingStyles}\n ref={refFloating}\n control='boxShadowSelect'\n isDisabledBoxShadow\n >\n <DatePickerDropdownList />\n </Popover>\n );\n});\n\nconst DatePickerDropdownList = memo(() => {\n return (\n <div className={setClasses([CSS_CLASS.component.datePicker.dropdownList])}>\n <DatePickerNavigation />\n <DatePickerDayGrid />\n </div>\n );\n});\n\nconst DatePickerNavigation = memo(() => {\n const dateMax = useDatePickerSelector((value) => value.dateMax);\n const dateMin = useDatePickerSelector((value) => value.dateMin);\n const genre = useDatePickerSelector((value) => value.genre);\n const isBlockNextMonth = useDatePickerSelector((value) => value.isBlockNextMonth);\n const isBlockPrevMonth = useDatePickerSelector((value) => value.isBlockPrevMonth);\n const localeMonths = useDatePickerSelector((value) => value.localeMonths);\n const monthSelectValue = useDatePickerSelector((value) => value.monthSelectValue);\n const onNextMonth = useDatePickerSelector((value) => value.onNextMonth);\n const onPrevMonth = useDatePickerSelector((value) => value.onPrevMonth);\n const onSelectMonthYear = useDatePickerSelector((value) => value.onSelectMonthYear);\n const refSelectMonth = useDatePickerSelector((value) => value.refSelectMonth);\n const refSelectYear = useDatePickerSelector((value) => value.refSelectYear);\n const yearSelectValue = useDatePickerSelector((value) => value.yearSelectValue);\n\n return (\n <Stack\n style={{\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <Button\n type='button'\n isFullRadius\n icons={[\n {\n name: 'Arrow2',\n type: 'id',\n turn: 90,\n },\n ]}\n isWidthAsHeight\n genre={genre}\n size='small'\n onClick={onPrevMonth}\n isHidden={isBlockPrevMonth}\n isDisabled={isBlockPrevMonth}\n />\n <Stack style={{ gap: '8px' }}>\n <SelectMonth\n isToggleWhenClickSelectListOption\n monthsLocale={localeMonths}\n genre={genre}\n size='small'\n value={monthSelectValue}\n isOnClickOptionClose\n isStayValueAfterSelect\n isOnlyColorInSelectListOption\n isCenter\n isShortLabel\n refFloating={refSelectMonth}\n onChange={onSelectMonthYear}\n dateMin={dateMin}\n dateMax={dateMax}\n style={{ width: '60px' }}\n />\n <SelectYear\n isToggleWhenClickSelectListOption\n genre={genre}\n size='small'\n refFloating={refSelectYear}\n value={yearSelectValue}\n onChange={onSelectMonthYear}\n isOnClickOptionClose\n isStayValueAfterSelect\n isOnlyColorInSelectListOption\n isCenter\n dateMin={dateMin}\n dateMax={dateMax}\n style={{ width: '60px' }}\n />\n </Stack>\n <Button\n type='button'\n onClick={onNextMonth}\n isWidthAsHeight\n isFullRadius\n icons={[\n {\n name: 'Arrow2',\n type: 'id',\n turn: -90,\n },\n ]}\n genre={genre}\n size='small'\n isDisabled={isBlockNextMonth}\n isHidden={isBlockNextMonth}\n />\n </Stack>\n );\n});\n\nconst DatePickerDayGrid = memo(() => {\n const classNameTypographyDay = useDatePickerSelector((value) => value.classNameTypographyDay);\n const daysInMonth = useDatePickerSelector((value) => value.daysInMonth);\n const daysInWeek = useDatePickerSelector((value) => value.daysInWeek);\n const rows = useDatePickerSelector((value) => value.rows);\n const styleTypographyDay = useDatePickerSelector((value) => value.styleTypographyDay);\n\n return (\n <div\n className={setClasses([CSS_CLASS.component.datePicker.dropdownListDays])}\n style={setStyles([\n {\n [CSS_VARS_RAW.component.datePicker.rows]: rows,\n },\n ])}\n >\n {daysInWeek.map((day) => (\n <div\n className={setClasses([\n CSS_CLASS.component.datePicker.dayOfWeek,\n classNameTypographyDay,\n CSS_CLASS.transition.color,\n ])}\n style={setStyles([\n styleTypographyDay,\n {\n [CSS_VARS_RAW.component.datePicker.row]: daysInMonth[0]?.weekOfMonth - 1,\n [CSS_VARS_RAW.component.datePicker.column]: day.index + 1,\n },\n ])}\n tabIndex={-1}\n key={`${day.label}-${day.index}`}\n >\n {day.label}\n </div>\n ))}\n {daysInMonth.map((day) => (\n <DatePickerDayCell\n day={day}\n classNameTypographyDay={classNameTypographyDay}\n styleTypographyDay={styleTypographyDay}\n key={day.value}\n />\n ))}\n </div>\n );\n});\n\ntype DatePickerDayCellProps = {\n classNameTypographyDay: string;\n day: IDatePickerDay;\n styleTypographyDay: CSSProperties | undefined;\n};\n\nconst DatePickerDayCell = memo((props: DatePickerDayCellProps) => {\n const { classNameTypographyDay, day, styleTypographyDay } = props;\n const onSelectDay = useDatePickerSelector((value) => value.onSelectDay);\n\n return (\n <div\n className={setClasses([\n CSS_CLASS.component.datePicker.day,\n classNameTypographyDay,\n CSS_CLASS.control[day.isDisabled || day.isChoice ? 'none' : 'boxShadow'],\n CSS_CLASS.transition.color,\n day.isDisabled && CSS_CLASS.component.datePicker.dayIsHidden,\n day.isToday && CSS_CLASS.component.datePicker.dayIsToday,\n day.isWeekend && CSS_CLASS.component.datePicker.dayIsWeekend,\n day.isChoice && CSS_CLASS.component.datePicker.dayIsChoice,\n !day.isCurrentMonth && CSS_CLASS.component.datePicker.dayIsNotCurrentMonth,\n ])}\n style={setStyles([\n styleTypographyDay,\n {\n [CSS_VARS_RAW.component.datePicker.row]: day.weekOfMonth + 1,\n [CSS_VARS_RAW.component.datePicker.column]: day.dayOfWeek,\n },\n ])}\n onClick={() => {\n if (!day.isDisabled) {\n onSelectDay(day.value);\n }\n }}\n tabIndex={day.isDisabled ? -1 : 0}\n >\n {day.labelNumber}\n </div>\n );\n});\n\nconst DatePickerError = memo(() => {\n const error = useDatePickerSelector((value) => value.error);\n const isError = useDatePickerSelector((value) => value.isError);\n const size = useDatePickerSelector((value) => value.size);\n\n if (!error?.isError && !isError) {\n return null;\n }\n\n return (\n <ErrorMessage\n size={error?.size ?? size}\n sxTypography={{ size: 16, weight: '400', ...error?.sxTypography }}\n {...(error ?? {})}\n />\n );\n});\n\nconst ISO_DATE_REGEX = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst SLASH_DATE_REGEX = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\n\nfunction getDigitKey(\n key: string,\n activeSegment: DatePickerVariant,\n input: DatePickerInput,\n setValue: (segment: DatePickerVariant, value: string) => void,\n onNextSegment: (segment: DatePickerVariant) => void,\n) {\n const current = input[activeSegment] ?? '';\n\n if (activeSegment === DatePickerVariant.YYYY) {\n setValue(activeSegment, current.length >= 4 ? key : current + key);\n return;\n }\n\n if (current.length >= 2 || current === '') {\n setValue(activeSegment, key);\n return;\n }\n\n const maxValue = activeSegment === DatePickerVariant.DD ? 31 : 12;\n const potential = current + key;\n const potentialNumber = Number(potential);\n\n if (potentialNumber > maxValue || potentialNumber === 0) {\n setValue(activeSegment, key);\n return;\n }\n\n setValue(activeSegment, potential);\n onNextSegment(activeSegment);\n}\n\nfunction getParseDateString(value: string) {\n if (ISO_DATE_REGEX.test(value)) {\n const [year, month, day] = value.split('-').map(Number);\n return getValidateDate(year, month, day);\n }\n\n const match = SLASH_DATE_REGEX.exec(value);\n if (match) {\n const p1 = match[1];\n const p2 = match[2];\n const p3 = match[3];\n const num1 = Number(p1);\n const num2 = Number(p2);\n const year = Number(p3);\n\n let month: number;\n let day: number;\n\n if (num1 > 12) {\n day = num1;\n month = num2;\n } else {\n month = num1;\n day = num2;\n }\n\n return getValidateDate(year, month, day);\n }\n\n return null;\n}\n\nfunction getValidateDate(year: number, month: number, day: number) {\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day) {\n return { year, month, day };\n }\n return null;\n}\n\nfunction getCountSevens(number: number) {\n const divisor = 7;\n const count = Math.floor(number / divisor);\n const remainder = number % divisor;\n\n return remainder > 0 ? count + 1 : count;\n}\n\nfunction getNextSegment(currentSegment: DatePickerVariant, mode: IDatePickerMode): DatePickerVariant | null {\n const currentIndex = mode.indexOf(currentSegment);\n return currentIndex < mode.length - 1 ? mode[currentIndex + 1] : mode[0];\n}\n\nfunction getPrevSegment(currentSegment: DatePickerVariant, mode: IDatePickerMode): DatePickerVariant | null {\n const currentIndex = mode.indexOf(currentSegment);\n return currentIndex > 0 ? mode[currentIndex - 1] : mode[mode.length - 1];\n}\n\nfunction getValidateInput(\n input: DatePickerInput,\n onSuccess?: (value: number) => void,\n onFailure?: () => void,\n onNan?: (isHasInput: boolean) => void,\n) {\n const dayStr = input.DD;\n const monthStr = input.MM;\n const yearStr = input.YYYY;\n\n const day = dayStr === '' ? NaN : Number(dayStr);\n const month = monthStr === '' ? NaN : Number(monthStr);\n const year = yearStr === '' ? NaN : Number(yearStr);\n\n const isHasInput = dayStr !== '' || monthStr !== '' || yearStr !== '';\n\n if (!Number.isNaN(day) && !Number.isNaN(month) && !Number.isNaN(year)) {\n const m = moment.utc(`${day}.${month}.${year}`, 'D.M.YYYY', true).startOf('day');\n if (m.isValid()) {\n onSuccess?.(m.valueOf());\n } else {\n onFailure?.();\n }\n } else {\n onNan?.(isHasInput);\n }\n}\n\nfunction isSameDatePickerInput(left: DatePickerInput, right: DatePickerInput) {\n return (\n left[DatePickerVariant.DD] === right[DatePickerVariant.DD] &&\n left[DatePickerVariant.MM] === right[DatePickerVariant.MM] &&\n left[DatePickerVariant.YYYY] === right[DatePickerVariant.YYYY]\n );\n}\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  const g=require("./chunk-Dd8m0Ver.cjs"),r=require("./utils-DCIq-5FL.cjs"),o=require("./functions-CZrZU5U0.cjs"),u=require("./motion-BWBldnsY.cjs"),S=require("./hooks-use-typography-styles.cjs.js");let s=require("react/jsx-runtime"),y=require("react");var _=e=>{const{className:n,style:i}=S.useTypographyStyles({sx:{size:"16px",weight:"700",height:"1",...e?.sxTypography},style:{order:0,display:"contents"}}),{className:l,style:a}=(0,y.useMemo)(()=>{const c=o.setClasses([r.CSS_CLASS.component.error.root,r.CSS_CLASS.transition.color,e.size&&e.isErrorAbsolute?r.CSS_CLASS.component.error.sizeAbsolute:r.CSS_CLASS.component.error.sizeDefault,e.className]),t={};return t[r.CSS_VARS_RAW.component.error.color]=r.CSS_VARS.palette.accentRedLight,t[r.CSS_VARS_RAW.component.error.padding]=e.size?r.CSS_VARS.size[e.size].padding:"0px",{className:c,style:o.setStyles([Object.keys(t).length?t:void 0,e.style])}},[e.className,e.style,e.size,e.isErrorAbsolute]);return(0,s.jsx)(s.Fragment,{children:e.errorMessage&&e.isError?(0,s.jsx)("div",{className:l,style:a,children:(0,s.jsx)("div",{className:n,style:i,children:(0,s.jsx)(u.MotionWordsPullUp,{text:e.errorMessage})})}):null})};Object.defineProperty(exports,"ErrorMessage",{enumerable:!0,get:function(){return _}});
2
2
 
3
- //# sourceMappingURL=error-BdFba_yV.cjs.map
3
+ //# sourceMappingURL=error-aQfsl_Kl.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-BdFba_yV.cjs","names":[],"sources":["../src/components/error/component.tsx"],"sourcesContent":["import { useTypographyStyles } from '@local/hooks/use-typography-styles';\nimport { MotionWordsPullUp } from '@local/styles/motion';\nimport { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { CSS_VARS_RAW } from '@local/styles/utils/constants';\nimport { setClasses, setStyles } from '@local/styles/utils/functions';\n\nimport { FC, useMemo } from 'react';\n\nimport { IErrorMessage } from './component.types';\n\nexport const ErrorMessage: FC<IErrorMessage> = (props) => {\n const { className: classNameTypography, style: styleTypography } = useTypographyStyles({\n sx: {\n size: '16px',\n weight: '700',\n height: '1',\n ...props?.sxTypography,\n },\n style: { order: 0, display: 'contents' },\n });\n\n const { className, style } = useMemo(() => {\n const className = setClasses([\n CSS_CLASS.component.error.root,\n CSS_CLASS.transition.color,\n props.size && props.isErrorAbsolute\n ? CSS_CLASS.component.error.sizeAbsolute\n : CSS_CLASS.component.error.sizeDefault,\n props.className,\n ]);\n\n const vars: Record<string, string> = {};\n\n vars[CSS_VARS_RAW.component.error.color] = CSS_VARS.palette.accentRedLight;\n vars[CSS_VARS_RAW.component.error.padding] = props.size ? CSS_VARS.size[props.size].padding : '0px';\n\n const style = setStyles([Object.keys(vars).length ? vars : undefined, props.style]);\n\n return { className, style };\n }, [props.className, props.style, props.size, props.isErrorAbsolute]);\n\n return (\n <>\n {props.errorMessage && props.isError ? (\n <div className={className} style={style}>\n <div className={classNameTypography} style={styleTypography}>\n <MotionWordsPullUp text={props.errorMessage} />\n </div>\n </div>\n ) : null}\n </>\n );\n};\n"],"mappings":"2PAUA,IAAa,EAAmC,GAAU,CACxD,KAAM,CAAE,UAAW,EAAqB,MAAO,CAAA,EAAoB,EAAA,oBAAoB,CACrF,GAAI,CACF,KAAM,OACN,OAAQ,MACR,OAAQ,IACR,GAAG,GAAO,cAEZ,MAAO,CAAE,MAAO,EAAG,QAAS,YAC7B,EAEK,CAAE,UAAA,EAAW,MAAA,CAAA,KAAA,EAAA,SAAA,IAAwB,CACzC,MAAM,EAAY,EAAA,WAAW,CAC3B,EAAA,UAAU,UAAU,MAAM,KAC1B,EAAA,UAAU,WAAW,MACrB,EAAM,MAAQ,EAAM,gBAChB,EAAA,UAAU,UAAU,MAAM,aAC1B,EAAA,UAAU,UAAU,MAAM,YAC9B,EAAM,UACP,EAEK,EAA+B,CAAA,EAErC,OAAA,EAAK,EAAA,aAAa,UAAU,MAAM,KAAA,EAAS,EAAA,SAAS,QAAQ,eAC5D,EAAK,EAAA,aAAa,UAAU,MAAM,OAAA,EAAW,EAAM,KAAO,EAAA,SAAS,KAAK,EAAM,IAAA,EAAM,QAAU,MAIvF,CAAE,UAAA,EAAW,MAFN,EAAA,UAAU,CAAC,OAAO,KAAK,CAAA,EAAM,OAAS,EAAO,OAAW,EAAM,KAAA,CAAM,IAGjF,CAAC,EAAM,UAAW,EAAM,MAAO,EAAM,KAAM,EAAM,gBAAgB,EAEpE,SACE,EAAA,KAAA,EAAA,SAAA,CAAA,SACG,EAAM,cAAgB,EAAM,WAC3B,EAAA,KAAC,MAAD,CAAgB,UAAA,EAAkB,MAAA,cAChC,EAAA,KAAC,MAAD,CAAK,UAAW,EAAqB,MAAO,cAC1C,EAAA,KAAC,EAAA,kBAAD,CAAmB,KAAM,EAAM,YAAA,CAAgB,EAC3C,EACF,EACJ,IAAA,CACH"}
1
+ {"version":3,"file":"error-aQfsl_Kl.cjs","names":[],"sources":["../src/components/error/component.tsx"],"sourcesContent":["import { useTypographyStyles } from '@local/hooks/use-typography-styles';\nimport { MotionWordsPullUp } from '@local/styles/motion';\nimport { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { CSS_VARS_RAW } from '@local/styles/utils/constants';\nimport { setClasses, setStyles } from '@local/styles/utils/functions';\n\nimport { FC, useMemo } from 'react';\n\nimport { IErrorMessage } from './component.types';\n\nexport const ErrorMessage: FC<IErrorMessage> = (props) => {\n const { className: classNameTypography, style: styleTypography } = useTypographyStyles({\n sx: {\n size: '16px',\n weight: '700',\n height: '1',\n ...props?.sxTypography,\n },\n style: { order: 0, display: 'contents' },\n });\n\n const { className, style } = useMemo(() => {\n const className = setClasses([\n CSS_CLASS.component.error.root,\n CSS_CLASS.transition.color,\n props.size && props.isErrorAbsolute\n ? CSS_CLASS.component.error.sizeAbsolute\n : CSS_CLASS.component.error.sizeDefault,\n props.className,\n ]);\n\n const vars: Record<string, string> = {};\n\n vars[CSS_VARS_RAW.component.error.color] = CSS_VARS.palette.accentRedLight;\n vars[CSS_VARS_RAW.component.error.padding] = props.size ? CSS_VARS.size[props.size].padding : '0px';\n\n const style = setStyles([Object.keys(vars).length ? vars : undefined, props.style]);\n\n return { className, style };\n }, [props.className, props.style, props.size, props.isErrorAbsolute]);\n\n return (\n <>\n {props.errorMessage && props.isError ? (\n <div className={className} style={style}>\n <div className={classNameTypography} style={styleTypography}>\n <MotionWordsPullUp text={props.errorMessage} />\n </div>\n </div>\n ) : null}\n </>\n );\n};\n"],"mappings":"2PAUA,IAAa,EAAmC,GAAU,CACxD,KAAM,CAAE,UAAW,EAAqB,MAAO,CAAA,EAAoB,EAAA,oBAAoB,CACrF,GAAI,CACF,KAAM,OACN,OAAQ,MACR,OAAQ,IACR,GAAG,GAAO,cAEZ,MAAO,CAAE,MAAO,EAAG,QAAS,YAC7B,EAEK,CAAE,UAAA,EAAW,MAAA,CAAA,KAAA,EAAA,SAAA,IAAwB,CACzC,MAAM,EAAY,EAAA,WAAW,CAC3B,EAAA,UAAU,UAAU,MAAM,KAC1B,EAAA,UAAU,WAAW,MACrB,EAAM,MAAQ,EAAM,gBAChB,EAAA,UAAU,UAAU,MAAM,aAC1B,EAAA,UAAU,UAAU,MAAM,YAC9B,EAAM,UACP,EAEK,EAA+B,CAAA,EAErC,OAAA,EAAK,EAAA,aAAa,UAAU,MAAM,KAAA,EAAS,EAAA,SAAS,QAAQ,eAC5D,EAAK,EAAA,aAAa,UAAU,MAAM,OAAA,EAAW,EAAM,KAAO,EAAA,SAAS,KAAK,EAAM,IAAA,EAAM,QAAU,MAIvF,CAAE,UAAA,EAAW,MAFN,EAAA,UAAU,CAAC,OAAO,KAAK,CAAA,EAAM,OAAS,EAAO,OAAW,EAAM,KAAA,CAAM,IAGjF,CAAC,EAAM,UAAW,EAAM,MAAO,EAAM,KAAM,EAAM,gBAAgB,EAEpE,SACE,EAAA,KAAA,EAAA,SAAA,CAAA,SACG,EAAM,cAAgB,EAAM,WAC3B,EAAA,KAAC,MAAD,CAAgB,UAAA,EAAkB,MAAA,cAChC,EAAA,KAAC,MAAD,CAAK,UAAW,EAAqB,MAAO,cAC1C,EAAA,KAAC,EAAA,kBAAD,CAAmB,KAAM,EAAM,YAAA,CAAgB,EAC3C,EACF,EACJ,IAAA,CACH"}
@@ -47,4 +47,4 @@ export {
47
47
  C as t
48
48
  };
49
49
 
50
- //# sourceMappingURL=error-BFb2NCum.js.map
50
+ //# sourceMappingURL=error-iaB6e_aq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-BFb2NCum.js","names":[],"sources":["../src/components/error/component.tsx"],"sourcesContent":["import { useTypographyStyles } from '@local/hooks/use-typography-styles';\nimport { MotionWordsPullUp } from '@local/styles/motion';\nimport { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { CSS_VARS_RAW } from '@local/styles/utils/constants';\nimport { setClasses, setStyles } from '@local/styles/utils/functions';\n\nimport { FC, useMemo } from 'react';\n\nimport { IErrorMessage } from './component.types';\n\nexport const ErrorMessage: FC<IErrorMessage> = (props) => {\n const { className: classNameTypography, style: styleTypography } = useTypographyStyles({\n sx: {\n size: '16px',\n weight: '700',\n height: '1',\n ...props?.sxTypography,\n },\n style: { order: 0, display: 'contents' },\n });\n\n const { className, style } = useMemo(() => {\n const className = setClasses([\n CSS_CLASS.component.error.root,\n CSS_CLASS.transition.color,\n props.size && props.isErrorAbsolute\n ? CSS_CLASS.component.error.sizeAbsolute\n : CSS_CLASS.component.error.sizeDefault,\n props.className,\n ]);\n\n const vars: Record<string, string> = {};\n\n vars[CSS_VARS_RAW.component.error.color] = CSS_VARS.palette.accentRedLight;\n vars[CSS_VARS_RAW.component.error.padding] = props.size ? CSS_VARS.size[props.size].padding : '0px';\n\n const style = setStyles([Object.keys(vars).length ? vars : undefined, props.style]);\n\n return { className, style };\n }, [props.className, props.style, props.size, props.isErrorAbsolute]);\n\n return (\n <>\n {props.errorMessage && props.isError ? (\n <div className={className} style={style}>\n <div className={classNameTypography} style={styleTypography}>\n <MotionWordsPullUp text={props.errorMessage} />\n </div>\n </div>\n ) : null}\n </>\n );\n};\n"],"mappings":";;;;;;AAUA,IAAa,IAAA,CAAmC,MAAU;AACxD,QAAM,EAAE,WAAW,GAAqB,OAAO,EAAA,IAAoB,EAAoB;AAAA,IACrF,IAAI;AAAA,MACF,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,GAAG,GAAO;AAAA;IAEZ,OAAO;AAAA,MAAE,OAAO;AAAA,MAAG,SAAS;AAAA;GAC7B,GAEK,EAAE,WAAA,GAAW,OAAA,EAAA,IAAU,EAAA,MAAc;AACzC,UAAM,IAAY,EAAW;AAAA,MAC3B,EAAU,UAAU,MAAM;AAAA,MAC1B,EAAU,WAAW;AAAA,MACrB,EAAM,QAAQ,EAAM,kBAChB,EAAU,UAAU,MAAM,eAC1B,EAAU,UAAU,MAAM;AAAA,MAC9B,EAAM;AAAA,KACP,GAEK,IAA+B,CAAA;AAErC,WAAA,EAAK,EAAa,UAAU,MAAM,KAAA,IAAS,EAAS,QAAQ,gBAC5D,EAAK,EAAa,UAAU,MAAM,OAAA,IAAW,EAAM,OAAO,EAAS,KAAK,EAAM,IAAA,EAAM,UAAU,OAIvF;AAAA,MAAE,WAAA;AAAA,MAAW,OAFN,EAAU,CAAC,OAAO,KAAK,CAAA,EAAM,SAAS,IAAO,QAAW,EAAM,KAAA,CAAM;AAAA;KAGjF;AAAA,IAAC,EAAM;AAAA,IAAW,EAAM;AAAA,IAAO,EAAM;AAAA,IAAM,EAAM;AAAA,GAAgB;AAEpE,SACE,gBAAA,EAAA,GAAA,EAAA,UACG,EAAM,gBAAgB,EAAM,UAC3B,gBAAA,EAAC,OAAD;AAAA,IAAgB,WAAA;AAAA,IAAkB,OAAA;AAAA,cAChC,gBAAA,EAAC,OAAD;AAAA,MAAK,WAAW;AAAA,MAAqB,OAAO;AAAA,gBAC1C,gBAAA,EAAC,GAAD,EAAmB,MAAM,EAAM,aAAA,CAAgB;AAAA,KAC3C;AAAA,GACF,IACJ,KAAA,CACH"}
1
+ {"version":3,"file":"error-iaB6e_aq.js","names":[],"sources":["../src/components/error/component.tsx"],"sourcesContent":["import { useTypographyStyles } from '@local/hooks/use-typography-styles';\nimport { MotionWordsPullUp } from '@local/styles/motion';\nimport { CSS_CLASS, CSS_VARS } from '@local/styles/utils';\nimport { CSS_VARS_RAW } from '@local/styles/utils/constants';\nimport { setClasses, setStyles } from '@local/styles/utils/functions';\n\nimport { FC, useMemo } from 'react';\n\nimport { IErrorMessage } from './component.types';\n\nexport const ErrorMessage: FC<IErrorMessage> = (props) => {\n const { className: classNameTypography, style: styleTypography } = useTypographyStyles({\n sx: {\n size: '16px',\n weight: '700',\n height: '1',\n ...props?.sxTypography,\n },\n style: { order: 0, display: 'contents' },\n });\n\n const { className, style } = useMemo(() => {\n const className = setClasses([\n CSS_CLASS.component.error.root,\n CSS_CLASS.transition.color,\n props.size && props.isErrorAbsolute\n ? CSS_CLASS.component.error.sizeAbsolute\n : CSS_CLASS.component.error.sizeDefault,\n props.className,\n ]);\n\n const vars: Record<string, string> = {};\n\n vars[CSS_VARS_RAW.component.error.color] = CSS_VARS.palette.accentRedLight;\n vars[CSS_VARS_RAW.component.error.padding] = props.size ? CSS_VARS.size[props.size].padding : '0px';\n\n const style = setStyles([Object.keys(vars).length ? vars : undefined, props.style]);\n\n return { className, style };\n }, [props.className, props.style, props.size, props.isErrorAbsolute]);\n\n return (\n <>\n {props.errorMessage && props.isError ? (\n <div className={className} style={style}>\n <div className={classNameTypography} style={styleTypography}>\n <MotionWordsPullUp text={props.errorMessage} />\n </div>\n </div>\n ) : null}\n </>\n );\n};\n"],"mappings":";;;;;;AAUA,IAAa,IAAA,CAAmC,MAAU;AACxD,QAAM,EAAE,WAAW,GAAqB,OAAO,EAAA,IAAoB,EAAoB;AAAA,IACrF,IAAI;AAAA,MACF,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,GAAG,GAAO;AAAA;IAEZ,OAAO;AAAA,MAAE,OAAO;AAAA,MAAG,SAAS;AAAA;GAC7B,GAEK,EAAE,WAAA,GAAW,OAAA,EAAA,IAAU,EAAA,MAAc;AACzC,UAAM,IAAY,EAAW;AAAA,MAC3B,EAAU,UAAU,MAAM;AAAA,MAC1B,EAAU,WAAW;AAAA,MACrB,EAAM,QAAQ,EAAM,kBAChB,EAAU,UAAU,MAAM,eAC1B,EAAU,UAAU,MAAM;AAAA,MAC9B,EAAM;AAAA,KACP,GAEK,IAA+B,CAAA;AAErC,WAAA,EAAK,EAAa,UAAU,MAAM,KAAA,IAAS,EAAS,QAAQ,gBAC5D,EAAK,EAAa,UAAU,MAAM,OAAA,IAAW,EAAM,OAAO,EAAS,KAAK,EAAM,IAAA,EAAM,UAAU,OAIvF;AAAA,MAAE,WAAA;AAAA,MAAW,OAFN,EAAU,CAAC,OAAO,KAAK,CAAA,EAAM,SAAS,IAAO,QAAW,EAAM,KAAA,CAAM;AAAA;KAGjF;AAAA,IAAC,EAAM;AAAA,IAAW,EAAM;AAAA,IAAO,EAAM;AAAA,IAAM,EAAM;AAAA,GAAgB;AAEpE,SACE,gBAAA,EAAA,GAAA,EAAA,UACG,EAAM,gBAAgB,EAAM,UAC3B,gBAAA,EAAC,OAAD;AAAA,IAAgB,WAAA;AAAA,IAAkB,OAAA;AAAA,cAChC,gBAAA,EAAC,OAAD;AAAA,MAAK,WAAW;AAAA,MAAqB,OAAO;AAAA,gBAC1C,gBAAA,EAAC,GAAD,EAAmB,MAAM,EAAM,aAAA,CAAgB;AAAA,KAC3C;AAAA,GACF,IACJ,KAAA,CACH"}
@@ -0,0 +1,2 @@
1
+ export * from './use';
2
+ export * from './use.types';
@@ -0,0 +1,2 @@
1
+ import { IUseFps, IUseFpsResult } from './use.types';
2
+ export declare function useFps(props?: IUseFps): IUseFpsResult;
@@ -0,0 +1,10 @@
1
+ export type IUseFps = {
2
+ isEnabled?: boolean;
3
+ precision?: number;
4
+ updateInterval?: number;
5
+ };
6
+ export type IUseFpsResult = {
7
+ fps: number;
8
+ frameTime: number;
9
+ isSupported: boolean;
10
+ };
@@ -1,3 +1,3 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./chunk-Dd8m0Ver.cjs"),t=require("./isEqual-BA0P9-C8.cjs");let i=require("react");var o=u.__toESM(t.require_isEqual(),1),n=e=>{const r=(0,i.useRef)(e);return(0,o.default)(e,r.current)||(r.current=e),r.current};exports.useDeepCompareMemoize=n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./chunk-Dd8m0Ver.cjs"),t=require("./isEqual-Q-mEN2md.cjs");let i=require("react");var o=u.__toESM(t.require_isEqual(),1),n=e=>{const r=(0,i.useRef)(e);return(0,o.default)(e,r.current)||(r.current=e),r.current};exports.useDeepCompareMemoize=n;
2
2
 
3
3
  //# sourceMappingURL=hooks-use-deep-compare-memoize.cjs.js.map
@@ -1,5 +1,5 @@
1
1
  import { o } from "./chunk-cI0lbGMq.js";
2
- import { t } from "./isEqual-0jZ23Bb6.js";
2
+ import { t } from "./isEqual-BHn_Fkkw.js";
3
3
  import { useRef as i } from "react";
4
4
  var m = /* @__PURE__ */ o(t(), 1), s = (r) => {
5
5
  const e = i(r);
@@ -1,3 +1,3 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./chunk-Dd8m0Ver.cjs"),s=require("./isEqual-BA0P9-C8.cjs");let n=require("react");var i=o.__toESM(s.require_isEqual(),1);function l(c,t){const e=(0,n.useRef)(void 0),r=(0,n.useRef)(void 0),u=c();return!r.current||!(0,i.default)(r.current,t)?(r.current=t,e.current=u):(0,i.default)(e.current,u)||(e.current=u),e.current}exports.useDeepMemo=l;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./chunk-Dd8m0Ver.cjs"),s=require("./isEqual-Q-mEN2md.cjs");let n=require("react");var i=o.__toESM(s.require_isEqual(),1);function l(c,t){const e=(0,n.useRef)(void 0),r=(0,n.useRef)(void 0),u=c();return!r.current||!(0,i.default)(r.current,t)?(r.current=t,e.current=u):(0,i.default)(e.current,u)||(e.current=u),e.current}exports.useDeepMemo=l;
2
2
 
3
3
  //# sourceMappingURL=hooks-use-deep-memo.cjs.js.map
@@ -1,5 +1,5 @@
1
1
  import { o as c } from "./chunk-cI0lbGMq.js";
2
- import { t as f } from "./isEqual-0jZ23Bb6.js";
2
+ import { t as f } from "./isEqual-BHn_Fkkw.js";
3
3
  import { useRef as o } from "react";
4
4
  var n = /* @__PURE__ */ c(f(), 1);
5
5
  function l(i, u) {
@@ -0,0 +1,3 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("./chunk-Dd8m0Ver.cjs");let p=require("react");var w=500,A=100,T=3,I={fps:0,frameTime:0,isSupported:!1};function E(r){const o=r?.isEnabled??!0,u=Math.max(r?.updateInterval??w,A),s=Math.min(Math.max(Math.trunc(r?.precision??0),0),T),[l,f]=(0,p.useState)(I);return(0,p.useEffect)(()=>{const a=typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&typeof window.cancelAnimationFrame=="function"&&typeof performance<"u"&&typeof performance.now=="function";if(!a||!o){f(e=>e.fps===0&&e.frameTime===0&&e.isSupported===a?e:{fps:0,frameTime:0,isSupported:a});return}const c=e=>{const t=10**s;return Math.round(e*t)/t};let i=0,n=0,m=performance.now();const d=e=>{n+=1;const t=e-m;t>=u&&(f({fps:c(n*1e3/t),frameTime:c(t/n),isSupported:!0}),n=0,m=e),i=window.requestAnimationFrame(d)};return i=window.requestAnimationFrame(d),()=>{window.cancelAnimationFrame(i)}},[o,s,u]),l}exports.useFps=E;
2
+
3
+ //# sourceMappingURL=hooks-use-fps.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-use-fps.cjs.js","names":[],"sources":["../src/hooks/use-fps/use.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { IUseFps, IUseFpsResult } from './use.types';\n\nconst DEFAULT_UPDATE_INTERVAL = 500;\nconst MIN_UPDATE_INTERVAL = 100;\nconst MAX_PRECISION = 3;\n\nconst INITIAL_RESULT: IUseFpsResult = {\n fps: 0,\n frameTime: 0,\n isSupported: false,\n};\n\nexport function useFps(props?: IUseFps): IUseFpsResult {\n const isEnabled = props?.isEnabled ?? true;\n const updateInterval = Math.max(props?.updateInterval ?? DEFAULT_UPDATE_INTERVAL, MIN_UPDATE_INTERVAL);\n const precision = Math.min(Math.max(Math.trunc(props?.precision ?? 0), 0), MAX_PRECISION);\n const [result, setResult] = useState<IUseFpsResult>(INITIAL_RESULT);\n\n useEffect(() => {\n const isSupported =\n typeof window !== 'undefined' &&\n typeof window.requestAnimationFrame === 'function' &&\n typeof window.cancelAnimationFrame === 'function' &&\n typeof performance !== 'undefined' &&\n typeof performance.now === 'function';\n\n if (!isSupported || !isEnabled) {\n setResult((prev) =>\n prev.fps === 0 && prev.frameTime === 0 && prev.isSupported === isSupported\n ? prev\n : { fps: 0, frameTime: 0, isSupported },\n );\n return;\n }\n\n const round = (value: number) => {\n const multiplier = 10 ** precision;\n return Math.round(value * multiplier) / multiplier;\n };\n\n let animationFrameId = 0;\n let frameCount = 0;\n let startedAt = performance.now();\n\n const update = (timestamp: number) => {\n frameCount += 1;\n\n const elapsed = timestamp - startedAt;\n\n if (elapsed >= updateInterval) {\n setResult({\n fps: round((frameCount * 1000) / elapsed),\n frameTime: round(elapsed / frameCount),\n isSupported: true,\n });\n\n frameCount = 0;\n startedAt = timestamp;\n }\n\n animationFrameId = window.requestAnimationFrame(update);\n };\n\n animationFrameId = window.requestAnimationFrame(update);\n\n return () => {\n window.cancelAnimationFrame(animationFrameId);\n };\n }, [isEnabled, precision, updateInterval]);\n\n return result;\n}\n"],"mappings":"kIAIA,IAAM,EAA0B,IAC1B,EAAsB,IACtB,EAAgB,EAEhB,EAAgC,CACpC,IAAK,EACL,UAAW,EACX,YAAa,IAGf,SAAgB,EAAO,EAAgC,CACrD,MAAM,EAAY,GAAO,WAAa,GAChC,EAAiB,KAAK,IAAI,GAAO,gBAAkB,EAAyB,CAAA,EAC5E,EAAY,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,GAAO,WAAa,CAAA,EAAI,CAAA,EAAI,CAAA,EACrE,CAAC,EAAQ,CAAA,KAAA,EAAA,UAAqC,CAAA,EAEpD,SAAA,EAAA,WAAA,IAAgB,CACd,MAAM,EACJ,OAAO,OAAW,KAClB,OAAO,OAAO,uBAA0B,YACxC,OAAO,OAAO,sBAAyB,YACvC,OAAO,YAAgB,KACvB,OAAO,YAAY,KAAQ,WAE7B,GAAI,CAAC,GAAe,CAAC,EAAW,CAC9B,EAAW,GACT,EAAK,MAAQ,GAAK,EAAK,YAAc,GAAK,EAAK,cAAgB,EAC3D,EACA,CAAE,IAAK,EAAG,UAAW,EAAG,YAAA,EAAa,EAE3C,OAGF,MAAM,EAAS,GAAkB,CAC/B,MAAM,EAAa,IAAM,EACzB,OAAO,KAAK,MAAM,EAAQ,CAAA,EAAc,GAG1C,IAAI,EAAmB,EACnB,EAAa,EACb,EAAY,YAAY,IAAA,EAE5B,MAAM,EAAU,GAAsB,CACpC,GAAc,EAEd,MAAM,EAAU,EAAY,EAExB,GAAW,IACb,EAAU,CACR,IAAK,EAAO,EAAa,IAAQ,CAAA,EACjC,UAAW,EAAM,EAAU,CAAA,EAC3B,YAAa,GACd,EAED,EAAa,EACb,EAAY,GAGd,EAAmB,OAAO,sBAAsB,CAAA,GAGlD,OAAA,EAAmB,OAAO,sBAAsB,CAAA,EAEhD,IAAa,CACX,OAAO,qBAAqB,CAAA,IAE7B,CAAC,EAAW,EAAW,EAAe,EAElC"}
@@ -0,0 +1,2 @@
1
+ export * from './hooks/use-fps/index'
2
+ export {}
@@ -0,0 +1,46 @@
1
+ import { useEffect as l, useState as w } from "react";
2
+ var A = 500, I = 100, T = 3, E = {
3
+ fps: 0,
4
+ frameTime: 0,
5
+ isSupported: !1
6
+ };
7
+ function M(r) {
8
+ const i = r?.isEnabled ?? !0, u = Math.max(r?.updateInterval ?? A, I), s = Math.min(Math.max(Math.trunc(r?.precision ?? 0), 0), T), [p, f] = w(E);
9
+ return l(() => {
10
+ const o = typeof window < "u" && typeof window.requestAnimationFrame == "function" && typeof window.cancelAnimationFrame == "function" && typeof performance < "u" && typeof performance.now == "function";
11
+ if (!o || !i) {
12
+ f((e) => e.fps === 0 && e.frameTime === 0 && e.isSupported === o ? e : {
13
+ fps: 0,
14
+ frameTime: 0,
15
+ isSupported: o
16
+ });
17
+ return;
18
+ }
19
+ const m = (e) => {
20
+ const t = 10 ** s;
21
+ return Math.round(e * t) / t;
22
+ };
23
+ let a = 0, n = 0, c = performance.now();
24
+ const d = (e) => {
25
+ n += 1;
26
+ const t = e - c;
27
+ t >= u && (f({
28
+ fps: m(n * 1e3 / t),
29
+ frameTime: m(t / n),
30
+ isSupported: !0
31
+ }), n = 0, c = e), a = window.requestAnimationFrame(d);
32
+ };
33
+ return a = window.requestAnimationFrame(d), () => {
34
+ window.cancelAnimationFrame(a);
35
+ };
36
+ }, [
37
+ i,
38
+ s,
39
+ u
40
+ ]), p;
41
+ }
42
+ export {
43
+ M as useFps
44
+ };
45
+
46
+ //# sourceMappingURL=hooks-use-fps.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-use-fps.es.js","names":[],"sources":["../src/hooks/use-fps/use.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { IUseFps, IUseFpsResult } from './use.types';\n\nconst DEFAULT_UPDATE_INTERVAL = 500;\nconst MIN_UPDATE_INTERVAL = 100;\nconst MAX_PRECISION = 3;\n\nconst INITIAL_RESULT: IUseFpsResult = {\n fps: 0,\n frameTime: 0,\n isSupported: false,\n};\n\nexport function useFps(props?: IUseFps): IUseFpsResult {\n const isEnabled = props?.isEnabled ?? true;\n const updateInterval = Math.max(props?.updateInterval ?? DEFAULT_UPDATE_INTERVAL, MIN_UPDATE_INTERVAL);\n const precision = Math.min(Math.max(Math.trunc(props?.precision ?? 0), 0), MAX_PRECISION);\n const [result, setResult] = useState<IUseFpsResult>(INITIAL_RESULT);\n\n useEffect(() => {\n const isSupported =\n typeof window !== 'undefined' &&\n typeof window.requestAnimationFrame === 'function' &&\n typeof window.cancelAnimationFrame === 'function' &&\n typeof performance !== 'undefined' &&\n typeof performance.now === 'function';\n\n if (!isSupported || !isEnabled) {\n setResult((prev) =>\n prev.fps === 0 && prev.frameTime === 0 && prev.isSupported === isSupported\n ? prev\n : { fps: 0, frameTime: 0, isSupported },\n );\n return;\n }\n\n const round = (value: number) => {\n const multiplier = 10 ** precision;\n return Math.round(value * multiplier) / multiplier;\n };\n\n let animationFrameId = 0;\n let frameCount = 0;\n let startedAt = performance.now();\n\n const update = (timestamp: number) => {\n frameCount += 1;\n\n const elapsed = timestamp - startedAt;\n\n if (elapsed >= updateInterval) {\n setResult({\n fps: round((frameCount * 1000) / elapsed),\n frameTime: round(elapsed / frameCount),\n isSupported: true,\n });\n\n frameCount = 0;\n startedAt = timestamp;\n }\n\n animationFrameId = window.requestAnimationFrame(update);\n };\n\n animationFrameId = window.requestAnimationFrame(update);\n\n return () => {\n window.cancelAnimationFrame(animationFrameId);\n };\n }, [isEnabled, precision, updateInterval]);\n\n return result;\n}\n"],"mappings":";AAIA,IAAM,IAA0B,KAC1B,IAAsB,KACtB,IAAgB,GAEhB,IAAgC;AAAA,EACpC,KAAK;AAAA,EACL,WAAW;AAAA,EACX,aAAa;;AAGf,SAAgB,EAAO,GAAgC;AACrD,QAAM,IAAY,GAAO,aAAa,IAChC,IAAiB,KAAK,IAAI,GAAO,kBAAkB,GAAyB,CAAA,GAC5E,IAAY,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,GAAO,aAAa,CAAA,GAAI,CAAA,GAAI,CAAA,GACrE,CAAC,GAAQ,CAAA,IAAa,EAAwB,CAAA;AAEpD,SAAA,EAAA,MAAgB;AACd,UAAM,IACJ,OAAO,SAAW,OAClB,OAAO,OAAO,yBAA0B,cACxC,OAAO,OAAO,wBAAyB,cACvC,OAAO,cAAgB,OACvB,OAAO,YAAY,OAAQ;AAE7B,QAAI,CAAC,KAAe,CAAC,GAAW;AAC9B,MAAA,EAAA,CAAW,MACT,EAAK,QAAQ,KAAK,EAAK,cAAc,KAAK,EAAK,gBAAgB,IAC3D,IACA;AAAA,QAAE,KAAK;AAAA,QAAG,WAAW;AAAA,QAAG,aAAA;AAAA,OAAa;AAE3C;AAAA;AAGF,UAAM,IAAA,CAAS,MAAkB;AAC/B,YAAM,IAAa,MAAM;AACzB,aAAO,KAAK,MAAM,IAAQ,CAAA,IAAc;AAAA;AAG1C,QAAI,IAAmB,GACnB,IAAa,GACb,IAAY,YAAY,IAAA;AAE5B,UAAM,IAAA,CAAU,MAAsB;AACpC,MAAA,KAAc;AAEd,YAAM,IAAU,IAAY;AAE5B,MAAI,KAAW,MACb,EAAU;AAAA,QACR,KAAK,EAAO,IAAa,MAAQ,CAAA;AAAA,QACjC,WAAW,EAAM,IAAU,CAAA;AAAA,QAC3B,aAAa;AAAA,OACd,GAED,IAAa,GACb,IAAY,IAGd,IAAmB,OAAO,sBAAsB,CAAA;AAAA;AAGlD,WAAA,IAAmB,OAAO,sBAAsB,CAAA,GAEhD,MAAa;AACX,aAAO,qBAAqB,CAAA;AAAA;KAE7B;AAAA,IAAC;AAAA,IAAW;AAAA,IAAW;AAAA,GAAe,GAElC"}
@@ -1,3 +1,3 @@
1
- const V=require("./chunk-Dd8m0Ver.cjs"),t=require("./utils-DCIq-5FL.cjs"),m=require("./functions-CZrZU5U0.cjs"),_=require("./skeleton-DmaXsm9C.cjs");require("./logger-D3Xu5ef3.cjs");let S=require("react/jsx-runtime"),s=require("react");var A="1.3.0",a=new Map;function M(e){const[n,l]=(0,s.useState)(!1),[g,c]=(0,s.useState)(null);return(0,s.useEffect)(()=>{let u=!0;const r=a.get(e);if(r?.loaded){l(!0),c(r.error??null);return}let f;if(r)f=r.promise;else{const o=(async()=>{const i=await fetch(e);if(!i.ok)throw new Error(`Failed to load sprite: ${e}`);const C=await i.text(),d=document.createElement("div");d.style.display="none",d.innerHTML=C,document.body.prepend(d)})();a.set(e,{promise:o,loaded:!1}),o.then(()=>{const i=a.get(e);a.set(e,{...i,promise:o,loaded:!0})}).catch(i=>{const C=i instanceof Error?i:new Error(String(i)),d=a.get(e);a.set(e,{...d,promise:o,loaded:!0,error:C})}),f=o}return f.then(()=>{if(!u)return;const o=a.get(e);l(o?.loaded??!0),c(o?.error??null)}).catch(()=>{}),()=>{u=!1}},[e]),{loaded:n,error:g}}var y=e=>{const n=(0,s.useMemo)(()=>h({type:e.type,name:e.name}),[e.name,e.type]),{loaded:l,error:g}=M((0,s.useMemo)(()=>w({type:e.type}),[e.type])),c=(0,s.useMemo)(()=>({className:m.setClasses([t.CSS_CLASS.component.icon.skeleton,e.className]),style:m.setStyles([{[t.CSS_VARS_RAW.component.icon.skeletonHeightIcon]:e.size!=="100%"?t.CSS_VARS.size[e.size].heightIcon:"100%",[t.CSS_VARS_RAW.component.icon.skeletonOrder]:e.order?String(e.order):"initial"},e.style])}),[e.className,e.style,e.order,e.size]),u=(0,s.useMemo)(()=>({className:m.setClasses([t.CSS_CLASS.component.icon.root,t.CSS_CLASS.transition.icon,e.className]),style:m.setStyles([{[t.CSS_VARS_RAW.component.icon.color]:e.color?t.CSS_VARS.palette[e.color]:"inherit",[t.CSS_VARS_RAW.component.icon.heightIcon]:e.size!=="100%"?t.CSS_VARS.size[e.size].heightIcon:"100%",[t.CSS_VARS_RAW.component.icon.turn]:e.turn?`${e.turn}deg`:"0deg",[t.CSS_VARS_RAW.component.icon.order]:e.order?String(e.order):"initial"},e.style])}),[e.className,e.style,e.order,e.size,e.color,e.turn]);return!l||g?(0,S.jsx)(_.Skeleton,{color:e.color??void 0,className:c.className,style:c.style,visible:!1}):(0,S.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",className:u.className,style:u.style,onClick:e.onClick,onKeyDown:r=>{e.onClick&&(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),e.onClick(r))},tabIndex:e.tabIndex,role:e.onClick?"button":void 0,children:[(0,S.jsx)("title",{children:e.name}),(0,S.jsx)("use",{href:n})]})};function h(e){return`#${e.type}-${e.name}`}function w(e){return`https://cdn.jsdelivr.net/gh/jenesei-software/jenesei-id-assets@${A}/icons/${e.type}.svg`}var k=["Close","Biometry","Qr","Search","Folder","Wallet","Graph","Bookmark","Browser","Category","Home","Notification","Chat","Heart","Paper","Plus","Minus","PaperPlus","PaperNegative","PaperFail","PaperDownload","PaperUpload","Send","Password","Swap","Work","Arrow1","Arrow2","Arrow3","Arrow4","ArrowMini1","ArrowMini2","Scan","Activity","Calendar","Message","PlusMini","ChartMini","Game","Bag1","Bag2","TicketStar","MoreCircle","MoreSquare","Discount","Buy","Web","InfoMini","DangerMini","CloseMini","TickMini","Video","Discovery","Location","Document","Setting","Time","VolumeUp","VolumeDown","VolumeOff","Star","Select","Ticket","Camera","Profile","AddUser","TwoUser","ThreeUser","Login","Logout","Download","Upload","Voice1","Voice2","Delete","Edit","PlayMini","ShieldDone","ShieldFail","Show","Hide","Filter1","Filter2","Image","Call","Calling","CallMissed","CallSilent","Lock","Unlock","Resources","Language"],v=["Radio-true","Radio-false","Square-true","Square-false","Heart-true","Heart-false","Arrow"],E=["Line","Blocks","Balls"],I=["Jenesei","BustMarket"],P={id:k,checkbox:v,loading:E,logo:I};function R(e){return(e.icons??[])?.filter(n=>!n.isHidden)?.map((n,l)=>(0,S.jsx)(y,{size:n?.size??e.size,...n},`${n.type}-${n.name}-${l}`))}Object.defineProperty(exports,"Icon",{enumerable:!0,get:function(){return y}});Object.defineProperty(exports,"THEME_MAP",{enumerable:!0,get:function(){return P}});Object.defineProperty(exports,"getIconComponents",{enumerable:!0,get:function(){return R}});
1
+ const V=require("./chunk-Dd8m0Ver.cjs"),t=require("./utils-DCIq-5FL.cjs"),m=require("./functions-CZrZU5U0.cjs"),_=require("./skeleton-BfOHjRgT.cjs");require("./logger-D3Xu5ef3.cjs");let S=require("react/jsx-runtime"),s=require("react");var A="1.3.0",a=new Map;function M(e){const[n,l]=(0,s.useState)(!1),[g,c]=(0,s.useState)(null);return(0,s.useEffect)(()=>{let u=!0;const r=a.get(e);if(r?.loaded){l(!0),c(r.error??null);return}let f;if(r)f=r.promise;else{const o=(async()=>{const i=await fetch(e);if(!i.ok)throw new Error(`Failed to load sprite: ${e}`);const C=await i.text(),d=document.createElement("div");d.style.display="none",d.innerHTML=C,document.body.prepend(d)})();a.set(e,{promise:o,loaded:!1}),o.then(()=>{const i=a.get(e);a.set(e,{...i,promise:o,loaded:!0})}).catch(i=>{const C=i instanceof Error?i:new Error(String(i)),d=a.get(e);a.set(e,{...d,promise:o,loaded:!0,error:C})}),f=o}return f.then(()=>{if(!u)return;const o=a.get(e);l(o?.loaded??!0),c(o?.error??null)}).catch(()=>{}),()=>{u=!1}},[e]),{loaded:n,error:g}}var y=e=>{const n=(0,s.useMemo)(()=>h({type:e.type,name:e.name}),[e.name,e.type]),{loaded:l,error:g}=M((0,s.useMemo)(()=>w({type:e.type}),[e.type])),c=(0,s.useMemo)(()=>({className:m.setClasses([t.CSS_CLASS.component.icon.skeleton,e.className]),style:m.setStyles([{[t.CSS_VARS_RAW.component.icon.skeletonHeightIcon]:e.size!=="100%"?t.CSS_VARS.size[e.size].heightIcon:"100%",[t.CSS_VARS_RAW.component.icon.skeletonOrder]:e.order?String(e.order):"initial"},e.style])}),[e.className,e.style,e.order,e.size]),u=(0,s.useMemo)(()=>({className:m.setClasses([t.CSS_CLASS.component.icon.root,t.CSS_CLASS.transition.icon,e.className]),style:m.setStyles([{[t.CSS_VARS_RAW.component.icon.color]:e.color?t.CSS_VARS.palette[e.color]:"inherit",[t.CSS_VARS_RAW.component.icon.heightIcon]:e.size!=="100%"?t.CSS_VARS.size[e.size].heightIcon:"100%",[t.CSS_VARS_RAW.component.icon.turn]:e.turn?`${e.turn}deg`:"0deg",[t.CSS_VARS_RAW.component.icon.order]:e.order?String(e.order):"initial"},e.style])}),[e.className,e.style,e.order,e.size,e.color,e.turn]);return!l||g?(0,S.jsx)(_.Skeleton,{color:e.color??void 0,className:c.className,style:c.style,visible:!1}):(0,S.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",className:u.className,style:u.style,onClick:e.onClick,onKeyDown:r=>{e.onClick&&(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),e.onClick(r))},tabIndex:e.tabIndex,role:e.onClick?"button":void 0,children:[(0,S.jsx)("title",{children:e.name}),(0,S.jsx)("use",{href:n})]})};function h(e){return`#${e.type}-${e.name}`}function w(e){return`https://cdn.jsdelivr.net/gh/jenesei-software/jenesei-id-assets@${A}/icons/${e.type}.svg`}var k=["Close","Biometry","Qr","Search","Folder","Wallet","Graph","Bookmark","Browser","Category","Home","Notification","Chat","Heart","Paper","Plus","Minus","PaperPlus","PaperNegative","PaperFail","PaperDownload","PaperUpload","Send","Password","Swap","Work","Arrow1","Arrow2","Arrow3","Arrow4","ArrowMini1","ArrowMini2","Scan","Activity","Calendar","Message","PlusMini","ChartMini","Game","Bag1","Bag2","TicketStar","MoreCircle","MoreSquare","Discount","Buy","Web","InfoMini","DangerMini","CloseMini","TickMini","Video","Discovery","Location","Document","Setting","Time","VolumeUp","VolumeDown","VolumeOff","Star","Select","Ticket","Camera","Profile","AddUser","TwoUser","ThreeUser","Login","Logout","Download","Upload","Voice1","Voice2","Delete","Edit","PlayMini","ShieldDone","ShieldFail","Show","Hide","Filter1","Filter2","Image","Call","Calling","CallMissed","CallSilent","Lock","Unlock","Resources","Language"],v=["Radio-true","Radio-false","Square-true","Square-false","Heart-true","Heart-false","Arrow"],E=["Line","Blocks","Balls"],I=["Jenesei","BustMarket"],P={id:k,checkbox:v,loading:E,logo:I};function R(e){return(e.icons??[])?.filter(n=>!n.isHidden)?.map((n,l)=>(0,S.jsx)(y,{size:n?.size??e.size,...n},`${n.type}-${n.name}-${l}`))}Object.defineProperty(exports,"Icon",{enumerable:!0,get:function(){return y}});Object.defineProperty(exports,"THEME_MAP",{enumerable:!0,get:function(){return P}});Object.defineProperty(exports,"getIconComponents",{enumerable:!0,get:function(){return R}});
2
2
 
3
- //# sourceMappingURL=icon-Ddkbk3-m.cjs.map
3
+ //# sourceMappingURL=icon-DyjaxKWq.cjs.map