no-frills-ui 0.0.14-rc.0 → 0.0.14-rc.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 (60) hide show
  1. package/README.md +1 -0
  2. package/dist/index.js +389 -195
  3. package/dist/index.js.map +1 -1
  4. package/lib-esm/components/Accordion/Accordion.js +10 -1
  5. package/lib-esm/components/Accordion/Accordion.js.map +1 -1
  6. package/lib-esm/components/Accordion/AccordionStep.js +9 -9
  7. package/lib-esm/components/Accordion/AccordionStep.js.map +1 -1
  8. package/lib-esm/components/Card/Card.js +2 -2
  9. package/lib-esm/components/Card/Card.js.map +1 -1
  10. package/lib-esm/components/Chip/Chip.js +2 -2
  11. package/lib-esm/components/ChipInput/ChipInput.d.ts +1 -1
  12. package/lib-esm/components/ChipInput/ChipInput.js +14 -6
  13. package/lib-esm/components/ChipInput/ChipInput.js.map +1 -1
  14. package/lib-esm/components/DragAndDrop/DragAndDrop.js +2 -2
  15. package/lib-esm/components/DragAndDrop/DragItem.js +2 -2
  16. package/lib-esm/components/Drawer/Drawer.d.ts +1 -1
  17. package/lib-esm/components/Drawer/Drawer.js +2 -3
  18. package/lib-esm/components/Drawer/Drawer.js.map +1 -1
  19. package/lib-esm/components/Groups/Group.js +3 -3
  20. package/lib-esm/components/Groups/Group.js.map +1 -1
  21. package/lib-esm/components/Input/Checkbox.d.ts +2 -0
  22. package/lib-esm/components/Input/Checkbox.js +54 -23
  23. package/lib-esm/components/Input/Checkbox.js.map +1 -1
  24. package/lib-esm/components/Input/Dropdown.d.ts +2 -0
  25. package/lib-esm/components/Input/Dropdown.js +123 -59
  26. package/lib-esm/components/Input/Dropdown.js.map +1 -1
  27. package/lib-esm/components/Input/Input.js +17 -8
  28. package/lib-esm/components/Input/Input.js.map +1 -1
  29. package/lib-esm/components/Input/Radio.d.ts +2 -0
  30. package/lib-esm/components/Input/Radio.js +22 -10
  31. package/lib-esm/components/Input/Radio.js.map +1 -1
  32. package/lib-esm/components/Input/RadioButton.d.ts +2 -0
  33. package/lib-esm/components/Input/RadioButton.js +21 -9
  34. package/lib-esm/components/Input/RadioButton.js.map +1 -1
  35. package/lib-esm/components/Input/Select.js +21 -11
  36. package/lib-esm/components/Input/Select.js.map +1 -1
  37. package/lib-esm/components/Input/TextArea.js +17 -8
  38. package/lib-esm/components/Input/TextArea.js.map +1 -1
  39. package/lib-esm/components/Input/Toggle.d.ts +2 -0
  40. package/lib-esm/components/Input/Toggle.js +45 -15
  41. package/lib-esm/components/Input/Toggle.js.map +1 -1
  42. package/lib-esm/components/Input/index.d.ts +1 -0
  43. package/lib-esm/components/Menu/MenuItem.d.ts +1 -1
  44. package/lib-esm/components/Menu/MenuItem.js +1 -1
  45. package/lib-esm/components/Menu/MenuItem.js.map +1 -1
  46. package/lib-esm/components/Modal/Modal.d.ts +1 -1
  47. package/lib-esm/components/Modal/Modal.js +1 -2
  48. package/lib-esm/components/Modal/Modal.js.map +1 -1
  49. package/lib-esm/components/Popover/Popover.d.ts +1 -1
  50. package/lib-esm/components/Popover/Popover.js +3 -3
  51. package/lib-esm/components/Popover/Popover.js.map +1 -1
  52. package/lib-esm/components/Stepper/Stepper.js +14 -5
  53. package/lib-esm/components/Stepper/Stepper.js.map +1 -1
  54. package/lib-esm/index.js +1 -1
  55. package/lib-esm/shared/LayerManager.js +3 -15
  56. package/lib-esm/shared/LayerManager.js.map +1 -1
  57. package/lib-esm/shared/styles.d.ts +5 -1
  58. package/lib-esm/shared/styles.js +11 -7
  59. package/lib-esm/shared/styles.js.map +1 -1
  60. package/package.json +2 -2
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/Accordion/Accordion.tsx","../src/icons/CheckCircle.tsx","../src/icons/ExpandMore.tsx","../src/icons/FiberManualRecord.tsx","../src/icons/Close.tsx","../src/icons/Info.tsx","../src/icons/ReportProblem.tsx","../src/icons/ErrorOutline.tsx","../src/icons/DragIndicator.tsx","../src/shared/constants.ts","../src/shared/styles.ts","../src/components/Badge/Badge.tsx","../src/components/Card/Card.tsx","../src/components/Accordion/AccordionStep.tsx","../src/components/Button/Button.tsx","../src/components/Button/LinkButton.tsx","../src/components/Button/RaisedButton.tsx","../src/components/Button/ActionButton.tsx","../src/components/Button/IconButton.tsx","../src/components/Chip/Chip.tsx","../src/components/DragAndDrop/types.ts","../src/components/DragAndDrop/DragItem.tsx","../src/components/DragAndDrop/DragAndDrop.tsx","../src/components/ChipInput/ChipInput.tsx","../src/shared/LayerManager.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Dialog/AlertDialog.tsx","../src/components/Dialog/ConfirmDialog.tsx","../src/components/Input/Input.tsx","../src/components/Input/TextArea.tsx","../src/components/Input/Select.tsx","../src/components/Input/Checkbox.tsx","../src/components/Input/Toggle.tsx","../src/components/Input/Radio.tsx","../src/components/Input/RadioButton.tsx","../src/components/Menu/MenuContext.ts","../src/components/Menu/Menu.tsx","../src/components/Menu/MenuItem.tsx","../src/components/Popover/Popover.tsx","../src/components/Input/Dropdown.tsx","../src/components/Dialog/PromptDialog.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Groups/Group.tsx","../src/components/Groups/GroupLabel.tsx","../src/components/Modal/Modal.tsx","../src/components/Notification/types.ts","../src/components/Notification/style.ts","../src/components/Notification/NotificationManager.tsx","../src/components/Notification/Notification.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Stepper/Step.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tab.tsx","../src/components/Toast/Toast.tsx","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import { useState, Children, cloneElement, PropsWithChildren, isValidElement } from 'react';\n\nfunction Accordion(props: PropsWithChildren<AccordionProps>) {\n const [active, setActive] = useState(props.active);\n\n const onStepClick = (index: number, disabled: boolean) => () => {\n if (disabled) {\n return;\n }\n\n const newIndex = index !== active ? index : -1;\n if (props.onStepClick) {\n props.onStepClick(newIndex);\n } else {\n setActive(newIndex);\n }\n };\n\n return (\n <>\n {Children.map(props.children, (child, index) => {\n if (!isValidElement(child)) {\n return child;\n }\n const reactElement = child as React.ReactElement<{\n disabled?: boolean;\n open?: boolean;\n onStepClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n }>;\n return cloneElement(reactElement, {\n open: active === index,\n onStepClick: onStepClick(index, reactElement.props.disabled || false),\n });\n })}\n </>\n );\n}\n\ntype AccordionProps = {\n /**\n * Currently opened step\n * @default -1\n */\n active?: number;\n /** Handler for click event on a step */\n onStepClick?: (index: number) => void;\n};\n\nexport default Accordion;\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M16.59 7.58L10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" />\n </svg>\n );\n}\n","export default function ExpandMore(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg viewBox=\"0 0 24 24\" width=\"18px\" height=\"18px\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\" />\n </svg>\n );\n}\n","export default function FiberManualRecord(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M24 24H0V0h24v24z\" fill=\"none\" />\n <circle cx=\"12\" cy=\"12\" r=\"8\" />\n </svg>\n );\n}\n","export default function Close(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </svg>\n );\n}\n","export enum THEME_CONSTANTS {\n PRIMARY = '#1f7ac5',\n PRIMARY_LIGHT = '#64baff',\n PRIMARY_LIGHTER = '#cfe9ff',\n BACKDROP_COLOR = '#2681da80',\n INFO = '#1f7ac5ff',\n INFO_LIGHT = '#64baffff',\n SUCCESS = '#1a835f',\n SUCCESS_LIGHT = '#80eac6',\n WARNING = '#916b01',\n WARNING_LIGHT = '#ffba00',\n ERROR = '#bb2828',\n ERROR_LIGHT = '#f1a5a5',\n BORDER_COLOR = '#555555',\n TOAST = '#5f5f5f',\n TOOLTIP_COLOR = 'rgba(0,0,0,0.6)',\n BORDER_LIGHT_COLOR = '#eeeeee',\n BACKGROUND = '#ffffff',\n DISABLED_BACKGROUND = '#fafafa',\n DISABLED_BORDER = '#aaa',\n LIGHT_GREY = '#ccc',\n DISABLED = '#737373',\n TEXT_COLOR_LIGHT = '#fff',\n TEXT_COLOR_DARK = '#000',\n SHADOW = '0px 1px 3px 0px rgba(0,0,0,0.1), 0px 1px 2px 0px rgba(0,0,0,0.06)',\n HOVER_SHADOW = '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n MODAL_SHADOW = '0px 8px 17px 2px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12), 0px 5px 5px -3px rgba(0,0,0,0.2)',\n}\n\nexport enum THEME_NAME {\n PRIMARY = '--nfui-primary',\n PRIMARY_LIGHT = '--nfui-primary-light',\n PRIMARY_LIGHTER = '--nfui-primary-lighter',\n INFO = '--nfui-info',\n INFO_LIGHT = '--nfui-info-light',\n SUCCESS = '--nfui-success',\n SUCCESS_LIGHT = '--nfui-success-light',\n WARNING = '--nfui-warning',\n WARNING_LIGHT = '--nfui-warning-light',\n ERROR = '--nfui-error',\n ERROR_LIGHT = '--nfui-error-light',\n BORDER_COLOR = '--nfui-border-color',\n TOAST = '--nfui-toast',\n TOOLTIP_COLOR = '--nfui-tooltip-color',\n BORDER_LIGHT_COLOR = '--nfui-border-light-color',\n BACKGROUND = '--nfui-background',\n DISABLED_BACKGROUND = '--nfui-disabled-background',\n DISABLED_BORDER = '--nfui-disabled-border',\n LIGHT_GREY = '--nfui-light-grey',\n DISABLED = '--nfui-disabled',\n TEXT_COLOR_LIGHT = '--nfui-text-color-light',\n TEXT_COLOR_DARK = '--nfui-text-color-dark',\n SHADOW = '--nfui-shadow',\n HOVER_SHADOW = '--nfui-hover-shadow',\n MODAL_SHADOW = '--nfui-modal-shadow',\n BACKDROP_COLOR = '--nfui-backdrop-color',\n}\n\nexport const themeNameMap: Record<THEME_NAME, THEME_CONSTANTS> = {\n [THEME_NAME.PRIMARY]: THEME_CONSTANTS.PRIMARY,\n [THEME_NAME.PRIMARY_LIGHT]: THEME_CONSTANTS.PRIMARY_LIGHT,\n [THEME_NAME.PRIMARY_LIGHTER]: THEME_CONSTANTS.PRIMARY_LIGHTER,\n [THEME_NAME.INFO]: THEME_CONSTANTS.INFO,\n [THEME_NAME.INFO_LIGHT]: THEME_CONSTANTS.INFO_LIGHT,\n [THEME_NAME.SUCCESS]: THEME_CONSTANTS.SUCCESS,\n [THEME_NAME.SUCCESS_LIGHT]: THEME_CONSTANTS.SUCCESS_LIGHT,\n [THEME_NAME.WARNING]: THEME_CONSTANTS.WARNING,\n [THEME_NAME.WARNING_LIGHT]: THEME_CONSTANTS.WARNING_LIGHT,\n [THEME_NAME.ERROR]: THEME_CONSTANTS.ERROR,\n [THEME_NAME.ERROR_LIGHT]: THEME_CONSTANTS.ERROR_LIGHT,\n [THEME_NAME.BACKDROP_COLOR]: THEME_CONSTANTS.BACKDROP_COLOR,\n [THEME_NAME.BORDER_COLOR]: THEME_CONSTANTS.BORDER_COLOR,\n [THEME_NAME.TOAST]: THEME_CONSTANTS.TOAST,\n [THEME_NAME.TOOLTIP_COLOR]: THEME_CONSTANTS.TOOLTIP_COLOR,\n [THEME_NAME.BORDER_LIGHT_COLOR]: THEME_CONSTANTS.BORDER_LIGHT_COLOR,\n [THEME_NAME.BACKGROUND]: THEME_CONSTANTS.BACKGROUND,\n [THEME_NAME.DISABLED_BACKGROUND]: THEME_CONSTANTS.DISABLED_BACKGROUND,\n [THEME_NAME.DISABLED_BORDER]: THEME_CONSTANTS.DISABLED_BORDER,\n [THEME_NAME.LIGHT_GREY]: THEME_CONSTANTS.LIGHT_GREY,\n [THEME_NAME.DISABLED]: THEME_CONSTANTS.DISABLED,\n [THEME_NAME.TEXT_COLOR_LIGHT]: THEME_CONSTANTS.TEXT_COLOR_LIGHT,\n [THEME_NAME.TEXT_COLOR_DARK]: THEME_CONSTANTS.TEXT_COLOR_DARK,\n [THEME_NAME.SHADOW]: THEME_CONSTANTS.SHADOW,\n [THEME_NAME.HOVER_SHADOW]: THEME_CONSTANTS.HOVER_SHADOW,\n [THEME_NAME.MODAL_SHADOW]: THEME_CONSTANTS.MODAL_SHADOW,\n};\n\nexport const getThemeValue = (key: THEME_NAME) => {\n return `var(${key}, ${themeNameMap[key]})`;\n};\n","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from './constants';\n\nexport const Ellipsis = styled.span`\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1;\n`;\n\nexport const Header = styled.h1`\n padding: 10px 15px;\n line-height: 26px;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n font-size: 16px;\n font-weight: bold;\n`;\n\nexport const Body = styled.div`\n padding: 20px 15px;\n flex: 1;\n overflow: auto;\n`;\n\nexport const Footer = styled.div`\n padding: 10px 15px;\n border-top: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n display: flex;\n justify-content: flex-end;\n`;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\nexport enum BADGE_TYPE {\n PRIMARY = 'primary',\n SUCCESS = 'success',\n WARNING = 'warning',\n DANGER = 'danger',\n DISABLED = 'disabled',\n}\n\nconst BadgeSpan = styled.span<BadgeProps>`\n background-color: ${(props) => {\n switch (props.type) {\n case BADGE_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS);\n\n case BADGE_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING);\n\n case BADGE_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR);\n\n case BADGE_TYPE.DISABLED:\n return getThemeValue(THEME_NAME.DISABLED);\n\n default:\n return getThemeValue(THEME_NAME.PRIMARY);\n }\n }};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-radius: 10px;\n padding: ${(props) => (props.children ? '3px 10px' : '4px')};\n display: inline-block;\n min-height: 4px;\n min-width: 4px;\n font-size: 12px;\n margin: ${(props) => (props.inline ? '0 5px' : '0')};\n\n ${(props) =>\n !props.inline && 'position: absolute; top: 0; right: 0; transform: translate(50%, -50%);'};\n`;\n\ntype BadgeProps = {\n /**\n * Display badge inline or overlay on parent component\n * @default false\n */\n inline?: boolean;\n /** Type of badge\n * @default BADGE_TYPE.PRIMARY\n */\n type?: BADGE_TYPE;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\n/**\n * Badge Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLSpanElement\n */\nfunction BadgeComponent(props: BadgeProps, ref: React.Ref<HTMLSpanElement>) {\n return <BadgeSpan {...props} ref={ref} />;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, React.PropsWithChildren<BadgeProps>>(\n BadgeComponent,\n);\n\nexport default Badge;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\ntype CardProps = {\n /** Shows a shadow around the card to show elevation */\n elevated?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst StyledCard = styled.div<CardProps>`\n border-radius: 10px;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n ${(props) =>\n props.elevated\n ? `box-shadow: ${getThemeValue(THEME_NAME.MODAL_SHADOW)};`\n : `box-shadow: ${getThemeValue(THEME_NAME.SHADOW)};`}\n margin: 5px;\n overflow: auto;\n position: relative;\n`;\n\n/**\n * Card Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction CardComponent(props: CardProps, ref: React.Ref<HTMLDivElement>) {\n return <StyledCard {...props} ref={ref} />;\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(CardComponent);\nexport default Card;\n","import React, { useState, useId, useRef, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport { FiberManualRecord, ExpandMore } from '../../icons';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\nimport { Ellipsis } from '../../shared/styles';\nimport { Badge, BADGE_TYPE } from '../Badge';\nimport { Card } from '../Card';\n\nconst Step = styled(Card)<{ open?: boolean; completed?: boolean }>`\n transition: all 0.6s ease;\n overflow: visible;\n\n ${(props) => props.open && `margin: 20px 5px;`}\n`;\n\nconst StepHeader = styled.button<{ open?: boolean; disabled?: boolean }>`\n padding: 20px 15px;\n display: flex;\n justify-content: space-between;\n background: none;\n border: none;\n border-radius: 10px;\n width: 100%;\n font-size: inherit;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:focus-visible {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n & input {\n appearance: none;\n margin: 0;\n }\n\n ${(props) =>\n props.open && `border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};`}\n\n ${(props) => props.disabled && `color: ${getThemeValue(THEME_NAME.DISABLED)};`}\n`;\n\nconst HeaderContainer = styled.div<{ open?: boolean; completed?: boolean }>`\n display: flex;\n align-items: center;\n min-width: 40px;\n\n & svg {\n vertical-align: top;\n margin-right: 10px;\n fill: ${(props) =>\n props.open\n ? getThemeValue(THEME_NAME.PRIMARY)\n : props.completed\n ? getThemeValue(THEME_NAME.SUCCESS)\n : getThemeValue(THEME_NAME.LIGHT_GREY)};\n transform: ${(props) => (props.open ? 'scale(0.8)' : 'scale(0.6)')};\n transition: all 0.3s ease;\n min-width: 24px;\n }\n`;\n\nconst ExpandContainer = styled.div<{ open?: boolean }>`\n display: flex;\n align-items: center;\n\n & svg {\n vertical-align: top;\n margin-right: 10px;\n transition: all 0.6s ease;\n fill: currentColor;\n }\n\n ${(props) => (props.open ? `& svg { transform: rotate(180deg); }` : '')}\n`;\n\nconst StepBody = styled.div<{ height: number }>`\n transition: all 0.6s ease;\n overflow: hidden;\n height: ${(props) => props.height || 0}px;\n`;\n\nconst AccordionBadge = styled(Badge)`\n margin-right: 15px;\n`;\n\nexport const AccordionStepBody = styled.div`\n padding: 20px 15px;\n`;\n\nexport const AccordionStepFooter = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 10px 15px;\n border-top: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n`;\n\n/** Props for `AccordionStep` component */\ninterface AccordionStepProps {\n /**\n * If the step has been marked as completed\n * @default false\n */\n completed?: boolean;\n /** If the step is disabled\n * @default false\n */\n disabled?: boolean;\n /** Header content for the step */\n header: React.ReactNode;\n /** Error text to display as a badge in the header */\n errorText?: React.ReactNode;\n /** If the step is expanded */\n open?: boolean;\n /** Click handler for the step header */\n onStepClick?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\n/**\n * AccordionStep Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction AccordionStepComponent(\n props: React.PropsWithChildren<AccordionStepProps> & React.HTMLAttributes<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const [height, setHeight] = useState(0);\n const {\n open,\n disabled = false,\n header,\n errorText,\n completed = false,\n onStepClick,\n children,\n ...restProps\n } = props;\n\n // Generate unique IDs for ARIA relationships\n const headerId = useId();\n const regionId = useId();\n\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n // Measure content height when `open` or children change.\n useEffect(() => {\n const el = contentRef.current;\n setHeight(el?.scrollHeight || 0);\n }, [open, children]);\n\n return (\n <Step {...restProps} ref={ref} open={open} elevated={open} completed={completed}>\n <StepHeader\n open={open}\n disabled={disabled}\n onClick={onStepClick}\n aria-expanded={open ? 'true' : 'false'}\n aria-controls={regionId}\n id={headerId}\n >\n <HeaderContainer open={open} completed={completed}>\n <FiberManualRecord aria-hidden=\"true\" />\n <Ellipsis>{header}</Ellipsis>\n </HeaderContainer>\n <ExpandContainer open={open}>\n {errorText && (\n <AccordionBadge inline type={BADGE_TYPE.DANGER}>\n {errorText}\n </AccordionBadge>\n )}\n <ExpandMore aria-hidden=\"true\" />\n </ExpandContainer>\n </StepHeader>\n <StepBody\n ref={contentRef}\n height={open ? height : 0}\n role=\"region\"\n id={regionId}\n aria-labelledby={headerId}\n aria-hidden={open ? 'false' : 'true'}\n >\n {open && children}\n </StepBody>\n </Step>\n );\n}\n\nconst AccordionStep = React.forwardRef<\n HTMLDivElement,\n React.PropsWithChildren<AccordionStepProps> & React.HTMLAttributes<HTMLDivElement>\n>(AccordionStepComponent);\n\nexport default AccordionStep;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n margin-left: -6px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:focus {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:disabled {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n border-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype ButtonProps = {\n /**\n * Type of Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * Button Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nfunction ButtonComponent(props: ButtonProps, ref: React.Ref<HTMLButtonElement>) {\n const { type = 'button', ...rest } = props;\n\n return <StyledButton ref={ref} type={type} {...rest} />;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(ButtonComponent);\n\nexport default Button;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledLinkButton = styled.button`\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n height: 32px;\n cursor: pointer;\n background-color: transparent;\n border: none;\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n padding: 0 12px;\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n margin-left: -6px;\n }\n\n &:enabled:hover,\n &:focus {\n text-decoration: underline;\n }\n\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype LinkButtonProps = {\n /**\n * Type of Link Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * LinkButton Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nconst LinkButtonComponent = (props: LinkButtonProps, ref: React.Ref<HTMLButtonElement>) => {\n const { type = 'button', ...rest } = props;\n\n return <StyledLinkButton ref={ref} type={type} {...rest} />;\n};\n\nconst LinkButton = React.forwardRef<HTMLButtonElement, LinkButtonProps>(LinkButtonComponent);\nexport default LinkButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledRaisedButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n color: inherit;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transform: translateY(-2px);\n box-shadow: ${getThemeValue(THEME_NAME.HOVER_SHADOW)};\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n margin-left: -6px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:focus {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:disabled {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n border-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n &:active {\n transform: translateY(0);\n box-shadow: ${getThemeValue(THEME_NAME.SHADOW)};\n }\n`;\n\ntype RaisedButtonProps = {\n /**\n * Type of Raised Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * RaisedButton Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nconst RaisedButtonComponent = (props: RaisedButtonProps, ref: React.Ref<HTMLButtonElement>) => {\n const { type = 'button', ...rest } = props;\n\n return <StyledRaisedButton ref={ref} type={type} {...rest} />;\n};\n\nconst RaisedButton = React.forwardRef<HTMLButtonElement, RaisedButtonProps>(RaisedButtonComponent);\nexport default RaisedButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\nconst StyledActionButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.PRIMARY)};\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: pointer;\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n margin-left: -6px;\n }\n\n &:enabled:hover {\n box-shadow: ${getThemeValue(THEME_NAME.HOVER_SHADOW)};\n }\n\n &:focus {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:disabled {\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype ActionButtonProps = {\n /**\n * Type of Action Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * ActionButton Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nfunction ActionButtonComponent(props: ActionButtonProps, ref: React.Ref<HTMLButtonElement>) {\n const { type = 'button', ...rest } = props;\n\n return <StyledActionButton ref={ref} type={type} {...rest} />;\n}\n\nconst ActionButton = React.forwardRef<HTMLButtonElement, ActionButtonProps>(ActionButtonComponent);\n\nexport default ActionButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledIconButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 5px;\n height: 32px;\n font-size: 14px;\n text-align: center;\n padding: 0 3px;\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:focus {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:disabled {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n &:disabled > svg {\n fill: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype IconButtonProps = {\n /**\n * Type of Icon Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * IconButton Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nfunction IconButtonComponent(props: IconButtonProps, ref: React.Ref<HTMLButtonElement>) {\n const { type = 'button', ...rest } = props;\n\n return <StyledIconButton ref={ref} type={type} {...rest} />;\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(IconButtonComponent);\n\nexport default IconButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { Close } from '../../icons';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ninterface ChipProps {\n /** Label for the chip */\n label: string;\n /** Callback when the close button is clicked */\n onCloseClick?: (e: React.KeyboardEvent | React.MouseEvent) => void;\n /** Aria label for the close button. Defaults to \"Remove {label}\" */\n closeButtonAriaLabel?: string;\n}\n\nconst Container = styled.span`\n padding: 5px;\n padding-left: 15px;\n border-radius: 16px;\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n display: inline-flex;\n margin: 5px;\n line-height: 20px;\n align-items: center;\n`;\n\nconst Button = styled.button`\n color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED)};\n border-radius: 50%;\n border: none;\n padding: 4px;\n display: inline-flex;\n margin-left: 5px;\n\n &:focus-within {\n outline: 4px solid ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n`;\n\n/**\n * Chip Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLSpanElement\n */\nfunction ChipComponent(\n props: ChipProps & React.HTMLAttributes<HTMLSpanElement>,\n ref: React.Ref<HTMLSpanElement>,\n) {\n const { label, onCloseClick, closeButtonAriaLabel, ...rest } = props;\n\n const keyUpHandler: React.KeyboardEventHandler<HTMLSpanElement> = (e) => {\n if (e.key === 'Backspace' || e.key === 'Delete') {\n onCloseClick?.(e);\n }\n };\n\n const buttonKeyDownHandler: React.KeyboardEventHandler<HTMLButtonElement> = (e) => {\n // Stop propagation to prevent DragAndDrop from capturing Space/Enter\n if (e.key === ' ' || e.key === 'Spacebar' || e.key === 'Enter') {\n e.stopPropagation();\n }\n };\n\n return (\n <Container {...rest} ref={ref} onKeyUp={keyUpHandler}>\n {label}\n <Button\n onClick={onCloseClick}\n onKeyDown={buttonKeyDownHandler}\n aria-label={closeButtonAriaLabel ?? `Remove ${label}`}\n >\n <Close height={16} width={16} />\n </Button>\n </Container>\n );\n}\n\nconst Chip = React.forwardRef(ChipComponent);\nexport default Chip;\n","import { createContext } from 'react';\n\nexport enum ORIENTATION {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport const DragContext = createContext<{\n startIndex: number | null;\n setStartIndex: (value: number) => void;\n drop: (index: number | null) => void;\n onDrop: (start: number, end: number) => void;\n cancel: () => void;\n startGrab: (index: number) => void;\n isDragging: boolean;\n setIsDragging: (value: boolean) => void;\n setDragOver: (value: number) => void;\n i18n: {\n itemAriaLabelTemplate: string;\n dragHandleAriaLabel: string;\n grabbedAnnouncementTemplate: string;\n movedAnnouncementTemplate: string;\n droppedAnnouncementTemplate: string;\n cancelledAnnouncementTemplate: string;\n replacePlaceholders: (\n template: string,\n data: {\n position?: number;\n grabKey?: string;\n dropKey?: string;\n altDropKey?: string;\n cancelKey?: string;\n moveKeys?: string;\n },\n ) => string;\n };\n} | null>(null);\n","import {\n DragEventHandler,\n PropsWithChildren,\n useContext,\n useState,\n useEffect,\n TouchEventHandler,\n useRef,\n} from 'react';\nimport styled from '@emotion/styled';\nimport { DragIndicator } from '../../icons';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { ORIENTATION, DragContext } from './types';\n\ninterface DragItemProps {\n /** Position index of the draggable item */\n index: number;\n /** Orientation of the drag operation (VERTICAL or HORIZONTAL) */\n orientation: ORIENTATION;\n /** Whether to show a drag handle indicator instead of making the entire item draggable */\n showIndicator: boolean;\n /** The index of the item currently being dragged over */\n dragOver: number | null;\n /** Total number of items in the list */\n totalItems: number;\n /** Callback to set announcement for screen readers */\n setAnnouncement: (message?: string) => void;\n}\n\n/** Styled component for the draggable item container */\nconst Item = styled.div<{\n active: number | null;\n orientation: ORIENTATION;\n showIndicator: boolean;\n dragging: boolean;\n}>`\n cursor: ${(props) => (props.showIndicator ? 'default' : 'move')};\n display: flex;\n user-select: ${(props) => (props.showIndicator ? 'auto' : 'none')};\n border-top: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.VERTICAL && props.active !== null && props.active > 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-bottom: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.VERTICAL && props.active !== null && props.active < 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-left: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.HORIZONTAL &&\n props.active !== null &&\n props.active > 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-right: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.HORIZONTAL &&\n props.active !== null &&\n props.active < 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n opacity: ${(props) => (props.dragging ? 0.5 : 1)};\n border-radius: 10px;\n\n &:focus {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n\n &:focus-visible {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n`;\n\n/** Styled component for the drag handle indicator */\nconst DragKnob = styled.div`\n padding-top: 8px;\n cursor: move;\n touch-action: none;\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n`;\n\n/** Container for the children */\nconst Container = styled.div`\n flex: 1;\n`;\n\n/**\n * A draggable item component that supports both mouse and touch interactions for drag-and-drop functionality.\n *\n * @component\n * @example\n * ```tsx\n * <DragItem\n * index={0}\n * orientation={ORIENTATION.VERTICAL}\n * showIndicator={true}\n * dragOver={-1}\n * >\n * <div>Draggable content</div>\n * </DragItem>\n * ```\n *\n * @param props - The component props\n * @param props.index - The position index of this item in the draggable list\n * @param props.orientation - The orientation of the drag operation (VERTICAL or HORIZONTAL)\n * @param props.showIndicator - Whether to show a drag handle indicator instead of making the entire item draggable\n * @param props.dragOver - The index of the item currently being dragged over\n * @param props.children - The content to be rendered inside the draggable item\n *\n * @remarks\n * - Uses the DragContext to manage drag state across items\n * - Provides visual feedback with borders during drag operations\n * - Supports haptic feedback (vibration) on touch devices\n * - For touch devices, requires a 200ms hold before drag starts\n * - When showIndicator is true, only the drag handle can initiate drag operations\n *\n * @returns A draggable item with optional drag indicator and visual feedback\n */\nexport default function DragItem(props: PropsWithChildren<DragItemProps>) {\n const { index, orientation, children, showIndicator, dragOver, totalItems, setAnnouncement } =\n props;\n const [active, setActive] = useState<number | null>(0);\n const touchTimerRef = useRef<NodeJS.Timeout | null>(null);\n const context = useContext(DragContext);\n\n /**\n * Vibrate the device for haptic feedback\n * @param duration Duration of the vibration in milliseconds\n */\n const vibrate = (duration: number) => {\n if (navigator.vibrate) {\n navigator.vibrate(duration);\n }\n };\n\n /**\n * Drag start event handler\n * @param e Event\n */\n const dragStartHandler: DragEventHandler<HTMLDivElement> = () => {\n context?.setStartIndex(index);\n context?.setIsDragging(true);\n };\n\n /**\n * Drag over event handler\n * @param e Event\n */\n const dragOverHandler: DragEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (context && context.startIndex !== null) {\n setActive(context.startIndex - index);\n }\n };\n\n /**\n * Drag leave event handler\n */\n const dragExitHandler: DragEventHandler<HTMLDivElement> = () => {\n setActive(0);\n };\n\n /**\n * Drop event handler\n * @param e Event\n */\n const dropHandler: DragEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n setActive(0);\n context?.drop(index);\n context?.setIsDragging(false);\n };\n\n /**\n * Touch start event handler\n * @param e Event\n */\n const touchStartHandler: TouchEventHandler<HTMLDivElement> = () => {\n // Clear any existing timer first\n if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n }\n\n touchTimerRef.current = setTimeout(() => {\n context?.setStartIndex(index);\n context?.setIsDragging(true);\n context?.setDragOver(index);\n document.body.style.overflow = 'hidden';\n vibrate(50);\n }, 200);\n };\n\n /**\n * Touch move event handler\n * @param e Event\n * @returns void\n */\n const touchMoveHandler: TouchEventHandler<HTMLDivElement> = (e) => {\n const touch = e.touches[0];\n if (!touch) return;\n\n if (context?.isDragging) {\n e.preventDefault();\n\n // get the element under the touch point\n const el = document.elementFromPoint(\n touch.clientX,\n touch.clientY,\n ) as HTMLElement | null;\n const overAttr = el?.closest('[data-drag-index]')?.getAttribute('data-drag-index');\n const overIndex = overAttr != null ? parseInt(overAttr, 10) : null;\n\n // if we know which index we're over, update visual state\n if (overIndex !== null) {\n context?.setDragOver(overIndex);\n }\n } else if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n touchTimerRef.current = null;\n }\n };\n\n /**\n * Touch end event handler\n * @param e Event\n */\n const touchEndHandler: TouchEventHandler<HTMLDivElement> = () => {\n if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n touchTimerRef.current = null;\n }\n\n if (context?.isDragging) {\n context?.drop(dragOver);\n vibrate(50);\n context?.setIsDragging(false);\n document.body.style.overflow = 'auto';\n }\n };\n\n /**\n * Keyboard navigation handler for reordering items\n * @param e Keyboard event\n */\n const handleKeyDown = (e: React.KeyboardEvent) => {\n const isVertical = orientation === ORIENTATION.VERTICAL;\n const moveUp = isVertical ? 'ArrowUp' : 'ArrowLeft';\n const moveDown = isVertical ? 'ArrowDown' : 'ArrowRight';\n\n const isGrabbed = context?.isDragging && context?.startIndex === index;\n\n // Space to grab/drop\n if (e.key === ' ' || e.key === 'Spacebar') {\n e.preventDefault();\n if (isGrabbed) {\n // Drop at current position\n context?.drop(index);\n setAnnouncement(\n context?.i18n.replacePlaceholders(context?.i18n.droppedAnnouncementTemplate, {\n position: index + 1,\n }),\n );\n } else {\n // Grab item\n context?.startGrab(index);\n setAnnouncement(\n context?.i18n.replacePlaceholders(context?.i18n.grabbedAnnouncementTemplate, {\n position: index + 1,\n }),\n );\n }\n }\n // Enter to drop\n else if (e.key === 'Enter' && isGrabbed) {\n e.preventDefault();\n context?.drop(index);\n setAnnouncement(\n context?.i18n.replacePlaceholders(context?.i18n.droppedAnnouncementTemplate, {\n position: index + 1,\n }),\n );\n }\n // Escape to cancel\n else if (e.key === 'Escape' && isGrabbed) {\n e.preventDefault();\n context?.cancel();\n setAnnouncement(context?.i18n.cancelledAnnouncementTemplate);\n }\n // Arrow keys to move while grabbed\n else if (isGrabbed) {\n if (e.key === moveUp && index > 0 && context.startIndex !== null) {\n e.preventDefault();\n // Move without dropping - just reorder and update startIndex\n const newIndex = index - 1;\n context.onDrop(context.startIndex, newIndex);\n context.setStartIndex(newIndex);\n setAnnouncement(\n context.i18n.replacePlaceholders(context.i18n.movedAnnouncementTemplate, {\n position: newIndex + 1,\n }),\n );\n } else if (\n e.key === moveDown &&\n index < totalItems - 1 &&\n context.startIndex !== null\n ) {\n e.preventDefault();\n // Move without dropping - just reorder and update startIndex\n const newIndex = index + 1;\n context.onDrop(context.startIndex, newIndex);\n context.setStartIndex(newIndex);\n setAnnouncement(\n context.i18n.replacePlaceholders(context.i18n.movedAnnouncementTemplate, {\n position: newIndex + 1,\n }),\n );\n }\n }\n };\n\n /** Cleanup touch timer and body overflow on unmount */\n useEffect(() => {\n return () => {\n if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n touchTimerRef.current = null;\n }\n document.body.style.overflow = 'auto';\n };\n }, []);\n\n /** Update active state based on dragOver changes */\n useEffect(() => {\n if (context?.isDragging && context?.startIndex !== null && dragOver === index) {\n setActive(context?.startIndex - index);\n } else {\n setActive(0);\n }\n }, [dragOver, context?.startIndex, index, context?.isDragging]);\n\n return (\n <Item\n draggable={!showIndicator}\n showIndicator={showIndicator}\n active={active}\n dragging={!!(context?.isDragging && context.startIndex === index)}\n orientation={orientation}\n data-drag-index={index}\n tabIndex={0}\n role=\"listitem\"\n aria-label={context?.i18n.replacePlaceholders(context.i18n.itemAriaLabelTemplate, {\n position: index + 1,\n })}\n aria-grabbed={context?.isDragging && context.startIndex === index}\n onKeyDown={handleKeyDown}\n onDragStart={!showIndicator ? dragStartHandler : undefined}\n onDragOver={dragOverHandler}\n onDragLeave={dragExitHandler}\n onDrop={dropHandler}\n onTouchStart={!showIndicator ? touchStartHandler : undefined}\n onTouchMove={touchMoveHandler}\n onTouchEnd={touchEndHandler}\n onTouchCancel={touchEndHandler}\n >\n {showIndicator && (\n <DragKnob\n draggable\n role=\"button\"\n aria-label={context?.i18n.dragHandleAriaLabel}\n onDragStart={dragStartHandler}\n onTouchStart={touchStartHandler}\n onKeyDown={handleKeyDown}\n tabIndex={-1}\n >\n <DragIndicator />\n </DragKnob>\n )}\n <Container>{children}</Container>\n </Item>\n );\n}\n","import React, { PropsWithChildren, useState } from 'react';\nimport styled from '@emotion/styled';\nimport DragItem from './DragItem';\nimport { ORIENTATION, DragContext } from './types';\n\ntype DragAndDropProps = {\n /**\n * Orientation of the list layout\n * @default ORIENTATION.VERTICAL\n */\n orientation?: ORIENTATION;\n /** Drop event handler */\n onDrop: (start: number, end: number) => void;\n /** Shows drag indicator against each list item\n * @default false\n */\n showIndicator?: boolean;\n /**\n * i18n: Template for item aria-label. Placeholders: {:position}, {:grabKey}, {:moveKeys}, {:dropKey}, {:altDropKey}\n * @default 'Item {:position}. Press {:grabKey} to grab, {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop'\n */\n itemAriaLabelTemplate?: string;\n /** i18n: Aria label for drag handle\n * @default 'Drag to reorder'\n */\n dragHandleAriaLabel?: string;\n /**\n * i18n: Template for grabbed announcement. Placeholders: {:position}, {:moveKeys}, {:dropKey}, {:altDropKey}, {:cancelKey}\n * @default 'Item {:position} grabbed. Use {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop, {:cancelKey} to cancel'\n */\n grabbedAnnouncementTemplate?: string;\n /**\n * i18n: Template for moved announcement. Placeholders: {:position}\n * @default 'Item moved to position {:position}'\n */\n movedAnnouncementTemplate?: string;\n /**\n * i18n: Template for dropped announcement. Placeholders: {:position}\n * @default 'Item dropped at position {:position}'\n */\n droppedAnnouncementTemplate?: string;\n /**\n * i18n: Template for cancelled announcement\n * @default 'Drag cancelled, item restored to original position'\n */\n cancelledAnnouncementTemplate?: string;\n} & PropsWithChildren<unknown>;\n\n/** Container Component */\nconst Container = styled.div<{ orientation: ORIENTATION }>`\n flex: 1;\n display: flex;\n position: relative;\n flex-wrap: wrap;\n flex-direction: ${(props) => (props.orientation === ORIENTATION.HORIZONTAL ? 'row' : 'column')};\n`;\n\n/** Visually hidden but accessible to screen readers */\nconst VisuallyHidden = styled.div`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n`;\n\n/**\n * A drag and drop container component that enables reordering of child elements.\n *\n * @component\n * @example\n * ```tsx\n * <DragAndDrop\n * orientation={ORIENTATION.VERTICAL}\n * onDrop={(start, end) => handleReorder(start, end)}\n * showIndicator={true}\n * >\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * </DragAndDrop>\n * ```\n *\n * @param props - The component props\n * @param props.orientation - Determines the layout direction (horizontal or vertical). Defaults to VERTICAL.\n * @param props.onDrop - Callback fired when an item is dropped, receives the start and end indices\n * @param props.showIndicator - Whether to display drag indicators for each list item. Defaults to false.\n * @param props.children - Child elements to be rendered as draggable items\n *\n * @returns A draggable container with reorderable items\n */\n/**\n * DragAndDrop Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction DragAndDropComponent(props: DragAndDropProps, ref: React.Ref<HTMLDivElement>) {\n const {\n orientation = ORIENTATION.VERTICAL,\n children,\n onDrop,\n showIndicator = false,\n itemAriaLabelTemplate = 'Item {:position}. Press {:grabKey} to grab, {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop',\n dragHandleAriaLabel = 'Drag to reorder',\n grabbedAnnouncementTemplate = 'Item {:position} grabbed. Use {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop, {:cancelKey} to cancel',\n movedAnnouncementTemplate = 'Item moved to position {:position}',\n droppedAnnouncementTemplate = 'Item dropped at position {:position}',\n cancelledAnnouncementTemplate = 'Drag cancelled, item restored to original position',\n ...rest\n } = props;\n const [startIndex, setStartIndex] = useState<number | null>(null);\n const [originalIndex, setOriginalIndex] = useState<number | null>(null);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [dragOver, setDragOver] = useState<number | null>(null);\n const [announcement, setAnnouncement] = useState<string | undefined>('');\n const childrenArray = React.Children.toArray(children);\n const totalItems = childrenArray.length;\n\n /**\n * Replace placeholders in i18n templates\n */\n const replacePlaceholders = (\n template: string,\n data: {\n position?: number;\n grabKey?: string;\n dropKey?: string;\n altDropKey?: string;\n cancelKey?: string;\n moveKeys?: string;\n },\n ): string => {\n return template\n .replace(/\\{:position\\}/g, String(data.position ?? ''))\n .replace(/\\{:grabKey\\}/g, data.grabKey ?? 'Space')\n .replace(/\\{:dropKey\\}/g, data.dropKey ?? 'Space')\n .replace(/\\{:altDropKey\\}/g, data.altDropKey ?? 'Enter')\n .replace(/\\{:cancelKey\\}/g, data.cancelKey ?? 'Escape')\n .replace(\n /\\{:moveKeys\\}/g,\n data.moveKeys ??\n (orientation === ORIENTATION.VERTICAL ? 'Arrow Up/Down' : 'Arrow Left/Right'),\n );\n };\n\n // i18n configuration object\n const i18n = {\n itemAriaLabelTemplate:\n itemAriaLabelTemplate ??\n 'Item {:position}. Press {:grabKey} to grab, {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop',\n dragHandleAriaLabel: dragHandleAriaLabel ?? 'Drag to reorder',\n grabbedAnnouncementTemplate:\n grabbedAnnouncementTemplate ??\n 'Item {:position} grabbed. Use {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop, {:cancelKey} to cancel',\n movedAnnouncementTemplate:\n movedAnnouncementTemplate ?? 'Item moved to position {:position}',\n droppedAnnouncementTemplate:\n droppedAnnouncementTemplate ?? 'Item dropped at position {:position}',\n cancelledAnnouncementTemplate:\n cancelledAnnouncementTemplate ?? 'Drag cancelled, item restored to original position',\n replacePlaceholders,\n };\n\n /**\n * Drop handler invoked when a draggable item is released.\n * @param index\n */\n const drop = (index: number | null) => {\n if (startIndex !== null && index !== null) {\n onDrop?.(startIndex, index);\n }\n setStartIndex(null);\n setOriginalIndex(null);\n setIsDragging(false);\n };\n\n /**\n * Cancel handler to restore item to original position\n */\n const cancel = () => {\n if (originalIndex !== null && startIndex !== null && startIndex !== originalIndex) {\n onDrop?.(startIndex, originalIndex);\n }\n setStartIndex(null);\n setOriginalIndex(null);\n setIsDragging(false);\n };\n\n /**\n * Start grab handler to track original position\n */\n const startGrab = (index: number) => {\n setStartIndex(index);\n setOriginalIndex(index);\n setIsDragging(true);\n };\n\n return (\n <>\n <DragContext.Provider\n value={{\n startIndex,\n setStartIndex,\n drop,\n onDrop,\n cancel,\n startGrab,\n isDragging,\n setIsDragging,\n setDragOver,\n i18n,\n }}\n >\n <Container {...rest} ref={ref} orientation={orientation} role=\"list\">\n {React.Children.map(childrenArray, (child, index) => (\n <DragItem\n index={index}\n orientation={orientation}\n showIndicator={showIndicator}\n dragOver={dragOver}\n totalItems={totalItems}\n setAnnouncement={setAnnouncement}\n >\n {child}\n </DragItem>\n ))}\n </Container>\n </DragContext.Provider>\n <VisuallyHidden role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </VisuallyHidden>\n </>\n );\n}\n\nconst DragAndDrop = React.forwardRef(DragAndDropComponent);\nexport default DragAndDrop;\n","import React, { useImperativeHandle, useEffect, useId, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport Chip from '../Chip/Chip';\nimport { DragAndDrop, ORIENTATION } from '../DragAndDrop';\n\n// Prop types definition\ninterface ChipInputProps {\n /** Label for the field */\n label: string;\n /** Error message for the field */\n errorText?: string;\n /**\n * Values to display as chips\n * @default []\n */\n value?: string[];\n /** Callback when chips change */\n onChange?: (newValue: string[]) => void;\n /**\n * Aria label for the close button on chip. Defaults to \"Remove {:label}\"\n * @default \"Remove {:label}\"\n */\n closeButtonAriaLabel?: string;\n /**\n * Announcement text when a chip is added. Defaults to \"{:label} was added\"\n * @default \"{:label} was added\"\n */\n addedAnnouncementTemplate?: string;\n /**\n * Announcement text when a chip is removed. Defaults to \"{:label} was removed\"\n * @default \"{:label} was removed\"\n */\n removedAnnouncementTemplate?: string;\n}\n\n// Label component for the ChipInput\nconst Label = styled.label<{\n text: string;\n touched?: boolean;\n errorText?: string;\n required?: boolean;\n}>`\n display: inline-flex;\n flex-direction: column;\n flex: 1;\n position: relative;\n margin: 10px 5px;\n color: inherit;\n padding: 0 8px;\n width: 250px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n\n /** Focused */\n &:has(:focus),\n &:has(:active) {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:has(:focus) > span,\n &:has(:active) > span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:has(:disabled) {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:has(:disabled) > span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:has(:focus:invalid) {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:has(:invalid) {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n \n &:has(:invalid) > span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & > span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n ${(props) =>\n props.required\n ? `& > span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }`\n : ''}\n \n\n & > input {\n border: none;\n outline: none;\n line-height: 30px;\n min-height: 30px;\n max-width: 95%;\n }\n\n /** Label Animation */\n & > span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n &:has(:focus) > span,\n &:has(:placeholder-shown) > span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n\n ${(props) =>\n props.text !== ''\n ? `\n & > span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n`;\n\n// Error message container\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\n// Visually hidden but accessible to screen readers\nconst VisuallyHidden = styled.ul`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n\n & li {\n list-style: none;\n }\n`;\n\n/**\n * A chip input component that allows users to add and remove chips (tags) by typing and pressing Enter.\n * @component\n * @example\n * ```tsx\n * <ChipInput\n * value={['tag1', 'tag2']}\n * onChange={(newTags) => console.log(newTags)}\n * label=\"Add tags\"\n * errorText=\"At least one tag is required\"\n * />\n * ```\n */\nfunction ChipInputComponent(\n props: ChipInputProps & React.AllHTMLAttributes<HTMLInputElement>,\n ref: React.Ref<HTMLInputElement | null>,\n) {\n const {\n value: propValue = [],\n closeButtonAriaLabel = `Remove {:label}`,\n addedAnnouncementTemplate = '{:label} was added',\n removedAnnouncementTemplate = '{:label} was removed',\n } = props;\n\n const [text, setText] = useState('');\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState<string[]>(propValue || []);\n const InputRef = React.useRef<HTMLInputElement>(null);\n const [announcement, setAnnouncement] = useState('');\n const errorId = useId();\n\n // Forward the underlying input element.\n useImperativeHandle(ref, () => InputRef.current as HTMLInputElement);\n\n /**\n * Replace {:label} placeholder in template string\n */\n const replacePlaceholder = (\n template: string | undefined,\n label: string,\n ): string | undefined => {\n if (!template) return undefined;\n return template.replace(/\\{:label\\}/g, label);\n };\n\n const prevPropValueRef = React.useRef<string[]>(undefined);\n\n // Sync internal value with props.value\n useEffect(() => {\n if (Array.isArray(propValue)) {\n const prevValue = prevPropValueRef.current;\n const isEqual =\n prevValue &&\n propValue.length === prevValue.length &&\n propValue.every((val, index) => val === prevValue[index]);\n if (!isEqual) {\n setValue(propValue);\n prevPropValueRef.current = propValue;\n }\n }\n }, [propValue]);\n\n /**\n * Update the chip values and notify changes.\n * @param newValue The new array of chip values\n */\n const updateValue = (newValue: string[]) => {\n const deduped = Array.from(new Set(newValue));\n setValue(deduped);\n props.onChange?.(deduped);\n };\n\n /**\n * Marks the input as touched on focus.\n * @param e React focus event\n */\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n /**\n * Change handler for the input field.\n * @param e React change event\n */\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n setText(e.target.value);\n };\n\n /**\n * Adds a new chip on Enter key press.\n * @param e React keyboard event\n */\n const handleKeyUp: React.KeyboardEventHandler<HTMLInputElement> = (e) => {\n if (e.key === 'Enter' && text.trim() !== '' && InputRef.current?.validity.valid) {\n const newValue = [...value, text.trim()];\n updateValue(newValue);\n setText('');\n setAnnouncement(replacePlaceholder(addedAnnouncementTemplate, text.trim())!);\n }\n };\n\n /**\n * Removes a chip from the list.\n * @param chipToRemove The chip value to remove\n */\n const removeChip = (chipToRemove: string) => {\n const newValue = value.filter((chip) => chip !== chipToRemove);\n updateValue(newValue);\n setAnnouncement(replacePlaceholder(removedAnnouncementTemplate, chipToRemove)!);\n };\n\n /**\n * Moves a chip from one position to another.\n * @param start The starting index of the item to move\n * @param end The ending index where the item should be placed\n */\n const onDrop = (start: number, end: number) => {\n // Clone existing elements\n const newItems = [...value];\n // Remove the element to be moved\n const item = newItems.splice(start, 1);\n // Add it back at the required position\n newItems.splice(end, 0, item[0]);\n // Update\n updateValue(newItems);\n };\n\n // Render the component\n return (\n <>\n <Label\n text={text}\n touched={touched}\n errorText={props.errorText}\n required={props.required}\n >\n <input\n {...props}\n ref={InputRef}\n value={text}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyUp={handleKeyUp}\n required={props.required && value.length === 0}\n aria-required={props.required}\n aria-invalid={!!props.errorText}\n aria-describedby={props.errorText ? errorId : undefined}\n />\n <div>\n {value?.length > 0 && (\n <DragAndDrop orientation={ORIENTATION.HORIZONTAL} onDrop={onDrop}>\n {value.map((chip) => (\n <Chip\n key={chip}\n label={chip}\n onCloseClick={() => removeChip(chip)}\n closeButtonAriaLabel={replacePlaceholder(\n closeButtonAriaLabel,\n chip,\n )}\n />\n ))}\n </DragAndDrop>\n )}\n </div>\n <span>{props.label}</span>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n <VisuallyHidden aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </VisuallyHidden>\n </>\n );\n}\n\nconst ChipInput = React.forwardRef<\n HTMLInputElement,\n ChipInputProps & React.AllHTMLAttributes<HTMLInputElement>\n>(ChipInputComponent);\n\nexport default ChipInput;\n","import React, { ForwardRefExoticComponent, RefAttributes, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from './constants';\n\n/** Enums for layer position on screen. */\nexport enum LAYER_POSITION {\n TOP_LEFT,\n TOP_CENTER,\n TOP_RIGHT,\n BOTTOM_LEFT,\n BOTTOM_CENTER,\n BOTTOM_RIGHT,\n DIALOG,\n}\n\ninterface LayerConfig {\n /** Show an overlay */\n overlay?: boolean;\n /** Element to render inside the layer. */\n component: React.JSX.Element | null;\n /** Position of the layer */\n position?: LAYER_POSITION;\n /** Delay for exit */\n exitDelay?: number;\n /** Close layer on `esc` key press. */\n closeOnEsc?: boolean;\n /** Close layer overlay is clicked. */\n closeOnOverlayClick?: boolean;\n /** Callback called when modal closes */\n closeCallback?: (resp?: unknown) => void;\n /** Layer is created with max z-index */\n alwaysOnTop?: boolean;\n}\n\n/** Default value of config */\nconst defaultConfig: LayerConfig = {\n closeOnEsc: true,\n overlay: false,\n position: LAYER_POSITION.TOP_LEFT,\n component: null,\n exitDelay: 0,\n closeOnOverlayClick: true,\n alwaysOnTop: false,\n};\n\n/** Metadata of each layer */\ninterface Layer {\n id: string;\n config: LayerConfig;\n element: HTMLDivElement;\n}\n\n/** Styles for each position */\nconst POSITION_STYLE: Record<LAYER_POSITION, string> = {\n [LAYER_POSITION.TOP_LEFT]: 'top: 0; left: 0;',\n [LAYER_POSITION.TOP_CENTER]: 'top: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.TOP_RIGHT]: 'top: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.BOTTOM_LEFT]: 'bottom: 0; left: 0;',\n [LAYER_POSITION.BOTTOM_CENTER]: 'bottom: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.BOTTOM_RIGHT]: 'bottom: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.DIALOG]: 'top: 0; left: 0; justify-content: center; align-items: center;',\n};\n\n/** Layer container component. */\nconst Container = styled.div<LayerConfig & { zIndex: number }>`\n position: fixed;\n display: flex;\n opacity: 0;\n transition: opacity 0.3s ease;\n ${(props) => POSITION_STYLE[props.position as LAYER_POSITION]}\n ${(props) =>\n props.overlay &&\n `\n width: 100%;\n height: 100vh;\n background-color: ${getThemeValue(THEME_NAME.BACKDROP_COLOR)};\n backdrop-filter: blur(0px);\n pointer-events: all;\n `}\n z-index: ${(props) => props.zIndex};\n\n .nf-layer-enter & {\n opacity: 1;\n ${(props) =>\n props.overlay &&\n `\n backdrop-filter: blur(3px);\n `}\n }\n`;\n\n/** Key code for different keys. */\nconst KEY_CODES = {\n ESC: 27,\n};\n\n/**\n * This is a shared helper class which manages the z-index of each layer.\n * If a component needs to be rendered in a different layer then this class\n * should be used. It internally maintains the stack of opened layer and each\n * `renderLayer` call will push a new layer in stack.\n *\n * This way we need not worry about the z-index and can freely keep on creating\n * new layers. The staring layer z-index is 10000. Leaving enough z-index for the\n * user if they desires so.\n *\n * @important Usage Pattern\n * To avoid creating duplicate layers (especially in React Strict Mode or Next.js),\n * always call `renderLayer` only once - either in a lifecycle method (like `componentDidUpdate`)\n * or in an imperative method (like `open()`).\n *\n * @example\n * // ❌ Don't call renderLayer in render() method\n * render() {\n * if (this.state.show) {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... }); // Creates new layer on every render\n * return <Component />;\n * }\n * }\n *\n * @example\n * // ✅ Do call renderLayer once in a method and store the component\n * open() {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... });\n * this.setState({ LayerComponent: Component });\n * }\n *\n * render() {\n * const { LayerComponent } = this.state;\n * return LayerComponent ? <LayerComponent /> : null;\n * }\n */\nclass LayerManager {\n /** Layer stack */\n private layers: Layer[] = [];\n /** z-index of the next layer */\n private nextIndex = 0;\n private keyupHandler!: (e: KeyboardEvent) => void;\n private timeoutIds = new Map<string, number>(); // Track timeouts\n\n /**\n * Constructor simply registers a event listener on body to\n * react to esc key press.\n */\n constructor() {\n if (typeof document !== 'undefined') {\n // Store handler reference for cleanup\n this.keyupHandler = (e) => {\n if (this.layers.length && e.keyCode === KEY_CODES.ESC) {\n const lastLayer = this.layers.slice(-1)[0];\n if (lastLayer.config.closeOnEsc !== false) {\n this.unmount(lastLayer);\n }\n }\n };\n document.body.addEventListener('keyup', this.keyupHandler);\n }\n }\n\n // Add cleanup method\n public destroy = () => {\n if (typeof document !== 'undefined' && this.keyupHandler) {\n document.body.removeEventListener('keyup', this.keyupHandler);\n }\n // Clear all pending timeouts\n this.timeoutIds.forEach((id) => clearTimeout(id));\n this.timeoutIds.clear();\n // Clean up remaining layers\n this.layers.forEach((layer) => {\n if (document.body.contains(layer.element)) {\n document.body.removeChild(layer.element);\n }\n });\n this.layers = [];\n };\n\n /**\n * Un-mounts a layer.\n *\n * It first adds a class 'nf-layer-exit' and then un-mounts the\n * layer after the `exitDelay` mentioned in the layer config.\n * This class will help component in triggering the entry animation.\n *\n * @param layer\n */\n private unmount = (layer: Layer, resp?: unknown) => {\n layer.element.setAttribute('class', 'nf-layer-exit');\n const index = this.layers.findIndex((item) => item === layer);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n\n const timeoutId = window.setTimeout(() => {\n this.timeoutIds.delete(layer.id);\n try {\n layer.config.closeCallback?.(resp);\n } catch (err) {\n if (err instanceof Error) {\n console.warn(err.message);\n } else {\n console.warn(err);\n }\n }\n // Clear reference to help GC\n layer.config.component = null;\n }, layer.config.exitDelay);\n\n this.timeoutIds.set(layer.id, timeoutId);\n };\n\n private Empty = () => {\n return null;\n };\n\n /**\n * Renders a layer.\n * @param config\n */\n public renderLayer = (\n config: LayerConfig,\n ): [ForwardRefExoticComponent<RefAttributes<HTMLDivElement>>, (resp?: unknown) => void] => {\n // SSR guard\n if (typeof document === 'undefined') {\n return [React.forwardRef(this.Empty), () => {}];\n }\n\n // Merge default config with the provided config.\n const layerConfig = {\n ...defaultConfig,\n ...config,\n };\n\n // Get the z-index for the new layer\n const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : 10000 + this.nextIndex;\n const className = layerConfig.alwaysOnTop ? 'nf-layer-manager-top' : 'nf-layer-manager';\n\n // Create a unique ID for tracking this layer\n const layerId = `${className}-${currentIndex + this.nextIndex}`;\n\n // Always increment for next layer\n this.nextIndex += 1;\n\n const overlayClickHandler = () => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer && layer.config.closeOnOverlayClick !== false) {\n this.unmount(layer);\n }\n };\n\n const closeFn = (resp?: unknown) => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer) {\n this.unmount(layer, resp);\n }\n };\n\n const LayerContainer = (\n props: React.HTMLAttributes<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const [divElement, setDivElement] = React.useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n // Create the div element only once when component mounts\n const div = document.createElement('div');\n div.setAttribute('class', className);\n div.setAttribute('id', layerId);\n document.body.appendChild(div);\n\n // Add layer to stack\n const currentLayer = {\n id: layerId,\n config: layerConfig,\n element: div,\n };\n this.layers.push(currentLayer);\n\n setDivElement(div);\n // Add entry animation class after a short delay\n setTimeout(() => {\n div.setAttribute('class', 'nf-layer-enter');\n }, 10);\n\n // Track elements modified for accessibility\n const modifiedElements: Array<{\n element: Element;\n hadAriaHidden: boolean;\n previousValue: string | null;\n }> = [];\n let originalBodyOverflow: string | null = null;\n let originalBodyPosition: string | null = null;\n let originalBodyWidth: string | null = null;\n let originalBodyTop: string | null = null;\n let scrollY = 0;\n\n // Apply aria-hidden to siblings and body scroll lock for overlay modals\n if (layerConfig.overlay) {\n // Hide all body children except this layer portal, scripts, and styles\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach((child) => {\n if (\n child !== div &&\n child.className !== 'nf-layer-manager-top' &&\n child.tagName !== 'SCRIPT' &&\n child.tagName !== 'STYLE'\n ) {\n const hadAriaHidden = child.hasAttribute('aria-hidden');\n const previousValue = child.getAttribute('aria-hidden');\n\n // Only set aria-hidden if not already hidden\n if (previousValue !== 'true') {\n child.setAttribute('aria-hidden', 'true');\n modifiedElements.push({\n element: child,\n hadAriaHidden,\n previousValue,\n });\n }\n }\n });\n\n // Prevent body scroll on iOS\n scrollY = window.scrollY;\n originalBodyOverflow = document.body.style.overflow;\n originalBodyPosition = document.body.style.position;\n originalBodyWidth = document.body.style.width;\n originalBodyTop = document.body.style.top;\n\n document.body.style.overflow = 'hidden';\n document.body.style.position = 'fixed';\n document.body.style.width = '100%';\n document.body.style.top = `-${scrollY}px`;\n }\n\n // Cleanup function - remove div when component unmounts\n return () => {\n // Restore aria-hidden attributes\n modifiedElements.forEach(({ element, hadAriaHidden, previousValue }) => {\n if (document.body.contains(element)) {\n if (hadAriaHidden && previousValue !== null) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n }\n });\n\n // Restore body scroll\n if (layerConfig.overlay) {\n document.body.style.overflow = originalBodyOverflow || '';\n document.body.style.position = originalBodyPosition || '';\n document.body.style.width = originalBodyWidth || '';\n document.body.style.top = originalBodyTop || '';\n window.scrollTo(0, scrollY);\n }\n\n if (document.body.contains(div)) {\n document.body.removeChild(div);\n }\n // Remove from layers array\n const index = this.layers.findIndex((layer) => layer.id === layerId);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n };\n }, []); // Empty dependency array - run only once\n\n if (!divElement) {\n return null;\n }\n\n return createPortal(\n <Container\n {...props}\n ref={ref}\n onClick={overlayClickHandler}\n zIndex={currentIndex}\n {...layerConfig}\n >\n {layerConfig.component}\n </Container>,\n divElement,\n );\n };\n\n // Return callback which will trigger the un-mount.\n return [\n React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(LayerContainer),\n closeFn,\n ];\n };\n}\n\n// Return the instance of the class to create a Singleton.\nexport default new LayerManager();\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport { Card } from '../Card';\n\nexport const DialogContainer = styled(Card)`\n max-width: 768px;\n max-height: 80vh;\n transform: scale(0);\n opacity: 0;\n transition: all 0.3s ease;\n\n .nf-layer-enter & {\n opacity: 1;\n transform: scale(1);\n }\n\n .nf-layer-exit & {\n opacity: 0;\n transform: scale(0);\n }\n`;\n\nexport {\n Header as DialogHeader,\n Body as DialogBody,\n Footer as DialogFooter,\n} from '../../shared/styles';\n\ninterface DialogOptions {\n /** Flag to close dialog on `esc` click. Default value is true. */\n closeOnEsc?: boolean;\n /** Close layer overlay is clicked. Default value is true. */\n closeOnOverlayClick?: boolean;\n /** Ref forwarded to the underlying HTMLDivElement of the dialog container */\n forwardRef?: React.Ref<HTMLDivElement>;\n}\n\ninterface DialogState {\n show: boolean;\n LayerComponent?: React.ComponentType | null;\n}\n\nclass Dialog extends React.Component<\n React.PropsWithChildren<DialogOptions> & React.HTMLAttributes<HTMLDivElement>,\n DialogState\n> {\n static defaultProps = {\n closeOnEsc: true,\n closeOnOverlayClick: true,\n };\n\n private closeDialog: ((resp?: unknown) => void) | null = null;\n private onCloseFn: ((resp?: unknown) => void) | null = null;\n private lastFocusedElement: HTMLElement | null = null;\n private dialogRef = React.createRef<HTMLDivElement>();\n\n state: DialogState = {\n show: false,\n LayerComponent: undefined,\n };\n\n /**\n * Retrieves all focusable elements within the dialog.\n */\n private getFocusableElements = (): HTMLElement[] => {\n if (!this.dialogRef.current) return [];\n return Array.from(\n this.dialogRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ),\n ) as HTMLElement[];\n };\n\n /**\n * Handles keydown events to implement the focus trap.\n * Traps Tab and Shift+Tab within the dialog.\n */\n private handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n /**\n * Restores focus to the element that was focused before the dialog opened.\n */\n private restoreFocus = () => {\n if (this.lastFocusedElement) {\n const elementToBeFocused = this.lastFocusedElement;\n this.lastFocusedElement = null;\n setTimeout(() => {\n if (document.body.contains(elementToBeFocused)) {\n elementToBeFocused.focus();\n }\n }, 100);\n }\n };\n\n /**\n * Callback ref to capture the Dialog DOM element.\n * Triggers initial focus setting when the element mounts.\n */\n private setDialogRef = (node: HTMLDivElement | null) => {\n (this.dialogRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n\n if (node) {\n this.setInitialFocus(node);\n }\n\n if (this.props.forwardRef) {\n if (typeof this.props.forwardRef === 'function') {\n this.props.forwardRef(node);\n } else {\n (this.props.forwardRef as React.MutableRefObject<HTMLDivElement | null>).current =\n node;\n }\n }\n };\n\n /**\n * Sets initial focus within the dialog.\n * Tries to focus the header first, then the first interactive element, or falls back to the container.\n */\n private setInitialFocus = (root: HTMLElement) => {\n const firstChild = root.firstElementChild as HTMLElement;\n if (firstChild) {\n if (firstChild.getAttribute('tabindex') === null) {\n firstChild.setAttribute('tabindex', '-1');\n }\n firstChild.focus();\n return;\n }\n\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n } else {\n root.focus();\n }\n };\n\n shouldComponentUpdate(nextProps: DialogOptions, nextState: DialogState) {\n return this.state.show !== nextState.show;\n }\n\n componentWillUnmount() {\n // Clean up if component unmounts while dialog is open\n if (this.state.show && this.closeDialog) {\n this.closeDialog();\n }\n this.restoreFocus();\n this.closeDialog = null;\n this.onCloseFn = null;\n }\n\n public open = (closeCallback?: (resp?: unknown) => void) => {\n const { closeOnEsc, closeOnOverlayClick, children, ...rest } = this.props;\n\n // Save current focus\n this.lastFocusedElement = document.activeElement as HTMLElement;\n\n const [Component, closeFn] = LayerManager.renderLayer({\n exitDelay: 300,\n overlay: true,\n closeOnEsc,\n closeCallback: this.closeCallback,\n closeOnOverlayClick,\n position: LAYER_POSITION.DIALOG,\n component: (\n <DialogContainer\n role=\"dialog\"\n {...rest}\n ref={this.setDialogRef}\n aria-modal=\"true\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n elevated\n >\n {children}\n </DialogContainer>\n ),\n });\n\n this.closeDialog = closeFn;\n\n this.setState({\n show: true,\n LayerComponent: Component,\n });\n this.onCloseFn = closeCallback ?? null;\n };\n\n public close = (resp?: unknown) => {\n this.closeDialog?.(resp);\n };\n\n private closeCallback = (resp?: unknown) => {\n this.restoreFocus();\n this.setState({\n show: false,\n LayerComponent: undefined,\n });\n this.onCloseFn?.(resp);\n };\n\n render() {\n const { LayerComponent } = this.state;\n\n if (this.state.show && LayerComponent) {\n return <LayerComponent />;\n } else {\n return null;\n }\n }\n}\n\nexport default Dialog;\n","import React, { createRef } from 'react';\nimport { Button } from '../Button';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\n\ntype AlertOption = {\n /** Shown as header of the dialog */\n header: string;\n /** Rendered in the body. */\n body: React.ReactNode;\n /** Accept button text */\n buttonText?: string;\n /** props for the dialog */\n dialogProps?: React.ComponentProps<typeof Dialog>;\n};\n\nlet dialogCounter = 0;\n\nexport default class AlertDialog extends React.Component<AlertOption> {\n private dialog = createRef<Dialog>();\n\n static defaultProps = {\n buttonText: 'OK',\n };\n\n public show = () => {\n return new Promise((resolve) => {\n const onClose = () => resolve(null);\n this.dialog.current?.open(onClose);\n });\n };\n\n private close = () => this.dialog.current?.close();\n\n render() {\n const titleId = `nfui-alert-dialog-${dialogCounter++}-title`;\n const descriptionId = `nfui-alert-dialog-${dialogCounter++}-description`;\n\n return (\n <Dialog\n {...this.props.dialogProps}\n role=\"alertdialog\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n ref={this.dialog}\n closeOnEsc={false}\n closeOnOverlayClick={false}\n >\n {this.props.header && <DialogHeader id={titleId}>{this.props.header}</DialogHeader>}\n <DialogBody id={descriptionId}>{this.props.body}</DialogBody>\n <DialogFooter>\n <Button onClick={this.close}>{this.props.buttonText}</Button>\n </DialogFooter>\n </Dialog>\n );\n }\n}\n","import React, { createRef } from 'react';\nimport { Button, ActionButton } from '../Button';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\n\ntype ConfirmOption = {\n /** Shown as header of the dialog */\n header: string;\n /** Rendered as body of the dialog */\n body: string;\n /** Accept button text */\n yesText?: string;\n /** Reject button text */\n noText?: string;\n /** Props for the dialog */\n dialogProps?: React.ComponentProps<typeof Dialog>;\n};\n\nexport default class ConfirmDialog extends React.Component<ConfirmOption> {\n private dialog = createRef<Dialog>();\n\n static defaultProps = {\n yesText: 'Yes',\n noText: 'No',\n };\n\n public show = () => {\n return new Promise((resolve, reject) => {\n const onClose = (resp: unknown) => {\n if (resp) {\n resolve(null);\n } else {\n reject();\n }\n };\n this.dialog.current?.open(onClose);\n });\n };\n\n private cancel = () => this.dialog.current?.close(false);\n private confirm = () => this.dialog.current?.close(true);\n\n render() {\n const { header, body, yesText, noText, dialogProps } = this.props;\n return (\n <Dialog\n {...dialogProps}\n ref={this.dialog}\n closeOnEsc={false}\n closeOnOverlayClick={false}\n >\n {header && <DialogHeader>{header}</DialogHeader>}\n <DialogBody>{body}</DialogBody>\n <DialogFooter>\n <Button onClick={this.cancel}>{noText}</Button>\n <ActionButton onClick={this.confirm}>{yesText}</ActionButton>\n </DialogFooter>\n </Dialog>\n );\n }\n}\n","import React, { useState, useEffect, useId, useRef } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ntype InputProps = {\n /** Label for the field */\n label?: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.AllHTMLAttributes<HTMLInputElement>;\n\ntype InputInternalProps = InputProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.input<InputInternalProps>`\n outline: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 30px;\n width: 250px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus + span,\n &:active + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n padding: 0 8px;\n }\n\n &:disabled + span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\n/**\n * Input Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLInputElement\n */\nconst Input = React.forwardRef<HTMLInputElement, Omit<InputProps, 'as'>>((props, ref) => {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n const errorId = useId();\n const prevValueRef = useRef<string>(undefined);\n\n useEffect(() => {\n if (props.value !== undefined && props.value !== prevValueRef.current) {\n setValue(props.value);\n prevValueRef.current = props.value as string;\n }\n }, [props.value]);\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <TextField\n {...props}\n ref={ref}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n aria-invalid={!!props.errorText}\n aria-required={props.required}\n aria-describedby={props.errorText ? errorId : undefined}\n />\n <span>{props.label}</span>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n );\n});\n\nInput.displayName = 'Input';\nexport default Input;\n","import React, { useState, useEffect, useId, useRef } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ntype TextAreaProps = {\n /** Label for the field */\n label: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.InputHTMLAttributes<HTMLTextAreaElement>;\n\ntype TextAreaInternalProps = {\n touched: boolean;\n errorText?: string;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.textarea<TextAreaInternalProps>`\n border: none;\n color: inherit;\n padding: 8px;\n min-height: 150px;\n min-width: 250px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus + span,\n &:active + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:disabled + span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\n/**\n * TextArea Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLTextAreaElement\n */\nfunction TextAreaComponent(props: TextAreaProps, ref: React.Ref<HTMLTextAreaElement>) {\n const { label, errorText, value: propsValue, required, ...rest } = props;\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(propsValue || '');\n const errorId = useId();\n const prevValueRef = useRef<string>(undefined);\n\n useEffect(() => {\n if (propsValue !== undefined && propsValue !== prevValueRef.current) {\n setValue(propsValue);\n prevValueRef.current = propsValue as string;\n }\n }, [propsValue]);\n\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <TextField\n {...rest}\n ref={ref}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n required={required}\n aria-invalid={!!errorText}\n aria-required={required}\n aria-describedby={errorText ? errorId : undefined}\n />\n <span>{label}</span>\n {errorText && <ErrorContainer id={errorId}>{errorText}</ErrorContainer>}\n </Label>\n );\n}\n\nconst TextArea = React.forwardRef(TextAreaComponent);\nexport default TextArea;\n","import React, { useState, useEffect, useId, useRef } from 'react';\nimport styled from '@emotion/styled';\nimport ExpandMore from '../../icons/ExpandMore';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ntype SelectProps = {\n /** Label for the field */\n label?: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.InputHTMLAttributes<HTMLSelectElement>;\n\ntype SelectInternalProps = SelectProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n pointer-events: none;\n max-width: 268px;\n\n & svg {\n fill: currentColor;\n }\n`;\n\nconst SelectField = styled.select<SelectInternalProps>`\n border: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 32px;\n width: 268px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n pointer-events: auto;\n appearance: none;\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus ~ span,\n &:active ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid ~ span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & ~ span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 8px;\n top: 8px;\n`;\n\n/**\n * Select Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLSelectElement\n */\nfunction SelectComponent(props: SelectProps, ref: React.Ref<HTMLSelectElement>) {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n const errorId = useId();\n const prevValueRef = useRef<string>(undefined);\n\n useEffect(() => {\n if (props.value !== undefined && props.value !== prevValueRef.current) {\n setValue(props.value);\n prevValueRef.current = props.value as string;\n }\n }, [props.value]);\n\n const handleFocus = (e: React.FocusEvent<HTMLSelectElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLSelectElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <SelectField\n {...props}\n ref={ref}\n multiple={false}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n aria-invalid={!!props.errorText}\n aria-required={props.required}\n aria-describedby={props.errorText ? errorId : undefined}\n >\n <option />\n {props.children}\n </SelectField>\n <span>{props.label}</span>\n <ArrowContainer aria-hidden=\"true\">\n <ExpandMore />\n </ArrowContainer>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n );\n}\n\nconst Select = React.forwardRef(SelectComponent);\nexport default Select;\n","import React, { useCallback } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Label = styled.label`\n margin: 5px 0;\n position: relative;\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n`;\n\nconst StyledCheckmark = styled.span`\n width: 16px;\n height: 16px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n border-radius: 3px;\n margin-right: 5px;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: all 0.3s ease;\n position: relative;\n flex-shrink: 0;\n\n &::after {\n content: '';\n width: 3px;\n height: 10px;\n border-right: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-bottom: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n position: absolute;\n top: 1px;\n left: 6px;\n opacity: 0;\n transform: rotate(45deg) scale(0);\n transition: all 0.2s ease;\n }\n`;\n\nconst HiddenInput = styled.input`\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n margin: 0;\n\n /** checked */\n &:checked + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:checked + ${StyledCheckmark}::after {\n opacity: 1;\n transform: rotate(45deg) scale(1);\n }\n\n /** indeterminate */\n &:indeterminate + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:indeterminate + ${StyledCheckmark}::after {\n opacity: 1;\n height: 0;\n width: 8px;\n border-right: none;\n border-bottom: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n transform: rotate(0deg) scale(1);\n top: 7px;\n left: 4px;\n }\n\n /** active and focus */\n &:enabled:active + ${StyledCheckmark}, &:focus + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:active ~ span,\n &:focus ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** hover */\n &:enabled:hover + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:enabled:hover ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** disabled */\n &:disabled + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n cursor: not-allowed;\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n cursor: not-allowed;\n }\n\n &:checked:disabled + ${StyledCheckmark}, &:indeterminate:disabled + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype CheckboxProps = {\n /**\n * Label for the field\n * @default ''\n */\n label?: string;\n /**\n * If the field is in indeterminate state\n * @default false\n */\n indeterminate?: boolean;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * Checkbox Component\n * @param props - Component props\n * @param fwdRef - Ref forwarded to the underlying HTMLInputElement\n */\nfunction CheckboxComponent(props: CheckboxProps, fwdRef: React.Ref<HTMLInputElement>) {\n const { label = '', indeterminate = false, checked, ...rest } = props;\n\n const ref = useCallback(\n (node: HTMLInputElement | null) => {\n // Ensure the DOM `indeterminate` flag always matches the prop\n if (node) {\n node.indeterminate = !!indeterminate;\n }\n\n // Forward the node (or null) to the parent ref (supports function or ref object)\n if (typeof fwdRef === 'function') {\n fwdRef(node);\n } else if (fwdRef) {\n (fwdRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n },\n [indeterminate, fwdRef],\n );\n\n return (\n <Label>\n <HiddenInput\n {...rest}\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n aria-checked={indeterminate ? 'mixed' : checked}\n />\n <StyledCheckmark />\n <span>{label}</span>\n </Label>\n );\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(CheckboxComponent);\n\nexport default Checkbox;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Switch = styled.label`\n position: relative;\n display: inline-flex;\n margin: 5px 0;\n`;\n\nconst Input = styled.input`\n position: absolute;\n width: 0;\n height: 0;\n appearance: none;\n margin: 0;\n\n & + span {\n position: relative;\n cursor: pointer;\n width: 30px;\n height: 18px;\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n transition: 0.4s;\n border-radius: 10px;\n padding: 0 3px;\n margin: 0 10px 0 5px;\n }\n & + span:before {\n position: absolute;\n content: '';\n height: 14px;\n width: 14px;\n left: 1px;\n top: 1px;\n border: 1px solid ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n border-radius: 50%;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: 0.4s;\n }\n\n /* checked */\n &:checked + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:checked + span:before {\n transform: translateX(18px);\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* focus */\n &:enabled:focus + span:before {\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* hover */\n &:enabled:hover ~ span {\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* disabled */\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled + span {\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n cursor: not-allowed;\n }\n\n &:disabled + span:before {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n`;\n\ntype ToggleProps = {\n /** Label for the field */\n label?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * Toggle Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLInputElement\n */\nfunction ToggleComponent(props: ToggleProps, ref: React.Ref<HTMLInputElement>) {\n return (\n <Switch>\n <Input\n {...props}\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n aria-checked={props.checked}\n />\n <span></span>\n <span>{props.label}</span>\n </Switch>\n );\n}\n\nconst Toggle = React.forwardRef(ToggleComponent);\nexport default Toggle;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Label = styled.label`\n display: inline-flex;\n align-items: center;\n margin: 5px 0;\n cursor: pointer;\n position: relative;\n`;\n\nconst StyledRadio = styled.span`\n width: 16px;\n height: 16px;\n margin-right: 5px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 50%;\n display: block;\n transition: background-color 0.3s ease;\n position: relative;\n flex-shrink: 0;\n\n &::after {\n content: '';\n width: 100%;\n height: 100%;\n border-radius: 50%;\n position: absolute;\n top: 0;\n left: 0;\n box-shadow: inset 0 0 0 3px ${getThemeValue(THEME_NAME.BACKGROUND)};\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n`;\n\nconst HiddenInput = styled.input`\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n margin: 0;\n\n /* checked */\n &:checked + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:checked + ${StyledRadio}::after {\n opacity: 1;\n }\n\n /* focus */\n &:enabled:focus + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:checked:focus + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n /* hover */\n &:enabled:hover + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:enabled:hover ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* disabled */\n &:disabled + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n cursor: not-allowed;\n }\n\n &:disabled:checked + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n cursor: not-allowed;\n }\n`;\n\ntype RadioProps = {\n /** Label for the field */\n label?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * Radio Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLInputElement\n */\nfunction RadioComponent(props: RadioProps, ref: React.Ref<HTMLInputElement>) {\n const { label, ...rest } = props;\n\n return (\n <Label>\n <HiddenInput {...rest} ref={ref} type=\"radio\" />\n <StyledRadio />\n <span>{label}</span>\n </Label>\n );\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(RadioComponent);\nexport default Radio;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Input = styled.input`\n appearance: none;\n margin: 0;\n width: 0;\n\n & + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n padding: 6px 12px;\n border: none;\n border: 1px solid ${getThemeValue(THEME_NAME.PRIMARY)};\n cursor: pointer;\n margin-right: -1px;\n line-height: 18px;\n }\n\n &:enabled:focus + span {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:hover + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n\n &:enabled:checked + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n\n &:disabled + span {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled:checked + span {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n`;\n\nconst Label = styled.label`\n display: inline-flex;\n\n &:focus-within {\n z-index: 1;\n }\n`;\n\nexport const RadioGroup = styled.div`\n display: inline-flex;\n align-items: center;\n border-radius: 3px;\n margin: 5px 0;\n\n & ${Label}:first-child > span {\n border-radius: 3px 0 0 3px;\n }\n\n & ${Label}:last-child > span {\n border-radius: 0 3px 3px 0;\n }\n`;\n\ntype RadioButtonProps = {\n /** Label for the field */\n label?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * RadioButton Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLInputElement\n */\nfunction RadioButtonComponent(props: RadioButtonProps, ref: React.Ref<HTMLInputElement>) {\n const { label, ...rest } = props;\n return (\n <Label>\n <Input {...rest} type=\"radio\" ref={ref} />\n <span>{label}</span>\n </Label>\n );\n}\n\nconst RadioButton = React.forwardRef(RadioButtonComponent);\nexport default RadioButton;\n","import { createContext } from 'react';\n\ntype SingleSelect<T> = {\n value?: T;\n multiSelect: false;\n updateValue: (newVal: T) => void;\n};\n\ntype MultiSelect<T> = {\n value?: T[];\n multiSelect: true;\n // updateValue takes a single item and the provider will add/remove it\n updateValue: (newVal: T) => void;\n};\nexport type MenuContextType<T> = SingleSelect<T> | MultiSelect<T>;\n\n// Context may be undefined if used outside a Menu provider\nexport default createContext<MenuContextType<unknown> | undefined>(undefined);\n","import React, { useState, ForwardedRef } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport MenuContext from './MenuContext';\n/**\n * Props for the Menu component.\n * @template T - The type of value(s) in the menu.\n */\ntype MenuProps<T> = {\n /** Multiple Menu Items can be selected */\n multiSelect?: boolean;\n /** Value(s) selected */\n value?: T | T[];\n /** Callback when the selected value changes */\n onChange?: (value: T | T[]) => void;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>;\n\nconst MenuContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n\n & div:last-child {\n border-bottom: none;\n }\n\n &:focus-within {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n`;\n\n/**\n * Menu component that allows selection of items from a list.\n * Supports single and multi-select modes and keyboard navigation.\n *\n * @template T - The type of value(s) in the menu.\n * @param props - The menu properties.\n * @param ref - The ref forwarded to the menu container.\n */\n/**\n * Menu Component\n * @template T - The type of value(s) in the menu.\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction MenuInner<T>(props: MenuProps<T>, ref: ForwardedRef<HTMLDivElement>) {\n const { multiSelect = false, onChange, value: propValue, children, ...rest } = props;\n // State holds either a single T or an array of T when multiSelect\n const [value, setValue] = useState<unknown | undefined>(propValue);\n\n /**\n * Updates the selected value(s).\n * Handles both single and multi-select logic.\n *\n * @param {T} val - The value to select or deselect.\n */\n const updateValue = (val: unknown) => {\n let newVal: unknown;\n if (multiSelect) {\n if (Array.isArray(value)) {\n if (value.includes(val as unknown as T)) {\n newVal = (value as T[]).filter((item) => item !== val);\n } else {\n newVal = [...(value as T[]), val];\n }\n } else {\n newVal = [val];\n }\n } else {\n newVal = val;\n }\n\n setValue(newVal as T | T[]);\n onChange?.(newVal as T | T[]);\n };\n\n /**\n * Handles keyboard navigation within the menu.\n * Supports Arrow keys for navigation, and Enter/Space for selection.\n *\n * @param {React.KeyboardEvent} e - The keyboard event.\n */\n const handleKeyDown = (e: React.KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const container = e.currentTarget as HTMLElement;\n const items = Array.from(container.querySelectorAll('[role=\"option\"]')) as HTMLElement[];\n const currentIndex = items.indexOf(target as HTMLElement);\n\n let nextIndex;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n nextIndex = currentIndex + 1;\n if (nextIndex >= items.length) nextIndex = 0;\n items[nextIndex]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n nextIndex = currentIndex - 1;\n if (nextIndex < 0) nextIndex = items.length - 1;\n items[nextIndex]?.focus();\n break;\n case 'Home':\n e.preventDefault();\n items[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case 'Enter':\n case ' ': // Space\n e.preventDefault();\n target.click();\n break;\n default:\n break;\n }\n };\n\n /**\n * Handles focus events on the menu container.\n * Delegates focus to the first item if the container itself receives focus.\n *\n * @param {React.FocusEvent} e - The focus event.\n */\n const focusHandler = (e: React.FocusEvent) => {\n // Prevent trap: If focus came from inside (Shift+Tab), do NOT auto-focus again.\n // This allows focus to land on the container, and the next Shift+Tab will exit.\n if (e.currentTarget.contains(e.relatedTarget as Node)) {\n return;\n }\n\n // Only if focus is actually on the container (e.g. tabbing into it)\n // and not bubbling up from a child\n if (e.target === e.currentTarget) {\n // Prevent the container from holding focus; delegate to first item\n const firstItem = e.currentTarget.querySelector('[role=\"option\"]') as HTMLElement;\n firstItem?.focus();\n }\n };\n\n return (\n // @ts-expect-error Generic context typing\n <MenuContext.Provider value={{ value: value, multiSelect: !!multiSelect, updateValue }}>\n <MenuContainer\n {...rest}\n ref={ref}\n role=\"listbox\"\n aria-multiselectable={multiSelect}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n onFocus={focusHandler}\n >\n {children}\n </MenuContainer>\n </MenuContext.Provider>\n );\n}\n\nconst Menu = React.forwardRef(MenuInner) as <T>(\n props: MenuProps<T> & React.RefAttributes<HTMLDivElement>,\n) => React.ReactElement;\n\nexport default Menu;\n","import React, { SyntheticEvent, useContext } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport Checkbox from '../Input/Checkbox';\nimport MenuContext, { MenuContextType } from './MenuContext';\n\ntype MenuItemProps<T> = {\n /** Value of the element */\n value: T;\n} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'value'>;\n\nconst Container = styled.button<{ selected: boolean; multiselect?: boolean }>`\n font-weight: ${(props) => (props.selected ? 'bold' : 'normal')};\n padding: 8px;\n border: none;\n border-left: 4px solid\n ${(props) =>\n props.selected && !props.multiselect\n ? getThemeValue(THEME_NAME.TEXT_COLOR_DARK)\n : 'transparent'};\n background-color: transparent;\n font-size: 16px;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n min-height: 41px;\n display: flex;\n align-items: center;\n cursor: pointer;\n position: relative;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:hover,\n &:focus,\n &:focus-within {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n }\n\n & > label {\n margin: 0 4px 0 0;\n }\n`;\n\n/**\n * MenuItem Component\n * @template T - The type of value in the menu item.\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nconst MenuItemInner = <T,>(props: MenuItemProps<T>, ref: React.Ref<HTMLButtonElement>) => {\n const context = useContext(MenuContext) as MenuContextType<T> | undefined;\n if (!context) {\n throw new Error('`MenuItem` must be used within a `Menu` provider');\n }\n const { value, children, ...rest } = props;\n const clickHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n context.updateValue(value as T);\n };\n\n let selected = false;\n if (context.multiSelect) {\n const arr = context.value as unknown as T[] | undefined;\n selected = Array.isArray(arr) && arr.includes(value as unknown as T);\n } else {\n selected = (context.value as unknown as T) === value;\n }\n\n return (\n <Container\n {...rest}\n ref={ref}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n selected={selected}\n onClick={clickHandler}\n multiselect={context.multiSelect ? true : undefined}\n >\n {context.multiSelect && (\n <Checkbox\n checked={selected}\n readOnly\n tabIndex={-1}\n onClick={(e) => e.stopPropagation()}\n />\n )}\n {children}\n </Container>\n );\n};\n\nconst MenuItem = React.forwardRef(MenuItemInner) as <T>(\n props: MenuItemProps<T> & { ref?: React.Ref<HTMLButtonElement> },\n) => ReturnType<typeof MenuItemInner>;\nexport default MenuItem;\n","import React, { useCallback, useEffect, useId, useRef, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { Card } from '../Card';\n\nexport enum POPOVER_POSITION {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT',\n}\n\ninterface Translate {\n x: number;\n y: number;\n}\n\nconst positionMap = {\n [POPOVER_POSITION.TOP_LEFT]: `\n bottom: calc(100% - 10px);\n left: 0;\n `,\n [POPOVER_POSITION.TOP_RIGHT]: `\n bottom: calc(100% - 10px);\n right: 0;\n `,\n [POPOVER_POSITION.BOTTOM_RIGHT]: `\n top: calc(100% - 10px);\n right: 0;\n `,\n [POPOVER_POSITION.BOTTOM_LEFT]: `\n top: calc(100% - 10px);\n left: 0;\n `,\n};\n\nconst PopoverDiv = styled.div`\n position: relative;\n display: inline-flex;\n`;\n\nconst Popper = styled(Card)<{ position: POPOVER_POSITION; translateX: number; translateY: number }>`\n position: absolute;\n width: 100%;\n min-width: 200px;\n overflow: auto;\n animation: enter 0.3s linear;\n border-radius: 3px;\n z-index: 1;\n transform: translate(${(props) => props.translateX}px, ${(props) => props.translateY}px);\n ${(props) => positionMap[props.position]}\n\n &.closing {\n /* max-height: 0px;\n opacity: 0;\n overflow: hidden; */\n animation: exit 0.3s linear;\n }\n\n @keyframes enter {\n from {\n max-height: 0px;\n opacity: 1;\n overflow: hidden;\n }\n to {\n max-height: 300px;\n opacity: 1;\n overflow: hidden;\n }\n }\n\n @keyframes exit {\n to {\n max-height: 0px;\n opacity: 1;\n overflow: hidden;\n }\n from {\n max-height: 300px;\n opacity: 1;\n overflow: hidden;\n }\n }\n`;\n\nconst KEY_CODES = {\n ESC: 27,\n};\n\ntype PopoverProps = {\n /** Opens the popover */\n open: boolean;\n /** Anchor element for the popover */\n element: React.ElementType;\n /**\n * Position of the popover around anchor element\n * @default POPOVER_POSITION.BOTTOM_LEFT\n */\n position?: POPOVER_POSITION;\n /**\n * If the popover should close on `esc` key press\n * @default true\n */\n closeOnEsc?: boolean;\n /** Popover close callback */\n onClose?: () => void;\n};\n\n/**\n * Popover Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction PopoverComponent(\n props: React.PropsWithChildren<PopoverProps>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n open: propsOpen,\n element,\n position = POPOVER_POSITION.BOTTOM_LEFT,\n closeOnEsc = true,\n onClose,\n children,\n ...rest\n } = props;\n\n const [open, setOpen] = useState<boolean>(propsOpen);\n const [closing, setClosing] = useState<boolean>(false);\n const [translate, setTranslate] = useState<Translate>({ x: 0, y: 0 });\n const popperRef = useRef<HTMLDivElement | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n const closeTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const focusTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const popperId = useId();\n const triggerId = useId();\n\n const close = useCallback(() => {\n // Clear any existing timeouts first\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n }\n if (focusTimeoutRef.current) {\n clearTimeout(focusTimeoutRef.current);\n }\n\n setClosing(true);\n closeTimeoutRef.current = setTimeout(() => {\n setOpen(false);\n setTranslate({ x: 0, y: 0 });\n\n if (onClose) {\n onClose();\n }\n setClosing(false);\n\n // Restore focus to the trigger element after animation completes\n focusTimeoutRef.current = setTimeout(() => {\n if (triggerRef.current && document.body.contains(triggerRef.current)) {\n triggerRef.current.focus();\n }\n focusTimeoutRef.current = null;\n }, 50);\n closeTimeoutRef.current = null;\n }, 280);\n }, [onClose]);\n\n const keyupEventHandler = useCallback(\n (e: KeyboardEvent) => {\n if (closeOnEsc && e.keyCode === KEY_CODES.ESC) {\n close();\n }\n },\n [close, closeOnEsc],\n );\n\n const clickOutsideHandler = useCallback(\n (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n close();\n }\n },\n [close],\n );\n\n /**\n * Get called on popover mount.\n */\n useEffect(() => {\n document.addEventListener('keyup', keyupEventHandler);\n\n return () => {\n document.removeEventListener('keyup', keyupEventHandler);\n };\n }, [keyupEventHandler]);\n\n useEffect(() => {\n if (propsOpen) {\n setOpen(true);\n // Use requestAnimationFrame to add listener after current event loop\n const rafId = requestAnimationFrame(() => {\n document.addEventListener('click', clickOutsideHandler);\n });\n\n return () => {\n cancelAnimationFrame(rafId);\n document.removeEventListener('click', clickOutsideHandler);\n };\n } else {\n if (open) {\n close();\n }\n }\n }, [propsOpen, open, clickOutsideHandler, close]);\n\n useEffect(() => {\n if (open) {\n const {\n top = 0,\n left = 0,\n right = 0,\n } = popperRef.current?.getBoundingClientRect() ?? {};\n const height = popperRef.current?.scrollHeight ?? 0;\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n const translation = { x: 0, y: 0 };\n\n if (position === POPOVER_POSITION.BOTTOM_LEFT) {\n // overflow can happen at bottom and right\n if (viewportHeight - top - height < 0) {\n translation.y = -1 * (Math.abs(viewportHeight - top - height) + 5);\n }\n if (viewportWidth - right < 0) {\n translation.x = -1 * (Math.abs(viewportWidth - right) + 5);\n }\n } else if (position == POPOVER_POSITION.BOTTOM_RIGHT) {\n // overflow can happen at bottom and left\n if (viewportHeight - top - height < 0) {\n translation.y = -1 * (Math.abs(viewportHeight - top - height) + 5);\n }\n if (left < 0) {\n translation.x = Math.abs(left) + 5;\n }\n } else if (position === POPOVER_POSITION.TOP_LEFT) {\n // overflow can happen at top and right\n if (top - height < 0) {\n translation.y = Math.abs(top - height) + 5;\n }\n if (viewportWidth - right < 0) {\n translation.x = -1 * (Math.abs(viewportWidth - right) + 5);\n }\n } else {\n // overflow can happen at top and left\n if (top - height < 0) {\n translation.y = Math.abs(top - height) + 5;\n }\n if (left < 0) {\n translation.x = Math.abs(left) + 5;\n }\n }\n // Note it can still overflow, but in that case fitting popper inside the\n // window is not possible.\n setTranslate(translation);\n popperRef.current?.focus();\n }\n }, [open, position]);\n\n /**\n * Cleanup timeouts on unmount\n */\n useEffect(() => {\n return () => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n }\n if (focusTimeoutRef.current) {\n clearTimeout(focusTimeoutRef.current);\n }\n };\n }, []);\n\n const forwardRef = (node: HTMLDivElement | null) => {\n containerRef.current = node;\n\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n return (\n <PopoverDiv ref={forwardRef} {...rest}>\n {React.createElement(element, {\n ref: triggerRef,\n id: triggerId,\n 'aria-expanded': open,\n 'aria-haspopup': 'dialog',\n 'aria-controls': popperId,\n })}\n {open && (\n <Popper\n elevated\n tabIndex={0}\n role=\"dialog\"\n aria-labelledby={triggerId}\n id={popperId}\n position={position}\n translateX={translate.x}\n translateY={translate.y}\n className={closing ? 'closing' : ''}\n ref={popperRef}\n onClick={(e) => {\n e.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n }}\n >\n {children}\n </Popper>\n )}\n </PopoverDiv>\n );\n}\n\nconst Popover = React.forwardRef(PopoverComponent);\nexport default Popover;\n","import React, { useEffect, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { ExpandMore } from '../../icons';\nimport { Menu } from '../Menu';\nimport { Popover, POPOVER_POSITION } from '../Popover';\nimport Input from './Input';\n\ntype DropdownProps<T> = React.PropsWithChildren<{\n /** Value of the control */\n value?: T | T[];\n /**\n * If multiple elements can be selected\n * @default false\n */\n multiSelect?: boolean;\n /** Change handler */\n onChange?: (v: T | T[]) => void;\n /** Label of the control */\n label?: string;\n /** Error message */\n errorText?: string;\n /** Makes field required */\n required?: boolean;\n /** Disables the field */\n disabled?: boolean;\n}> &\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value'>;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 12px;\n top: 16px;\n pointer-events: none;\n`;\n\n/**\n * Dropdown component that allows selection from a list of options.\n * Supports single and multi-select modes.\n *\n * @template T - The type of the value(s) in the dropdown.\n * @param props - The properties for the Dropdown component.\n * @returns The rendered Dropdown component.\n */\n/**\n * Dropdown Component\n * @template T - The type of value(s) in the dropdown.\n * @param props - Component props\n * @param outerRef - Ref forwarded to the underlying HTMLInputElement\n */\nfunction DropdownComponent<T extends object>(\n props: DropdownProps<T>,\n outerRef: React.Ref<HTMLInputElement>,\n) {\n const {\n multiSelect = false,\n onChange,\n children,\n value: propValue,\n label,\n errorText,\n required,\n disabled,\n ...rest\n } = props;\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState<T | T[] | undefined>(propValue);\n const id = React.useId();\n const menuId = `${id}-menu`;\n const menuRef = React.useRef<HTMLDivElement | null>(null);\n const triggerRef = React.useRef<HTMLInputElement | null>(null);\n\n // Focus menu when opened\n useEffect(() => {\n if (open) {\n // Wait for Popover to fully open and focus itself first\n // Then move focus to the first menu item\n const timer = setTimeout(() => {\n const firstItem = menuRef.current?.querySelector('[role=\"option\"]') as HTMLElement;\n if (firstItem) {\n firstItem.focus();\n }\n }, 100); // Wait after Popover has set initial focus\n return () => clearTimeout(timer);\n }\n }, [open]);\n\n /**\n * Handles keydown events on the input trigger.\n * Opens the menu on 'Enter', 'Space', 'ArrowDown', or 'ArrowUp'.\n *\n * @param {React.KeyboardEvent<HTMLInputElement>} e - The keyboard event.\n */\n const onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(e.key)) {\n e.preventDefault();\n setOpen(true);\n }\n };\n\n /**\n * Handles changes to the dropdown value.\n * Updates local state and calls the external onChange handler.\n * Closes the dropdown if not in multi-select mode.\n *\n * @param {T | T[]} val - The new value(s).\n */\n const changeHandler = (val: T | T[]) => {\n setValue(val);\n onChange?.(val);\n\n // Close dropdown after selection if not multiSelect\n if (!multiSelect) {\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n\n /**\n * Toggles the dropdown open state on click.\n */\n const clickHandler = () => setOpen(true);\n\n const TriggerElement = React.forwardRef<HTMLInputElement>((passedProps, ref) => {\n // Helper to assign both internal triggerRef and external forwarded ref\n const assignRefs = (node: HTMLInputElement | null) => {\n triggerRef.current = node;\n\n if (!outerRef) return;\n if (typeof outerRef === 'function') {\n outerRef(node);\n } else {\n (outerRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n };\n\n // Combine the ref passed by parent with our assignRefs so both are updated\n const combinedRef: React.Ref<HTMLInputElement> = (node) => {\n assignRefs(node);\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n };\n\n return (\n <>\n <Input\n {...rest}\n {...passedProps}\n ref={combinedRef}\n type=\"text\"\n value={value && String(value)}\n label={label}\n errorText={errorText}\n onClick={clickHandler}\n onKeyDown={onKeyDown}\n required={required}\n disabled={disabled}\n readOnly\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={menuId}\n />\n <ArrowContainer aria-hidden=\"true\">\n <ExpandMore />\n </ArrowContainer>\n </>\n );\n });\n TriggerElement.displayName = 'DropdownTrigger';\n\n return (\n <Popover\n position={POPOVER_POSITION.BOTTOM_LEFT}\n open={open}\n element={TriggerElement}\n onClose={() => {\n setOpen(false);\n triggerRef.current?.focus();\n }}\n >\n <Menu\n ref={menuRef}\n id={menuId}\n value={value}\n multiSelect={multiSelect}\n onChange={changeHandler}\n >\n {children}\n </Menu>\n </Popover>\n );\n}\n\nconst Dropdown = React.forwardRef(DropdownComponent) as <T>(\n props: DropdownProps<T> & React.RefAttributes<HTMLInputElement>,\n) => React.ReactElement | null;\nexport default Dropdown;\n","import React, { createRef } from 'react';\nimport styled from '@emotion/styled';\nimport { Button, ActionButton } from '../Button';\nimport { Input } from '../Input';\nimport Dialog, { DialogHeader, DialogBody, DialogFooter } from './Dialog';\n\ntype PromptOption = {\n /** Shown as header of the dialog */\n header: string;\n /** Rendered as the body of the dialog */\n body: string;\n /** Default value for the input. */\n defaultValue?: string;\n /** Submit button text. Default value is 'Submit' */\n submitText?: string;\n /** Cancel button text. Default value is 'Cancel' */\n cancelText?: string;\n /** Props for the input. */\n inputProps?: React.HTMLProps<HTMLInputElement>;\n /** Additional props for the dialog. */\n dialogProps?: React.ComponentProps<typeof Dialog>;\n};\n\nconst BodyText = styled.p`\n margin-top: 0;\n`;\n\nconst InputContainer = styled.div`\n display: flex;\n flex: 1;\n margin-top: 10px;\n\n & > label {\n flex: 1;\n width: 100%;\n padding: 0;\n\n & > input {\n width: 100%;\n padding: 0 8px;\n box-sizing: border-box;\n }\n }\n`;\n\nconst StyledInput = styled(Input)`\n flex: 1;\n padding: 0;\n`;\n\nexport default class PromptDialog extends React.Component<PromptOption, { value?: string }> {\n static defaultProps = {\n cancelText: 'Cancel',\n submitText: 'Submit',\n defaultValue: '',\n };\n\n constructor(props: PromptOption) {\n super(props);\n this.state = {\n value: props.defaultValue,\n };\n }\n\n private dialog = createRef<Dialog>();\n\n private valueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n this.setState({\n value: e.target.value,\n });\n };\n\n private cancel = () => this.dialog.current?.close();\n\n private submit = (e: React.SyntheticEvent) => {\n e.preventDefault();\n if (!this.state.value) return;\n this.dialog.current?.close(this.state.value);\n };\n\n public show = () => {\n return new Promise((resolve, reject) => {\n const onClose = (value: unknown) => {\n if (value) {\n resolve(value);\n } else {\n reject();\n }\n this.setState({\n value: this.props.defaultValue,\n });\n };\n this.dialog.current?.open(onClose);\n });\n };\n\n render() {\n const { header, body, inputProps, submitText, cancelText, dialogProps } = this.props;\n\n return (\n <Dialog\n {...dialogProps}\n ref={this.dialog}\n closeOnEsc={false}\n closeOnOverlayClick={false}\n >\n <form onSubmit={this.submit}>\n {header && <DialogHeader>{header}</DialogHeader>}\n <DialogBody>\n <BodyText>{body}</BodyText>\n <InputContainer>\n <StyledInput\n value={this.state.value}\n onChange={this.valueChange}\n {...inputProps}\n />\n </InputContainer>\n </DialogBody>\n <DialogFooter>\n <Button type=\"button\" onClick={this.cancel}>\n {cancelText}\n </Button>\n <ActionButton onClick={this.submit}>{submitText}</ActionButton>\n </DialogFooter>\n </form>\n </Dialog>\n );\n }\n}\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\n\nexport {\n Header as DrawerHeader,\n Body as DrawerBody,\n Footer as DrawerFooter,\n} from '../../shared/styles';\n\nexport enum DRAWER_POSITION {\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n BOTTOM = 'BOTTOM',\n}\n\nconst positionStyle = (size?: string) => ({\n [DRAWER_POSITION.LEFT]: {\n before: `height: 100vh; min-width: ${size || '300px'}; transform: translateX(-100%);`,\n after: 'transform: translateX(0%);',\n },\n [DRAWER_POSITION.RIGHT]: {\n before: `height: 100vh; min-width: ${size || '300px'}; transform: translateX(100%);`,\n after: 'transform: translateX(0%);',\n },\n [DRAWER_POSITION.BOTTOM]: {\n before: `\n position: absolute;\n bottom: 0;\n width: 100%;\n height: ${size || '90vh'};\n transform: translateY(100%);\n border-radius: 15px 15px 0 0; \n `,\n after: 'transform: translateX(0%);',\n },\n});\n\nconst DrawerDiv = styled.div<{ position: DRAWER_POSITION; size?: string }>`\n display: flex;\n flex-direction: column;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: transform 0.3s ease;\n box-shadow: ${getThemeValue(THEME_NAME.MODAL_SHADOW)};\n ${(props) => positionStyle(props.size)[props.position].before}\n\n .nf-layer-enter & {\n transform: translateX(0%);\n ${(props) => positionStyle(props.size)[props.position].after}\n }\n`;\n\ntype DrawerProps = {\n /** Opens the drawer */\n open: boolean;\n /** position of the drawer */\n position: DRAWER_POSITION;\n /** size of the drawer */\n size?: string;\n /** Shows an overlay behind the drawer. */\n overlay?: boolean;\n /** Closes the drawer on esc */\n closeOnEsc?: boolean;\n /** Closes the drawer on overlay click */\n closeOnOverlayClick?: boolean;\n /** Call back function called when the drawer closes. */\n onClose?: () => void;\n /** Ref forwarded to the underlying HTMLDivElement of the drawer container */\n forwardRef?: React.Ref<HTMLDivElement> | React.MutableRefObject<HTMLDivElement | null>;\n};\n\ninterface DrawerState {\n open: boolean;\n}\n\nconst positionMap = {\n [DRAWER_POSITION.LEFT]: LAYER_POSITION.TOP_LEFT,\n [DRAWER_POSITION.RIGHT]: LAYER_POSITION.TOP_RIGHT,\n [DRAWER_POSITION.BOTTOM]: LAYER_POSITION.BOTTOM_LEFT,\n};\n\n/**\n * Drawer component\n *\n * A panel that slides in from the edge of the screen.\n * It sits on top of the application content and is often used for navigation or details.\n *\n * Accessibility:\n * - Implements ARIA `role=\"dialog\"` and `aria-modal=\"true\"`.\n * - Traps focus effectively within the drawer while open.\n * - Restores focus to the triggering element upon closure.\n * - Supports closing via ESC key and overlay click.\n */\nexport default class Drawer extends React.Component<\n React.PropsWithChildren<DrawerProps>,\n DrawerState\n> {\n state = {\n open: false,\n };\n\n static defaultProps = {\n overlay: true,\n position: DRAWER_POSITION.LEFT,\n closeOnEsc: true,\n closeOnOverlayClick: true,\n };\n\n /**\n * Syncs state with props.\n */\n static getDerivedStateFromProps(props: DrawerProps) {\n if (props.open) {\n return {\n open: true,\n };\n }\n return null;\n }\n\n private layer?: ReturnType<typeof LayerManager.renderLayer>;\n\n private closeCallback?: (resp?: unknown) => void;\n\n /**\n * Internal close handler.\n * Restores focus and calls the external onClose callback.\n */\n private onClose = () => {\n this.restoreFocus();\n this.setState({\n open: false,\n });\n this.props.onClose?.();\n this.closeCallback = undefined;\n this.layer = undefined;\n };\n\n private lastFocusedElement: HTMLElement | null = null;\n private drawerRef = React.createRef<HTMLDivElement>();\n\n /**\n * Retrieves all focusable elements within the drawer.\n */\n private getFocusableElements = (): HTMLElement[] => {\n if (!this.drawerRef.current) return [];\n return Array.from(\n this.drawerRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ),\n ) as HTMLElement[];\n };\n\n /**\n * Handles keydown events to implement the focus trap.\n * Traps Tab and Shift+Tab within the drawer.\n */\n private handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n /**\n * Lifecycle method to save the currently focused element when the drawer mounts while open.\n */\n componentDidMount() {\n if (this.props.open) {\n this.lastFocusedElement = document.activeElement as HTMLElement;\n // Handle initial open state\n this.handleOpen();\n }\n }\n\n /**\n * Handles opening the drawer by creating the layer.\n */\n private handleOpen = () => {\n const { closeOnEsc, closeOnOverlayClick, position, size, overlay, children, ...rest } =\n this.props;\n\n this.layer = LayerManager.renderLayer({\n overlay,\n exitDelay: 300,\n position: positionMap[position],\n closeCallback: this.onClose,\n closeOnEsc,\n closeOnOverlayClick,\n component: (\n <DrawerDiv\n {...rest}\n ref={this.setDrawerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n position={position}\n size={size}\n onClick={(e) => e.stopPropagation()}\n >\n {children}\n </DrawerDiv>\n ),\n });\n this.closeCallback = this.layer[1];\n this.forceUpdate();\n };\n\n /**\n * Lifecycle method to restore focus when the drawer unmounts.\n */\n componentWillUnmount() {\n if (this.props.open) {\n this.restoreFocus();\n }\n }\n\n /**\n * Restores focus to the element that was focused before the drawer opened.\n */\n private restoreFocus = () => {\n if (this.lastFocusedElement) {\n // Check if the element is still in the document\n const elementToBeFocused = this.lastFocusedElement;\n this.lastFocusedElement = null;\n setTimeout(() => {\n if (document.body.contains(elementToBeFocused)) {\n elementToBeFocused.focus();\n }\n }, 100);\n }\n };\n\n /**\n * Callback ref to capture the Drawer DOM element.\n * Triggers initial focus setting when the element mounts.\n */\n private setDrawerRef = (node: HTMLDivElement | null) => {\n // Update ref\n (this.drawerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n\n if (node) {\n // Set initial focus when the node is mounted\n this.setInitialFocus(node);\n }\n };\n\n /**\n * Sets initial focus within the drawer.\n * Tries to focus the header first, then the first interactive element, or falls back to the container.\n */\n private setInitialFocus = (root: HTMLElement) => {\n // Try to find the header (assumed to be the first child)\n const firstChild = root.firstElementChild as HTMLElement;\n if (firstChild) {\n // Ensure it's focusable\n if (firstChild.getAttribute('tabindex') === null) {\n firstChild.setAttribute('tabindex', '-1');\n }\n firstChild.focus();\n return;\n }\n\n // Fallback to focusable elements\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n } else {\n // Fallback to container\n root.focus();\n }\n };\n\n /**\n * Lifecycle method to handle Drawer updates.\n * Manages opening/closing logic via LayerManager and focus preservation.\n */\n getSnapshotBeforeUpdate(prevProps: DrawerProps) {\n const { open } = this.props;\n\n if (prevProps.open && !open) {\n this.closeCallback?.();\n this.restoreFocus();\n }\n\n if (!prevProps.open && open) {\n // Save current focus\n this.lastFocusedElement = document.activeElement as HTMLElement;\n this.handleOpen();\n }\n\n return null;\n }\n\n /**\n * Sets the ref prop passed to the Drawer Container component.\n * @param node\n */\n setRefProp = (node: HTMLDivElement | null) => {\n if (this.props.forwardRef && typeof this.props.forwardRef === 'function') {\n this.props.forwardRef(node);\n } else if (this.props.forwardRef && typeof this.props.forwardRef === 'object') {\n (this.props.forwardRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n /**\n * Renders the Drawer component via the LayerManager portal.\n */\n render() {\n if (this.state.open && this.layer) {\n const [Component] = this.layer;\n return <Component ref={this.setRefProp} />;\n }\n\n return null;\n }\n}\n","import React, { useId } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Container = styled.div<GroupProps>`\n display: inline-flex;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 3px;\n margin: 5px;\n\n /* overrides */\n & button,\n & label {\n margin: 0;\n border: none;\n border-radius: 0;\n border-left: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n box-shadow: none;\n height: 32px;\n }\n\n & > div button {\n border-left: none;\n }\n\n & input,\n & select {\n border: none;\n height: 32px;\n }\n\n & input,\n & select {\n border-radius: 0;\n }\n\n & input:active,\n & select:active {\n box-shadow: none;\n }\n\n & > div > span {\n top: 8px;\n }\n\n /* Handling for first and last child */\n & > *:first-child,\n & > label:first-child input,\n & > label:first-child select,\n & > *:first-child label,\n & > *:first-child input {\n border-left: none;\n border-radius: 2px 0 0 2px;\n }\n\n & > *:last-child,\n & > label:last-child input,\n & > label:last-child select,\n & > *:last-child label,\n & > *:last-child input {\n border-radius: 0 2px 2px 0;\n }\n\n /* focus */\n & *:focus,\n & *:focus + span {\n z-index: 1;\n }\n\n &:focus-within,\n &:hover {\n box-shadow: ${getThemeValue(THEME_NAME.HOVER_SHADOW)};\n }\n\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & > button, & > label {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n margin-left: 8px;\n font-size: 12px;\n`;\n\ntype GroupProps = React.PropsWithChildren<{\n /** Error Message for the group */\n errorText?: string;\n}>;\n\n/**\n * Group Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction GroupComponent(\n props: React.PropsWithChildren<GroupProps>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const errorId = useId();\n\n return (\n <>\n <Container\n {...props}\n ref={ref}\n aria-describedby={props.errorText ? errorId : undefined}\n >\n {props.children}\n </Container>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </>\n );\n}\n\nconst Group = React.forwardRef<HTMLDivElement, GroupProps>(GroupComponent);\nexport default Group;\n","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nexport default styled.label`\n height: 32px;\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n padding: 0 4px;\n line-height: 32px;\n min-width: 24px;\n text-align: center;\n color: ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n\n & > svg {\n height: 24px;\n width: 24px;\n vertical-align: middle;\n fill: currentColor;\n }\n`;\n","import React from 'react';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nexport {\n Header as ModalHeader,\n Body as ModalBody,\n Footer as ModalFooter,\n} from '../../shared/styles';\nimport { DialogContainer as ModalContainer } from '../Dialog/Dialog';\n\ntype ModalProps = {\n /** Opens the modal */\n open: boolean;\n /** Closes the modal on esc */\n closeOnEsc?: boolean;\n /** Closes the modal on overlay click */\n closeOnOverlayClick?: boolean;\n /** Call back function called when the modal closes. */\n onClose?: () => void;\n /** Ref forwarded to the underlying HTMLDivElement of the modal container */\n forwardRef?: React.Ref<HTMLDivElement>;\n} & React.HTMLAttributes<HTMLDivElement>;\n\ninterface ModalState {\n open: boolean;\n}\n\n/**\n * Modal component\n *\n * A dialog window that sits on top of the main application content.\n * It disrupts the user's workflow to demand attention for a critical task or decision.\n *\n * Accessibility:\n * - Implements ARIA `role=\"dialog\"` and `aria-modal=\"true\"`.\n * - Traps focus effectively within the modal while open.\n * - Restores focus to the triggering element upon closure.\n * - Supports closing via ESC key and overlay click.\n */\nexport default class Modal extends React.Component<\n React.PropsWithChildren<ModalProps>,\n ModalState\n> {\n state = {\n open: false,\n };\n\n static defaultProps = {\n closeOnEsc: true,\n closeOnOverlayClick: true,\n };\n\n /**\n * Syncs state with props.\n */\n static getDerivedStateFromProps(props: ModalProps) {\n if (props.open) {\n return {\n open: true,\n };\n }\n return null;\n }\n\n private layer?: ReturnType<typeof LayerManager.renderLayer>;\n\n private closeCallback?: (resp?: unknown) => void;\n\n /**\n * Internal close handler.\n * Restores focus and calls the external onClose callback.\n */\n private onClose = () => {\n this.restoreFocus();\n this.setState({\n open: false,\n });\n this.props.onClose?.();\n this.closeCallback = undefined;\n this.layer = undefined;\n };\n\n private lastFocusedElement: HTMLElement | null = null;\n private modalRef = React.createRef<HTMLDivElement>();\n\n /**\n * Retrieves all focusable elements within the modal.\n */\n private getFocusableElements = (): HTMLElement[] => {\n if (!this.modalRef.current) return [];\n return Array.from(\n this.modalRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ),\n ) as HTMLElement[];\n };\n\n /**\n * Handles keydown events to implement the focus trap.\n * Traps Tab and Shift+Tab within the modal.\n */\n private handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n /**\n * Lifecycle method to save the currently focused element when the modal mounts while open.\n */\n componentDidMount() {\n if (this.props.open) {\n this.lastFocusedElement = document.activeElement as HTMLElement;\n // Handle initial open state\n this.handleOpen();\n }\n }\n\n /**\n * Handles opening the modal by creating the layer.\n */\n private handleOpen = () => {\n const { closeOnEsc, closeOnOverlayClick, children, ...rest } = this.props;\n\n this.layer = LayerManager.renderLayer({\n overlay: true,\n exitDelay: 300,\n position: LAYER_POSITION.DIALOG,\n closeCallback: this.onClose,\n closeOnEsc: closeOnEsc,\n closeOnOverlayClick: closeOnOverlayClick,\n component: (\n <ModalContainer\n {...rest}\n ref={this.setModalRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n elevated\n >\n {children}\n </ModalContainer>\n ),\n });\n this.closeCallback = this.layer[1];\n this.forceUpdate();\n };\n\n /**\n * Lifecycle method to restore focus when the modal unmounts.\n */\n componentWillUnmount() {\n if (this.props.open) {\n this.restoreFocus();\n }\n // Clean up layer references\n if (this.closeCallback) {\n this.closeCallback();\n this.closeCallback = undefined;\n }\n this.layer = undefined;\n }\n\n /**\n * Restores focus to the element that was focused before the modal opened.\n */\n private restoreFocus = () => {\n if (this.lastFocusedElement) {\n // Check if the element is still in the document\n const elementToBeFocused = this.lastFocusedElement;\n this.lastFocusedElement = null;\n setTimeout(() => {\n if (document.body.contains(elementToBeFocused)) {\n elementToBeFocused.focus();\n }\n }, 100);\n }\n };\n\n /**\n * Callback ref to capture the Modal DOM element.\n * Triggers initial focus setting when the element mounts.\n */\n private setModalRef = (node: HTMLDivElement | null) => {\n // Update ref\n (this.modalRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n\n if (node) {\n // Set initial focus when the node is mounted\n this.setInitialFocus(node);\n }\n\n if (this.props.forwardRef) {\n (this.props.forwardRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n /**\n * Sets initial focus within the modal.\n * Tries to focus the header (first child) first, then the first interactive element, or falls back to the container.\n */\n private setInitialFocus = (root: HTMLElement) => {\n // Try to find the header (assumed to be the first child)\n const firstChild = root.firstElementChild as HTMLElement;\n if (firstChild) {\n // Ensure it's focusable\n if (firstChild.getAttribute('tabindex') === null) {\n firstChild.setAttribute('tabindex', '-1');\n }\n firstChild.focus();\n return;\n }\n\n // Fallback to focusable elements\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n } else {\n // Fallback to container\n root.focus();\n }\n };\n\n /**\n * Lifecycle method to handle Modal updates.\n * Manages opening/closing logic via LayerManager and focus preservation.\n */\n getSnapshotBeforeUpdate(prevProps: ModalProps) {\n const { open } = this.props;\n\n if (prevProps.open && !open) {\n this.closeCallback?.();\n this.restoreFocus();\n }\n\n if (!prevProps.open && open) {\n // Save current focus\n this.lastFocusedElement = document.activeElement as HTMLElement;\n this.handleOpen();\n }\n\n return null;\n }\n\n /**\n * Renders the Modal component via the LayerManager portal.\n */\n render() {\n if (this.state.open && this.layer) {\n const [Component] = this.layer;\n return <Component />;\n }\n\n return null;\n }\n}\n","/** Position for Notification */\nexport enum NOTIFICATION_POSITION {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT',\n}\n\n/** Type of Notifications */\nexport enum NOTIFICATION_TYPE {\n INFO = 'INFO',\n SUCCESS = 'SUCCESS',\n DANGER = 'DANGER',\n WARNING = 'WARNING',\n}\n\nexport interface NotificationOptions {\n /** Title of the notification */\n title: string;\n /** Body of the notification */\n description: string;\n /** Id for the notification, helps in de-duplication. */\n id?: string;\n /** Duration for the notification in milliseconds */\n duration?: number;\n /** Creates sticky notification */\n sticky?: boolean;\n /** Type of notification */\n type?: NOTIFICATION_TYPE;\n /** Action button text */\n buttonText?: string;\n /** Action button click callback */\n buttonClick?: () => void;\n /** Notification close callback. */\n onClose?: () => void;\n /** aria label for the close button on the notification */\n closeButtonAriaLabel?: string;\n}\n","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { Card } from '../Card';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\nconst getEntryAnimation = (position: NOTIFICATION_POSITION) => {\n switch (position) {\n case NOTIFICATION_POSITION.TOP_LEFT:\n case NOTIFICATION_POSITION.BOTTOM_LEFT:\n return 'in-left';\n default:\n return 'in-right';\n }\n};\n\nconst getExitAnimation = (position: NOTIFICATION_POSITION) => {\n switch (position) {\n case NOTIFICATION_POSITION.TOP_LEFT:\n case NOTIFICATION_POSITION.BOTTOM_LEFT:\n return 'out-left';\n default:\n return 'out-right';\n }\n};\n\nconst getBorderColor = (type?: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS_LIGHT);\n case NOTIFICATION_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR_LIGHT);\n case NOTIFICATION_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING_LIGHT);\n default:\n return getThemeValue(THEME_NAME.INFO_LIGHT);\n }\n};\n\nconst getTitleColor = (type: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS);\n case NOTIFICATION_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR);\n case NOTIFICATION_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING);\n case NOTIFICATION_TYPE.INFO:\n return getThemeValue(THEME_NAME.INFO);\n }\n};\n\nconst getTypeStyle = (type: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.INFO:\n return `color: ${getThemeValue(THEME_NAME.INFO)}`;\n case NOTIFICATION_TYPE.SUCCESS:\n return `color: ${getThemeValue(THEME_NAME.SUCCESS)}`;\n case NOTIFICATION_TYPE.DANGER:\n return `color: ${getThemeValue(THEME_NAME.ERROR)}`;\n case NOTIFICATION_TYPE.WARNING:\n return `color: ${getThemeValue(THEME_NAME.WARNING)}`;\n }\n};\n\ninterface NoticeProp extends NotificationOptions {\n position: NOTIFICATION_POSITION;\n}\n\nexport const Container = styled.div<{ position: NOTIFICATION_POSITION }>`\n display: flex;\n flex-direction: ${(props) =>\n props.position === NOTIFICATION_POSITION.TOP_LEFT ||\n props.position === NOTIFICATION_POSITION.TOP_RIGHT\n ? 'column'\n : 'column-reverse'};\n`;\n\nexport const Notice = styled(Card)<NoticeProp>`\n position: relative;\n border-radius: 3px;\n border-left: 4px solid ${(props) => getBorderColor(props.type)};\n width: 300px;\n display: flex;\n padding: 0 5px 5px 0;\n overflow: hidden;\n animation: ${(props) => getEntryAnimation(props.position)} 0.6s ease;\n\n & svg {\n fill: currentColor;\n vertical-align: middle;\n width: 20px;\n height: 20px;\n }\n\n &.leave {\n animation: ${(props) => getExitAnimation(props.position)} 0.6s;\n }\n\n @keyframes in-right {\n from {\n transform: translateX(100%);\n max-height: 0;\n opacity: 0;\n }\n\n to {\n transform: translateX(0%);\n max-height: 150px;\n opacity: 1;\n }\n }\n\n @keyframes out-right {\n to {\n transform: translateX(100%);\n max-height: 0;\n opacity: 0;\n }\n\n from {\n transform: translateX(0%);\n max-height: 100px;\n opacity: 1;\n }\n }\n\n @keyframes in-left {\n from {\n transform: translateX(-100%);\n max-height: 0;\n opacity: 0;\n }\n\n to {\n transform: translateX(0%);\n max-height: 150px;\n opacity: 1;\n }\n }\n\n @keyframes out-left {\n to {\n transform: translateX(-100%);\n max-height: 0;\n opacity: 0;\n }\n\n from {\n transform: translateX(0%);\n max-height: 100px;\n opacity: 1;\n }\n }\n`;\n\nexport const Title = styled.div<{ type: NOTIFICATION_TYPE }>`\n padding: 5px 0;\n font-size: 14px;\n color: ${(props) => getTitleColor(props.type)};\n display: flex;\n align-items: center;\n`;\n\nexport const FillParent = styled.div`\n flex: 1;\n`;\n\nexport const CloseButton = styled.button`\n position: absolute;\n background-color: transparent;\n border: none;\n padding: 0;\n top: 4px;\n right: 4px;\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:focus {\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n border-radius: 3px;\n }\n`;\n\nexport const Body = styled.div`\n padding: 5px 5px 5px 0;\n font-size: 14px;\n`;\n\nexport const IconContainer = styled.div<{ type: NOTIFICATION_TYPE }>`\n padding: 6px 10px;\n ${(props) => getTypeStyle(props.type)};\n`;\n\nexport const Footer = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 0 5px;\n`;\n\nexport const VisuallyHidden = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n`;\n","import React from 'react';\nimport { Close, Info, ReportProblem, ErrorOutline, CheckCircle } from '../../icons';\nimport { ActionButton } from '../Button';\nimport {\n Container,\n Notice,\n Title,\n IconContainer,\n FillParent,\n Body,\n CloseButton,\n Footer,\n VisuallyHidden,\n} from './style';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\ninterface NotificationManagerProps {\n // Notification Position\n position: NOTIFICATION_POSITION;\n // Callback for when stack is emptied\n onEmpty: () => void;\n // Aria label for the notification list\n ariaLabel?: string;\n}\n\n// Notice prop\ninterface NoticeProp extends NotificationOptions {\n leaving?: boolean;\n}\n\n// Manager state\ninterface NotificationManagerState {\n notices: NoticeProp[];\n}\n\ntype timeouts = {\n [id: string]: NodeJS.Timeout;\n};\n\nconst DEFAULT_DURATION = 5000;\n\n/**\n * Notification Manager class\n */\nclass NotificationManager extends React.Component<\n NotificationManagerProps,\n NotificationManagerState\n> {\n state: NotificationManagerState = {\n notices: [],\n };\n\n // bookkeeping for timeouts\n private timeouts: timeouts = {};\n\n // Set of notification ids\n private set = new Set<string>();\n\n // Refs for live regions to ensure they exist before updates\n private politeRegionRef = React.createRef<HTMLDivElement>();\n private assertiveRegionRef = React.createRef<HTMLDivElement>();\n\n /**\n * Removes a notification from stack if the notification with the given id is found.\n *\n * @param id\n */\n public remove = (id?: string) => {\n if (!id) return;\n\n // Trigger leaving animation.\n this.setState({\n notices: this.state.notices.map((notice) => ({\n ...notice,\n leaving: notice.id === id ? true : notice.leaving,\n })),\n });\n this.set.delete(id);\n\n // Remove notification on animation completion.\n setTimeout(() => {\n const notice = this.state.notices.find((notice) => notice.id === id);\n if (notice) {\n // call close callback, ignore any errors in callback.\n if (notice.onClose) {\n try {\n notice.onClose();\n } catch (e: unknown) {\n console.warn('Error in notification close callback', (e as Error).message);\n }\n }\n\n // Remove the notification\n this.setState(\n {\n notices: this.state.notices.filter((notice) => notice.id !== id),\n },\n () => {\n // Check if the stack is empty and then call the\n // empty callback function.\n if (this.state.notices.length === 0) {\n this.props.onEmpty();\n }\n },\n );\n }\n }, 550);\n };\n\n /**\n * Adds a notification to stack.\n *\n * @param notice\n */\n public add = async (notice: NotificationOptions) => {\n // Generate unique id if not provided.\n const id = notice.id || (Math.random() * 10 ** 7).toFixed(0);\n\n // De-dupe on id\n if (!this.set.has(id)) {\n const type = notice.type || NOTIFICATION_TYPE.INFO;\n const isUrgent =\n type === NOTIFICATION_TYPE.WARNING || type === NOTIFICATION_TYPE.DANGER;\n\n // Add notice to the top of stack.\n this.setState(\n (prevState) => ({\n notices: [\n {\n ...notice,\n id,\n },\n ...prevState.notices,\n ],\n }),\n () => {\n // Update live region after state update\n const announcement = `${notice.title} ${notice.description}`;\n this.updateLiveRegion(announcement, isUrgent);\n },\n );\n\n // set timeout for closing the notification.\n if (!notice.sticky) {\n this.timeouts[id] = setTimeout(\n () => this.remove(id),\n notice.duration || DEFAULT_DURATION,\n );\n }\n\n // Add id to the set.\n this.set.add(id);\n }\n\n return id;\n };\n\n /**\n * Update live region content with clear-then-set pattern for reliable VoiceOver announcements.\n *\n * @param content - The text content to announce\n * @param isAssertive - Whether to use assertive (alert) or polite (log) live region\n */\n private updateLiveRegion = (content: string, isAssertive: boolean) => {\n const region = isAssertive ? this.assertiveRegionRef.current : this.politeRegionRef.current;\n\n if (region) {\n // Add content after delay\n setTimeout(() => {\n if (region) {\n region.textContent = content;\n }\n }, 150);\n }\n };\n\n /**\n * Handler for close button click.\n *\n * @param id\n */\n public closeClickHandler = (id?: string) => () => {\n this.remove(id);\n };\n\n /**\n * Pause notification when user is hovering over it.\n *\n * @param id\n */\n public pause = (id?: string) => () => {\n if (id && this.timeouts[id]) {\n clearTimeout(this.timeouts[id]);\n delete this.timeouts[id];\n }\n };\n\n /**\n * Restart the removal of notification.\n *\n * @param id\n */\n public resume = (id?: string) => () => {\n const notice = this.state.notices.find((notice) => notice.id === id);\n if (!notice?.sticky && id && !this.timeouts[id]) {\n this.timeouts[id] = setTimeout(() => this.remove(id), DEFAULT_DURATION);\n }\n };\n\n /**\n * Clean up all pending timeouts when component unmounts\n */\n componentWillUnmount() {\n // Clear all pending timeouts\n Object.keys(this.timeouts).forEach((id) => {\n clearTimeout(this.timeouts[id]);\n });\n this.timeouts = {};\n this.set.clear();\n }\n\n render() {\n return (\n <Container position={this.props.position}>\n {/* Polite live region - uses role=\"log\" for better VoiceOver compatibility */}\n <VisuallyHidden\n ref={this.politeRegionRef}\n role=\"log\"\n aria-live=\"polite\"\n aria-atomic=\"false\"\n aria-relevant=\"additions text\"\n />\n\n {/* Assertive live region - pre-rendered and persistent */}\n <VisuallyHidden\n ref={this.assertiveRegionRef}\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n />\n\n {/* Visual notifications with list semantics */}\n <div role=\"list\" aria-label={this.props.ariaLabel}>\n {this.state.notices.map((notice) => {\n const {\n id,\n title,\n description,\n leaving,\n type = NOTIFICATION_TYPE.INFO,\n buttonText,\n buttonClick,\n closeButtonAriaLabel,\n } = notice;\n\n return (\n <Notice\n key={id}\n {...notice}\n position={this.props.position}\n className={leaving ? 'leave' : ''}\n onMouseEnter={this.pause(id)}\n onMouseLeave={this.resume(id)}\n role=\"listitem\"\n >\n <IconContainer type={type} aria-hidden=\"true\">\n {type === NOTIFICATION_TYPE.INFO && <Info />}\n {type === NOTIFICATION_TYPE.SUCCESS && <CheckCircle />}\n {type === NOTIFICATION_TYPE.WARNING && <ReportProblem />}\n {type === NOTIFICATION_TYPE.DANGER && <ErrorOutline />}\n </IconContainer>\n <FillParent>\n <Title type={type}>{title}</Title>\n <Body>{description}</Body>\n {buttonText && (\n <Footer>\n <ActionButton\n onClick={() => {\n buttonClick?.();\n }}\n >\n {buttonText}\n </ActionButton>\n </Footer>\n )}\n </FillParent>\n <CloseButton\n onClick={this.closeClickHandler(id)}\n aria-label={closeButtonAriaLabel || 'Close notification'}\n tabIndex={0}\n >\n <Close />\n </CloseButton>\n </Notice>\n );\n })}\n </div>\n </Container>\n );\n }\n}\n\nexport default NotificationManager;\n","import { type RefCallback } from 'react';\nimport { flushSync } from 'react-dom';\nimport { createRoot, type Root } from 'react-dom/client';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport NotificationManager from './NotificationManager';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\ntype NotificationProps = {\n /** Title of the notification */\n title: string;\n /** Body of the notification */\n description: string;\n /** Id for the notification, helps in de-duplication. */\n id?: string;\n /**\n * Duration for the notification in milliseconds\n * @default 5000\n */\n duration?: number;\n /**\n * Creates sticky notification\n * @default false\n */\n sticky?: boolean;\n /**\n * Type of notification\n * @default NOTIFICATION_TYPE.INFO\n */\n type?: NOTIFICATION_TYPE;\n /** Action button text */\n buttonText?: string;\n /** Action button click callback */\n buttonClick?: () => void;\n /** Notification close callback. */\n onClose?: () => void;\n /** Aria label for the close button on the notification. Defaults to \"Close notification\" */\n closeButtonAriaLabel?: string;\n};\n\n/**\n * This dummy component is used to extract props for documentation in Storybook.\n * @param props\n * @returns\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function StoryProps(props: NotificationProps) {\n return null;\n}\n\n/** Maps notification position to layer position */\nconst positionMap = {\n [NOTIFICATION_POSITION.TOP_LEFT]: LAYER_POSITION.TOP_LEFT,\n [NOTIFICATION_POSITION.TOP_RIGHT]: LAYER_POSITION.TOP_RIGHT,\n [NOTIFICATION_POSITION.BOTTOM_LEFT]: LAYER_POSITION.BOTTOM_LEFT,\n [NOTIFICATION_POSITION.BOTTOM_RIGHT]: LAYER_POSITION.BOTTOM_RIGHT,\n};\n\n/** Notification class */\nclass Notification {\n /** Helps in maintaining single instance for different positions. */\n private containers: Map<\n NOTIFICATION_POSITION,\n {\n manager: NotificationManager | null;\n root: Root;\n div: HTMLDivElement;\n }\n > = new Map();\n\n /** Pending add requests waiting for manager to mount */\n private pending: Map<NOTIFICATION_POSITION, Array<(manager: NotificationManager) => void>> =\n new Map();\n\n /**\n * Adds a notification\n *\n * @param position - The position where the notification should appear\n * @param options - Configuration options for the notification\n * @returns The notification ID or a promise that resolves to the notification ID\n */\n public add = (\n position: NOTIFICATION_POSITION,\n options: NotificationOptions,\n ariaLabel: string = 'Notifications',\n ) => {\n if (!this.containers.has(position)) {\n /** Callback ref to capture the NotificationManager instance when it mounts */\n const refCallback: RefCallback<NotificationManager> = (instance) => {\n if (instance) {\n const container = this.containers.get(position);\n if (container) {\n container.manager = instance;\n }\n\n // Process pending requests\n const queue = this.pending.get(position);\n if (queue) {\n queue.forEach((cb) => cb(instance));\n this.pending.delete(position);\n }\n }\n };\n\n const [Component] = LayerManager.renderLayer({\n closeOnEsc: false,\n closeOnOverlayClick: false,\n position: positionMap[position],\n alwaysOnTop: true,\n component: (\n <NotificationManager\n ref={refCallback}\n position={position}\n onEmpty={() => this.destroy(position)}\n ariaLabel={ariaLabel}\n />\n ),\n });\n\n // Create a div to mount the Component\n const div = document.createElement('div');\n document.body.appendChild(div);\n const root = createRoot(div);\n\n this.containers.set(position, {\n manager: null,\n root,\n div,\n });\n\n // Render the Component which will trigger the LayerManager's useEffect\n flushSync(() => {\n root.render(<Component />);\n });\n }\n\n const container = this.containers.get(position);\n if (container && container.manager) {\n return container.manager.add(options);\n }\n\n // If manager is not ready yet, add to pending queue\n return new Promise<string>((resolve) => {\n const queue = this.pending.get(position) || [];\n queue.push((manager) => {\n resolve(manager.add(options));\n });\n this.pending.set(position, queue);\n });\n };\n\n /**\n * Removes a notification\n *\n * @param position - The position of the notification container\n * @param id - The unique ID of the notification to remove\n */\n public remove = (position: NOTIFICATION_POSITION, id: string) => {\n const container = this.containers.get(position);\n if (container && container.manager) {\n container.manager.remove(id);\n }\n };\n\n /**\n * Destroys entire stack of notifications at a position.\n * Unmounts the React root and cleans up DOM elements.\n *\n * @param position - The position of the notification container to destroy\n */\n public destroy = (position: NOTIFICATION_POSITION) => {\n const container = this.containers.get(position);\n if (container) {\n container.root.unmount();\n if (document.body.contains(container.div)) {\n document.body.removeChild(container.div);\n }\n this.containers.delete(position);\n }\n };\n}\n\n/** Export a singleton instance */\nexport default new Notification();\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst SpinnerDiv = styled.div<SpinnerProp>`\n border: 4px solid ${getThemeValue(THEME_NAME.PRIMARY)};\n border-top: 4px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-radius: 50%;\n width: ${(props) => props.size}px;\n height: ${(props) => props.size}px;\n margin: 0 auto;\n animation: spin 1s linear infinite;\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\ntype SpinnerProp = {\n /**\n * Spinner's size\n * @default 30\n */\n size?: number;\n /**\n * Accessible label for screen readers\n * @default 'Loading'\n */\n label?: string;\n};\n\n/**\n * Spinner Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction SpinnerComponent(props: SpinnerProp, ref: React.Ref<HTMLDivElement>) {\n const { label = 'Loading', size = 30, ...rest } = props;\n return (\n <SpinnerDiv\n {...rest}\n ref={ref}\n size={size}\n role=\"status\"\n aria-label={label || undefined}\n aria-live=\"polite\"\n aria-busy=\"true\"\n />\n );\n}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProp>(SpinnerComponent);\nexport default Spinner;\n","import React, { Children, PropsWithChildren, useState, isValidElement } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { Ellipsis } from '../../shared/styles';\nimport { Badge, BADGE_TYPE } from '../Badge';\n\nconst Container = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 400px;\n`;\n\nconst Header = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n\n @media (min-width: 601px) {\n &::before {\n position: absolute;\n top: 25px;\n left: 0;\n right: 0;\n height: 2px;\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n content: ' ';\n z-index: 0;\n }\n }\n\n & > * {\n z-index: 1;\n }\n`;\n\nconst HeaderButton = styled.button<{ active: boolean }>`\n border: none;\n padding: 16px 24px 16px 16px;\n font-size: 16px;\n cursor: pointer;\n background-color: ${(props) =>\n props.active\n ? getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)\n : getThemeValue(THEME_NAME.BACKGROUND)};\n font-weight: ${(props) => (props.active ? 'bold' : 'normal')};\n overflow: hidden;\n display: flex;\n align-items: center;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:disabled {\n cursor: not-allowed;\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:enabled:hover,\n &:focus {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHTER)};\n }\n\n @media (max-width: 600px) {\n & {\n display: none;\n }\n }\n`;\n\nconst MobileHeader = styled.div`\n padding: 16px;\n font-size: 16px;\n line-height: 18px;\n align-items: center;\n font-weight: bold;\n flex: 1;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n @media (min-width: 601px) {\n & {\n display: none;\n }\n }\n`;\n\ntype StepperProps = PropsWithChildren<{\n /**\n * Index of currently active step\n * @default 0\n */\n active?: number;\n /** Callback function for click event on a step */\n onStepClick?: (index: number) => void;\n}> &\n React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Stepper Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction StepperComponent(props: StepperProps, ref: React.Ref<HTMLDivElement>) {\n const { active: propsActive = 0, onStepClick, children, ...rest } = props;\n\n const [active, setActive] = useState(propsActive);\n const childrenArray = Children.toArray(children);\n const stepRefs = [] as Array<HTMLButtonElement | null>;\n\n const stepClickHandler = (index: number) => () => {\n setActive(index);\n onStepClick?.(index);\n // Move focus to the active step\n stepRefs[index]?.focus();\n };\n\n const getBadgeType = (index: number, completed: boolean, disabled: boolean) => {\n if (disabled) {\n return BADGE_TYPE.DISABLED;\n } else if (index === active) {\n return BADGE_TYPE.PRIMARY;\n } else if (completed) {\n return BADGE_TYPE.SUCCESS;\n }\n return BADGE_TYPE.DISABLED;\n };\n\n // Keyboard navigation for step buttons\n const onStepKeyDown = (index: number) => (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n const next = (index + 1) % childrenArray.length;\n stepRefs[next]?.focus();\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n const prev = (index - 1 + childrenArray.length) % childrenArray.length;\n stepRefs[prev]?.focus();\n }\n };\n\n return (\n <Container ref={ref} {...rest}>\n <Header role=\"tablist\" aria-label=\"Stepper Steps\">\n {Children.map(children, (child, index) => {\n if (!isValidElement(child)) return null;\n const reactElement = child as React.ReactElement<{\n disabled?: boolean;\n completed?: boolean;\n name?: string;\n }>;\n return (\n <HeaderButton\n ref={(el) => {\n stepRefs[index] = el;\n }}\n active={index === active}\n type=\"button\"\n role=\"tab\"\n aria-selected={index === active}\n aria-disabled={!!reactElement.props.disabled}\n tabIndex={index === active ? 0 : -1}\n disabled={reactElement.props.disabled}\n onClick={stepClickHandler(index)}\n onKeyDown={onStepKeyDown(index)}\n >\n <Badge\n inline\n type={getBadgeType(\n index,\n reactElement.props.completed || false,\n reactElement.props.disabled || false,\n )}\n />\n <Ellipsis>{reactElement.props.name}</Ellipsis>\n </HeaderButton>\n );\n })}\n <MobileHeader>\n <span>\n {isValidElement(childrenArray[active])\n ? (childrenArray[active] as React.ReactElement<{ name?: string }>).props\n .name\n : ''}\n </span>\n <Badge inline type={BADGE_TYPE.PRIMARY}>\n {active + 1} of {Children.count(children)}\n </Badge>\n </MobileHeader>\n </Header>\n {childrenArray[active]}\n </Container>\n );\n}\n\nconst Stepper = React.forwardRef(StepperComponent);\nexport default Stepper;\n","import React from 'react';\nimport styled from '@emotion/styled';\n\nconst Container = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n`;\n\ntype StepProps = {\n /**\n * Name of the step to be displayed in the header\n */\n name: string;\n /**\n * Disables the step\n * @default false\n */\n disabled?: boolean;\n /**\n * Marks the step as completed\n * @default false\n */\n completed?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Step Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction StepComponent(props: React.PropsWithChildren<StepProps>, ref: React.Ref<HTMLDivElement>) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { name, disabled, completed, ...rest } = props;\n return <Container {...rest} ref={ref} />;\n}\n\nconst Step = React.forwardRef(StepComponent);\nexport default Step;\n","import {\n useState,\n Children,\n useEffect,\n PropsWithChildren,\n isValidElement,\n forwardRef,\n} from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Button = styled.button<{ active: boolean }>`\n background-color: transparent;\n border: none;\n padding: 8px 12px;\n font-size: 14px;\n border-radius: 3px 3px 0 0;\n border-bottom: ${(props) =>\n props.active ? `3px solid ${getThemeValue(THEME_NAME.PRIMARY)}` : 'none'};\n color: ${(props) =>\n props.active\n ? getThemeValue(THEME_NAME.PRIMARY)\n : getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n cursor: pointer;\n\n &:hover,\n &:focus {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHTER)};\n border-bottom: ${(props) =>\n props.active\n ? `3px solid ${getThemeValue(THEME_NAME.PRIMARY)}`\n : `3px solid ${getThemeValue(THEME_NAME.PRIMARY)}`};\n }\n\n &[disabled] {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n border-bottom: 3px solid ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n`;\n\nconst ButtonContainer = styled.div`\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n margin-bottom: 5px;\n position: relative;\n`;\n\nconst TabBody = styled.div`\n min-height: 150px;\n`;\n\ntype ITabsProps = PropsWithChildren<{\n /**\n * Active Tab Index\n * @default 0\n */\n active?: number;\n /** OnChange event handler */\n onChange?: (index: number) => void;\n /** Props for div that contains tab body */\n bodyProps?: React.HTMLAttributes<HTMLDivElement>;\n}>;\n\n/**\n * Tabs Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction TabsComponent(props: ITabsProps, ref: React.Ref<HTMLDivElement>) {\n const { active: propsActive = 0, onChange, bodyProps, children, ...rest } = props;\n const [active, setActive] = useState(propsActive);\n const tabRefs = [] as Array<HTMLButtonElement | null>;\n const childrenArray = Children.toArray(children);\n\n const switchTab = (index: number) => () => {\n setActive(index);\n tabRefs[index]?.focus();\n onChange?.(index);\n };\n\n // Keyboard navigation for tab buttons\n const onTabKeyDown = (index: number) => (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n const next = (index + 1) % childrenArray.length;\n tabRefs[next]?.focus();\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n const prev = (index - 1 + childrenArray.length) % childrenArray.length;\n tabRefs[prev]?.focus();\n }\n };\n\n useEffect(() => {\n if (propsActive !== undefined) {\n setActive(propsActive);\n onChange?.(propsActive);\n }\n }, [propsActive, onChange]);\n\n // Generate unique IDs for tabs and panels using sanitized tab name and index\n const sanitize = (str: string) => str.replace(/[^a-zA-Z0-9_-]/g, '').toLowerCase();\n const tabIds = childrenArray.map((child, i) => {\n const name =\n isValidElement(child) && (child as React.ReactElement<{ name?: string }>).props.name\n ? (child as React.ReactElement<{ name?: string }>).props.name\n : `tab${i}`;\n return `nfui-tab-${sanitize(name || '')}-${i}`;\n });\n const panelIds = childrenArray.map((child, i) => {\n const name =\n isValidElement(child) && (child as React.ReactElement<{ name?: string }>).props.name\n ? (child as React.ReactElement<{ name?: string }>).props.name\n : `tab${i}`;\n return `nfui-tabpanel-${sanitize(name || '')}-${i}`;\n });\n\n // Sanity check for active index\n if (active === undefined || active < 0 || active >= childrenArray.length) {\n return null;\n }\n\n return (\n <>\n <ButtonContainer role=\"tablist\" aria-label=\"Tabs\" ref={ref} {...rest}>\n {childrenArray.map((child, index) => {\n const reactElement = child as React.ReactElement<{\n disabled?: boolean;\n name?: string;\n }>;\n return (\n <Button\n key={tabIds[index]}\n ref={(el) => {\n tabRefs[index] = el;\n }}\n id={tabIds[index]}\n type=\"button\"\n role=\"tab\"\n aria-selected={active === index}\n aria-controls={panelIds[index]}\n tabIndex={active === index ? 0 : -1}\n active={active === index}\n onClick={switchTab(index)}\n onKeyDown={onTabKeyDown(index)}\n disabled={isValidElement(child) ? reactElement.props.disabled : false}\n aria-disabled={\n isValidElement(child) ? reactElement.props.disabled : false\n }\n >\n {isValidElement(child) ? reactElement.props.name : ''}\n </Button>\n );\n })}\n </ButtonContainer>\n <TabBody\n {...bodyProps}\n id={panelIds[active]}\n role=\"tabpanel\"\n aria-labelledby={tabIds[active]}\n tabIndex={0}\n >\n {childrenArray[active]}\n </TabBody>\n </>\n );\n}\n\nconst Tabs = forwardRef(TabsComponent);\nexport default Tabs;\n","import { PropsWithChildren } from 'react';\n\ntype TabProps = PropsWithChildren<{\n /** Name of the tab. This shown in the tab's button */\n name: string;\n /**\n * If the tab is disabled\n * @default false\n */\n disabled?: boolean;\n}>;\n\nconst Tab = (props: TabProps) => {\n const { children } = props;\n return <>{children}</>;\n};\n\nexport default Tab;\n","import { createRoot, type Root } from 'react-dom/client';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport { Card } from '../Card';\n\nexport interface ToastOptions {\n text: string;\n buttonText?: string;\n buttonClick?: () => void;\n duration?: number;\n type?: TOAST_TYPE;\n}\n\nexport enum TOAST_TYPE {\n NORMAL = 'NORMAL',\n INFO = 'INFO',\n SUCCESS = 'SUCCESS',\n WARNING = 'WARNING',\n DANGER = 'DANGER',\n}\n\nconst getBackgroundColor = (type: TOAST_TYPE) => {\n switch (type) {\n case TOAST_TYPE.INFO:\n return getThemeValue(THEME_NAME.INFO);\n case TOAST_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS);\n case TOAST_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING);\n case TOAST_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR);\n case TOAST_TYPE.NORMAL:\n return getThemeValue(THEME_NAME.TOAST);\n }\n};\n\nconst ToastContainer = styled(Card)<{ type: TOAST_TYPE }>`\n box-sizing: border-box;\n border-radius: 3px;\n padding: 12px;\n background-color: ${(props) => getBackgroundColor(props.type)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n margin: 20px;\n font-size: 14px;\n line-height: 20px;\n transform: translateY(100%);\n transition: transform 0.3s ease;\n width: 344px;\n display: flex;\n align-items: center;\n position: relative;\n\n & svg {\n width: 20px;\n height: 20px;\n fill: currentColor;\n }\n\n @media (max-width: 480px) {\n & {\n margin: 0;\n width: 100vw;\n border-radius: 0;\n }\n }\n\n .nf-layer-enter & {\n transform: translateY(0%);\n }\n`;\n\nconst TextContainer = styled.div`\n flex: 1;\n`;\n\nconst CloseContainer = styled.button`\n background-color: transparent;\n color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n padding: 6px 10px;\n border: none;\n border-radius: 3px;\n text-transform: uppercase;\n cursor: pointer;\n\n &:focus {\n background-color: rgba(255, 255, 255, 0.1);\n }\n`;\n\nconst DEFAULT_DURATION = 2000;\n\nconst createAriaLiveRegion = (id: string, ariaLive: 'polite' | 'assertive') => {\n const region = document.createElement('div');\n region.id = id;\n region.style.position = 'absolute';\n region.style.width = '1px';\n region.style.height = '1px';\n region.style.padding = '0';\n region.style.margin = '-1px';\n region.style.overflow = 'hidden';\n region.style.clip = 'rect(0, 0, 0, 0)';\n region.style.whiteSpace = 'nowrap';\n region.style.borderWidth = '0';\n region.setAttribute('role', ariaLive === 'assertive' ? 'alert' : 'log');\n region.setAttribute('aria-live', ariaLive);\n region.setAttribute('aria-atomic', 'true');\n return region;\n};\n\nclass Toast {\n private element?: HTMLDivElement;\n private ariaLiveContainer?: HTMLDivElement;\n private toast?: ReturnType<typeof LayerManager.renderLayer>;\n private timeout?: NodeJS.Timeout;\n private root?: Root;\n private politeRegion?: HTMLDivElement;\n private assertiveRegion?: HTMLDivElement;\n private isPaused: boolean = false;\n private currentOptions: ToastOptions | null = null;\n\n constructor() {\n if (typeof document === 'undefined') return;\n\n this.element = document?.createElement('div');\n this.ariaLiveContainer = document?.createElement('div');\n this.ariaLiveContainer.id = 'nf-toast-container';\n document.body.appendChild(this.ariaLiveContainer);\n\n this.politeRegion = createAriaLiveRegion('nf-toast-polite-region', 'polite');\n this.assertiveRegion = createAriaLiveRegion('nf-toast-assertive-region', 'assertive');\n this.ariaLiveContainer.appendChild(this.politeRegion);\n this.ariaLiveContainer.appendChild(this.assertiveRegion);\n\n this.setupKeyboardListeners();\n }\n\n /**\n * Clean up event listeners and DOM elements\n * Call this when the app is tearing down (useful for tests)\n */\n public destroy = () => {\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n this.remove();\n if (this.ariaLiveContainer && document.body.contains(this.ariaLiveContainer)) {\n document.body.removeChild(this.ariaLiveContainer);\n }\n this.politeRegion = undefined;\n this.assertiveRegion = undefined;\n this.ariaLiveContainer = undefined;\n };\n\n /**\n * Set up keyboard listener for dismissing toast with Escape key\n */\n private setupKeyboardListeners = () => {\n if (typeof document !== 'undefined') {\n document.addEventListener('keydown', this.handleKeyDown);\n }\n };\n\n /**\n * Handle keyboard events for toast interaction\n */\n private handleKeyDown = (event: KeyboardEvent) => {\n if (!this.toast) return;\n\n // Escape key dismisses the toast\n if (event.key === 'Escape') {\n this.remove();\n }\n // Space key pauses/resumes auto-dismiss\n else if (event.key === ' ' && this.currentOptions) {\n event.preventDefault();\n if (this.isPaused) {\n this.resumeTimeout();\n } else {\n this.pauseTimeout();\n }\n }\n };\n\n /**\n * Update the appropriate live region with toast content\n */\n private updateLiveRegion = (content: string, isAssertive: boolean) => {\n const region = isAssertive ? this.assertiveRegion : this.politeRegion;\n\n if (region) {\n region.textContent = '';\n // Add content after delay\n setTimeout(() => {\n if (region) {\n region.textContent = content;\n }\n }, 200);\n }\n };\n\n public remove = () => {\n if (this.toast) {\n this.toast[1]();\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = undefined;\n }\n }\n this.toast = undefined;\n this.currentOptions = null;\n this.isPaused = false;\n\n setTimeout(() => {\n if (!this.toast && this.root) {\n this.root.unmount();\n this.root = undefined;\n }\n }, 300);\n };\n\n /**\n * Pause toast auto-dismiss\n */\n private pauseTimeout = () => {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.isPaused = true;\n }\n };\n\n /**\n * Resume toast auto-dismiss\n */\n private resumeTimeout = () => {\n if (this.currentOptions && this.isPaused) {\n this.timeout = setTimeout(() => {\n this.remove();\n }, this.currentOptions.duration || DEFAULT_DURATION);\n this.isPaused = false;\n }\n };\n\n /**\n * Pause toast when user is hovering over it.\n */\n public pause = () => {\n this.pauseTimeout();\n };\n\n /**\n * Restart the removal of toast.\n */\n public resume = (options: ToastOptions) => () => {\n this.currentOptions = options;\n this.resumeTimeout();\n };\n\n public add(options: ToastOptions) {\n if (!this.element) return;\n\n const { text, buttonText, buttonClick, duration, type = TOAST_TYPE.NORMAL } = options;\n this.currentOptions = options;\n this.isPaused = false;\n this.remove();\n\n // Determine if this is an assertive message (warning/danger)\n const isAssertive = type === TOAST_TYPE.WARNING || type === TOAST_TYPE.DANGER;\n\n // Announce to screen readers\n const announcement = buttonText ? `${text} ${buttonText} button available` : text;\n this.updateLiveRegion(announcement, isAssertive);\n\n this.toast = LayerManager.renderLayer({\n exitDelay: 300,\n closeOnEsc: false,\n closeOnOverlayClick: false,\n alwaysOnTop: true,\n position: LAYER_POSITION.BOTTOM_LEFT,\n component: (\n <>\n {/* Visual toast (hidden from screen readers) */}\n <ToastContainer\n {...options}\n type={type}\n elevated\n onMouseEnter={this.pause}\n onMouseLeave={this.resume(options)}\n aria-hidden=\"true\"\n >\n <TextContainer>{text}</TextContainer>\n {buttonText && (\n <CloseContainer\n onClick={buttonClick}\n type=\"button\"\n aria-label={`${buttonText} - Press Space to pause auto-dismiss, Escape to close`}\n >\n {buttonText}\n </CloseContainer>\n )}\n </ToastContainer>\n </>\n ),\n });\n const Component = this.toast[0];\n this.root = createRoot(this.element);\n this.root.render(<Component />);\n\n this.timeout = setTimeout(() => {\n this.remove();\n }, duration || DEFAULT_DURATION);\n }\n}\n\nexport default new Toast();\n","import React, { useId } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nexport enum TOOLTIP_POSITION {\n TOP = 'TOP',\n BOTTOM = 'BOTTOM',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n}\n\nconst positionStyle = {\n [TOOLTIP_POSITION.LEFT]: `\n left: 0;\n transform: translateX(-50%) scale(0);\n `,\n [TOOLTIP_POSITION.RIGHT]: `\n right: 0;\n transform: translateX(50%) scale(0);\n `,\n [TOOLTIP_POSITION.TOP]: `\n top: 0;\n transform: translateY(-10px) scale(0);\n `,\n [TOOLTIP_POSITION.BOTTOM]: `\n bottom: 0;\n transform: translateY(10px) scale(0);\n `,\n};\n\nconst positionHoverStyle = {\n [TOOLTIP_POSITION.LEFT]: `\n transform: translateX(-100%) scale(1);\n `,\n [TOOLTIP_POSITION.RIGHT]: `\n transform: translateX(100%) scale(1);\n `,\n [TOOLTIP_POSITION.TOP]: `\n transform: translateY(-25px) scale(1);\n `,\n [TOOLTIP_POSITION.BOTTOM]: `\n transform: translateY(25px) scale(1);\n `,\n};\n\nconst TooltipDiv = styled.div<{ position: TOOLTIP_POSITION }>`\n position: absolute;\n background-color: ${getThemeValue(THEME_NAME.TOOLTIP_COLOR)};\n padding: 5px;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-radius: 3px;\n transition: transform 0.3s ease;\n font-size: 12px;\n z-index: 1;\n ${(props) => positionStyle[props.position]}\n`;\n\nconst TooltipContainer = styled.div<{ position: TOOLTIP_POSITION }>`\n position: relative;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n\n &:hover ${TooltipDiv}, &:focus-within ${TooltipDiv} {\n ${(props) => positionHoverStyle[props.position]}\n }\n`;\n\ntype TooltipProps = React.PropsWithChildren<{\n /** Text to show in the tooltip */\n tooltipText: string | React.ReactNode;\n /**\n * Position of the tooltip\n * @default TOOLTIP_POSITION.BOTTOM\n */\n position?: TOOLTIP_POSITION;\n}> &\n React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Tooltip Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction TooltipComponent(props: TooltipProps, ref: React.Ref<HTMLDivElement>) {\n const { children, position = TOOLTIP_POSITION.BOTTOM, ...rest } = props;\n const tooltipId = useId();\n\n // Clone the child to inject aria-describedby and tabIndex if possible\n const trigger = React.isValidElement(children)\n ? React.cloneElement(\n children as React.ReactElement<{ tabIndex?: number; 'aria-describedby'?: string }>,\n {\n 'aria-describedby': tooltipId,\n tabIndex:\n (\n children as React.ReactElement<{\n tabIndex?: number;\n 'aria-describedby'?: string;\n }>\n ).props &&\n typeof (\n children as React.ReactElement<{\n tabIndex?: number;\n 'aria-describedby'?: string;\n }>\n ).props.tabIndex !== 'undefined'\n ? (\n children as React.ReactElement<{\n tabIndex?: number;\n 'aria-describedby'?: string;\n }>\n ).props.tabIndex\n : 0,\n },\n )\n : children;\n\n return (\n <TooltipContainer {...rest} ref={ref} position={position}>\n {trigger}\n <TooltipDiv id={tooltipId} aria-hidden=\"true\" role=\"tooltip\" position={position}>\n {rest.tooltipText as React.ReactNode}\n </TooltipDiv>\n </TooltipContainer>\n );\n}\n\nconst Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(TooltipComponent);\nexport default Tooltip;\n"],"names":["Accordion","props","active","setActive","useState","onStepClick","index","disabled","newIndex","_jsx","_Fragment","Children","map","children","child","isValidElement","reactElement","cloneElement","open","CheckCircle","_jsxs","svg","height","viewBox","width","fill","path","d","ExpandMore","FiberManualRecord","circle","cx","cy","r","Close","THEME_NAME","themeNameMap","getThemeValue","key","Ellipsis","styled","Header","BORDER_LIGHT_COLOR","Body","Footer","BADGE_TYPE","BadgeSpan","type","SUCCESS","WARNING","ERROR","DISABLED","PRIMARY","TEXT_COLOR_LIGHT","inline","BadgeComponent","ref","Badge","React","forwardRef","StyledCard","BACKGROUND","elevated","MODAL_SHADOW","SHADOW","CardComponent","Card","Step","StepHeader","TEXT_COLOR_DARK","PRIMARY_LIGHT","HeaderContainer","completed","LIGHT_GREY","ExpandContainer","StepBody","AccordionBadge","AccordionStepBody","AccordionStepFooter","AccordionStepComponent","setHeight","header","errorText","restProps","headerId","useId","regionId","contentRef","useRef","useEffect","el","current","scrollHeight","onClick","aria-expanded","aria-controls","id","aria-hidden","DANGER","role","aria-labelledby","AccordionStep","StyledButton","BORDER_COLOR","DISABLED_BACKGROUND","ButtonComponent","rest","Button","StyledLinkButton","LinkButtonComponent","LinkButton","StyledRaisedButton","HOVER_SHADOW","RaisedButtonComponent","RaisedButton","StyledActionButton","ActionButtonComponent","ActionButton","StyledIconButton","IconButtonComponent","IconButton","Container","ERROR_LIGHT","ChipComponent","label","onCloseClick","closeButtonAriaLabel","keyUpHandler","e","buttonKeyDownHandler","stopPropagation","onKeyUp","onKeyDown","aria-label","Chip","ORIENTATION","DragContext","createContext","Item","showIndicator","orientation","VERTICAL","HORIZONTAL","dragging","DragKnob","DragItem","dragOver","totalItems","setAnnouncement","touchTimerRef","context","useContext","vibrate","duration","navigator","dragStartHandler","setStartIndex","setIsDragging","dragOverHandler","preventDefault","startIndex","dragExitHandler","dropHandler","drop","touchStartHandler","clearTimeout","setTimeout","setDragOver","document","body","style","overflow","touchMoveHandler","touch","touches","isDragging","elementFromPoint","clientX","clientY","overAttr","closest","getAttribute","overIndex","parseInt","touchEndHandler","handleKeyDown","isVertical","moveUp","moveDown","isGrabbed","i18n","replacePlaceholders","droppedAnnouncementTemplate","position","startGrab","grabbedAnnouncementTemplate","cancel","cancelledAnnouncementTemplate","onDrop","movedAnnouncementTemplate","draggable","data-drag-index","tabIndex","itemAriaLabelTemplate","aria-grabbed","onDragStart","undefined","onDragOver","onDragLeave","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","dragHandleAriaLabel","DragIndicator","VisuallyHidden","DragAndDropComponent","originalIndex","setOriginalIndex","announcement","childrenArray","toArray","length","template","data","replace","String","grabKey","dropKey","altDropKey","cancelKey","moveKeys","Provider","value","aria-live","aria-atomic","DragAndDrop","Label","DISABLED_BORDER","touched","required","text","ErrorContainer","ChipInputComponent","propValue","addedAnnouncementTemplate","removedAnnouncementTemplate","setText","setTouched","setValue","InputRef","errorId","useImperativeHandle","replacePlaceholder","prevPropValueRef","Array","isArray","prevValue","isEqual","every","val","updateValue","newValue","deduped","from","Set","onChange","handleFocus","onFocus","handleChange","target","handleKeyUp","trim","validity","valid","removeChip","chipToRemove","filter","chip","start","end","newItems","item","splice","input","aria-required","aria-invalid","aria-describedby","div","span","ChipInput","LAYER_POSITION","defaultConfig","closeOnEsc","overlay","component","exitDelay","closeOnOverlayClick","alwaysOnTop","POSITION_STYLE","BACKDROP_COLOR","zIndex","KEY_CODES","ESC","LayerManager","layers","nextIndex","timeoutIds","Map","destroy","keyupHandler","removeEventListener","forEach","clear","layer","contains","element","removeChild","unmount","resp","setAttribute","findIndex","timeoutId","window","delete","config","closeCallback","err","Error","console","warn","message","set","Empty","renderLayer","layerConfig","currentIndex","className","layerId","overlayClickHandler","find","l","closeFn","LayerContainer","divElement","setDivElement","createElement","appendChild","currentLayer","push","modifiedElements","originalBodyOverflow","originalBodyPosition","originalBodyWidth","originalBodyTop","scrollY","bodyChildren","tagName","hadAriaHidden","hasAttribute","previousValue","top","removeAttribute","scrollTo","createPortal","keyCode","lastLayer","slice","addEventListener","DialogContainer","Dialog","Component","shouldComponentUpdate","nextProps","nextState","state","show","componentWillUnmount","closeDialog","restoreFocus","onCloseFn","render","LayerComponent","lastFocusedElement","dialogRef","createRef","getFocusableElements","querySelectorAll","focusableElements","firstElement","lastElement","shiftKey","activeElement","focus","elementToBeFocused","setDialogRef","node","setInitialFocus","root","firstChild","firstElementChild","DIALOG","aria-modal","setState","close","defaultProps","dialogCounter","AlertDialog","titleId","descriptionId","dialogProps","dialog","DialogHeader","DialogBody","DialogFooter","buttonText","Promise","resolve","onClose","ConfirmDialog","yesText","noText","confirm","reject","TextField","Input","prevValueRef","onChangeHandler","displayName","TextAreaComponent","propsValue","TextArea","SelectField","ArrowContainer","SelectComponent","multiple","option","Select","StyledCheckmark","HiddenInput","CheckboxComponent","fwdRef","indeterminate","checked","useCallback","aria-checked","Checkbox","Switch","ToggleComponent","Toggle","StyledRadio","RadioComponent","Radio","RadioGroup","RadioButtonComponent","RadioButton","MenuContainer","MenuInner","multiSelect","newVal","includes","container","currentTarget","items","indexOf","click","focusHandler","relatedTarget","firstItem","querySelector","MenuContext","aria-multiselectable","Menu","selected","multiselect","MenuItemInner","clickHandler","arr","aria-selected","readOnly","MenuItem","POPOVER_POSITION","positionMap","PopoverDiv","Popper","translateX","translateY","PopoverComponent","propsOpen","setOpen","closing","setClosing","translate","setTranslate","x","y","popperRef","containerRef","triggerRef","closeTimeoutRef","focusTimeoutRef","popperId","triggerId","keyupEventHandler","clickOutsideHandler","rafId","requestAnimationFrame","cancelAnimationFrame","left","right","getBoundingClientRect","viewportWidth","documentElement","clientWidth","viewportHeight","clientHeight","translation","Math","abs","nativeEvent","stopImmediatePropagation","Popover","DropdownComponent","outerRef","menuId","menuRef","timer","changeHandler","TriggerElement","passedProps","assignRefs","combinedRef","aria-haspopup","BOTTOM_LEFT","Dropdown","BodyText","InputContainer","StyledInput","PromptDialog","inputProps","submitText","cancelText","form","onSubmit","submit","valueChange","defaultValue","DRAWER_POSITION","positionStyle","size","before","after","DrawerDiv","TOP_LEFT","TOP_RIGHT","Drawer","getDerivedStateFromProps","componentDidMount","handleOpen","getSnapshotBeforeUpdate","prevProps","setRefProp","drawerRef","setDrawerRef","forceUpdate","GroupComponent","Group","Modal","modalRef","ModalContainer","setModalRef","NOTIFICATION_POSITION","NOTIFICATION_TYPE","getEntryAnimation","getExitAnimation","getBorderColor","SUCCESS_LIGHT","WARNING_LIGHT","INFO_LIGHT","getTitleColor","INFO","getTypeStyle","Notice","Title","FillParent","CloseButton","IconContainer","DEFAULT_DURATION","NotificationManager","Object","keys","timeouts","politeRegionRef","aria-relevant","assertiveRegionRef","ariaLabel","notices","notice","title","description","leaving","buttonClick","onMouseEnter","pause","onMouseLeave","resume","Info","ReportProblem","ErrorOutline","closeClickHandler","remove","onEmpty","add","random","toFixed","has","isUrgent","prevState","updateLiveRegion","sticky","content","isAssertive","region","textContent","BOTTOM_RIGHT","Notification","containers","pending","options","refCallback","instance","get","manager","queue","cb","createRoot","flushSync","SpinnerDiv","SpinnerComponent","aria-busy","Spinner","HeaderButton","PRIMARY_LIGHTER","MobileHeader","StepperComponent","propsActive","stepRefs","stepClickHandler","getBadgeType","onStepKeyDown","next","prev","aria-disabled","name","count","Stepper","StepComponent","ButtonContainer","TabBody","TabsComponent","bodyProps","tabRefs","switchTab","onTabKeyDown","sanitize","str","toLowerCase","tabIds","i","panelIds","Tabs","Tab","TOAST_TYPE","getBackgroundColor","TOAST","ToastContainer","TextContainer","CloseContainer","createAriaLiveRegion","ariaLive","padding","margin","clip","whiteSpace","borderWidth","Toast","currentOptions","isPaused","toast","timeout","ariaLiveContainer","politeRegion","assertiveRegion","setupKeyboardListeners","event","resumeTimeout","pauseTimeout","TOOLTIP_POSITION","positionHoverStyle","TooltipDiv","TOOLTIP_COLOR","TooltipContainer","TooltipComponent","tooltipId","trigger","tooltipText","Tooltip"],"mappings":";;;;;;;;AAEA,SAASA,UAAUC,KAAwC,EAAA;AACvD,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAAA,CAAU,GAAGC,cAAAA,CAASH,MAAMC,MAAM,CAAA;IAEjD,MAAMG,WAAAA,GAAc,CAACC,KAAAA,EAAeC,QAAAA,GAAsB,IAAA;AACtD,YAAA,IAAIA,QAAAA,EAAU;AACV,gBAAA;AACJ,YAAA;AAEA,YAAA,MAAMC,QAAAA,GAAWF,KAAAA,KAAUJ,MAAAA,GAASI,KAAAA,GAAQ,EAAC;YAC7C,IAAIL,KAAAA,CAAMI,WAAW,EAAE;AACnBJ,gBAAAA,KAAAA,CAAMI,WAAW,CAACG,QAAAA,CAAAA;YACtB,CAAA,MAAO;gBACHL,SAAAA,CAAUK,QAAAA,CAAAA;AACd,YAAA;AACJ,QAAA,CAAA;IAEA,qBACIC,cAAA,CAAAC,mBAAA,EAAA;AACKC,QAAAA,QAAAA,EAAAA,cAAAA,CAASC,GAAG,CAACX,KAAAA,CAAMY,QAAQ,EAAE,CAACC,KAAAA,EAAOR,KAAAA,GAAAA;YAClC,IAAI,eAACS,qBAAeD,KAAAA,CAAAA,EAAQ;gBACxB,OAAOA,KAAAA;AACX,YAAA;AACA,YAAA,MAAME,YAAAA,GAAeF,KAAAA;AAKrB,YAAA,qBAAOG,mBAAaD,YAAAA,EAAc;AAC9BE,gBAAAA,IAAAA,EAAMhB,MAAAA,KAAWI,KAAAA;AACjBD,gBAAAA,WAAAA,EAAaA,YAAYC,KAAAA,EAAOU,YAAAA,CAAaf,KAAK,CAACM,QAAQ,IAAI,KAAA;AACnE,aAAA,CAAA;AACJ,QAAA,CAAA;;AAGZ;;ACpCe,SAASY,cAAYlB,KAAoC,EAAA;AACpE,IAAA,qBACImB,eAAA,CAACC,KAAAA,EAAAA;QAAIC,MAAAA,EAAO,IAAA;QAAKC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,IAAA;QAAKC,IAAAA,EAAK,cAAA;AAAgB,QAAA,GAAGxB,KAAK;;0BACzEQ,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE,gCAAA;gBAAiCF,IAAAA,EAAK;;0BAC9ChB,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE;;;;AAGpB;;ACPe,SAASC,WAAW3B,KAAoC,EAAA;AACnE,IAAA,qBACImB,eAAA,CAACC,KAAAA,EAAAA;QAAIE,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,MAAA;QAAOF,MAAAA,EAAO,MAAA;QAAOG,IAAAA,EAAK,cAAA;AAAgB,QAAA,GAAGxB,KAAK;;0BAC7EQ,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE,eAAA;gBAAgBF,IAAAA,EAAK;;0BAC7BhB,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE;;;;AAGpB;;ACPe,SAASE,kBAAkB5B,KAAoC,EAAA;AAC1E,IAAA,qBACImB,eAAA,CAACC,KAAAA,EAAAA;QAAIC,MAAAA,EAAO,IAAA;QAAKC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,IAAA;QAAKC,IAAAA,EAAK,cAAA;AAAgB,QAAA,GAAGxB,KAAK;;0BACzEQ,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE,mBAAA;gBAAoBF,IAAAA,EAAK;;0BACjChB,cAAA,CAACqB,QAAAA,EAAAA;gBAAOC,EAAAA,EAAG,IAAA;gBAAKC,EAAAA,EAAG,IAAA;gBAAKC,CAAAA,EAAE;;;;AAGtC;;ACPe,SAASC,MAAMjC,KAAoC,EAAA;AAC9D,IAAA,qBACImB,eAAA,CAACC,KAAAA,EAAAA;QAAIC,MAAAA,EAAO,IAAA;QAAKC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,IAAA;QAAKC,IAAAA,EAAK,cAAA;AAAgB,QAAA,GAAGxB,KAAK;;0BACzEQ,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE,iBAAA;gBAAkBF,IAAAA,EAAK;;0BAC/BhB,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE;;;;AAGpB;;ACPe,SAASR,cAAYlB,KAAoC,EAAA;AACpE,IAAA,qBACImB,eAAA,CAACC,KAAAA,EAAAA;QAAIC,MAAAA,EAAO,IAAA;QAAKC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,IAAA;QAAKC,IAAAA,EAAK,cAAA;AAAgB,QAAA,GAAGxB,KAAK;;0BACzEQ,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE,iBAAA;gBAAkBF,IAAAA,EAAK;;0BAC/BhB,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE;;;;AAGpB;;ACPe,SAASR,cAAYlB,KAAoC,EAAA;AACpE,IAAA,qBACImB,eAAA,CAACC,KAAAA,EAAAA;QAAIC,MAAAA,EAAO,IAAA;QAAKC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,IAAA;QAAKC,IAAAA,EAAK,cAAA;AAAgB,QAAA,GAAGxB,KAAK;;0BACzEQ,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE,iBAAA;gBAAkBF,IAAAA,EAAK;;0BAC/BhB,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE;;;;AAGpB;;ACPe,SAASR,cAAYlB,KAAoC,EAAA;AACpE,IAAA,qBACIQ,cAAA,CAACY,KAAAA,EAAAA;QAAIC,MAAAA,EAAO,IAAA;QAAKC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,IAAA;QAAKC,IAAAA,EAAK,cAAA;AAAgB,QAAA,GAAGxB,KAAK;AACzE,QAAA,QAAA,gBAAAQ,cAAA,CAACiB,MAAAA,EAAAA;YAAKC,CAAAA,EAAE;;;AAGpB;;ACNe,SAASR,YAAYlB,KAAoC,EAAA;AACpE,IAAA,qBACImB,eAAA,CAACC,KAAAA,EAAAA;QAAIC,MAAAA,EAAO,IAAA;QAAKC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,IAAA;QAAKC,IAAAA,EAAK,cAAA;AAAgB,QAAA,GAAGxB,KAAK;;0BACzEQ,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE,iBAAA;gBAAkBF,IAAAA,EAAK;;0BAC/BhB,cAAA,CAACiB,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE;;;;AAGpB;;ACsBO,IAAA,UAAKQ,iBAAAA,SAAAA,UAAAA,EAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAA,IAAAA,OAAAA,UAAAA;AA2BX,CAAA,CAAA,EAAA,CAAA;AAEM,MAAMC,YAAAA,GAAoD;IAC7D,CAAA,gBAAA,GAAoB,SAAA;IACpB,CAAA,sBAAA,GAA0B,SAAA;IAC1B,CAAA,wBAAA,GAA4B,SAAA;IAC5B,CAAA,aAAA,GAAiB,WAAA;IACjB,CAAA,mBAAA,GAAuB,WAAA;IACvB,CAAA,gBAAA,GAAoB,SAAA;IACpB,CAAA,sBAAA,GAA0B,SAAA;IAC1B,CAAA,gBAAA,GAAoB,SAAA;IACpB,CAAA,sBAAA,GAA0B,SAAA;IAC1B,CAAA,cAAA,GAAkB,SAAA;IAClB,CAAA,oBAAA,GAAwB,SAAA;IACxB,CAAA,uBAAA,GAA2B,WAAA;IAC3B,CAAA,qBAAA,GAAyB,SAAA;IACzB,CAAA,cAAA,GAAkB,SAAA;IAClB,CAAA,sBAAA,GAA0B,iBAAA;IAC1B,CAAA,2BAAA,GAA+B,SAAA;IAC/B,CAAA,mBAAA,GAAuB,SAAA;IACvB,CAAA,4BAAA,GAAgC,SAAA;IAChC,CAAA,wBAAA,GAA4B,MAAA;IAC5B,CAAA,mBAAA,GAAuB,MAAA;IACvB,CAAA,iBAAA,GAAqB,SAAA;IACrB,CAAA,yBAAA,GAA6B,MAAA;IAC7B,CAAA,wBAAA,GAA4B,MAAA;IAC5B,CAAA,eAAA,GAAmB,mEAAA;IACnB,CAAA,qBAAA,GAAyB,uEAAA;IACzB,CAAA,qBAAA,GAAyB;AAC7B,CAAA;AAEO,MAAMC,gBAAgB,CAACC,GAAAA,GAAAA;IAC1B,OAAO,CAAC,IAAI,EAAEA,GAAAA,CAAI,EAAE,EAAEF,YAAY,CAACE,GAAAA,CAAI,CAAC,CAAC,CAAC;AAC9C,CAAA;;ACtFO,MAAMC,QAAAA,iBAAWC,MAAAA,CAAAA,MAAAA,EAAAA;;;AAKtB,CAAA,CAAA,CAAA,mEAAA,CAAA;MAEWC,QAAAA,iBAASD,MAAAA,CAAAA,IAAAA,EAAAA;;;kEAGSH,aAAAA,CAAcF,UAAAA,CAAWO,kBAAkB,CAAA,EAAA,mCAAA;MAK7DC,MAAAA,iBAAOH,MAAAA,CAAAA,KAAAA,EAAAA;;;AAIlB,CAAA,CAAA,CAAA,yCAAA;MAEWI,QAAAA,iBAASJ,MAAAA,CAAAA,KAAAA,EAAAA;;;8CAEMH,aAAAA,CAAcF,UAAAA,CAAWO,kBAAkB,CAAA,EAAA,yCAAA;;ACtBhE,IAAA,UAAKG,iBAAAA,SAAAA,UAAAA,EAAAA;;;;;;AAAAA,IAAAA,OAAAA,UAAAA;AAMX,CAAA,CAAA,EAAA;AAED,MAAMC,SAAAA,iBAAYN,MAAAA,CAAAA,MAAAA,EAAAA;;;wBACM,CAACvC,KAAAA,GAAAA;AACjB,IAAA,OAAQA,MAAM8C,IAAI;AACd,QAAA,KAAA,SAAA;YACI,OAAOV,aAAAA,CAAcF,WAAWa,OAAO,CAAA;AAE3C,QAAA,KAAA,SAAA;YACI,OAAOX,aAAAA,CAAcF,WAAWc,OAAO,CAAA;AAE3C,QAAA,KAAA,QAAA;YACI,OAAOZ,aAAAA,CAAcF,WAAWe,KAAK,CAAA;AAEzC,QAAA,KAAA,UAAA;YACI,OAAOb,aAAAA,CAAcF,WAAWgB,QAAQ,CAAA;AAE5C,QAAA;YACI,OAAOd,aAAAA,CAAcF,WAAWiB,OAAO,CAAA;AAC/C;AACJ,CAAA,EAAA,SAAA,EACSf,aAAAA,CAAcF,WAAWkB,gBAAgB,CAAA,EAAA,8BAAA,EAEvC,CAACpD,KAAAA,GAAWA,KAAAA,CAAMY,QAAQ,GAAG,UAAA,GAAa,KAAA,EAAA,2EAAA,EAK3C,CAACZ,KAAAA,GAAWA,KAAAA,CAAMqD,MAAM,GAAG,OAAA,GAAU,GAAA,EAAA,GAAA,EAE7C,CAACrD,KAAAA,GACC,CAACA,KAAAA,CAAMqD,MAAM,IAAI,wEAAA,EAAA,GAAA,CAAA;AAezB;;;;AAIC,IACD,SAASC,cAAAA,CAAetD,KAAiB,EAAEuD,GAA+B,EAAA;AACtE,IAAA,qBAAO/C,cAAA,CAACqC,SAAAA,EAAAA;AAAW,QAAA,GAAG7C,KAAK;QAAEuD,GAAAA,EAAKA;;AACtC;AAEA,MAAMC,KAAAA,iBAAQC,KAAAA,CAAMC,UAAU,CAC1BJ,cAAAA;;ACzDJ,MAAMK,UAAAA,iBAAapB,MAAAA,CAAAA,KAAAA,EAAAA;;;2CAEKH,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,EAAA,GAAA,EACrD,CAAC5D,KAAAA,GACCA,KAAAA,CAAM6D,QAAQ,GACR,CAAC,YAAY,EAAEzB,aAAAA,CAAcF,UAAAA,CAAW4B,YAAY,CAAA,CAAE,CAAC,CAAC,GACxD,CAAC,YAAY,EAAE1B,aAAAA,CAAcF,UAAAA,CAAW6B,MAAM,CAAA,CAAE,CAAC,CAAC,EAAA,iDAAA,CAAA;AAMhE;;;;AAIC,IACD,SAASC,aAAAA,CAAchE,KAAgB,EAAEuD,GAA8B,EAAA;AACnE,IAAA,qBAAO/C,cAAA,CAACmD,UAAAA,EAAAA;AAAY,QAAA,GAAG3D,KAAK;QAAEuD,GAAAA,EAAKA;;AACvC;AAEA,MAAMU,IAAAA,iBAAOR,KAAAA,CAAMC,UAAU,CAA4BM,aAAAA;;ACtBzD,MAAME,uBAAO3B,MAAAA,CAAO0B,IAAAA,EAAAA;;;AAId,CAAA,CAAA,CAAA,4CAAA,EAAA,CAACjE,QAAUA,KAAAA,CAAMiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAA;AAGlD,MAAMkD,UAAAA,iBAAa5B,MAAAA,CAAAA,QAAAA,EAAAA;;;AASNH,CAAAA,CAAAA,CAAAA,iJAAAA,EAAAA,aAAAA,CAAcF,UAAAA,CAAWkC,eAAe,CAAA,EAAA,wCAAA,EAGrBhC,aAAAA,CAAcF,WAAWmC,aAAa,CAAA,EAAA,sCAAA,EAQhE,CAACrE,KAAAA,GACCA,MAAMiB,IAAI,IAAI,CAAC,yBAAyB,EAAEmB,aAAAA,CAAcF,UAAAA,CAAWO,kBAAkB,CAAA,CAAE,CAAC,CAAC,EAAA,GAAA,EAE3F,CAACzC,KAAAA,GAAUA,MAAMM,QAAQ,IAAI,CAAC,OAAO,EAAE8B,aAAAA,CAAcF,UAAAA,CAAWgB,QAAQ,CAAA,CAAE,CAAC,CAAC,CAAA;AAGlF,MAAMoB,eAAAA,iBAAkB/B,MAAAA,CAAAA,KAAAA,EAAAA;;;sGAQR,CAACvC,KAAAA,GACLA,KAAAA,CAAMiB,IAAI,GACJmB,aAAAA,CAAcF,WAAWiB,OAAO,CAAA,GAChCnD,KAAAA,CAAMuE,SAAS,GACbnC,aAAAA,CAAcF,WAAWa,OAAO,CAAA,GAChCX,aAAAA,CAAcF,UAAAA,CAAWsC,UAAU,CAAA,EAAA,aAAA,EAClC,CAACxE,KAAAA,GAAWA,KAAAA,CAAMiB,IAAI,GAAG,YAAA,GAAe,YAAA,EAAA,4CAAA,CAAA;AAM7D,MAAMwD,eAAAA,iBAAkBlC,MAAAA,CAAAA,KAAAA,EAAAA;;;AAWlB,CAAA,CAAA,CAAA,yHAAA,EAAA,CAACvC,QAAWA,KAAAA,CAAMiB,IAAI,GAAG,CAAC,oCAAoC,CAAC,GAAG,EAAA,CAAA;AAGxE,MAAMyD,QAAAA,iBAAWnC,MAAAA,CAAAA,KAAAA,EAAAA;;;uDAGH,CAACvC,KAAAA,GAAUA,KAAAA,CAAMqB,MAAM,IAAI,CAAA,EAAA,KAAA,CAAA;AAGzC,MAAMsD,+BAAiBpC,MAAAA,CAAOiB,KAAAA,EAAAA;;;;MAIjBoB,iBAAAA,iBAAoBrC,MAAAA,CAAAA,KAAAA,EAAAA;;;AAE/B,CAAA,CAAA,CAAA,oBAAA;MAEWsC,mBAAAA,iBAAsBtC,MAAAA,CAAAA,KAAAA,EAAAA;;;oFAIPH,aAAAA,CAAcF,UAAAA,CAAWO,kBAAkB,CAAA,EAAA,GAAA;AAwBvE;;;;AAIC,IACD,SAASqC,sBAAAA,CACL9E,KAAyF,EACzFuD,GAA8B,EAAA;AAE9B,IAAA,MAAM,CAAClC,MAAAA,EAAQ0D,SAAAA,CAAU,GAAG5E,cAAAA,CAAS,CAAA,CAAA;AACrC,IAAA,MAAM,EACFc,IAAI,EACJX,WAAW,KAAK,EAChB0E,MAAM,EACNC,SAAS,EACTV,SAAAA,GAAY,KAAK,EACjBnE,WAAW,EACXQ,QAAQ,EACR,GAAGsE,WACN,GAAGlF,KAAAA;;AAGJ,IAAA,MAAMmF,QAAAA,GAAWC,WAAAA,EAAAA;AACjB,IAAA,MAAMC,QAAAA,GAAWD,WAAAA,EAAAA;AAEjB,IAAA,MAAME,aAAaC,YAAAA,CAA8B,IAAA,CAAA;;IAGjDC,eAAAA,CAAU,IAAA;QACN,MAAMC,EAAAA,GAAKH,WAAWI,OAAO;AAC7BX,QAAAA,SAAAA,CAAUU,IAAIE,YAAAA,IAAgB,CAAA,CAAA;IAClC,CAAA,EAAG;AAAC1E,QAAAA,IAAAA;AAAML,QAAAA;AAAS,KAAA,CAAA;AAEnB,IAAA,qBACIO,eAAA,CAAC+C,MAAAA,EAAAA;AAAM,QAAA,GAAGgB,SAAS;QAAE3B,GAAAA,EAAKA,GAAAA;QAAKtC,IAAAA,EAAMA,IAAAA;QAAM4C,QAAAA,EAAU5C,IAAAA;QAAMsD,SAAAA,EAAWA,SAAAA;;0BAClEpD,eAAA,CAACgD,UAAAA,EAAAA;gBACGlD,IAAAA,EAAMA,IAAAA;gBACNX,QAAAA,EAAUA,QAAAA;gBACVsF,OAAAA,EAASxF,WAAAA;AACTyF,gBAAAA,eAAAA,EAAe5E,OAAO,MAAA,GAAS,OAAA;gBAC/B6E,eAAAA,EAAeT,QAAAA;gBACfU,EAAAA,EAAIZ,QAAAA;;kCAEJhE,eAAA,CAACmD,eAAAA,EAAAA;wBAAgBrD,IAAAA,EAAMA,IAAAA;wBAAMsD,SAAAA,EAAWA,SAAAA;;0CACpC/D,cAAA,CAACoB,iBAAAA,EAAAA;gCAAkBoE,aAAAA,EAAY;;0CAC/BxF,cAAA,CAAC8B,QAAAA,EAAAA;AAAU0C,gCAAAA,QAAAA,EAAAA;;;;kCAEf7D,eAAA,CAACsD,eAAAA,EAAAA;wBAAgBxD,IAAAA,EAAMA,IAAAA;;AAClBgE,4BAAAA,SAAAA,kBACGzE,cAAA,CAACmE,cAAAA,EAAAA;gCAAetB,MAAM,EAAA,IAAA;AAACP,gCAAAA,IAAAA,EAAMF,WAAWqD,MAAM;AACzChB,gCAAAA,QAAAA,EAAAA;;0CAGTzE,cAAA,CAACmB,UAAAA,EAAAA;gCAAWqE,aAAAA,EAAY;;;;;;0BAGhCxF,cAAA,CAACkE,QAAAA,EAAAA;gBACGnB,GAAAA,EAAK+B,UAAAA;AACLjE,gBAAAA,MAAAA,EAAQJ,OAAOI,MAAAA,GAAS,CAAA;gBACxB6E,IAAAA,EAAK,QAAA;gBACLH,EAAAA,EAAIV,QAAAA;gBACJc,iBAAAA,EAAiBhB,QAAAA;AACjBa,gBAAAA,aAAAA,EAAa/E,OAAO,OAAA,GAAU,MAAA;0BAE7BA,IAAAA,IAAQL;;;;AAIzB;AAEA,MAAMwF,aAAAA,iBAAgB3C,KAAAA,CAAMC,UAAU,CAGpCoB,sBAAAA;;AC1LF,MAAMuB,YAAAA,iBAAe9D,MAAAA,CAAAA,QAAAA,EAAAA;;;AACGH,CAAAA,CAAAA,CAAAA,mBAAAA,EAAAA,aAAAA,CAAcF,WAAWoE,YAAY,CAAA,EAAA,sHAAA,EAQhDlE,aAAAA,CAAcF,UAAAA,CAAWkC,eAAe,CAAA,EAAA,oBAAA,EAC7BhC,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,uNAgBnCxB,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,SAAA,EACvCf,cAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,yBAAA,EAIzBf,aAAAA,CAAcF,WAAWiB,OAAO,CAAA,EAAA,wBAAA,EACxBf,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,gCAAA,EAI1CjC,aAAAA,CAAcF,UAAAA,CAAWqE,mBAAmB,qBAChDnE,aAAAA,CAAcF,UAAAA,CAAWsC,UAAU,CAAA,EAAA,SAAA,EAC1CpC,aAAAA,CAAcF,WAAWgB,QAAQ,CAAA,EAAA,IAAA,CAAA;AAYlD;;;;AAIC,IACD,SAASsD,eAAAA,CAAgBxG,KAAkB,EAAEuD,GAAiC,EAAA;AAC1E,IAAA,MAAM,EAAET,IAAAA,GAAO,QAAQ,EAAE,GAAG2D,MAAM,GAAGzG,KAAAA;AAErC,IAAA,qBAAOQ,cAAA,CAAC6F,YAAAA,EAAAA;QAAa9C,GAAAA,EAAKA,GAAAA;QAAKT,IAAAA,EAAMA,IAAAA;AAAO,QAAA,GAAG2D;;AACnD;AAEA,MAAMC,QAAAA,iBAASjD,KAAAA,CAAMC,UAAU,CAAiC8C,eAAAA;;AC7DhE,MAAMG,gBAAAA,iBAAmBpE,MAAAA,CAAAA,QAAAA,EAAAA;;;kIAQZH,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,+QAAA,EAsBrBf,aAAAA,CAAcF,WAAWoE,YAAY,CAAA,EAAA,SAAA,EAC5ClE,aAAAA,CAAcF,UAAAA,CAAWgB,QAAQ,CAAA,EAAA,IAAA,CAAA;AAYlD;;;;IAKA,MAAM0D,mBAAAA,GAAsB,CAAC5G,KAAAA,EAAwBuD,GAAAA,GAAAA;AACjD,IAAA,MAAM,EAAET,IAAAA,GAAO,QAAQ,EAAE,GAAG2D,MAAM,GAAGzG,KAAAA;AAErC,IAAA,qBAAOQ,cAAA,CAACmG,gBAAAA,EAAAA;QAAiBpD,GAAAA,EAAKA,GAAAA;QAAKT,IAAAA,EAAMA,IAAAA;AAAO,QAAA,GAAG2D;;AACvD,CAAA;AAEA,MAAMI,UAAAA,iBAAapD,KAAAA,CAAMC,UAAU,CAAqCkD,mBAAAA;;ACtDxE,MAAME,kBAAAA,iBAAqBvE,MAAAA,CAAAA,QAAAA,EAAAA;;;AACHH,CAAAA,CAAAA,CAAAA,mBAAAA,EAAAA,aAAAA,CAAcF,WAAWoE,YAAY,CAAA,EAAA,wGAAA,EAO/ClE,cAAcF,UAAAA,CAAWkC,eAAe,uCAE9BhC,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,EAAA,yCAAA,EAEzCxB,cAAcF,UAAAA,CAAW6E,YAAY,uNAgB/B3E,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,SAAA,EACvCf,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,8BAIzBf,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,gCAAA,EAI5Bf,aAAAA,CAAcF,WAAWqE,mBAAmB,CAAA,EAAA,gBAAA,EAChDnE,cAAcF,UAAAA,CAAWsC,UAAU,cAC1CpC,aAAAA,CAAcF,UAAAA,CAAWgB,QAAQ,CAAA,EAAA,gDAAA,EAK5Bd,aAAAA,CAAcF,WAAW6B,MAAM,CAAA,EAAA,IAAA,CAAA;AAYrD;;;;IAKA,MAAMiD,qBAAAA,GAAwB,CAAChH,KAAAA,EAA0BuD,GAAAA,GAAAA;AACrD,IAAA,MAAM,EAAET,IAAAA,GAAO,QAAQ,EAAE,GAAG2D,MAAM,GAAGzG,KAAAA;AAErC,IAAA,qBAAOQ,cAAA,CAACsG,kBAAAA,EAAAA;QAAmBvD,GAAAA,EAAKA,GAAAA;QAAKT,IAAAA,EAAMA,IAAAA;AAAO,QAAA,GAAG2D;;AACzD,CAAA;AAEA,MAAMQ,YAAAA,iBAAexD,KAAAA,CAAMC,UAAU,CAAuCsD,qBAAAA;;ACnE5E,MAAME,kBAAAA,iBAAqB3E,MAAAA,CAAAA,QAAAA,EAAAA;;;AACHH,CAAAA,CAAAA,CAAAA,mBAAAA,EAAAA,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,oBAAA,EAChCf,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,SAAA,EAC3Cf,aAAAA,CAAcF,UAAAA,CAAWkB,gBAAgB,CAAA,EAAA,6TAAA,EAuBhChB,aAAAA,CAAcF,UAAAA,CAAW6E,YAAY,CAAA,EAAA,iCAAA,EAI3B3E,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,gCAAA,EAI1CjC,aAAAA,CAAcF,UAAAA,CAAWO,kBAAkB,CAAA,EAAA,oBAAA,EAC3CL,aAAAA,CAAcF,UAAAA,CAAWqE,mBAAmB,CAAA,EAAA,SAAA,EACvDnE,aAAAA,CAAcF,WAAWgB,QAAQ,CAAA,EAAA,IAAA,CAAA;AAYlD;;;;AAIC,IACD,SAASiE,qBAAAA,CAAsBnH,KAAwB,EAAEuD,GAAiC,EAAA;AACtF,IAAA,MAAM,EAAET,IAAAA,GAAO,QAAQ,EAAE,GAAG2D,MAAM,GAAGzG,KAAAA;AAErC,IAAA,qBAAOQ,cAAA,CAAC0G,kBAAAA,EAAAA;QAAmB3D,GAAAA,EAAKA,GAAAA;QAAKT,IAAAA,EAAMA,IAAAA;AAAO,QAAA,GAAG2D;;AACzD;AAEA,MAAMW,YAAAA,iBAAe3D,KAAAA,CAAMC,UAAU,CAAuCyD,qBAAAA;;AC3D5E,MAAME,gBAAAA,iBAAmB9E,MAAAA,CAAAA,QAAAA,EAAAA;;;AACDH,CAAAA,CAAAA,CAAAA,mBAAAA,EAAAA,aAAAA,CAAcF,WAAWoE,YAAY,CAAA,EAAA,qGAAA,EAOhDlE,cAAcF,UAAAA,CAAWkC,eAAe,yBAC7BhC,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,EAAA,iMAAA,EAenCxB,cAAcF,UAAAA,CAAWiB,OAAO,cACvCf,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,yBAAA,EAIzBf,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,6BACxBf,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,gCAAA,EAI1CjC,aAAAA,CAAcF,WAAWO,kBAAkB,CAAA,EAAA,gBAAA,EAC/CL,cAAcF,UAAAA,CAAWsC,UAAU,cAC1CpC,aAAAA,CAAcF,UAAAA,CAAWgB,QAAQ,CAAA,EAAA,0BAAA,EAIlCd,aAAAA,CAAcF,WAAWgB,QAAQ,CAAA,EAAA,IAAA,CAAA;AAYjD;;;;AAIC,IACD,SAASoE,mBAAAA,CAAoBtH,KAAsB,EAAEuD,GAAiC,EAAA;AAClF,IAAA,MAAM,EAAET,IAAAA,GAAO,QAAQ,EAAE,GAAG2D,MAAM,GAAGzG,KAAAA;AAErC,IAAA,qBAAOQ,cAAA,CAAC6G,gBAAAA,EAAAA;QAAiB9D,GAAAA,EAAKA,GAAAA;QAAKT,IAAAA,EAAMA,IAAAA;AAAO,QAAA,GAAG2D;;AACvD;AAEA,MAAMc,UAAAA,iBAAa9D,KAAAA,CAAMC,UAAU,CAAqC4D,mBAAAA;;ACrDxE,MAAME,WAAAA,iBAAYjF,MAAAA,CAAAA,MAAAA,EAAAA;;;AAIMH,CAAAA,CAAAA,CAAAA,oEAAAA,EAAAA,aAAAA,CAAcF,WAAWO,kBAAkB,CAAA,EAAA,sEAAA,CAAA;AAOnE,MAAMiE,QAAAA,iBAASnE,MAAAA,CAAAA,QAAAA,EAAAA;;;aACFH,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,EAAA,oBAAA,EACxBxB,aAAAA,CAAcF,WAAWgB,QAAQ,CAAA,EAAA,kHAAA,EAQ5Bd,aAAAA,CAAcF,UAAAA,CAAWuF,WAAW,CAAA,EAAA,IAAA,CAAA;AAIjE;;;;AAIC,IACD,SAASC,aAAAA,CACL1H,KAAwD,EACxDuD,GAA+B,EAAA;IAE/B,MAAM,EAAEoE,KAAK,EAAEC,YAAY,EAAEC,oBAAoB,EAAE,GAAGpB,IAAAA,EAAM,GAAGzG,KAAAA;AAE/D,IAAA,MAAM8H,eAA4D,CAACC,CAAAA,GAAAA;AAC/D,QAAA,IAAIA,EAAE1F,GAAG,KAAK,eAAe0F,CAAAA,CAAE1F,GAAG,KAAK,QAAA,EAAU;YAC7CuF,YAAAA,GAAeG,CAAAA,CAAAA;AACnB,QAAA;AACJ,IAAA,CAAA;AAEA,IAAA,MAAMC,uBAAsE,CAACD,CAAAA,GAAAA;;QAEzE,IAAIA,CAAAA,CAAE1F,GAAG,KAAK,GAAA,IAAO0F,CAAAA,CAAE1F,GAAG,KAAK,UAAA,IAAc0F,CAAAA,CAAE1F,GAAG,KAAK,OAAA,EAAS;AAC5D0F,YAAAA,CAAAA,CAAEE,eAAe,EAAA;AACrB,QAAA;AACJ,IAAA,CAAA;AAEA,IAAA,qBACI9G,eAAA,CAACqG,WAAAA,EAAAA;AAAW,QAAA,GAAGf,IAAI;QAAElD,GAAAA,EAAKA,GAAAA;QAAK2E,OAAAA,EAASJ,YAAAA;;AACnCH,YAAAA,KAAAA;0BACDnH,cAAA,CAACkG,QAAAA,EAAAA;gBACGd,OAAAA,EAASgC,YAAAA;gBACTO,SAAAA,EAAWH,oBAAAA;AACXI,gBAAAA,YAAAA,EAAYP,oBAAAA,IAAwB,CAAC,OAAO,EAAEF,KAAAA,CAAAA,CAAO;AAErD,gBAAA,QAAA,gBAAAnH,cAAA,CAACyB,KAAAA,EAAAA;oBAAMZ,MAAAA,EAAQ,EAAA;oBAAIE,KAAAA,EAAO;;;;;AAI1C;AAEA,MAAM8G,IAAAA,iBAAO5E,KAAAA,CAAMC,UAAU,CAACgE,aAAAA;;AC3EvB,IAAA,WAAKY,iBAAAA,SAAAA,WAAAA,EAAAA;;;AAAAA,IAAAA,OAAAA,WAAAA;AAGX,CAAA,CAAA,EAAA;AAEM,MAAMC,WAAAA,GAAcC,mBAAAA,CA6BjB,IAAA,CAAA;;ACPV,yDACA,MAAMC,IAAAA,iBAAOlG,MAAAA,CAAAA,KAAAA,EAAAA;;;cAMC,CAACvC,KAAAA,GAAWA,KAAAA,CAAM0I,aAAa,GAAG,SAAA,GAAY,sCAEzC,CAAC1I,KAAAA,GAAWA,KAAAA,CAAM0I,aAAa,GAAG,MAAA,GAAS,4CAEpD,CAAC1I,KAAAA,GACCA,KAAAA,CAAM2I,WAAW,KAAKL,WAAAA,CAAYM,QAAQ,IAAI5I,KAAAA,CAAMC,MAAM,KAAK,IAAA,IAAQD,KAAAA,CAAMC,MAAM,GAAG,CAAA,GAChFmC,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,GAChC,sDAER,CAACnD,KAAAA,GACCA,KAAAA,CAAM2I,WAAW,KAAKL,WAAAA,CAAYM,QAAQ,IAAI5I,KAAAA,CAAMC,MAAM,KAAK,IAAA,IAAQD,KAAAA,CAAMC,MAAM,GAAG,CAAA,GAChFmC,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,GAChC,aAAA,EAAA,mCAAA,EAER,CAACnD,KAAAA,GACCA,KAAAA,CAAM2I,WAAW,KAAKL,WAAAA,CAAYO,UAAU,IAC5C7I,KAAAA,CAAMC,MAAM,KAAK,IAAA,IACjBD,KAAAA,CAAMC,MAAM,GAAG,CAAA,GACTmC,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,GAChC,aAAA,EAAA,oCAAA,EAER,CAACnD,KAAAA,GACCA,KAAAA,CAAM2I,WAAW,KAAKL,WAAAA,CAAYO,UAAU,IAC5C7I,KAAAA,CAAMC,MAAM,KAAK,IAAA,IACjBD,KAAAA,CAAMC,MAAM,GAAG,CAAA,GACTmC,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,GAChC,aAAA,EAAA,WAAA,EACH,CAACnD,KAAAA,GAAWA,KAAAA,CAAM8I,QAAQ,GAAG,GAAA,GAAM,CAAA,EAAA,mDAAA,EAIlB1G,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,sFAAA,EAQtCjC,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,IAAA,CAAA;AAItE,sDACA,MAAM0E,QAAAA,iBAAWxG,MAAAA,CAAAA,KAAAA,EAAAA;;;AAIJH,CAAAA,CAAAA,CAAAA,sDAAAA,EAAAA,aAAAA,CAAcF,WAAWgB,QAAQ,CAAA,EAAA,GAAA,CAAA;AAG9C,kCACA,MAAMsE,WAAAA,iBAAYjF,MAAAA,CAAAA,KAAAA,EAAAA;;;;AAIlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgCe,SAASyG,QAAAA,CAAShJ,KAAuC,EAAA;AACpE,IAAA,MAAM,EAAEK,KAAK,EAAEsI,WAAW,EAAE/H,QAAQ,EAAE8H,aAAa,EAAEO,QAAQ,EAAEC,UAAU,EAAEC,eAAe,EAAE,GACxFnJ,KAAAA;AACJ,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAAA,CAAU,GAAGC,cAAAA,CAAwB,CAAA,CAAA;AACpD,IAAA,MAAMiJ,gBAAgB7D,YAAAA,CAA8B,IAAA,CAAA;AACpD,IAAA,MAAM8D,UAAUC,gBAAAA,CAAWf,WAAAA,CAAAA;AAE3B;;;QAIA,MAAMgB,UAAU,CAACC,QAAAA,GAAAA;QACb,IAAIC,SAAAA,CAAUF,OAAO,EAAE;AACnBE,YAAAA,SAAAA,CAAUF,OAAO,CAACC,QAAAA,CAAAA;AACtB,QAAA;AACJ,IAAA,CAAA;AAEA;;;AAGC,QACD,MAAME,gBAAAA,GAAqD,IAAA;AACvDL,QAAAA,OAAAA,EAASM,aAAAA,CAActJ,KAAAA,CAAAA;AACvBgJ,QAAAA,OAAAA,EAASO,aAAAA,CAAc,IAAA,CAAA;AAC3B,IAAA,CAAA;AAEA;;;QAIA,MAAMC,kBAAoD,CAAC9B,CAAAA,GAAAA;AACvDA,QAAAA,CAAAA,CAAE+B,cAAc,EAAA;AAChB/B,QAAAA,CAAAA,CAAEE,eAAe,EAAA;AACjB,QAAA,IAAIoB,OAAAA,IAAWA,OAAAA,CAAQU,UAAU,KAAK,IAAA,EAAM;YACxC7J,SAAAA,CAAUmJ,OAAAA,CAAQU,UAAU,GAAG1J,KAAAA,CAAAA;AACnC,QAAA;AACJ,IAAA,CAAA;AAEA;;AAEC,QACD,MAAM2J,eAAAA,GAAoD,IAAA;QACtD9J,SAAAA,CAAU,CAAA,CAAA;AACd,IAAA,CAAA;AAEA;;;QAIA,MAAM+J,cAAgD,CAAClC,CAAAA,GAAAA;AACnDA,QAAAA,CAAAA,CAAE+B,cAAc,EAAA;QAChB5J,SAAAA,CAAU,CAAA,CAAA;AACVmJ,QAAAA,OAAAA,EAASa,IAAAA,CAAK7J,KAAAA,CAAAA;AACdgJ,QAAAA,OAAAA,EAASO,aAAAA,CAAc,KAAA,CAAA;AAC3B,IAAA,CAAA;AAEA;;;AAGC,QACD,MAAMO,iBAAAA,GAAuD,IAAA;;QAEzD,IAAIf,aAAAA,CAAc1D,OAAO,EAAE;AACvB0E,YAAAA,YAAAA,CAAahB,cAAc1D,OAAO,CAAA;AACtC,QAAA;QAEA0D,aAAAA,CAAc1D,OAAO,GAAG2E,UAAAA,CAAW,IAAA;AAC/BhB,YAAAA,OAAAA,EAASM,aAAAA,CAActJ,KAAAA,CAAAA;AACvBgJ,YAAAA,OAAAA,EAASO,aAAAA,CAAc,IAAA,CAAA;AACvBP,YAAAA,OAAAA,EAASiB,WAAAA,CAAYjK,KAAAA,CAAAA;AACrBkK,YAAAA,QAAAA,CAASC,IAAI,CAACC,KAAK,CAACC,QAAQ,GAAG,QAAA;YAC/BnB,OAAAA,CAAQ,EAAA,CAAA;QACZ,CAAA,EAAG,GAAA,CAAA;AACP,IAAA,CAAA;AAEA;;;;QAKA,MAAMoB,mBAAsD,CAAC5C,CAAAA,GAAAA;AACzD,QAAA,MAAM6C,KAAAA,GAAQ7C,CAAAA,CAAE8C,OAAO,CAAC,CAAA,CAAE;AAC1B,QAAA,IAAI,CAACD,KAAAA,EAAO;AAEZ,QAAA,IAAIvB,SAASyB,UAAAA,EAAY;AACrB/C,YAAAA,CAAAA,CAAE+B,cAAc,EAAA;;YAGhB,MAAMrE,EAAAA,GAAK8E,SAASQ,gBAAgB,CAChCH,MAAMI,OAAO,EACbJ,MAAMK,OAAO,CAAA;AAEjB,YAAA,MAAMC,QAAAA,GAAWzF,EAAAA,EAAI0F,OAAAA,CAAQ,mBAAA,CAAA,EAAsBC,YAAAA,CAAa,iBAAA,CAAA;AAChE,YAAA,MAAMC,SAAAA,GAAYH,QAAAA,IAAY,IAAA,GAAOI,QAAAA,CAASJ,UAAU,EAAA,CAAA,GAAM,IAAA;;AAG9D,YAAA,IAAIG,cAAc,IAAA,EAAM;AACpBhC,gBAAAA,OAAAA,EAASiB,WAAAA,CAAYe,SAAAA,CAAAA;AACzB,YAAA;QACJ,CAAA,MAAO,IAAIjC,aAAAA,CAAc1D,OAAO,EAAE;AAC9B0E,YAAAA,YAAAA,CAAahB,cAAc1D,OAAO,CAAA;AAClC0D,YAAAA,aAAAA,CAAc1D,OAAO,GAAG,IAAA;AAC5B,QAAA;AACJ,IAAA,CAAA;AAEA;;;AAGC,QACD,MAAM6F,eAAAA,GAAqD,IAAA;QACvD,IAAInC,aAAAA,CAAc1D,OAAO,EAAE;AACvB0E,YAAAA,YAAAA,CAAahB,cAAc1D,OAAO,CAAA;AAClC0D,YAAAA,aAAAA,CAAc1D,OAAO,GAAG,IAAA;AAC5B,QAAA;AAEA,QAAA,IAAI2D,SAASyB,UAAAA,EAAY;AACrBzB,YAAAA,OAAAA,EAASa,IAAAA,CAAKjB,QAAAA,CAAAA;YACdM,OAAAA,CAAQ,EAAA,CAAA;AACRF,YAAAA,OAAAA,EAASO,aAAAA,CAAc,KAAA,CAAA;AACvBW,YAAAA,QAAAA,CAASC,IAAI,CAACC,KAAK,CAACC,QAAQ,GAAG,MAAA;AACnC,QAAA;AACJ,IAAA,CAAA;AAEA;;;QAIA,MAAMc,gBAAgB,CAACzD,CAAAA,GAAAA;QACnB,MAAM0D,UAAAA,GAAa9C,WAAAA,KAAgBL,WAAAA,CAAYM,QAAQ;QACvD,MAAM8C,MAAAA,GAASD,aAAa,SAAA,GAAY,WAAA;QACxC,MAAME,QAAAA,GAAWF,aAAa,WAAA,GAAc,YAAA;AAE5C,QAAA,MAAMG,SAAAA,GAAYvC,OAAAA,EAASyB,UAAAA,IAAczB,OAAAA,EAASU,UAAAA,KAAe1J,KAAAA;;AAGjE,QAAA,IAAI0H,EAAE1F,GAAG,KAAK,OAAO0F,CAAAA,CAAE1F,GAAG,KAAK,UAAA,EAAY;AACvC0F,YAAAA,CAAAA,CAAE+B,cAAc,EAAA;AAChB,YAAA,IAAI8B,SAAAA,EAAW;;AAEXvC,gBAAAA,OAAAA,EAASa,IAAAA,CAAK7J,KAAAA,CAAAA;AACd8I,gBAAAA,eAAAA,CACIE,OAAAA,EAASwC,IAAAA,CAAKC,mBAAAA,CAAoBzC,OAAAA,EAASwC,KAAKE,2BAAAA,EAA6B;AACzEC,oBAAAA,QAAAA,EAAU3L,KAAAA,GAAQ;AACtB,iBAAA,CAAA,CAAA;YAER,CAAA,MAAO;;AAEHgJ,gBAAAA,OAAAA,EAAS4C,SAAAA,CAAU5L,KAAAA,CAAAA;AACnB8I,gBAAAA,eAAAA,CACIE,OAAAA,EAASwC,IAAAA,CAAKC,mBAAAA,CAAoBzC,OAAAA,EAASwC,KAAKK,2BAAAA,EAA6B;AACzEF,oBAAAA,QAAAA,EAAU3L,KAAAA,GAAQ;AACtB,iBAAA,CAAA,CAAA;AAER,YAAA;AACJ,QAAA,CAAA,MAEK,IAAI0H,CAAAA,CAAE1F,GAAG,KAAK,WAAWuJ,SAAAA,EAAW;AACrC7D,YAAAA,CAAAA,CAAE+B,cAAc,EAAA;AAChBT,YAAAA,OAAAA,EAASa,IAAAA,CAAK7J,KAAAA,CAAAA;AACd8I,YAAAA,eAAAA,CACIE,OAAAA,EAASwC,IAAAA,CAAKC,mBAAAA,CAAoBzC,OAAAA,EAASwC,KAAKE,2BAAAA,EAA6B;AACzEC,gBAAAA,QAAAA,EAAU3L,KAAAA,GAAQ;AACtB,aAAA,CAAA,CAAA;AAER,QAAA,CAAA,MAEK,IAAI0H,CAAAA,CAAE1F,GAAG,KAAK,YAAYuJ,SAAAA,EAAW;AACtC7D,YAAAA,CAAAA,CAAE+B,cAAc,EAAA;YAChBT,OAAAA,EAAS8C,MAAAA,EAAAA;AACThD,YAAAA,eAAAA,CAAgBE,SAASwC,IAAAA,CAAKO,6BAAAA,CAAAA;AAClC,QAAA,CAAA,MAEK,IAAIR,SAAAA,EAAW;YAChB,IAAI7D,CAAAA,CAAE1F,GAAG,KAAKqJ,MAAAA,IAAUrL,QAAQ,CAAA,IAAKgJ,OAAAA,CAAQU,UAAU,KAAK,IAAA,EAAM;AAC9DhC,gBAAAA,CAAAA,CAAE+B,cAAc,EAAA;;AAEhB,gBAAA,MAAMvJ,WAAWF,KAAAA,GAAQ,CAAA;AACzBgJ,gBAAAA,OAAAA,CAAQgD,MAAM,CAAChD,OAAAA,CAAQU,UAAU,EAAExJ,QAAAA,CAAAA;AACnC8I,gBAAAA,OAAAA,CAAQM,aAAa,CAACpJ,QAAAA,CAAAA;gBACtB4I,eAAAA,CACIE,OAAAA,CAAQwC,IAAI,CAACC,mBAAmB,CAACzC,OAAAA,CAAQwC,IAAI,CAACS,yBAAyB,EAAE;AACrEN,oBAAAA,QAAAA,EAAUzL,QAAAA,GAAW;AACzB,iBAAA,CAAA,CAAA;YAER,CAAA,MAAO,IACHwH,CAAAA,CAAE1F,GAAG,KAAKsJ,QAAAA,IACVtL,KAAAA,GAAQ6I,UAAAA,GAAa,CAAA,IACrBG,OAAAA,CAAQU,UAAU,KAAK,IAAA,EACzB;AACEhC,gBAAAA,CAAAA,CAAE+B,cAAc,EAAA;;AAEhB,gBAAA,MAAMvJ,WAAWF,KAAAA,GAAQ,CAAA;AACzBgJ,gBAAAA,OAAAA,CAAQgD,MAAM,CAAChD,OAAAA,CAAQU,UAAU,EAAExJ,QAAAA,CAAAA;AACnC8I,gBAAAA,OAAAA,CAAQM,aAAa,CAACpJ,QAAAA,CAAAA;gBACtB4I,eAAAA,CACIE,OAAAA,CAAQwC,IAAI,CAACC,mBAAmB,CAACzC,OAAAA,CAAQwC,IAAI,CAACS,yBAAyB,EAAE;AACrEN,oBAAAA,QAAAA,EAAUzL,QAAAA,GAAW;AACzB,iBAAA,CAAA,CAAA;AAER,YAAA;AACJ,QAAA;AACJ,IAAA,CAAA;AAEA,4DACAiF,eAAAA,CAAU,IAAA;QACN,OAAO,IAAA;YACH,IAAI4D,aAAAA,CAAc1D,OAAO,EAAE;AACvB0E,gBAAAA,YAAAA,CAAahB,cAAc1D,OAAO,CAAA;AAClC0D,gBAAAA,aAAAA,CAAc1D,OAAO,GAAG,IAAA;AAC5B,YAAA;AACA6E,YAAAA,QAAAA,CAASC,IAAI,CAACC,KAAK,CAACC,QAAQ,GAAG,MAAA;AACnC,QAAA,CAAA;AACJ,IAAA,CAAA,EAAG,EAAE,CAAA;AAEL,yDACAlF,eAAAA,CAAU,IAAA;AACN,QAAA,IAAI6D,SAASyB,UAAAA,IAAczB,OAAAA,EAASU,UAAAA,KAAe,IAAA,IAAQd,aAAa5I,KAAAA,EAAO;AAC3EH,YAAAA,SAAAA,CAAUmJ,SAASU,UAAAA,GAAa1J,KAAAA,CAAAA;QACpC,CAAA,MAAO;YACHH,SAAAA,CAAU,CAAA,CAAA;AACd,QAAA;IACJ,CAAA,EAAG;AAAC+I,QAAAA,QAAAA;QAAUI,OAAAA,EAASU,UAAAA;AAAY1J,QAAAA,KAAAA;QAAOgJ,OAAAA,EAASyB;AAAW,KAAA,CAAA;AAE9D,IAAA,qBACI3J,eAAA,CAACsH,IAAAA,EAAAA;AACG8D,QAAAA,SAAAA,EAAW,CAAC7D,aAAAA;QACZA,aAAAA,EAAeA,aAAAA;QACfzI,MAAAA,EAAQA,MAAAA;QACR6I,QAAAA,EAAU,CAAC,EAAEO,OAAAA,EAASyB,cAAczB,OAAAA,CAAQU,UAAU,KAAK1J,KAAI,CAAA;QAC/DsI,WAAAA,EAAaA,WAAAA;QACb6D,iBAAAA,EAAiBnM,KAAAA;QACjBoM,QAAAA,EAAU,CAAA;QACVvG,IAAAA,EAAK,UAAA;AACLkC,QAAAA,YAAAA,EAAYiB,SAASwC,IAAAA,CAAKC,mBAAAA,CAAoBzC,QAAQwC,IAAI,CAACa,qBAAqB,EAAE;AAC9EV,YAAAA,QAAAA,EAAU3L,KAAAA,GAAQ;AACtB,SAAA,CAAA;AACAsM,QAAAA,cAAAA,EAActD,OAAAA,EAASyB,UAAAA,IAAczB,OAAAA,CAAQU,UAAU,KAAK1J,KAAAA;QAC5D8H,SAAAA,EAAWqD,aAAAA;QACXoB,WAAAA,EAAa,CAAClE,gBAAgBgB,gBAAAA,GAAmBmD,SAAAA;QACjDC,UAAAA,EAAYjD,eAAAA;QACZkD,WAAAA,EAAa/C,eAAAA;QACbqC,MAAAA,EAAQpC,WAAAA;QACR+C,YAAAA,EAAc,CAACtE,gBAAgByB,iBAAAA,GAAoB0C,SAAAA;QACnDI,WAAAA,EAAatC,gBAAAA;QACbuC,UAAAA,EAAY3B,eAAAA;QACZ4B,aAAAA,EAAe5B,eAAAA;;AAEd7C,YAAAA,aAAAA,kBACGlI,cAAA,CAACuI,QAAAA,EAAAA;gBACGwD,SAAS,EAAA,IAAA;gBACTrG,IAAAA,EAAK,QAAA;AACLkC,gBAAAA,YAAAA,EAAYiB,SAASwC,IAAAA,CAAKuB,mBAAAA;gBAC1BR,WAAAA,EAAalD,gBAAAA;gBACbsD,YAAAA,EAAc7C,iBAAAA;gBACdhC,SAAAA,EAAWqD,aAAAA;AACXiB,gBAAAA,QAAAA,EAAU,EAAC;AAEX,gBAAA,QAAA,gBAAAjM,cAAA,CAAC6M,WAAAA,EAAAA,EAAAA;;0BAGT7M,cAAA,CAACgH,WAAAA,EAAAA;AAAW5G,gBAAAA,QAAAA,EAAAA;;;;AAGxB;;ACnVA,2BACA,MAAM4G,WAAAA,iBAAYjF,MAAAA,CAAAA,KAAAA,EAAAA;;;AAKI,CAAA,CAAA,CAAA,sEAAA,EAAA,CAACvC,QAAWA,KAAAA,CAAM2I,WAAW,KAAKL,WAAAA,CAAYO,UAAU,GAAG,KAAA,GAAQ,QAAA,EAAA,GAAA,CAAA;AAGzF,wDACA,MAAMyE,gBAAAA,iBAAiB/K,MAAAA,CAAAA,KAAAA,EAAAA;;;;AAYvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BC,IACD,SAASgL,oBAAAA,CAAqBvN,KAAuB,EAAEuD,GAA8B,EAAA;AACjF,IAAA,MAAM,EACFoF,WAAAA,GAAcL,WAAAA,CAAYM,QAAQ,EAClChI,QAAQ,EACRyL,MAAM,EACN3D,aAAAA,GAAgB,KAAK,EACrBgE,qBAAAA,GAAwB,sGAAsG,EAC9HU,mBAAAA,GAAsB,iBAAiB,EACvClB,2BAAAA,GAA8B,gHAAgH,EAC9II,yBAAAA,GAA4B,oCAAoC,EAChEP,2BAAAA,GAA8B,sCAAsC,EACpEK,6BAAAA,GAAgC,oDAAoD,EACpF,GAAG3F,MACN,GAAGzG,KAAAA;AACJ,IAAA,MAAM,CAAC+J,UAAAA,EAAYJ,aAAAA,CAAc,GAAGxJ,cAAAA,CAAwB,IAAA,CAAA;AAC5D,IAAA,MAAM,CAACqN,aAAAA,EAAeC,gBAAAA,CAAiB,GAAGtN,cAAAA,CAAwB,IAAA,CAAA;AAClE,IAAA,MAAM,CAAC2K,UAAAA,EAAYlB,aAAAA,CAAc,GAAGzJ,cAAAA,CAAkB,KAAA,CAAA;AACtD,IAAA,MAAM,CAAC8I,QAAAA,EAAUqB,WAAAA,CAAY,GAAGnK,cAAAA,CAAwB,IAAA,CAAA;AACxD,IAAA,MAAM,CAACuN,YAAAA,EAAcvE,eAAAA,CAAgB,GAAGhJ,cAAAA,CAA6B,EAAA,CAAA;AACrE,IAAA,MAAMwN,aAAAA,GAAgBlK,KAAAA,CAAM/C,QAAQ,CAACkN,OAAO,CAAChN,QAAAA,CAAAA;IAC7C,MAAMsI,UAAAA,GAAayE,cAAcE,MAAM;AAEvC;;QAGA,MAAM/B,mBAAAA,GAAsB,CACxBgC,QAAAA,EACAC,IAAAA,GAAAA;QASA,OAAOD,QAAAA,CACFE,OAAO,CAAC,gBAAA,EAAkBC,OAAOF,IAAAA,CAAK/B,QAAQ,IAAI,EAAA,CAAA,CAAA,CAClDgC,OAAO,CAAC,iBAAiBD,IAAAA,CAAKG,OAAO,IAAI,OAAA,CAAA,CACzCF,OAAO,CAAC,eAAA,EAAiBD,IAAAA,CAAKI,OAAO,IAAI,OAAA,CAAA,CACzCH,OAAO,CAAC,kBAAA,EAAoBD,IAAAA,CAAKK,UAAU,IAAI,OAAA,CAAA,CAC/CJ,OAAO,CAAC,iBAAA,EAAmBD,IAAAA,CAAKM,SAAS,IAAI,QAAA,CAAA,CAC7CL,OAAO,CACJ,gBAAA,EACAD,IAAAA,CAAKO,QAAQ,KACR3F,gBAAgBL,WAAAA,CAAYM,QAAQ,GAAG,eAAA,GAAkB,kBAAiB,CAAA,CAAA;AAE3F,IAAA,CAAA;;AAGA,IAAA,MAAMiD,IAAAA,GAAO;AACTa,QAAAA,qBAAAA,EACIA,qBAAAA,IACA,sGAAA;AACJU,QAAAA,mBAAAA,EAAqBA,mBAAAA,IAAuB,iBAAA;AAC5ClB,QAAAA,2BAAAA,EACIA,2BAAAA,IACA,gHAAA;AACJI,QAAAA,yBAAAA,EACIA,yBAAAA,IAA6B,oCAAA;AACjCP,QAAAA,2BAAAA,EACIA,2BAAAA,IAA+B,sCAAA;AACnCK,QAAAA,6BAAAA,EACIA,6BAAAA,IAAiC,oDAAA;AACrCN,QAAAA;AACJ,KAAA;AAEA;;;QAIA,MAAM5B,OAAO,CAAC7J,KAAAA,GAAAA;QACV,IAAI0J,UAAAA,KAAe,IAAA,IAAQ1J,KAAAA,KAAU,IAAA,EAAM;AACvCgM,YAAAA,MAAAA,GAAStC,UAAAA,EAAY1J,KAAAA,CAAAA;AACzB,QAAA;QACAsJ,aAAAA,CAAc,IAAA,CAAA;QACd8D,gBAAAA,CAAiB,IAAA,CAAA;QACjB7D,aAAAA,CAAc,KAAA,CAAA;AAClB,IAAA,CAAA;AAEA;;AAEC,QACD,MAAMuC,MAAAA,GAAS,IAAA;AACX,QAAA,IAAIqB,aAAAA,KAAkB,IAAA,IAAQzD,UAAAA,KAAe,IAAA,IAAQA,eAAeyD,aAAAA,EAAe;AAC/EnB,YAAAA,MAAAA,GAAStC,UAAAA,EAAYyD,aAAAA,CAAAA;AACzB,QAAA;QACA7D,aAAAA,CAAc,IAAA,CAAA;QACd8D,gBAAAA,CAAiB,IAAA,CAAA;QACjB7D,aAAAA,CAAc,KAAA,CAAA;AAClB,IAAA,CAAA;AAEA;;QAGA,MAAMqC,YAAY,CAAC5L,KAAAA,GAAAA;QACfsJ,aAAAA,CAActJ,KAAAA,CAAAA;QACdoN,gBAAAA,CAAiBpN,KAAAA,CAAAA;QACjBuJ,aAAAA,CAAc,IAAA,CAAA;AAClB,IAAA,CAAA;IAEA,qBACIzI,eAAA,CAAAV,mBAAA,EAAA;;AACI,0BAAAD,cAAA,CAAC+H,YAAYgG,QAAQ,EAAA;gBACjBC,KAAAA,EAAO;AACHzE,oBAAAA,UAAAA;AACAJ,oBAAAA,aAAAA;AACAO,oBAAAA,IAAAA;AACAmC,oBAAAA,MAAAA;AACAF,oBAAAA,MAAAA;AACAF,oBAAAA,SAAAA;AACAnB,oBAAAA,UAAAA;AACAlB,oBAAAA,aAAAA;AACAU,oBAAAA,WAAAA;AACAuB,oBAAAA;AACJ,iBAAA;AAEA,gBAAA,QAAA,gBAAArL,cAAA,CAACgH,WAAAA,EAAAA;AAAW,oBAAA,GAAGf,IAAI;oBAAElD,GAAAA,EAAKA,GAAAA;oBAAKoF,WAAAA,EAAaA,WAAAA;oBAAazC,IAAAA,EAAK,MAAA;8BACzDzC,KAAAA,CAAM/C,QAAQ,CAACC,GAAG,CAACgN,eAAe,CAAC9M,KAAAA,EAAOR,sBACvCG,cAAA,CAACwI,QAAAA,EAAAA;4BACG3I,KAAAA,EAAOA,KAAAA;4BACPsI,WAAAA,EAAaA,WAAAA;4BACbD,aAAAA,EAAeA,aAAAA;4BACfO,QAAAA,EAAUA,QAAAA;4BACVC,UAAAA,EAAYA,UAAAA;4BACZC,eAAAA,EAAiBA,eAAAA;AAEhBtI,4BAAAA,QAAAA,EAAAA;;;;0BAKjBL,cAAA,CAAC8M,gBAAAA,EAAAA;gBAAepH,IAAAA,EAAK,QAAA;gBAASuI,WAAAA,EAAU,QAAA;gBAASC,aAAAA,EAAY,MAAA;AACxDhB,gBAAAA,QAAAA,EAAAA;;;;AAIjB;AAEA,MAAMiB,WAAAA,iBAAclL,KAAAA,CAAMC,UAAU,CAAC6J,oBAAAA;;AC3MrC;AACA,MAAMqB,OAAAA,iBAAQrM,MAAAA,CAAAA,OAAAA,EAAAA;;;qKAeUH,aAAAA,CAAcF,UAAAA,CAAWoE,YAAY,CAAA,EAAA,oBAAA,EACrClE,aAAAA,CAAcF,WAAW0B,UAAU,CAAA,EAAA,6CAAA,EAKnCxB,cAAcF,UAAAA,CAAWiB,OAAO,6BACxBf,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,qDAAA,EAKrDjC,aAAAA,CAAcF,WAAWiB,OAAO,CAAA,EAAA,kCAAA,EAKzBf,cAAcF,UAAAA,CAAW2M,eAAe,yBACpCzM,aAAAA,CAAcF,UAAAA,CAAWqE,mBAAmB,CAAA,EAAA,kCAAA,EAIvDnE,aAAAA,CAAcF,WAAWgB,QAAQ,CAAA,EAAA,uCAAA,EAK1Bd,cAAcF,UAAAA,CAAWe,KAAK,6BACtBb,aAAAA,CAAcF,UAAAA,CAAWuF,WAAW,CAAA,EAAA,IAAA,EAG9D,CAACzH,QACCA,KAAAA,CAAM8O,OAAO,GACP;;0BAEY,EAAE1M,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;;;mBAIzC,EAAEb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;AAE7C,QAAA,CAAC,GACK,EAAA,EAAA,YAAA,EAGR,CAACjD,QACCA,KAAAA,CAAMiF,SAAS,GACT;sBACQ,EAAE7C,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;;mBAGrC,EAAEb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;AAE7C,QAAA,CAAC,GACK,EAAA,EAAA,YAAA,EAGR,CAACjD,QACCA,KAAAA,CAAM+O,QAAQ,GACR,CAAC;;;uBAGQ,EAAE3M,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;AAC5C,aAAA,CAAC,GACA,EAAA,EAAA,gSAAA,EAyBQb,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,EAAA,oCAAA,EAKnD,CAAC5D,KAAAA,GACCA,KAAAA,CAAMgP,IAAI,KAAK,EAAA,GACT;;;oBAGM,EAAE5M,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,CAAE;;;;AAIvD,IAAA,CAAC,GACS,EAAA,CAAA;AAGd;AACA,MAAMqL,gBAAAA,iBAAiB1M,MAAAA,CAAAA,KAAAA,EAAAA;;;AACVH,CAAAA,CAAAA,CAAAA,QAAAA,EAAAA,aAAAA,CAAcF,WAAWe,KAAK,CAAA,EAAA,mEAAA,CAAA;AAO3C;AACA,MAAMqK,gBAAAA,iBAAiB/K,MAAAA,CAAAA,IAAAA,EAAAA;;;;AAgBvB;;;;;;;;;;;;AAYC,IACD,SAAS2M,kBAAAA,CACLlP,KAAiE,EACjEuD,GAAuC,EAAA;AAEvC,IAAA,MAAM,EACFiL,KAAAA,EAAOW,SAAAA,GAAY,EAAE,EACrBtH,uBAAuB,CAAC,eAAe,CAAC,EACxCuH,4BAA4B,oBAAoB,EAChDC,2BAAAA,GAA8B,sBAAsB,EACvD,GAAGrP,KAAAA;AAEJ,IAAA,MAAM,CAACgP,IAAAA,EAAMM,OAAAA,CAAQ,GAAGnP,cAAAA,CAAS,EAAA,CAAA;AACjC,IAAA,MAAM,CAAC2O,OAAAA,EAASS,UAAAA,CAAW,GAAGpP,cAAAA,CAAS,KAAA,CAAA;AACvC,IAAA,MAAM,CAACqO,KAAAA,EAAOgB,QAAAA,CAAS,GAAGrP,cAAAA,CAAmBgP,aAAa,EAAE,CAAA;IAC5D,MAAMM,QAAAA,GAAWhM,KAAAA,CAAM8B,MAAM,CAAmB,IAAA,CAAA;AAChD,IAAA,MAAM,CAACmI,YAAAA,EAAcvE,eAAAA,CAAgB,GAAGhJ,cAAAA,CAAS,EAAA,CAAA;AACjD,IAAA,MAAMuP,OAAAA,GAAUtK,WAAAA,EAAAA;;IAGhBuK,yBAAAA,CAAoBpM,GAAAA,EAAK,IAAMkM,QAAAA,CAAS/J,OAAO,CAAA;AAE/C;;QAGA,MAAMkK,kBAAAA,GAAqB,CACvB9B,QAAAA,EACAnG,KAAAA,GAAAA;QAEA,IAAI,CAACmG,UAAU,OAAOjB,SAAAA;QACtB,OAAOiB,QAAAA,CAASE,OAAO,CAAC,aAAA,EAAerG,KAAAA,CAAAA;AAC3C,IAAA,CAAA;IAEA,MAAMkI,gBAAAA,GAAmBpM,KAAAA,CAAM8B,MAAM,CAAWsH,SAAAA,CAAAA;;IAGhDrH,eAAAA,CAAU,IAAA;QACN,IAAIsK,KAAAA,CAAMC,OAAO,CAACZ,SAAAA,CAAAA,EAAY;YAC1B,MAAMa,SAAAA,GAAYH,iBAAiBnK,OAAO;AAC1C,YAAA,MAAMuK,UACFD,SAAAA,IACAb,SAAAA,CAAUtB,MAAM,KAAKmC,UAAUnC,MAAM,IACrCsB,SAAAA,CAAUe,KAAK,CAAC,CAACC,GAAAA,EAAK9P,QAAU8P,GAAAA,KAAQH,SAAS,CAAC3P,KAAAA,CAAM,CAAA;AAC5D,YAAA,IAAI,CAAC4P,OAAAA,EAAS;gBACVT,QAAAA,CAASL,SAAAA,CAAAA;AACTU,gBAAAA,gBAAAA,CAAiBnK,OAAO,GAAGyJ,SAAAA;AAC/B,YAAA;AACJ,QAAA;IACJ,CAAA,EAAG;AAACA,QAAAA;AAAU,KAAA,CAAA;AAEd;;;QAIA,MAAMiB,cAAc,CAACC,QAAAA,GAAAA;AACjB,QAAA,MAAMC,OAAAA,GAAUR,KAAAA,CAAMS,IAAI,CAAC,IAAIC,GAAAA,CAAIH,QAAAA,CAAAA,CAAAA;QACnCb,QAAAA,CAASc,OAAAA,CAAAA;AACTtQ,QAAAA,KAAAA,CAAMyQ,QAAQ,GAAGH,OAAAA,CAAAA;AACrB,IAAA,CAAA;AAEA;;;QAIA,MAAMI,cAAc,CAAC3I,CAAAA,GAAAA;QACjBwH,UAAAA,CAAW,IAAA,CAAA;QACX,IAAIvP,KAAAA,CAAM2Q,OAAO,EAAE;AACf3Q,YAAAA,KAAAA,CAAM2Q,OAAO,CAAC5I,CAAAA,CAAAA;AAClB,QAAA;AACJ,IAAA,CAAA;AAEA;;;QAIA,MAAM6I,eAA2D,CAAC7I,CAAAA,GAAAA;QAC9DuH,OAAAA,CAAQvH,CAAAA,CAAE8I,MAAM,CAACrC,KAAK,CAAA;AAC1B,IAAA,CAAA;AAEA;;;QAIA,MAAMsC,cAA4D,CAAC/I,CAAAA,GAAAA;AAC/D,QAAA,IAAIA,CAAAA,CAAE1F,GAAG,KAAK,OAAA,IAAW2M,IAAAA,CAAK+B,IAAI,EAAA,KAAO,EAAA,IAAMtB,QAAAA,CAAS/J,OAAO,EAAEsL,QAAAA,CAASC,KAAAA,EAAO;AAC7E,YAAA,MAAMZ,QAAAA,GAAW;AAAI7B,gBAAAA,GAAAA,KAAAA;AAAOQ,gBAAAA,IAAAA,CAAK+B,IAAI;AAAG,aAAA;YACxCX,WAAAA,CAAYC,QAAAA,CAAAA;YACZf,OAAAA,CAAQ,EAAA,CAAA;YACRnG,eAAAA,CAAgByG,kBAAAA,CAAmBR,yBAAAA,EAA2BJ,IAAAA,CAAK+B,IAAI,EAAA,CAAA,CAAA;AAC3E,QAAA;AACJ,IAAA,CAAA;AAEA;;;QAIA,MAAMG,aAAa,CAACC,YAAAA,GAAAA;AAChB,QAAA,MAAMd,WAAW7B,KAAAA,CAAM4C,MAAM,CAAC,CAACC,OAASA,IAAAA,KAASF,YAAAA,CAAAA;QACjDf,WAAAA,CAAYC,QAAAA,CAAAA;AACZlH,QAAAA,eAAAA,CAAgByG,mBAAmBP,2BAAAA,EAA6B8B,YAAAA,CAAAA,CAAAA;AACpE,IAAA,CAAA;AAEA;;;;QAKA,MAAM9E,MAAAA,GAAS,CAACiF,KAAAA,EAAeC,GAAAA,GAAAA;;AAE3B,QAAA,MAAMC,QAAAA,GAAW;AAAIhD,YAAAA,GAAAA;AAAM,SAAA;;AAE3B,QAAA,MAAMiD,IAAAA,GAAOD,QAAAA,CAASE,MAAM,CAACJ,KAAAA,EAAO,CAAA,CAAA;;AAEpCE,QAAAA,QAAAA,CAASE,MAAM,CAACH,GAAAA,EAAK,CAAA,EAAGE,IAAI,CAAC,CAAA,CAAE,CAAA;;QAE/BrB,WAAAA,CAAYoB,QAAAA,CAAAA;AAChB,IAAA,CAAA;;IAGA,qBACIrQ,eAAA,CAAAV,mBAAA,EAAA;;0BACIU,eAAA,CAACyN,OAAAA,EAAAA;gBACGI,IAAAA,EAAMA,IAAAA;gBACNF,OAAAA,EAASA,OAAAA;AACT7J,gBAAAA,SAAAA,EAAWjF,MAAMiF,SAAS;AAC1B8J,gBAAAA,QAAAA,EAAU/O,MAAM+O,QAAQ;;kCAExBvO,cAAA,CAACmR,OAAAA,EAAAA;AACI,wBAAA,GAAG3R,KAAK;wBACTuD,GAAAA,EAAKkM,QAAAA;wBACLjB,KAAAA,EAAOQ,IAAAA;wBACPyB,QAAAA,EAAUG,YAAAA;wBACVD,OAAAA,EAASD,WAAAA;wBACTxI,OAAAA,EAAS4I,WAAAA;AACT/B,wBAAAA,QAAAA,EAAU/O,KAAAA,CAAM+O,QAAQ,IAAIP,KAAAA,CAAMX,MAAM,KAAK,CAAA;AAC7C+D,wBAAAA,eAAAA,EAAe5R,MAAM+O,QAAQ;wBAC7B8C,cAAAA,EAAc,CAAC,CAAC7R,KAAAA,CAAMiF,SAAS;wBAC/B6M,kBAAAA,EAAkB9R,KAAAA,CAAMiF,SAAS,GAAGyK,OAAAA,GAAU7C;;kCAElDrM,cAAA,CAACuR,KAAAA,EAAAA;kCACIvD,KAAAA,EAAOX,MAAAA,GAAS,mBACbrN,cAAA,CAACmO,WAAAA,EAAAA;AAAYhG,4BAAAA,WAAAA,EAAaL,YAAYO,UAAU;4BAAEwD,MAAAA,EAAQA,MAAAA;AACrDmC,4BAAAA,QAAAA,EAAAA,KAAAA,CAAM7N,GAAG,CAAC,CAAC0Q,IAAAA,iBACR7Q,cAAA,CAAC6H,IAAAA,EAAAA;oCAEGV,KAAAA,EAAO0J,IAAAA;AACPzJ,oCAAAA,YAAAA,EAAc,IAAMsJ,UAAAA,CAAWG,IAAAA,CAAAA;AAC/BxJ,oCAAAA,oBAAAA,EAAsB+H,mBAClB/H,oBAAAA,EACAwJ,IAAAA;AALCA,iCAAAA,EAAAA,IAAAA,CAAAA;;;kCAYzB7Q,cAAA,CAACwR,MAAAA,EAAAA;AAAMhS,wBAAAA,QAAAA,EAAAA,KAAAA,CAAM2H;;oBACZ3H,KAAAA,CAAMiF,SAAS,kBAAIzE,cAAA,CAACyO,gBAAAA,EAAAA;wBAAelJ,EAAAA,EAAI2J,OAAAA;AAAU1P,wBAAAA,QAAAA,EAAAA,KAAAA,CAAMiF;;;;0BAE5DzE,cAAA,CAAC8M,gBAAAA,EAAAA;gBAAemB,WAAAA,EAAU,QAAA;gBAASC,aAAAA,EAAY,MAAA;AAC1ChB,gBAAAA,QAAAA,EAAAA;;;;AAIjB;AAEA,MAAMuE,SAAAA,iBAAYxO,KAAAA,CAAMC,UAAU,CAGhCwL,kBAAAA;;ACzWF,2CACO,IAAKgD,cAAAA,iBAAAA,SAAAA,cAAAA,EAAAA;;;;;;;;AAAAA,IAAAA,OAAAA,cAAAA;AAQX,CAAA,CAAA,EAAA,CAAA;AAqBD,+BACA,MAAMC,aAAAA,GAA6B;IAC/BC,UAAAA,EAAY,IAAA;IACZC,OAAAA,EAAS,KAAA;IACTrG,QAAQ,EAAA,CAAA;IACRsG,SAAAA,EAAW,IAAA;IACXC,SAAAA,EAAW,CAAA;IACXC,mBAAAA,EAAqB,IAAA;IACrBC,WAAAA,EAAa;AACjB,CAAA;AASA,gCACA,MAAMC,cAAAA,GAAiD;AACnD,IAAA,CAAA,CAAA,GAA2B,kBAAA;AAC3B,IAAA,CAAA,CAAA,GAA6B,6CAAA;AAC7B,IAAA,CAAA,CAAA,GAA4B,8CAAA;AAC5B,IAAA,CAAA,CAAA,GAA8B,qBAAA;AAC9B,IAAA,CAAA,CAAA,GAAgC,gDAAA;AAChC,IAAA,CAAA,CAAA,GAA+B,iDAAA;AAC/B,IAAA,CAAA,CAAA,GAAyB;AAC7B,CAAA;AAEA,kCACA,MAAMlL,WAAAA,iBAAYjF,MAAAA,CAAAA,KAAAA,EAAAA;;;AAKZ,CAAA,CAAA,CAAA,qEAAA,EAAA,CAACvC,KAAAA,GAAU0S,cAAc,CAAC1S,KAAAA,CAAMgM,QAAQ,CAAmB,EAAA,GAAA,EAC3D,CAAChM,KAAAA,GACCA,KAAAA,CAAMqS,OAAO,IACb;;;0BAGkB,EAAEjQ,aAAAA,CAAcF,UAAAA,CAAWyQ,cAAc,CAAA,CAAE;;;IAGjE,CAAC,EAAA,cAAA,EACU,CAAC3S,KAAAA,GAAUA,KAAAA,CAAM4S,MAAM,EAAA,+BAAA,EAI5B,CAAC5S,KAAAA,GACCA,KAAAA,CAAMqS,OAAO,IACb;;QAEJ,CAAC,EAAA,GAAA,CAAA;AAIT,oCACA,MAAMQ,WAAAA,GAAY;IACdC,GAAAA,EAAK;AACT,CAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCC,IACD,MAAMC,YAAAA,CAAAA;AAQF;;;AAGC,QACD,WAAA,EAAc;2BAXE,IAAA,CACRC,SAAkB,EAAE;AAC5B,8CACQC,SAAAA,GAAY,CAAA;aAEZC,UAAAA,GAAa,IAAIC;;aAsBlBC,OAAAA,GAAU,IAAA;AACb,YAAA,IAAI,OAAO7I,QAAAA,KAAa,WAAA,IAAe,IAAI,CAAC8I,YAAY,EAAE;AACtD9I,gBAAAA,QAAAA,CAASC,IAAI,CAAC8I,mBAAmB,CAAC,OAAA,EAAS,IAAI,CAACD,YAAY,CAAA;AAChE,YAAA;;AAEA,YAAA,IAAI,CAACH,UAAU,CAACK,OAAO,CAAC,CAACxN,KAAOqE,YAAAA,CAAarE,EAAAA,CAAAA,CAAAA;YAC7C,IAAI,CAACmN,UAAU,CAACM,KAAK,EAAA;;AAErB,YAAA,IAAI,CAACR,MAAM,CAACO,OAAO,CAAC,CAACE,KAAAA,GAAAA;AACjB,gBAAA,IAAIlJ,SAASC,IAAI,CAACkJ,QAAQ,CAACD,KAAAA,CAAME,OAAO,CAAA,EAAG;AACvCpJ,oBAAAA,QAAAA,CAASC,IAAI,CAACoJ,WAAW,CAACH,MAAME,OAAO,CAAA;AAC3C,gBAAA;AACJ,YAAA,CAAA,CAAA;YACA,IAAI,CAACX,MAAM,GAAG,EAAE;AACpB,QAAA,CAAA;AAEA;;;;;;;;QAQC,IAAA,CACOa,OAAAA,GAAU,CAACJ,KAAAA,EAAcK,IAAAA,GAAAA;AAC7BL,YAAAA,KAAAA,CAAME,OAAO,CAACI,YAAY,CAAC,OAAA,EAAS,eAAA,CAAA;YACpC,MAAM1T,KAAAA,GAAQ,IAAI,CAAC2S,MAAM,CAACgB,SAAS,CAAC,CAACvC,IAAAA,GAASA,IAAAA,KAASgC,KAAAA,CAAAA;YACvD,IAAIpT,KAAAA,KAAU,EAAC,EAAG;AACd,gBAAA,IAAI,CAAC2S,MAAM,CAACtB,MAAM,CAACrR,KAAAA,EAAO,CAAA,CAAA;AAC9B,YAAA;YAEA,MAAM4T,SAAAA,GAAYC,MAAAA,CAAO7J,UAAU,CAAC,IAAA;AAChC,gBAAA,IAAI,CAAC6I,UAAU,CAACiB,MAAM,CAACV,MAAM1N,EAAE,CAAA;gBAC/B,IAAI;oBACA0N,KAAAA,CAAMW,MAAM,CAACC,aAAa,GAAGP,IAAAA,CAAAA;AACjC,gBAAA,CAAA,CAAE,OAAOQ,GAAAA,EAAK;AACV,oBAAA,IAAIA,eAAeC,KAAAA,EAAO;wBACtBC,OAAAA,CAAQC,IAAI,CAACH,GAAAA,CAAII,OAAO,CAAA;oBAC5B,CAAA,MAAO;AACHF,wBAAAA,OAAAA,CAAQC,IAAI,CAACH,GAAAA,CAAAA;AACjB,oBAAA;AACJ,gBAAA;;gBAEAb,KAAAA,CAAMW,MAAM,CAAC9B,SAAS,GAAG,IAAA;YAC7B,CAAA,EAAGmB,KAAAA,CAAMW,MAAM,CAAC7B,SAAS,CAAA;AAEzB,YAAA,IAAI,CAACW,UAAU,CAACyB,GAAG,CAAClB,KAAAA,CAAM1N,EAAE,EAAEkO,SAAAA,CAAAA;AAClC,QAAA,CAAA;aAEQW,KAAAA,GAAQ,IAAA;YACZ,OAAO,IAAA;AACX,QAAA,CAAA;AAEA;;;AAGC,QAAA,IAAA,CACMC,cAAc,CACjBT,MAAAA,GAAAA;;YAGA,IAAI,OAAO7J,aAAa,WAAA,EAAa;gBACjC,OAAO;AAAC9G,kCAAAA,KAAAA,CAAMC,UAAU,CAAC,IAAI,CAACkR,KAAK,CAAA;oBAAG,IAAA,CAAO;AAAE,iBAAA;AACnD,YAAA;;AAGA,YAAA,MAAME,WAAAA,GAAc;AAChB,gBAAA,GAAG3C,aAAa;AAChB,gBAAA,GAAGiC;AACP,aAAA;;YAGA,MAAMW,YAAAA,GAAeD,YAAYrC,WAAW,GAAG,aAAa,KAAA,GAAQ,IAAI,CAACQ,SAAS;AAClF,YAAA,MAAM+B,SAAAA,GAAYF,WAAAA,CAAYrC,WAAW,GAAG,sBAAA,GAAyB,kBAAA;;YAGrE,MAAMwC,OAAAA,GAAU,GAAGD,SAAAA,CAAU,CAAC,EAAED,YAAAA,GAAe,IAAI,CAAC9B,SAAS,CAAA,CAAE;;YAG/D,IAAI,CAACA,SAAS,IAAI,CAAA;AAElB,YAAA,MAAMiC,mBAAAA,GAAsB,IAAA;gBACxB,MAAMzB,KAAAA,GAAQ,IAAI,CAACT,MAAM,CAACmC,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAAA,CAAErP,EAAE,KAAKkP,OAAAA,CAAAA;AAC/C,gBAAA,IAAIxB,SAASA,KAAAA,CAAMW,MAAM,CAAC5B,mBAAmB,KAAK,KAAA,EAAO;oBACrD,IAAI,CAACqB,OAAO,CAACJ,KAAAA,CAAAA;AACjB,gBAAA;AACJ,YAAA,CAAA;AAEA,YAAA,MAAM4B,UAAU,CAACvB,IAAAA,GAAAA;gBACb,MAAML,KAAAA,GAAQ,IAAI,CAACT,MAAM,CAACmC,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAAA,CAAErP,EAAE,KAAKkP,OAAAA,CAAAA;AAC/C,gBAAA,IAAIxB,KAAAA,EAAO;oBACP,IAAI,CAACI,OAAO,CAACJ,KAAAA,EAAOK,IAAAA,CAAAA;AACxB,gBAAA;AACJ,YAAA,CAAA;YAEA,MAAMwB,cAAAA,GAAiB,CACnBtV,KAAAA,EACAuD,GAAAA,GAAAA;AAEA,gBAAA,MAAM,CAACgS,UAAAA,EAAYC,aAAAA,CAAc,GAAG/R,KAAAA,CAAMtD,QAAQ,CAAwB,IAAA,CAAA;gBAE1EqF,eAAAA,CAAU,IAAA;;oBAEN,MAAMuM,GAAAA,GAAMxH,QAAAA,CAASkL,aAAa,CAAC,KAAA,CAAA;oBACnC1D,GAAAA,CAAIgC,YAAY,CAAC,OAAA,EAASiB,SAAAA,CAAAA;oBAC1BjD,GAAAA,CAAIgC,YAAY,CAAC,IAAA,EAAMkB,OAAAA,CAAAA;oBACvB1K,QAAAA,CAASC,IAAI,CAACkL,WAAW,CAAC3D,GAAAA,CAAAA;;AAG1B,oBAAA,MAAM4D,YAAAA,GAAe;wBACjB5P,EAAAA,EAAIkP,OAAAA;wBACJb,MAAAA,EAAQU,WAAAA;wBACRnB,OAAAA,EAAS5B;AACb,qBAAA;AACA,oBAAA,IAAI,CAACiB,MAAM,CAAC4C,IAAI,CAACD,YAAAA,CAAAA;oBAEjBH,aAAAA,CAAczD,GAAAA,CAAAA;;oBAEd1H,UAAAA,CAAW,IAAA;wBACP0H,GAAAA,CAAIgC,YAAY,CAAC,OAAA,EAAS,gBAAA,CAAA;oBAC9B,CAAA,EAAG,EAAA,CAAA;;AAGH,oBAAA,MAAM8B,mBAID,EAAE;AACP,oBAAA,IAAIC,oBAAAA,GAAsC,IAAA;AAC1C,oBAAA,IAAIC,oBAAAA,GAAsC,IAAA;AAC1C,oBAAA,IAAIC,iBAAAA,GAAmC,IAAA;AACvC,oBAAA,IAAIC,eAAAA,GAAiC,IAAA;AACrC,oBAAA,IAAIC,OAAAA,GAAU,CAAA;;oBAGd,IAAIpB,WAAAA,CAAYzC,OAAO,EAAE;;AAErB,wBAAA,MAAM8D,eAAerG,KAAAA,CAAMS,IAAI,CAAChG,QAAAA,CAASC,IAAI,CAAC5J,QAAQ,CAAA;wBACtDuV,YAAAA,CAAa5C,OAAO,CAAC,CAAC1S,KAAAA,GAAAA;AAClB,4BAAA,IACIA,KAAAA,KAAUkR,GAAAA,IACVlR,KAAAA,CAAMmU,SAAS,KAAK,sBAAA,IACpBnU,KAAAA,CAAMuV,OAAO,KAAK,QAAA,IAClBvV,KAAAA,CAAMuV,OAAO,KAAK,OAAA,EACpB;gCACE,MAAMC,aAAAA,GAAgBxV,KAAAA,CAAMyV,YAAY,CAAC,aAAA,CAAA;gCACzC,MAAMC,aAAAA,GAAgB1V,KAAAA,CAAMuK,YAAY,CAAC,aAAA,CAAA;;AAGzC,gCAAA,IAAImL,kBAAkB,MAAA,EAAQ;oCAC1B1V,KAAAA,CAAMkT,YAAY,CAAC,aAAA,EAAe,MAAA,CAAA;AAClC8B,oCAAAA,gBAAAA,CAAiBD,IAAI,CAAC;wCAClBjC,OAAAA,EAAS9S,KAAAA;AACTwV,wCAAAA,aAAAA;AACAE,wCAAAA;AACJ,qCAAA,CAAA;AACJ,gCAAA;AACJ,4BAAA;AACJ,wBAAA,CAAA,CAAA;;AAGAL,wBAAAA,OAAAA,GAAUhC,OAAOgC,OAAO;AACxBJ,wBAAAA,oBAAAA,GAAuBvL,QAAAA,CAASC,IAAI,CAACC,KAAK,CAACC,QAAQ;AACnDqL,wBAAAA,oBAAAA,GAAuBxL,QAAAA,CAASC,IAAI,CAACC,KAAK,CAACuB,QAAQ;AACnDgK,wBAAAA,iBAAAA,GAAoBzL,QAAAA,CAASC,IAAI,CAACC,KAAK,CAAClJ,KAAK;AAC7C0U,wBAAAA,eAAAA,GAAkB1L,QAAAA,CAASC,IAAI,CAACC,KAAK,CAAC+L,GAAG;AAEzCjM,wBAAAA,QAAAA,CAASC,IAAI,CAACC,KAAK,CAACC,QAAQ,GAAG,QAAA;AAC/BH,wBAAAA,QAAAA,CAASC,IAAI,CAACC,KAAK,CAACuB,QAAQ,GAAG,OAAA;AAC/BzB,wBAAAA,QAAAA,CAASC,IAAI,CAACC,KAAK,CAAClJ,KAAK,GAAG,MAAA;wBAC5BgJ,QAAAA,CAASC,IAAI,CAACC,KAAK,CAAC+L,GAAG,GAAG,CAAC,CAAC,EAAEN,OAAAA,CAAQ,EAAE,CAAC;AAC7C,oBAAA;;oBAGA,OAAO,IAAA;;wBAEHL,gBAAAA,CAAiBtC,OAAO,CAAC,CAAC,EAAEI,OAAO,EAAE0C,aAAa,EAAEE,aAAa,EAAE,GAAA;AAC/D,4BAAA,IAAIhM,QAAAA,CAASC,IAAI,CAACkJ,QAAQ,CAACC,OAAAA,CAAAA,EAAU;gCACjC,IAAI0C,aAAAA,IAAiBE,kBAAkB,IAAA,EAAM;oCACzC5C,OAAAA,CAAQI,YAAY,CAAC,aAAA,EAAewC,aAAAA,CAAAA;gCACxC,CAAA,MAAO;AACH5C,oCAAAA,OAAAA,CAAQ8C,eAAe,CAAC,aAAA,CAAA;AAC5B,gCAAA;AACJ,4BAAA;AACJ,wBAAA,CAAA,CAAA;;wBAGA,IAAI3B,WAAAA,CAAYzC,OAAO,EAAE;AACrB9H,4BAAAA,QAAAA,CAASC,IAAI,CAACC,KAAK,CAACC,QAAQ,GAAGoL,oBAAAA,IAAwB,EAAA;AACvDvL,4BAAAA,QAAAA,CAASC,IAAI,CAACC,KAAK,CAACuB,QAAQ,GAAG+J,oBAAAA,IAAwB,EAAA;AACvDxL,4BAAAA,QAAAA,CAASC,IAAI,CAACC,KAAK,CAAClJ,KAAK,GAAGyU,iBAAAA,IAAqB,EAAA;AACjDzL,4BAAAA,QAAAA,CAASC,IAAI,CAACC,KAAK,CAAC+L,GAAG,GAAGP,eAAAA,IAAmB,EAAA;4BAC7C/B,MAAAA,CAAOwC,QAAQ,CAAC,CAAA,EAAGR,OAAAA,CAAAA;AACvB,wBAAA;AAEA,wBAAA,IAAI3L,QAAAA,CAASC,IAAI,CAACkJ,QAAQ,CAAC3B,GAAAA,CAAAA,EAAM;4BAC7BxH,QAAAA,CAASC,IAAI,CAACoJ,WAAW,CAAC7B,GAAAA,CAAAA;AAC9B,wBAAA;;wBAEA,MAAM1R,KAAAA,GAAQ,IAAI,CAAC2S,MAAM,CAACgB,SAAS,CAAC,CAACP,KAAAA,GAAUA,KAAAA,CAAM1N,EAAE,KAAKkP,OAAAA,CAAAA;wBAC5D,IAAI5U,KAAAA,KAAU,EAAC,EAAG;AACd,4BAAA,IAAI,CAAC2S,MAAM,CAACtB,MAAM,CAACrR,KAAAA,EAAO,CAAA,CAAA;AAC9B,wBAAA;AACJ,oBAAA,CAAA;gBACJ,CAAA,EAAG,EAAE;AAEL,gBAAA,IAAI,CAACkV,UAAAA,EAAY;oBACb,OAAO,IAAA;AACX,gBAAA;AAEA,gBAAA,qBAAOoB,oCACHnW,cAAA,CAACgH,WAAAA,EAAAA;AACI,oBAAA,GAAGxH,KAAK;oBACTuD,GAAAA,EAAKA,GAAAA;oBACLqC,OAAAA,EAASsP,mBAAAA;oBACTtC,MAAAA,EAAQmC,YAAAA;AACP,oBAAA,GAAGD,WAAW;AAEdA,oBAAAA,QAAAA,EAAAA,WAAAA,CAAYxC;AAEjBiD,iBAAAA,CAAAA,EAAAA,UAAAA,CAAAA;AAER,YAAA,CAAA;;YAGA,OAAO;AACH9R,8BAAAA,KAAAA,CAAMC,UAAU,CAAuD4R,cAAAA,CAAAA;AACvED,gBAAAA;AACH,aAAA;AACL,QAAA,CAAA;QArPI,IAAI,OAAO9K,aAAa,WAAA,EAAa;;YAEjC,IAAI,CAAC8I,YAAY,GAAG,CAACtL,CAAAA,GAAAA;gBACjB,IAAI,IAAI,CAACiL,MAAM,CAACnF,MAAM,IAAI9F,CAAAA,CAAE6O,OAAO,KAAK/D,WAAAA,CAAUC,GAAG,EAAE;oBACnD,MAAM+D,SAAAA,GAAY,IAAI,CAAC7D,MAAM,CAAC8D,KAAK,CAAC,EAAC,CAAE,CAAC,CAAA,CAAE;AAC1C,oBAAA,IAAID,SAAAA,CAAUzC,MAAM,CAAChC,UAAU,KAAK,KAAA,EAAO;wBACvC,IAAI,CAACyB,OAAO,CAACgD,SAAAA,CAAAA;AACjB,oBAAA;AACJ,gBAAA;AACJ,YAAA,CAAA;AACAtM,YAAAA,QAAAA,CAASC,IAAI,CAACuM,gBAAgB,CAAC,OAAA,EAAS,IAAI,CAAC1D,YAAY,CAAA;AAC7D,QAAA;AACJ,IAAA;AA0OJ;AAEA;AACA,qBAAe,IAAIN,YAAAA,EAAAA;;ACtYZ,MAAMiE,gCAAkBzU,MAAAA,CAAO0B,IAAAA,EAAAA;;;AAgBpC,CAAA,CAAA,CAAA,uLAAA,CAAA;AAsBF,MAAMgT,MAAAA,SAAexT,MAAMyT,SAAS,CAAA;IAmHhCC,qBAAAA,CAAsBC,SAAwB,EAAEC,SAAsB,EAAE;AACpE,QAAA,OAAO,IAAI,CAACC,KAAK,CAACC,IAAI,KAAKF,UAAUE,IAAI;AAC7C,IAAA;IAEAC,oBAAAA,GAAuB;;QAEnB,IAAI,IAAI,CAACF,KAAK,CAACC,IAAI,IAAI,IAAI,CAACE,WAAW,EAAE;AACrC,YAAA,IAAI,CAACA,WAAW,EAAA;AACpB,QAAA;AACA,QAAA,IAAI,CAACC,YAAY,EAAA;QACjB,IAAI,CAACD,WAAW,GAAG,IAAA;QACnB,IAAI,CAACE,SAAS,GAAG,IAAA;AACrB,IAAA;IAqDAC,MAAAA,GAAS;AACL,QAAA,MAAM,EAAEC,cAAc,EAAE,GAAG,IAAI,CAACP,KAAK;AAErC,QAAA,IAAI,IAAI,CAACA,KAAK,CAACC,IAAI,IAAIM,cAAAA,EAAgB;AACnC,YAAA,qBAAOrX,cAAA,CAACqX,cAAAA,EAAAA,EAAAA,CAAAA;QACZ,CAAA,MAAO;YACH,OAAO,IAAA;AACX,QAAA;AACJ,IAAA;;QA5LJ,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CASYJ,WAAAA,GAAiD,IAAA,EAAA,IAAA,CACjDE,SAAAA,GAA+C,IAAA,EAAA,IAAA,CAC/CG,kBAAAA,GAAyC,WACzCC,SAAAA,iBAAYtU,KAAAA,CAAMuU,SAAS,EAAA,EAAA,IAAA,CAEnCV,KAAAA,GAAqB;YACjBC,IAAAA,EAAM,KAAA;YACNM,cAAAA,EAAgBhL;SACpB;;AAIC,QAAA,IAAA,CACOoL,oBAAAA,GAAuB,IAAA;YAC3B,IAAI,CAAC,IAAI,CAACF,SAAS,CAACrS,OAAO,EAAE,OAAO,EAAE;YACtC,OAAOoK,KAAAA,CAAMS,IAAI,CACb,IAAI,CAACwH,SAAS,CAACrS,OAAO,CAACwS,gBAAgB,CACnC,0EAAA,CAAA,CAAA;QAGZ,CAAA;;;AAKC,QAAA,IAAA,CACO1M,gBAAgB,CAACzD,CAAAA,GAAAA;YACrB,IAAIA,CAAAA,CAAE1F,GAAG,KAAK,KAAA,EAAO;gBACjB,MAAM8V,iBAAAA,GAAoB,IAAI,CAACF,oBAAoB,EAAA;gBACnD,IAAIE,iBAAAA,CAAkBtK,MAAM,KAAK,CAAA,EAAG;gBAEpC,MAAMuK,YAAAA,GAAeD,iBAAiB,CAAC,CAAA,CAAE;AACzC,gBAAA,MAAME,cAAcF,iBAAiB,CAACA,iBAAAA,CAAkBtK,MAAM,GAAG,CAAA,CAAE;gBAEnE,IAAI9F,CAAAA,CAAEuQ,QAAQ,EAAE;oBACZ,IAAI/N,QAAAA,CAASgO,aAAa,KAAKH,YAAAA,EAAc;AACzCC,wBAAAA,WAAAA,CAAYG,KAAK,EAAA;AACjBzQ,wBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AACpB,oBAAA;gBACJ,CAAA,MAAO;oBACH,IAAIS,QAAAA,CAASgO,aAAa,KAAKF,WAAAA,EAAa;AACxCD,wBAAAA,YAAAA,CAAaI,KAAK,EAAA;AAClBzQ,wBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AACpB,oBAAA;AACJ,gBAAA;AACJ,YAAA;QACJ,CAAA;;AAIC,QAAA,IAAA,CACO4N,YAAAA,GAAe,IAAA;YACnB,IAAI,IAAI,CAACI,kBAAkB,EAAE;gBACzB,MAAMW,kBAAAA,GAAqB,IAAI,CAACX,kBAAkB;gBAClD,IAAI,CAACA,kBAAkB,GAAG,IAAA;gBAC1BzN,UAAAA,CAAW,IAAA;AACP,oBAAA,IAAIE,QAAAA,CAASC,IAAI,CAACkJ,QAAQ,CAAC+E,kBAAAA,CAAAA,EAAqB;AAC5CA,wBAAAA,kBAAAA,CAAmBD,KAAK,EAAA;AAC5B,oBAAA;gBACJ,CAAA,EAAG,GAAA,CAAA;AACP,YAAA;QACJ,CAAA;;;AAKC,QAAA,IAAA,CACOE,eAAe,CAACC,IAAAA,GAAAA;AACnB,YAAA,IAAI,CAACZ,SAAS,CAAmDrS,OAAO,GAAGiT,IAAAA;AAE5E,YAAA,IAAIA,IAAAA,EAAM;gBACN,IAAI,CAACC,eAAe,CAACD,IAAAA,CAAAA;AACzB,YAAA;AAEA,YAAA,IAAI,IAAI,CAAC3Y,KAAK,CAAC0D,UAAU,EAAE;AACvB,gBAAA,IAAI,OAAO,IAAI,CAAC1D,KAAK,CAAC0D,UAAU,KAAK,UAAA,EAAY;AAC7C,oBAAA,IAAI,CAAC1D,KAAK,CAAC0D,UAAU,CAACiV,IAAAA,CAAAA;gBAC1B,CAAA,MAAO;AACF,oBAAA,IAAI,CAAC3Y,KAAK,CAAC0D,UAAU,CAAmDgC,OAAO,GAC5EiT,IAAAA;AACR,gBAAA;AACJ,YAAA;QACJ,CAAA;;;AAKC,QAAA,IAAA,CACOC,kBAAkB,CAACC,IAAAA,GAAAA;YACvB,MAAMC,UAAAA,GAAaD,KAAKE,iBAAiB;AACzC,YAAA,IAAID,UAAAA,EAAY;AACZ,gBAAA,IAAIA,UAAAA,CAAW1N,YAAY,CAAC,UAAA,CAAA,KAAgB,IAAA,EAAM;oBAC9C0N,UAAAA,CAAW/E,YAAY,CAAC,UAAA,EAAY,IAAA,CAAA;AACxC,gBAAA;AACA+E,gBAAAA,UAAAA,CAAWN,KAAK,EAAA;AAChB,gBAAA;AACJ,YAAA;YAEA,MAAML,iBAAAA,GAAoB,IAAI,CAACF,oBAAoB,EAAA;YACnD,IAAIE,iBAAAA,CAAkBtK,MAAM,GAAG,CAAA,EAAG;gBAC9BsK,iBAAiB,CAAC,CAAA,CAAE,CAACK,KAAK,EAAA;YAC9B,CAAA,MAAO;AACHK,gBAAAA,IAAAA,CAAKL,KAAK,EAAA;AACd,YAAA;AACJ,QAAA,CAAA,EAAA,IAAA,CAgBOvX,OAAO,CAACoT,aAAAA,GAAAA;AACX,YAAA,MAAM,EAAEjC,UAAU,EAAEI,mBAAmB,EAAE5R,QAAQ,EAAE,GAAG6F,IAAAA,EAAM,GAAG,IAAI,CAACzG,KAAK;;AAGzE,YAAA,IAAI,CAAC8X,kBAAkB,GAAGvN,QAAAA,CAASgO,aAAa;AAEhD,YAAA,MAAM,CAACrB,SAAAA,EAAW7B,OAAAA,CAAQ,GAAGtC,cAAAA,CAAa8B,WAAW,CAAC;gBAClDtC,SAAAA,EAAW,GAAA;gBACXF,OAAAA,EAAS,IAAA;AACTD,gBAAAA,UAAAA;gBACAiC,aAAAA,EAAe,IAAI,CAACA,aAAa;AACjC7B,gBAAAA,mBAAAA;AACAxG,gBAAAA,QAAAA,EAAUkG,eAAe8G,MAAM;AAC/B1G,gBAAAA,SAAAA,gBACI9R,cAAA,CAACwW,eAAAA,EAAAA;oBACG9Q,IAAAA,EAAK,QAAA;AACJ,oBAAA,GAAGO,IAAI;oBACRlD,GAAAA,EAAK,IAAI,CAACmV,YAAY;oBACtBO,YAAAA,EAAW,MAAA;AACXxM,oBAAAA,QAAAA,EAAU,EAAC;oBACXtE,SAAAA,EAAW,IAAI,CAACqD,aAAa;oBAC7B5F,OAAAA,EAAS,CAACmC,CAAAA,GAAMA,CAAAA,CAAEE,eAAe,EAAA;oBACjCpE,QAAQ,EAAA,IAAA;AAEPjD,oBAAAA,QAAAA,EAAAA;;AAGb,aAAA,CAAA;YAEA,IAAI,CAAC6W,WAAW,GAAGpC,OAAAA;YAEnB,IAAI,CAAC6D,QAAQ,CAAC;gBACV3B,IAAAA,EAAM,IAAA;gBACNM,cAAAA,EAAgBX;AACpB,aAAA,CAAA;YACA,IAAI,CAACS,SAAS,GAAGtD,aAAAA,IAAiB,IAAA;AACtC,QAAA,CAAA,EAAA,IAAA,CAEO8E,QAAQ,CAACrF,IAAAA,GAAAA;YACZ,IAAI,CAAC2D,WAAW,GAAG3D,IAAAA,CAAAA;AACvB,QAAA,CAAA,EAAA,IAAA,CAEQO,gBAAgB,CAACP,IAAAA,GAAAA;AACrB,YAAA,IAAI,CAAC4D,YAAY,EAAA;YACjB,IAAI,CAACwB,QAAQ,CAAC;gBACV3B,IAAAA,EAAM,KAAA;gBACNM,cAAAA,EAAgBhL;AACpB,aAAA,CAAA;YACA,IAAI,CAAC8K,SAAS,GAAG7D,IAAAA,CAAAA;AACrB,QAAA,CAAA;;AAWJ;AA7LMmD,MAAAA,CAIKmC,YAAAA,GAAe;IAClBhH,UAAAA,EAAY,IAAA;IACZI,mBAAAA,EAAqB;AACzB,CAAA;;ACnCJ,IAAI6G,aAAAA,GAAgB,CAAA;AAEL,MAAMC,WAAAA,SAAoB7V,MAAMyT,SAAS,CAAA;IAgBpDU,MAAAA,GAAS;AACL,QAAA,MAAM2B,UAAU,CAAC,kBAAkB,EAAEF,aAAAA,EAAAA,CAAgB,MAAM,CAAC;AAC5D,QAAA,MAAMG,gBAAgB,CAAC,kBAAkB,EAAEH,aAAAA,EAAAA,CAAgB,YAAY,CAAC;AAExE,QAAA,qBACIlY,eAAA,CAAC8V,MAAAA,EAAAA;AACI,YAAA,GAAG,IAAI,CAACjX,KAAK,CAACyZ,WAAW;YAC1BvT,IAAAA,EAAK,aAAA;YACLC,iBAAAA,EAAiBoT,OAAAA;YACjBzH,kBAAAA,EAAkB0H,aAAAA;YAClBjW,GAAAA,EAAK,IAAI,CAACmW,MAAM;YAChBtH,UAAAA,EAAY,KAAA;YACZI,mBAAAA,EAAqB,KAAA;;AAEpB,gBAAA,IAAI,CAACxS,KAAK,CAACgF,MAAM,kBAAIxE,cAAA,CAACmZ,QAAAA,EAAAA;oBAAa5T,EAAAA,EAAIwT,OAAAA;8BAAU,IAAI,CAACvZ,KAAK,CAACgF;;8BAC7DxE,cAAA,CAACoZ,MAAAA,EAAAA;oBAAW7T,EAAAA,EAAIyT,aAAAA;8BAAgB,IAAI,CAACxZ,KAAK,CAACwK;;8BAC3ChK,cAAA,CAACqZ,QAAAA,EAAAA;AACG,oBAAA,QAAA,gBAAArZ,cAAA,CAACkG,QAAAA,EAAAA;wBAAOd,OAAAA,EAAS,IAAI,CAACuT,KAAK;kCAAG,IAAI,CAACnZ,KAAK,CAAC8Z;;;;;AAIzD,IAAA;;QArCW,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CACHJ,MAAAA,iBAAS1B,wBAMVT,IAAAA,GAAO,IAAA;YACV,OAAO,IAAIwC,QAAQ,CAACC,OAAAA,GAAAA;gBAChB,MAAMC,OAAAA,GAAU,IAAMD,OAAAA,CAAQ,IAAA,CAAA;AAC9B,gBAAA,IAAI,CAACN,MAAM,CAAChU,OAAO,EAAEzE,IAAAA,CAAKgZ,OAAAA,CAAAA;AAC9B,YAAA,CAAA,CAAA;AACJ,QAAA,CAAA,EAAA,IAAA,CAEQd,QAAQ,IAAM,IAAI,CAACO,MAAM,CAAChU,OAAO,EAAEyT,KAAAA,EAAAA;;AAwB/C;AAtCqBG,WAAAA,CAGVF,YAAAA,GAAe;IAClBU,UAAAA,EAAY;AAChB,CAAA;;ACLW,MAAMI,aAAAA,SAAsBzW,MAAMyT,SAAS,CAAA;IAwBtDU,MAAAA,GAAS;AACL,QAAA,MAAM,EAAE5S,MAAM,EAAEwF,IAAI,EAAE2P,OAAO,EAAEC,MAAM,EAAEX,WAAW,EAAE,GAAG,IAAI,CAACzZ,KAAK;AACjE,QAAA,qBACImB,eAAA,CAAC8V,MAAAA,EAAAA;AACI,YAAA,GAAGwC,WAAW;YACflW,GAAAA,EAAK,IAAI,CAACmW,MAAM;YAChBtH,UAAAA,EAAY,KAAA;YACZI,mBAAAA,EAAqB,KAAA;;AAEpBxN,gBAAAA,MAAAA,kBAAUxE,cAAA,CAACmZ,QAAAA,EAAAA;AAAc3U,oBAAAA,QAAAA,EAAAA;;8BAC1BxE,cAAA,CAACoZ,MAAAA,EAAAA;AAAYpP,oBAAAA,QAAAA,EAAAA;;8BACbrJ,eAAA,CAAC0Y,QAAAA,EAAAA;;sCACGrZ,cAAA,CAACkG,QAAAA,EAAAA;4BAAOd,OAAAA,EAAS,IAAI,CAACuG,MAAM;AAAGiO,4BAAAA,QAAAA,EAAAA;;sCAC/B5Z,cAAA,CAAC4G,YAAAA,EAAAA;4BAAaxB,OAAAA,EAAS,IAAI,CAACyU,OAAO;AAAGF,4BAAAA,QAAAA,EAAAA;;;;;;AAItD,IAAA;;QAzCW,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CACHT,MAAAA,iBAAS1B,wBAOVT,IAAAA,GAAO,IAAA;YACV,OAAO,IAAIwC,OAAAA,CAAQ,CAACC,OAAAA,EAASM,MAAAA,GAAAA;AACzB,gBAAA,MAAML,UAAU,CAACnG,IAAAA,GAAAA;AACb,oBAAA,IAAIA,IAAAA,EAAM;wBACNkG,OAAAA,CAAQ,IAAA,CAAA;oBACZ,CAAA,MAAO;AACHM,wBAAAA,MAAAA,EAAAA;AACJ,oBAAA;AACJ,gBAAA,CAAA;AACA,gBAAA,IAAI,CAACZ,MAAM,CAAChU,OAAO,EAAEzE,IAAAA,CAAKgZ,OAAAA,CAAAA;AAC9B,YAAA,CAAA,CAAA;AACJ,QAAA,CAAA,EAAA,IAAA,CAEQ9N,SAAS,IAAM,IAAI,CAACuN,MAAM,CAAChU,OAAO,EAAEyT,KAAAA,CAAM,KAAA,CAAA,EAAA,IAAA,CAC1CkB,OAAAA,GAAU,IAAM,IAAI,CAACX,MAAM,CAAChU,OAAO,EAAEyT,KAAAA,CAAM,IAAA,CAAA;;AAoBvD;AA1CqBe,aAAAA,CAGVd,YAAAA,GAAe;IAClBe,OAAAA,EAAS,KAAA;IACTC,MAAAA,EAAQ;AACZ,CAAA;;ACRJ,MAAMxL,OAAAA,iBAAQrM,MAAAA,CAAAA,OAAAA,EAAAA;;;;AAOd,MAAMgY,WAAAA,iBAAYhY,MAAAA,CAAAA,OAAAA,EAAAA;;;gIAQMH,aAAAA,CAAcF,UAAAA,CAAWoE,YAAY,CAAA,EAAA,yCAAA,EAErClE,aAAAA,CAAcF,WAAW0B,UAAU,CAAA,EAAA,iCAAA,EAKnCxB,cAAcF,UAAAA,CAAWiB,OAAO,6BACxBf,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,yCAAA,EAKrDjC,aAAAA,CAAcF,WAAWiB,OAAO,CAAA,EAAA,4BAAA,EAKzBf,cAAcF,UAAAA,CAAW2M,eAAe,yBACpCzM,aAAAA,CAAcF,UAAAA,CAAWqE,mBAAmB,CAAA,EAAA,0CAAA,EAKvDnE,aAAAA,CAAcF,WAAWgB,QAAQ,CAAA,EAAA,iCAAA,EAK1Bd,cAAcF,UAAAA,CAAWe,KAAK,6BACtBb,aAAAA,CAAcF,UAAAA,CAAWuF,WAAW,CAAA,EAAA,IAAA,EAG9D,CAACzH,QACCA,KAAAA,CAAM8O,OAAO,GACP;;sBAEQ,EAAE1M,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;;;eAIzC,EAAEb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;AAE7C,IAAA,CAAC,GACS,EAAA,EAAA,YAAA,EAGR,CAACjD,QACCA,KAAAA,CAAMiF,SAAS,GACT;kBACI,EAAE7C,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;;eAGrC,EAAEb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;AAE7C,IAAA,CAAC,GACS,EAAA,EAAA,sEAAA,EAMGb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,EAAA,yHAAA,EAczC,CAACjD,KAAAA,GACCA,KAAAA,CAAMwO,KAAK,KAAK,EAAA,GACV;;;oBAGM,EAAEpM,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,CAAE;;;;AAIvD,IAAA,CAAC,GACS,EAAA,EAAA,oEAAA,EAIQxB,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,EAAA,oCAAA,CAAA;AAMzD,MAAMqL,gBAAAA,iBAAiB1M,MAAAA,CAAAA,KAAAA,EAAAA;;;AACVH,CAAAA,CAAAA,CAAAA,QAAAA,EAAAA,aAAAA,CAAcF,WAAWe,KAAK,CAAA,EAAA,mEAAA,CAAA;AAO3C;;;;AAIC,UACKuX,OAAAA,iBAAQ/W,KAAAA,CAAMC,UAAU,CAA2C,CAAC1D,KAAAA,EAAOuD,GAAAA,GAAAA;AAC7E,IAAA,MAAM,CAACuL,OAAAA,EAASS,UAAAA,CAAW,GAAGpP,cAAAA,CAAS,KAAA,CAAA;AACvC,IAAA,MAAM,CAACqO,KAAAA,EAAOgB,QAAAA,CAAS,GAAGrP,cAAAA,CAASH,KAAAA,CAAMwO,KAAK,IAAI,EAAA,CAAA;AAClD,IAAA,MAAMkB,OAAAA,GAAUtK,WAAAA,EAAAA;AAChB,IAAA,MAAMqV,eAAelV,YAAAA,CAAesH,SAAAA,CAAAA;IAEpCrH,eAAAA,CAAU,IAAA;QACN,IAAIxF,KAAAA,CAAMwO,KAAK,KAAK3B,SAAAA,IAAa7M,MAAMwO,KAAK,KAAKiM,YAAAA,CAAa/U,OAAO,EAAE;AACnE8J,YAAAA,QAAAA,CAASxP,MAAMwO,KAAK,CAAA;YACpBiM,YAAAA,CAAa/U,OAAO,GAAG1F,KAAAA,CAAMwO,KAAK;AACtC,QAAA;IACJ,CAAA,EAAG;AAACxO,QAAAA,KAAAA,CAAMwO;AAAM,KAAA,CAAA;AAEhB,IAAA,MAAMkC,cAAc,CAAC3I,CAAAA,GAAAA;QACjBwH,UAAAA,CAAW,IAAA,CAAA;QACX,IAAIvP,KAAAA,CAAM2Q,OAAO,EAAE;AACf3Q,YAAAA,KAAAA,CAAM2Q,OAAO,CAAC5I,CAAAA,CAAAA;AAClB,QAAA;AACJ,IAAA,CAAA;AAEA,IAAA,MAAM2S,kBAAkB,CAAC3S,CAAAA,GAAAA;QACrB,IAAI/H,KAAAA,CAAMyQ,QAAQ,EAAE;YAChBjB,QAAAA,CAASzH,CAAAA,CAAE8I,MAAM,CAACrC,KAAK,CAAA;AACvBxO,YAAAA,KAAAA,CAAMyQ,QAAQ,CAAC1I,CAAAA,CAAAA;QACnB,CAAA,MAAO;YACHyH,QAAAA,CAASzH,CAAAA,CAAE8I,MAAM,CAACrC,KAAK,CAAA;AAC3B,QAAA;AACJ,IAAA,CAAA;AAEA,IAAA,qBACIrN,eAAA,CAACyN,OAAAA,EAAAA;;0BACGpO,cAAA,CAAC+Z,WAAAA,EAAAA;AACI,gBAAA,GAAGva,KAAK;gBACTuD,GAAAA,EAAKA,GAAAA;gBACLiL,KAAAA,EAAOA,KAAAA;gBACPiC,QAAAA,EAAUiK,eAAAA;gBACV/J,OAAAA,EAASD,WAAAA;gBACT5B,OAAAA,EAASA,OAAAA;gBACT+C,cAAAA,EAAc,CAAC,CAAC7R,KAAAA,CAAMiF,SAAS;AAC/B2M,gBAAAA,eAAAA,EAAe5R,MAAM+O,QAAQ;gBAC7B+C,kBAAAA,EAAkB9R,KAAAA,CAAMiF,SAAS,GAAGyK,OAAAA,GAAU7C;;0BAElDrM,cAAA,CAACwR,MAAAA,EAAAA;AAAMhS,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM2H;;YACZ3H,KAAAA,CAAMiF,SAAS,kBAAIzE,cAAA,CAACyO,gBAAAA,EAAAA;gBAAelJ,EAAAA,EAAI2J,OAAAA;AAAU1P,gBAAAA,QAAAA,EAAAA,KAAAA,CAAMiF;;;;AAGpE,CAAA;AAEAuV,OAAAA,CAAMG,WAAW,GAAG,OAAA;;AC3KpB,MAAM/L,OAAAA,iBAAQrM,MAAAA,CAAAA,OAAAA,EAAAA;;;;AAOd,MAAMgY,SAAAA,iBAAYhY,MAAAA,CAAAA,UAAAA,EAAAA;;;iHAOMH,aAAAA,CAAcF,UAAAA,CAAWoE,YAAY,CAAA,EAAA,yCAAA,EAErClE,aAAAA,CAAcF,WAAW0B,UAAU,CAAA,EAAA,iCAAA,EAKnCxB,cAAcF,UAAAA,CAAWiB,OAAO,6BACxBf,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,yCAAA,EAKrDjC,aAAAA,CAAcF,WAAWiB,OAAO,CAAA,EAAA,4BAAA,EAKzBf,cAAcF,UAAAA,CAAW2M,eAAe,yBACpCzM,aAAAA,CAAcF,UAAAA,CAAWqE,mBAAmB,CAAA,EAAA,4BAAA,EAIvDnE,aAAAA,CAAcF,WAAWgB,QAAQ,CAAA,EAAA,iCAAA,EAK1Bd,cAAcF,UAAAA,CAAWe,KAAK,6BACtBb,aAAAA,CAAcF,UAAAA,CAAWuF,WAAW,CAAA,EAAA,IAAA,EAG9D,CAACzH,QACCA,KAAAA,CAAM8O,OAAO,GACP;;sBAEQ,EAAE1M,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;;;eAIzC,EAAEb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;AAE7C,IAAA,CAAC,GACS,EAAA,EAAA,YAAA,EAGR,CAACjD,QACCA,KAAAA,CAAMiF,SAAS,GACT;kBACI,EAAE7C,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;;eAGrC,EAAEb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;AAE7C,IAAA,CAAC,GACS,EAAA,EAAA,sEAAA,EAMGb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,EAAA,yHAAA,EAczC,CAACjD,KAAAA,GACCA,KAAAA,CAAMwO,KAAK,KAAK,EAAA,GACV;;;oBAGM,EAAEpM,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,CAAE;;;;AAIvD,IAAA,CAAC,GACS,EAAA,EAAA,oEAAA,EAIQxB,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,EAAA,oCAAA,CAAA;AAMzD,MAAMqL,gBAAAA,iBAAiB1M,MAAAA,CAAAA,KAAAA,EAAAA;;;AACVH,CAAAA,CAAAA,CAAAA,QAAAA,EAAAA,aAAAA,CAAcF,WAAWe,KAAK,CAAA,EAAA,mEAAA,CAAA;AAO3C;;;;AAIC,IACD,SAAS2X,iBAAAA,CAAkB5a,KAAoB,EAAEuD,GAAmC,EAAA;AAChF,IAAA,MAAM,EAAEoE,KAAK,EAAE1C,SAAS,EAAEuJ,KAAAA,EAAOqM,UAAU,EAAE9L,QAAQ,EAAE,GAAGtI,IAAAA,EAAM,GAAGzG,KAAAA;AACnE,IAAA,MAAM,CAAC8O,OAAAA,EAASS,UAAAA,CAAW,GAAGpP,cAAAA,CAAS,KAAA,CAAA;AACvC,IAAA,MAAM,CAACqO,KAAAA,EAAOgB,QAAAA,CAAS,GAAGrP,eAAS0a,UAAAA,IAAc,EAAA,CAAA;AACjD,IAAA,MAAMnL,OAAAA,GAAUtK,WAAAA,EAAAA;AAChB,IAAA,MAAMqV,eAAelV,YAAAA,CAAesH,SAAAA,CAAAA;IAEpCrH,eAAAA,CAAU,IAAA;AACN,QAAA,IAAIqV,UAAAA,KAAehO,SAAAA,IAAagO,UAAAA,KAAeJ,YAAAA,CAAa/U,OAAO,EAAE;YACjE8J,QAAAA,CAASqL,UAAAA,CAAAA;AACTJ,YAAAA,YAAAA,CAAa/U,OAAO,GAAGmV,UAAAA;AAC3B,QAAA;IACJ,CAAA,EAAG;AAACA,QAAAA;AAAW,KAAA,CAAA;AAEf,IAAA,MAAMnK,cAAc,CAAC3I,CAAAA,GAAAA;QACjBwH,UAAAA,CAAW,IAAA,CAAA;QACX,IAAIvP,KAAAA,CAAM2Q,OAAO,EAAE;AACf3Q,YAAAA,KAAAA,CAAM2Q,OAAO,CAAC5I,CAAAA,CAAAA;AAClB,QAAA;AACJ,IAAA,CAAA;AAEA,IAAA,MAAM2S,kBAAkB,CAAC3S,CAAAA,GAAAA;QACrB,IAAI/H,KAAAA,CAAMyQ,QAAQ,EAAE;YAChBjB,QAAAA,CAASzH,CAAAA,CAAE8I,MAAM,CAACrC,KAAK,CAAA;AACvBxO,YAAAA,KAAAA,CAAMyQ,QAAQ,CAAC1I,CAAAA,CAAAA;QACnB,CAAA,MAAO;YACHyH,QAAAA,CAASzH,CAAAA,CAAE8I,MAAM,CAACrC,KAAK,CAAA;AAC3B,QAAA;AACJ,IAAA,CAAA;AAEA,IAAA,qBACIrN,eAAA,CAACyN,OAAAA,EAAAA;;0BACGpO,cAAA,CAAC+Z,SAAAA,EAAAA;AACI,gBAAA,GAAG9T,IAAI;gBACRlD,GAAAA,EAAKA,GAAAA;gBACLiL,KAAAA,EAAOA,KAAAA;gBACPiC,QAAAA,EAAUiK,eAAAA;gBACV/J,OAAAA,EAASD,WAAAA;gBACT5B,OAAAA,EAASA,OAAAA;gBACTC,QAAAA,EAAUA,QAAAA;AACV8C,gBAAAA,cAAAA,EAAc,CAAC,CAAC5M,SAAAA;gBAChB2M,eAAAA,EAAe7C,QAAAA;AACf+C,gBAAAA,kBAAAA,EAAkB7M,YAAYyK,OAAAA,GAAU7C;;0BAE5CrM,cAAA,CAACwR,MAAAA,EAAAA;AAAMrK,gBAAAA,QAAAA,EAAAA;;AACN1C,YAAAA,SAAAA,kBAAazE,cAAA,CAACyO,gBAAAA,EAAAA;gBAAelJ,EAAAA,EAAI2J,OAAAA;AAAUzK,gBAAAA,QAAAA,EAAAA;;;;AAGxD;AAEA,MAAM6V,QAAAA,iBAAWrX,KAAAA,CAAMC,UAAU,CAACkX,iBAAAA;;AC5KlC,MAAMhM,OAAAA,iBAAQrM,MAAAA,CAAAA,OAAAA,EAAAA;;;;AAad,MAAMwY,WAAAA,iBAAcxY,MAAAA,CAAAA,QAAAA,EAAAA;;;+HAQIH,aAAAA,CAAcF,UAAAA,CAAWoE,YAAY,CAAA,EAAA,yCAAA,EAErClE,aAAAA,CAAcF,WAAW0B,UAAU,CAAA,EAAA,qEAAA,EAOnCxB,cAAcF,UAAAA,CAAWiB,OAAO,6BACxBf,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,yCAAA,EAKrDjC,aAAAA,CAAcF,WAAWiB,OAAO,CAAA,EAAA,4BAAA,EAKzBf,cAAcF,UAAAA,CAAW2M,eAAe,yBACpCzM,aAAAA,CAAcF,UAAAA,CAAWqE,mBAAmB,CAAA,EAAA,4BAAA,EAIvDnE,aAAAA,CAAcF,WAAWgB,QAAQ,CAAA,EAAA,iCAAA,EAK1Bd,cAAcF,UAAAA,CAAWe,KAAK,6BACtBb,aAAAA,CAAcF,UAAAA,CAAWuF,WAAW,CAAA,EAAA,IAAA,EAG9D,CAACzH,QACCA,KAAAA,CAAM8O,OAAO,GACP;;sBAEQ,EAAE1M,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;;;eAIzC,EAAEb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;AAE7C,IAAA,CAAC,GACS,EAAA,EAAA,YAAA,EAGR,CAACjD,QACCA,KAAAA,CAAMiF,SAAS,GACT;kBACI,EAAE7C,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;;eAGrC,EAAEb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;AAE7C,IAAA,CAAC,GACS,EAAA,EAAA,sEAAA,EAMGb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,EAAA,yHAAA,EAczC,CAACjD,KAAAA,GACCA,KAAAA,CAAMwO,KAAK,KAAK,EAAA,GACV;;;oBAGM,EAAEpM,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,CAAE;;;;AAIvD,IAAA,CAAC,GACS,EAAA,EAAA,oEAAA,EAIQxB,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,EAAA,oCAAA,CAAA;AAMzD,MAAMqL,gBAAAA,iBAAiB1M,MAAAA,CAAAA,KAAAA,EAAAA;;;AACVH,CAAAA,CAAAA,CAAAA,QAAAA,EAAAA,aAAAA,CAAcF,WAAWe,KAAK,CAAA,EAAA,mEAAA,CAAA;AAO3C,MAAM+X,gBAAAA,iBAAiBzY,MAAAA,CAAAA,MAAAA,EAAAA;;;;AAMvB;;;;AAIC,IACD,SAAS0Y,eAAAA,CAAgBjb,KAAkB,EAAEuD,GAAiC,EAAA;AAC1E,IAAA,MAAM,CAACuL,OAAAA,EAASS,UAAAA,CAAW,GAAGpP,cAAAA,CAAS,KAAA,CAAA;AACvC,IAAA,MAAM,CAACqO,KAAAA,EAAOgB,QAAAA,CAAS,GAAGrP,cAAAA,CAASH,KAAAA,CAAMwO,KAAK,IAAI,EAAA,CAAA;AAClD,IAAA,MAAMkB,OAAAA,GAAUtK,WAAAA,EAAAA;AAChB,IAAA,MAAMqV,eAAelV,YAAAA,CAAesH,SAAAA,CAAAA;IAEpCrH,eAAAA,CAAU,IAAA;QACN,IAAIxF,KAAAA,CAAMwO,KAAK,KAAK3B,SAAAA,IAAa7M,MAAMwO,KAAK,KAAKiM,YAAAA,CAAa/U,OAAO,EAAE;AACnE8J,YAAAA,QAAAA,CAASxP,MAAMwO,KAAK,CAAA;YACpBiM,YAAAA,CAAa/U,OAAO,GAAG1F,KAAAA,CAAMwO,KAAK;AACtC,QAAA;IACJ,CAAA,EAAG;AAACxO,QAAAA,KAAAA,CAAMwO;AAAM,KAAA,CAAA;AAEhB,IAAA,MAAMkC,cAAc,CAAC3I,CAAAA,GAAAA;QACjBwH,UAAAA,CAAW,IAAA,CAAA;QACX,IAAIvP,KAAAA,CAAM2Q,OAAO,EAAE;AACf3Q,YAAAA,KAAAA,CAAM2Q,OAAO,CAAC5I,CAAAA,CAAAA;AAClB,QAAA;AACJ,IAAA,CAAA;AAEA,IAAA,MAAM2S,kBAAkB,CAAC3S,CAAAA,GAAAA;QACrB,IAAI/H,KAAAA,CAAMyQ,QAAQ,EAAE;YAChBjB,QAAAA,CAASzH,CAAAA,CAAE8I,MAAM,CAACrC,KAAK,CAAA;AACvBxO,YAAAA,KAAAA,CAAMyQ,QAAQ,CAAC1I,CAAAA,CAAAA;QACnB,CAAA,MAAO;YACHyH,QAAAA,CAASzH,CAAAA,CAAE8I,MAAM,CAACrC,KAAK,CAAA;AAC3B,QAAA;AACJ,IAAA,CAAA;AAEA,IAAA,qBACIrN,eAAA,CAACyN,OAAAA,EAAAA;;0BACGzN,eAAA,CAAC4Z,WAAAA,EAAAA;AACI,gBAAA,GAAG/a,KAAK;gBACTuD,GAAAA,EAAKA,GAAAA;gBACL2X,QAAAA,EAAU,KAAA;gBACV1M,KAAAA,EAAOA,KAAAA;gBACPiC,QAAAA,EAAUiK,eAAAA;gBACV/J,OAAAA,EAASD,WAAAA;gBACT5B,OAAAA,EAASA,OAAAA;gBACT+C,cAAAA,EAAc,CAAC,CAAC7R,KAAAA,CAAMiF,SAAS;AAC/B2M,gBAAAA,eAAAA,EAAe5R,MAAM+O,QAAQ;gBAC7B+C,kBAAAA,EAAkB9R,KAAAA,CAAMiF,SAAS,GAAGyK,OAAAA,GAAU7C,SAAAA;;kCAE9CrM,cAAA,CAAC2a,QAAAA,EAAAA,EAAAA,CAAAA;AACAnb,oBAAAA,KAAAA,CAAMY;;;0BAEXJ,cAAA,CAACwR,MAAAA,EAAAA;AAAMhS,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM2H;;0BACbnH,cAAA,CAACwa,gBAAAA,EAAAA;gBAAehV,aAAAA,EAAY,MAAA;AACxB,gBAAA,QAAA,gBAAAxF,cAAA,CAACmB,UAAAA,EAAAA,EAAAA;;YAEJ3B,KAAAA,CAAMiF,SAAS,kBAAIzE,cAAA,CAACyO,gBAAAA,EAAAA;gBAAelJ,EAAAA,EAAI2J,OAAAA;AAAU1P,gBAAAA,QAAAA,EAAAA,KAAAA,CAAMiF;;;;AAGpE;AAEA,MAAMmW,MAAAA,iBAAS3X,KAAAA,CAAMC,UAAU,CAACuX,eAAAA;;AC5MhC,MAAMrM,OAAAA,iBAAQrM,MAAAA,CAAAA,OAAAA,EAAAA;;;;AAQd,MAAM8Y,eAAAA,iBAAkB9Y,MAAAA,CAAAA,MAAAA,EAAAA;;;AAGAH,CAAAA,CAAAA,CAAAA,0CAAAA,EAAAA,aAAAA,CAAcF,UAAAA,CAAWoE,YAAY,CAAA,EAAA,4EAAA,EAIrClE,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,EAAA,6HAAA,EASzBxB,aAAAA,CAAcF,UAAAA,CAAWkB,gBAAgB,CAAA,EAAA,2BAAA,EACxChB,aAAAA,CAAcF,WAAWkB,gBAAgB,CAAA,EAAA,2GAAA,CAAA;AAU5E,MAAMkY,aAAAA,iBAAc/Y,MAAAA,CAAAA,OAAAA,EAAAA;;;yEAQF8Y,eAAAA,EAAAA,oBAAAA,EACUjZ,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,gBAAA,EACpCf,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,gBAAA,EAGtCkY,eAAAA,EAAAA,wEAAAA,EAMMA,eAAAA,EAAAA,oBAAAA,EACIjZ,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,gBAAA,EACpCf,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,sBAAA,EAGhCkY,eAAAA,EAAAA,iFAAAA,EAKWjZ,aAAAA,CAAcF,UAAAA,CAAWkB,gBAAgB,CAAA,EAAA,wEAAA,EAOnDiY,eAAAA,EAAAA,aAAAA,EAA8BA,eAAAA,EAAAA,gBAAAA,EAC/BjZ,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,wBAAA,EACxBf,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,iDAAA,EAKrDjC,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,sBAAA,EAIzBkY,eAAAA,EAAAA,gBAAAA,EACAjZ,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,iCAAA,EAIvCf,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,iBAAA,EAI9BkY,eAAAA,EAAAA,gBAAAA,EACKjZ,aAAAA,CAAcF,UAAAA,CAAW2M,eAAe,CAAA,EAAA,+CAAA,EAK/CzM,aAAAA,CAAcF,UAAAA,CAAWgB,QAAQ,CAAA,EAAA,4CAAA,EAIvBmY,eAAAA,EAAAA,8BAAAA,EAA+CA,eAAAA,EAAAA,oBAAAA,EAC9CjZ,aAAAA,CAAcF,UAAAA,CAAWgB,QAAQ,CAAA,EAAA,IAAA,CAAA;AAiB7D;;;;AAIC,IACD,SAASqY,iBAAAA,CAAkBvb,KAAoB,EAAEwb,MAAmC,EAAA;IAChF,MAAM,EAAE7T,KAAAA,GAAQ,EAAE,EAAE8T,aAAAA,GAAgB,KAAK,EAAEC,OAAO,EAAE,GAAGjV,IAAAA,EAAM,GAAGzG,KAAAA;IAEhE,MAAMuD,GAAAA,GAAMoY,kBACR,CAAChD,IAAAA,GAAAA;;AAEG,QAAA,IAAIA,IAAAA,EAAM;YACNA,IAAAA,CAAK8C,aAAa,GAAG,CAAC,CAACA,aAAAA;AAC3B,QAAA;;QAGA,IAAI,OAAOD,WAAW,UAAA,EAAY;YAC9BA,MAAAA,CAAO7C,IAAAA,CAAAA;AACX,QAAA,CAAA,MAAO,IAAI6C,MAAAA,EAAQ;AACdA,YAAAA,MAAAA,CAA2D9V,OAAO,GAAGiT,IAAAA;AAC1E,QAAA;IACJ,CAAA,EACA;AAAC8C,QAAAA,aAAAA;AAAeD,QAAAA;AAAO,KAAA,CAAA;AAG3B,IAAA,qBACIra,eAAA,CAACyN,OAAAA,EAAAA;;0BACGpO,cAAA,CAAC8a,aAAAA,EAAAA;AACI,gBAAA,GAAG7U,IAAI;gBACRlD,GAAAA,EAAKA,GAAAA;gBACLT,IAAAA,EAAK,UAAA;gBACL4Y,OAAAA,EAASA,OAAAA;AACTE,gBAAAA,cAAAA,EAAcH,gBAAgB,OAAA,GAAUC;;0BAE5Clb,cAAA,CAAC6a,eAAAA,EAAAA,EAAAA,CAAAA;0BACD7a,cAAA,CAACwR,MAAAA,EAAAA;AAAMrK,gBAAAA,QAAAA,EAAAA;;;;AAGnB;AAEA,MAAMkU,QAAAA,iBAAWpY,KAAAA,CAAMC,UAAU,CAAkC6X,iBAAAA;;AC/JnE,MAAMO,MAAAA,iBAASvZ,MAAAA,CAAAA,OAAAA,EAAAA;;;;AAMf,MAAMiY,OAAAA,iBAAQjY,MAAAA,CAAAA,OAAAA,EAAAA;;;qJAYcH,aAAAA,CAAcF,UAAAA,CAAWsC,UAAU,CAAA,EAAA,+KAAA,EAanCpC,aAAAA,CAAcF,WAAW2M,eAAe,CAAA,EAAA,sCAAA,EAExCzM,cAAcF,UAAAA,CAAW0B,UAAU,2DAMnCxB,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,oEAAA,EAK1CjC,aAAAA,CAAcF,WAAWiB,OAAO,CAAA,EAAA,uDAAA,EAKxBf,cAAcF,UAAAA,CAAWmC,aAAa,qBAC9CjC,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,gDAAA,EAMvCf,aAAAA,CAAcF,WAAWiB,OAAO,CAAA,EAAA,4BAAA,EAKhCf,cAAcF,UAAAA,CAAW2M,eAAe,4CAI7BzM,aAAAA,CAAcF,UAAAA,CAAWsC,UAAU,CAAA,EAAA,iEAAA,EAKnCpC,aAAAA,CAAcF,WAAWO,kBAAkB,CAAA,EAAA,gBAAA,EAC/CL,aAAAA,CAAcF,UAAAA,CAAW2M,eAAe,CAAA,EAAA,IAAA,CAAA;AAShE;;;;AAIC,IACD,SAASkN,eAAAA,CAAgB/b,KAAkB,EAAEuD,GAAgC,EAAA;AACzE,IAAA,qBACIpC,eAAA,CAAC2a,MAAAA,EAAAA;;0BACGtb,cAAA,CAACga,OAAAA,EAAAA;AACI,gBAAA,GAAGxa,KAAK;gBACTuD,GAAAA,EAAKA,GAAAA;gBACLT,IAAAA,EAAK,UAAA;gBACLoD,IAAAA,EAAK,QAAA;AACL0V,gBAAAA,cAAAA,EAAc5b,MAAM0b;;0BAExBlb,cAAA,CAACwR,MAAAA,EAAAA,EAAAA,CAAAA;0BACDxR,cAAA,CAACwR,MAAAA,EAAAA;AAAMhS,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM2H;;;;AAGzB;AAEA,MAAMqU,MAAAA,iBAASvY,KAAAA,CAAMC,UAAU,CAACqY,eAAAA;;ACrGhC,MAAMnN,OAAAA,iBAAQrM,MAAAA,CAAAA,OAAAA,EAAAA;;;;AAQd,MAAM0Z,WAAAA,iBAAc1Z,MAAAA,CAAAA,MAAAA,EAAAA;;;AAIIH,CAAAA,CAAAA,CAAAA,2DAAAA,EAAAA,aAAAA,CAAcF,UAAAA,CAAWoE,YAAY,CAAA,EAAA,gOAAA,EAevBlE,aAAAA,CAAcF,WAAW0B,UAAU,CAAA,EAAA,2CAAA,CAAA;AAMzE,MAAM0X,WAAAA,iBAAc/Y,MAAAA,CAAAA,OAAAA,EAAAA;;;yEAQF0Z,WAAAA,EAAAA,gBAAAA,EACM7Z,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,oBAAA,EAC5Bf,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,gBAAA,EAG1C8Y,WAAAA,EAAAA,uCAAAA,EAKMA,WAAAA,EAAAA,gBAAAA,EACA7Z,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,6BACxBf,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,8BAAA,EAGtC4X,WAAAA,EAAAA,gBAAAA,EACR7Z,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,wBAAA,EACxBf,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,sBAAA,EAI9C4X,WAAAA,EAAAA,gBAAAA,EACA7Z,cAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,iCAAA,EAIvCf,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,iBAAA,EAI9B8Y,WAAAA,EAAAA,gBAAAA,EACK7Z,aAAAA,CAAcF,UAAAA,CAAW2M,eAAe,CAAA,EAAA,oBAAA,EACpCzM,aAAAA,CAAcF,UAAAA,CAAWsC,UAAU,CAAA,EAAA,4CAAA,EAIpCyX,WAAAA,EAAAA,gBAAAA,EACH7Z,aAAAA,CAAcF,UAAAA,CAAW2M,eAAe,CAAA,EAAA,oBAAA,EACpCzM,aAAAA,CAAcF,UAAAA,CAAW2M,eAAe,CAAA,EAAA,4BAAA,EAInDzM,aAAAA,CAAcF,UAAAA,CAAW2M,eAAe,CAAA,EAAA,uBAAA,CAAA;AAUzD;;;;AAIC,IACD,SAASqN,cAAAA,CAAelc,KAAiB,EAAEuD,GAAgC,EAAA;AACvE,IAAA,MAAM,EAAEoE,KAAK,EAAE,GAAGlB,MAAM,GAAGzG,KAAAA;AAE3B,IAAA,qBACImB,eAAA,CAACyN,OAAAA,EAAAA;;0BACGpO,cAAA,CAAC8a,WAAAA,EAAAA;AAAa,gBAAA,GAAG7U,IAAI;gBAAElD,GAAAA,EAAKA,GAAAA;gBAAKT,IAAAA,EAAK;;0BACtCtC,cAAA,CAACyb,WAAAA,EAAAA,EAAAA,CAAAA;0BACDzb,cAAA,CAACwR,MAAAA,EAAAA;AAAMrK,gBAAAA,QAAAA,EAAAA;;;;AAGnB;AAEA,MAAMwU,KAAAA,iBAAQ1Y,KAAAA,CAAMC,UAAU,CAA+BwY,cAAAA;;AC9G7D,MAAM1B,KAAAA,iBAAQjY,MAAAA,CAAAA,OAAAA,EAAAA;;;AAMGH,CAAAA,CAAAA,CAAAA,kDAAAA,EAAAA,aAAAA,CAAcF,WAAWiB,OAAO,CAAA,EAAA,iDAAA,EAGrBf,cAAcF,UAAAA,CAAWiB,OAAO,uGAO5Bf,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,4CAAA,EAI1CjC,cAAcF,UAAAA,CAAWmC,aAAa,cACjDjC,aAAAA,CAAcF,UAAAA,CAAWkB,gBAAgB,CAAA,EAAA,8CAAA,EAI9BhB,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,cAC3Cf,aAAAA,CAAcF,UAAAA,CAAWkB,gBAAgB,CAAA,EAAA,uCAAA,EAI9BhB,aAAAA,CAAcF,WAAWO,kBAAkB,CAAA,EAAA,SAAA,EACtDL,cAAcF,UAAAA,CAAW2M,eAAe,oDAI7BzM,aAAAA,CAAcF,UAAAA,CAAW2M,eAAe,CAAA,EAAA,SAAA,EACnDzM,aAAAA,CAAcF,WAAWkB,gBAAgB,CAAA,EAAA,IAAA,CAAA;AAI1D,MAAMwL,KAAAA,iBAAQrM,MAAAA,CAAAA,OAAAA,EAAAA;;;;MAQD6Z,UAAAA,iBAAa7Z,MAAAA,CAAAA,KAAAA,EAAAA;;;AAMlBqM,CAAAA,CAAAA,CAAAA,0EAAAA,EAAAA,KAAAA,EAAAA,mDAAAA,EAIAA,KAAAA,EAAAA,gDAAAA;AAUR;;;;AAIC,IACD,SAASyN,oBAAAA,CAAqBrc,KAAuB,EAAEuD,GAAgC,EAAA;AACnF,IAAA,MAAM,EAAEoE,KAAK,EAAE,GAAGlB,MAAM,GAAGzG,KAAAA;AAC3B,IAAA,qBACImB,eAAA,CAACyN,KAAAA,EAAAA;;0BACGpO,cAAA,CAACga,KAAAA,EAAAA;AAAO,gBAAA,GAAG/T,IAAI;gBAAE3D,IAAAA,EAAK,OAAA;gBAAQS,GAAAA,EAAKA;;0BACnC/C,cAAA,CAACwR,MAAAA,EAAAA;AAAMrK,gBAAAA,QAAAA,EAAAA;;;;AAGnB;AAEA,MAAM2U,WAAAA,iBAAc7Y,KAAAA,CAAMC,UAAU,CAAC2Y,oBAAAA;;ACvErC;AACA,kBAAe7T,oBAAoDqE,SAAAA,CAAAA;;ACAnE,MAAM0P,aAAAA,iBAAgBha,MAAAA,CAAAA,KAAAA,EAAAA;;;AAUUH,CAAAA,CAAAA,CAAAA,qHAAAA,EAAAA,aAAAA,CAAcF,WAAWmC,aAAa,CAAA,EAAA,IAAA,CAAA;AAItE;;;;;;;;;;;;AAaC,IACD,SAASmY,SAAAA,CAAaxc,KAAmB,EAAEuD,GAAiC,EAAA;AACxE,IAAA,MAAM,EAAEkZ,WAAAA,GAAc,KAAK,EAAEhM,QAAQ,EAAEjC,KAAAA,EAAOW,SAAS,EAAEvO,QAAQ,EAAE,GAAG6F,MAAM,GAAGzG,KAAAA;;AAE/E,IAAA,MAAM,CAACwO,KAAAA,EAAOgB,QAAAA,CAAS,GAAGrP,cAAAA,CAA8BgP,SAAAA,CAAAA;AAExD;;;;;QAMA,MAAMiB,cAAc,CAACD,GAAAA,GAAAA;QACjB,IAAIuM,MAAAA;AACJ,QAAA,IAAID,WAAAA,EAAa;YACb,IAAI3M,KAAAA,CAAMC,OAAO,CAACvB,KAAAA,CAAAA,EAAQ;gBACtB,IAAIA,KAAAA,CAAMmO,QAAQ,CAACxM,GAAAA,CAAAA,EAAsB;AACrCuM,oBAAAA,MAAAA,GAAS,KAAClO,CAAc4C,MAAM,CAAC,CAACK,OAASA,IAAAA,KAAStB,GAAAA,CAAAA;gBACtD,CAAA,MAAO;oBACHuM,MAAAA,GAAS;AAAKlO,wBAAAA,GAAAA,KAAAA;AAAe2B,wBAAAA;AAAI,qBAAA;AACrC,gBAAA;YACJ,CAAA,MAAO;gBACHuM,MAAAA,GAAS;AAACvM,oBAAAA;AAAI,iBAAA;AAClB,YAAA;QACJ,CAAA,MAAO;YACHuM,MAAAA,GAASvM,GAAAA;AACb,QAAA;QAEAX,QAAAA,CAASkN,MAAAA,CAAAA;QACTjM,QAAAA,GAAWiM,MAAAA,CAAAA;AACf,IAAA,CAAA;AAEA;;;;;QAMA,MAAMlR,gBAAgB,CAACzD,CAAAA,GAAAA;QACnB,MAAM8I,MAAAA,GAAS9I,EAAE8I,MAAM;QACvB,MAAM+L,SAAAA,GAAY7U,EAAE8U,aAAa;AACjC,QAAA,MAAMC,QAAQhN,KAAAA,CAAMS,IAAI,CAACqM,SAAAA,CAAU1E,gBAAgB,CAAC,iBAAA,CAAA,CAAA;QACpD,MAAMnD,YAAAA,GAAe+H,KAAAA,CAAMC,OAAO,CAAClM,MAAAA,CAAAA;QAEnC,IAAIoC,SAAAA;AAEJ,QAAA,OAAQlL,EAAE1F,GAAG;YACT,KAAK,WAAA;AACD0F,gBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AAChBmJ,gBAAAA,SAAAA,GAAY8B,YAAAA,GAAe,CAAA;AAC3B,gBAAA,IAAI9B,SAAAA,IAAa6J,KAAAA,CAAMjP,MAAM,EAAEoF,SAAAA,GAAY,CAAA;gBAC3C6J,KAAK,CAAC7J,UAAU,EAAEuF,KAAAA,EAAAA;AAClB,gBAAA;YACJ,KAAK,SAAA;AACDzQ,gBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AAChBmJ,gBAAAA,SAAAA,GAAY8B,YAAAA,GAAe,CAAA;AAC3B,gBAAA,IAAI9B,SAAAA,GAAY,CAAA,EAAGA,SAAAA,GAAY6J,KAAAA,CAAMjP,MAAM,GAAG,CAAA;gBAC9CiP,KAAK,CAAC7J,UAAU,EAAEuF,KAAAA,EAAAA;AAClB,gBAAA;YACJ,KAAK,MAAA;AACDzQ,gBAAAA,CAAAA,CAAE+B,cAAc,EAAA;gBAChBgT,KAAK,CAAC,EAAE,EAAEtE,KAAAA,EAAAA;AACV,gBAAA;YACJ,KAAK,KAAA;AACDzQ,gBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AAChBgT,gBAAAA,KAAK,CAACA,KAAAA,CAAMjP,MAAM,GAAG,EAAE,EAAE2K,KAAAA,EAAAA;AACzB,gBAAA;YACJ,KAAK,OAAA;YACL,KAAK,GAAA;AACDzQ,gBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AAChB+G,gBAAAA,MAAAA,CAAOmM,KAAK,EAAA;AACZ,gBAAA;AAGR;AACJ,IAAA,CAAA;AAEA;;;;;QAMA,MAAMC,eAAe,CAAClV,CAAAA,GAAAA;;;AAGlB,QAAA,IAAIA,EAAE8U,aAAa,CAACnJ,QAAQ,CAAC3L,CAAAA,CAAEmV,aAAa,CAAA,EAAW;AACnD,YAAA;AACJ,QAAA;;;AAIA,QAAA,IAAInV,CAAAA,CAAE8I,MAAM,KAAK9I,CAAAA,CAAE8U,aAAa,EAAE;;AAE9B,YAAA,MAAMM,SAAAA,GAAYpV,CAAAA,CAAE8U,aAAa,CAACO,aAAa,CAAC,iBAAA,CAAA;YAChDD,SAAAA,EAAW3E,KAAAA,EAAAA;AACf,QAAA;AACJ,IAAA,CAAA;AAEA,IAAA;AAEI,kBAAAhY,cAAA,CAAC6c,YAAY9O,QAAQ,EAAA;QAACC,KAAAA,EAAO;YAAEA,KAAAA,EAAOA,KAAAA;AAAOiO,YAAAA,WAAAA,EAAa,CAAC,CAACA,WAAAA;AAAarM,YAAAA;AAAY,SAAA;AACjF,QAAA,QAAA,gBAAA5P,cAAA,CAAC+b,aAAAA,EAAAA;AACI,YAAA,GAAG9V,IAAI;YACRlD,GAAAA,EAAKA,GAAAA;YACL2C,IAAAA,EAAK,SAAA;YACLoX,sBAAAA,EAAsBb,WAAAA;YACtBhQ,QAAAA,EAAU,CAAA;YACVtE,SAAAA,EAAWqD,aAAAA;YACXmF,OAAAA,EAASsM,YAAAA;AAERrc,YAAAA,QAAAA,EAAAA;;;AAIjB;AAEA,MAAM2c,IAAAA,iBAAO9Z,KAAAA,CAAMC,UAAU,CAAC8Y,SAAAA;;ACtJ9B,MAAMhV,WAAAA,iBAAYjF,MAAAA,CAAAA,QAAAA,EAAAA;;;AACC,CAAA,CAAA,CAAA,cAAA,EAAA,CAACvC,KAAAA,GAAWA,KAAAA,CAAMwd,QAAQ,GAAG,MAAA,GAAS,QAAA,EAAA,0DAAA,EAI/C,CAACxd,KAAAA,GACCA,KAAAA,CAAMwd,QAAQ,IAAI,CAACxd,MAAMyd,WAAW,GAC9Brb,aAAAA,CAAcF,UAAAA,CAAWkC,eAAe,CAAA,GACxC,aAAA,EAAA,uEAAA,EAGahC,aAAAA,CAAcF,UAAAA,CAAWO,kBAAkB,CAAA,EAAA,0FAAA,EAM7DL,aAAAA,CAAcF,UAAAA,CAAWkC,eAAe,CAAA,EAAA,mDAAA,EAKzBhC,aAAAA,CAAcF,WAAWO,kBAAkB,CAAA,EAAA,gCAAA,CAAA;AAQvE;;;;;IAMA,MAAMib,aAAAA,GAAgB,CAAK1d,KAAAA,EAAyBuD,GAAAA,GAAAA;AAChD,IAAA,MAAM8F,UAAUC,gBAAAA,CAAW+T,WAAAA,CAAAA;AAC3B,IAAA,IAAI,CAAChU,OAAAA,EAAS;AACV,QAAA,MAAM,IAAIkL,KAAAA,CAAM,kDAAA,CAAA;AACpB,IAAA;AACA,IAAA,MAAM,EAAE/F,KAAK,EAAE5N,QAAQ,EAAE,GAAG6F,MAAM,GAAGzG,KAAAA;AACrC,IAAA,MAAM2d,eAAe,CAAC5V,CAAAA,GAAAA;AAClBA,QAAAA,CAAAA,CAAEE,eAAe,EAAA;AACjBoB,QAAAA,OAAAA,CAAQ+G,WAAW,CAAC5B,KAAAA,CAAAA;AACxB,IAAA,CAAA;AAEA,IAAA,IAAIgP,QAAAA,GAAW,KAAA;IACf,IAAInU,OAAAA,CAAQoT,WAAW,EAAE;QACrB,MAAMmB,GAAAA,GAAMvU,QAAQmF,KAAK;AACzBgP,QAAAA,QAAAA,GAAW1N,MAAMC,OAAO,CAAC6N,GAAAA,CAAAA,IAAQA,GAAAA,CAAIjB,QAAQ,CAACnO,KAAAA,CAAAA;IAClD,CAAA,MAAO;QACHgP,QAAAA,GAAYnU,OAAAA,CAAQmF,KAAK,KAAsBA,KAAAA;AACnD,IAAA;AAEA,IAAA,qBACIrN,eAAA,CAACqG,WAAAA,EAAAA;AACI,QAAA,GAAGf,IAAI;QACRlD,GAAAA,EAAKA,GAAAA;QACLT,IAAAA,EAAK,QAAA;QACLoD,IAAAA,EAAK,QAAA;QACL2X,eAAAA,EAAeL,QAAAA;QACfA,QAAAA,EAAUA,QAAAA;QACV5X,OAAAA,EAAS+X,YAAAA;QACTF,WAAAA,EAAapU,OAAAA,CAAQoT,WAAW,GAAG,IAAA,GAAO5P,SAAAA;;YAEzCxD,OAAAA,CAAQoT,WAAW,kBAChBjc,cAAA,CAACqb,QAAAA,EAAAA;gBACGH,OAAAA,EAAS8B,QAAAA;gBACTM,QAAQ,EAAA,IAAA;AACRrR,gBAAAA,QAAAA,EAAU,EAAC;gBACX7G,OAAAA,EAAS,CAACmC,CAAAA,GAAMA,CAAAA,CAAEE,eAAe;;AAGxCrH,YAAAA;;;AAGb,CAAA;AAEA,MAAMmd,QAAAA,iBAAWta,KAAAA,CAAMC,UAAU,CAACga,aAAAA;;ACtF3B,IAAA,gBAAKM,iBAAAA,SAAAA,gBAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,gBAAAA;AAKX,CAAA,CAAA,EAAA;AAOD,MAAMC,aAAAA,GAAc;AAChB,IAAA,CAAA,UAAA,GAA6B;;;IAG7B,CAAC;AACD,IAAA,CAAA,WAAA,GAA8B;;;IAG9B,CAAC;AACD,IAAA,CAAA,cAAA,GAAiC;;;IAGjC,CAAC;AACD,IAAA,CAAA,aAAA,GAAgC;;;IAGhC;AACJ,CAAA;AAEA,MAAMC,UAAAA,iBAAa3b,MAAAA,CAAAA,KAAAA,EAAAA;;;;AAKnB,MAAM4b,uBAAS5b,MAAAA,CAAO0B,IAAAA,EAAAA;;;AAQK,CAAA,CAAA,CAAA,yIAAA,EAAA,CAACjE,KAAAA,GAAUA,KAAAA,CAAMoe,UAAU,EAAA,KAAA,EAAO,CAACpe,KAAAA,GAAUA,KAAAA,CAAMqe,UAAU,EAAA,MAAA,EAClF,CAACre,KAAAA,GAAUie,aAAW,CAACje,KAAAA,CAAMgM,QAAQ,CAAC,EAAA,2QAAA,CAAA;AAoC5C,MAAM6G,SAAAA,GAAY;IACdC,GAAAA,EAAK;AACT,CAAA;AAqBA;;;;AAIC,IACD,SAASwL,gBAAAA,CACLte,KAA4C,EAC5CuD,GAA8B,EAAA;AAE9B,IAAA,MAAM,EACFtC,IAAAA,EAAMsd,SAAS,EACf5K,OAAO,EACP3H,QAAAA,GAAAA,aAAuC,EACvCoG,UAAAA,GAAa,IAAI,EACjB6H,OAAO,EACPrZ,QAAQ,EACR,GAAG6F,MACN,GAAGzG,KAAAA;AAEJ,IAAA,MAAM,CAACiB,IAAAA,EAAMud,OAAAA,CAAQ,GAAGre,cAAAA,CAAkBoe,SAAAA,CAAAA;AAC1C,IAAA,MAAM,CAACE,OAAAA,EAASC,UAAAA,CAAW,GAAGve,cAAAA,CAAkB,KAAA,CAAA;AAChD,IAAA,MAAM,CAACwe,SAAAA,EAAWC,YAAAA,CAAa,GAAGze,cAAAA,CAAoB;QAAE0e,CAAAA,EAAG,CAAA;QAAGC,CAAAA,EAAG;AAAE,KAAA,CAAA;AACnE,IAAA,MAAMC,YAAYxZ,YAAAA,CAA8B,IAAA,CAAA;AAChD,IAAA,MAAMyZ,eAAezZ,YAAAA,CAA8B,IAAA,CAAA;AACnD,IAAA,MAAM0Z,aAAa1Z,YAAAA,CAA2B,IAAA,CAAA;AAC9C,IAAA,MAAM2Z,kBAAkB3Z,YAAAA,CAA6C,IAAA,CAAA;AACrE,IAAA,MAAM4Z,kBAAkB5Z,YAAAA,CAA6C,IAAA,CAAA;AACrE,IAAA,MAAM6Z,QAAAA,GAAWha,WAAAA,EAAAA;AACjB,IAAA,MAAMia,SAAAA,GAAYja,WAAAA,EAAAA;AAElB,IAAA,MAAM+T,QAAQwC,iBAAAA,CAAY,IAAA;;QAEtB,IAAIuD,eAAAA,CAAgBxZ,OAAO,EAAE;AACzB0E,YAAAA,YAAAA,CAAa8U,gBAAgBxZ,OAAO,CAAA;AACxC,QAAA;QACA,IAAIyZ,eAAAA,CAAgBzZ,OAAO,EAAE;AACzB0E,YAAAA,YAAAA,CAAa+U,gBAAgBzZ,OAAO,CAAA;AACxC,QAAA;QAEAgZ,UAAAA,CAAW,IAAA,CAAA;QACXQ,eAAAA,CAAgBxZ,OAAO,GAAG2E,UAAAA,CAAW,IAAA;YACjCmU,OAAAA,CAAQ,KAAA,CAAA;YACRI,YAAAA,CAAa;gBAAEC,CAAAA,EAAG,CAAA;gBAAGC,CAAAA,EAAG;AAAE,aAAA,CAAA;AAE1B,YAAA,IAAI7E,OAAAA,EAAS;AACTA,gBAAAA,OAAAA,EAAAA;AACJ,YAAA;YACAyE,UAAAA,CAAW,KAAA,CAAA;;YAGXS,eAAAA,CAAgBzZ,OAAO,GAAG2E,UAAAA,CAAW,IAAA;gBACjC,IAAI4U,UAAAA,CAAWvZ,OAAO,IAAI6E,QAAAA,CAASC,IAAI,CAACkJ,QAAQ,CAACuL,UAAAA,CAAWvZ,OAAO,CAAA,EAAG;oBAClEuZ,UAAAA,CAAWvZ,OAAO,CAAC8S,KAAK,EAAA;AAC5B,gBAAA;AACA2G,gBAAAA,eAAAA,CAAgBzZ,OAAO,GAAG,IAAA;YAC9B,CAAA,EAAG,EAAA,CAAA;AACHwZ,YAAAA,eAAAA,CAAgBxZ,OAAO,GAAG,IAAA;QAC9B,CAAA,EAAG,GAAA,CAAA;IACP,CAAA,EAAG;AAACuU,QAAAA;AAAQ,KAAA,CAAA;IAEZ,MAAMqF,iBAAAA,GAAoB3D,kBACtB,CAAC5T,CAAAA,GAAAA;AACG,QAAA,IAAIqK,cAAcrK,CAAAA,CAAE6O,OAAO,KAAK/D,SAAAA,CAAUC,GAAG,EAAE;AAC3CqG,YAAAA,KAAAA,EAAAA;AACJ,QAAA;IACJ,CAAA,EACA;AAACA,QAAAA,KAAAA;AAAO/G,QAAAA;AAAW,KAAA,CAAA;IAGvB,MAAMmN,mBAAAA,GAAsB5D,kBACxB,CAAC5T,CAAAA,GAAAA;QACG,IAAIiX,YAAAA,CAAatZ,OAAO,IAAI,CAACsZ,YAAAA,CAAatZ,OAAO,CAACgO,QAAQ,CAAC3L,CAAAA,CAAE8I,MAAM,CAAA,EAAW;AAC1EsI,YAAAA,KAAAA,EAAAA;AACJ,QAAA;IACJ,CAAA,EACA;AAACA,QAAAA;AAAM,KAAA,CAAA;AAGX;;AAEC,QACD3T,eAAAA,CAAU,IAAA;QACN+E,QAAAA,CAASwM,gBAAgB,CAAC,OAAA,EAASuI,iBAAAA,CAAAA;QAEnC,OAAO,IAAA;YACH/U,QAAAA,CAAS+I,mBAAmB,CAAC,OAAA,EAASgM,iBAAAA,CAAAA;AAC1C,QAAA,CAAA;IACJ,CAAA,EAAG;AAACA,QAAAA;AAAkB,KAAA,CAAA;IAEtB9Z,eAAAA,CAAU,IAAA;AACN,QAAA,IAAI+Y,SAAAA,EAAW;YACXC,OAAAA,CAAQ,IAAA,CAAA;;AAER,YAAA,MAAMgB,QAAQC,qBAAAA,CAAsB,IAAA;gBAChClV,QAAAA,CAASwM,gBAAgB,CAAC,OAAA,EAASwI,mBAAAA,CAAAA;AACvC,YAAA,CAAA,CAAA;YAEA,OAAO,IAAA;gBACHG,oBAAAA,CAAqBF,KAAAA,CAAAA;gBACrBjV,QAAAA,CAAS+I,mBAAmB,CAAC,OAAA,EAASiM,mBAAAA,CAAAA;AAC1C,YAAA,CAAA;QACJ,CAAA,MAAO;AACH,YAAA,IAAIte,IAAAA,EAAM;AACNkY,gBAAAA,KAAAA,EAAAA;AACJ,YAAA;AACJ,QAAA;IACJ,CAAA,EAAG;AAACoF,QAAAA,SAAAA;AAAWtd,QAAAA,IAAAA;AAAMse,QAAAA,mBAAAA;AAAqBpG,QAAAA;AAAM,KAAA,CAAA;IAEhD3T,eAAAA,CAAU,IAAA;AACN,QAAA,IAAIvE,IAAAA,EAAM;AACN,YAAA,MAAM,EACFuV,GAAAA,GAAM,CAAC,EACPmJ,OAAO,CAAC,EACRC,KAAAA,GAAQ,CAAC,EACZ,GAAGb,SAAAA,CAAUrZ,OAAO,EAAEma,2BAA2B,EAAC;AACnD,YAAA,MAAMxe,MAAAA,GAAS0d,SAAAA,CAAUrZ,OAAO,EAAEC,YAAAA,IAAgB,CAAA;AAClD,YAAA,MAAMma,aAAAA,GAAgBvV,QAAAA,CAASwV,eAAe,CAACC,WAAW;AAC1D,YAAA,MAAMC,cAAAA,GAAiB1V,QAAAA,CAASwV,eAAe,CAACG,YAAY;AAC5D,YAAA,MAAMC,WAAAA,GAAc;gBAAEtB,CAAAA,EAAG,CAAA;gBAAGC,CAAAA,EAAG;AAAE,aAAA;AAEjC,YAAA,IAAI9S,QAAAA,KAAAA,aAAAA,EAA2C;;gBAE3C,IAAIiU,cAAAA,GAAiBzJ,GAAAA,GAAMnV,MAAAA,GAAS,CAAA,EAAG;oBACnC8e,WAAAA,CAAYrB,CAAC,GAAG,EAAC,IAAKsB,IAAAA,CAAKC,GAAG,CAACJ,cAAAA,GAAiBzJ,GAAAA,GAAMnV,MAAAA,CAAAA,GAAU,CAAA,CAAA;AACpE,gBAAA;gBACA,IAAIye,aAAAA,GAAgBF,QAAQ,CAAA,EAAG;oBAC3BO,WAAAA,CAAYtB,CAAC,GAAG,EAAC,IAAKuB,KAAKC,GAAG,CAACP,aAAAA,GAAgBF,KAAAA,CAAAA,GAAS,CAAA,CAAA;AAC5D,gBAAA;AACJ,YAAA,CAAA,MAAO,IAAI5T,QAAAA,IAAAA,cAAAA,EAA2C;;gBAElD,IAAIiU,cAAAA,GAAiBzJ,GAAAA,GAAMnV,MAAAA,GAAS,CAAA,EAAG;oBACnC8e,WAAAA,CAAYrB,CAAC,GAAG,EAAC,IAAKsB,IAAAA,CAAKC,GAAG,CAACJ,cAAAA,GAAiBzJ,GAAAA,GAAMnV,MAAAA,CAAAA,GAAU,CAAA,CAAA;AACpE,gBAAA;AACA,gBAAA,IAAIse,OAAO,CAAA,EAAG;AACVQ,oBAAAA,WAAAA,CAAYtB,CAAC,GAAGuB,IAAAA,CAAKC,GAAG,CAACV,IAAAA,CAAAA,GAAQ,CAAA;AACrC,gBAAA;AACJ,YAAA,CAAA,MAAO,IAAI3T,QAAAA,KAAAA,UAAAA,EAAwC;;gBAE/C,IAAIwK,GAAAA,GAAMnV,SAAS,CAAA,EAAG;AAClB8e,oBAAAA,WAAAA,CAAYrB,CAAC,GAAGsB,IAAAA,CAAKC,GAAG,CAAC7J,MAAMnV,MAAAA,CAAAA,GAAU,CAAA;AAC7C,gBAAA;gBACA,IAAIye,aAAAA,GAAgBF,QAAQ,CAAA,EAAG;oBAC3BO,WAAAA,CAAYtB,CAAC,GAAG,EAAC,IAAKuB,KAAKC,GAAG,CAACP,aAAAA,GAAgBF,KAAAA,CAAAA,GAAS,CAAA,CAAA;AAC5D,gBAAA;YACJ,CAAA,MAAO;;gBAEH,IAAIpJ,GAAAA,GAAMnV,SAAS,CAAA,EAAG;AAClB8e,oBAAAA,WAAAA,CAAYrB,CAAC,GAAGsB,IAAAA,CAAKC,GAAG,CAAC7J,MAAMnV,MAAAA,CAAAA,GAAU,CAAA;AAC7C,gBAAA;AACA,gBAAA,IAAIse,OAAO,CAAA,EAAG;AACVQ,oBAAAA,WAAAA,CAAYtB,CAAC,GAAGuB,IAAAA,CAAKC,GAAG,CAACV,IAAAA,CAAAA,GAAQ,CAAA;AACrC,gBAAA;AACJ,YAAA;;;YAGAf,YAAAA,CAAauB,WAAAA,CAAAA;AACbpB,YAAAA,SAAAA,CAAUrZ,OAAO,EAAE8S,KAAAA,EAAAA;AACvB,QAAA;IACJ,CAAA,EAAG;AAACvX,QAAAA,IAAAA;AAAM+K,QAAAA;AAAS,KAAA,CAAA;AAEnB;;AAEC,QACDxG,eAAAA,CAAU,IAAA;QACN,OAAO,IAAA;YACH,IAAI0Z,eAAAA,CAAgBxZ,OAAO,EAAE;AACzB0E,gBAAAA,YAAAA,CAAa8U,gBAAgBxZ,OAAO,CAAA;AACxC,YAAA;YACA,IAAIyZ,eAAAA,CAAgBzZ,OAAO,EAAE;AACzB0E,gBAAAA,YAAAA,CAAa+U,gBAAgBzZ,OAAO,CAAA;AACxC,YAAA;AACJ,QAAA,CAAA;AACJ,IAAA,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAMhC,aAAa,CAACiV,IAAAA,GAAAA;AAChBqG,QAAAA,YAAAA,CAAatZ,OAAO,GAAGiT,IAAAA;QAEvB,IAAI,OAAOpV,QAAQ,UAAA,EAAY;YAC3BA,GAAAA,CAAIoV,IAAAA,CAAAA;AACR,QAAA,CAAA,MAAO,IAAIpV,GAAAA,EAAK;AACXA,YAAAA,GAAAA,CAAsDmC,OAAO,GAAGiT,IAAAA;AACrE,QAAA;AACJ,IAAA,CAAA;AAEA,IAAA,qBACIxX,eAAA,CAAC+c,UAAAA,EAAAA;QAAW3a,GAAAA,EAAKG,UAAAA;AAAa,QAAA,GAAG+C,IAAI;;0BAChChD,KAAAA,CAAMgS,aAAa,CAAC9B,OAAAA,EAAS;gBAC1BpQ,GAAAA,EAAK0b,UAAAA;gBACLlZ,EAAAA,EAAIsZ,SAAAA;gBACJ,eAAA,EAAiBpe,IAAAA;gBACjB,eAAA,EAAiB,QAAA;gBACjB,eAAA,EAAiBme;AACrB,aAAA,CAAA;AACCne,YAAAA,IAAAA,kBACGT,cAAA,CAAC2d,MAAAA,EAAAA;gBACGta,QAAQ,EAAA,IAAA;gBACR4I,QAAAA,EAAU,CAAA;gBACVvG,IAAAA,EAAK,QAAA;gBACLC,iBAAAA,EAAiBkZ,SAAAA;gBACjBtZ,EAAAA,EAAIqZ,QAAAA;gBACJpT,QAAAA,EAAUA,QAAAA;AACVoS,gBAAAA,UAAAA,EAAYO,UAAUE,CAAC;AACvBR,gBAAAA,UAAAA,EAAYM,UAAUG,CAAC;AACvB9J,gBAAAA,SAAAA,EAAWyJ,UAAU,SAAA,GAAY,EAAA;gBACjClb,GAAAA,EAAKwb,SAAAA;AACLnZ,gBAAAA,OAAAA,EAAS,CAACmC,CAAAA,GAAAA;AACNA,oBAAAA,CAAAA,CAAEE,eAAe,EAAA;oBACjBF,CAAAA,CAAEuY,WAAW,CAACC,wBAAwB,EAAA;AAC1C,gBAAA,CAAA;AAEC3f,gBAAAA,QAAAA,EAAAA;;;;AAKrB;AAEA,MAAM4f,OAAAA,iBAAU/c,KAAAA,CAAMC,UAAU,CAAC4a,gBAAAA;;ACzSjC,MAAMtD,cAAAA,iBAAiBzY,MAAAA,CAAAA,MAAAA,EAAAA;;;;AAOvB;;;;;;;;;;;;AAaC,IACD,SAASke,iBAAAA,CACLzgB,KAAuB,EACvB0gB,QAAqC,EAAA;IAErC,MAAM,EACFjE,cAAc,KAAK,EACnBhM,QAAQ,EACR7P,QAAQ,EACR4N,KAAAA,EAAOW,SAAS,EAChBxH,KAAK,EACL1C,SAAS,EACT8J,QAAQ,EACRzO,QAAQ,EACR,GAAGmG,IAAAA,EACN,GAAGzG,KAAAA;AACJ,IAAA,MAAM,CAACiB,IAAAA,EAAMud,OAAAA,CAAQ,GAAGre,cAAAA,CAAS,KAAA,CAAA;AACjC,IAAA,MAAM,CAACqO,KAAAA,EAAOgB,QAAAA,CAAS,GAAGrP,cAAAA,CAA8BgP,SAAAA,CAAAA;IACxD,MAAMpJ,EAAAA,GAAKtC,MAAM2B,KAAK,EAAA;AACtB,IAAA,MAAMub,MAAAA,GAAS,CAAA,EAAG5a,EAAAA,CAAG,KAAK,CAAC;IAC3B,MAAM6a,OAAAA,GAAUnd,KAAAA,CAAM8B,MAAM,CAAwB,IAAA,CAAA;IACpD,MAAM0Z,UAAAA,GAAaxb,KAAAA,CAAM8B,MAAM,CAA0B,IAAA,CAAA;;IAGzDC,eAAAA,CAAU,IAAA;AACN,QAAA,IAAIvE,IAAAA,EAAM;;;AAGN,YAAA,MAAM4f,QAAQxW,UAAAA,CAAW,IAAA;AACrB,gBAAA,MAAM8S,SAAAA,GAAYyD,OAAAA,CAAQlb,OAAO,EAAE0X,aAAAA,CAAc,iBAAA,CAAA;AACjD,gBAAA,IAAID,SAAAA,EAAW;AACXA,oBAAAA,SAAAA,CAAU3E,KAAK,EAAA;AACnB,gBAAA;AACJ,YAAA,CAAA,EAAG;AACH,YAAA,OAAO,IAAMpO,YAAAA,CAAayW,KAAAA,CAAAA;AAC9B,QAAA;IACJ,CAAA,EAAG;AAAC5f,QAAAA;AAAK,KAAA,CAAA;AAET;;;;;QAMA,MAAMkH,YAAY,CAACJ,CAAAA,GAAAA;QACf,IAAI;AAAC,YAAA,WAAA;AAAa,YAAA,SAAA;AAAW,YAAA,OAAA;AAAS,YAAA;AAAI,SAAA,CAAC4U,QAAQ,CAAC5U,CAAAA,CAAE1F,GAAG,CAAA,EAAG;AACxD0F,YAAAA,CAAAA,CAAE+B,cAAc,EAAA;YAChB0U,OAAAA,CAAQ,IAAA,CAAA;AACZ,QAAA;AACJ,IAAA,CAAA;AAEA;;;;;;QAOA,MAAMsC,gBAAgB,CAAC3Q,GAAAA,GAAAA;QACnBX,QAAAA,CAASW,GAAAA,CAAAA;QACTM,QAAAA,GAAWN,GAAAA,CAAAA;;AAGX,QAAA,IAAI,CAACsM,WAAAA,EAAa;YACd+B,OAAAA,CAAQ,KAAA,CAAA;AACRS,YAAAA,UAAAA,CAAWvZ,OAAO,EAAE8S,KAAAA,EAAAA;AACxB,QAAA;AACJ,IAAA,CAAA;AAEA;;QAGA,MAAMmF,YAAAA,GAAe,IAAMa,OAAAA,CAAQ,IAAA,CAAA;AAEnC,IAAA,MAAMuC,cAAAA,iBAAiBtd,KAAAA,CAAMC,UAAU,CAAmB,CAACsd,WAAAA,EAAazd,GAAAA,GAAAA;;AAEpE,QAAA,MAAM0d,aAAa,CAACtI,IAAAA,GAAAA;AAChBsG,YAAAA,UAAAA,CAAWvZ,OAAO,GAAGiT,IAAAA;AAErB,YAAA,IAAI,CAAC+H,QAAAA,EAAU;YACf,IAAI,OAAOA,aAAa,UAAA,EAAY;gBAChCA,QAAAA,CAAS/H,IAAAA,CAAAA;YACb,CAAA,MAAO;AACF+H,gBAAAA,QAAAA,CAA6Dhb,OAAO,GAAGiT,IAAAA;AAC5E,YAAA;AACJ,QAAA,CAAA;;AAGA,QAAA,MAAMuI,cAA2C,CAACvI,IAAAA,GAAAA;YAC9CsI,UAAAA,CAAWtI,IAAAA,CAAAA;YACX,IAAI,OAAOpV,QAAQ,UAAA,EAAY;gBAC3BA,GAAAA,CAAIoV,IAAAA,CAAAA;AACR,YAAA,CAAA,MAAO,IAAIpV,GAAAA,EAAK;AACXA,gBAAAA,GAAAA,CAAwDmC,OAAO,GAAGiT,IAAAA;AACvE,YAAA;AACJ,QAAA,CAAA;QAEA,qBACIxX,eAAA,CAAAV,mBAAA,EAAA;;8BACID,cAAA,CAACga,OAAAA,EAAAA;AACI,oBAAA,GAAG/T,IAAI;AACP,oBAAA,GAAGua,WAAW;oBACfzd,GAAAA,EAAK2d,WAAAA;oBACLpe,IAAAA,EAAK,MAAA;AACL0L,oBAAAA,KAAAA,EAAOA,SAASP,MAAAA,CAAOO,KAAAA,CAAAA;oBACvB7G,KAAAA,EAAOA,KAAAA;oBACP1C,SAAAA,EAAWA,SAAAA;oBACXW,OAAAA,EAAS+X,YAAAA;oBACTxV,SAAAA,EAAWA,SAAAA;oBACX4G,QAAAA,EAAUA,QAAAA;oBACVzO,QAAAA,EAAUA,QAAAA;oBACVwd,QAAQ,EAAA,IAAA;oBACR5X,IAAAA,EAAK,UAAA;oBACLib,eAAAA,EAAc,SAAA;oBACdtb,eAAAA,EAAe5E,IAAAA;oBACf6E,eAAAA,EAAe6a;;8BAEnBngB,cAAA,CAACwa,cAAAA,EAAAA;oBAAehV,aAAAA,EAAY,MAAA;AACxB,oBAAA,QAAA,gBAAAxF,cAAA,CAACmB,UAAAA,EAAAA,EAAAA;;;;AAIjB,IAAA,CAAA,CAAA;AACAof,IAAAA,cAAAA,CAAepG,WAAW,GAAG,iBAAA;AAE7B,IAAA,qBACIna,cAAA,CAACggB,OAAAA,EAAAA;AACGxU,QAAAA,QAAAA,EAAUgS,iBAAiBoD,WAAW;QACtCngB,IAAAA,EAAMA,IAAAA;QACN0S,OAAAA,EAASoN,cAAAA;QACT9G,OAAAA,EAAS,IAAA;YACLuE,OAAAA,CAAQ,KAAA,CAAA;AACRS,YAAAA,UAAAA,CAAWvZ,OAAO,EAAE8S,KAAAA,EAAAA;AACxB,QAAA,CAAA;AAEA,QAAA,QAAA,gBAAAhY,cAAA,CAAC+c,IAAAA,EAAAA;YACGha,GAAAA,EAAKqd,OAAAA;YACL7a,EAAAA,EAAI4a,MAAAA;YACJnS,KAAAA,EAAOA,KAAAA;YACPiO,WAAAA,EAAaA,WAAAA;YACbhM,QAAAA,EAAUqQ,aAAAA;AAETlgB,YAAAA,QAAAA,EAAAA;;;AAIjB;AAEA,MAAMygB,QAAAA,iBAAW5d,KAAAA,CAAMC,UAAU,CAAC+c,iBAAAA;;AC7KlC,MAAMa,QAAAA,iBAAW/e,MAAAA,CAAAA,GAAAA,EAAAA;;;;AAIjB,MAAMgf,cAAAA,iBAAiBhf,MAAAA,CAAAA,KAAAA,EAAAA;;;;AAkBvB,MAAMif,4BAAcjf,MAAAA,CAAOiY,OAAAA,EAAAA;;;;AAKZ,MAAMiH,YAAAA,SAAqBhe,MAAMyT,SAAS,CAAA;IA8CrDU,MAAAA,GAAS;AACL,QAAA,MAAM,EAAE5S,MAAM,EAAEwF,IAAI,EAAEkX,UAAU,EAAEC,UAAU,EAAEC,UAAU,EAAEnI,WAAW,EAAE,GAAG,IAAI,CAACzZ,KAAK;AAEpF,QAAA,qBACIQ,cAAA,CAACyW,MAAAA,EAAAA;AACI,YAAA,GAAGwC,WAAW;YACflW,GAAAA,EAAK,IAAI,CAACmW,MAAM;YAChBtH,UAAAA,EAAY,KAAA;YACZI,mBAAAA,EAAqB,KAAA;AAErB,YAAA,QAAA,gBAAArR,eAAA,CAAC0gB,MAAAA,EAAAA;gBAAKC,QAAAA,EAAU,IAAI,CAACC,MAAM;;AACtB/c,oBAAAA,MAAAA,kBAAUxE,cAAA,CAACmZ,QAAAA,EAAAA;AAAc3U,wBAAAA,QAAAA,EAAAA;;kCAC1B7D,eAAA,CAACyY,MAAAA,EAAAA;;0CACGpZ,cAAA,CAAC8gB,QAAAA,EAAAA;AAAU9W,gCAAAA,QAAAA,EAAAA;;0CACXhK,cAAA,CAAC+gB,cAAAA,EAAAA;AACG,gCAAA,QAAA,gBAAA/gB,cAAA,CAACghB,WAAAA,EAAAA;AACGhT,oCAAAA,KAAAA,EAAO,IAAI,CAAC8I,KAAK,CAAC9I,KAAK;oCACvBiC,QAAAA,EAAU,IAAI,CAACuR,WAAW;AACzB,oCAAA,GAAGN;;;;;kCAIhBvgB,eAAA,CAAC0Y,QAAAA,EAAAA;;0CACGrZ,cAAA,CAACkG,QAAAA,EAAAA;gCAAO5D,IAAAA,EAAK,QAAA;gCAAS8C,OAAAA,EAAS,IAAI,CAACuG,MAAM;AACrCyV,gCAAAA,QAAAA,EAAAA;;0CAELphB,cAAA,CAAC4G,YAAAA,EAAAA;gCAAaxB,OAAAA,EAAS,IAAI,CAACmc,MAAM;AAAGJ,gCAAAA,QAAAA,EAAAA;;;;;;;AAKzD,IAAA;AAtEA,IAAA,WAAA,CAAY3hB,KAAmB,CAAE;AAC7B,QAAA,KAAK,CAACA,KAAAA,CAAAA,EAAAA,IAAAA,CAMF0Z,MAAAA,iBAAS1B,eAAAA,EAAAA,EAAAA,IAAAA,CAETgK,cAAc,CAACja,CAAAA,GAAAA;YACnB,IAAI,CAACmR,QAAQ,CAAC;gBACV1K,KAAAA,EAAOzG,CAAAA,CAAE8I,MAAM,CAACrC;AACpB,aAAA,CAAA;QACJ,CAAA,EAAA,IAAA,CAEQrC,MAAAA,GAAS,IAAM,IAAI,CAACuN,MAAM,CAAChU,OAAO,EAAEyT,KAAAA,EAAAA,EAAAA,IAAAA,CAEpC4I,MAAAA,GAAS,CAACha,CAAAA,GAAAA;AACdA,YAAAA,CAAAA,CAAE+B,cAAc,EAAA;AAChB,YAAA,IAAI,CAAC,IAAI,CAACwN,KAAK,CAAC9I,KAAK,EAAE;YACvB,IAAI,CAACkL,MAAM,CAAChU,OAAO,EAAEyT,MAAM,IAAI,CAAC7B,KAAK,CAAC9I,KAAK,CAAA;AAC/C,QAAA,CAAA,EAAA,IAAA,CAEO+I,IAAAA,GAAO,IAAA;YACV,OAAO,IAAIwC,OAAAA,CAAQ,CAACC,OAAAA,EAASM,MAAAA,GAAAA;AACzB,gBAAA,MAAML,UAAU,CAACzL,KAAAA,GAAAA;AACb,oBAAA,IAAIA,KAAAA,EAAO;wBACPwL,OAAAA,CAAQxL,KAAAA,CAAAA;oBACZ,CAAA,MAAO;AACH8L,wBAAAA,MAAAA,EAAAA;AACJ,oBAAA;oBACA,IAAI,CAACpB,QAAQ,CAAC;AACV1K,wBAAAA,KAAAA,EAAO,IAAI,CAACxO,KAAK,CAACiiB;AACtB,qBAAA,CAAA;AACJ,gBAAA,CAAA;AACA,gBAAA,IAAI,CAACvI,MAAM,CAAChU,OAAO,EAAEzE,IAAAA,CAAKgZ,OAAAA,CAAAA;AAC9B,YAAA,CAAA,CAAA;AACJ,QAAA,CAAA;QAnCI,IAAI,CAAC3C,KAAK,GAAG;AACT9I,YAAAA,KAAAA,EAAOxO,MAAMiiB;AACjB,SAAA;AACJ,IAAA;AAkEJ;AA9EqBR,YAAAA,CACVrI,YAAAA,GAAe;IAClBwI,UAAAA,EAAY,QAAA;IACZD,UAAAA,EAAY,QAAA;IACZM,YAAAA,EAAc;AAClB,CAAA;;AC5CG,IAAA,eAAKC,iBAAAA,SAAAA,eAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,eAAAA;AAIX,CAAA,CAAA,EAAA;AAED,MAAMC,eAAAA,GAAgB,CAACC,IAAAA,IAAmB;AACtC,QAAA,CAAA,MAAA,GAAwB;AACpBC,YAAAA,MAAAA,EAAQ,CAAC,0BAA0B,EAAED,IAAAA,IAAQ,OAAA,CAAQ,+BAA+B,CAAC;YACrFE,KAAAA,EAAO;AACX,SAAA;AACA,QAAA,CAAA,OAAA,GAAyB;AACrBD,YAAAA,MAAAA,EAAQ,CAAC,0BAA0B,EAAED,IAAAA,IAAQ,OAAA,CAAQ,8BAA8B,CAAC;YACpFE,KAAAA,EAAO;AACX,SAAA;AACA,QAAA,CAAA,QAAA,GAA0B;AACtBD,YAAAA,MAAAA,EAAQ;;;;AAII,oBAAA,EAAED,QAAQ,MAAA,CAAO;;;QAG7B,CAAC;YACDE,KAAAA,EAAO;AACX;KACJ,CAAA;AAEA,MAAMC,SAAAA,iBAAYhgB,MAAAA,CAAAA,KAAAA,EAAAA;;;AAGMH,CAAAA,CAAAA,CAAAA,sDAAAA,EAAAA,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,EAAA,6CAAA,EAEzCxB,aAAAA,CAAcF,UAAAA,CAAW4B,YAAY,CAAA,EAAA,GAAA,EACjD,CAAC9D,KAAAA,GAAUmiB,eAAAA,CAAcniB,KAAAA,CAAMoiB,IAAI,CAAC,CAACpiB,KAAAA,CAAMgM,QAAQ,CAAC,CAACqW,MAAM,EAAA,iDAAA,EAIvD,CAACriB,QAAUmiB,eAAAA,CAAcniB,KAAAA,CAAMoiB,IAAI,CAAC,CAACpiB,KAAAA,CAAMgM,QAAQ,CAAC,CAACsW,KAAK,EAAA,GAAA,CAAA;AA2BpE,MAAMrE,aAAAA,GAAc;IAChB,CAAA,MAAA,GAAwB/L,eAAesQ,QAAQ;IAC/C,CAAA,OAAA,GAAyBtQ,eAAeuQ,SAAS;IACjD,CAAA,QAAA,GAA0BvQ,eAAekP;AAC7C,CAAA;AAce,MAAMsB,MAAAA,SAAejf,MAAMyT,SAAS,CAAA;AAe/C;;QAGA,OAAOyL,wBAAAA,CAAyB3iB,KAAkB,EAAE;QAChD,IAAIA,KAAAA,CAAMiB,IAAI,EAAE;YACZ,OAAO;gBACHA,IAAAA,EAAM;AACV,aAAA;AACJ,QAAA;QACA,OAAO,IAAA;AACX,IAAA;AA6DA;;AAEC,QACD2hB,iBAAAA,GAAoB;AAChB,QAAA,IAAI,IAAI,CAAC5iB,KAAK,CAACiB,IAAI,EAAE;AACjB,YAAA,IAAI,CAAC6W,kBAAkB,GAAGvN,QAAAA,CAASgO,aAAa;;AAEhD,YAAA,IAAI,CAACsK,UAAU,EAAA;AACnB,QAAA;AACJ,IAAA;AAoCA;;AAEC,QACDrL,oBAAAA,GAAuB;AACnB,QAAA,IAAI,IAAI,CAACxX,KAAK,CAACiB,IAAI,EAAE;AACjB,YAAA,IAAI,CAACyW,YAAY,EAAA;AACrB,QAAA;AACJ,IAAA;AA0DA;;;QAIAoL,uBAAAA,CAAwBC,SAAsB,EAAE;AAC5C,QAAA,MAAM,EAAE9hB,IAAI,EAAE,GAAG,IAAI,CAACjB,KAAK;AAE3B,QAAA,IAAI+iB,SAAAA,CAAU9hB,IAAI,IAAI,CAACA,IAAAA,EAAM;AACzB,YAAA,IAAI,CAACoT,aAAa,IAAA;AAClB,YAAA,IAAI,CAACqD,YAAY,EAAA;AACrB,QAAA;AAEA,QAAA,IAAI,CAACqL,SAAAA,CAAU9hB,IAAI,IAAIA,IAAAA,EAAM;;AAEzB,YAAA,IAAI,CAAC6W,kBAAkB,GAAGvN,QAAAA,CAASgO,aAAa;AAChD,YAAA,IAAI,CAACsK,UAAU,EAAA;AACnB,QAAA;QAEA,OAAO,IAAA;AACX,IAAA;AAcA;;AAEC,QACDjL,MAAAA,GAAS;QACL,IAAI,IAAI,CAACN,KAAK,CAACrW,IAAI,IAAI,IAAI,CAACwS,KAAK,EAAE;AAC/B,YAAA,MAAM,CAACyD,SAAAA,CAAU,GAAG,IAAI,CAACzD,KAAK;AAC9B,YAAA,qBAAOjT,cAAA,CAAC0W,SAAAA,EAAAA;gBAAU3T,GAAAA,EAAK,IAAI,CAACyf;;AAChC,QAAA;QAEA,OAAO,IAAA;AACX,IAAA;;AA/OW,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAIX1L,KAAAA,GAAQ;YACJrW,IAAAA,EAAM;SACV;;;AA4BC,QAAA,IAAA,CACOgZ,OAAAA,GAAU,IAAA;AACd,YAAA,IAAI,CAACvC,YAAY,EAAA;YACjB,IAAI,CAACwB,QAAQ,CAAC;gBACVjY,IAAAA,EAAM;AACV,aAAA,CAAA;YACA,IAAI,CAACjB,KAAK,CAACia,OAAO,IAAA;YAClB,IAAI,CAAC5F,aAAa,GAAGxH,SAAAA;YACrB,IAAI,CAAC4G,KAAK,GAAG5G,SAAAA;AACjB,QAAA,CAAA,EAAA,IAAA,CAEQiL,kBAAAA,GAAyC,IAAA,EAAA,IAAA,CACzCmL,SAAAA,iBAAYxf,KAAAA,CAAMuU,SAAS,EAAA;;AAIlC,QAAA,IAAA,CACOC,oBAAAA,GAAuB,IAAA;YAC3B,IAAI,CAAC,IAAI,CAACgL,SAAS,CAACvd,OAAO,EAAE,OAAO,EAAE;YACtC,OAAOoK,KAAAA,CAAMS,IAAI,CACb,IAAI,CAAC0S,SAAS,CAACvd,OAAO,CAACwS,gBAAgB,CACnC,0EAAA,CAAA,CAAA;QAGZ,CAAA;;;AAKC,QAAA,IAAA,CACO1M,gBAAgB,CAACzD,CAAAA,GAAAA;YACrB,IAAIA,CAAAA,CAAE1F,GAAG,KAAK,KAAA,EAAO;gBACjB,MAAM8V,iBAAAA,GAAoB,IAAI,CAACF,oBAAoB,EAAA;gBACnD,IAAIE,iBAAAA,CAAkBtK,MAAM,KAAK,CAAA,EAAG;gBAEpC,MAAMuK,YAAAA,GAAeD,iBAAiB,CAAC,CAAA,CAAE;AACzC,gBAAA,MAAME,cAAcF,iBAAiB,CAACA,iBAAAA,CAAkBtK,MAAM,GAAG,CAAA,CAAE;gBAEnE,IAAI9F,CAAAA,CAAEuQ,QAAQ,EAAE;oBACZ,IAAI/N,QAAAA,CAASgO,aAAa,KAAKH,YAAAA,EAAc;AACzCC,wBAAAA,WAAAA,CAAYG,KAAK,EAAA;AACjBzQ,wBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AACpB,oBAAA;gBACJ,CAAA,MAAO;oBACH,IAAIS,QAAAA,CAASgO,aAAa,KAAKF,WAAAA,EAAa;AACxCD,wBAAAA,YAAAA,CAAaI,KAAK,EAAA;AAClBzQ,wBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AACpB,oBAAA;AACJ,gBAAA;AACJ,YAAA;QACJ,CAAA;;AAeC,QAAA,IAAA,CACO+Y,UAAAA,GAAa,IAAA;AACjB,YAAA,MAAM,EAAEzQ,UAAU,EAAEI,mBAAmB,EAAExG,QAAQ,EAAEoW,IAAI,EAAE/P,OAAO,EAAEzR,QAAQ,EAAE,GAAG6F,MAAM,GACjF,IAAI,CAACzG,KAAK;AAEd,YAAA,IAAI,CAACyT,KAAK,GAAGV,cAAAA,CAAa8B,WAAW,CAAC;AAClCxC,gBAAAA,OAAAA;gBACAE,SAAAA,EAAW,GAAA;gBACXvG,QAAAA,EAAUiS,aAAW,CAACjS,QAAAA,CAAS;gBAC/BqI,aAAAA,EAAe,IAAI,CAAC4F,OAAO;AAC3B7H,gBAAAA,UAAAA;AACAI,gBAAAA,mBAAAA;AACAF,gBAAAA,SAAAA,gBACI9R,cAAA,CAAC+hB,SAAAA,EAAAA;AACI,oBAAA,GAAG9b,IAAI;oBACRlD,GAAAA,EAAK,IAAI,CAAC2f,YAAY;oBACtBhd,IAAAA,EAAK,QAAA;oBACL+S,YAAAA,EAAW,MAAA;AACXxM,oBAAAA,QAAAA,EAAU,EAAC;oBACXtE,SAAAA,EAAW,IAAI,CAACqD,aAAa;oBAC7BQ,QAAAA,EAAUA,QAAAA;oBACVoW,IAAAA,EAAMA,IAAAA;oBACNxc,OAAAA,EAAS,CAACmC,CAAAA,GAAMA,CAAAA,CAAEE,eAAe,EAAA;AAEhCrH,oBAAAA,QAAAA,EAAAA;;AAGb,aAAA,CAAA;AACA,YAAA,IAAI,CAACyT,aAAa,GAAG,IAAI,CAACZ,KAAK,CAAC,CAAA,CAAE;AAClC,YAAA,IAAI,CAAC0P,WAAW,EAAA;QACpB,CAAA;;AAaC,QAAA,IAAA,CACOzL,YAAAA,GAAe,IAAA;YACnB,IAAI,IAAI,CAACI,kBAAkB,EAAE;;gBAEzB,MAAMW,kBAAAA,GAAqB,IAAI,CAACX,kBAAkB;gBAClD,IAAI,CAACA,kBAAkB,GAAG,IAAA;gBAC1BzN,UAAAA,CAAW,IAAA;AACP,oBAAA,IAAIE,QAAAA,CAASC,IAAI,CAACkJ,QAAQ,CAAC+E,kBAAAA,CAAAA,EAAqB;AAC5CA,wBAAAA,kBAAAA,CAAmBD,KAAK,EAAA;AAC5B,oBAAA;gBACJ,CAAA,EAAG,GAAA,CAAA;AACP,YAAA;QACJ,CAAA;;;AAKC,QAAA,IAAA,CACO0K,eAAe,CAACvK,IAAAA,GAAAA;;AAEnB,YAAA,IAAI,CAACsK,SAAS,CAAmDvd,OAAO,GAAGiT,IAAAA;AAE5E,YAAA,IAAIA,IAAAA,EAAM;;gBAEN,IAAI,CAACC,eAAe,CAACD,IAAAA,CAAAA;AACzB,YAAA;QACJ,CAAA;;;AAKC,QAAA,IAAA,CACOC,kBAAkB,CAACC,IAAAA,GAAAA;;YAEvB,MAAMC,UAAAA,GAAaD,KAAKE,iBAAiB;AACzC,YAAA,IAAID,UAAAA,EAAY;;AAEZ,gBAAA,IAAIA,UAAAA,CAAW1N,YAAY,CAAC,UAAA,CAAA,KAAgB,IAAA,EAAM;oBAC9C0N,UAAAA,CAAW/E,YAAY,CAAC,UAAA,EAAY,IAAA,CAAA;AACxC,gBAAA;AACA+E,gBAAAA,UAAAA,CAAWN,KAAK,EAAA;AAChB,gBAAA;AACJ,YAAA;;YAGA,MAAML,iBAAAA,GAAoB,IAAI,CAACF,oBAAoB,EAAA;YACnD,IAAIE,iBAAAA,CAAkBtK,MAAM,GAAG,CAAA,EAAG;gBAC9BsK,iBAAiB,CAAC,CAAA,CAAE,CAACK,KAAK,EAAA;YAC9B,CAAA,MAAO;;AAEHK,gBAAAA,IAAAA,CAAKL,KAAK,EAAA;AACd,YAAA;QACJ,CAAA;;;AA0BC,QAAA,IAAA,CACDwK,aAAa,CAACrK,IAAAA,GAAAA;AACV,YAAA,IAAI,IAAI,CAAC3Y,KAAK,CAAC0D,UAAU,IAAI,OAAO,IAAI,CAAC1D,KAAK,CAAC0D,UAAU,KAAK,UAAA,EAAY;AACtE,gBAAA,IAAI,CAAC1D,KAAK,CAAC0D,UAAU,CAACiV,IAAAA,CAAAA;AAC1B,YAAA,CAAA,MAAO,IAAI,IAAI,CAAC3Y,KAAK,CAAC0D,UAAU,IAAI,OAAO,IAAI,CAAC1D,KAAK,CAAC0D,UAAU,KAAK,QAAA,EAAU;AAC1E,gBAAA,IAAI,CAAC1D,KAAK,CAAC0D,UAAU,CAAmDgC,OAAO,GAAGiT,IAAAA;AACvF,YAAA;AACJ,QAAA,CAAA;;AAaJ;AAhPqB+J,MAAAA,CAQVtJ,YAAAA,GAAe;IAClB/G,OAAAA,EAAS,IAAA;IACTrG,QAAQ,EAAA,MAAA;IACRoG,UAAAA,EAAY,IAAA;IACZI,mBAAAA,EAAqB;AACzB,CAAA;;ACvGJ,MAAMhL,WAAAA,iBAAYjF,MAAAA,CAAAA,KAAAA,EAAAA;;;AAEMH,CAAAA,CAAAA,CAAAA,uCAAAA,EAAAA,aAAAA,CAAcF,WAAWoE,YAAY,CAAA,EAAA,4GAAA,EAU5BlE,aAAAA,CAAcF,UAAAA,CAAWoE,YAAY,CAAA,EAAA,qlBAAA,EAuDhDlE,aAAAA,CAAcF,UAAAA,CAAW6E,YAAY,SAGrD,CAAC/G,KAAAA,GACCA,KAAAA,CAAMiF,SAAS,GACT;sBACQ,EAAE7C,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;;0BAG9B,EAAEb,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAE;;AAExD,IAAA,CAAC,GACS,EAAA,CAAA;AAGd,MAAMgM,cAAAA,iBAAiB1M,MAAAA,CAAAA,KAAAA,EAAAA;;;AACVH,CAAAA,CAAAA,CAAAA,QAAAA,EAAAA,aAAAA,CAAcF,WAAWe,KAAK,CAAA,EAAA,kCAAA,CAAA;AAU3C;;;;AAIC,IACD,SAASmgB,cAAAA,CACLpjB,KAA0C,EAC1CuD,GAA8B,EAAA;AAE9B,IAAA,MAAMmM,OAAAA,GAAUtK,WAAAA,EAAAA;IAEhB,qBACIjE,eAAA,CAAAV,mBAAA,EAAA;;0BACID,cAAA,CAACgH,WAAAA,EAAAA;AACI,gBAAA,GAAGxH,KAAK;gBACTuD,GAAAA,EAAKA,GAAAA;gBACLuO,kBAAAA,EAAkB9R,KAAAA,CAAMiF,SAAS,GAAGyK,OAAAA,GAAU7C,SAAAA;AAE7C7M,gBAAAA,QAAAA,EAAAA,KAAAA,CAAMY;;YAEVZ,KAAAA,CAAMiF,SAAS,kBAAIzE,cAAA,CAACyO,cAAAA,EAAAA;gBAAelJ,EAAAA,EAAI2J,OAAAA;AAAU1P,gBAAAA,QAAAA,EAAAA,KAAAA,CAAMiF;;;;AAGpE;AAEA,MAAMoe,KAAAA,iBAAQ5f,KAAAA,CAAMC,UAAU,CAA6B0f,cAAAA;;ACvH3D,iBAAA,cAAe7gB,MAAAA,CAAAA,OAAAA,EAAAA;;;AAESH,CAAAA,CAAAA,CAAAA,+BAAAA,EAAAA,aAAAA,CAAcF,WAAWqE,mBAAmB,CAAA,EAAA,yEAAA,EAKvDnE,aAAAA,CAAcF,UAAAA,CAAWoE,YAAY,CAAA,EAAA,2EAAA,CAAA;;AC4BnC,MAAMgd,KAAAA,SAAc7f,MAAMyT,SAAS,CAAA;AAa9C;;QAGA,OAAOyL,wBAAAA,CAAyB3iB,KAAiB,EAAE;QAC/C,IAAIA,KAAAA,CAAMiB,IAAI,EAAE;YACZ,OAAO;gBACHA,IAAAA,EAAM;AACV,aAAA;AACJ,QAAA;QACA,OAAO,IAAA;AACX,IAAA;AA6DA;;AAEC,QACD2hB,iBAAAA,GAAoB;AAChB,QAAA,IAAI,IAAI,CAAC5iB,KAAK,CAACiB,IAAI,EAAE;AACjB,YAAA,IAAI,CAAC6W,kBAAkB,GAAGvN,QAAAA,CAASgO,aAAa;;AAEhD,YAAA,IAAI,CAACsK,UAAU,EAAA;AACnB,QAAA;AACJ,IAAA;AAkCA;;AAEC,QACDrL,oBAAAA,GAAuB;AACnB,QAAA,IAAI,IAAI,CAACxX,KAAK,CAACiB,IAAI,EAAE;AACjB,YAAA,IAAI,CAACyW,YAAY,EAAA;AACrB,QAAA;;QAEA,IAAI,IAAI,CAACrD,aAAa,EAAE;AACpB,YAAA,IAAI,CAACA,aAAa,EAAA;YAClB,IAAI,CAACA,aAAa,GAAGxH,SAAAA;AACzB,QAAA;QACA,IAAI,CAAC4G,KAAK,GAAG5G,SAAAA;AACjB,IAAA;AA8DA;;;QAIAiW,uBAAAA,CAAwBC,SAAqB,EAAE;AAC3C,QAAA,MAAM,EAAE9hB,IAAI,EAAE,GAAG,IAAI,CAACjB,KAAK;AAE3B,QAAA,IAAI+iB,SAAAA,CAAU9hB,IAAI,IAAI,CAACA,IAAAA,EAAM;AACzB,YAAA,IAAI,CAACoT,aAAa,IAAA;AAClB,YAAA,IAAI,CAACqD,YAAY,EAAA;AACrB,QAAA;AAEA,QAAA,IAAI,CAACqL,SAAAA,CAAU9hB,IAAI,IAAIA,IAAAA,EAAM;;AAEzB,YAAA,IAAI,CAAC6W,kBAAkB,GAAGvN,QAAAA,CAASgO,aAAa;AAChD,YAAA,IAAI,CAACsK,UAAU,EAAA;AACnB,QAAA;QAEA,OAAO,IAAA;AACX,IAAA;AAEA;;AAEC,QACDjL,MAAAA,GAAS;QACL,IAAI,IAAI,CAACN,KAAK,CAACrW,IAAI,IAAI,IAAI,CAACwS,KAAK,EAAE;AAC/B,YAAA,MAAM,CAACyD,SAAAA,CAAU,GAAG,IAAI,CAACzD,KAAK;AAC9B,YAAA,qBAAOjT,cAAA,CAAC0W,SAAAA,EAAAA,EAAAA,CAAAA;AACZ,QAAA;QAEA,OAAO,IAAA;AACX,IAAA;;AAzOW,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAIXI,KAAAA,GAAQ;YACJrW,IAAAA,EAAM;SACV;;;AA0BC,QAAA,IAAA,CACOgZ,OAAAA,GAAU,IAAA;AACd,YAAA,IAAI,CAACvC,YAAY,EAAA;YACjB,IAAI,CAACwB,QAAQ,CAAC;gBACVjY,IAAAA,EAAM;AACV,aAAA,CAAA;YACA,IAAI,CAACjB,KAAK,CAACia,OAAO,IAAA;YAClB,IAAI,CAAC5F,aAAa,GAAGxH,SAAAA;YACrB,IAAI,CAAC4G,KAAK,GAAG5G,SAAAA;AACjB,QAAA,CAAA,EAAA,IAAA,CAEQiL,kBAAAA,GAAyC,IAAA,EAAA,IAAA,CACzCyL,QAAAA,iBAAW9f,KAAAA,CAAMuU,SAAS,EAAA;;AAIjC,QAAA,IAAA,CACOC,oBAAAA,GAAuB,IAAA;YAC3B,IAAI,CAAC,IAAI,CAACsL,QAAQ,CAAC7d,OAAO,EAAE,OAAO,EAAE;YACrC,OAAOoK,KAAAA,CAAMS,IAAI,CACb,IAAI,CAACgT,QAAQ,CAAC7d,OAAO,CAACwS,gBAAgB,CAClC,0EAAA,CAAA,CAAA;QAGZ,CAAA;;;AAKC,QAAA,IAAA,CACO1M,gBAAgB,CAACzD,CAAAA,GAAAA;YACrB,IAAIA,CAAAA,CAAE1F,GAAG,KAAK,KAAA,EAAO;gBACjB,MAAM8V,iBAAAA,GAAoB,IAAI,CAACF,oBAAoB,EAAA;gBACnD,IAAIE,iBAAAA,CAAkBtK,MAAM,KAAK,CAAA,EAAG;gBAEpC,MAAMuK,YAAAA,GAAeD,iBAAiB,CAAC,CAAA,CAAE;AACzC,gBAAA,MAAME,cAAcF,iBAAiB,CAACA,iBAAAA,CAAkBtK,MAAM,GAAG,CAAA,CAAE;gBAEnE,IAAI9F,CAAAA,CAAEuQ,QAAQ,EAAE;oBACZ,IAAI/N,QAAAA,CAASgO,aAAa,KAAKH,YAAAA,EAAc;AACzCC,wBAAAA,WAAAA,CAAYG,KAAK,EAAA;AACjBzQ,wBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AACpB,oBAAA;gBACJ,CAAA,MAAO;oBACH,IAAIS,QAAAA,CAASgO,aAAa,KAAKF,WAAAA,EAAa;AACxCD,wBAAAA,YAAAA,CAAaI,KAAK,EAAA;AAClBzQ,wBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AACpB,oBAAA;AACJ,gBAAA;AACJ,YAAA;QACJ,CAAA;;AAeC,QAAA,IAAA,CACO+Y,UAAAA,GAAa,IAAA;AACjB,YAAA,MAAM,EAAEzQ,UAAU,EAAEI,mBAAmB,EAAE5R,QAAQ,EAAE,GAAG6F,IAAAA,EAAM,GAAG,IAAI,CAACzG,KAAK;AAEzE,YAAA,IAAI,CAACyT,KAAK,GAAGV,cAAAA,CAAa8B,WAAW,CAAC;gBAClCxC,OAAAA,EAAS,IAAA;gBACTE,SAAAA,EAAW,GAAA;AACXvG,gBAAAA,QAAAA,EAAUkG,eAAe8G,MAAM;gBAC/B3E,aAAAA,EAAe,IAAI,CAAC4F,OAAO;gBAC3B7H,UAAAA,EAAYA,UAAAA;gBACZI,mBAAAA,EAAqBA,mBAAAA;AACrBF,gBAAAA,SAAAA,gBACI9R,cAAA,CAACgjB,eAAAA,EAAAA;AACI,oBAAA,GAAG/c,IAAI;oBACRlD,GAAAA,EAAK,IAAI,CAACkgB,WAAW;oBACrBvd,IAAAA,EAAK,QAAA;oBACL+S,YAAAA,EAAW,MAAA;AACXxM,oBAAAA,QAAAA,EAAU,EAAC;oBACXtE,SAAAA,EAAW,IAAI,CAACqD,aAAa;oBAC7B5F,OAAAA,EAAS,CAACmC,CAAAA,GAAMA,CAAAA,CAAEE,eAAe,EAAA;oBACjCpE,QAAQ,EAAA,IAAA;AAEPjD,oBAAAA,QAAAA,EAAAA;;AAGb,aAAA,CAAA;AACA,YAAA,IAAI,CAACyT,aAAa,GAAG,IAAI,CAACZ,KAAK,CAAC,CAAA,CAAE;AAClC,YAAA,IAAI,CAAC0P,WAAW,EAAA;QACpB,CAAA;;AAmBC,QAAA,IAAA,CACOzL,YAAAA,GAAe,IAAA;YACnB,IAAI,IAAI,CAACI,kBAAkB,EAAE;;gBAEzB,MAAMW,kBAAAA,GAAqB,IAAI,CAACX,kBAAkB;gBAClD,IAAI,CAACA,kBAAkB,GAAG,IAAA;gBAC1BzN,UAAAA,CAAW,IAAA;AACP,oBAAA,IAAIE,QAAAA,CAASC,IAAI,CAACkJ,QAAQ,CAAC+E,kBAAAA,CAAAA,EAAqB;AAC5CA,wBAAAA,kBAAAA,CAAmBD,KAAK,EAAA;AAC5B,oBAAA;gBACJ,CAAA,EAAG,GAAA,CAAA;AACP,YAAA;QACJ,CAAA;;;AAKC,QAAA,IAAA,CACOiL,cAAc,CAAC9K,IAAAA,GAAAA;;AAElB,YAAA,IAAI,CAAC4K,QAAQ,CAAmD7d,OAAO,GAAGiT,IAAAA;AAE3E,YAAA,IAAIA,IAAAA,EAAM;;gBAEN,IAAI,CAACC,eAAe,CAACD,IAAAA,CAAAA;AACzB,YAAA;AAEA,YAAA,IAAI,IAAI,CAAC3Y,KAAK,CAAC0D,UAAU,EAAE;AACtB,gBAAA,IAAI,CAAC1D,KAAK,CAAC0D,UAAU,CAAmDgC,OAAO,GAAGiT,IAAAA;AACvF,YAAA;QACJ,CAAA;;;AAKC,QAAA,IAAA,CACOC,kBAAkB,CAACC,IAAAA,GAAAA;;YAEvB,MAAMC,UAAAA,GAAaD,KAAKE,iBAAiB;AACzC,YAAA,IAAID,UAAAA,EAAY;;AAEZ,gBAAA,IAAIA,UAAAA,CAAW1N,YAAY,CAAC,UAAA,CAAA,KAAgB,IAAA,EAAM;oBAC9C0N,UAAAA,CAAW/E,YAAY,CAAC,UAAA,EAAY,IAAA,CAAA;AACxC,gBAAA;AACA+E,gBAAAA,UAAAA,CAAWN,KAAK,EAAA;AAChB,gBAAA;AACJ,YAAA;;YAGA,MAAML,iBAAAA,GAAoB,IAAI,CAACF,oBAAoB,EAAA;YACnD,IAAIE,iBAAAA,CAAkBtK,MAAM,GAAG,CAAA,EAAG;gBAC9BsK,iBAAiB,CAAC,CAAA,CAAE,CAACK,KAAK,EAAA;YAC9B,CAAA,MAAO;;AAEHK,gBAAAA,IAAAA,CAAKL,KAAK,EAAA;AACd,YAAA;AACJ,QAAA,CAAA;;AAkCJ;AA1OqB8K,KAAAA,CAQVlK,YAAAA,GAAe;IAClBhH,UAAAA,EAAY,IAAA;IACZI,mBAAAA,EAAqB;AACzB,CAAA;;ACjDJ,iCACO,IAAKkR,qBAAAA,iBAAAA,SAAAA,qBAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,qBAAAA;AAKX,CAAA,CAAA,EAAA;AAED,6BACO,IAAKC,iBAAAA,iBAAAA,SAAAA,iBAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,iBAAAA;AAKX,CAAA,CAAA,EAAA;;ACTD,MAAMC,oBAAoB,CAAC5X,QAAAA,GAAAA;IACvB,OAAQA,QAAAA;AACJ,QAAA,KAAK0X,sBAAsBlB,QAAQ;AACnC,QAAA,KAAKkB,sBAAsBtC,WAAW;YAClC,OAAO,SAAA;AACX,QAAA;YACI,OAAO,UAAA;AACf;AACJ,CAAA;AAEA,MAAMyC,mBAAmB,CAAC7X,QAAAA,GAAAA;IACtB,OAAQA,QAAAA;AACJ,QAAA,KAAK0X,sBAAsBlB,QAAQ;AACnC,QAAA,KAAKkB,sBAAsBtC,WAAW;YAClC,OAAO,UAAA;AACX,QAAA;YACI,OAAO,WAAA;AACf;AACJ,CAAA;AAEA,MAAM0C,iBAAiB,CAAChhB,IAAAA,GAAAA;IACpB,OAAQA,IAAAA;AACJ,QAAA,KAAK6gB,kBAAkB5gB,OAAO;YAC1B,OAAOX,aAAAA,CAAcF,WAAW6hB,aAAa,CAAA;AACjD,QAAA,KAAKJ,kBAAkB1d,MAAM;YACzB,OAAO7D,aAAAA,CAAcF,WAAWuF,WAAW,CAAA;AAC/C,QAAA,KAAKkc,kBAAkB3gB,OAAO;YAC1B,OAAOZ,aAAAA,CAAcF,WAAW8hB,aAAa,CAAA;AACjD,QAAA;YACI,OAAO5hB,aAAAA,CAAcF,WAAW+hB,UAAU,CAAA;AAClD;AACJ,CAAA;AAEA,MAAMC,gBAAgB,CAACphB,IAAAA,GAAAA;IACnB,OAAQA,IAAAA;AACJ,QAAA,KAAK6gB,kBAAkB5gB,OAAO;YAC1B,OAAOX,aAAAA,CAAcF,WAAWa,OAAO,CAAA;AAC3C,QAAA,KAAK4gB,kBAAkB1d,MAAM;YACzB,OAAO7D,aAAAA,CAAcF,WAAWe,KAAK,CAAA;AACzC,QAAA,KAAK0gB,kBAAkB3gB,OAAO;YAC1B,OAAOZ,aAAAA,CAAcF,WAAWc,OAAO,CAAA;AAC3C,QAAA,KAAK2gB,kBAAkBQ,IAAI;YACvB,OAAO/hB,aAAAA,CAAcF,WAAWiiB,IAAI,CAAA;AAC5C;AACJ,CAAA;AAEA,MAAMC,eAAe,CAACthB,IAAAA,GAAAA;IAClB,OAAQA,IAAAA;AACJ,QAAA,KAAK6gB,kBAAkBQ,IAAI;AACvB,YAAA,OAAO,CAAC,OAAO,EAAE/hB,aAAAA,CAAcF,UAAAA,CAAWiiB,IAAI,CAAA,CAAA,CAAG;AACrD,QAAA,KAAKR,kBAAkB5gB,OAAO;AAC1B,YAAA,OAAO,CAAC,OAAO,EAAEX,aAAAA,CAAcF,UAAAA,CAAWa,OAAO,CAAA,CAAA,CAAG;AACxD,QAAA,KAAK4gB,kBAAkB1d,MAAM;AACzB,YAAA,OAAO,CAAC,OAAO,EAAE7D,aAAAA,CAAcF,UAAAA,CAAWe,KAAK,CAAA,CAAA,CAAG;AACtD,QAAA,KAAK0gB,kBAAkB3gB,OAAO;AAC1B,YAAA,OAAO,CAAC,OAAO,EAAEZ,aAAAA,CAAcF,UAAAA,CAAWc,OAAO,CAAA,CAAA,CAAG;AAC5D;AACJ,CAAA;AAMO,MAAMwE,WAAAA,iBAAYjF,MAAAA,CAAAA,KAAAA,EAAAA;;;AAEH,CAAA,CAAA,CAAA,8BAAA,EAAA,CAACvC,KAAAA,GACfA,KAAAA,CAAMgM,QAAQ,KAAK0X,sBAAsBlB,QAAQ,IACjDxiB,KAAAA,CAAMgM,QAAQ,KAAK0X,qBAAAA,CAAsBjB,SAAS,GAC5C,WACA,gBAAA,EAAA,GAAA,CAAA;AAGP,MAAM4B,uBAAS9hB,MAAAA,CAAO0B,IAAAA,EAAAA;;;AAGA,CAAA,CAAA,CAAA,4DAAA,EAAA,CAACjE,QAAU8jB,cAAAA,CAAe9jB,KAAAA,CAAM8C,IAAI,CAAA,EAAA,0EAAA,EAKhD,CAAC9C,KAAAA,GAAU4jB,iBAAAA,CAAkB5jB,KAAAA,CAAMgM,QAAQ,0GAUvC,CAAChM,KAAAA,GAAU6jB,gBAAAA,CAAiB7jB,KAAAA,CAAMgM,QAAQ,CAAA,EAAA,+hBAAA,CAAA;AA4DxD,MAAMsY,KAAAA,iBAAQ/hB,MAAAA,CAAAA,KAAAA,EAAAA;;;AAGR,CAAA,CAAA,CAAA,qCAAA,EAAA,CAACvC,KAAAA,GAAUkkB,aAAAA,CAAclkB,KAAAA,CAAM8C,IAAI,CAAA,EAAA,mCAAA,CAAA;AAKzC,MAAMyhB,UAAAA,iBAAahiB,MAAAA,CAAAA,KAAAA,EAAAA;;;AAExB,CAAA,CAAA,CAAA,SAAA,CAAA;AAEK,MAAMiiB,WAAAA,iBAAcjiB,MAAAA,CAAAA,QAAAA,EAAAA;;;AAQdH,CAAAA,CAAAA,CAAAA,8GAAAA,EAAAA,aAAAA,CAAcF,WAAWkC,eAAe,CAAA,EAAA,gCAAA,EAGrBhC,aAAAA,CAAcF,UAAAA,CAAWmC,aAAa,CAAA,EAAA,sBAAA,CAAA;AAK/D,MAAM3B,IAAAA,iBAAOH,MAAAA,CAAAA,KAAAA,EAAAA;;;AAGlB,CAAA,CAAA,CAAA,uCAAA,CAAA;AAEK,MAAMkiB,aAAAA,iBAAgBliB,MAAAA,CAAAA,KAAAA,EAAAA;;;AAEvB,CAAA,CAAA,CAAA,mBAAA,EAAA,CAACvC,KAAAA,GAAUokB,YAAAA,CAAapkB,KAAAA,CAAM8C,IAAI,CAAA,EAAA,GAAA,CAAA;AAGjC,MAAMH,MAAAA,iBAASJ,MAAAA,CAAAA,KAAAA,EAAAA;;;AAIpB,CAAA,CAAA,CAAA,sDAAA,CAAA;AAEK,MAAM+K,cAAAA,iBAAiB/K,MAAAA,CAAAA,MAAAA,EAAAA;;;AAU5B,CAAA,CAAA,CAAA,8HAAA,CAAA;;AC1KF,MAAMmiB,kBAAAA,GAAmB,IAAA;AAEzB;;IAGA,MAAMC,mBAAAA,SAA4BlhB,KAAAA,CAAMyT,SAAS,CAAA;AAqK7C;;AAEC,QACDM,oBAAAA,GAAuB;;QAEnBoN,MAAAA,CAAOC,IAAI,CAAC,IAAI,CAACC,QAAQ,CAAA,CAAEvR,OAAO,CAAC,CAACxN,EAAAA,GAAAA;AAChCqE,YAAAA,YAAAA,CAAa,IAAI,CAAC0a,QAAQ,CAAC/e,EAAAA,CAAG,CAAA;AAClC,QAAA,CAAA,CAAA;QACA,IAAI,CAAC+e,QAAQ,GAAG,EAAC;QACjB,IAAI,CAACnQ,GAAG,CAACnB,KAAK,EAAA;AAClB,IAAA;IAEAoE,MAAAA,GAAS;AACL,QAAA,qBACIzW,eAAA,CAACqG,WAAAA,EAAAA;AAAUwE,YAAAA,QAAAA,EAAU,IAAI,CAAChM,KAAK,CAACgM,QAAQ;;8BAEpCxL,cAAA,CAAC8M,cAAAA,EAAAA;oBACG/J,GAAAA,EAAK,IAAI,CAACwhB,eAAe;oBACzB7e,IAAAA,EAAK,KAAA;oBACLuI,WAAAA,EAAU,QAAA;oBACVC,aAAAA,EAAY,OAAA;oBACZsW,eAAAA,EAAc;;8BAIlBxkB,cAAA,CAAC8M,cAAAA,EAAAA;oBACG/J,GAAAA,EAAK,IAAI,CAAC0hB,kBAAkB;oBAC5B/e,IAAAA,EAAK,OAAA;oBACLuI,WAAAA,EAAU,WAAA;oBACVC,aAAAA,EAAY;;8BAIhBlO,cAAA,CAACuR,KAAAA,EAAAA;oBAAI7L,IAAAA,EAAK,MAAA;AAAOkC,oBAAAA,YAAAA,EAAY,IAAI,CAACpI,KAAK,CAACklB,SAAS;AAC5C,oBAAA,QAAA,EAAA,IAAI,CAAC5N,KAAK,CAAC6N,OAAO,CAACxkB,GAAG,CAAC,CAACykB,MAAAA,GAAAA;AACrB,wBAAA,MAAM,EACFrf,EAAE,EACFsf,KAAK,EACLC,WAAW,EACXC,OAAO,EACPziB,OAAO6gB,iBAAAA,CAAkBQ,IAAI,EAC7BrK,UAAU,EACV0L,WAAW,EACX3d,oBAAoB,EACvB,GAAGud,MAAAA;AAEJ,wBAAA,qBACIjkB,eAAA,CAACkjB,MAAAA,EAAAA;AAEI,4BAAA,GAAGe,MAAM;AACVpZ,4BAAAA,QAAAA,EAAU,IAAI,CAAChM,KAAK,CAACgM,QAAQ;AAC7BgJ,4BAAAA,SAAAA,EAAWuQ,UAAU,OAAA,GAAU,EAAA;4BAC/BE,YAAAA,EAAc,IAAI,CAACC,KAAK,CAAC3f,EAAAA,CAAAA;4BACzB4f,YAAAA,EAAc,IAAI,CAACC,MAAM,CAAC7f,EAAAA,CAAAA;4BAC1BG,IAAAA,EAAK,UAAA;;8CAEL/E,eAAA,CAACsjB,aAAAA,EAAAA;oCAAc3hB,IAAAA,EAAMA,IAAAA;oCAAMkD,aAAAA,EAAY,MAAA;;wCAClClD,IAAAA,KAAS6gB,iBAAAA,CAAkBQ,IAAI,kBAAI3jB,cAAA,CAACqlB,aAAAA,EAAAA,EAAAA,CAAAA;wCACpC/iB,IAAAA,KAAS6gB,iBAAAA,CAAkB5gB,OAAO,kBAAIvC,cAAA,CAACU,aAAAA,EAAAA,EAAAA,CAAAA;wCACvC4B,IAAAA,KAAS6gB,iBAAAA,CAAkB3gB,OAAO,kBAAIxC,cAAA,CAACslB,aAAAA,EAAAA,EAAAA,CAAAA;wCACvChjB,IAAAA,KAAS6gB,iBAAAA,CAAkB1d,MAAM,kBAAIzF,cAAA,CAACulB,aAAAA,EAAAA,EAAAA;;;8CAE3C5kB,eAAA,CAACojB,UAAAA,EAAAA;;sDACG/jB,cAAA,CAAC8jB,KAAAA,EAAAA;4CAAMxhB,IAAAA,EAAMA,IAAAA;AAAOuiB,4CAAAA,QAAAA,EAAAA;;sDACpB7kB,cAAA,CAACkC,IAAAA,EAAAA;AAAM4iB,4CAAAA,QAAAA,EAAAA;;AACNxL,wCAAAA,UAAAA,kBACGtZ,cAAA,CAACmC,MAAAA,EAAAA;AACG,4CAAA,QAAA,gBAAAnC,cAAA,CAAC4G,YAAAA,EAAAA;gDACGxB,OAAAA,EAAS,IAAA;AACL4f,oDAAAA,WAAAA,IAAAA;AACJ,gDAAA,CAAA;AAEC1L,gDAAAA,QAAAA,EAAAA;;;;;8CAKjBtZ,cAAA,CAACgkB,WAAAA,EAAAA;oCACG5e,OAAAA,EAAS,IAAI,CAACogB,iBAAiB,CAACjgB,EAAAA,CAAAA;AAChCqC,oCAAAA,YAAAA,EAAYP,oBAAAA,IAAwB,oBAAA;oCACpC4E,QAAAA,EAAU,CAAA;AAEV,oCAAA,QAAA,gBAAAjM,cAAA,CAACyB,KAAAA,EAAAA,EAAAA;;;AAlCA8D,yBAAAA,EAAAA,EAAAA,CAAAA;AAsCjB,oBAAA,CAAA;;;;AAIhB,IAAA;;AA/PJ,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAIIuR,KAAAA,GAAkC;AAC9B6N,YAAAA,OAAAA,EAAS;AACb,SAAA;aAGQL,QAAAA,GAAqB;aAGrBnQ,GAAAA,GAAM,IAAInE;AAGVuU,QAAAA,IAAAA,CAAAA,eAAAA,iBAAkBthB,MAAMuU,SAAS,EAAA,EAAA,IAAA,CACjCiN,kBAAAA,iBAAqBxhB,KAAAA,CAAMuU,SAAS,EAAA;;;;AAM3C,QAAA,IAAA,CACMiO,SAAS,CAAClgB,EAAAA,GAAAA;AACb,YAAA,IAAI,CAACA,EAAAA,EAAI;;YAGT,IAAI,CAACmT,QAAQ,CAAC;gBACViM,OAAAA,EAAS,IAAI,CAAC7N,KAAK,CAAC6N,OAAO,CAACxkB,GAAG,CAAC,CAACykB,MAAAA,IAAY;AACzC,wBAAA,GAAGA,MAAM;AACTG,wBAAAA,OAAAA,EAASH,OAAOrf,EAAE,KAAKA,EAAAA,GAAK,IAAA,GAAOqf,OAAOG;qBAC9C,CAAA;AACJ,aAAA,CAAA;AACA,YAAA,IAAI,CAAC5Q,GAAG,CAACR,MAAM,CAACpO,EAAAA,CAAAA;;YAGhBsE,UAAAA,CAAW,IAAA;AACP,gBAAA,MAAM+a,MAAAA,GAAS,IAAI,CAAC9N,KAAK,CAAC6N,OAAO,CAAChQ,IAAI,CAAC,CAACiQ,MAAAA,GAAWA,MAAAA,CAAOrf,EAAE,KAAKA,EAAAA,CAAAA;AACjE,gBAAA,IAAIqf,MAAAA,EAAQ;;oBAER,IAAIA,MAAAA,CAAOnL,OAAO,EAAE;wBAChB,IAAI;AACAmL,4BAAAA,MAAAA,CAAOnL,OAAO,EAAA;AAClB,wBAAA,CAAA,CAAE,OAAOlS,CAAAA,EAAY;AACjByM,4BAAAA,OAAAA,CAAQC,IAAI,CAAC,sCAAA,EAAyC1M,EAAY2M,OAAO,CAAA;AAC7E,wBAAA;AACJ,oBAAA;;oBAGA,IAAI,CAACwE,QAAQ,CACT;AACIiM,wBAAAA,OAAAA,EAAS,IAAI,CAAC7N,KAAK,CAAC6N,OAAO,CAAC/T,MAAM,CAAC,CAACgU,MAAAA,GAAWA,MAAAA,CAAOrf,EAAE,KAAKA,EAAAA;qBACjE,EACA,IAAA;;;wBAGI,IAAI,IAAI,CAACuR,KAAK,CAAC6N,OAAO,CAACtX,MAAM,KAAK,CAAA,EAAG;4BACjC,IAAI,CAAC7N,KAAK,CAACkmB,OAAO,EAAA;AACtB,wBAAA;AACJ,oBAAA,CAAA,CAAA;AAER,gBAAA;YACJ,CAAA,EAAG,GAAA,CAAA;QACP,CAAA;;;;AAMC,QAAA,IAAA,CACMC,MAAM,OAAOf,MAAAA,GAAAA;;AAEhB,YAAA,MAAMrf,EAAAA,GAAKqf,MAAAA,CAAOrf,EAAE,IAAI,CAACqa,IAAAA,CAAKgG,MAAM,EAAA,GAAK,EAAA,IAAM,CAAA,EAAGC,OAAO,CAAC,CAAA,CAAA;;AAG1D,YAAA,IAAI,CAAC,IAAI,CAAC1R,GAAG,CAAC2R,GAAG,CAACvgB,EAAAA,CAAAA,EAAK;AACnB,gBAAA,MAAMjD,IAAAA,GAAOsiB,MAAAA,CAAOtiB,IAAI,IAAI6gB,kBAAkBQ,IAAI;AAClD,gBAAA,MAAMoC,WACFzjB,IAAAA,KAAS6gB,iBAAAA,CAAkB3gB,OAAO,IAAIF,IAAAA,KAAS6gB,kBAAkB1d,MAAM;;AAG3E,gBAAA,IAAI,CAACiT,QAAQ,CACT,CAACsN,aAAe;wBACZrB,OAAAA,EAAS;AACL,4BAAA;AACI,gCAAA,GAAGC,MAAM;AACTrf,gCAAAA;AACJ,6BAAA;AACGygB,4BAAAA,GAAAA,SAAAA,CAAUrB;AAChB;AACL,qBAAA,CAAA,EACA,IAAA;;oBAEI,MAAMzX,YAAAA,GAAe,GAAG0X,MAAAA,CAAOC,KAAK,CAAC,CAAC,EAAED,MAAAA,CAAOE,WAAW,CAAA,CAAE;oBAC5D,IAAI,CAACmB,gBAAgB,CAAC/Y,YAAAA,EAAc6Y,QAAAA,CAAAA;AACxC,gBAAA,CAAA,CAAA;;gBAIJ,IAAI,CAACnB,MAAAA,CAAOsB,MAAM,EAAE;AAChB,oBAAA,IAAI,CAAC5B,QAAQ,CAAC/e,EAAAA,CAAG,GAAGsE,UAAAA,CAChB,IAAM,IAAI,CAAC4b,MAAM,CAAClgB,EAAAA,CAAAA,EAClBqf,MAAAA,CAAO5b,QAAQ,IAAIkb,kBAAAA,CAAAA;AAE3B,gBAAA;;AAGA,gBAAA,IAAI,CAAC/P,GAAG,CAACwR,GAAG,CAACpgB,EAAAA,CAAAA;AACjB,YAAA;YAEA,OAAOA,EAAAA;QACX,CAAA;;;;;QAOC,IAAA,CACO0gB,gBAAAA,GAAmB,CAACE,OAAAA,EAAiBC,WAAAA,GAAAA;AACzC,YAAA,MAAMC,MAAAA,GAASD,WAAAA,GAAc,IAAI,CAAC3B,kBAAkB,CAACvf,OAAO,GAAG,IAAI,CAACqf,eAAe,CAACrf,OAAO;AAE3F,YAAA,IAAImhB,MAAAA,EAAQ;;gBAERxc,UAAAA,CAAW,IAAA;AACP,oBAAA,IAAIwc,MAAAA,EAAQ;AACRA,wBAAAA,MAAAA,CAAOC,WAAW,GAAGH,OAAAA;AACzB,oBAAA;gBACJ,CAAA,EAAG,GAAA,CAAA;AACP,YAAA;QACJ,CAAA;;;;QAMC,IAAA,CACMX,iBAAAA,GAAoB,CAACjgB,EAAAA,GAAgB,IAAA;gBACxC,IAAI,CAACkgB,MAAM,CAAClgB,EAAAA,CAAAA;YAChB,CAAA;;;;QAMC,IAAA,CACM2f,KAAAA,GAAQ,CAAC3f,EAAAA,GAAgB,IAAA;AAC5B,gBAAA,IAAIA,MAAM,IAAI,CAAC+e,QAAQ,CAAC/e,GAAG,EAAE;AACzBqE,oBAAAA,YAAAA,CAAa,IAAI,CAAC0a,QAAQ,CAAC/e,EAAAA,CAAG,CAAA;AAC9B,oBAAA,OAAO,IAAI,CAAC+e,QAAQ,CAAC/e,EAAAA,CAAG;AAC5B,gBAAA;YACJ,CAAA;;;;QAMC,IAAA,CACM6f,MAAAA,GAAS,CAAC7f,EAAAA,GAAgB,IAAA;AAC7B,gBAAA,MAAMqf,MAAAA,GAAS,IAAI,CAAC9N,KAAK,CAAC6N,OAAO,CAAChQ,IAAI,CAAC,CAACiQ,MAAAA,GAAWA,MAAAA,CAAOrf,EAAE,KAAKA,EAAAA,CAAAA;gBACjE,IAAI,CAACqf,MAAAA,EAAQsB,MAAAA,IAAU3gB,EAAAA,IAAM,CAAC,IAAI,CAAC+e,QAAQ,CAAC/e,EAAAA,CAAG,EAAE;oBAC7C,IAAI,CAAC+e,QAAQ,CAAC/e,EAAAA,CAAG,GAAGsE,UAAAA,CAAW,IAAM,IAAI,CAAC4b,MAAM,CAAClgB,EAAAA,CAAAA,EAAK2e,kBAAAA,CAAAA;AAC1D,gBAAA;AACJ,YAAA,CAAA;;AA6FJ;;AC3PA,oDACA,MAAMzG,WAAAA,GAAc;AAChB,IAAA,CAACyF,qBAAAA,CAAsBlB,QAAQ,GAAGtQ,eAAesQ,QAAQ;AACzD,IAAA,CAACkB,qBAAAA,CAAsBjB,SAAS,GAAGvQ,eAAeuQ,SAAS;AAC3D,IAAA,CAACiB,qBAAAA,CAAsBtC,WAAW,GAAGlP,eAAekP,WAAW;AAC/D,IAAA,CAACsC,qBAAAA,CAAsBqD,YAAY,GAAG7U,eAAe6U;AACzD,CAAA;AAEA,0BACA,MAAMC,YAAAA,CAAAA;;6EACgE,IAAA,CAC1DC,aAOJ,IAAI9T,GAAAA,EAAAA;iEAE8C,IAAA,CAC9C+T,UACJ,IAAI/T,GAAAA,EAAAA;AAER;;;;;;AAMC,QAAA,IAAA,CACMgT,GAAAA,GAAM,CACTna,QAAAA,EACAmb,OAAAA,EACAjC,YAAoB,eAAe,GAAA;AAEnC,YAAA,IAAI,CAAC,IAAI,CAAC+B,UAAU,CAACX,GAAG,CAACta,QAAAA,CAAAA,EAAW;+FAEhC,MAAMob,WAAAA,GAAgD,CAACC,QAAAA,GAAAA;AACnD,oBAAA,IAAIA,QAAAA,EAAU;AACV,wBAAA,MAAMzK,YAAY,IAAI,CAACqK,UAAU,CAACK,GAAG,CAACtb,QAAAA,CAAAA;AACtC,wBAAA,IAAI4Q,SAAAA,EAAW;AACXA,4BAAAA,SAAAA,CAAU2K,OAAO,GAAGF,QAAAA;AACxB,wBAAA;;AAGA,wBAAA,MAAMG,QAAQ,IAAI,CAACN,OAAO,CAACI,GAAG,CAACtb,QAAAA,CAAAA;AAC/B,wBAAA,IAAIwb,KAAAA,EAAO;AACPA,4BAAAA,KAAAA,CAAMjU,OAAO,CAAC,CAACkU,EAAAA,GAAOA,EAAAA,CAAGJ,QAAAA,CAAAA,CAAAA;AACzB,4BAAA,IAAI,CAACH,OAAO,CAAC/S,MAAM,CAACnI,QAAAA,CAAAA;AACxB,wBAAA;AACJ,oBAAA;AACJ,gBAAA,CAAA;AAEA,gBAAA,MAAM,CAACkL,SAAAA,CAAU,GAAGnE,cAAAA,CAAa8B,WAAW,CAAC;oBACzCzC,UAAAA,EAAY,KAAA;oBACZI,mBAAAA,EAAqB,KAAA;oBACrBxG,QAAAA,EAAUiS,WAAW,CAACjS,QAAAA,CAAS;oBAC/ByG,WAAAA,EAAa,IAAA;AACbH,oBAAAA,SAAAA,gBACI9R,cAAA,CAACmkB,mBAAAA,EAAAA;wBACGphB,GAAAA,EAAK6jB,WAAAA;wBACLpb,QAAAA,EAAUA,QAAAA;AACVka,wBAAAA,OAAAA,EAAS,IAAM,IAAI,CAAC9S,OAAO,CAACpH,QAAAA,CAAAA;wBAC5BkZ,SAAAA,EAAWA;;AAGvB,iBAAA,CAAA;;gBAGA,MAAMnT,GAAAA,GAAMxH,QAAAA,CAASkL,aAAa,CAAC,KAAA,CAAA;gBACnClL,QAAAA,CAASC,IAAI,CAACkL,WAAW,CAAC3D,GAAAA,CAAAA;AAC1B,gBAAA,MAAM8G,OAAO6O,iBAAAA,CAAW3V,GAAAA,CAAAA;AAExB,gBAAA,IAAI,CAACkV,UAAU,CAACtS,GAAG,CAAC3I,QAAAA,EAAU;oBAC1Bub,OAAAA,EAAS,IAAA;AACT1O,oBAAAA,IAAAA;AACA9G,oBAAAA;AACJ,iBAAA,CAAA;;gBAGA4V,kBAAAA,CAAU,IAAA;oBACN9O,IAAAA,CAAKjB,MAAM,eAACpX,cAAA,CAAC0W,SAAAA,EAAAA,EAAAA,CAAAA,CAAAA;AACjB,gBAAA,CAAA,CAAA;AACJ,YAAA;AAEA,YAAA,MAAM0F,YAAY,IAAI,CAACqK,UAAU,CAACK,GAAG,CAACtb,QAAAA,CAAAA;YACtC,IAAI4Q,SAAAA,IAAaA,SAAAA,CAAU2K,OAAO,EAAE;AAChC,gBAAA,OAAO3K,SAAAA,CAAU2K,OAAO,CAACpB,GAAG,CAACgB,OAAAA,CAAAA;AACjC,YAAA;;YAGA,OAAO,IAAIpN,QAAgB,CAACC,OAAAA,GAAAA;gBACxB,MAAMwN,KAAAA,GAAQ,IAAI,CAACN,OAAO,CAACI,GAAG,CAACtb,aAAa,EAAE;gBAC9Cwb,KAAAA,CAAM5R,IAAI,CAAC,CAAC2R,OAAAA,GAAAA;oBACRvN,OAAAA,CAAQuN,OAAAA,CAAQpB,GAAG,CAACgB,OAAAA,CAAAA,CAAAA;AACxB,gBAAA,CAAA,CAAA;AACA,gBAAA,IAAI,CAACD,OAAO,CAACvS,GAAG,CAAC3I,QAAAA,EAAUwb,KAAAA,CAAAA;AAC/B,YAAA,CAAA,CAAA;AACJ,QAAA,CAAA;AAEA;;;;;QAKC,IAAA,CACMvB,MAAAA,GAAS,CAACja,QAAAA,EAAiCjG,EAAAA,GAAAA;AAC9C,YAAA,MAAM6W,YAAY,IAAI,CAACqK,UAAU,CAACK,GAAG,CAACtb,QAAAA,CAAAA;YACtC,IAAI4Q,SAAAA,IAAaA,SAAAA,CAAU2K,OAAO,EAAE;gBAChC3K,SAAAA,CAAU2K,OAAO,CAACtB,MAAM,CAAClgB,EAAAA,CAAAA;AAC7B,YAAA;AACJ,QAAA,CAAA;AAEA;;;;;AAKC,QAAA,IAAA,CACMqN,UAAU,CAACpH,QAAAA,GAAAA;AACd,YAAA,MAAM4Q,YAAY,IAAI,CAACqK,UAAU,CAACK,GAAG,CAACtb,QAAAA,CAAAA;AACtC,YAAA,IAAI4Q,SAAAA,EAAW;gBACXA,SAAAA,CAAU/D,IAAI,CAAChF,OAAO,EAAA;AACtB,gBAAA,IAAItJ,SAASC,IAAI,CAACkJ,QAAQ,CAACkJ,SAAAA,CAAU7K,GAAG,CAAA,EAAG;AACvCxH,oBAAAA,QAAAA,CAASC,IAAI,CAACoJ,WAAW,CAACgJ,UAAU7K,GAAG,CAAA;AAC3C,gBAAA;AACA,gBAAA,IAAI,CAACkV,UAAU,CAAC9S,MAAM,CAACnI,QAAAA,CAAAA;AAC3B,YAAA;AACJ,QAAA,CAAA;;AACJ;AAEA,mCACA,2BAAe,IAAIgb,YAAAA,EAAAA;;AClLnB,MAAMY,UAAAA,iBAAarlB,MAAAA,CAAAA,KAAAA,EAAAA;;;AACKH,CAAAA,CAAAA,CAAAA,mBAAAA,EAAAA,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,EAAA,wBAAA,EAC5Bf,aAAAA,CAAcF,WAAWO,kBAAkB,CAAA,EAAA,2BAAA,EAE1D,CAACzC,KAAAA,GAAUA,MAAMoiB,IAAI,EAAA,YAAA,EACpB,CAACpiB,KAAAA,GAAUA,MAAMoiB,IAAI,EAAA,gIAAA,CAAA;AA2BnC;;;;AAIC,IACD,SAASyF,gBAAAA,CAAiB7nB,KAAkB,EAAEuD,GAA8B,EAAA;IACxE,MAAM,EAAEoE,QAAQ,SAAS,EAAEya,OAAO,EAAE,EAAE,GAAG3b,IAAAA,EAAM,GAAGzG,KAAAA;AAClD,IAAA,qBACIQ,cAAA,CAAConB,UAAAA,EAAAA;AACI,QAAA,GAAGnhB,IAAI;QACRlD,GAAAA,EAAKA,GAAAA;QACL6e,IAAAA,EAAMA,IAAAA;QACNlc,IAAAA,EAAK,QAAA;AACLkC,QAAAA,YAAAA,EAAYT,KAAAA,IAASkF,SAAAA;QACrB4B,WAAAA,EAAU,QAAA;QACVqZ,WAAAA,EAAU;;AAGtB;AAEA,MAAMC,OAAAA,iBAAUtkB,KAAAA,CAAMC,UAAU,CAA8BmkB,gBAAAA;;AClD9D,MAAMrgB,WAAAA,iBAAYjF,MAAAA,CAAAA,KAAAA,EAAAA;;;;AAOlB,MAAMC,MAAAA,iBAASD,MAAAA,CAAAA,KAAAA,EAAAA;;;AAIgBH,CAAAA,CAAAA,CAAAA,wFAAAA,EAAAA,aAAAA,CAAcF,UAAAA,CAAWO,kBAAkB,CAAA,EAAA,4GAAA,EAS1CL,aAAAA,CAAcF,WAAWsC,UAAU,CAAA,EAAA,4CAAA,CAAA;AAWnE,MAAMwjB,YAAAA,iBAAezlB,MAAAA,CAAAA,QAAAA,EAAAA;;;AAKG,CAAA,CAAA,CAAA,yFAAA,EAAA,CAACvC,KAAAA,GACjBA,KAAAA,CAAMC,MAAM,GACNmC,aAAAA,CAAcF,UAAAA,CAAWO,kBAAkB,CAAA,GAC3CL,aAAAA,CAAcF,UAAAA,CAAW0B,UAAU,CAAA,EAAA,eAAA,EAC9B,CAAC5D,KAAAA,GAAWA,KAAAA,CAAMC,MAAM,GAAG,MAAA,GAAS,QAAA,EAAA,yDAAA,EAI1CmC,aAAAA,CAAcF,UAAAA,CAAWkC,eAAe,CAAA,EAAA,kDAAA,EAIzBhC,aAAAA,CAAcF,UAAAA,CAAWqE,mBAAmB,CAAA,EAAA,6CAAA,EAK5CnE,aAAAA,CAAcF,WAAW+lB,eAAe,CAAA,EAAA,8CAAA,CAAA;AAUpE,MAAMC,YAAAA,iBAAe3lB,MAAAA,CAAAA,KAAAA,EAAAA;;;;AA6BrB;;;;AAIC,IACD,SAAS4lB,gBAAAA,CAAiBnoB,KAAmB,EAAEuD,GAA8B,EAAA;IACzE,MAAM,EAAEtD,MAAAA,EAAQmoB,WAAAA,GAAc,CAAC,EAAEhoB,WAAW,EAAEQ,QAAQ,EAAE,GAAG6F,IAAAA,EAAM,GAAGzG,KAAAA;AAEpE,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAAA,CAAU,GAAGC,cAAAA,CAASioB,WAAAA,CAAAA;IACrC,MAAMza,aAAAA,GAAgBjN,cAAAA,CAASkN,OAAO,CAAChN,QAAAA,CAAAA;AACvC,IAAA,MAAMynB,WAAW,EAAE;IAEnB,MAAMC,gBAAAA,GAAmB,CAACjoB,KAAAA,GAAkB,IAAA;YACxCH,SAAAA,CAAUG,KAAAA,CAAAA;YACVD,WAAAA,GAAcC,KAAAA,CAAAA;;YAEdgoB,QAAQ,CAAChoB,MAAM,EAAEmY,KAAAA,EAAAA;AACrB,QAAA,CAAA;IAEA,MAAM+P,YAAAA,GAAe,CAACloB,KAAAA,EAAekE,SAAAA,EAAoBjE,QAAAA,GAAAA;AACrD,QAAA,IAAIA,QAAAA,EAAU;AACV,YAAA,OAAOsC,WAAWM,QAAQ;QAC9B,CAAA,MAAO,IAAI7C,UAAUJ,MAAAA,EAAQ;AACzB,YAAA,OAAO2C,WAAWO,OAAO;AAC7B,QAAA,CAAA,MAAO,IAAIoB,SAAAA,EAAW;AAClB,YAAA,OAAO3B,WAAWG,OAAO;AAC7B,QAAA;AACA,QAAA,OAAOH,WAAWM,QAAQ;AAC9B,IAAA,CAAA;;IAGA,MAAMslB,aAAAA,GAAgB,CAACnoB,KAAAA,GAAkB,CAAC0H,CAAAA,GAAAA;AACtC,YAAA,IAAIA,EAAE1F,GAAG,KAAK,gBAAgB0F,CAAAA,CAAE1F,GAAG,KAAK,WAAA,EAAa;AACjD0F,gBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AAChB,gBAAA,MAAM2e,OAAO,CAACpoB,QAAQ,CAAA,IAAKsN,cAAcE,MAAM;gBAC/Cwa,QAAQ,CAACI,KAAK,EAAEjQ,KAAAA,EAAAA;YACpB,CAAA,MAAO,IAAIzQ,EAAE1F,GAAG,KAAK,eAAe0F,CAAAA,CAAE1F,GAAG,KAAK,SAAA,EAAW;AACrD0F,gBAAAA,CAAAA,CAAE+B,cAAc,EAAA;gBAChB,MAAM4e,IAAAA,GAAO,CAACroB,KAAAA,GAAQ,CAAA,GAAIsN,cAAcE,MAAK,IAAKF,aAAAA,CAAcE,MAAM;gBACtEwa,QAAQ,CAACK,KAAK,EAAElQ,KAAAA,EAAAA;AACpB,YAAA;AACJ,QAAA,CAAA;AAEA,IAAA,qBACIrX,eAAA,CAACqG,WAAAA,EAAAA;QAAUjE,GAAAA,EAAKA,GAAAA;AAAM,QAAA,GAAGkD,IAAI;;0BACzBtF,eAAA,CAACqB,MAAAA,EAAAA;gBAAO0D,IAAAA,EAAK,SAAA;gBAAUkC,YAAAA,EAAW,eAAA;;AAC7B1H,oBAAAA,cAAAA,CAASC,GAAG,CAACC,QAAAA,EAAU,CAACC,KAAAA,EAAOR,KAAAA,GAAAA;wBAC5B,IAAI,eAACS,oBAAAA,CAAeD,KAAAA,CAAAA,EAAQ,OAAO,IAAA;AACnC,wBAAA,MAAME,YAAAA,GAAeF,KAAAA;AAKrB,wBAAA,qBACIM,eAAA,CAAC6mB,YAAAA,EAAAA;AACGzkB,4BAAAA,GAAAA,EAAK,CAACkC,EAAAA,GAAAA;gCACF4iB,QAAQ,CAAChoB,MAAM,GAAGoF,EAAAA;AACtB,4BAAA,CAAA;AACAxF,4BAAAA,MAAAA,EAAQI,KAAAA,KAAUJ,MAAAA;4BAClB6C,IAAAA,EAAK,QAAA;4BACLoD,IAAAA,EAAK,KAAA;AACL2X,4BAAAA,eAAAA,EAAexd,KAAAA,KAAUJ,MAAAA;AACzB0oB,4BAAAA,eAAAA,EAAe,CAAC,CAAC5nB,YAAAA,CAAaf,KAAK,CAACM,QAAQ;4BAC5CmM,QAAAA,EAAUpM,KAAAA,KAAUJ,MAAAA,GAAS,CAAA,GAAI,EAAC;4BAClCK,QAAAA,EAAUS,YAAAA,CAAaf,KAAK,CAACM,QAAQ;AACrCsF,4BAAAA,OAAAA,EAAS0iB,gBAAAA,CAAiBjoB,KAAAA,CAAAA;AAC1B8H,4BAAAA,SAAAA,EAAWqgB,aAAAA,CAAcnoB,KAAAA,CAAAA;;8CAEzBG,cAAA,CAACgD,KAAAA,EAAAA;oCACGH,MAAM,EAAA,IAAA;AACNP,oCAAAA,IAAAA,EAAMylB,YAAAA,CACFloB,KAAAA,EACAU,YAAAA,CAAaf,KAAK,CAACuE,SAAS,IAAI,KAAA,EAChCxD,YAAAA,CAAaf,KAAK,CAACM,QAAQ,IAAI,KAAA;;8CAGvCE,cAAA,CAAC8B,QAAAA,EAAAA;8CAAUvB,YAAAA,CAAaf,KAAK,CAAC4oB;;;;AAG1C,oBAAA,CAAA,CAAA;kCACAznB,eAAA,CAAC+mB,YAAAA,EAAAA;;0CACG1nB,cAAA,CAACwR,MAAAA,EAAAA;AACIlR,gCAAAA,QAAAA,gBAAAA,oBAAAA,CAAe6M,aAAa,CAAC1N,MAAAA,CAAO,CAAA,GAC9B0N,aAAa,CAAC1N,MAAAA,CAAO,CAA2CD,KAAK,CACjE4oB,IAAI,GACT;;0CAEVznB,eAAA,CAACqC,KAAAA,EAAAA;gCAAMH,MAAM,EAAA,IAAA;AAACP,gCAAAA,IAAAA,EAAMF,WAAWO,OAAO;;oCACjClD,MAAAA,GAAS,CAAA;AAAE,oCAAA,MAAA;AAAKS,oCAAAA,cAAAA,CAASmoB,KAAK,CAACjoB,QAAAA;;;;;;;AAI3C+M,YAAAA,aAAa,CAAC1N,MAAAA;;;AAG3B;AAEA,MAAM6oB,OAAAA,iBAAUrlB,KAAAA,CAAMC,UAAU,CAACykB,gBAAAA;;AChMjC,MAAM3gB,SAAAA,iBAAYjF,MAAAA,CAAAA,KAAAA,EAAAA;;;;AAuBlB;;;;AAIC,IACD,SAASwmB,aAAAA,CAAc/oB,KAAyC,EAAEuD,GAA8B,EAAA;;IAE5F,MAAM,EAAEqlB,IAAI,EAAEtoB,QAAQ,EAAEiE,SAAS,EAAE,GAAGkC,IAAAA,EAAM,GAAGzG,KAAAA;AAC/C,IAAA,qBAAOQ,cAAA,CAACgH,SAAAA,EAAAA;AAAW,QAAA,GAAGf,IAAI;QAAElD,GAAAA,EAAKA;;AACrC;AAEA,MAAMW,IAAAA,iBAAOT,KAAAA,CAAMC,UAAU,CAACqlB,aAAAA;;AC1B9B,MAAMriB,MAAAA,iBAASnE,MAAAA,CAAAA,QAAAA,EAAAA;;;AAMM,CAAA,CAAA,CAAA,mHAAA,EAAA,CAACvC,KAAAA,GACdA,KAAAA,CAAMC,MAAM,GAAG,CAAC,UAAU,EAAEmC,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,CAAA,CAAG,GAAG,MAAA,EAAA,SAAA,EAC7D,CAACnD,KAAAA,GACNA,KAAAA,CAAMC,MAAM,GACNmC,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,GAChCf,aAAAA,CAAcF,UAAAA,CAAWkC,eAAe,CAAA,EAAA,mDAAA,EAK1BhC,aAAAA,CAAcF,UAAAA,CAAW+lB,eAAe,CAAA,EAAA,iBAAA,EAC3C,CAACjoB,KAAAA,GACdA,KAAAA,CAAMC,MAAM,GACN,CAAC,UAAU,EAAEmC,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,CAAA,CAAG,GAChD,CAAC,UAAU,EAAEf,aAAAA,CAAcF,UAAAA,CAAWiB,OAAO,CAAA,CAAA,CAAG,EAAA,iCAAA,EAItCf,aAAAA,CAAcF,UAAAA,CAAWqE,mBAAmB,CAAA,EAAA,SAAA,EACvDnE,aAAAA,CAAcF,UAAAA,CAAWgB,QAAQ,CAAA,EAAA,2BAAA,EACfd,aAAAA,CAAcF,WAAW2M,eAAe,CAAA,EAAA,IAAA,CAAA;AAI3E,MAAMma,eAAAA,iBAAkBzmB,MAAAA,CAAAA,KAAAA,EAAAA;;;AACOH,CAAAA,CAAAA,CAAAA,0BAAAA,EAAAA,aAAAA,CAAcF,WAAW2M,eAAe,CAAA,EAAA,uCAAA,CAAA;AAKvE,MAAMoa,OAAAA,iBAAU1mB,MAAAA,CAAAA,KAAAA,EAAAA;;;;AAgBhB;;;;AAIC,IACD,SAAS2mB,aAAAA,CAAclpB,KAAiB,EAAEuD,GAA8B,EAAA;AACpE,IAAA,MAAM,EAAEtD,MAAAA,EAAQmoB,WAAAA,GAAc,CAAC,EAAE3X,QAAQ,EAAE0Y,SAAS,EAAEvoB,QAAQ,EAAE,GAAG6F,MAAM,GAAGzG,KAAAA;AAC5E,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAAA,CAAU,GAAGC,cAAAA,CAASioB,WAAAA,CAAAA;AACrC,IAAA,MAAMgB,UAAU,EAAE;IAClB,MAAMzb,aAAAA,GAAgBjN,cAAAA,CAASkN,OAAO,CAAChN,QAAAA,CAAAA;IAEvC,MAAMyoB,SAAAA,GAAY,CAAChpB,KAAAA,GAAkB,IAAA;YACjCH,SAAAA,CAAUG,KAAAA,CAAAA;YACV+oB,OAAO,CAAC/oB,MAAM,EAAEmY,KAAAA,EAAAA;YAChB/H,QAAAA,GAAWpQ,KAAAA,CAAAA;AACf,QAAA,CAAA;;IAGA,MAAMipB,YAAAA,GAAe,CAACjpB,KAAAA,GAAkB,CAAC0H,CAAAA,GAAAA;AACrC,YAAA,IAAIA,EAAE1F,GAAG,KAAK,gBAAgB0F,CAAAA,CAAE1F,GAAG,KAAK,WAAA,EAAa;AACjD0F,gBAAAA,CAAAA,CAAE+B,cAAc,EAAA;AAChB,gBAAA,MAAM2e,OAAO,CAACpoB,QAAQ,CAAA,IAAKsN,cAAcE,MAAM;gBAC/Cub,OAAO,CAACX,KAAK,EAAEjQ,KAAAA,EAAAA;YACnB,CAAA,MAAO,IAAIzQ,EAAE1F,GAAG,KAAK,eAAe0F,CAAAA,CAAE1F,GAAG,KAAK,SAAA,EAAW;AACrD0F,gBAAAA,CAAAA,CAAE+B,cAAc,EAAA;gBAChB,MAAM4e,IAAAA,GAAO,CAACroB,KAAAA,GAAQ,CAAA,GAAIsN,cAAcE,MAAK,IAAKF,aAAAA,CAAcE,MAAM;gBACtEub,OAAO,CAACV,KAAK,EAAElQ,KAAAA,EAAAA;AACnB,YAAA;AACJ,QAAA,CAAA;IAEAhT,eAAAA,CAAU,IAAA;AACN,QAAA,IAAI4iB,gBAAgBvb,SAAAA,EAAW;YAC3B3M,SAAAA,CAAUkoB,WAAAA,CAAAA;YACV3X,QAAAA,GAAW2X,WAAAA,CAAAA;AACf,QAAA;IACJ,CAAA,EAAG;AAACA,QAAAA,WAAAA;AAAa3X,QAAAA;AAAS,KAAA,CAAA;;IAG1B,MAAM8Y,QAAAA,GAAW,CAACC,GAAAA,GAAgBA,GAAAA,CAAIxb,OAAO,CAAC,iBAAA,EAAmB,IAAIyb,WAAW,EAAA;AAChF,IAAA,MAAMC,MAAAA,GAAS/b,aAAAA,CAAchN,GAAG,CAAC,CAACE,KAAAA,EAAO8oB,CAAAA,GAAAA;AACrC,QAAA,MAAMf,qBACF9nB,oBAAAA,CAAeD,KAAAA,CAAAA,IAAU,KAACA,CAAgDb,KAAK,CAAC4oB,IAAI,GAC9E,KAAC/nB,CAAgDb,KAAK,CAAC4oB,IAAI,GAC3D,CAAC,GAAG,EAAEe,CAAAA,CAAAA,CAAG;QACnB,OAAO,CAAC,SAAS,EAAEJ,QAAAA,CAASX,QAAQ,EAAA,CAAA,CAAI,CAAC,EAAEe,CAAAA,CAAAA,CAAG;AAClD,IAAA,CAAA,CAAA;AACA,IAAA,MAAMC,QAAAA,GAAWjc,aAAAA,CAAchN,GAAG,CAAC,CAACE,KAAAA,EAAO8oB,CAAAA,GAAAA;AACvC,QAAA,MAAMf,qBACF9nB,oBAAAA,CAAeD,KAAAA,CAAAA,IAAU,KAACA,CAAgDb,KAAK,CAAC4oB,IAAI,GAC9E,KAAC/nB,CAAgDb,KAAK,CAAC4oB,IAAI,GAC3D,CAAC,GAAG,EAAEe,CAAAA,CAAAA,CAAG;QACnB,OAAO,CAAC,cAAc,EAAEJ,QAAAA,CAASX,QAAQ,EAAA,CAAA,CAAI,CAAC,EAAEe,CAAAA,CAAAA,CAAG;AACvD,IAAA,CAAA,CAAA;;AAGA,IAAA,IAAI1pB,WAAW4M,SAAAA,IAAa5M,MAAAA,GAAS,KAAKA,MAAAA,IAAU0N,aAAAA,CAAcE,MAAM,EAAE;QACtE,OAAO,IAAA;AACX,IAAA;IAEA,qBACI1M,eAAA,CAAAV,mBAAA,EAAA;;0BACID,cAAA,CAACwoB,eAAAA,EAAAA;gBAAgB9iB,IAAAA,EAAK,SAAA;gBAAUkC,YAAAA,EAAW,MAAA;gBAAO7E,GAAAA,EAAKA,GAAAA;AAAM,gBAAA,GAAGkD,IAAI;0BAC/DkH,aAAAA,CAAchN,GAAG,CAAC,CAACE,KAAAA,EAAOR,KAAAA,GAAAA;AACvB,oBAAA,MAAMU,YAAAA,GAAeF,KAAAA;AAIrB,oBAAA,qBACIL,cAAA,CAACkG,MAAAA,EAAAA;AAEGnD,wBAAAA,GAAAA,EAAK,CAACkC,EAAAA,GAAAA;4BACF2jB,OAAO,CAAC/oB,MAAM,GAAGoF,EAAAA;AACrB,wBAAA,CAAA;wBACAM,EAAAA,EAAI2jB,MAAM,CAACrpB,KAAAA,CAAM;wBACjByC,IAAAA,EAAK,QAAA;wBACLoD,IAAAA,EAAK,KAAA;AACL2X,wBAAAA,eAAAA,EAAe5d,MAAAA,KAAWI,KAAAA;wBAC1ByF,eAAAA,EAAe8jB,QAAQ,CAACvpB,KAAAA,CAAM;wBAC9BoM,QAAAA,EAAUxM,MAAAA,KAAWI,KAAAA,GAAQ,CAAA,GAAI,EAAC;AAClCJ,wBAAAA,MAAAA,EAAQA,MAAAA,KAAWI,KAAAA;AACnBuF,wBAAAA,OAAAA,EAASyjB,SAAAA,CAAUhpB,KAAAA,CAAAA;AACnB8H,wBAAAA,SAAAA,EAAWmhB,YAAAA,CAAajpB,KAAAA,CAAAA;AACxBC,wBAAAA,QAAAA,gBAAUQ,qBAAeD,KAAAA,CAAAA,GAASE,YAAAA,CAAaf,KAAK,CAACM,QAAQ,GAAG,KAAA;AAChEqoB,wBAAAA,eAAAA,gBACI7nB,qBAAeD,KAAAA,CAAAA,GAASE,YAAAA,CAAaf,KAAK,CAACM,QAAQ,GAAG,KAAA;AAGzDQ,wBAAAA,QAAAA,gBAAAA,qBAAeD,KAAAA,CAAAA,GAASE,YAAAA,CAAaf,KAAK,CAAC4oB,IAAI,GAAG;AAlB9Cc,qBAAAA,EAAAA,MAAM,CAACrpB,KAAAA,CAAM,CAAA;AAqB9B,gBAAA,CAAA;;0BAEJG,cAAA,CAACyoB,OAAAA,EAAAA;AACI,gBAAA,GAAGE,SAAS;gBACbpjB,EAAAA,EAAI6jB,QAAQ,CAAC3pB,MAAAA,CAAO;gBACpBiG,IAAAA,EAAK,UAAA;gBACLC,iBAAAA,EAAiBujB,MAAM,CAACzpB,MAAAA,CAAO;gBAC/BwM,QAAAA,EAAU,CAAA;AAETkB,gBAAAA,QAAAA,EAAAA,aAAa,CAAC1N,MAAAA;;;;AAI/B;AAEA,MAAM4pB,qBAAOnmB,gBAAAA,CAAWwlB,aAAAA;;AC5JxB,MAAMY,MAAM,CAAC9pB,KAAAA,GAAAA;IACT,MAAM,EAAEY,QAAQ,EAAE,GAAGZ,KAAAA;IACrB,qBAAOQ,cAAA,CAAAC,mBAAA,EAAA;AAAGG,QAAAA,QAAAA,EAAAA;;AACd;;ACDO,IAAA,UAAKmpB,iBAAAA,SAAAA,UAAAA,EAAAA;;;;;;AAAAA,IAAAA,OAAAA,UAAAA;AAMX,CAAA,CAAA,EAAA;AAED,MAAMC,qBAAqB,CAAClnB,IAAAA,GAAAA;IACxB,OAAQA,IAAAA;AACJ,QAAA,KAAA,MAAA;YACI,OAAOV,aAAAA,CAAcF,WAAWiiB,IAAI,CAAA;AACxC,QAAA,KAAA,SAAA;YACI,OAAO/hB,aAAAA,CAAcF,WAAWa,OAAO,CAAA;AAC3C,QAAA,KAAA,SAAA;YACI,OAAOX,aAAAA,CAAcF,WAAWc,OAAO,CAAA;AAC3C,QAAA,KAAA,QAAA;YACI,OAAOZ,aAAAA,CAAcF,WAAWe,KAAK,CAAA;AACzC,QAAA,KAAA,QAAA;YACI,OAAOb,aAAAA,CAAcF,WAAW+nB,KAAK,CAAA;AAC7C;AACJ,CAAA;AAEA,MAAMC,+BAAiB3nB,MAAAA,CAAO0B,IAAAA,EAAAA;;;AAIN,CAAA,CAAA,CAAA,wEAAA,EAAA,CAACjE,QAAUgqB,kBAAAA,CAAmBhqB,KAAAA,CAAM8C,IAAI,CAAA,EAAA,SAAA,EACnDV,aAAAA,CAAcF,WAAWkB,gBAAgB,CAAA,EAAA,qUAAA,CAAA;AA8BtD,MAAM+mB,aAAAA,iBAAgB5nB,MAAAA,CAAAA,KAAAA,EAAAA;;;;AAItB,MAAM6nB,cAAAA,iBAAiB7nB,MAAAA,CAAAA,QAAAA,EAAAA;;;AAEVH,CAAAA,CAAAA,CAAAA,qCAAAA,EAAAA,aAAAA,CAAcF,WAAWmC,aAAa,CAAA,EAAA,0IAAA,CAAA;AAYnD,MAAMqgB,gBAAAA,GAAmB,IAAA;AAEzB,MAAM2F,oBAAAA,GAAuB,CAACtkB,EAAAA,EAAYukB,QAAAA,GAAAA;IACtC,MAAMzD,MAAAA,GAAStc,QAAAA,CAASkL,aAAa,CAAC,KAAA,CAAA;AACtCoR,IAAAA,MAAAA,CAAO9gB,EAAE,GAAGA,EAAAA;IACZ8gB,MAAAA,CAAOpc,KAAK,CAACuB,QAAQ,GAAG,UAAA;IACxB6a,MAAAA,CAAOpc,KAAK,CAAClJ,KAAK,GAAG,KAAA;IACrBslB,MAAAA,CAAOpc,KAAK,CAACpJ,MAAM,GAAG,KAAA;IACtBwlB,MAAAA,CAAOpc,KAAK,CAAC8f,OAAO,GAAG,GAAA;IACvB1D,MAAAA,CAAOpc,KAAK,CAAC+f,MAAM,GAAG,MAAA;IACtB3D,MAAAA,CAAOpc,KAAK,CAACC,QAAQ,GAAG,QAAA;IACxBmc,MAAAA,CAAOpc,KAAK,CAACggB,IAAI,GAAG,kBAAA;IACpB5D,MAAAA,CAAOpc,KAAK,CAACigB,UAAU,GAAG,QAAA;IAC1B7D,MAAAA,CAAOpc,KAAK,CAACkgB,WAAW,GAAG,GAAA;AAC3B9D,IAAAA,MAAAA,CAAO9S,YAAY,CAAC,MAAA,EAAQuW,QAAAA,KAAa,cAAc,OAAA,GAAU,KAAA,CAAA;IACjEzD,MAAAA,CAAO9S,YAAY,CAAC,WAAA,EAAauW,QAAAA,CAAAA;IACjCzD,MAAAA,CAAO9S,YAAY,CAAC,aAAA,EAAe,MAAA,CAAA;IACnC,OAAO8S,MAAAA;AACX,CAAA;AAEA,MAAM+D,KAAAA,CAAAA;AAoJKzE,IAAAA,GAAAA,CAAIgB,OAAqB,EAAE;AAC9B,QAAA,IAAI,CAAC,IAAI,CAACxT,OAAO,EAAE;QAEnB,MAAM,EAAE3E,IAAI,EAAE8K,UAAU,EAAE0L,WAAW,EAAEhc,QAAQ,EAAE1G,IAAAA,GAAAA,QAAwB,EAAE,GAAGqkB,OAAAA;QAC9E,IAAI,CAAC0D,cAAc,GAAG1D,OAAAA;QACtB,IAAI,CAAC2D,QAAQ,GAAG,KAAA;AAChB,QAAA,IAAI,CAAC7E,MAAM,EAAA;;AAGX,QAAA,MAAMW,cAAc9jB,IAAAA,KAAAA,SAAAA,IAA+BA,IAAAA,KAAAA,QAAAA;;QAGnD,MAAM4K,YAAAA,GAAeoM,aAAa,CAAA,EAAG9K,IAAAA,CAAK,CAAC,EAAE8K,UAAAA,CAAW,iBAAiB,CAAC,GAAG9K,IAAAA;QAC7E,IAAI,CAACyX,gBAAgB,CAAC/Y,YAAAA,EAAckZ,WAAAA,CAAAA;AAEpC,QAAA,IAAI,CAACmE,KAAK,GAAGhY,cAAAA,CAAa8B,WAAW,CAAC;YAClCtC,SAAAA,EAAW,GAAA;YACXH,UAAAA,EAAY,KAAA;YACZI,mBAAAA,EAAqB,KAAA;YACrBC,WAAAA,EAAa,IAAA;AACbzG,YAAAA,QAAAA,EAAUkG,eAAekP,WAAW;YACpC9O,SAAAA,gBACI9R,cAAA,CAAAC,mBAAA,EAAA;AAEI,gBAAA,QAAA,gBAAAU,eAAA,CAAC+oB,cAAAA,EAAAA;AACI,oBAAA,GAAG/C,OAAO;oBACXrkB,IAAAA,EAAMA,IAAAA;oBACNe,QAAQ,EAAA,IAAA;oBACR4hB,YAAAA,EAAc,IAAI,CAACC,KAAK;oBACxBC,YAAAA,EAAc,IAAI,CAACC,MAAM,CAACuB,OAAAA,CAAAA;oBAC1BnhB,aAAAA,EAAY,MAAA;;sCAEZxF,cAAA,CAAC2pB,aAAAA,EAAAA;AAAenb,4BAAAA,QAAAA,EAAAA;;AACf8K,wBAAAA,UAAAA,kBACGtZ,cAAA,CAAC4pB,cAAAA,EAAAA;4BACGxkB,OAAAA,EAAS4f,WAAAA;4BACT1iB,IAAAA,EAAK,QAAA;4BACLsF,YAAAA,EAAY,CAAA,EAAG0R,UAAAA,CAAW,qDAAqD,CAAC;AAE/EA,4BAAAA,QAAAA,EAAAA;;;;;AAMzB,SAAA,CAAA;AACA,QAAA,MAAM5C,SAAAA,GAAY,IAAI,CAAC6T,KAAK,CAAC,CAAA,CAAE;AAC/B,QAAA,IAAI,CAAClS,IAAI,GAAG6O,iBAAAA,CAAW,IAAI,CAAC/T,OAAO,CAAA;AACnC,QAAA,IAAI,CAACkF,IAAI,CAACjB,MAAM,eAACpX,cAAA,CAAC0W,SAAAA,EAAAA,EAAAA,CAAAA,CAAAA;QAElB,IAAI,CAAC8T,OAAO,GAAG3gB,UAAAA,CAAW,IAAA;AACtB,YAAA,IAAI,CAAC4b,MAAM,EAAA;AACf,QAAA,CAAA,EAAGzc,QAAAA,IAAYkb,gBAAAA,CAAAA;AACnB,IAAA;IA9LA,WAAA,EAAc;aAHNoG,QAAAA,GAAoB,KAAA;aACpBD,cAAAA,GAAsC,IAAA;AAkB9C;;;AAGC,QAAA,IAAA,CACMzX,OAAAA,GAAU,IAAA;YACb,IAAI,OAAO7I,aAAa,WAAA,EAAa;AACjCA,gBAAAA,QAAAA,CAAS+I,mBAAmB,CAAC,SAAA,EAAW,IAAI,CAAC9H,aAAa,CAAA;AAC9D,YAAA;AACA,YAAA,IAAI,CAACya,MAAM,EAAA;AACX,YAAA,IAAI,IAAI,CAACgF,iBAAiB,IAAI1gB,QAAAA,CAASC,IAAI,CAACkJ,QAAQ,CAAC,IAAI,CAACuX,iBAAiB,CAAA,EAAG;AAC1E1gB,gBAAAA,QAAAA,CAASC,IAAI,CAACoJ,WAAW,CAAC,IAAI,CAACqX,iBAAiB,CAAA;AACpD,YAAA;YACA,IAAI,CAACC,YAAY,GAAGre,SAAAA;YACpB,IAAI,CAACse,eAAe,GAAGte,SAAAA;YACvB,IAAI,CAACoe,iBAAiB,GAAGpe,SAAAA;AAC7B,QAAA,CAAA;AAEA;;AAEC,QAAA,IAAA,CACOue,sBAAAA,GAAyB,IAAA;YAC7B,IAAI,OAAO7gB,aAAa,WAAA,EAAa;AACjCA,gBAAAA,QAAAA,CAASwM,gBAAgB,CAAC,SAAA,EAAW,IAAI,CAACvL,aAAa,CAAA;AAC3D,YAAA;AACJ,QAAA,CAAA;AAEA;;AAEC,QAAA,IAAA,CACOA,gBAAgB,CAAC6f,KAAAA,GAAAA;AACrB,YAAA,IAAI,CAAC,IAAI,CAACN,KAAK,EAAE;;YAGjB,IAAIM,KAAAA,CAAMhpB,GAAG,KAAK,QAAA,EAAU;AACxB,gBAAA,IAAI,CAAC4jB,MAAM,EAAA;YACf,CAAA,MAEK,IAAIoF,MAAMhpB,GAAG,KAAK,OAAO,IAAI,CAACwoB,cAAc,EAAE;AAC/CQ,gBAAAA,KAAAA,CAAMvhB,cAAc,EAAA;gBACpB,IAAI,IAAI,CAACghB,QAAQ,EAAE;AACf,oBAAA,IAAI,CAACQ,aAAa,EAAA;gBACtB,CAAA,MAAO;AACH,oBAAA,IAAI,CAACC,YAAY,EAAA;AACrB,gBAAA;AACJ,YAAA;AACJ,QAAA,CAAA;AAEA;;QAEC,IAAA,CACO9E,gBAAAA,GAAmB,CAACE,OAAAA,EAAiBC,WAAAA,GAAAA;YACzC,MAAMC,MAAAA,GAASD,cAAc,IAAI,CAACuE,eAAe,GAAG,IAAI,CAACD,YAAY;AAErE,YAAA,IAAIrE,MAAAA,EAAQ;AACRA,gBAAAA,MAAAA,CAAOC,WAAW,GAAG,EAAA;;gBAErBzc,UAAAA,CAAW,IAAA;AACP,oBAAA,IAAIwc,MAAAA,EAAQ;AACRA,wBAAAA,MAAAA,CAAOC,WAAW,GAAGH,OAAAA;AACzB,oBAAA;gBACJ,CAAA,EAAG,GAAA,CAAA;AACP,YAAA;AACJ,QAAA,CAAA;aAEOV,MAAAA,GAAS,IAAA;YACZ,IAAI,IAAI,CAAC8E,KAAK,EAAE;gBACZ,IAAI,CAACA,KAAK,CAAC,CAAA,CAAE,EAAA;gBACb,IAAI,IAAI,CAACC,OAAO,EAAE;oBACd5gB,YAAAA,CAAa,IAAI,CAAC4gB,OAAO,CAAA;oBACzB,IAAI,CAACA,OAAO,GAAGne,SAAAA;AACnB,gBAAA;AACJ,YAAA;YACA,IAAI,CAACke,KAAK,GAAGle,SAAAA;YACb,IAAI,CAACge,cAAc,GAAG,IAAA;YACtB,IAAI,CAACC,QAAQ,GAAG,KAAA;YAEhBzgB,UAAAA,CAAW,IAAA;gBACP,IAAI,CAAC,IAAI,CAAC0gB,KAAK,IAAI,IAAI,CAAClS,IAAI,EAAE;oBAC1B,IAAI,CAACA,IAAI,CAAChF,OAAO,EAAA;oBACjB,IAAI,CAACgF,IAAI,GAAGhM,SAAAA;AAChB,gBAAA;YACJ,CAAA,EAAG,GAAA,CAAA;AACP,QAAA,CAAA;AAEA;;AAEC,QAAA,IAAA,CACO0e,YAAAA,GAAe,IAAA;YACnB,IAAI,IAAI,CAACP,OAAO,EAAE;gBACd5gB,YAAAA,CAAa,IAAI,CAAC4gB,OAAO,CAAA;gBACzB,IAAI,CAACF,QAAQ,GAAG,IAAA;AACpB,YAAA;AACJ,QAAA,CAAA;AAEA;;AAEC,QAAA,IAAA,CACOQ,aAAAA,GAAgB,IAAA;AACpB,YAAA,IAAI,IAAI,CAACT,cAAc,IAAI,IAAI,CAACC,QAAQ,EAAE;gBACtC,IAAI,CAACE,OAAO,GAAG3gB,UAAAA,CAAW,IAAA;AACtB,oBAAA,IAAI,CAAC4b,MAAM,EAAA;AACf,gBAAA,CAAA,EAAG,IAAI,CAAC4E,cAAc,CAACrhB,QAAQ,IAAIkb,gBAAAA,CAAAA;gBACnC,IAAI,CAACoG,QAAQ,GAAG,KAAA;AACpB,YAAA;AACJ,QAAA,CAAA;AAEA;;AAEC,QAAA,IAAA,CACMpF,KAAAA,GAAQ,IAAA;AACX,YAAA,IAAI,CAAC6F,YAAY,EAAA;AACrB,QAAA,CAAA;AAEA;;QAEC,IAAA,CACM3F,MAAAA,GAAS,CAACuB,OAAAA,GAA0B,IAAA;gBACvC,IAAI,CAAC0D,cAAc,GAAG1D,OAAAA;AACtB,gBAAA,IAAI,CAACmE,aAAa,EAAA;AACtB,YAAA,CAAA;QAtII,IAAI,OAAO/gB,aAAa,WAAA,EAAa;AAErC,QAAA,IAAI,CAACoJ,OAAO,GAAGpJ,QAAAA,EAAUkL,aAAAA,CAAc,KAAA,CAAA;AACvC,QAAA,IAAI,CAACwV,iBAAiB,GAAG1gB,QAAAA,EAAUkL,aAAAA,CAAc,KAAA,CAAA;AACjD,QAAA,IAAI,CAACwV,iBAAiB,CAACllB,EAAE,GAAG,oBAAA;AAC5BwE,QAAAA,QAAAA,CAASC,IAAI,CAACkL,WAAW,CAAC,IAAI,CAACuV,iBAAiB,CAAA;AAEhD,QAAA,IAAI,CAACC,YAAY,GAAGb,oBAAAA,CAAqB,wBAAA,EAA0B,QAAA,CAAA;AACnE,QAAA,IAAI,CAACc,eAAe,GAAGd,oBAAAA,CAAqB,2BAAA,EAA6B,WAAA,CAAA;AACzE,QAAA,IAAI,CAACY,iBAAiB,CAACvV,WAAW,CAAC,IAAI,CAACwV,YAAY,CAAA;AACpD,QAAA,IAAI,CAACD,iBAAiB,CAACvV,WAAW,CAAC,IAAI,CAACyV,eAAe,CAAA;AAEvD,QAAA,IAAI,CAACC,sBAAsB,EAAA;AAC/B,IAAA;AAiLJ;AAEA,oBAAe,IAAIR,KAAAA,EAAAA;;ACtTZ,IAAA,gBAAKY,iBAAAA,SAAAA,gBAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,gBAAAA;AAKX,CAAA,CAAA,EAAA;AAED,MAAMrJ,aAAAA,GAAgB;AAClB,IAAA,CAAA,MAAA,GAAyB;;;IAGzB,CAAC;AACD,IAAA,CAAA,OAAA,GAA0B;;;IAG1B,CAAC;AACD,IAAA,CAAA,KAAA,GAAwB;;;IAGxB,CAAC;AACD,IAAA,CAAA,QAAA,GAA2B;;;IAG3B;AACJ,CAAA;AAEA,MAAMsJ,kBAAAA,GAAqB;AACvB,IAAA,CAAA,MAAA,GAAyB;;IAEzB,CAAC;AACD,IAAA,CAAA,OAAA,GAA0B;;IAE1B,CAAC;AACD,IAAA,CAAA,KAAA,GAAwB;;IAExB,CAAC;AACD,IAAA,CAAA,QAAA,GAA2B;;IAE3B;AACJ,CAAA;AAEA,MAAMC,UAAAA,iBAAanpB,MAAAA,CAAAA,KAAAA,EAAAA;;;AAEKH,CAAAA,CAAAA,CAAAA,qCAAAA,EAAAA,aAAAA,CAAcF,UAAAA,CAAWypB,aAAa,CAAA,EAAA,qBAAA,EAEjDvpB,aAAAA,CAAcF,UAAAA,CAAWkB,gBAAgB,CAAA,EAAA,6EAAA,EAKhD,CAACpD,KAAAA,GAAUmiB,aAAa,CAACniB,KAAAA,CAAMgM,QAAQ,CAAC,CAAA;AAG9C,MAAM4f,gBAAAA,iBAAmBrpB,MAAAA,CAAAA,KAAAA,EAAAA;;;AAMXmpB,CAAAA,CAAAA,CAAAA,0FAAAA,EAAAA,UAAAA,EAAAA,kBAAAA,EAA8BA,iBAClC,CAAC1rB,KAAAA,GAAUyrB,kBAAkB,CAACzrB,KAAAA,CAAMgM,QAAQ,CAAC,EAAA,GAAA,CAAA;AAevD;;;;AAIC,IACD,SAAS6f,gBAAAA,CAAiB7rB,KAAmB,EAAEuD,GAA8B,EAAA;AACzE,IAAA,MAAM,EAAE3C,QAAQ,EAAEoL,mBAAkC,EAAE,GAAGvF,MAAM,GAAGzG,KAAAA;AAClE,IAAA,MAAM8rB,SAAAA,GAAY1mB,WAAAA,EAAAA;;IAGlB,MAAM2mB,OAAAA,iBAAUtoB,MAAM3C,cAAc,CAACF,0BAC/B6C,KAAAA,CAAMzC,YAAY,CACdJ,QAAAA,EACA;QACI,kBAAA,EAAoBkrB,SAAAA;AACpBrf,QAAAA,QAAAA,EACI,QACI7L,CAIFZ,KAAK,IACP,OAAO,QACHY,CAIFZ,KAAK,CAACyM,QAAQ,KAAK,WAAA,GAEX7L,SAIFZ,KAAK,CAACyM,QAAQ,GAChB;KACd,CAAA,GAEJ7L,QAAAA;AAEN,IAAA,qBACIO,eAAA,CAACyqB,gBAAAA,EAAAA;AAAkB,QAAA,GAAGnlB,IAAI;QAAElD,GAAAA,EAAKA,GAAAA;QAAKyI,QAAAA,EAAUA,QAAAA;;AAC3C+f,YAAAA,OAAAA;0BACDvrB,cAAA,CAACkrB,UAAAA,EAAAA;gBAAW3lB,EAAAA,EAAI+lB,SAAAA;gBAAW9lB,aAAAA,EAAY,MAAA;gBAAOE,IAAAA,EAAK,SAAA;gBAAU8F,QAAAA,EAAUA,QAAAA;AAClEvF,gBAAAA,QAAAA,EAAAA,IAAAA,CAAKulB;;;;AAItB;AAEA,MAAMC,OAAAA,iBAAUxoB,KAAAA,CAAMC,UAAU,CAA+BmoB,gBAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/Accordion/Accordion.tsx","../src/icons/CheckCircle.tsx","../src/icons/ExpandMore.tsx","../src/icons/FiberManualRecord.tsx","../src/icons/Close.tsx","../src/icons/Info.tsx","../src/icons/ReportProblem.tsx","../src/icons/ErrorOutline.tsx","../src/icons/DragIndicator.tsx","../src/shared/constants.ts","../src/shared/styles.ts","../src/components/Badge/Badge.tsx","../src/components/Card/Card.tsx","../src/components/Accordion/AccordionStep.tsx","../src/components/Button/Button.tsx","../src/components/Button/LinkButton.tsx","../src/components/Button/RaisedButton.tsx","../src/components/Button/ActionButton.tsx","../src/components/Button/IconButton.tsx","../src/components/Chip/Chip.tsx","../src/components/DragAndDrop/types.ts","../src/components/DragAndDrop/DragItem.tsx","../src/components/DragAndDrop/DragAndDrop.tsx","../src/components/ChipInput/ChipInput.tsx","../src/shared/LayerManager.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Dialog/AlertDialog.tsx","../src/components/Dialog/ConfirmDialog.tsx","../src/components/Input/Input.tsx","../src/components/Input/TextArea.tsx","../src/components/Input/Select.tsx","../src/components/Input/Checkbox.tsx","../src/components/Input/Toggle.tsx","../src/components/Input/Radio.tsx","../src/components/Input/RadioButton.tsx","../src/components/Menu/MenuContext.ts","../src/components/Menu/Menu.tsx","../src/components/Menu/MenuItem.tsx","../src/components/Popover/Popover.tsx","../src/components/Input/Dropdown.tsx","../src/components/Dialog/PromptDialog.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Groups/Group.tsx","../src/components/Groups/GroupLabel.tsx","../src/components/Modal/Modal.tsx","../src/components/Notification/types.ts","../src/components/Notification/style.ts","../src/components/Notification/NotificationManager.tsx","../src/components/Notification/Notification.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Stepper/Step.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tab.tsx","../src/components/Toast/Toast.tsx","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import {\n useState,\n Children,\n cloneElement,\n PropsWithChildren,\n isValidElement,\n useEffect,\n useRef,\n} from 'react';\n\nfunction Accordion(props: PropsWithChildren<AccordionProps>) {\n const [active, setActive] = useState(props.active);\n const prevActive = useRef(props.active);\n\n useEffect(() => {\n if (props.active !== undefined && props.active !== prevActive.current) {\n setActive(props.active);\n prevActive.current = props.active;\n }\n }, [props.active]);\n\n const onStepClick = (index: number, disabled: boolean) => () => {\n if (disabled) {\n return;\n }\n\n const newIndex = index !== active ? index : -1;\n if (props.onStepClick) {\n props.onStepClick(newIndex);\n } else {\n setActive(newIndex);\n }\n };\n\n return (\n <>\n {Children.map(props.children, (child, index) => {\n if (!isValidElement(child)) {\n return child;\n }\n const reactElement = child as React.ReactElement<{\n disabled?: boolean;\n open?: boolean;\n onStepClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n }>;\n return cloneElement(reactElement, {\n open: active === index,\n onStepClick: onStepClick(index, reactElement.props.disabled || false),\n });\n })}\n </>\n );\n}\n\ntype AccordionProps = {\n /**\n * Currently opened step\n * @default -1\n */\n active?: number;\n /** Handler for click event on a step */\n onStepClick?: (index: number) => void;\n};\n\nexport default Accordion;\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M16.59 7.58L10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" />\n </svg>\n );\n}\n","export default function ExpandMore(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg viewBox=\"0 0 24 24\" width=\"18px\" height=\"18px\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\" />\n </svg>\n );\n}\n","export default function FiberManualRecord(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M24 24H0V0h24v24z\" fill=\"none\" />\n <circle cx=\"12\" cy=\"12\" r=\"8\" />\n </svg>\n );\n}\n","export default function Close(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </svg>\n );\n}\n","export enum THEME_CONSTANTS {\n PRIMARY = '#1f7ac5',\n PRIMARY_LIGHT = '#64baff',\n PRIMARY_LIGHTER = '#cfe9ff',\n BACKDROP_COLOR = '#2681da80',\n INFO = '#1f7ac5ff',\n INFO_LIGHT = '#64baffff',\n SUCCESS = '#1a835f',\n SUCCESS_LIGHT = '#80eac6',\n WARNING = '#916b01',\n WARNING_LIGHT = '#ffba00',\n ERROR = '#bb2828',\n ERROR_LIGHT = '#f1a5a5',\n BORDER_COLOR = '#555555',\n TOAST = '#5f5f5f',\n TOOLTIP_COLOR = 'rgba(0,0,0,0.6)',\n BORDER_LIGHT_COLOR = '#eeeeee',\n BACKGROUND = '#ffffff',\n DISABLED_BACKGROUND = '#fafafa',\n DISABLED_BORDER = '#aaa',\n LIGHT_GREY = '#ccc',\n DISABLED = '#737373',\n TEXT_COLOR_LIGHT = '#fff',\n TEXT_COLOR_DARK = '#000',\n SHADOW = '0px 1px 3px 0px rgba(0,0,0,0.1), 0px 1px 2px 0px rgba(0,0,0,0.06)',\n HOVER_SHADOW = '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n MODAL_SHADOW = '0px 8px 17px 2px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12), 0px 5px 5px -3px rgba(0,0,0,0.2)',\n}\n\nexport enum THEME_NAME {\n PRIMARY = '--nfui-primary',\n PRIMARY_LIGHT = '--nfui-primary-light',\n PRIMARY_LIGHTER = '--nfui-primary-lighter',\n INFO = '--nfui-info',\n INFO_LIGHT = '--nfui-info-light',\n SUCCESS = '--nfui-success',\n SUCCESS_LIGHT = '--nfui-success-light',\n WARNING = '--nfui-warning',\n WARNING_LIGHT = '--nfui-warning-light',\n ERROR = '--nfui-error',\n ERROR_LIGHT = '--nfui-error-light',\n BORDER_COLOR = '--nfui-border-color',\n TOAST = '--nfui-toast',\n TOOLTIP_COLOR = '--nfui-tooltip-color',\n BORDER_LIGHT_COLOR = '--nfui-border-light-color',\n BACKGROUND = '--nfui-background',\n DISABLED_BACKGROUND = '--nfui-disabled-background',\n DISABLED_BORDER = '--nfui-disabled-border',\n LIGHT_GREY = '--nfui-light-grey',\n DISABLED = '--nfui-disabled',\n TEXT_COLOR_LIGHT = '--nfui-text-color-light',\n TEXT_COLOR_DARK = '--nfui-text-color-dark',\n SHADOW = '--nfui-shadow',\n HOVER_SHADOW = '--nfui-hover-shadow',\n MODAL_SHADOW = '--nfui-modal-shadow',\n BACKDROP_COLOR = '--nfui-backdrop-color',\n}\n\nexport const themeNameMap: Record<THEME_NAME, THEME_CONSTANTS> = {\n [THEME_NAME.PRIMARY]: THEME_CONSTANTS.PRIMARY,\n [THEME_NAME.PRIMARY_LIGHT]: THEME_CONSTANTS.PRIMARY_LIGHT,\n [THEME_NAME.PRIMARY_LIGHTER]: THEME_CONSTANTS.PRIMARY_LIGHTER,\n [THEME_NAME.INFO]: THEME_CONSTANTS.INFO,\n [THEME_NAME.INFO_LIGHT]: THEME_CONSTANTS.INFO_LIGHT,\n [THEME_NAME.SUCCESS]: THEME_CONSTANTS.SUCCESS,\n [THEME_NAME.SUCCESS_LIGHT]: THEME_CONSTANTS.SUCCESS_LIGHT,\n [THEME_NAME.WARNING]: THEME_CONSTANTS.WARNING,\n [THEME_NAME.WARNING_LIGHT]: THEME_CONSTANTS.WARNING_LIGHT,\n [THEME_NAME.ERROR]: THEME_CONSTANTS.ERROR,\n [THEME_NAME.ERROR_LIGHT]: THEME_CONSTANTS.ERROR_LIGHT,\n [THEME_NAME.BACKDROP_COLOR]: THEME_CONSTANTS.BACKDROP_COLOR,\n [THEME_NAME.BORDER_COLOR]: THEME_CONSTANTS.BORDER_COLOR,\n [THEME_NAME.TOAST]: THEME_CONSTANTS.TOAST,\n [THEME_NAME.TOOLTIP_COLOR]: THEME_CONSTANTS.TOOLTIP_COLOR,\n [THEME_NAME.BORDER_LIGHT_COLOR]: THEME_CONSTANTS.BORDER_LIGHT_COLOR,\n [THEME_NAME.BACKGROUND]: THEME_CONSTANTS.BACKGROUND,\n [THEME_NAME.DISABLED_BACKGROUND]: THEME_CONSTANTS.DISABLED_BACKGROUND,\n [THEME_NAME.DISABLED_BORDER]: THEME_CONSTANTS.DISABLED_BORDER,\n [THEME_NAME.LIGHT_GREY]: THEME_CONSTANTS.LIGHT_GREY,\n [THEME_NAME.DISABLED]: THEME_CONSTANTS.DISABLED,\n [THEME_NAME.TEXT_COLOR_LIGHT]: THEME_CONSTANTS.TEXT_COLOR_LIGHT,\n [THEME_NAME.TEXT_COLOR_DARK]: THEME_CONSTANTS.TEXT_COLOR_DARK,\n [THEME_NAME.SHADOW]: THEME_CONSTANTS.SHADOW,\n [THEME_NAME.HOVER_SHADOW]: THEME_CONSTANTS.HOVER_SHADOW,\n [THEME_NAME.MODAL_SHADOW]: THEME_CONSTANTS.MODAL_SHADOW,\n};\n\nexport const getThemeValue = (key: THEME_NAME) => {\n return `var(${key}, ${themeNameMap[key]})`;\n};\n","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from './constants';\n\nexport const Ellipsis = styled.span`\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1;\n`;\n\nexport const Header = styled.div`\n padding: 10px 15px;\n line-height: 26px;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n font-size: 16px;\n font-weight: bold;\n`;\n\nexport const Body = styled.div`\n padding: 0 15px;\n margin: 20px 0;\n flex: 1;\n overflow: visible;\n`;\n\nexport const Footer = styled.div`\n padding: 10px 15px;\n border-top: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n display: flex;\n justify-content: flex-end;\n`;\n\nexport const ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n`;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\nexport enum BADGE_TYPE {\n PRIMARY = 'primary',\n SUCCESS = 'success',\n WARNING = 'warning',\n DANGER = 'danger',\n DISABLED = 'disabled',\n}\n\nconst BadgeSpan = styled.span<BadgeProps>`\n background-color: ${(props) => {\n switch (props.type) {\n case BADGE_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS);\n\n case BADGE_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING);\n\n case BADGE_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR);\n\n case BADGE_TYPE.DISABLED:\n return getThemeValue(THEME_NAME.DISABLED);\n\n default:\n return getThemeValue(THEME_NAME.PRIMARY);\n }\n }};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-radius: 10px;\n padding: ${(props) => (props.children ? '3px 10px' : '4px')};\n display: inline-block;\n min-height: 4px;\n min-width: 4px;\n font-size: 12px;\n margin: ${(props) => (props.inline ? '0 5px' : '0')};\n\n ${(props) =>\n !props.inline && 'position: absolute; top: 0; right: 0; transform: translate(50%, -50%);'};\n`;\n\ntype BadgeProps = {\n /**\n * Display badge inline or overlay on parent component\n * @default false\n */\n inline?: boolean;\n /** Type of badge\n * @default BADGE_TYPE.PRIMARY\n */\n type?: BADGE_TYPE;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\n/**\n * Badge Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLSpanElement\n */\nfunction BadgeComponent(props: BadgeProps, ref: React.Ref<HTMLSpanElement>) {\n return <BadgeSpan {...props} ref={ref} />;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, React.PropsWithChildren<BadgeProps>>(\n BadgeComponent,\n);\n\nexport default Badge;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\ntype CardProps = {\n /** Shows a shadow around the card to show elevation */\n elevated?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst StyledCard = styled.div<CardProps>`\n border-radius: 10px;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n ${(props) =>\n props.elevated\n ? `box-shadow: ${getThemeValue(THEME_NAME.MODAL_SHADOW)};`\n : `box-shadow: ${getThemeValue(THEME_NAME.SHADOW)};`}\n margin: 5px;\n overflow: auto;\n position: relative;\n`;\n\n/**\n * Card Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLAr\n */\nfunction CardComponent(props: CardProps, ref: React.Ref<HTMLDivElement>) {\n return <StyledCard {...props} ref={ref} />;\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(CardComponent);\nexport default Card;\n","import React, { useState, useId, useRef, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport { FiberManualRecord, ExpandMore } from '../../icons';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\nimport { Ellipsis } from '../../shared/styles';\nimport { Badge, BADGE_TYPE } from '../Badge';\nimport { Card } from '../Card';\n\nconst Step = styled(Card)<{ open?: boolean; completed?: boolean }>`\n transition: all 0.6s ease;\n overflow: visible;\n\n ${(props) => props.open && `margin: 20px 5px;`}\n`;\n\nconst StepHeader = styled.button<{ open?: boolean; disabled?: boolean }>`\n padding: 20px 15px;\n display: flex;\n justify-content: space-between;\n background: none;\n border: none;\n border-radius: 10px;\n width: 100%;\n font-size: inherit;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:focus-visible {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n & input {\n appearance: none;\n margin: 0;\n }\n\n ${(props) =>\n props.open && `border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};`}\n ${(props) => props.open && `border-radius: 10px 10px 0 0;`}\n\n ${(props) => props.disabled && `color: ${getThemeValue(THEME_NAME.DISABLED)};`}\n`;\n\nconst HeaderContainer = styled.div<{ open?: boolean; completed?: boolean }>`\n display: flex;\n align-items: center;\n min-width: 40px;\n\n & svg {\n vertical-align: top;\n margin-right: 10px;\n fill: ${(props) =>\n props.open\n ? getThemeValue(THEME_NAME.PRIMARY)\n : props.completed\n ? getThemeValue(THEME_NAME.SUCCESS)\n : getThemeValue(THEME_NAME.LIGHT_GREY)};\n transform: ${(props) => (props.open ? 'scale(0.8)' : 'scale(0.6)')};\n transition: all 0.3s ease;\n min-width: 24px;\n }\n`;\n\nconst ExpandContainer = styled.div<{ open?: boolean }>`\n display: flex;\n align-items: center;\n\n & svg {\n vertical-align: top;\n margin-right: 10px;\n transition: all 0.6s ease;\n fill: currentColor;\n }\n\n ${(props) => (props.open ? `& svg { transform: rotate(180deg); }` : '')}\n`;\n\nconst StepBody = styled.div<{ height: number }>`\n transition: all 0.6s ease;\n overflow: hidden;\n height: ${(props) => props.height || 0}px;\n`;\n\nconst AccordionBadge = styled(Badge)`\n margin-right: 15px;\n`;\n\nexport const AccordionStepBody = styled.div`\n padding: 20px 15px;\n`;\n\nexport const AccordionStepFooter = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 10px 15px;\n border-top: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n`;\n\n/** Props for `AccordionStep` component */\ninterface AccordionStepProps {\n /**\n * If the step has been marked as completed\n * @default false\n */\n completed?: boolean;\n /** If the step is disabled\n * @default false\n */\n disabled?: boolean;\n /** Header content for the step */\n header: React.ReactNode;\n /** Error text to display as a badge in the header */\n errorText?: React.ReactNode;\n /** If the step is expanded */\n open?: boolean;\n /** Click handler for the step header */\n onStepClick?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\n/**\n * AccordionStep Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction AccordionStepComponent(\n props: React.PropsWithChildren<AccordionStepProps> & React.HTMLAttributes<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const [height, setHeight] = useState(0);\n const {\n open,\n disabled = false,\n header,\n errorText,\n completed = false,\n onStepClick,\n children,\n ...restProps\n } = props;\n\n // Generate unique IDs for ARIA relationships\n const headerId = useId();\n const regionId = useId();\n\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n // Measure content height when `open` or children change.\n useEffect(() => {\n const el = contentRef.current;\n setHeight(el?.scrollHeight || 0);\n }, [open, children]);\n\n return (\n <Step {...restProps} ref={ref} open={open} elevated={open} completed={completed}>\n <StepHeader\n open={open}\n disabled={disabled}\n onClick={onStepClick}\n aria-expanded={open ? 'true' : 'false'}\n aria-controls={regionId}\n id={headerId}\n >\n <HeaderContainer open={open} completed={completed}>\n <FiberManualRecord aria-hidden=\"true\" />\n <Ellipsis>{header}</Ellipsis>\n </HeaderContainer>\n <ExpandContainer open={open}>\n {errorText && (\n <AccordionBadge inline type={BADGE_TYPE.DANGER}>\n {errorText}\n </AccordionBadge>\n )}\n <ExpandMore aria-hidden=\"true\" />\n </ExpandContainer>\n </StepHeader>\n <StepBody\n ref={contentRef}\n height={open ? height : 0}\n role=\"region\"\n id={regionId}\n aria-labelledby={headerId}\n aria-hidden={open ? 'false' : 'true'}\n >\n {open && children}\n </StepBody>\n </Step>\n );\n}\n\nconst AccordionStep = React.forwardRef<\n HTMLDivElement,\n React.PropsWithChildren<AccordionStepProps> & React.HTMLAttributes<HTMLDivElement>\n>(AccordionStepComponent);\n\nexport default AccordionStep;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n margin-left: -6px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:focus {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:disabled {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n border-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype ButtonProps = {\n /**\n * Type of Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * Button Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nfunction ButtonComponent(props: ButtonProps, ref: React.Ref<HTMLButtonElement>) {\n const { type = 'button', ...rest } = props;\n\n return <StyledButton ref={ref} type={type} {...rest} />;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(ButtonComponent);\n\nexport default Button;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledLinkButton = styled.button`\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n height: 32px;\n cursor: pointer;\n background-color: transparent;\n border: none;\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n padding: 0 12px;\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n margin-left: -6px;\n }\n\n &:enabled:hover,\n &:focus {\n text-decoration: underline;\n }\n\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype LinkButtonProps = {\n /**\n * Type of Link Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * LinkButton Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nconst LinkButtonComponent = (props: LinkButtonProps, ref: React.Ref<HTMLButtonElement>) => {\n const { type = 'button', ...rest } = props;\n\n return <StyledLinkButton ref={ref} type={type} {...rest} />;\n};\n\nconst LinkButton = React.forwardRef<HTMLButtonElement, LinkButtonProps>(LinkButtonComponent);\nexport default LinkButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledRaisedButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n color: inherit;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transform: translateY(-2px);\n box-shadow: ${getThemeValue(THEME_NAME.HOVER_SHADOW)};\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n margin-left: -6px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:focus {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:disabled {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n border-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n &:active {\n transform: translateY(0);\n box-shadow: ${getThemeValue(THEME_NAME.SHADOW)};\n }\n`;\n\ntype RaisedButtonProps = {\n /**\n * Type of Raised Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * RaisedButton Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nconst RaisedButtonComponent = (props: RaisedButtonProps, ref: React.Ref<HTMLButtonElement>) => {\n const { type = 'button', ...rest } = props;\n\n return <StyledRaisedButton ref={ref} type={type} {...rest} />;\n};\n\nconst RaisedButton = React.forwardRef<HTMLButtonElement, RaisedButtonProps>(RaisedButtonComponent);\nexport default RaisedButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\nconst StyledActionButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.PRIMARY)};\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: pointer;\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n margin-left: -6px;\n }\n\n &:enabled:hover {\n box-shadow: ${getThemeValue(THEME_NAME.HOVER_SHADOW)};\n }\n\n &:focus {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:disabled {\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype ActionButtonProps = {\n /**\n * Type of Action Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * ActionButton Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nfunction ActionButtonComponent(props: ActionButtonProps, ref: React.Ref<HTMLButtonElement>) {\n const { type = 'button', ...rest } = props;\n\n return <StyledActionButton ref={ref} type={type} {...rest} />;\n}\n\nconst ActionButton = React.forwardRef<HTMLButtonElement, ActionButtonProps>(ActionButtonComponent);\n\nexport default ActionButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledIconButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 5px;\n height: 32px;\n font-size: 14px;\n text-align: center;\n padding: 0 3px;\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:focus {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:disabled {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n &:disabled > svg {\n fill: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype IconButtonProps = {\n /**\n * Type of Icon Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * IconButton Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nfunction IconButtonComponent(props: IconButtonProps, ref: React.Ref<HTMLButtonElement>) {\n const { type = 'button', ...rest } = props;\n\n return <StyledIconButton ref={ref} type={type} {...rest} />;\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(IconButtonComponent);\n\nexport default IconButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { Close } from '../../icons';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ninterface ChipProps {\n /** Label for the chip */\n label: string;\n /** Callback when the close button is clicked */\n onCloseClick?: (e: React.KeyboardEvent | React.MouseEvent) => void;\n /** Aria label for the close button. Defaults to \"Remove {label}\" */\n closeButtonAriaLabel?: string;\n}\n\nconst Container = styled.span`\n padding: 5px;\n padding-left: 15px;\n border-radius: 16px;\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n display: inline-flex;\n margin: 5px;\n line-height: 20px;\n align-items: center;\n`;\n\nconst Button = styled.button`\n color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED)};\n border-radius: 50%;\n border: none;\n padding: 4px;\n display: inline-flex;\n margin-left: 5px;\n\n &:focus-within {\n outline: 4px solid ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n`;\n\n/**\n * Chip Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLSpanElement\n */\nfunction ChipComponent(\n props: ChipProps & React.HTMLAttributes<HTMLSpanElement>,\n ref: React.Ref<HTMLSpanElement>,\n) {\n const { label, onCloseClick, closeButtonAriaLabel, ...rest } = props;\n\n const keyUpHandler: React.KeyboardEventHandler<HTMLSpanElement> = (e) => {\n if (e.key === 'Backspace' || e.key === 'Delete') {\n onCloseClick?.(e);\n }\n };\n\n const buttonKeyDownHandler: React.KeyboardEventHandler<HTMLButtonElement> = (e) => {\n // Stop propagation to prevent DragAndDrop from capturing Space/Enter\n if (e.key === ' ' || e.key === 'Spacebar' || e.key === 'Enter') {\n e.stopPropagation();\n }\n };\n\n return (\n <Container {...rest} ref={ref} onKeyUp={keyUpHandler}>\n {label}\n <Button\n onClick={onCloseClick}\n onKeyDown={buttonKeyDownHandler}\n aria-label={closeButtonAriaLabel ?? `Remove ${label}`}\n >\n <Close height={16} width={16} />\n </Button>\n </Container>\n );\n}\n\nconst Chip = React.forwardRef(ChipComponent);\nexport default Chip;\n","import { createContext } from 'react';\n\nexport enum ORIENTATION {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport const DragContext = createContext<{\n startIndex: number | null;\n setStartIndex: (value: number) => void;\n drop: (index: number | null) => void;\n onDrop: (start: number, end: number) => void;\n cancel: () => void;\n startGrab: (index: number) => void;\n isDragging: boolean;\n setIsDragging: (value: boolean) => void;\n setDragOver: (value: number) => void;\n i18n: {\n itemAriaLabelTemplate: string;\n dragHandleAriaLabel: string;\n grabbedAnnouncementTemplate: string;\n movedAnnouncementTemplate: string;\n droppedAnnouncementTemplate: string;\n cancelledAnnouncementTemplate: string;\n replacePlaceholders: (\n template: string,\n data: {\n position?: number;\n grabKey?: string;\n dropKey?: string;\n altDropKey?: string;\n cancelKey?: string;\n moveKeys?: string;\n },\n ) => string;\n };\n} | null>(null);\n","import {\n DragEventHandler,\n PropsWithChildren,\n useContext,\n useState,\n useEffect,\n TouchEventHandler,\n useRef,\n} from 'react';\nimport styled from '@emotion/styled';\nimport { DragIndicator } from '../../icons';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { ORIENTATION, DragContext } from './types';\n\ninterface DragItemProps {\n /** Position index of the draggable item */\n index: number;\n /** Orientation of the drag operation (VERTICAL or HORIZONTAL) */\n orientation: ORIENTATION;\n /** Whether to show a drag handle indicator instead of making the entire item draggable */\n showIndicator: boolean;\n /** The index of the item currently being dragged over */\n dragOver: number | null;\n /** Total number of items in the list */\n totalItems: number;\n /** Callback to set announcement for screen readers */\n setAnnouncement: (message?: string) => void;\n}\n\n/** Styled component for the draggable item container */\nconst Item = styled.div<{\n active: number | null;\n orientation: ORIENTATION;\n showIndicator: boolean;\n dragging: boolean;\n}>`\n cursor: ${(props) => (props.showIndicator ? 'default' : 'move')};\n display: flex;\n user-select: ${(props) => (props.showIndicator ? 'auto' : 'none')};\n border-top: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.VERTICAL && props.active !== null && props.active > 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-bottom: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.VERTICAL && props.active !== null && props.active < 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-left: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.HORIZONTAL &&\n props.active !== null &&\n props.active > 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-right: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.HORIZONTAL &&\n props.active !== null &&\n props.active < 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n opacity: ${(props) => (props.dragging ? 0.5 : 1)};\n border-radius: 10px;\n\n &:focus {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n\n &:focus-visible {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n`;\n\n/** Styled component for the drag handle indicator */\nconst DragKnob = styled.div`\n padding-top: 8px;\n cursor: move;\n touch-action: none;\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n`;\n\n/** Container for the children */\nconst Container = styled.div`\n flex: 1;\n`;\n\n/**\n * A draggable item component that supports both mouse and touch interactions for drag-and-drop functionality.\n *\n * @component\n * @example\n * ```tsx\n * <DragItem\n * index={0}\n * orientation={ORIENTATION.VERTICAL}\n * showIndicator={true}\n * dragOver={-1}\n * >\n * <div>Draggable content</div>\n * </DragItem>\n * ```\n *\n * @param props - The component props\n * @param props.index - The position index of this item in the draggable list\n * @param props.orientation - The orientation of the drag operation (VERTICAL or HORIZONTAL)\n * @param props.showIndicator - Whether to show a drag handle indicator instead of making the entire item draggable\n * @param props.dragOver - The index of the item currently being dragged over\n * @param props.children - The content to be rendered inside the draggable item\n *\n * @remarks\n * - Uses the DragContext to manage drag state across items\n * - Provides visual feedback with borders during drag operations\n * - Supports haptic feedback (vibration) on touch devices\n * - For touch devices, requires a 200ms hold before drag starts\n * - When showIndicator is true, only the drag handle can initiate drag operations\n *\n * @returns A draggable item with optional drag indicator and visual feedback\n */\nexport default function DragItem(props: PropsWithChildren<DragItemProps>) {\n const { index, orientation, children, showIndicator, dragOver, totalItems, setAnnouncement } =\n props;\n const [active, setActive] = useState<number | null>(0);\n const touchTimerRef = useRef<NodeJS.Timeout | null>(null);\n const context = useContext(DragContext);\n\n /**\n * Vibrate the device for haptic feedback\n * @param duration Duration of the vibration in milliseconds\n */\n const vibrate = (duration: number) => {\n if (navigator.vibrate) {\n navigator.vibrate(duration);\n }\n };\n\n /**\n * Drag start event handler\n * @param e Event\n */\n const dragStartHandler: DragEventHandler<HTMLDivElement> = () => {\n context?.setStartIndex(index);\n context?.setIsDragging(true);\n };\n\n /**\n * Drag over event handler\n * @param e Event\n */\n const dragOverHandler: DragEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (context && context.startIndex !== null) {\n setActive(context.startIndex - index);\n }\n };\n\n /**\n * Drag leave event handler\n */\n const dragExitHandler: DragEventHandler<HTMLDivElement> = () => {\n setActive(0);\n };\n\n /**\n * Drop event handler\n * @param e Event\n */\n const dropHandler: DragEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n setActive(0);\n context?.drop(index);\n context?.setIsDragging(false);\n };\n\n /**\n * Touch start event handler\n * @param e Event\n */\n const touchStartHandler: TouchEventHandler<HTMLDivElement> = () => {\n // Clear any existing timer first\n if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n }\n\n touchTimerRef.current = setTimeout(() => {\n context?.setStartIndex(index);\n context?.setIsDragging(true);\n context?.setDragOver(index);\n document.body.style.overflow = 'hidden';\n vibrate(50);\n }, 200);\n };\n\n /**\n * Touch move event handler\n * @param e Event\n * @returns void\n */\n const touchMoveHandler: TouchEventHandler<HTMLDivElement> = (e) => {\n const touch = e.touches[0];\n if (!touch) return;\n\n if (context?.isDragging) {\n e.preventDefault();\n\n // get the element under the touch point\n const el = document.elementFromPoint(\n touch.clientX,\n touch.clientY,\n ) as HTMLElement | null;\n const overAttr = el?.closest('[data-drag-index]')?.getAttribute('data-drag-index');\n const overIndex = overAttr != null ? parseInt(overAttr, 10) : null;\n\n // if we know which index we're over, update visual state\n if (overIndex !== null) {\n context?.setDragOver(overIndex);\n }\n } else if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n touchTimerRef.current = null;\n }\n };\n\n /**\n * Touch end event handler\n * @param e Event\n */\n const touchEndHandler: TouchEventHandler<HTMLDivElement> = () => {\n if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n touchTimerRef.current = null;\n }\n\n if (context?.isDragging) {\n context?.drop(dragOver);\n vibrate(50);\n context?.setIsDragging(false);\n document.body.style.overflow = 'auto';\n }\n };\n\n /**\n * Keyboard navigation handler for reordering items\n * @param e Keyboard event\n */\n const handleKeyDown = (e: React.KeyboardEvent) => {\n const isVertical = orientation === ORIENTATION.VERTICAL;\n const moveUp = isVertical ? 'ArrowUp' : 'ArrowLeft';\n const moveDown = isVertical ? 'ArrowDown' : 'ArrowRight';\n\n const isGrabbed = context?.isDragging && context?.startIndex === index;\n\n // Space to grab/drop\n if (e.key === ' ' || e.key === 'Spacebar') {\n e.preventDefault();\n if (isGrabbed) {\n // Drop at current position\n context?.drop(index);\n setAnnouncement(\n context?.i18n.replacePlaceholders(context?.i18n.droppedAnnouncementTemplate, {\n position: index + 1,\n }),\n );\n } else {\n // Grab item\n context?.startGrab(index);\n setAnnouncement(\n context?.i18n.replacePlaceholders(context?.i18n.grabbedAnnouncementTemplate, {\n position: index + 1,\n }),\n );\n }\n }\n // Enter to drop\n else if (e.key === 'Enter' && isGrabbed) {\n e.preventDefault();\n context?.drop(index);\n setAnnouncement(\n context?.i18n.replacePlaceholders(context?.i18n.droppedAnnouncementTemplate, {\n position: index + 1,\n }),\n );\n }\n // Escape to cancel\n else if (e.key === 'Escape' && isGrabbed) {\n e.preventDefault();\n context?.cancel();\n setAnnouncement(context?.i18n.cancelledAnnouncementTemplate);\n }\n // Arrow keys to move while grabbed\n else if (isGrabbed) {\n if (e.key === moveUp && index > 0 && context.startIndex !== null) {\n e.preventDefault();\n // Move without dropping - just reorder and update startIndex\n const newIndex = index - 1;\n context.onDrop(context.startIndex, newIndex);\n context.setStartIndex(newIndex);\n setAnnouncement(\n context.i18n.replacePlaceholders(context.i18n.movedAnnouncementTemplate, {\n position: newIndex + 1,\n }),\n );\n } else if (\n e.key === moveDown &&\n index < totalItems - 1 &&\n context.startIndex !== null\n ) {\n e.preventDefault();\n // Move without dropping - just reorder and update startIndex\n const newIndex = index + 1;\n context.onDrop(context.startIndex, newIndex);\n context.setStartIndex(newIndex);\n setAnnouncement(\n context.i18n.replacePlaceholders(context.i18n.movedAnnouncementTemplate, {\n position: newIndex + 1,\n }),\n );\n }\n }\n };\n\n /** Cleanup touch timer and body overflow on unmount */\n useEffect(() => {\n return () => {\n if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n touchTimerRef.current = null;\n }\n document.body.style.overflow = 'auto';\n };\n }, []);\n\n /** Update active state based on dragOver changes */\n useEffect(() => {\n if (context?.isDragging && context?.startIndex !== null && dragOver === index) {\n setActive(context?.startIndex - index);\n } else {\n setActive(0);\n }\n }, [dragOver, context?.startIndex, index, context?.isDragging]);\n\n return (\n <Item\n draggable={!showIndicator}\n showIndicator={showIndicator}\n active={active}\n dragging={!!(context?.isDragging && context.startIndex === index)}\n orientation={orientation}\n data-drag-index={index}\n tabIndex={0}\n role=\"listitem\"\n aria-label={context?.i18n.replacePlaceholders(context.i18n.itemAriaLabelTemplate, {\n position: index + 1,\n })}\n aria-grabbed={context?.isDragging && context.startIndex === index}\n onKeyDown={handleKeyDown}\n onDragStart={!showIndicator ? dragStartHandler : undefined}\n onDragOver={dragOverHandler}\n onDragLeave={dragExitHandler}\n onDrop={dropHandler}\n onTouchStart={!showIndicator ? touchStartHandler : undefined}\n onTouchMove={touchMoveHandler}\n onTouchEnd={touchEndHandler}\n onTouchCancel={touchEndHandler}\n >\n {showIndicator && (\n <DragKnob\n draggable\n role=\"button\"\n aria-label={context?.i18n.dragHandleAriaLabel}\n onDragStart={dragStartHandler}\n onTouchStart={touchStartHandler}\n onKeyDown={handleKeyDown}\n tabIndex={-1}\n >\n <DragIndicator />\n </DragKnob>\n )}\n <Container>{children}</Container>\n </Item>\n );\n}\n","import React, { PropsWithChildren, useState } from 'react';\nimport styled from '@emotion/styled';\nimport DragItem from './DragItem';\nimport { ORIENTATION, DragContext } from './types';\n\ntype DragAndDropProps = {\n /**\n * Orientation of the list layout\n * @default ORIENTATION.VERTICAL\n */\n orientation?: ORIENTATION;\n /** Drop event handler */\n onDrop: (start: number, end: number) => void;\n /** Shows drag indicator against each list item\n * @default false\n */\n showIndicator?: boolean;\n /**\n * i18n: Template for item aria-label. Placeholders: {:position}, {:grabKey}, {:moveKeys}, {:dropKey}, {:altDropKey}\n * @default 'Item {:position}. Press {:grabKey} to grab, {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop'\n */\n itemAriaLabelTemplate?: string;\n /** i18n: Aria label for drag handle\n * @default 'Drag to reorder'\n */\n dragHandleAriaLabel?: string;\n /**\n * i18n: Template for grabbed announcement. Placeholders: {:position}, {:moveKeys}, {:dropKey}, {:altDropKey}, {:cancelKey}\n * @default 'Item {:position} grabbed. Use {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop, {:cancelKey} to cancel'\n */\n grabbedAnnouncementTemplate?: string;\n /**\n * i18n: Template for moved announcement. Placeholders: {:position}\n * @default 'Item moved to position {:position}'\n */\n movedAnnouncementTemplate?: string;\n /**\n * i18n: Template for dropped announcement. Placeholders: {:position}\n * @default 'Item dropped at position {:position}'\n */\n droppedAnnouncementTemplate?: string;\n /**\n * i18n: Template for cancelled announcement\n * @default 'Drag cancelled, item restored to original position'\n */\n cancelledAnnouncementTemplate?: string;\n} & PropsWithChildren<unknown>;\n\n/** Container Component */\nconst Container = styled.div<{ orientation: ORIENTATION }>`\n flex: 1;\n display: flex;\n position: relative;\n flex-wrap: wrap;\n flex-direction: ${(props) => (props.orientation === ORIENTATION.HORIZONTAL ? 'row' : 'column')};\n`;\n\n/** Visually hidden but accessible to screen readers */\nconst VisuallyHidden = styled.div`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n`;\n\n/**\n * A drag and drop container component that enables reordering of child elements.\n *\n * @component\n * @example\n * ```tsx\n * <DragAndDrop\n * orientation={ORIENTATION.VERTICAL}\n * onDrop={(start, end) => handleReorder(start, end)}\n * showIndicator={true}\n * >\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * </DragAndDrop>\n * ```\n *\n * @param props - The component props\n * @param props.orientation - Determines the layout direction (horizontal or vertical). Defaults to VERTICAL.\n * @param props.onDrop - Callback fired when an item is dropped, receives the start and end indices\n * @param props.showIndicator - Whether to display drag indicators for each list item. Defaults to false.\n * @param props.children - Child elements to be rendered as draggable items\n *\n * @returns A draggable container with reorderable items\n */\n/**\n * DragAndDrop Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction DragAndDropComponent(props: DragAndDropProps, ref: React.Ref<HTMLDivElement>) {\n const {\n orientation = ORIENTATION.VERTICAL,\n children,\n onDrop,\n showIndicator = false,\n itemAriaLabelTemplate = 'Item {:position}. Press {:grabKey} to grab, {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop',\n dragHandleAriaLabel = 'Drag to reorder',\n grabbedAnnouncementTemplate = 'Item {:position} grabbed. Use {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop, {:cancelKey} to cancel',\n movedAnnouncementTemplate = 'Item moved to position {:position}',\n droppedAnnouncementTemplate = 'Item dropped at position {:position}',\n cancelledAnnouncementTemplate = 'Drag cancelled, item restored to original position',\n ...rest\n } = props;\n const [startIndex, setStartIndex] = useState<number | null>(null);\n const [originalIndex, setOriginalIndex] = useState<number | null>(null);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [dragOver, setDragOver] = useState<number | null>(null);\n const [announcement, setAnnouncement] = useState<string | undefined>('');\n const childrenArray = React.Children.toArray(children);\n const totalItems = childrenArray.length;\n\n /**\n * Replace placeholders in i18n templates\n */\n const replacePlaceholders = (\n template: string,\n data: {\n position?: number;\n grabKey?: string;\n dropKey?: string;\n altDropKey?: string;\n cancelKey?: string;\n moveKeys?: string;\n },\n ): string => {\n return template\n .replace(/\\{:position\\}/g, String(data.position ?? ''))\n .replace(/\\{:grabKey\\}/g, data.grabKey ?? 'Space')\n .replace(/\\{:dropKey\\}/g, data.dropKey ?? 'Space')\n .replace(/\\{:altDropKey\\}/g, data.altDropKey ?? 'Enter')\n .replace(/\\{:cancelKey\\}/g, data.cancelKey ?? 'Escape')\n .replace(\n /\\{:moveKeys\\}/g,\n data.moveKeys ??\n (orientation === ORIENTATION.VERTICAL ? 'Arrow Up/Down' : 'Arrow Left/Right'),\n );\n };\n\n // i18n configuration object\n const i18n = {\n itemAriaLabelTemplate:\n itemAriaLabelTemplate ??\n 'Item {:position}. Press {:grabKey} to grab, {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop',\n dragHandleAriaLabel: dragHandleAriaLabel ?? 'Drag to reorder',\n grabbedAnnouncementTemplate:\n grabbedAnnouncementTemplate ??\n 'Item {:position} grabbed. Use {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop, {:cancelKey} to cancel',\n movedAnnouncementTemplate:\n movedAnnouncementTemplate ?? 'Item moved to position {:position}',\n droppedAnnouncementTemplate:\n droppedAnnouncementTemplate ?? 'Item dropped at position {:position}',\n cancelledAnnouncementTemplate:\n cancelledAnnouncementTemplate ?? 'Drag cancelled, item restored to original position',\n replacePlaceholders,\n };\n\n /**\n * Drop handler invoked when a draggable item is released.\n * @param index\n */\n const drop = (index: number | null) => {\n if (startIndex !== null && index !== null) {\n onDrop?.(startIndex, index);\n }\n setStartIndex(null);\n setOriginalIndex(null);\n setIsDragging(false);\n };\n\n /**\n * Cancel handler to restore item to original position\n */\n const cancel = () => {\n if (originalIndex !== null && startIndex !== null && startIndex !== originalIndex) {\n onDrop?.(startIndex, originalIndex);\n }\n setStartIndex(null);\n setOriginalIndex(null);\n setIsDragging(false);\n };\n\n /**\n * Start grab handler to track original position\n */\n const startGrab = (index: number) => {\n setStartIndex(index);\n setOriginalIndex(index);\n setIsDragging(true);\n };\n\n return (\n <>\n <DragContext.Provider\n value={{\n startIndex,\n setStartIndex,\n drop,\n onDrop,\n cancel,\n startGrab,\n isDragging,\n setIsDragging,\n setDragOver,\n i18n,\n }}\n >\n <Container {...rest} ref={ref} orientation={orientation} role=\"list\">\n {React.Children.map(childrenArray, (child, index) => (\n <DragItem\n index={index}\n orientation={orientation}\n showIndicator={showIndicator}\n dragOver={dragOver}\n totalItems={totalItems}\n setAnnouncement={setAnnouncement}\n >\n {child}\n </DragItem>\n ))}\n </Container>\n </DragContext.Provider>\n <VisuallyHidden role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </VisuallyHidden>\n </>\n );\n}\n\nconst DragAndDrop = React.forwardRef(DragAndDropComponent);\nexport default DragAndDrop;\n","import React, { useImperativeHandle, useEffect, useId, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport Chip from '../Chip/Chip';\nimport { DragAndDrop, ORIENTATION } from '../DragAndDrop';\n\n// Prop types definition\ninterface ChipInputProps {\n /** Label for the field */\n label: string;\n /** Error message for the field */\n errorText?: string;\n /**\n * Values to display as chips\n * @default []\n */\n value?: string[];\n /** Callback when chips change */\n onChange?: (newValue: string[]) => void;\n /**\n * Aria label for the close button on chip. Defaults to \"Remove {:label}\"\n * @default \"Remove {:label}\"\n */\n closeButtonAriaLabel?: string;\n /**\n * Announcement text when a chip is added. Defaults to \"{:label} was added\"\n * @default \"{:label} was added\"\n */\n addedAnnouncementTemplate?: string;\n /**\n * Announcement text when a chip is removed. Defaults to \"{:label} was removed\"\n * @default \"{:label} was removed\"\n */\n removedAnnouncementTemplate?: string;\n}\n\n// Label component for the ChipInput\nconst Label = styled.label<{\n text: string;\n touched?: boolean;\n errorText?: string;\n required?: boolean;\n width?: string | number;\n}>`\n display: inline-flex;\n flex-direction: column;\n flex: 1;\n position: relative;\n margin: 10px 5px;\n color: inherit;\n padding: 0 8px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n width: ${(props) =>\n typeof props.width === 'number' ? `${props.width}px` : props.width || '250px'};\n max-width: 100%;\n\n /** Focused */\n &:has(:focus),\n &:has(:active) {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:has(:focus) > span,\n &:has(:active) > span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:has(:disabled) {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:has(:disabled) > span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:has(:focus:invalid) {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:has(:invalid) {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n \n &:has(:invalid) > span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & > span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n ${(props) =>\n props.required\n ? `& > span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }`\n : ''}\n \n\n & > input {\n border: none;\n outline: none;\n line-height: 30px;\n min-height: 30px;\n max-width: 95%;\n }\n\n /** Label Animation */\n & > span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n &:has(:focus) > span,\n &:has(:placeholder-shown) > span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n\n ${(props) =>\n props.text !== ''\n ? `\n & > span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n`;\n\n// Error message container\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\n// Visually hidden but accessible to screen readers\nconst VisuallyHidden = styled.ul`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n\n & li {\n list-style: none;\n }\n`;\n\n/**\n * A chip input component that allows users to add and remove chips (tags) by typing and pressing Enter.\n * @component\n * @example\n * ```tsx\n * <ChipInput\n * value={['tag1', 'tag2']}\n * onChange={(newTags) => console.log(newTags)}\n * label=\"Add tags\"\n * errorText=\"At least one tag is required\"\n * />\n * ```\n */\nfunction ChipInputComponent(\n props: ChipInputProps & Omit<React.AllHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'>,\n ref: React.Ref<HTMLInputElement | null>,\n) {\n const {\n value: propValue = [],\n closeButtonAriaLabel = `Remove {:label}`,\n addedAnnouncementTemplate = '{:label} was added',\n removedAnnouncementTemplate = '{:label} was removed',\n } = props;\n\n const [text, setText] = useState('');\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState<string[]>(propValue || []);\n const InputRef = React.useRef<HTMLInputElement>(null);\n const [announcement, setAnnouncement] = useState('');\n const errorId = useId();\n\n // Forward the underlying input element.\n useImperativeHandle(ref, () => InputRef.current as HTMLInputElement);\n\n /**\n * Replace {:label} placeholder in template string\n */\n const replacePlaceholder = (\n template: string | undefined,\n label: string,\n ): string | undefined => {\n if (!template) return undefined;\n return template.replace(/\\{:label\\}/g, label);\n };\n\n const prevPropValueRef = React.useRef<string[]>(undefined);\n\n // Sync internal value with props.value\n useEffect(() => {\n if (Array.isArray(propValue)) {\n const prevValue = prevPropValueRef.current;\n const isEqual =\n prevValue &&\n propValue.length === prevValue.length &&\n propValue.every((val, index) => val === prevValue[index]);\n if (!isEqual) {\n setValue(propValue);\n prevPropValueRef.current = propValue;\n }\n }\n }, [propValue]);\n\n useEffect(() => {\n if (InputRef.current) {\n InputRef.current.setCustomValidity(props.errorText || '');\n }\n }, [props.errorText]);\n\n /**\n * Update the chip values and notify changes.\n * @param newValue The new array of chip values\n */\n const updateValue = (newValue: string[]) => {\n const deduped = Array.from(new Set(newValue));\n setValue(deduped);\n props.onChange?.(deduped);\n };\n\n /**\n * Marks the input as touched on focus.\n * @param e React focus event\n */\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n /**\n * Change handler for the input field.\n * @param e React change event\n */\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n setText(e.target.value);\n };\n\n /**\n * Adds a new chip on Enter key press.\n * @param e React keyboard event\n */\n const handleKeyUp: React.KeyboardEventHandler<HTMLInputElement> = (e) => {\n if (e.key === 'Enter' && text.trim() !== '' && InputRef.current?.validity.valid) {\n const newValue = [...value, text.trim()];\n updateValue(newValue);\n setText('');\n setAnnouncement(replacePlaceholder(addedAnnouncementTemplate, text.trim())!);\n }\n };\n\n /**\n * Removes a chip from the list.\n * @param chipToRemove The chip value to remove\n */\n const removeChip = (chipToRemove: string) => {\n const newValue = value.filter((chip) => chip !== chipToRemove);\n updateValue(newValue);\n setAnnouncement(replacePlaceholder(removedAnnouncementTemplate, chipToRemove)!);\n };\n\n /**\n * Moves a chip from one position to another.\n * @param start The starting index of the item to move\n * @param end The ending index where the item should be placed\n */\n const onDrop = (start: number, end: number) => {\n // Clone existing elements\n const newItems = [...value];\n // Remove the element to be moved\n const item = newItems.splice(start, 1);\n // Add it back at the required position\n newItems.splice(end, 0, item[0]);\n // Update\n updateValue(newItems);\n };\n\n // Render the component\n return (\n <>\n <Label\n text={text}\n touched={touched}\n errorText={props.errorText}\n required={props.required}\n width={props.width}\n >\n <input\n {...props}\n ref={InputRef}\n value={text}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyUp={handleKeyUp}\n required={props.required && value.length === 0}\n aria-required={props.required}\n aria-invalid={!!props.errorText}\n aria-describedby={props.errorText ? errorId : undefined}\n />\n <div>\n {value?.length > 0 && (\n <DragAndDrop orientation={ORIENTATION.HORIZONTAL} onDrop={onDrop}>\n {value.map((chip) => (\n <Chip\n key={chip}\n label={chip}\n onCloseClick={() => removeChip(chip)}\n closeButtonAriaLabel={replacePlaceholder(\n closeButtonAriaLabel,\n chip,\n )}\n />\n ))}\n </DragAndDrop>\n )}\n </div>\n <span>{props.label}</span>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n <VisuallyHidden aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </VisuallyHidden>\n </>\n );\n}\n\nconst ChipInput = React.forwardRef<\n HTMLInputElement,\n ChipInputProps & Omit<React.AllHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'>\n>(ChipInputComponent);\n\nexport default ChipInput;\n","import React, { ForwardRefExoticComponent, RefAttributes, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from './constants';\n\n/** Enums for layer position on screen. */\nexport enum LAYER_POSITION {\n TOP_LEFT,\n TOP_CENTER,\n TOP_RIGHT,\n BOTTOM_LEFT,\n BOTTOM_CENTER,\n BOTTOM_RIGHT,\n DIALOG,\n}\n\ninterface LayerConfig {\n /** Show an overlay */\n overlay?: boolean;\n /** Element to render inside the layer. */\n component: React.JSX.Element | null;\n /** Position of the layer */\n position?: LAYER_POSITION;\n /** Delay for exit */\n exitDelay?: number;\n /** Close layer on `esc` key press. */\n closeOnEsc?: boolean;\n /** Close layer overlay is clicked. */\n closeOnOverlayClick?: boolean;\n /** Callback called when modal closes */\n closeCallback?: (resp?: unknown) => void;\n /** Layer is created with max z-index */\n alwaysOnTop?: boolean;\n}\n\n/** Default value of config */\nconst defaultConfig: LayerConfig = {\n closeOnEsc: true,\n overlay: false,\n position: LAYER_POSITION.TOP_LEFT,\n component: null,\n exitDelay: 0,\n closeOnOverlayClick: true,\n alwaysOnTop: false,\n};\n\n/** Metadata of each layer */\ninterface Layer {\n id: string;\n config: LayerConfig;\n element: HTMLDivElement;\n}\n\n/** Styles for each position */\nconst POSITION_STYLE: Record<LAYER_POSITION, string> = {\n [LAYER_POSITION.TOP_LEFT]: 'top: 0; left: 0;',\n [LAYER_POSITION.TOP_CENTER]: 'top: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.TOP_RIGHT]: 'top: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.BOTTOM_LEFT]: 'bottom: 0; left: 0;',\n [LAYER_POSITION.BOTTOM_CENTER]: 'bottom: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.BOTTOM_RIGHT]: 'bottom: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.DIALOG]: 'top: 0; left: 0; justify-content: center; align-items: center;',\n};\n\n/** Layer container component. */\nconst Container = styled.div<LayerConfig & { zIndex: number }>`\n position: fixed;\n display: flex;\n opacity: 0;\n transition: opacity 0.3s ease;\n ${(props) => POSITION_STYLE[props.position as LAYER_POSITION]}\n ${(props) =>\n props.overlay &&\n `\n width: 100%;\n height: 100vh;\n background-color: ${getThemeValue(THEME_NAME.BACKDROP_COLOR)};\n backdrop-filter: blur(0px);\n pointer-events: all;\n `}\n z-index: ${(props) => props.zIndex};\n\n .nf-layer-enter & {\n opacity: 1;\n ${(props) =>\n props.overlay &&\n `\n backdrop-filter: blur(3px);\n `}\n }\n`;\n\n/** Key code for different keys. */\nconst KEY_CODES = {\n ESC: 27,\n};\n\n/**\n * This is a shared helper class which manages the z-index of each layer.\n * If a component needs to be rendered in a different layer then this class\n * should be used. It internally maintains the stack of opened layer and each\n * `renderLayer` call will push a new layer in stack.\n *\n * This way we need not worry about the z-index and can freely keep on creating\n * new layers. The staring layer z-index is 10000. Leaving enough z-index for the\n * user if they desires so.\n *\n * @important Usage Pattern\n * To avoid creating duplicate layers (especially in React Strict Mode or Next.js),\n * always call `renderLayer` only once - either in a lifecycle method (like `componentDidUpdate`)\n * or in an imperative method (like `open()`).\n *\n * @example\n * // ❌ Don't call renderLayer in render() method\n * render() {\n * if (this.state.show) {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... }); // Creates new layer on every render\n * return <Component />;\n * }\n * }\n *\n * @example\n * // ✅ Do call renderLayer once in a method and store the component\n * open() {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... });\n * this.setState({ LayerComponent: Component });\n * }\n *\n * render() {\n * const { LayerComponent } = this.state;\n * return LayerComponent ? <LayerComponent /> : null;\n * }\n */\nclass LayerManager {\n /** Layer stack */\n private layers: Layer[] = [];\n /** z-index of the next layer */\n private nextIndex = 0;\n private keyupHandler!: (e: KeyboardEvent) => void;\n private timeoutIds = new Map<string, number>(); // Track timeouts\n\n /**\n * Constructor simply registers a event listener on body to\n * react to esc key press.\n */\n constructor() {\n if (typeof document !== 'undefined') {\n // Store handler reference for cleanup\n this.keyupHandler = (e) => {\n if (this.layers.length && e.keyCode === KEY_CODES.ESC) {\n const lastLayer = this.layers.slice(-1)[0];\n if (lastLayer.config.closeOnEsc !== false) {\n this.unmount(lastLayer);\n }\n }\n };\n document.body.addEventListener('keyup', this.keyupHandler);\n }\n }\n\n // Add cleanup method\n public destroy = () => {\n if (typeof document !== 'undefined' && this.keyupHandler) {\n document.body.removeEventListener('keyup', this.keyupHandler);\n }\n // Clear all pending timeouts\n this.timeoutIds.forEach((id) => clearTimeout(id));\n this.timeoutIds.clear();\n // Clean up remaining layers\n this.layers.forEach((layer) => {\n if (document.body.contains(layer.element)) {\n document.body.removeChild(layer.element);\n }\n });\n this.layers = [];\n };\n\n /**\n * Un-mounts a layer.\n *\n * It first adds a class 'nf-layer-exit' and then un-mounts the\n * layer after the `exitDelay` mentioned in the layer config.\n * This class will help component in triggering the entry animation.\n *\n * @param layer\n */\n private unmount = (layer: Layer, resp?: unknown) => {\n layer.element.setAttribute('class', 'nf-layer-exit');\n const index = this.layers.findIndex((item) => item === layer);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n\n const timeoutId = window.setTimeout(() => {\n this.timeoutIds.delete(layer.id);\n try {\n layer.config.closeCallback?.(resp);\n } catch (err) {\n if (err instanceof Error) {\n console.warn(err.message);\n } else {\n console.warn(err);\n }\n }\n // Clear reference to help GC\n layer.config.component = null;\n }, layer.config.exitDelay);\n\n this.timeoutIds.set(layer.id, timeoutId);\n };\n\n private Empty = () => {\n return null;\n };\n\n /**\n * Renders a layer.\n * @param config\n */\n public renderLayer = (\n config: LayerConfig,\n ): [ForwardRefExoticComponent<RefAttributes<HTMLDivElement>>, (resp?: unknown) => void] => {\n // SSR guard\n if (typeof document === 'undefined') {\n return [React.forwardRef(this.Empty), () => {}];\n }\n\n // Merge default config with the provided config.\n const layerConfig = {\n ...defaultConfig,\n ...config,\n };\n\n // Get the z-index for the new layer\n const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : 10000 + this.nextIndex;\n const className = layerConfig.alwaysOnTop ? 'nf-layer-manager-top' : 'nf-layer-manager';\n\n // Create a unique ID for tracking this layer\n const layerId = `${className}-${currentIndex + this.nextIndex}`;\n\n // Always increment for next layer\n this.nextIndex += 1;\n\n const overlayClickHandler = () => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer && layer.config.closeOnOverlayClick !== false) {\n this.unmount(layer);\n }\n };\n\n const closeFn = (resp?: unknown) => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer) {\n this.unmount(layer, resp);\n }\n };\n\n const LayerContainer = (\n props: React.HTMLAttributes<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const [divElement, setDivElement] = React.useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n // Create the div element only once when component mounts\n const div = document.createElement('div');\n div.setAttribute('class', className);\n div.setAttribute('id', layerId);\n document.body.appendChild(div);\n\n // Add layer to stack\n const currentLayer = {\n id: layerId,\n config: layerConfig,\n element: div,\n };\n this.layers.push(currentLayer);\n\n setDivElement(div);\n // Add entry animation class after a short delay\n setTimeout(() => {\n div.setAttribute('class', 'nf-layer-enter');\n }, 10);\n\n // Track elements modified for accessibility\n const modifiedElements: Array<{\n element: Element;\n hadAriaHidden: boolean;\n previousValue: string | null;\n }> = [];\n let originalBodyOverflow: string | null = null;\n let scrollY = 0;\n\n // Apply aria-hidden to siblings and body scroll lock for overlay modals\n if (layerConfig.overlay) {\n // Hide all body children except this layer portal, scripts, and styles\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach((child) => {\n if (\n child !== div &&\n child.className !== 'nf-layer-manager-top' &&\n child.tagName !== 'SCRIPT' &&\n child.tagName !== 'STYLE'\n ) {\n const hadAriaHidden = child.hasAttribute('aria-hidden');\n const previousValue = child.getAttribute('aria-hidden');\n\n // Only set aria-hidden if not already hidden\n if (previousValue !== 'true') {\n child.setAttribute('aria-hidden', 'true');\n modifiedElements.push({\n element: child,\n hadAriaHidden,\n previousValue,\n });\n }\n }\n });\n\n // Prevent body scroll on iOS\n scrollY = window.scrollY;\n originalBodyOverflow = document.body.style.overflow;\n\n document.body.style.overflow = 'hidden';\n }\n\n // Cleanup function - remove div when component unmounts\n return () => {\n // Restore aria-hidden attributes\n modifiedElements.forEach(({ element, hadAriaHidden, previousValue }) => {\n if (document.body.contains(element)) {\n if (hadAriaHidden && previousValue !== null) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n }\n });\n\n // Restore body scroll\n if (layerConfig.overlay) {\n document.body.style.overflow = originalBodyOverflow || '';\n window.scrollTo(0, scrollY);\n }\n\n if (document.body.contains(div)) {\n document.body.removeChild(div);\n }\n // Remove from layers array\n const index = this.layers.findIndex((layer) => layer.id === layerId);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n };\n }, []); // Empty dependency array - run only once\n\n if (!divElement) {\n return null;\n }\n\n return createPortal(\n <Container\n {...props}\n ref={ref}\n onClick={overlayClickHandler}\n zIndex={currentIndex}\n {...layerConfig}\n >\n {layerConfig.component}\n </Container>,\n divElement,\n );\n };\n\n // Return callback which will trigger the un-mount.\n return [\n React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(LayerContainer),\n closeFn,\n ];\n };\n}\n\n// Return the instance of the class to create a Singleton.\nexport default new LayerManager();\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport { Card } from '../Card';\n\nexport const DialogContainer = styled(Card)`\n max-width: 768px;\n max-height: 80vh;\n transform: scale(0);\n opacity: 0;\n transition: all 0.3s ease;\n\n .nf-layer-enter & {\n opacity: 1;\n transform: scale(1);\n }\n\n .nf-layer-exit & {\n opacity: 0;\n transform: scale(0);\n }\n`;\n\nexport {\n Header as DialogHeader,\n Body as DialogBody,\n Footer as DialogFooter,\n} from '../../shared/styles';\n\ninterface DialogOptions {\n /** Flag to close dialog on `esc` click. Default value is true. */\n closeOnEsc?: boolean;\n /** Close layer overlay is clicked. Default value is true. */\n closeOnOverlayClick?: boolean;\n /** Ref forwarded to the underlying HTMLDivElement of the dialog container */\n forwardRef?: React.Ref<HTMLDivElement>;\n}\n\ninterface DialogState {\n show: boolean;\n LayerComponent?: React.ComponentType | null;\n}\n\nclass Dialog extends React.Component<\n React.PropsWithChildren<DialogOptions> & React.HTMLAttributes<HTMLDivElement>,\n DialogState\n> {\n static defaultProps = {\n closeOnEsc: true,\n closeOnOverlayClick: true,\n };\n\n private closeDialog: ((resp?: unknown) => void) | null = null;\n private onCloseFn: ((resp?: unknown) => void) | null = null;\n private lastFocusedElement: HTMLElement | null = null;\n private dialogRef = React.createRef<HTMLDivElement>();\n\n state: DialogState = {\n show: false,\n LayerComponent: undefined,\n };\n\n /**\n * Retrieves all focusable elements within the dialog.\n */\n private getFocusableElements = (): HTMLElement[] => {\n if (!this.dialogRef.current) return [];\n return Array.from(\n this.dialogRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ),\n ) as HTMLElement[];\n };\n\n /**\n * Handles keydown events to implement the focus trap.\n * Traps Tab and Shift+Tab within the dialog.\n */\n private handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n /**\n * Restores focus to the element that was focused before the dialog opened.\n */\n private restoreFocus = () => {\n if (this.lastFocusedElement) {\n const elementToBeFocused = this.lastFocusedElement;\n this.lastFocusedElement = null;\n setTimeout(() => {\n if (document.body.contains(elementToBeFocused)) {\n elementToBeFocused.focus();\n }\n }, 100);\n }\n };\n\n /**\n * Callback ref to capture the Dialog DOM element.\n * Triggers initial focus setting when the element mounts.\n */\n private setDialogRef = (node: HTMLDivElement | null) => {\n (this.dialogRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n\n if (node) {\n this.setInitialFocus(node);\n }\n\n if (this.props.forwardRef) {\n if (typeof this.props.forwardRef === 'function') {\n this.props.forwardRef(node);\n } else {\n (this.props.forwardRef as React.MutableRefObject<HTMLDivElement | null>).current =\n node;\n }\n }\n };\n\n /**\n * Sets initial focus within the dialog.\n * Tries to focus the header first, then the first interactive element, or falls back to the container.\n */\n private setInitialFocus = (root: HTMLElement) => {\n const firstChild = root.firstElementChild as HTMLElement;\n if (firstChild) {\n if (firstChild.getAttribute('tabindex') === null) {\n firstChild.setAttribute('tabindex', '-1');\n }\n firstChild.focus();\n return;\n }\n\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n } else {\n root.focus();\n }\n };\n\n shouldComponentUpdate(nextProps: DialogOptions, nextState: DialogState) {\n return this.state.show !== nextState.show;\n }\n\n componentWillUnmount() {\n // Clean up if component unmounts while dialog is open\n if (this.state.show && this.closeDialog) {\n this.closeDialog();\n }\n this.restoreFocus();\n this.closeDialog = null;\n this.onCloseFn = null;\n }\n\n public open = (closeCallback?: (resp?: unknown) => void) => {\n const { closeOnEsc, closeOnOverlayClick, children, ...rest } = this.props;\n\n // Save current focus\n this.lastFocusedElement = document.activeElement as HTMLElement;\n\n const [Component, closeFn] = LayerManager.renderLayer({\n exitDelay: 300,\n overlay: true,\n closeOnEsc,\n closeCallback: this.closeCallback,\n closeOnOverlayClick,\n position: LAYER_POSITION.DIALOG,\n component: (\n <DialogContainer\n role=\"dialog\"\n {...rest}\n ref={this.setDialogRef}\n aria-modal=\"true\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n elevated\n >\n {children}\n </DialogContainer>\n ),\n });\n\n this.closeDialog = closeFn;\n\n this.setState({\n show: true,\n LayerComponent: Component,\n });\n this.onCloseFn = closeCallback ?? null;\n };\n\n public close = (resp?: unknown) => {\n this.closeDialog?.(resp);\n };\n\n private closeCallback = (resp?: unknown) => {\n this.restoreFocus();\n this.setState({\n show: false,\n LayerComponent: undefined,\n });\n this.onCloseFn?.(resp);\n };\n\n render() {\n const { LayerComponent } = this.state;\n\n if (this.state.show && LayerComponent) {\n return <LayerComponent />;\n } else {\n return null;\n }\n }\n}\n\nexport default Dialog;\n","import React, { createRef } from 'react';\nimport { Button } from '../Button';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\n\ntype AlertOption = {\n /** Shown as header of the dialog */\n header: string;\n /** Rendered in the body. */\n body: React.ReactNode;\n /** Accept button text */\n buttonText?: string;\n /** props for the dialog */\n dialogProps?: React.ComponentProps<typeof Dialog>;\n};\n\nlet dialogCounter = 0;\n\nexport default class AlertDialog extends React.Component<AlertOption> {\n private dialog = createRef<Dialog>();\n\n static defaultProps = {\n buttonText: 'OK',\n };\n\n public show = () => {\n return new Promise((resolve) => {\n const onClose = () => resolve(null);\n this.dialog.current?.open(onClose);\n });\n };\n\n private close = () => this.dialog.current?.close();\n\n render() {\n const titleId = `nfui-alert-dialog-${dialogCounter++}-title`;\n const descriptionId = `nfui-alert-dialog-${dialogCounter++}-description`;\n\n return (\n <Dialog\n {...this.props.dialogProps}\n role=\"alertdialog\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n ref={this.dialog}\n closeOnEsc={false}\n closeOnOverlayClick={false}\n >\n {this.props.header && <DialogHeader id={titleId}>{this.props.header}</DialogHeader>}\n <DialogBody id={descriptionId}>{this.props.body}</DialogBody>\n <DialogFooter>\n <Button onClick={this.close}>{this.props.buttonText}</Button>\n </DialogFooter>\n </Dialog>\n );\n }\n}\n","import React, { createRef } from 'react';\nimport { Button, ActionButton } from '../Button';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\n\ntype ConfirmOption = {\n /** Shown as header of the dialog */\n header: string;\n /** Rendered as body of the dialog */\n body: string;\n /** Accept button text */\n yesText?: string;\n /** Reject button text */\n noText?: string;\n /** Props for the dialog */\n dialogProps?: React.ComponentProps<typeof Dialog>;\n};\n\nexport default class ConfirmDialog extends React.Component<ConfirmOption> {\n private dialog = createRef<Dialog>();\n\n static defaultProps = {\n yesText: 'Yes',\n noText: 'No',\n };\n\n public show = () => {\n return new Promise((resolve, reject) => {\n const onClose = (resp: unknown) => {\n if (resp) {\n resolve(null);\n } else {\n reject();\n }\n };\n this.dialog.current?.open(onClose);\n });\n };\n\n private cancel = () => this.dialog.current?.close(false);\n private confirm = () => this.dialog.current?.close(true);\n\n render() {\n const { header, body, yesText, noText, dialogProps } = this.props;\n return (\n <Dialog\n {...dialogProps}\n ref={this.dialog}\n closeOnEsc={false}\n closeOnOverlayClick={false}\n >\n {header && <DialogHeader>{header}</DialogHeader>}\n <DialogBody>{body}</DialogBody>\n <DialogFooter>\n <Button onClick={this.cancel}>{noText}</Button>\n <ActionButton onClick={this.confirm}>{yesText}</ActionButton>\n </DialogFooter>\n </Dialog>\n );\n }\n}\n","import React, { useState, useEffect, useId, useRef, useImperativeHandle } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ntype InputProps = {\n /** Label for the field */\n label?: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.AllHTMLAttributes<HTMLInputElement>;\n\ntype InputInternalProps = InputProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.input<InputInternalProps>`\n outline: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 30px;\n width: 250px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus + span,\n &:active + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n padding: 0 8px;\n }\n\n &:disabled + span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\n/**\n * Input Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLInputElement\n */\nconst Input = React.forwardRef<HTMLInputElement, Omit<InputProps, 'as'>>((props, forwardedRef) => {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n const errorId = useId();\n const prevValueRef = useRef<string>(undefined);\n const internalRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(forwardedRef, () => internalRef.current as HTMLInputElement);\n\n useEffect(() => {\n if (props.value !== undefined && props.value !== prevValueRef.current) {\n setValue(props.value);\n prevValueRef.current = props.value as string;\n }\n }, [props.value]);\n\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.setCustomValidity(props.errorText || '');\n }\n }, [props.errorText]);\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <TextField\n {...props}\n ref={internalRef}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n aria-invalid={!!props.errorText}\n aria-required={props.required}\n aria-describedby={props.errorText ? errorId : undefined}\n />\n <span>{props.label}</span>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n );\n});\n\nInput.displayName = 'Input';\nexport default Input;\n","import React, { useState, useEffect, useId, useRef, useImperativeHandle } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ntype TextAreaProps = {\n /** Label for the field */\n label: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.InputHTMLAttributes<HTMLTextAreaElement>;\n\ntype TextAreaInternalProps = {\n touched: boolean;\n errorText?: string;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.textarea<TextAreaInternalProps>`\n border: none;\n color: inherit;\n padding: 8px;\n min-height: 150px;\n min-width: 250px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus + span,\n &:active + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:disabled + span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\n/**\n * TextArea Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLTextAreaElement\n */\nfunction TextAreaComponent(props: TextAreaProps, forwardedRef: React.Ref<HTMLTextAreaElement>) {\n const { label, errorText, value: propsValue, required, ...rest } = props;\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(propsValue || '');\n const errorId = useId();\n const prevValueRef = useRef<string>(undefined);\n const internalRef = useRef<HTMLTextAreaElement>(null);\n\n useImperativeHandle(forwardedRef, () => internalRef.current as HTMLTextAreaElement);\n\n useEffect(() => {\n if (propsValue !== undefined && propsValue !== prevValueRef.current) {\n setValue(propsValue);\n prevValueRef.current = propsValue as string;\n }\n }, [propsValue]);\n\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.setCustomValidity(errorText || '');\n }\n }, [errorText]);\n\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <TextField\n {...rest}\n ref={internalRef}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n required={required}\n aria-invalid={!!errorText}\n aria-required={required}\n aria-describedby={errorText ? errorId : undefined}\n />\n <span>{label}</span>\n {errorText && <ErrorContainer id={errorId}>{errorText}</ErrorContainer>}\n </Label>\n );\n}\n\nconst TextArea = React.forwardRef(TextAreaComponent);\nexport default TextArea;\n","import React, { useState, useEffect, useId, useRef, useImperativeHandle } from 'react';\nimport styled from '@emotion/styled';\nimport ExpandMore from '../../icons/ExpandMore';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ntype SelectProps = {\n /** Label for the field */\n label?: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.InputHTMLAttributes<HTMLSelectElement>;\n\ntype SelectInternalProps = SelectProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n pointer-events: none;\n max-width: 268px;\n\n & svg {\n fill: currentColor;\n }\n`;\n\nconst SelectField = styled.select<SelectInternalProps>`\n border: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 32px;\n width: 268px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n pointer-events: auto;\n appearance: none;\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus ~ span,\n &:active ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid ~ span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & ~ span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 8px;\n top: 8px;\n`;\n\n/**\n * Select Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLSelectElement\n */\nfunction SelectComponent(props: SelectProps, forwardedRef: React.Ref<HTMLSelectElement>) {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n const errorId = useId();\n const prevValueRef = useRef<string>(undefined);\n const internalRef = useRef<HTMLSelectElement>(null);\n\n useImperativeHandle(forwardedRef, () => internalRef.current as HTMLSelectElement);\n\n // Sync prop value with state\n useEffect(() => {\n if (props.value !== prevValueRef.current) {\n setValue(props.value || '');\n prevValueRef.current = props.value as string;\n }\n }, [props.value]);\n\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.setCustomValidity(props.errorText || '');\n }\n }, [props.errorText]);\n\n const handleFocus = (e: React.FocusEvent<HTMLSelectElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLSelectElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <SelectField\n {...props}\n ref={internalRef}\n multiple={false}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n aria-invalid={!!props.errorText}\n aria-required={props.required}\n aria-describedby={props.errorText ? errorId : undefined}\n >\n <option />\n {props.children}\n </SelectField>\n <span>{props.label}</span>\n <ArrowContainer aria-hidden=\"true\">\n <ExpandMore />\n </ArrowContainer>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n );\n}\n\nconst Select = React.forwardRef(SelectComponent);\nexport default Select;\n","import React, { useCallback, useEffect, useId, useRef, useImperativeHandle } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Label = styled.label`\n margin: 5px 0;\n position: relative;\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n`;\n\nconst StyledCheckmark = styled.span`\n width: 16px;\n height: 16px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n border-radius: 3px;\n margin-right: 5px;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: all 0.3s ease;\n position: relative;\n flex-shrink: 0;\n\n &::after {\n content: '';\n width: 3px;\n height: 10px;\n border-right: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-bottom: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n position: absolute;\n top: 1px;\n left: 6px;\n opacity: 0;\n transform: rotate(45deg) scale(0);\n transition: all 0.2s ease;\n }\n`;\n\nconst HiddenInput = styled.input`\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n margin: 0;\n\n /** checked */\n &:checked + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:checked + ${StyledCheckmark}::after {\n opacity: 1;\n transform: rotate(45deg) scale(1);\n }\n\n /** indeterminate */\n &:indeterminate + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:indeterminate + ${StyledCheckmark}::after {\n opacity: 1;\n height: 0;\n width: 8px;\n border-right: none;\n border-bottom: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n transform: rotate(0deg) scale(1);\n top: 7px;\n left: 4px;\n }\n\n /** active and focus */\n &:enabled:active + ${StyledCheckmark}, &:focus + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:active ~ span,\n &:focus ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** hover */\n &:enabled:hover + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:enabled:hover ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** disabled */\n &:disabled + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n cursor: not-allowed;\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n cursor: not-allowed;\n }\n\n &:checked:disabled + ${StyledCheckmark}, &:indeterminate:disabled + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n`;\n\nconst Container = styled.div`\n display: inline-flex;\n flex-direction: column;\n`;\n\ntype CheckboxProps = {\n /**\n * Label for the field\n * @default ''\n */\n label?: string;\n /**\n * If the field is in indeterminate state\n * @default false\n */\n indeterminate?: boolean;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * Checkbox Component\n * @param props - Component props\n * @param fwdRef - Ref forwarded to the underlying HTMLInputElement\n */\nfunction CheckboxComponent(props: CheckboxProps, fwdRef: React.Ref<HTMLInputElement>) {\n const { label = '', indeterminate = false, checked, errorText, ...rest } = props;\n const internalRef = useRef<HTMLInputElement | null>(null);\n const errorId = useId();\n\n useImperativeHandle(fwdRef, () => internalRef.current as HTMLInputElement);\n\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.setCustomValidity(errorText || '');\n }\n }, [errorText]);\n\n const ref = useCallback(\n (node: HTMLInputElement | null) => {\n internalRef.current = node;\n // Ensure the DOM `indeterminate` flag always matches the prop\n if (node) {\n node.indeterminate = !!indeterminate;\n }\n\n // Forward the node (or null) to the parent ref (supports function or ref object)\n // Note: Since we use useImperativeHandle now, we don't technically need to manually forward here\n // if we weren't doing the ref callback pattern for indeterminate.\n // However, useImperativeHandle handles the forwarding.\n // BUT, our local ref callback `ref` is passed to the input `ref={ref}`.\n // React will call this callback with the node.\n // Inside this callback, we set internalRef.current.\n // useImperativeHandle exposes internalRef.current to fwdRef.\n // So we don't need manual forwarding logic here anymore!\n },\n [indeterminate],\n );\n\n return (\n <Container>\n <Label>\n <HiddenInput\n {...rest}\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n aria-checked={indeterminate ? 'mixed' : checked}\n aria-invalid={!!errorText}\n aria-describedby={errorText ? errorId : undefined}\n />\n <StyledCheckmark />\n <span>{label}</span>\n </Label>\n {errorText && <ErrorContainer id={errorId}>{errorText}</ErrorContainer>}\n </Container>\n );\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(CheckboxComponent);\n\nexport default Checkbox;\n","import React, { useEffect, useId, useRef, useImperativeHandle } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Switch = styled.label`\n position: relative;\n display: inline-flex;\n margin: 5px 0;\n`;\n\nconst Input = styled.input`\n position: absolute;\n width: 0;\n height: 0;\n appearance: none;\n margin: 0;\n\n & + span {\n position: relative;\n cursor: pointer;\n width: 30px;\n height: 18px;\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n transition: 0.4s;\n border-radius: 10px;\n padding: 0 3px;\n margin: 0 10px 0 5px;\n }\n & + span:before {\n position: absolute;\n content: '';\n height: 14px;\n width: 14px;\n left: 1px;\n top: 1px;\n border: 1px solid ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n border-radius: 50%;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: 0.4s;\n }\n\n /* checked */\n &:checked + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:checked + span:before {\n transform: translateX(18px);\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* focus */\n &:enabled:focus + span:before {\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* hover */\n &:enabled:hover ~ span {\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* disabled */\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled + span {\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n cursor: not-allowed;\n }\n\n &:disabled + span:before {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n`;\n\nconst Container = styled.div`\n display: inline-flex;\n flex-direction: column;\n`;\n\ntype ToggleProps = {\n /** Label for the field */\n label?: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * Toggle Component\n * @param props - Component props\n * @param forwardedRef - Ref forwarded to the underlying HTMLInputElement\n */\nfunction ToggleComponent(props: ToggleProps, forwardedRef: React.Ref<HTMLInputElement>) {\n const { label, errorText, ...rest } = props;\n const internalRef = useRef<HTMLInputElement>(null);\n const errorId = useId();\n\n useImperativeHandle(forwardedRef, () => internalRef.current as HTMLInputElement);\n\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.setCustomValidity(errorText || '');\n }\n }, [errorText]);\n\n return (\n <Container>\n <Switch>\n <Input\n {...rest}\n ref={internalRef}\n type=\"checkbox\"\n role=\"switch\"\n aria-checked={props.checked}\n aria-invalid={!!errorText}\n aria-label={label}\n aria-describedby={errorText ? errorId : undefined}\n />\n <span></span>\n <span>{label}</span>\n </Switch>\n {errorText && <ErrorContainer id={errorId}>{errorText}</ErrorContainer>}\n </Container>\n );\n}\n\nconst Toggle = React.forwardRef(ToggleComponent);\nexport default Toggle;\n","import React, { useEffect, useId, useRef, useImperativeHandle } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Label = styled.label`\n display: inline-flex;\n align-items: center;\n margin: 5px 10px 5px 0;\n cursor: pointer;\n position: relative;\n`;\n\nconst StyledRadio = styled.span`\n width: 16px;\n height: 16px;\n margin-right: 5px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 50%;\n display: block;\n transition: background-color 0.3s ease;\n position: relative;\n flex-shrink: 0;\n\n &::after {\n content: '';\n width: 100%;\n height: 100%;\n border-radius: 50%;\n position: absolute;\n top: 0;\n left: 0;\n box-shadow: inset 0 0 0 3px ${getThemeValue(THEME_NAME.BACKGROUND)};\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n`;\n\nconst HiddenInput = styled.input`\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n margin: 0;\n\n /* checked */\n &:checked + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:checked + ${StyledRadio}::after {\n opacity: 1;\n }\n\n /* focus */\n &:enabled:focus + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:checked:focus + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n /* hover */\n &:enabled:hover + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:enabled:hover ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* disabled */\n &:disabled + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n cursor: not-allowed;\n }\n\n &:disabled:checked + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n cursor: not-allowed;\n }\n`;\n\ntype RadioProps = {\n /** Label for the field */\n label?: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * Radio Component\n * @param props - Component props\n * @param forwardedRef - Ref forwarded to the underlying HTMLInputElement\n */\nfunction RadioComponent(props: RadioProps, forwardedRef: React.Ref<HTMLInputElement>) {\n const { label, errorText, ...rest } = props;\n const internalRef = useRef<HTMLInputElement>(null);\n const errorId = useId();\n\n useImperativeHandle(forwardedRef, () => internalRef.current as HTMLInputElement);\n\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.setCustomValidity(errorText || '');\n }\n }, [errorText]);\n\n return (\n <Label>\n <HiddenInput\n {...rest}\n ref={internalRef}\n type=\"radio\"\n aria-invalid={!!errorText}\n aria-describedby={errorText ? errorId : undefined}\n />\n <StyledRadio />\n <span>{label}</span>\n </Label>\n );\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(RadioComponent);\nexport default Radio;\n","import React, { useEffect, useId, useRef, useImperativeHandle } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Input = styled.input`\n appearance: none;\n margin: 0;\n width: 0;\n\n & + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n padding: 6px 12px;\n border: none;\n border: 1px solid ${getThemeValue(THEME_NAME.PRIMARY)};\n cursor: pointer;\n margin-right: -1px;\n line-height: 18px;\n }\n\n &:enabled:focus + span {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:hover + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n\n &:enabled:checked + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n\n &:disabled + span {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled:checked + span {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n`;\n\nconst Label = styled.label`\n display: inline-flex;\n\n &:focus-within {\n z-index: 1;\n }\n`;\n\nexport const RadioGroup = styled.div`\n display: inline-flex;\n align-items: center;\n border-radius: 3px;\n margin: 5px 0;\n\n & > ${Label}:first-of-type > span {\n border-radius: 3px 0 0 3px;\n }\n\n & > ${Label}:last-of-type > span {\n border-radius: 0 3px 3px 0;\n }\n`;\n\ntype RadioButtonProps = {\n /** Label for the field */\n label?: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * RadioButton Component\n * @param props - Component props\n * @param forwardedRef - Ref forwarded to the underlying HTMLInputElement\n */\nfunction RadioButtonComponent(props: RadioButtonProps, forwardedRef: React.Ref<HTMLInputElement>) {\n const { label, errorText, ...rest } = props;\n const internalRef = useRef<HTMLInputElement>(null);\n const errorId = useId();\n\n useImperativeHandle(forwardedRef, () => internalRef.current as HTMLInputElement);\n\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.setCustomValidity(errorText || '');\n }\n }, [errorText]);\n\n return (\n <Label>\n <Input\n {...rest}\n type=\"radio\"\n ref={internalRef}\n aria-invalid={!!errorText}\n aria-describedby={errorText ? errorId : undefined}\n />\n <span>{label}</span>\n </Label>\n );\n}\n\nconst RadioButton = React.forwardRef(RadioButtonComponent);\nexport default RadioButton;\n","import { createContext } from 'react';\n\ntype SingleSelect<T> = {\n value?: T;\n multiSelect: false;\n updateValue: (newVal: T) => void;\n};\n\ntype MultiSelect<T> = {\n value?: T[];\n multiSelect: true;\n // updateValue takes a single item and the provider will add/remove it\n updateValue: (newVal: T) => void;\n};\nexport type MenuContextType<T> = SingleSelect<T> | MultiSelect<T>;\n\n// Context may be undefined if used outside a Menu provider\nexport default createContext<MenuContextType<unknown> | undefined>(undefined);\n","import React, { useState, ForwardedRef } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport MenuContext from './MenuContext';\n/**\n * Props for the Menu component.\n * @template T - The type of value(s) in the menu.\n */\ntype MenuProps<T> = {\n /** Multiple Menu Items can be selected */\n multiSelect?: boolean;\n /** Value(s) selected */\n value?: T | T[];\n /** Callback when the selected value changes */\n onChange?: (value: T | T[]) => void;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>;\n\nconst MenuContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n\n & div:last-child {\n border-bottom: none;\n }\n\n &:focus-within {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n`;\n\n/**\n * Menu component that allows selection of items from a list.\n * Supports single and multi-select modes and keyboard navigation.\n *\n * @template T - The type of value(s) in the menu.\n * @param props - The menu properties.\n * @param ref - The ref forwarded to the menu container.\n */\n/**\n * Menu Component\n * @template T - The type of value(s) in the menu.\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction MenuInner<T>(props: MenuProps<T>, ref: ForwardedRef<HTMLDivElement>) {\n const { multiSelect = false, onChange, value: propValue, children, ...rest } = props;\n // State holds either a single T or an array of T when multiSelect\n const [value, setValue] = useState<unknown | undefined>(propValue);\n\n /**\n * Updates the selected value(s).\n * Handles both single and multi-select logic.\n *\n * @param {T} val - The value to select or deselect.\n */\n const updateValue = (val: unknown) => {\n let newVal: unknown;\n if (multiSelect) {\n if (Array.isArray(value)) {\n if (value.includes(val as unknown as T)) {\n newVal = (value as T[]).filter((item) => item !== val);\n } else {\n newVal = [...(value as T[]), val];\n }\n } else {\n newVal = [val];\n }\n } else {\n newVal = val;\n }\n\n setValue(newVal as T | T[]);\n onChange?.(newVal as T | T[]);\n };\n\n /**\n * Handles keyboard navigation within the menu.\n * Supports Arrow keys for navigation, and Enter/Space for selection.\n *\n * @param {React.KeyboardEvent} e - The keyboard event.\n */\n const handleKeyDown = (e: React.KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const container = e.currentTarget as HTMLElement;\n const items = Array.from(container.querySelectorAll('[role=\"option\"]')) as HTMLElement[];\n const currentIndex = items.indexOf(target as HTMLElement);\n\n let nextIndex;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n nextIndex = currentIndex + 1;\n if (nextIndex >= items.length) nextIndex = 0;\n items[nextIndex]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n nextIndex = currentIndex - 1;\n if (nextIndex < 0) nextIndex = items.length - 1;\n items[nextIndex]?.focus();\n break;\n case 'Home':\n e.preventDefault();\n items[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case 'Enter':\n case ' ': // Space\n e.preventDefault();\n target.click();\n break;\n default:\n break;\n }\n };\n\n /**\n * Handles focus events on the menu container.\n * Delegates focus to the first item if the container itself receives focus.\n *\n * @param {React.FocusEvent} e - The focus event.\n */\n const focusHandler = (e: React.FocusEvent) => {\n // Prevent trap: If focus came from inside (Shift+Tab), do NOT auto-focus again.\n // This allows focus to land on the container, and the next Shift+Tab will exit.\n if (e.currentTarget.contains(e.relatedTarget as Node)) {\n return;\n }\n\n // Only if focus is actually on the container (e.g. tabbing into it)\n // and not bubbling up from a child\n if (e.target === e.currentTarget) {\n // Prevent the container from holding focus; delegate to first item\n const firstItem = e.currentTarget.querySelector('[role=\"option\"]') as HTMLElement;\n firstItem?.focus();\n }\n };\n\n return (\n // @ts-expect-error Generic context typing\n <MenuContext.Provider value={{ value: value, multiSelect: !!multiSelect, updateValue }}>\n <MenuContainer\n {...rest}\n ref={ref}\n role=\"listbox\"\n aria-multiselectable={multiSelect}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n onFocus={focusHandler}\n >\n {children}\n </MenuContainer>\n </MenuContext.Provider>\n );\n}\n\nconst Menu = React.forwardRef(MenuInner) as <T>(\n props: MenuProps<T> & React.RefAttributes<HTMLDivElement>,\n) => React.ReactElement;\n\nexport default Menu;\n","import React, { SyntheticEvent, useContext } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport Checkbox from '../Input/Checkbox';\nimport MenuContext, { MenuContextType } from './MenuContext';\n\nexport type MenuItemProps<T> = {\n /** Value of the element */\n value: T;\n} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'value'>;\n\nconst Container = styled.button<{ selected: boolean; multiselect?: boolean }>`\n font-weight: ${(props) => (props.selected ? 'bold' : 'normal')};\n padding: 8px;\n border: none;\n border-left: 4px solid\n ${(props) =>\n props.selected && !props.multiselect\n ? getThemeValue(THEME_NAME.TEXT_COLOR_DARK)\n : 'transparent'};\n background-color: transparent;\n font-size: 16px;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n min-height: 41px;\n display: flex;\n align-items: center;\n cursor: pointer;\n position: relative;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:hover,\n &:focus,\n &:focus-within {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n }\n\n & > label {\n margin: 0 4px 0 0;\n }\n`;\n\n/**\n * MenuItem Component\n * @template T - The type of value in the menu item.\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLButtonElement\n */\nconst MenuItemInner = <T,>(props: MenuItemProps<T>, ref: React.Ref<HTMLButtonElement>) => {\n const context = useContext(MenuContext) as MenuContextType<T> | undefined;\n if (!context) {\n throw new Error('`MenuItem` must be used within a `Menu` provider');\n }\n const { value, children, ...rest } = props;\n const clickHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n context.updateValue(value as T);\n };\n\n let selected = false;\n if (context.multiSelect) {\n const arr = context.value as unknown as T[] | undefined;\n selected = Array.isArray(arr) && arr.includes(value as unknown as T);\n } else {\n selected = (context.value as unknown as T) === value;\n }\n\n return (\n <Container\n {...rest}\n ref={ref}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n selected={selected}\n onClick={clickHandler}\n multiselect={context.multiSelect ? true : undefined}\n >\n {context.multiSelect && (\n <Checkbox\n checked={selected}\n readOnly\n tabIndex={-1}\n onClick={(e) => e.stopPropagation()}\n />\n )}\n {children}\n </Container>\n );\n};\n\nconst MenuItem = React.forwardRef(MenuItemInner) as <T>(\n props: MenuItemProps<T> & { ref?: React.Ref<HTMLButtonElement> },\n) => ReturnType<typeof MenuItemInner>;\nexport default MenuItem;\n","import React, { useCallback, useEffect, useId, useRef, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { Card } from '../Card';\n\nexport enum POPOVER_POSITION {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT',\n}\n\ninterface Translate {\n x: number;\n y: number;\n}\n\nconst positionMap = {\n [POPOVER_POSITION.TOP_LEFT]: `\n bottom: calc(100% - 10px);\n left: 0;\n `,\n [POPOVER_POSITION.TOP_RIGHT]: `\n bottom: calc(100% - 10px);\n right: 0;\n `,\n [POPOVER_POSITION.BOTTOM_RIGHT]: `\n top: calc(100% - 10px);\n right: 0;\n `,\n [POPOVER_POSITION.BOTTOM_LEFT]: `\n top: calc(100% - 10px);\n left: 0;\n `,\n};\n\nconst PopoverDiv = styled.div`\n position: relative;\n display: inline-flex;\n`;\n\nconst Popper = styled(Card)<{ position: POPOVER_POSITION; translateX: number; translateY: number }>`\n position: absolute;\n width: 100%;\n min-width: 200px;\n overflow: auto;\n animation: enter 0.3s linear;\n border-radius: 3px;\n z-index: 1;\n transform: translate(${(props) => props.translateX}px, ${(props) => props.translateY}px);\n ${(props) => positionMap[props.position]}\n\n &.closing {\n /* max-height: 0px;\n opacity: 0;\n overflow: hidden; */\n animation: exit 0.3s linear;\n }\n\n @keyframes enter {\n from {\n max-height: 0px;\n opacity: 1;\n overflow: hidden;\n }\n to {\n max-height: 300px;\n opacity: 1;\n overflow: hidden;\n }\n }\n\n @keyframes exit {\n to {\n max-height: 0px;\n opacity: 1;\n overflow: hidden;\n }\n from {\n max-height: 300px;\n opacity: 1;\n overflow: hidden;\n }\n }\n`;\n\nconst KEY_CODES = {\n ESC: 27,\n};\n\ntype PopoverProps = {\n /** Opens the popover */\n open: boolean;\n /** Anchor element for the popover */\n element: React.ReactElement;\n /**\n * Position of the popover around anchor element\n * @default POPOVER_POSITION.BOTTOM_LEFT\n */\n position?: POPOVER_POSITION;\n /**\n * If the popover should close on `esc` key press\n * @default true\n */\n closeOnEsc?: boolean;\n /** Popover close callback */\n onClose?: () => void;\n};\n\n/**\n * Popover Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction PopoverComponent(\n props: React.PropsWithChildren<PopoverProps>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n open: propsOpen,\n element,\n position = POPOVER_POSITION.BOTTOM_LEFT,\n closeOnEsc = true,\n onClose,\n children,\n ...rest\n } = props;\n\n const [open, setOpen] = useState<boolean>(propsOpen);\n const [closing, setClosing] = useState<boolean>(false);\n const [translate, setTranslate] = useState<Translate>({ x: 0, y: 0 });\n const popperRef = useRef<HTMLDivElement | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n const closeTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const focusTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const popperId = useId();\n const triggerId = useId();\n\n const close = useCallback(() => {\n // Clear any existing timeouts first\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n }\n if (focusTimeoutRef.current) {\n clearTimeout(focusTimeoutRef.current);\n }\n\n setClosing(true);\n closeTimeoutRef.current = setTimeout(() => {\n setOpen(false);\n setTranslate({ x: 0, y: 0 });\n\n if (onClose) {\n onClose();\n }\n setClosing(false);\n\n // Restore focus to the trigger element after animation completes\n focusTimeoutRef.current = setTimeout(() => {\n if (triggerRef.current && document.body.contains(triggerRef.current)) {\n triggerRef.current.focus();\n }\n focusTimeoutRef.current = null;\n }, 50);\n closeTimeoutRef.current = null;\n }, 280);\n }, [onClose]);\n\n const keyupEventHandler = useCallback(\n (e: KeyboardEvent) => {\n if (closeOnEsc && e.keyCode === KEY_CODES.ESC) {\n close();\n }\n },\n [close, closeOnEsc],\n );\n\n const clickOutsideHandler = useCallback(\n (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n close();\n }\n },\n [close],\n );\n\n /**\n * Get called on popover mount.\n */\n useEffect(() => {\n document.addEventListener('keyup', keyupEventHandler);\n\n return () => {\n document.removeEventListener('keyup', keyupEventHandler);\n };\n }, [keyupEventHandler]);\n\n useEffect(() => {\n if (propsOpen) {\n setOpen(true);\n // Use requestAnimationFrame to add listener after current event loop\n const rafId = requestAnimationFrame(() => {\n document.addEventListener('click', clickOutsideHandler);\n });\n\n return () => {\n cancelAnimationFrame(rafId);\n document.removeEventListener('click', clickOutsideHandler);\n };\n } else {\n if (open) {\n close();\n }\n }\n }, [propsOpen, open, clickOutsideHandler, close]);\n\n useEffect(() => {\n if (open) {\n const {\n top = 0,\n left = 0,\n right = 0,\n } = popperRef.current?.getBoundingClientRect() ?? {};\n const height = popperRef.current?.scrollHeight ?? 0;\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n const translation = { x: 0, y: 0 };\n\n if (position === POPOVER_POSITION.BOTTOM_LEFT) {\n // overflow can happen at bottom and right\n if (viewportHeight - top - height < 0) {\n translation.y = -1 * (Math.abs(viewportHeight - top - height) + 5);\n }\n if (viewportWidth - right < 0) {\n translation.x = -1 * (Math.abs(viewportWidth - right) + 5);\n }\n } else if (position == POPOVER_POSITION.BOTTOM_RIGHT) {\n // overflow can happen at bottom and left\n if (viewportHeight - top - height < 0) {\n translation.y = -1 * (Math.abs(viewportHeight - top - height) + 5);\n }\n if (left < 0) {\n translation.x = Math.abs(left) + 5;\n }\n } else if (position === POPOVER_POSITION.TOP_LEFT) {\n // overflow can happen at top and right\n if (top - height < 0) {\n translation.y = Math.abs(top - height) + 5;\n }\n if (viewportWidth - right < 0) {\n translation.x = -1 * (Math.abs(viewportWidth - right) + 5);\n }\n } else {\n // overflow can happen at top and left\n if (top - height < 0) {\n translation.y = Math.abs(top - height) + 5;\n }\n if (left < 0) {\n translation.x = Math.abs(left) + 5;\n }\n }\n // Note it can still overflow, but in that case fitting popper inside the\n // window is not possible.\n setTranslate(translation);\n popperRef.current?.focus();\n }\n }, [open, position]);\n\n /**\n * Cleanup timeouts on unmount\n */\n useEffect(() => {\n return () => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n }\n if (focusTimeoutRef.current) {\n clearTimeout(focusTimeoutRef.current);\n }\n };\n }, []);\n\n const forwardRef = (node: HTMLDivElement | null) => {\n containerRef.current = node;\n\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n return (\n <PopoverDiv ref={forwardRef} {...rest}>\n {React.cloneElement(element, {\n ref: triggerRef,\n id: triggerId,\n 'aria-expanded': open,\n 'aria-haspopup': 'dialog',\n 'aria-controls': popperId,\n } as React.Attributes)}\n {open && (\n <Popper\n elevated\n tabIndex={0}\n role=\"dialog\"\n aria-labelledby={triggerId}\n id={popperId}\n position={position}\n translateX={translate.x}\n translateY={translate.y}\n className={closing ? 'closing' : ''}\n ref={popperRef}\n onClick={(e) => {\n e.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n }}\n >\n {children}\n </Popper>\n )}\n </PopoverDiv>\n );\n}\n\nconst Popover = React.forwardRef(PopoverComponent);\nexport default Popover;\n","import React, { useEffect, useRef, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { ExpandMore } from '../../icons';\nimport { Menu } from '../Menu';\nimport { MenuItemProps } from '../Menu/MenuItem';\nimport { Popover, POPOVER_POSITION } from '../Popover';\nimport Input from './Input';\n\ntype DropdownProps<T> = React.PropsWithChildren<{\n /** Value of the control */\n value?: T | T[];\n /**\n * If multiple elements can be selected\n * @default false\n */\n multiSelect?: boolean;\n /** Change handler */\n onChange?: (v: T | T[]) => void;\n /** Label of the control */\n label?: string;\n /** Error message */\n errorText?: string;\n /** Makes field required */\n required?: boolean;\n /** Disables the field */\n disabled?: boolean;\n children?: React.ReactElement<MenuItemProps<T>> | React.ReactElement<MenuItemProps<T>>[];\n}> &\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value'>;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 12px;\n top: 16px;\n pointer-events: none;\n`;\n\n/**\n * DropdownTrigger Component\n */\nconst DropdownTrigger = React.forwardRef<\n HTMLInputElement,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value'> & {\n displayValue: string;\n label?: string;\n errorText?: string;\n open: boolean;\n menuId: string;\n toggleOpen: () => void;\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n forwardedRef?: React.Ref<HTMLInputElement>;\n }\n>((props, ref) => {\n const {\n displayValue,\n label,\n errorText,\n open,\n menuId,\n toggleOpen,\n onKeyDown,\n forwardedRef,\n ...rest\n } = props;\n const triggerRef = React.useRef<HTMLInputElement | null>(null);\n\n // Helper to assign both internal triggerRef and external forwarded ref\n const assignRefs = React.useCallback(\n (node: HTMLInputElement | null) => {\n triggerRef.current = node;\n\n if (!forwardedRef) return;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else {\n (forwardedRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n },\n [forwardedRef],\n );\n\n // Combine the ref passed by parent with our assignRefs so both are updated\n const combinedRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n assignRefs(node);\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n },\n [assignRefs, ref],\n );\n\n return (\n <>\n <Input\n {...rest}\n ref={combinedRef}\n type=\"text\"\n value={displayValue}\n label={label}\n errorText={errorText}\n onClick={toggleOpen}\n onKeyDown={onKeyDown}\n inputMode=\"none\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={menuId}\n />\n <ArrowContainer aria-hidden=\"true\">\n <ExpandMore />\n </ArrowContainer>\n </>\n );\n});\nDropdownTrigger.displayName = 'DropdownTrigger';\n\n/**\n * Dropdown component that allows selection from a list of options.\n * Supports single and multi-select modes.\n *\n * @template T - The type of the value(s) in the dropdown.\n * @param props - The properties for the Dropdown component.\n * @returns The rendered Dropdown component.\n */\nfunction DropdownComponent<T extends object>(\n props: DropdownProps<T>,\n outerRef: React.Ref<HTMLInputElement>,\n) {\n const {\n multiSelect = false,\n onChange,\n children,\n value: propValue,\n label,\n errorText,\n required,\n disabled,\n ...rest\n } = props;\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState<T | T[] | undefined>(propValue);\n const id = React.useId();\n const menuId = `${id}-menu`;\n const menuRef = React.useRef<HTMLDivElement | null>(null);\n const triggerRef = React.useRef<HTMLInputElement | null>(null);\n\n /**\n * Gets the display value for the dropdown based on the current value and children.\n *\n * @param currentValue - The current value of the dropdown.\n * @param currentChildren - The children of the dropdown.\n * @returns The display value.\n */\n const getDisplayValue = (\n currentValue: T | T[] | undefined,\n currentChildren: React.ReactNode,\n ): string => {\n if (currentValue === undefined || currentValue === null) return '';\n\n const findLabel = (val: T): string => {\n let label = '';\n React.Children.forEach(currentChildren, (child) => {\n if (React.isValidElement(child)) {\n const props = child.props as MenuItemProps<T> & React.PropsWithChildren;\n if ('value' in props && props.value === val) {\n label = String(props.children);\n }\n }\n });\n return label;\n };\n\n if (Array.isArray(currentValue)) {\n return currentValue.map(findLabel).filter(Boolean).join(', ');\n }\n\n return findLabel(currentValue as T);\n };\n\n const displayValue = getDisplayValue(value, children) || (value ? String(value) : '');\n\n // Sync prop value with state\n const prevValueRef = useRef<T | T[] | undefined>(undefined);\n useEffect(() => {\n if (propValue !== prevValueRef.current) {\n setValue(propValue);\n prevValueRef.current = propValue;\n }\n }, [propValue]);\n\n // Focus menu when opened\n useEffect(() => {\n if (open) {\n // Wait for Popover to fully open and focus itself first\n // Then move focus to the first menu item\n const timer = setTimeout(() => {\n const firstItem = menuRef.current?.querySelector('[role=\"option\"]') as HTMLElement;\n if (firstItem) {\n firstItem.focus();\n }\n }, 100); // Wait after Popover has set initial focus\n return () => clearTimeout(timer);\n }\n }, [open]);\n\n /**\n * Handles keydown events on the input trigger.\n * Opens the menu on 'Enter', 'Space', 'ArrowDown', or 'ArrowUp'.\n *\n * @param {React.KeyboardEvent<HTMLInputElement>} e - The keyboard event.\n */\n const onKeyDown = React.useCallback((e: React.KeyboardEvent<HTMLInputElement>) => {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(e.key)) {\n e.preventDefault();\n setOpen(true);\n } else if (e.key !== 'Tab') {\n // Prevent typing to mimic readOnly behavior while allowing native validation\n e.preventDefault();\n }\n }, []);\n\n /**\n * Handles changes to the dropdown value.\n * Updates local state and calls the external onChange handler.\n * Closes the dropdown if not in multi-select mode.\n *\n * @param {T | T[]} val - The new value(s).\n */\n const changeHandler = (val: T | T[]) => {\n setValue(val);\n onChange?.(val);\n\n // Close dropdown after selection if not multiSelect\n if (!multiSelect) {\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n\n /**\n * Toggles the dropdown open state on click.\n */\n const clickHandler = React.useCallback(() => setOpen(true), []);\n\n /**\n * Forwarded ref handler for the trigger input.\n */\n const handleForwardedRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n triggerRef.current = node;\n if (typeof outerRef === 'function') {\n outerRef(node);\n } else if (outerRef) {\n (outerRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n },\n [outerRef],\n );\n\n return (\n <Popover\n position={POPOVER_POSITION.BOTTOM_LEFT}\n open={open}\n element={\n <DropdownTrigger\n {...rest}\n displayValue={displayValue}\n label={label}\n errorText={errorText}\n open={open}\n menuId={menuId}\n toggleOpen={clickHandler}\n onKeyDown={onKeyDown}\n required={required}\n disabled={disabled}\n forwardedRef={handleForwardedRef}\n />\n }\n onClose={() => {\n setOpen(false);\n triggerRef.current?.focus();\n }}\n >\n <Menu\n ref={menuRef}\n id={menuId}\n value={value}\n multiSelect={multiSelect}\n onChange={changeHandler}\n >\n {children}\n </Menu>\n </Popover>\n );\n}\n\nconst Dropdown = React.forwardRef(DropdownComponent) as <T>(\n props: DropdownProps<T> & React.RefAttributes<HTMLInputElement>,\n) => React.ReactElement | null;\nexport default Dropdown;\n","import React, { createRef } from 'react';\nimport styled from '@emotion/styled';\nimport { Button, ActionButton } from '../Button';\nimport { Input } from '../Input';\nimport Dialog, { DialogHeader, DialogBody, DialogFooter } from './Dialog';\n\ntype PromptOption = {\n /** Shown as header of the dialog */\n header: string;\n /** Rendered as the body of the dialog */\n body: string;\n /** Default value for the input. */\n defaultValue?: string;\n /** Submit button text. Default value is 'Submit' */\n submitText?: string;\n /** Cancel button text. Default value is 'Cancel' */\n cancelText?: string;\n /** Props for the input. */\n inputProps?: React.HTMLProps<HTMLInputElement>;\n /** Additional props for the dialog. */\n dialogProps?: React.ComponentProps<typeof Dialog>;\n};\n\nconst BodyText = styled.p`\n margin-top: 0;\n`;\n\nconst InputContainer = styled.div`\n display: flex;\n flex: 1;\n margin-top: 10px;\n\n & > label {\n flex: 1;\n width: 100%;\n padding: 0;\n\n & > input {\n width: 100%;\n padding: 0 8px;\n box-sizing: border-box;\n }\n }\n`;\n\nconst StyledInput = styled(Input)`\n flex: 1;\n padding: 0;\n`;\n\nexport default class PromptDialog extends React.Component<PromptOption, { value?: string }> {\n static defaultProps = {\n cancelText: 'Cancel',\n submitText: 'Submit',\n defaultValue: '',\n };\n\n constructor(props: PromptOption) {\n super(props);\n this.state = {\n value: props.defaultValue,\n };\n }\n\n private dialog = createRef<Dialog>();\n\n private valueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n this.setState({\n value: e.target.value,\n });\n };\n\n private cancel = () => this.dialog.current?.close();\n\n private submit = (e: React.SyntheticEvent) => {\n e.preventDefault();\n if (!this.state.value) return;\n this.dialog.current?.close(this.state.value);\n };\n\n public show = () => {\n return new Promise((resolve, reject) => {\n const onClose = (value: unknown) => {\n if (value) {\n resolve(value);\n } else {\n reject();\n }\n this.setState({\n value: this.props.defaultValue,\n });\n };\n this.dialog.current?.open(onClose);\n });\n };\n\n render() {\n const { header, body, inputProps, submitText, cancelText, dialogProps } = this.props;\n\n return (\n <Dialog\n {...dialogProps}\n ref={this.dialog}\n closeOnEsc={false}\n closeOnOverlayClick={false}\n >\n <form onSubmit={this.submit}>\n {header && <DialogHeader>{header}</DialogHeader>}\n <DialogBody>\n <BodyText>{body}</BodyText>\n <InputContainer>\n <StyledInput\n value={this.state.value}\n onChange={this.valueChange}\n {...inputProps}\n />\n </InputContainer>\n </DialogBody>\n <DialogFooter>\n <Button type=\"button\" onClick={this.cancel}>\n {cancelText}\n </Button>\n <ActionButton onClick={this.submit}>{submitText}</ActionButton>\n </DialogFooter>\n </form>\n </Dialog>\n );\n }\n}\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\n\nexport {\n Header as DrawerHeader,\n Body as DrawerBody,\n Footer as DrawerFooter,\n} from '../../shared/styles';\n\nexport enum DRAWER_POSITION {\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n BOTTOM = 'BOTTOM',\n}\n\nconst positionStyle = (size?: string) => ({\n [DRAWER_POSITION.LEFT]: {\n before: `height: 100vh; min-width: ${size || '300px'}; transform: translateX(-100%);`,\n after: 'transform: translateX(0%);',\n },\n [DRAWER_POSITION.RIGHT]: {\n before: `height: 100vh; min-width: ${size || '300px'}; transform: translateX(100%);`,\n after: 'transform: translateX(0%);',\n },\n [DRAWER_POSITION.BOTTOM]: {\n before: `\n position: absolute;\n bottom: 0;\n width: 100%;\n height: ${size || '90vh'};\n transform: translateY(100%);\n border-radius: 15px 15px 0 0; \n `,\n after: 'transform: translateX(0%);',\n },\n});\n\nconst DrawerDiv = styled.div<{ position: DRAWER_POSITION; size?: string }>`\n display: flex;\n flex-direction: column;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: transform 0.3s ease;\n box-shadow: ${getThemeValue(THEME_NAME.MODAL_SHADOW)};\n ${(props) => positionStyle(props.size)[props.position].before}\n\n .nf-layer-enter & {\n transform: translateX(0%);\n ${(props) => positionStyle(props.size)[props.position].after}\n }\n`;\n\ntype DrawerProps = {\n /** Opens the drawer */\n open: boolean;\n /** position of the drawer */\n position: DRAWER_POSITION;\n /** size of the drawer */\n size?: string;\n /** Shows an overlay behind the drawer. */\n overlay?: boolean;\n /** Closes the drawer on esc */\n closeOnEsc?: boolean;\n /** Closes the drawer on overlay click */\n closeOnOverlayClick?: boolean;\n /** Call back function called when the drawer closes. */\n onClose?: () => void;\n /** Ref forwarded to the underlying HTMLDivElement of the drawer container */\n forwardRef?: React.Ref<HTMLDivElement> | React.MutableRefObject<HTMLDivElement | null>;\n};\n\ninterface DrawerState {\n open: boolean;\n}\n\nconst positionMap = {\n [DRAWER_POSITION.LEFT]: LAYER_POSITION.TOP_LEFT,\n [DRAWER_POSITION.RIGHT]: LAYER_POSITION.TOP_RIGHT,\n [DRAWER_POSITION.BOTTOM]: LAYER_POSITION.BOTTOM_LEFT,\n};\n\n/**\n * Drawer component\n *\n * A panel that slides in from the edge of the screen.\n * It sits on top of the application content and is often used for navigation or details.\n *\n * Accessibility:\n * - Implements ARIA `role=\"dialog\"` and `aria-modal=\"true\"`.\n * - Traps focus effectively within the drawer while open.\n * - Restores focus to the triggering element upon closure.\n * - Supports closing via ESC key and overlay click.\n */\nexport default class Drawer extends React.Component<\n React.PropsWithChildren<DrawerProps>,\n DrawerState\n> {\n state = {\n open: false,\n };\n\n static defaultProps = {\n overlay: true,\n position: DRAWER_POSITION.LEFT,\n closeOnEsc: true,\n closeOnOverlayClick: true,\n };\n\n /**\n * Syncs state with props.\n */\n static getDerivedStateFromProps(props: DrawerProps) {\n if (props.open) {\n return {\n open: true,\n };\n }\n return null;\n }\n\n private layer?: ReturnType<typeof LayerManager.renderLayer>;\n\n private closeCallback?: (resp?: unknown) => void;\n\n /**\n * Internal close handler.\n * Restores focus and calls the external onClose callback.\n */\n private onClose = () => {\n this.restoreFocus();\n this.setState({\n open: false,\n });\n this.props.onClose?.();\n this.closeCallback = undefined;\n this.layer = undefined;\n };\n\n private lastFocusedElement: HTMLElement | null = null;\n private drawerRef = React.createRef<HTMLDivElement>();\n\n /**\n * Retrieves all focusable elements within the drawer.\n */\n private getFocusableElements = (): HTMLElement[] => {\n if (!this.drawerRef.current) return [];\n return Array.from(\n this.drawerRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ),\n ) as HTMLElement[];\n };\n\n /**\n * Handles keydown events to implement the focus trap.\n * Traps Tab and Shift+Tab within the drawer.\n */\n private handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n /**\n * Lifecycle method to save the currently focused element when the drawer mounts while open.\n */\n componentDidMount() {\n if (this.props.open) {\n this.lastFocusedElement = document.activeElement as HTMLElement;\n // Handle initial open state\n this.handleOpen();\n }\n }\n\n /**\n * Handles opening the drawer by creating the layer.\n */\n private handleOpen = () => {\n const { closeOnEsc, closeOnOverlayClick, position, size, overlay, children, ...rest } =\n this.props;\n\n this.layer = LayerManager.renderLayer({\n overlay,\n exitDelay: 300,\n position: positionMap[position],\n closeCallback: this.onClose,\n closeOnEsc,\n closeOnOverlayClick,\n component: (\n <DrawerDiv\n {...rest}\n ref={this.setDrawerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n position={position}\n size={size}\n onClick={(e) => e.stopPropagation()}\n >\n {children}\n </DrawerDiv>\n ),\n });\n this.closeCallback = this.layer[1];\n this.forceUpdate();\n };\n\n /**\n * Lifecycle method to restore focus when the drawer unmounts.\n */\n componentWillUnmount() {\n if (this.props.open) {\n this.restoreFocus();\n }\n }\n\n /**\n * Restores focus to the element that was focused before the drawer opened.\n */\n private restoreFocus = () => {\n if (this.lastFocusedElement) {\n // Check if the element is still in the document\n const elementToBeFocused = this.lastFocusedElement;\n this.lastFocusedElement = null;\n setTimeout(() => {\n if (document.body.contains(elementToBeFocused)) {\n elementToBeFocused.focus();\n }\n }, 100);\n }\n };\n\n /**\n * Callback ref to capture the Drawer DOM element.\n * Triggers initial focus setting when the element mounts.\n */\n private setDrawerRef = (node: HTMLDivElement | null) => {\n // Update ref\n (this.drawerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n\n if (node) {\n // Set initial focus when the node is mounted\n this.setInitialFocus(node);\n }\n };\n\n /**\n * Sets initial focus within the drawer.\n * Tries to focus the header first, then the first interactive element, or falls back to the container.\n */\n private setInitialFocus = (root: HTMLElement) => {\n // Try to find the header (assumed to be the first child)\n const firstChild = root.firstElementChild as HTMLElement;\n if (firstChild) {\n // Ensure it's focusable\n if (firstChild.getAttribute('tabindex') === null) {\n firstChild.setAttribute('tabindex', '-1');\n }\n firstChild.focus();\n return;\n }\n\n // Fallback to focusable elements\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n } else {\n // Fallback to container\n root.focus();\n }\n };\n\n /**\n * Lifecycle method to handle Drawer updates.\n * Manages opening/closing logic via LayerManager and focus preservation.\n */\n componentDidUpdate(prevProps: DrawerProps) {\n const { open } = this.props;\n\n if (prevProps.open && !open) {\n this.closeCallback?.();\n this.restoreFocus();\n }\n\n if (!prevProps.open && open) {\n // Save current focus\n this.lastFocusedElement = document.activeElement as HTMLElement;\n this.handleOpen();\n }\n }\n\n /**\n * Sets the ref prop passed to the Drawer Container component.\n * @param node\n */\n setRefProp = (node: HTMLDivElement | null) => {\n if (this.props.forwardRef && typeof this.props.forwardRef === 'function') {\n this.props.forwardRef(node);\n } else if (this.props.forwardRef && typeof this.props.forwardRef === 'object') {\n (this.props.forwardRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n /**\n * Renders the Drawer component via the LayerManager portal.\n */\n render() {\n if (this.state.open && this.layer) {\n const [Component] = this.layer;\n return <Component ref={this.setRefProp} />;\n }\n\n return null;\n }\n}\n","import React, { useId } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Container = styled.div<GroupProps>`\n display: inline-flex;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 3px;\n margin: 5px;\n\n /* overrides */\n & button,\n & label {\n margin: 0;\n border: none;\n border-radius: 0;\n border-left: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n box-shadow: none;\n height: 32px;\n }\n\n & > div button {\n border-left: none;\n }\n\n & input,\n & select {\n border: none;\n height: 32px;\n }\n\n & input,\n & select {\n border-radius: 0;\n }\n\n & input:active,\n & select:active {\n box-shadow: none;\n }\n\n & > div > span {\n top: 8px;\n }\n\n /* Handling for first and last child */\n & > *:first-of-type,\n & > label:first-of-type input,\n & > label:first-of-type select,\n & > *:first-of-type label,\n & > *:first-of-type input {\n border-left: none;\n border-radius: 2px 0 0 2px;\n }\n\n & > *:last-child,\n & > label:last-child input,\n & > label:last-child select,\n & > *:last-child label,\n & > *:last-child input {\n border-radius: 0 2px 2px 0;\n }\n\n /* focus */\n & *:focus,\n & *:focus + span {\n z-index: 1;\n }\n\n &:focus-within,\n &:hover {\n box-shadow: ${getThemeValue(THEME_NAME.HOVER_SHADOW)};\n }\n\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & > button, & > label {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n margin-left: 8px;\n font-size: 12px;\n`;\n\ntype GroupProps = React.PropsWithChildren<{\n /** Error Message for the group */\n errorText?: string;\n}>;\n\n/**\n * Group Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction GroupComponent(\n props: React.PropsWithChildren<GroupProps>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const errorId = useId();\n\n return (\n <>\n <Container\n {...props}\n ref={ref}\n aria-describedby={props.errorText ? errorId : undefined}\n >\n {props.children}\n </Container>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </>\n );\n}\n\nconst Group = React.forwardRef<HTMLDivElement, GroupProps>(GroupComponent);\nexport default Group;\n","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nexport default styled.label`\n height: 32px;\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n padding: 0 4px;\n line-height: 32px;\n min-width: 24px;\n text-align: center;\n color: ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n\n & > svg {\n height: 24px;\n width: 24px;\n vertical-align: middle;\n fill: currentColor;\n }\n`;\n","import React from 'react';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nexport {\n Header as ModalHeader,\n Body as ModalBody,\n Footer as ModalFooter,\n} from '../../shared/styles';\nimport { DialogContainer as ModalContainer } from '../Dialog/Dialog';\n\ntype ModalProps = {\n /** Opens the modal */\n open: boolean;\n /** Closes the modal on esc */\n closeOnEsc?: boolean;\n /** Closes the modal on overlay click */\n closeOnOverlayClick?: boolean;\n /** Call back function called when the modal closes. */\n onClose?: () => void;\n /** Ref forwarded to the underlying HTMLDivElement of the modal container */\n forwardRef?: React.Ref<HTMLDivElement>;\n} & React.HTMLAttributes<HTMLDivElement>;\n\ninterface ModalState {\n open: boolean;\n}\n\n/**\n * Modal component\n *\n * A dialog window that sits on top of the main application content.\n * It disrupts the user's workflow to demand attention for a critical task or decision.\n *\n * Accessibility:\n * - Implements ARIA `role=\"dialog\"` and `aria-modal=\"true\"`.\n * - Traps focus effectively within the modal while open.\n * - Restores focus to the triggering element upon closure.\n * - Supports closing via ESC key and overlay click.\n */\nexport default class Modal extends React.Component<\n React.PropsWithChildren<ModalProps>,\n ModalState\n> {\n state = {\n open: false,\n };\n\n static defaultProps = {\n closeOnEsc: true,\n closeOnOverlayClick: true,\n };\n\n /**\n * Syncs state with props.\n */\n static getDerivedStateFromProps(props: ModalProps) {\n if (props.open) {\n return {\n open: true,\n };\n }\n return null;\n }\n\n private layer?: ReturnType<typeof LayerManager.renderLayer>;\n\n private closeCallback?: (resp?: unknown) => void;\n\n /**\n * Internal close handler.\n * Restores focus and calls the external onClose callback.\n */\n private onClose = () => {\n this.restoreFocus();\n this.setState({\n open: false,\n });\n this.props.onClose?.();\n this.closeCallback = undefined;\n this.layer = undefined;\n };\n\n private lastFocusedElement: HTMLElement | null = null;\n private modalRef = React.createRef<HTMLDivElement>();\n\n /**\n * Retrieves all focusable elements within the modal.\n */\n private getFocusableElements = (): HTMLElement[] => {\n if (!this.modalRef.current) return [];\n return Array.from(\n this.modalRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ),\n ) as HTMLElement[];\n };\n\n /**\n * Handles keydown events to implement the focus trap.\n * Traps Tab and Shift+Tab within the modal.\n */\n private handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n /**\n * Lifecycle method to save the currently focused element when the modal mounts while open.\n */\n componentDidMount() {\n if (this.props.open) {\n this.lastFocusedElement = document.activeElement as HTMLElement;\n // Handle initial open state\n this.handleOpen();\n }\n }\n\n /**\n * Handles opening the modal by creating the layer.\n */\n private handleOpen = () => {\n const { closeOnEsc, closeOnOverlayClick, children, ...rest } = this.props;\n\n this.layer = LayerManager.renderLayer({\n overlay: true,\n exitDelay: 300,\n position: LAYER_POSITION.DIALOG,\n closeCallback: this.onClose,\n closeOnEsc: closeOnEsc,\n closeOnOverlayClick: closeOnOverlayClick,\n component: (\n <ModalContainer\n {...rest}\n ref={this.setModalRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n elevated\n >\n {children}\n </ModalContainer>\n ),\n });\n this.closeCallback = this.layer[1];\n this.forceUpdate();\n };\n\n /**\n * Lifecycle method to restore focus when the modal unmounts.\n */\n componentWillUnmount() {\n if (this.props.open) {\n this.restoreFocus();\n }\n // Clean up layer references\n if (this.closeCallback) {\n this.closeCallback();\n this.closeCallback = undefined;\n }\n this.layer = undefined;\n }\n\n /**\n * Restores focus to the element that was focused before the modal opened.\n */\n private restoreFocus = () => {\n if (this.lastFocusedElement) {\n // Check if the element is still in the document\n const elementToBeFocused = this.lastFocusedElement;\n this.lastFocusedElement = null;\n setTimeout(() => {\n if (document.body.contains(elementToBeFocused)) {\n elementToBeFocused.focus();\n }\n }, 100);\n }\n };\n\n /**\n * Callback ref to capture the Modal DOM element.\n * Triggers initial focus setting when the element mounts.\n */\n private setModalRef = (node: HTMLDivElement | null) => {\n // Update ref\n (this.modalRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n\n if (node) {\n // Set initial focus when the node is mounted\n this.setInitialFocus(node);\n }\n\n if (this.props.forwardRef) {\n (this.props.forwardRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n /**\n * Sets initial focus within the modal.\n * Tries to focus the header (first child) first, then the first interactive element, or falls back to the container.\n */\n private setInitialFocus = (root: HTMLElement) => {\n // Try to find the header (assumed to be the first child)\n const firstChild = root.firstElementChild as HTMLElement;\n if (firstChild) {\n // Ensure it's focusable\n if (firstChild.getAttribute('tabindex') === null) {\n firstChild.setAttribute('tabindex', '-1');\n }\n firstChild.focus();\n return;\n }\n\n // Fallback to focusable elements\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n } else {\n // Fallback to container\n root.focus();\n }\n };\n\n /**\n * Lifecycle method to handle Modal updates.\n * Manages opening/closing logic via LayerManager and focus preservation.\n */\n componentDidUpdate(prevProps: ModalProps) {\n const { open } = this.props;\n\n if (prevProps.open && !open) {\n this.closeCallback?.();\n this.restoreFocus();\n }\n\n if (!prevProps.open && open) {\n // Save current focus\n this.lastFocusedElement = document.activeElement as HTMLElement;\n this.handleOpen();\n }\n }\n\n /**\n * Renders the Modal component via the LayerManager portal.\n */\n render() {\n if (this.state.open && this.layer) {\n const [Component] = this.layer;\n return <Component />;\n }\n\n return null;\n }\n}\n","/** Position for Notification */\nexport enum NOTIFICATION_POSITION {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT',\n}\n\n/** Type of Notifications */\nexport enum NOTIFICATION_TYPE {\n INFO = 'INFO',\n SUCCESS = 'SUCCESS',\n DANGER = 'DANGER',\n WARNING = 'WARNING',\n}\n\nexport interface NotificationOptions {\n /** Title of the notification */\n title: string;\n /** Body of the notification */\n description: string;\n /** Id for the notification, helps in de-duplication. */\n id?: string;\n /** Duration for the notification in milliseconds */\n duration?: number;\n /** Creates sticky notification */\n sticky?: boolean;\n /** Type of notification */\n type?: NOTIFICATION_TYPE;\n /** Action button text */\n buttonText?: string;\n /** Action button click callback */\n buttonClick?: () => void;\n /** Notification close callback. */\n onClose?: () => void;\n /** aria label for the close button on the notification */\n closeButtonAriaLabel?: string;\n}\n","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { Card } from '../Card';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\nconst getEntryAnimation = (position: NOTIFICATION_POSITION) => {\n switch (position) {\n case NOTIFICATION_POSITION.TOP_LEFT:\n case NOTIFICATION_POSITION.BOTTOM_LEFT:\n return 'in-left';\n default:\n return 'in-right';\n }\n};\n\nconst getExitAnimation = (position: NOTIFICATION_POSITION) => {\n switch (position) {\n case NOTIFICATION_POSITION.TOP_LEFT:\n case NOTIFICATION_POSITION.BOTTOM_LEFT:\n return 'out-left';\n default:\n return 'out-right';\n }\n};\n\nconst getBorderColor = (type?: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS_LIGHT);\n case NOTIFICATION_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR_LIGHT);\n case NOTIFICATION_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING_LIGHT);\n default:\n return getThemeValue(THEME_NAME.INFO_LIGHT);\n }\n};\n\nconst getTitleColor = (type: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS);\n case NOTIFICATION_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR);\n case NOTIFICATION_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING);\n case NOTIFICATION_TYPE.INFO:\n return getThemeValue(THEME_NAME.INFO);\n }\n};\n\nconst getTypeStyle = (type: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.INFO:\n return `color: ${getThemeValue(THEME_NAME.INFO)}`;\n case NOTIFICATION_TYPE.SUCCESS:\n return `color: ${getThemeValue(THEME_NAME.SUCCESS)}`;\n case NOTIFICATION_TYPE.DANGER:\n return `color: ${getThemeValue(THEME_NAME.ERROR)}`;\n case NOTIFICATION_TYPE.WARNING:\n return `color: ${getThemeValue(THEME_NAME.WARNING)}`;\n }\n};\n\ninterface NoticeProp extends NotificationOptions {\n position: NOTIFICATION_POSITION;\n}\n\nexport const Container = styled.div<{ position: NOTIFICATION_POSITION }>`\n display: flex;\n flex-direction: ${(props) =>\n props.position === NOTIFICATION_POSITION.TOP_LEFT ||\n props.position === NOTIFICATION_POSITION.TOP_RIGHT\n ? 'column'\n : 'column-reverse'};\n`;\n\nexport const Notice = styled(Card)<NoticeProp>`\n position: relative;\n border-radius: 3px;\n border-left: 4px solid ${(props) => getBorderColor(props.type)};\n width: 300px;\n display: flex;\n padding: 0 5px 5px 0;\n overflow: hidden;\n animation: ${(props) => getEntryAnimation(props.position)} 0.6s ease;\n\n & svg {\n fill: currentColor;\n vertical-align: middle;\n width: 20px;\n height: 20px;\n }\n\n &.leave {\n animation: ${(props) => getExitAnimation(props.position)} 0.6s;\n }\n\n @keyframes in-right {\n from {\n transform: translateX(100%);\n max-height: 0;\n opacity: 0;\n }\n\n to {\n transform: translateX(0%);\n max-height: 150px;\n opacity: 1;\n }\n }\n\n @keyframes out-right {\n to {\n transform: translateX(100%);\n max-height: 0;\n opacity: 0;\n }\n\n from {\n transform: translateX(0%);\n max-height: 100px;\n opacity: 1;\n }\n }\n\n @keyframes in-left {\n from {\n transform: translateX(-100%);\n max-height: 0;\n opacity: 0;\n }\n\n to {\n transform: translateX(0%);\n max-height: 150px;\n opacity: 1;\n }\n }\n\n @keyframes out-left {\n to {\n transform: translateX(-100%);\n max-height: 0;\n opacity: 0;\n }\n\n from {\n transform: translateX(0%);\n max-height: 100px;\n opacity: 1;\n }\n }\n`;\n\nexport const Title = styled.div<{ type: NOTIFICATION_TYPE }>`\n padding: 5px 0;\n font-size: 14px;\n color: ${(props) => getTitleColor(props.type)};\n display: flex;\n align-items: center;\n`;\n\nexport const FillParent = styled.div`\n flex: 1;\n`;\n\nexport const CloseButton = styled.button`\n position: absolute;\n background-color: transparent;\n border: none;\n padding: 0;\n top: 4px;\n right: 4px;\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:focus {\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n border-radius: 3px;\n }\n`;\n\nexport const Body = styled.div`\n padding: 5px 5px 5px 0;\n font-size: 14px;\n`;\n\nexport const IconContainer = styled.div<{ type: NOTIFICATION_TYPE }>`\n padding: 6px 10px;\n ${(props) => getTypeStyle(props.type)};\n`;\n\nexport const Footer = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 0 5px;\n`;\n\nexport const VisuallyHidden = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n`;\n","import React from 'react';\nimport { Close, Info, ReportProblem, ErrorOutline, CheckCircle } from '../../icons';\nimport { ActionButton } from '../Button';\nimport {\n Container,\n Notice,\n Title,\n IconContainer,\n FillParent,\n Body,\n CloseButton,\n Footer,\n VisuallyHidden,\n} from './style';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\ninterface NotificationManagerProps {\n // Notification Position\n position: NOTIFICATION_POSITION;\n // Callback for when stack is emptied\n onEmpty: () => void;\n // Aria label for the notification list\n ariaLabel?: string;\n}\n\n// Notice prop\ninterface NoticeProp extends NotificationOptions {\n leaving?: boolean;\n}\n\n// Manager state\ninterface NotificationManagerState {\n notices: NoticeProp[];\n}\n\ntype timeouts = {\n [id: string]: NodeJS.Timeout;\n};\n\nconst DEFAULT_DURATION = 5000;\n\n/**\n * Notification Manager class\n */\nclass NotificationManager extends React.Component<\n NotificationManagerProps,\n NotificationManagerState\n> {\n state: NotificationManagerState = {\n notices: [],\n };\n\n // bookkeeping for timeouts\n private timeouts: timeouts = {};\n\n // Set of notification ids\n private set = new Set<string>();\n\n // Refs for live regions to ensure they exist before updates\n private politeRegionRef = React.createRef<HTMLDivElement>();\n private assertiveRegionRef = React.createRef<HTMLDivElement>();\n\n /**\n * Removes a notification from stack if the notification with the given id is found.\n *\n * @param id\n */\n public remove = (id?: string) => {\n if (!id) return;\n\n // Trigger leaving animation.\n this.setState({\n notices: this.state.notices.map((notice) => ({\n ...notice,\n leaving: notice.id === id ? true : notice.leaving,\n })),\n });\n this.set.delete(id);\n\n // Remove notification on animation completion.\n setTimeout(() => {\n const notice = this.state.notices.find((notice) => notice.id === id);\n if (notice) {\n // call close callback, ignore any errors in callback.\n if (notice.onClose) {\n try {\n notice.onClose();\n } catch (e: unknown) {\n console.warn('Error in notification close callback', (e as Error).message);\n }\n }\n\n // Remove the notification\n this.setState(\n {\n notices: this.state.notices.filter((notice) => notice.id !== id),\n },\n () => {\n // Check if the stack is empty and then call the\n // empty callback function.\n if (this.state.notices.length === 0) {\n this.props.onEmpty();\n }\n },\n );\n }\n }, 550);\n };\n\n /**\n * Adds a notification to stack.\n *\n * @param notice\n */\n public add = async (notice: NotificationOptions) => {\n // Generate unique id if not provided.\n const id = notice.id || (Math.random() * 10 ** 7).toFixed(0);\n\n // De-dupe on id\n if (!this.set.has(id)) {\n const type = notice.type || NOTIFICATION_TYPE.INFO;\n const isUrgent =\n type === NOTIFICATION_TYPE.WARNING || type === NOTIFICATION_TYPE.DANGER;\n\n // Add notice to the top of stack.\n this.setState(\n (prevState) => ({\n notices: [\n {\n ...notice,\n id,\n },\n ...prevState.notices,\n ],\n }),\n () => {\n // Update live region after state update\n const announcement = `${notice.title} ${notice.description}`;\n this.updateLiveRegion(announcement, isUrgent);\n },\n );\n\n // set timeout for closing the notification.\n if (!notice.sticky) {\n this.timeouts[id] = setTimeout(\n () => this.remove(id),\n notice.duration || DEFAULT_DURATION,\n );\n }\n\n // Add id to the set.\n this.set.add(id);\n }\n\n return id;\n };\n\n /**\n * Update live region content with clear-then-set pattern for reliable VoiceOver announcements.\n *\n * @param content - The text content to announce\n * @param isAssertive - Whether to use assertive (alert) or polite (log) live region\n */\n private updateLiveRegion = (content: string, isAssertive: boolean) => {\n const region = isAssertive ? this.assertiveRegionRef.current : this.politeRegionRef.current;\n\n if (region) {\n // Add content after delay\n setTimeout(() => {\n if (region) {\n region.textContent = content;\n }\n }, 150);\n }\n };\n\n /**\n * Handler for close button click.\n *\n * @param id\n */\n public closeClickHandler = (id?: string) => () => {\n this.remove(id);\n };\n\n /**\n * Pause notification when user is hovering over it.\n *\n * @param id\n */\n public pause = (id?: string) => () => {\n if (id && this.timeouts[id]) {\n clearTimeout(this.timeouts[id]);\n delete this.timeouts[id];\n }\n };\n\n /**\n * Restart the removal of notification.\n *\n * @param id\n */\n public resume = (id?: string) => () => {\n const notice = this.state.notices.find((notice) => notice.id === id);\n if (!notice?.sticky && id && !this.timeouts[id]) {\n this.timeouts[id] = setTimeout(() => this.remove(id), DEFAULT_DURATION);\n }\n };\n\n /**\n * Clean up all pending timeouts when component unmounts\n */\n componentWillUnmount() {\n // Clear all pending timeouts\n Object.keys(this.timeouts).forEach((id) => {\n clearTimeout(this.timeouts[id]);\n });\n this.timeouts = {};\n this.set.clear();\n }\n\n render() {\n return (\n <Container position={this.props.position}>\n {/* Polite live region - uses role=\"log\" for better VoiceOver compatibility */}\n <VisuallyHidden\n ref={this.politeRegionRef}\n role=\"log\"\n aria-live=\"polite\"\n aria-atomic=\"false\"\n aria-relevant=\"additions text\"\n />\n\n {/* Assertive live region - pre-rendered and persistent */}\n <VisuallyHidden\n ref={this.assertiveRegionRef}\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n />\n\n {/* Visual notifications with list semantics */}\n <div role=\"list\" aria-label={this.props.ariaLabel}>\n {this.state.notices.map((notice) => {\n const {\n id,\n title,\n description,\n leaving,\n type = NOTIFICATION_TYPE.INFO,\n buttonText,\n buttonClick,\n closeButtonAriaLabel,\n } = notice;\n\n return (\n <Notice\n key={id}\n {...notice}\n position={this.props.position}\n className={leaving ? 'leave' : ''}\n onMouseEnter={this.pause(id)}\n onMouseLeave={this.resume(id)}\n role=\"listitem\"\n >\n <IconContainer type={type} aria-hidden=\"true\">\n {type === NOTIFICATION_TYPE.INFO && <Info />}\n {type === NOTIFICATION_TYPE.SUCCESS && <CheckCircle />}\n {type === NOTIFICATION_TYPE.WARNING && <ReportProblem />}\n {type === NOTIFICATION_TYPE.DANGER && <ErrorOutline />}\n </IconContainer>\n <FillParent>\n <Title type={type}>{title}</Title>\n <Body>{description}</Body>\n {buttonText && (\n <Footer>\n <ActionButton\n onClick={() => {\n buttonClick?.();\n }}\n >\n {buttonText}\n </ActionButton>\n </Footer>\n )}\n </FillParent>\n <CloseButton\n onClick={this.closeClickHandler(id)}\n aria-label={closeButtonAriaLabel || 'Close notification'}\n tabIndex={0}\n >\n <Close />\n </CloseButton>\n </Notice>\n );\n })}\n </div>\n </Container>\n );\n }\n}\n\nexport default NotificationManager;\n","import { type RefCallback } from 'react';\nimport { flushSync } from 'react-dom';\nimport { createRoot, type Root } from 'react-dom/client';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport NotificationManager from './NotificationManager';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\ntype NotificationProps = {\n /** Title of the notification */\n title: string;\n /** Body of the notification */\n description: string;\n /** Id for the notification, helps in de-duplication. */\n id?: string;\n /**\n * Duration for the notification in milliseconds\n * @default 5000\n */\n duration?: number;\n /**\n * Creates sticky notification\n * @default false\n */\n sticky?: boolean;\n /**\n * Type of notification\n * @default NOTIFICATION_TYPE.INFO\n */\n type?: NOTIFICATION_TYPE;\n /** Action button text */\n buttonText?: string;\n /** Action button click callback */\n buttonClick?: () => void;\n /** Notification close callback. */\n onClose?: () => void;\n /** Aria label for the close button on the notification. Defaults to \"Close notification\" */\n closeButtonAriaLabel?: string;\n};\n\n/**\n * This dummy component is used to extract props for documentation in Storybook.\n * @param props\n * @returns\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function StoryProps(props: NotificationProps) {\n return null;\n}\n\n/** Maps notification position to layer position */\nconst positionMap = {\n [NOTIFICATION_POSITION.TOP_LEFT]: LAYER_POSITION.TOP_LEFT,\n [NOTIFICATION_POSITION.TOP_RIGHT]: LAYER_POSITION.TOP_RIGHT,\n [NOTIFICATION_POSITION.BOTTOM_LEFT]: LAYER_POSITION.BOTTOM_LEFT,\n [NOTIFICATION_POSITION.BOTTOM_RIGHT]: LAYER_POSITION.BOTTOM_RIGHT,\n};\n\n/** Notification class */\nclass Notification {\n /** Helps in maintaining single instance for different positions. */\n private containers: Map<\n NOTIFICATION_POSITION,\n {\n manager: NotificationManager | null;\n root: Root;\n div: HTMLDivElement;\n }\n > = new Map();\n\n /** Pending add requests waiting for manager to mount */\n private pending: Map<NOTIFICATION_POSITION, Array<(manager: NotificationManager) => void>> =\n new Map();\n\n /**\n * Adds a notification\n *\n * @param position - The position where the notification should appear\n * @param options - Configuration options for the notification\n * @returns The notification ID or a promise that resolves to the notification ID\n */\n public add = (\n position: NOTIFICATION_POSITION,\n options: NotificationOptions,\n ariaLabel: string = 'Notifications',\n ) => {\n if (!this.containers.has(position)) {\n /** Callback ref to capture the NotificationManager instance when it mounts */\n const refCallback: RefCallback<NotificationManager> = (instance) => {\n if (instance) {\n const container = this.containers.get(position);\n if (container) {\n container.manager = instance;\n }\n\n // Process pending requests\n const queue = this.pending.get(position);\n if (queue) {\n queue.forEach((cb) => cb(instance));\n this.pending.delete(position);\n }\n }\n };\n\n const [Component] = LayerManager.renderLayer({\n closeOnEsc: false,\n closeOnOverlayClick: false,\n position: positionMap[position],\n alwaysOnTop: true,\n component: (\n <NotificationManager\n ref={refCallback}\n position={position}\n onEmpty={() => this.destroy(position)}\n ariaLabel={ariaLabel}\n />\n ),\n });\n\n // Create a div to mount the Component\n const div = document.createElement('div');\n document.body.appendChild(div);\n const root = createRoot(div);\n\n this.containers.set(position, {\n manager: null,\n root,\n div,\n });\n\n // Render the Component which will trigger the LayerManager's useEffect\n flushSync(() => {\n root.render(<Component />);\n });\n }\n\n const container = this.containers.get(position);\n if (container && container.manager) {\n return container.manager.add(options);\n }\n\n // If manager is not ready yet, add to pending queue\n return new Promise<string>((resolve) => {\n const queue = this.pending.get(position) || [];\n queue.push((manager) => {\n resolve(manager.add(options));\n });\n this.pending.set(position, queue);\n });\n };\n\n /**\n * Removes a notification\n *\n * @param position - The position of the notification container\n * @param id - The unique ID of the notification to remove\n */\n public remove = (position: NOTIFICATION_POSITION, id: string) => {\n const container = this.containers.get(position);\n if (container && container.manager) {\n container.manager.remove(id);\n }\n };\n\n /**\n * Destroys entire stack of notifications at a position.\n * Unmounts the React root and cleans up DOM elements.\n *\n * @param position - The position of the notification container to destroy\n */\n public destroy = (position: NOTIFICATION_POSITION) => {\n const container = this.containers.get(position);\n if (container) {\n container.root.unmount();\n if (document.body.contains(container.div)) {\n document.body.removeChild(container.div);\n }\n this.containers.delete(position);\n }\n };\n}\n\n/** Export a singleton instance */\nexport default new Notification();\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst SpinnerDiv = styled.div<SpinnerProp>`\n border: 4px solid ${getThemeValue(THEME_NAME.PRIMARY)};\n border-top: 4px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-radius: 50%;\n width: ${(props) => props.size}px;\n height: ${(props) => props.size}px;\n margin: 0 auto;\n animation: spin 1s linear infinite;\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\ntype SpinnerProp = {\n /**\n * Spinner's size\n * @default 30\n */\n size?: number;\n /**\n * Accessible label for screen readers\n * @default 'Loading'\n */\n label?: string;\n};\n\n/**\n * Spinner Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction SpinnerComponent(props: SpinnerProp, ref: React.Ref<HTMLDivElement>) {\n const { label = 'Loading', size = 30, ...rest } = props;\n return (\n <SpinnerDiv\n {...rest}\n ref={ref}\n size={size}\n role=\"status\"\n aria-label={label || undefined}\n aria-live=\"polite\"\n aria-busy=\"true\"\n />\n );\n}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProp>(SpinnerComponent);\nexport default Spinner;\n","import React, {\n Children,\n PropsWithChildren,\n useState,\n isValidElement,\n useEffect,\n useRef,\n} from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { Ellipsis } from '../../shared/styles';\nimport { Badge, BADGE_TYPE } from '../Badge';\n\nconst Container = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 400px;\n`;\n\nconst Header = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n\n @media (min-width: 601px) {\n &::before {\n position: absolute;\n top: 25px;\n left: 0;\n right: 0;\n height: 2px;\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n content: ' ';\n z-index: 0;\n }\n }\n\n & > * {\n z-index: 1;\n }\n`;\n\nconst HeaderButton = styled.button<{ active: boolean }>`\n border: none;\n padding: 16px 24px 16px 16px;\n font-size: 16px;\n cursor: pointer;\n background-color: ${(props) =>\n props.active\n ? getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)\n : getThemeValue(THEME_NAME.BACKGROUND)};\n font-weight: ${(props) => (props.active ? 'bold' : 'normal')};\n overflow: hidden;\n display: flex;\n align-items: center;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:disabled {\n cursor: not-allowed;\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:enabled:hover,\n &:focus {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHTER)};\n }\n\n @media (max-width: 600px) {\n & {\n display: none;\n }\n }\n`;\n\nconst MobileHeader = styled.div`\n padding: 16px;\n font-size: 16px;\n line-height: 18px;\n align-items: center;\n font-weight: bold;\n flex: 1;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n @media (min-width: 601px) {\n & {\n display: none;\n }\n }\n`;\n\ntype StepperProps = PropsWithChildren<{\n /**\n * Index of currently active step\n * @default 0\n */\n active?: number;\n /** Callback function for click event on a step */\n onStepClick?: (index: number) => void;\n}> &\n React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Stepper Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction StepperComponent(props: StepperProps, ref: React.Ref<HTMLDivElement>) {\n const { active: propsActive = 0, onStepClick, children, ...rest } = props;\n\n const [active, setActive] = useState(propsActive);\n const childrenArray = Children.toArray(children);\n const stepRefs = [] as Array<HTMLButtonElement | null>;\n\n const prevActiveRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (prevActiveRef.current !== propsActive) {\n setActive(propsActive);\n }\n prevActiveRef.current = propsActive;\n }, [propsActive]);\n\n const stepClickHandler = (index: number) => () => {\n setActive(index);\n onStepClick?.(index);\n // Move focus to the active step\n stepRefs[index]?.focus();\n };\n\n const getBadgeType = (index: number, completed: boolean, disabled: boolean) => {\n if (disabled) {\n return BADGE_TYPE.DISABLED;\n } else if (index === active) {\n return BADGE_TYPE.PRIMARY;\n } else if (completed) {\n return BADGE_TYPE.SUCCESS;\n }\n return BADGE_TYPE.DISABLED;\n };\n\n // Keyboard navigation for step buttons\n const onStepKeyDown = (index: number) => (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n const next = (index + 1) % childrenArray.length;\n stepRefs[next]?.focus();\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n const prev = (index - 1 + childrenArray.length) % childrenArray.length;\n stepRefs[prev]?.focus();\n }\n };\n\n return (\n <Container ref={ref} {...rest}>\n <Header role=\"tablist\" aria-label=\"Stepper Steps\">\n {Children.map(children, (child, index) => {\n if (!isValidElement(child)) return null;\n const reactElement = child as React.ReactElement<{\n disabled?: boolean;\n completed?: boolean;\n name?: string;\n }>;\n return (\n <HeaderButton\n ref={(el) => {\n stepRefs[index] = el;\n }}\n active={index === active}\n type=\"button\"\n role=\"tab\"\n aria-selected={index === active}\n aria-disabled={!!reactElement.props.disabled}\n tabIndex={index === active ? 0 : -1}\n disabled={reactElement.props.disabled}\n onClick={stepClickHandler(index)}\n onKeyDown={onStepKeyDown(index)}\n >\n <Badge\n inline\n type={getBadgeType(\n index,\n reactElement.props.completed || false,\n reactElement.props.disabled || false,\n )}\n />\n <Ellipsis>{reactElement.props.name}</Ellipsis>\n </HeaderButton>\n );\n })}\n <MobileHeader>\n <span>\n {isValidElement(childrenArray[active])\n ? (childrenArray[active] as React.ReactElement<{ name?: string }>).props\n .name\n : ''}\n </span>\n <Badge inline type={BADGE_TYPE.PRIMARY}>\n {active + 1} of {Children.count(children)}\n </Badge>\n </MobileHeader>\n </Header>\n {childrenArray[active]}\n </Container>\n );\n}\n\nconst Stepper = React.forwardRef(StepperComponent);\nexport default Stepper;\n","import React from 'react';\nimport styled from '@emotion/styled';\n\nconst Container = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n`;\n\ntype StepProps = {\n /**\n * Name of the step to be displayed in the header\n */\n name: string;\n /**\n * Disables the step\n * @default false\n */\n disabled?: boolean;\n /**\n * Marks the step as completed\n * @default false\n */\n completed?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Step Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction StepComponent(props: React.PropsWithChildren<StepProps>, ref: React.Ref<HTMLDivElement>) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { name, disabled, completed, ...rest } = props;\n return <Container {...rest} ref={ref} />;\n}\n\nconst Step = React.forwardRef(StepComponent);\nexport default Step;\n","import {\n useState,\n Children,\n useEffect,\n PropsWithChildren,\n isValidElement,\n forwardRef,\n} from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Button = styled.button<{ active: boolean }>`\n background-color: transparent;\n border: none;\n padding: 8px 12px;\n font-size: 14px;\n border-radius: 3px 3px 0 0;\n border-bottom: ${(props) =>\n props.active ? `3px solid ${getThemeValue(THEME_NAME.PRIMARY)}` : 'none'};\n color: ${(props) =>\n props.active\n ? getThemeValue(THEME_NAME.PRIMARY)\n : getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n cursor: pointer;\n\n &:hover,\n &:focus {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHTER)};\n border-bottom: ${(props) =>\n props.active\n ? `3px solid ${getThemeValue(THEME_NAME.PRIMARY)}`\n : `3px solid ${getThemeValue(THEME_NAME.PRIMARY)}`};\n }\n\n &[disabled] {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n border-bottom: 3px solid ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n`;\n\nconst ButtonContainer = styled.div`\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n margin-bottom: 5px;\n position: relative;\n`;\n\nconst TabBody = styled.div`\n min-height: 150px;\n`;\n\ntype ITabsProps = PropsWithChildren<{\n /**\n * Active Tab Index\n * @default 0\n */\n active?: number;\n /** OnChange event handler */\n onChange?: (index: number) => void;\n /** Props for div that contains tab body */\n bodyProps?: React.HTMLAttributes<HTMLDivElement>;\n}>;\n\n/**\n * Tabs Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction TabsComponent(props: ITabsProps, ref: React.Ref<HTMLDivElement>) {\n const { active: propsActive = 0, onChange, bodyProps, children, ...rest } = props;\n const [active, setActive] = useState(propsActive);\n const tabRefs = [] as Array<HTMLButtonElement | null>;\n const childrenArray = Children.toArray(children);\n\n const switchTab = (index: number) => () => {\n setActive(index);\n tabRefs[index]?.focus();\n onChange?.(index);\n };\n\n // Keyboard navigation for tab buttons\n const onTabKeyDown = (index: number) => (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n const next = (index + 1) % childrenArray.length;\n tabRefs[next]?.focus();\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n const prev = (index - 1 + childrenArray.length) % childrenArray.length;\n tabRefs[prev]?.focus();\n }\n };\n\n useEffect(() => {\n if (propsActive !== undefined) {\n setActive(propsActive);\n onChange?.(propsActive);\n }\n }, [propsActive, onChange]);\n\n // Generate unique IDs for tabs and panels using sanitized tab name and index\n const sanitize = (str: string) => str.replace(/[^a-zA-Z0-9_-]/g, '').toLowerCase();\n const tabIds = childrenArray.map((child, i) => {\n const name =\n isValidElement(child) && (child as React.ReactElement<{ name?: string }>).props.name\n ? (child as React.ReactElement<{ name?: string }>).props.name\n : `tab${i}`;\n return `nfui-tab-${sanitize(name || '')}-${i}`;\n });\n const panelIds = childrenArray.map((child, i) => {\n const name =\n isValidElement(child) && (child as React.ReactElement<{ name?: string }>).props.name\n ? (child as React.ReactElement<{ name?: string }>).props.name\n : `tab${i}`;\n return `nfui-tabpanel-${sanitize(name || '')}-${i}`;\n });\n\n // Sanity check for active index\n if (active === undefined || active < 0 || active >= childrenArray.length) {\n return null;\n }\n\n return (\n <>\n <ButtonContainer role=\"tablist\" aria-label=\"Tabs\" ref={ref} {...rest}>\n {childrenArray.map((child, index) => {\n const reactElement = child as React.ReactElement<{\n disabled?: boolean;\n name?: string;\n }>;\n return (\n <Button\n key={tabIds[index]}\n ref={(el) => {\n tabRefs[index] = el;\n }}\n id={tabIds[index]}\n type=\"button\"\n role=\"tab\"\n aria-selected={active === index}\n aria-controls={panelIds[index]}\n tabIndex={active === index ? 0 : -1}\n active={active === index}\n onClick={switchTab(index)}\n onKeyDown={onTabKeyDown(index)}\n disabled={isValidElement(child) ? reactElement.props.disabled : false}\n aria-disabled={\n isValidElement(child) ? reactElement.props.disabled : false\n }\n >\n {isValidElement(child) ? reactElement.props.name : ''}\n </Button>\n );\n })}\n </ButtonContainer>\n <TabBody\n {...bodyProps}\n id={panelIds[active]}\n role=\"tabpanel\"\n aria-labelledby={tabIds[active]}\n tabIndex={0}\n >\n {childrenArray[active]}\n </TabBody>\n </>\n );\n}\n\nconst Tabs = forwardRef(TabsComponent);\nexport default Tabs;\n","import { PropsWithChildren } from 'react';\n\ntype TabProps = PropsWithChildren<{\n /** Name of the tab. This shown in the tab's button */\n name: string;\n /**\n * If the tab is disabled\n * @default false\n */\n disabled?: boolean;\n}>;\n\nconst Tab = (props: TabProps) => {\n const { children } = props;\n return <>{children}</>;\n};\n\nexport default Tab;\n","import { createRoot, type Root } from 'react-dom/client';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport { Card } from '../Card';\n\nexport interface ToastOptions {\n text: string;\n buttonText?: string;\n buttonClick?: () => void;\n duration?: number;\n type?: TOAST_TYPE;\n}\n\nexport enum TOAST_TYPE {\n NORMAL = 'NORMAL',\n INFO = 'INFO',\n SUCCESS = 'SUCCESS',\n WARNING = 'WARNING',\n DANGER = 'DANGER',\n}\n\nconst getBackgroundColor = (type: TOAST_TYPE) => {\n switch (type) {\n case TOAST_TYPE.INFO:\n return getThemeValue(THEME_NAME.INFO);\n case TOAST_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS);\n case TOAST_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING);\n case TOAST_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR);\n case TOAST_TYPE.NORMAL:\n return getThemeValue(THEME_NAME.TOAST);\n }\n};\n\nconst ToastContainer = styled(Card)<{ type: TOAST_TYPE }>`\n box-sizing: border-box;\n border-radius: 3px;\n padding: 12px;\n background-color: ${(props) => getBackgroundColor(props.type)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n margin: 20px;\n font-size: 14px;\n line-height: 20px;\n transform: translateY(100%);\n transition: transform 0.3s ease;\n width: 344px;\n display: flex;\n align-items: center;\n position: relative;\n\n & svg {\n width: 20px;\n height: 20px;\n fill: currentColor;\n }\n\n @media (max-width: 480px) {\n & {\n margin: 0;\n width: 100vw;\n border-radius: 0;\n }\n }\n\n .nf-layer-enter & {\n transform: translateY(0%);\n }\n`;\n\nconst TextContainer = styled.div`\n flex: 1;\n`;\n\nconst CloseContainer = styled.button`\n background-color: transparent;\n color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n padding: 6px 10px;\n border: none;\n border-radius: 3px;\n text-transform: uppercase;\n cursor: pointer;\n\n &:focus {\n background-color: rgba(255, 255, 255, 0.1);\n }\n`;\n\nconst DEFAULT_DURATION = 2000;\n\nconst createAriaLiveRegion = (id: string, ariaLive: 'polite' | 'assertive') => {\n const region = document.createElement('div');\n region.id = id;\n region.style.position = 'absolute';\n region.style.width = '1px';\n region.style.height = '1px';\n region.style.padding = '0';\n region.style.margin = '-1px';\n region.style.overflow = 'hidden';\n region.style.clip = 'rect(0, 0, 0, 0)';\n region.style.whiteSpace = 'nowrap';\n region.style.borderWidth = '0';\n region.setAttribute('role', ariaLive === 'assertive' ? 'alert' : 'log');\n region.setAttribute('aria-live', ariaLive);\n region.setAttribute('aria-atomic', 'true');\n return region;\n};\n\nclass Toast {\n private element?: HTMLDivElement;\n private ariaLiveContainer?: HTMLDivElement;\n private toast?: ReturnType<typeof LayerManager.renderLayer>;\n private timeout?: NodeJS.Timeout;\n private root?: Root;\n private politeRegion?: HTMLDivElement;\n private assertiveRegion?: HTMLDivElement;\n private isPaused: boolean = false;\n private currentOptions: ToastOptions | null = null;\n\n constructor() {\n if (typeof document === 'undefined') return;\n\n this.element = document?.createElement('div');\n this.ariaLiveContainer = document?.createElement('div');\n this.ariaLiveContainer.id = 'nf-toast-container';\n document.body.appendChild(this.ariaLiveContainer);\n\n this.politeRegion = createAriaLiveRegion('nf-toast-polite-region', 'polite');\n this.assertiveRegion = createAriaLiveRegion('nf-toast-assertive-region', 'assertive');\n this.ariaLiveContainer.appendChild(this.politeRegion);\n this.ariaLiveContainer.appendChild(this.assertiveRegion);\n\n this.setupKeyboardListeners();\n }\n\n /**\n * Clean up event listeners and DOM elements\n * Call this when the app is tearing down (useful for tests)\n */\n public destroy = () => {\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n this.remove();\n if (this.ariaLiveContainer && document.body.contains(this.ariaLiveContainer)) {\n document.body.removeChild(this.ariaLiveContainer);\n }\n this.politeRegion = undefined;\n this.assertiveRegion = undefined;\n this.ariaLiveContainer = undefined;\n };\n\n /**\n * Set up keyboard listener for dismissing toast with Escape key\n */\n private setupKeyboardListeners = () => {\n if (typeof document !== 'undefined') {\n document.addEventListener('keydown', this.handleKeyDown);\n }\n };\n\n /**\n * Handle keyboard events for toast interaction\n */\n private handleKeyDown = (event: KeyboardEvent) => {\n if (!this.toast) return;\n\n // Escape key dismisses the toast\n if (event.key === 'Escape') {\n this.remove();\n }\n // Space key pauses/resumes auto-dismiss\n else if (event.key === ' ' && this.currentOptions) {\n event.preventDefault();\n if (this.isPaused) {\n this.resumeTimeout();\n } else {\n this.pauseTimeout();\n }\n }\n };\n\n /**\n * Update the appropriate live region with toast content\n */\n private updateLiveRegion = (content: string, isAssertive: boolean) => {\n const region = isAssertive ? this.assertiveRegion : this.politeRegion;\n\n if (region) {\n region.textContent = '';\n // Add content after delay\n setTimeout(() => {\n if (region) {\n region.textContent = content;\n }\n }, 200);\n }\n };\n\n public remove = () => {\n if (this.toast) {\n this.toast[1]();\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = undefined;\n }\n }\n this.toast = undefined;\n this.currentOptions = null;\n this.isPaused = false;\n\n setTimeout(() => {\n if (!this.toast && this.root) {\n this.root.unmount();\n this.root = undefined;\n }\n }, 300);\n };\n\n /**\n * Pause toast auto-dismiss\n */\n private pauseTimeout = () => {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.isPaused = true;\n }\n };\n\n /**\n * Resume toast auto-dismiss\n */\n private resumeTimeout = () => {\n if (this.currentOptions && this.isPaused) {\n this.timeout = setTimeout(() => {\n this.remove();\n }, this.currentOptions.duration || DEFAULT_DURATION);\n this.isPaused = false;\n }\n };\n\n /**\n * Pause toast when user is hovering over it.\n */\n public pause = () => {\n this.pauseTimeout();\n };\n\n /**\n * Restart the removal of toast.\n */\n public resume = (options: ToastOptions) => () => {\n this.currentOptions = options;\n this.resumeTimeout();\n };\n\n public add(options: ToastOptions) {\n if (!this.element) return;\n\n const { text, buttonText, buttonClick, duration, type = TOAST_TYPE.NORMAL } = options;\n this.currentOptions = options;\n this.isPaused = false;\n this.remove();\n\n // Determine if this is an assertive message (warning/danger)\n const isAssertive = type === TOAST_TYPE.WARNING || type === TOAST_TYPE.DANGER;\n\n // Announce to screen readers\n const announcement = buttonText ? `${text} ${buttonText} button available` : text;\n this.updateLiveRegion(announcement, isAssertive);\n\n this.toast = LayerManager.renderLayer({\n exitDelay: 300,\n closeOnEsc: false,\n closeOnOverlayClick: false,\n alwaysOnTop: true,\n position: LAYER_POSITION.BOTTOM_LEFT,\n component: (\n <>\n {/* Visual toast (hidden from screen readers) */}\n <ToastContainer\n {...options}\n type={type}\n elevated\n onMouseEnter={this.pause}\n onMouseLeave={this.resume(options)}\n aria-hidden=\"true\"\n >\n <TextContainer>{text}</TextContainer>\n {buttonText && (\n <CloseContainer\n onClick={buttonClick}\n type=\"button\"\n aria-label={`${buttonText} - Press Space to pause auto-dismiss, Escape to close`}\n >\n {buttonText}\n </CloseContainer>\n )}\n </ToastContainer>\n </>\n ),\n });\n const Component = this.toast[0];\n this.root = createRoot(this.element);\n this.root.render(<Component />);\n\n this.timeout = setTimeout(() => {\n this.remove();\n }, duration || DEFAULT_DURATION);\n }\n}\n\nexport default new Toast();\n","import React, { useId } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nexport enum TOOLTIP_POSITION {\n TOP = 'TOP',\n BOTTOM = 'BOTTOM',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n}\n\nconst positionStyle = {\n [TOOLTIP_POSITION.LEFT]: `\n left: 0;\n transform: translateX(-50%) scale(0);\n `,\n [TOOLTIP_POSITION.RIGHT]: `\n right: 0;\n transform: translateX(50%) scale(0);\n `,\n [TOOLTIP_POSITION.TOP]: `\n top: 0;\n transform: translateY(-10px) scale(0);\n `,\n [TOOLTIP_POSITION.BOTTOM]: `\n bottom: 0;\n transform: translateY(10px) scale(0);\n `,\n};\n\nconst positionHoverStyle = {\n [TOOLTIP_POSITION.LEFT]: `\n transform: translateX(-100%) scale(1);\n `,\n [TOOLTIP_POSITION.RIGHT]: `\n transform: translateX(100%) scale(1);\n `,\n [TOOLTIP_POSITION.TOP]: `\n transform: translateY(-25px) scale(1);\n `,\n [TOOLTIP_POSITION.BOTTOM]: `\n transform: translateY(25px) scale(1);\n `,\n};\n\nconst TooltipDiv = styled.div<{ position: TOOLTIP_POSITION }>`\n position: absolute;\n background-color: ${getThemeValue(THEME_NAME.TOOLTIP_COLOR)};\n padding: 5px;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-radius: 3px;\n transition: transform 0.3s ease;\n font-size: 12px;\n z-index: 1;\n ${(props) => positionStyle[props.position]}\n`;\n\nconst TooltipContainer = styled.div<{ position: TOOLTIP_POSITION }>`\n position: relative;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n\n &:hover ${TooltipDiv}, &:focus-within ${TooltipDiv} {\n ${(props) => positionHoverStyle[props.position]}\n }\n`;\n\ntype TooltipProps = React.PropsWithChildren<{\n /** Text to show in the tooltip */\n tooltipText: string | React.ReactNode;\n /**\n * Position of the tooltip\n * @default TOOLTIP_POSITION.BOTTOM\n */\n position?: TOOLTIP_POSITION;\n}> &\n React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Tooltip Component\n * @param props - Component props\n * @param ref - Ref forwarded to the underlying HTMLDivElement\n */\nfunction TooltipComponent(props: TooltipProps, ref: React.Ref<HTMLDivElement>) {\n const { children, position = TOOLTIP_POSITION.BOTTOM, ...rest } = props;\n const tooltipId = useId();\n\n // Clone the child to inject aria-describedby and tabIndex if possible\n const trigger = React.isValidElement(children)\n ? React.cloneElement(\n children as React.ReactElement<{ tabIndex?: number; 'aria-describedby'?: string }>,\n {\n 'aria-describedby': tooltipId,\n tabIndex:\n (\n children as React.ReactElement<{\n tabIndex?: number;\n 'aria-describedby'?: string;\n }>\n ).props &&\n typeof (\n children as React.ReactElement<{\n tabIndex?: number;\n 'aria-describedby'?: string;\n }>\n ).props.tabIndex !== 'undefined'\n ? (\n children as React.ReactElement<{\n tabIndex?: number;\n 'aria-describedby'?: string;\n }>\n ).props.tabIndex\n : 0,\n },\n )\n : children;\n\n return (\n <TooltipContainer {...rest} ref={ref} position={position}>\n {trigger}\n <TooltipDiv id={tooltipId} aria-hidden=\"true\" role=\"tooltip\" position={position}>\n {rest.tooltipText as React.ReactNode}\n </TooltipDiv>\n </TooltipContainer>\n );\n}\n\nconst Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(TooltipComponent);\nexport default Tooltip;\n"],"names":["Accordion","props","active","setActive","useState","prevActive","useRef","useEffect","undefined","current","onStepClick","index","disabled","newIndex","_jsx","_Fragment","Children","map","children","child","isValidElement","reactElement","cloneElement","open","CheckCircle","_jsxs","svg","height","viewBox","width","fill","path","d","ExpandMore","FiberManualRecord","circle","cx","cy","r","Close","THEME_NAME","themeNameMap","getThemeValue","key","Ellipsis","styled","Header","BORDER_LIGHT_COLOR","Body","Footer","ErrorContainer","ERROR","BADGE_TYPE","BadgeSpan","type","SUCCESS","WARNING","DISABLED","PRIMARY","TEXT_COLOR_LIGHT","inline","BadgeComponent","ref","Badge","React","forwardRef","StyledCard","BACKGROUND","elevated","MODAL_SHADOW","SHADOW","CardComponent","Card","Step","StepHeader","TEXT_COLOR_DARK","PRIMARY_LIGHT","HeaderContainer","completed","LIGHT_GREY","ExpandContainer","StepBody","AccordionBadge","AccordionStepBody","AccordionStepFooter","AccordionStepComponent","setHeight","header","errorText","restProps","headerId","useId","regionId","contentRef","el","scrollHeight","onClick","aria-expanded","aria-controls","id","aria-hidden","DANGER","role","aria-labelledby","AccordionStep","StyledButton","BORDER_COLOR","DISABLED_BACKGROUND","ButtonComponent","rest","Button","StyledLinkButton","LinkButtonComponent","LinkButton","StyledRaisedButton","HOVER_SHADOW","RaisedButtonComponent","RaisedButton","StyledActionButton","ActionButtonComponent","ActionButton","StyledIconButton","IconButtonComponent","IconButton","Container","ERROR_LIGHT","ChipComponent","label","onCloseClick","closeButtonAriaLabel","keyUpHandler","e","buttonKeyDownHandler","stopPropagation","onKeyUp","onKeyDown","aria-label","Chip","ORIENTATION","DragContext","createContext","Item","showIndicator","orientation","VERTICAL","HORIZONTAL","dragging","DragKnob","DragItem","dragOver","totalItems","setAnnouncement","touchTimerRef","context","useContext","vibrate","duration","navigator","dragStartHandler","setStartIndex","setIsDragging","dragOverHandler","preventDefault","startIndex","dragExitHandler","dropHandler","drop","touchStartHandler","clearTimeout","setTimeout","setDragOver","document","body","style","overflow","touchMoveHandler","touch","touches","isDragging","elementFromPoint","clientX","clientY","overAttr","closest","getAttribute","overIndex","parseInt","touchEndHandler","handleKeyDown","isVertical","moveUp","moveDown","isGrabbed","i18n","replacePlaceholders","droppedAnnouncementTemplate","position","startGrab","grabbedAnnouncementTemplate","cancel","cancelledAnnouncementTemplate","onDrop","movedAnnouncementTemplate","draggable","data-drag-index","tabIndex","itemAriaLabelTemplate","aria-grabbed","onDragStart","onDragOver","onDragLeave","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","dragHandleAriaLabel","DragIndicator","VisuallyHidden","DragAndDropComponent","originalIndex","setOriginalIndex","announcement","childrenArray","toArray","length","template","data","replace","String","grabKey","dropKey","altDropKey","cancelKey","moveKeys","Provider","value","aria-live","aria-atomic","DragAndDrop","Label","DISABLED_BORDER","touched","required","text","ChipInputComponent","propValue","addedAnnouncementTemplate","removedAnnouncementTemplate","setText","setTouched","setValue","InputRef","errorId","useImperativeHandle","replacePlaceholder","prevPropValueRef","Array","isArray","prevValue","isEqual","every","val","setCustomValidity","updateValue","newValue","deduped","from","Set","onChange","handleFocus","onFocus","handleChange","target","handleKeyUp","trim","validity","valid","removeChip","chipToRemove","filter","chip","start","end","newItems","item","splice","input","aria-required","aria-invalid","aria-describedby","div","span","ChipInput","LAYER_POSITION","defaultConfig","closeOnEsc","overlay","component","exitDelay","closeOnOverlayClick","alwaysOnTop","POSITION_STYLE","BACKDROP_COLOR","zIndex","KEY_CODES","ESC","LayerManager","layers","nextIndex","timeoutIds","Map","destroy","keyupHandler","removeEventListener","forEach","clear","layer","contains","element","removeChild","unmount","resp","setAttribute","findIndex","timeoutId","window","delete","config","closeCallback","err","Error","console","warn","message","set","Empty","renderLayer","layerConfig","currentIndex","className","layerId","overlayClickHandler","find","l","closeFn","LayerContainer","divElement","setDivElement","createElement","appendChild","currentLayer","push","modifiedElements","originalBodyOverflow","scrollY","bodyChildren","tagName","hadAriaHidden","hasAttribute","previousValue","removeAttribute","scrollTo","createPortal","keyCode","lastLayer","slice","addEventListener","DialogContainer","Dialog","Component","shouldComponentUpdate","nextProps","nextState","state","show","componentWillUnmount","closeDialog","restoreFocus","onCloseFn","render","LayerComponent","lastFocusedElement","dialogRef","createRef","getFocusableElements","querySelectorAll","focusableElements","firstElement","lastElement","shiftKey","activeElement","focus","elementToBeFocused","setDialogRef","node","setInitialFocus","root","firstChild","firstElementChild","DIALOG","aria-modal","setState","close","defaultProps","dialogCounter","AlertDialog","titleId","descriptionId","dialogProps","dialog","DialogHeader","DialogBody","DialogFooter","buttonText","Promise","resolve","onClose","ConfirmDialog","yesText","noText","confirm","reject","TextField","Input","forwardedRef","prevValueRef","internalRef","onChangeHandler","displayName","TextAreaComponent","propsValue","TextArea","SelectField","ArrowContainer","SelectComponent","multiple","option","Select","StyledCheckmark","HiddenInput","CheckboxComponent","fwdRef","indeterminate","checked","useCallback","aria-checked","Checkbox","Switch","ToggleComponent","Toggle","StyledRadio","RadioComponent","Radio","RadioGroup","RadioButtonComponent","RadioButton","MenuContainer","MenuInner","multiSelect","newVal","includes","container","currentTarget","items","indexOf","click","focusHandler","relatedTarget","firstItem","querySelector","MenuContext","aria-multiselectable","Menu","selected","multiselect","MenuItemInner","clickHandler","arr","aria-selected","readOnly","MenuItem","POPOVER_POSITION","positionMap","PopoverDiv","Popper","translateX","translateY","PopoverComponent","propsOpen","setOpen","closing","setClosing","translate","setTranslate","x","y","popperRef","containerRef","triggerRef","closeTimeoutRef","focusTimeoutRef","popperId","triggerId","keyupEventHandler","clickOutsideHandler","rafId","requestAnimationFrame","cancelAnimationFrame","top","left","right","getBoundingClientRect","viewportWidth","documentElement","clientWidth","viewportHeight","clientHeight","translation","Math","abs","nativeEvent","stopImmediatePropagation","Popover","DropdownTrigger","displayValue","menuId","toggleOpen","assignRefs","combinedRef","inputMode","aria-haspopup","DropdownComponent","outerRef","menuRef","getDisplayValue","currentValue","currentChildren","findLabel","Boolean","join","timer","changeHandler","handleForwardedRef","BOTTOM_LEFT","Dropdown","BodyText","InputContainer","StyledInput","PromptDialog","inputProps","submitText","cancelText","form","onSubmit","submit","valueChange","defaultValue","DRAWER_POSITION","positionStyle","size","before","after","DrawerDiv","TOP_LEFT","TOP_RIGHT","Drawer","getDerivedStateFromProps","componentDidMount","handleOpen","componentDidUpdate","prevProps","setRefProp","drawerRef","setDrawerRef","forceUpdate","GroupComponent","Group","Modal","modalRef","ModalContainer","setModalRef","NOTIFICATION_POSITION","NOTIFICATION_TYPE","getEntryAnimation","getExitAnimation","getBorderColor","SUCCESS_LIGHT","WARNING_LIGHT","INFO_LIGHT","getTitleColor","INFO","getTypeStyle","Notice","Title","FillParent","CloseButton","IconContainer","DEFAULT_DURATION","NotificationManager","Object","keys","timeouts","politeRegionRef","aria-relevant","assertiveRegionRef","ariaLabel","notices","notice","title","description","leaving","buttonClick","onMouseEnter","pause","onMouseLeave","resume","Info","ReportProblem","ErrorOutline","closeClickHandler","remove","onEmpty","add","random","toFixed","has","isUrgent","prevState","updateLiveRegion","sticky","content","isAssertive","region","textContent","BOTTOM_RIGHT","Notification","containers","pending","options","refCallback","instance","get","manager","queue","cb","createRoot","flushSync","SpinnerDiv","SpinnerComponent","aria-busy","Spinner","HeaderButton","PRIMARY_LIGHTER","MobileHeader","StepperComponent","propsActive","stepRefs","prevActiveRef","stepClickHandler","getBadgeType","onStepKeyDown","next","prev","aria-disabled","name","count","Stepper","StepComponent","ButtonContainer","TabBody","TabsComponent","bodyProps","tabRefs","switchTab","onTabKeyDown","sanitize","str","toLowerCase","tabIds","i","panelIds","Tabs","Tab","TOAST_TYPE","getBackgroundColor","TOAST","ToastContainer","TextContainer","CloseContainer","createAriaLiveRegion","ariaLive","padding","margin","clip","whiteSpace","borderWidth","Toast","currentOptions","isPaused","toast","timeout","ariaLiveContainer","politeRegion","assertiveRegion","setupKeyboardListeners","event","resumeTimeout","pauseTimeout","TOOLTIP_POSITION","positionHoverStyle","TooltipDiv","TOOLTIP_COLOR","TooltipContainer","TooltipComponent","tooltipId","trigger","tooltipText","Tooltip"],"mappings":"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"}