@transferwise/components 46.93.1 → 46.93.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 (165) hide show
  1. package/build/button/LegacyButton.js +0 -2
  2. package/build/button/LegacyButton.js.map +1 -1
  3. package/build/button/LegacyButton.mjs +0 -2
  4. package/build/button/LegacyButton.mjs.map +1 -1
  5. package/build/carousel/Carousel.js +1 -3
  6. package/build/carousel/Carousel.js.map +1 -1
  7. package/build/carousel/Carousel.mjs +1 -3
  8. package/build/carousel/Carousel.mjs.map +1 -1
  9. package/build/checkbox/Checkbox.js.map +1 -1
  10. package/build/checkbox/Checkbox.mjs.map +1 -1
  11. package/build/checkboxButton/CheckboxButton.js +1 -1
  12. package/build/checkboxButton/CheckboxButton.js.map +1 -1
  13. package/build/checkboxButton/CheckboxButton.mjs +1 -1
  14. package/build/checkboxButton/CheckboxButton.mjs.map +1 -1
  15. package/build/checkboxOption/CheckboxOption.js.map +1 -1
  16. package/build/checkboxOption/CheckboxOption.mjs.map +1 -1
  17. package/build/common/bottomSheet/BottomSheet.js.map +1 -1
  18. package/build/common/bottomSheet/BottomSheet.mjs.map +1 -1
  19. package/build/common/dateUtils/isDateValid/isDateValid.js +3 -3
  20. package/build/common/dateUtils/isDateValid/isDateValid.js.map +1 -1
  21. package/build/common/dateUtils/isDateValid/isDateValid.mjs +3 -3
  22. package/build/common/dateUtils/isDateValid/isDateValid.mjs.map +1 -1
  23. package/build/common/panel/Panel.js +3 -8
  24. package/build/common/panel/Panel.js.map +1 -1
  25. package/build/common/panel/Panel.mjs +3 -8
  26. package/build/common/panel/Panel.mjs.map +1 -1
  27. package/build/dimmer/dimmerManager/DimmerManager.js.map +1 -1
  28. package/build/dimmer/dimmerManager/DimmerManager.mjs.map +1 -1
  29. package/build/dropFade/DropFade.js.map +1 -1
  30. package/build/dropFade/DropFade.mjs.map +1 -1
  31. package/build/emphasis/EmphasisHtmlTransformer.js.map +1 -1
  32. package/build/emphasis/EmphasisHtmlTransformer.mjs.map +1 -1
  33. package/build/inputs/Input.js +1 -3
  34. package/build/inputs/Input.js.map +1 -1
  35. package/build/inputs/Input.mjs +1 -3
  36. package/build/inputs/Input.mjs.map +1 -1
  37. package/build/inputs/SelectInput.js +1 -3
  38. package/build/inputs/SelectInput.js.map +1 -1
  39. package/build/inputs/SelectInput.mjs +1 -3
  40. package/build/inputs/SelectInput.mjs.map +1 -1
  41. package/build/inputs/_ButtonInput.js +1 -3
  42. package/build/inputs/_ButtonInput.js.map +1 -1
  43. package/build/inputs/_ButtonInput.mjs +1 -3
  44. package/build/inputs/_ButtonInput.mjs.map +1 -1
  45. package/build/inputs/_Popover.js +1 -3
  46. package/build/inputs/_Popover.js.map +1 -1
  47. package/build/inputs/_Popover.mjs +1 -3
  48. package/build/inputs/_Popover.mjs.map +1 -1
  49. package/build/moneyInput/currencyFormatting.js +2 -2
  50. package/build/moneyInput/currencyFormatting.js.map +1 -1
  51. package/build/moneyInput/currencyFormatting.mjs +2 -2
  52. package/build/moneyInput/currencyFormatting.mjs.map +1 -1
  53. package/build/nudge/Nudge.js +0 -2
  54. package/build/nudge/Nudge.js.map +1 -1
  55. package/build/nudge/Nudge.mjs +0 -2
  56. package/build/nudge/Nudge.mjs.map +1 -1
  57. package/build/promoCard/PromoCardContext.js +0 -1
  58. package/build/promoCard/PromoCardContext.js.map +1 -1
  59. package/build/promoCard/PromoCardContext.mjs +0 -1
  60. package/build/promoCard/PromoCardContext.mjs.map +1 -1
  61. package/build/promoCard/PromoCardGroup.js +0 -1
  62. package/build/promoCard/PromoCardGroup.js.map +1 -1
  63. package/build/promoCard/PromoCardGroup.mjs +0 -1
  64. package/build/promoCard/PromoCardGroup.mjs.map +1 -1
  65. package/build/select/Select.js +19 -25
  66. package/build/select/Select.js.map +1 -1
  67. package/build/select/Select.mjs +19 -25
  68. package/build/select/Select.mjs.map +1 -1
  69. package/build/table/Table.js +1 -3
  70. package/build/table/Table.js.map +1 -1
  71. package/build/table/Table.mjs +1 -3
  72. package/build/table/Table.mjs.map +1 -1
  73. package/build/tooltip/Tooltip.js +2 -6
  74. package/build/tooltip/Tooltip.js.map +1 -1
  75. package/build/tooltip/Tooltip.mjs +2 -6
  76. package/build/tooltip/Tooltip.mjs.map +1 -1
  77. package/build/types/button/LegacyButton.d.ts.map +1 -1
  78. package/build/types/carousel/Carousel.d.ts.map +1 -1
  79. package/build/types/checkbox/Checkbox.d.ts.map +1 -1
  80. package/build/types/checkboxOption/CheckboxOption.d.ts +1 -2
  81. package/build/types/checkboxOption/CheckboxOption.d.ts.map +1 -1
  82. package/build/types/common/bottomSheet/BottomSheet.d.ts.map +1 -1
  83. package/build/types/common/dateUtils/isDateValid/isDateValid.d.ts.map +1 -1
  84. package/build/types/common/panel/Panel.d.ts.map +1 -1
  85. package/build/types/dimmer/dimmerManager/DimmerManager.d.ts +1 -1
  86. package/build/types/dimmer/dimmerManager/DimmerManager.d.ts.map +1 -1
  87. package/build/types/dropFade/DropFade.d.ts.map +1 -1
  88. package/build/types/emphasis/EmphasisHtmlTransformer.d.ts +2 -2
  89. package/build/types/emphasis/EmphasisHtmlTransformer.d.ts.map +1 -1
  90. package/build/types/inputs/Input.d.ts.map +1 -1
  91. package/build/types/inputs/SelectInput.d.ts.map +1 -1
  92. package/build/types/inputs/_ButtonInput.d.ts.map +1 -1
  93. package/build/types/inputs/_Popover.d.ts.map +1 -1
  94. package/build/types/nudge/Nudge.d.ts.map +1 -1
  95. package/build/types/promoCard/PromoCardContext.d.ts.map +1 -1
  96. package/build/types/promoCard/PromoCardGroup.d.ts.map +1 -1
  97. package/build/types/select/Select.d.ts.map +1 -1
  98. package/build/types/table/Table.d.ts.map +1 -1
  99. package/build/types/tooltip/Tooltip.d.ts.map +1 -1
  100. package/build/types/withId/story/source.d.ts +1 -1
  101. package/build/types/withId/story/source.d.ts.map +1 -1
  102. package/build/upload/steps/completeStep/completeStep.js +1 -0
  103. package/build/upload/steps/completeStep/completeStep.js.map +1 -1
  104. package/build/upload/steps/completeStep/completeStep.mjs +1 -0
  105. package/build/upload/steps/completeStep/completeStep.mjs.map +1 -1
  106. package/build/upload/steps/processingStep/processingStep.js +1 -0
  107. package/build/upload/steps/processingStep/processingStep.js.map +1 -1
  108. package/build/upload/steps/processingStep/processingStep.mjs +1 -0
  109. package/build/upload/steps/processingStep/processingStep.mjs.map +1 -1
  110. package/package.json +6 -3
  111. package/src/accordion/Accordion.story.tsx +2 -2
  112. package/src/alert/Alert.story.tsx +4 -4
  113. package/src/alert/Alert.tests.story.tsx +3 -3
  114. package/src/button/LegacyButton.tsx +0 -2
  115. package/src/carousel/Carousel.spec.tsx +0 -4
  116. package/src/carousel/Carousel.tsx +0 -1
  117. package/src/checkbox/Checkbox.tsx +0 -1
  118. package/src/checkboxButton/CheckboxButton.story.tsx +0 -2
  119. package/src/checkboxButton/CheckboxButton.tsx +1 -1
  120. package/src/checkboxOption/CheckboxOption.tsx +1 -2
  121. package/src/common/bottomSheet/BottomSheet.spec.tsx +0 -1
  122. package/src/common/bottomSheet/BottomSheet.story.tsx +1 -1
  123. package/src/common/bottomSheet/BottomSheet.tsx +0 -1
  124. package/src/common/dateUtils/isDateValid/isDateValid.ts +5 -3
  125. package/src/common/hooks/useHasIntersected/useHasIntersected.spec.js +0 -2
  126. package/src/common/panel/Panel.tsx +2 -13
  127. package/src/dimmer/Dimmer.spec.tsx +3 -1
  128. package/src/dimmer/Dimmer.story.tsx +3 -2
  129. package/src/dimmer/dimmerManager/DimmerManager.ts +1 -1
  130. package/src/display/Display.story.tsx +0 -2
  131. package/src/drawer/Drawer.story.tsx +6 -4
  132. package/src/dropFade/DropFade.story.tsx +1 -2
  133. package/src/dropFade/DropFade.tsx +0 -1
  134. package/src/emphasis/EmphasisHtmlTransformer.spec.tsx +4 -4
  135. package/src/emphasis/EmphasisHtmlTransformer.ts +2 -2
  136. package/src/flowNavigation/FlowNavigation.story.tsx +6 -1
  137. package/src/inputs/Input.tsx +0 -1
  138. package/src/inputs/SelectInput.story.tsx +6 -2
  139. package/src/inputs/SelectInput.tsx +1 -7
  140. package/src/inputs/_ButtonInput.tsx +0 -1
  141. package/src/inputs/_Popover.tsx +0 -1
  142. package/src/link/Link.story.tsx +0 -1
  143. package/src/listItem/ListItem.story.tsx +0 -2
  144. package/src/markdown/Markdown.spec.tsx +0 -1
  145. package/src/modal/Modal.story.tsx +14 -4
  146. package/src/moneyInput/currencyFormatting.ts +3 -3
  147. package/src/nudge/Nudge.tsx +0 -2
  148. package/src/popover/Popover.story.tsx +10 -2
  149. package/src/promoCard/PromoCardContext.tsx +0 -1
  150. package/src/promoCard/PromoCardGroup.story.tsx +3 -15
  151. package/src/promoCard/PromoCardGroup.tsx +0 -1
  152. package/src/provider/theme/ThemeProvider.story.tsx +3 -5
  153. package/src/select/Select.spec.tsx +0 -1
  154. package/src/select/Select.tsx +0 -3
  155. package/src/select/option/Option.spec.js +2 -2
  156. package/src/selectOption/SelectOption.story.tsx +1 -2
  157. package/src/slidingPanel/SlidingPanel.story.tsx +1 -1
  158. package/src/table/Table.tsx +0 -1
  159. package/src/test-utils/jest.setup.ts +0 -1
  160. package/src/tooltip/Tooltip.tsx +0 -2
  161. package/src/upload/Upload.events.spec.js +4 -4
  162. package/src/upload/steps/completeStep/completeStep.tsx +1 -1
  163. package/src/upload/steps/processingStep/processingStep.tsx +1 -1
  164. package/src/withId/story/source.tsx +1 -1
  165. package/src/withId/withId.story.tsx +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../src/select/Select.tsx"],"sourcesContent":["import { useTheme } from '@wise/components-theming';\nimport { clsx } from 'clsx';\nimport { useState, useEffect, useRef, useMemo, useId } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport Button, { ButtonProps } from '../button';\nimport Chevron from '../chevron';\nimport { Position, Size } from '../common';\nimport BottomSheet from '../common/bottomSheet';\nimport { stopPropagation } from '../common/domHelpers';\nimport { useLayout } from '../common/hooks';\nimport Panel from '../common/panel';\nimport Drawer from '../drawer';\nimport { useInputAttributes } from '../inputs/contexts';\n\nimport messages from './Select.messages';\nimport Option from './option';\nimport SearchBox from './searchBox';\n\nconst DEFAULT_SEARCH_VALUE = '';\nconst DEFAULT_OPTIONS_PAGE_SIZE = 1000;\n\nconst includesString = (string1: string, string2: string) =>\n string1.toLowerCase().includes(string2.toLowerCase());\n\nexport interface SelectOptionItem {\n value: any;\n label?: React.ReactNode;\n icon?: React.ReactNode;\n currency?: string;\n note?: React.ReactNode;\n secondary?: React.ReactNode;\n}\n\nexport interface SelectItem extends Partial<SelectOptionItem> {\n header?: React.ReactNode;\n separator?: boolean;\n disabled?: boolean;\n searchStrings?: string[];\n}\n\nexport interface SelectItemWithPlaceholder extends SelectItem {\n placeholder?: string;\n}\n\nfunction defaultFilterFunction(option: SelectItemWithPlaceholder, searchValue: string) {\n if (isPlaceholderOption(option)) {\n return true;\n }\n const { label, note, secondary, currency, searchStrings } = option;\n return (\n (typeof label === 'string' && includesString(label, searchValue)) ||\n (typeof note === 'string' && includesString(note, searchValue)) ||\n (typeof secondary === 'string' && includesString(secondary, searchValue)) ||\n (!!currency && includesString(currency, searchValue)) ||\n (!!searchStrings && searchStrings.some((string) => includesString(string, searchValue)))\n );\n}\n\nfunction isActionableOption(option: SelectItem) {\n return !option.header && !option.separator && !option.disabled;\n}\n\nfunction isHeaderOption(option: SelectItem | null) {\n return option != null && 'header' in option;\n}\n\nfunction isSeparatorOption(option: SelectItem | null) {\n return option != null && 'separator' in option;\n}\n\nfunction clamp(from: number, to: number, value: number) {\n return Math.max(Math.min(to, value), from);\n}\n\n/**\n * No option or placeholder option is selected\n */\nconst DEFAULT_SELECTED_OPTION = null;\n\nfunction isPlaceholderOption(option: SelectItemWithPlaceholder | null) {\n return option === DEFAULT_SELECTED_OPTION || 'placeholder' in option;\n}\n\nfunction isSearchableOption(option: SelectItemWithPlaceholder | null) {\n return !isHeaderOption(option) && !isSeparatorOption(option) && !isPlaceholderOption(option);\n}\n\nconst getUniqueIdForOption = (parentId: string | undefined, option: SelectItem | null) => {\n if (option == null) {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const uniqueOptionId =\n option.value || (typeof option.label === 'string' ? option.label.replace(/\\s/g, '') : '');\n\n return `option-${parentId ?? ''}-${uniqueOptionId}`;\n};\n\nexport interface SelectProps {\n placeholder?: string;\n id?: string;\n required?: boolean;\n disabled?: boolean;\n inverse?: boolean;\n dropdownRight?: `${Size.EXTRA_SMALL | Size.SMALL | Size.MEDIUM | Size.LARGE | Size.EXTRA_LARGE}`;\n dropdownWidth?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n block?: boolean;\n selected?: SelectOptionItem;\n /**\n * Search toggle\n * if `true` default search functionality being enabled (not case sensitive search in option labels & currency props)\n * if `function` you can define your own search function to implement custom search experience. This search function used while filtering the options array.\n */\n search?: boolean | ((option: SelectItemWithPlaceholder, searchValue: string) => boolean);\n options: SelectItem[];\n searchValue?: string;\n searchPlaceholder?: string;\n classNames?: Record<string, string>;\n dropdownUp?: boolean;\n buttonProps?: Extract<ButtonProps, { as?: 'button' }>;\n dropdownProps?: React.ComponentPropsWithoutRef<'ul'>;\n onChange: (value: SelectItem | typeof DEFAULT_SELECTED_OPTION) => void;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n /**\n * To have full control of your search value and response use `onSearchChange` function combined with `searchValue` and custom filtering on the options array.\n * DO NOT USE TOGETHER WITH `search` PROPERTY\n */\n onSearchChange?: (value: string) => void;\n}\n\nconst defaultClassNames = {};\n\n/**\n * @deprecated Use `SelectInput` instead (https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)\n */\nexport default function Select({\n placeholder,\n id,\n required,\n disabled,\n inverse,\n dropdownWidth,\n size = 'md',\n block = true,\n selected,\n search,\n onChange,\n onFocus,\n onBlur,\n options: defaultOptions,\n onSearchChange,\n searchValue: initSearchValue = '',\n searchPlaceholder,\n classNames: classNamesProp = defaultClassNames,\n dropdownUp,\n dropdownProps,\n buttonProps,\n}: SelectProps) {\n const inputAttributes = useInputAttributes();\n\n const { formatMessage } = useIntl();\n const { isModern } = useTheme();\n const s = (className: string) => classNamesProp[className] || className;\n const [open, setOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(DEFAULT_SEARCH_VALUE);\n const [keyboardFocusedOptionIndex, setKeyboardFocusedOptionIndex] = useState(-1);\n const keyboardFocusedReference = useRef<HTMLLIElement>(null);\n const previousKeyboardFocusedOptionIndex = useRef(-1);\n const [numberOfOptionsShown, setNumberOfOptionsShown] = useState(DEFAULT_OPTIONS_PAGE_SIZE);\n const searchBoxReference = useRef<HTMLInputElement>(null);\n const selectReference = useRef<HTMLDivElement>(null);\n const dropdownButtonReference = useRef<HTMLButtonElement>(null);\n const optionsListReference = useRef<HTMLUListElement>(null);\n const isSearchEnabled = !!onSearchChange || !!search;\n const isDropdownAutoWidth = dropdownWidth == null;\n\n const options = useMemo(() => {\n if (!search || !searchValue) {\n return defaultOptions;\n }\n\n return defaultOptions.filter(isSearchableOption).filter((option) => {\n if (typeof search === 'function') {\n return search(option, searchValue);\n }\n return defaultFilterFunction(option, searchValue);\n });\n }, [defaultOptions, search, searchValue]);\n\n const selectableOptions = useMemo(() => options.filter(isActionableOption), [options]);\n const focusedOption = selectableOptions[keyboardFocusedOptionIndex];\n\n const fallbackButtonId = useId();\n const computedId = id || inputAttributes.id || fallbackButtonId;\n const listboxId = `${computedId}-listbox`;\n const searchBoxId = `${computedId}-searchbox`;\n\n const { isMobile } = useLayout();\n\n useEffect(() => {\n let cancelled = false;\n\n if (keyboardFocusedOptionIndex >= 0) {\n requestAnimationFrame(() => {\n if (!cancelled) {\n if (isSearchEnabled) {\n keyboardFocusedReference.current?.scrollIntoView?.({ block: 'center' });\n } else {\n keyboardFocusedReference.current?.focus();\n }\n }\n });\n\n return () => {\n cancelled = true;\n };\n }\n }, [keyboardFocusedOptionIndex, isSearchEnabled]);\n\n const handleOnClick = () => {\n setOpen(true);\n };\n\n const handleTouchStart: React.TouchEventHandler<HTMLDivElement> = (event) => {\n if (event.currentTarget === event.target && open) {\n handleCloseOptions();\n }\n };\n\n const handleOnFocus: React.FocusEventHandler<HTMLDivElement> = (event) => {\n onFocus?.(event);\n };\n\n const handleOnBlur: React.FocusEventHandler<HTMLDivElement> = (event) => {\n const { nativeEvent } = event;\n if (nativeEvent) {\n const elementReceivingFocus = nativeEvent.relatedTarget;\n const select = event.currentTarget;\n if (\n select &&\n elementReceivingFocus instanceof Node &&\n select.contains(elementReceivingFocus)\n ) {\n return;\n }\n }\n\n onBlur?.(event);\n };\n\n const handleSearchChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n setNumberOfOptionsShown(DEFAULT_OPTIONS_PAGE_SIZE);\n setSearchValue(event.target.value);\n onSearchChange?.(event.target.value);\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event) => {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n if (open) {\n moveFocusWithDifference(event.key === 'ArrowUp' ? -1 : 1);\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case ' ':\n if (event.target !== searchBoxReference.current) {\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n }\n break;\n case 'Enter':\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case 'Escape':\n handleCloseOptions();\n stopPropagation(event);\n break;\n case 'Tab':\n if (open) {\n selectKeyboardFocusedOption();\n }\n break;\n default:\n break;\n }\n };\n\n function selectKeyboardFocusedOption() {\n if (keyboardFocusedOptionIndex >= 0 && selectableOptions.length > 0) {\n selectOption(selectableOptions[keyboardFocusedOptionIndex]);\n }\n }\n\n function moveFocusWithDifference(difference: number) {\n const selectedOptionIndex = selectableOptions.reduce((optionIndex, current, index) => {\n if (optionIndex >= 0) {\n return optionIndex;\n }\n if (isOptionSelected(selected, current)) {\n return index;\n }\n return -1;\n }, -1);\n const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current;\n let indexToStartMovingFrom = previousFocusedIndex;\n if (previousFocusedIndex < 0) {\n if (selectedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n } else {\n indexToStartMovingFrom = selectedOptionIndex;\n }\n }\n\n const unClampedNewIndex = indexToStartMovingFrom + difference;\n const newIndex = clamp(0, selectableOptions.length - 1, unClampedNewIndex);\n\n setKeyboardFocusedOptionIndex(newIndex);\n }\n\n useEffect(() => {\n if (open) {\n if (!isMobile || searchValue) {\n if (isSearchEnabled && searchBoxReference.current) {\n searchBoxReference.current.focus();\n }\n if (\n !isSearchEnabled &&\n optionsListReference.current &&\n previousKeyboardFocusedOptionIndex.current < 0\n ) {\n optionsListReference.current.focus();\n }\n }\n\n previousKeyboardFocusedOptionIndex.current = keyboardFocusedOptionIndex;\n } else {\n previousKeyboardFocusedOptionIndex.current = -1;\n }\n }, [open, searchValue, isSearchEnabled, isMobile, keyboardFocusedOptionIndex]);\n\n const handleCloseOptions = () => {\n setOpen(false);\n setKeyboardFocusedOptionIndex(-1);\n if (dropdownButtonReference.current) {\n dropdownButtonReference.current.focus();\n }\n };\n\n function createSelectHandlerForOption(option: SelectItemWithPlaceholder) {\n return (event: React.SyntheticEvent) => {\n stopPropagation(event);\n selectOption(option);\n };\n }\n\n function selectOption(option: SelectItemWithPlaceholder) {\n onChange(isPlaceholderOption(option) ? DEFAULT_SELECTED_OPTION : option);\n handleCloseOptions();\n }\n\n function renderOptionsList({ className = '' } = {}) {\n const dropdownClass = clsx(\n s('np-dropdown-menu'),\n {\n [s('np-dropdown-menu-desktop')]: !isMobile,\n [s(`np-dropdown-menu-${dropdownWidth}`)]: !isMobile && !isDropdownAutoWidth,\n },\n s(className),\n );\n\n const showPlaceholder = !required && !isSearchEnabled && Boolean(placeholder);\n return (\n <ul\n ref={optionsListReference}\n id={listboxId}\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-activedescendant={getUniqueIdForOption(id, selected ?? null)}\n tabIndex={-1}\n className={dropdownClass}\n {...dropdownProps}\n >\n {showPlaceholder && <PlaceHolderOption />}\n {isSearchEnabled && (\n <SearchBox\n ref={searchBoxReference}\n id={searchBoxId}\n classNames={classNamesProp}\n value={initSearchValue || searchValue}\n placeholder={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n focusedOptionId={getUniqueIdForOption(id, focusedOption)}\n onChange={handleSearchChange}\n onClick={stopPropagation}\n />\n )}\n {options.slice(0, numberOfOptionsShown).map(renderOption)}\n {numberOfOptionsShown < options.length && <ShowMoreOption />}\n </ul>\n );\n }\n\n function ShowMoreOption() {\n function handleOnClick(event: React.SyntheticEvent<HTMLLIElement>) {\n stopPropagation(event);\n setNumberOfOptionsShown(numberOfOptionsShown + DEFAULT_OPTIONS_PAGE_SIZE);\n }\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'), s('show-more'))}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>...</a>\n </li>\n );\n }\n\n function PlaceHolderOption() {\n const placeholderOption = { placeholder };\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'))}\n onClick={createSelectHandlerForOption(placeholderOption)}\n onKeyPress={createSelectHandlerForOption(placeholderOption)}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>{placeholder}</a>\n </li>\n );\n }\n\n // eslint-disable-next-line react/prop-types\n function SeparatorOption() {\n return <li className={s('np-separator')} aria-hidden />;\n }\n\n // eslint-disable-next-line react/prop-types\n function HeaderOption({ children }: { children?: React.ReactNode }) {\n return (\n <li // eslint-disable-line jsx-a11y/no-noninteractive-element-interactions\n className={clsx(s('np-dropdown-header'), s('np-text-title-group'))}\n onClick={stopPropagation}\n onKeyPress={stopPropagation}\n >\n {children}\n </li>\n );\n }\n\n function isOptionSelected(selected: SelectOptionItem | undefined, option: SelectItem) {\n return selected?.value === option?.value;\n }\n\n const renderOption = (option: SelectItem, index: number) => {\n const separatorOption = option;\n if (isSeparatorOption(separatorOption) && separatorOption?.separator) {\n return <SeparatorOption key={index} />;\n }\n const headerOption = option;\n if (isHeaderOption(headerOption) && headerOption.header) {\n return <HeaderOption key={index}>{headerOption.header}</HeaderOption>;\n }\n\n const isActive = isOptionSelected(selected, option);\n const selectOption = option;\n const isFocusedWithKeyboard =\n !selectOption.disabled &&\n keyboardFocusedOptionIndex === getIndexWithoutHeadersForIndexWithHeaders(index);\n\n const className = clsx(\n s('np-dropdown-item'),\n selectOption.disabled ? [s('disabled')] : s('clickable'),\n {\n [s('active')]: isActive,\n [s('np-dropdown-item--focused')]: isFocusedWithKeyboard,\n },\n );\n\n const handleOnClick = selectOption.disabled\n ? stopPropagation\n : createSelectHandlerForOption(selectOption);\n\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n ref={isFocusedWithKeyboard ? keyboardFocusedReference : undefined}\n key={index}\n id={getUniqueIdForOption(id, option)}\n aria-selected={isActive}\n aria-disabled={option.disabled}\n role=\"option\"\n tabIndex={-1}\n className={className}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* @ts-expect-error options needs DOM refactoring */}\n <a disabled={selectOption.disabled}>\n <Option\n label={undefined}\n value={undefined}\n {...selectOption}\n classNames={classNamesProp}\n />\n </a>\n </li>\n );\n };\n\n function getIndexWithoutHeadersForIndexWithHeaders(index: number) {\n return options.reduce((sum, option, currentIndex) => {\n if (currentIndex < index && isActionableOption(option)) {\n return sum + 1;\n }\n return sum;\n }, 0);\n }\n\n const hasActiveOptions = !!defaultOptions.length;\n if (open && (initSearchValue || searchValue)) {\n if (hasActiveOptions && keyboardFocusedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n }\n if (!hasActiveOptions && keyboardFocusedOptionIndex >= 0) {\n setKeyboardFocusedOptionIndex(-1);\n }\n }\n\n return (\n <div // eslint-disable-line jsx-a11y/no-static-element-interactions\n ref={selectReference}\n className={clsx(s('np-select'), block ? s('btn-block') : null, s('btn-group'))}\n onKeyDown={handleKeyDown}\n onTouchMove={handleTouchStart}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n >\n <Button\n ref={dropdownButtonReference}\n {...inputAttributes}\n id={computedId}\n block={block}\n size={size}\n htmlType=\"button\"\n className={clsx(\n s('np-dropdown-toggle'),\n s('np-text-body-large'),\n inverse ? s('np-dropdown-toggle-navy') : null,\n )}\n // reset Button's styles\n type={null}\n priority={null}\n disabled={disabled}\n aria-controls={listboxId}\n aria-expanded={open}\n onClick={handleOnClick}\n {...buttonProps}\n >\n {selected ? (\n <Option label={undefined} {...selected} classNames={classNamesProp} selected />\n ) : (\n <span className={s('form-control-placeholder')}>{placeholder}</span>\n )}\n <Chevron\n // disabled={disabled}\n className={clsx(\n s('tw-icon'),\n s('tw-chevron-up-icon'),\n s('tw-chevron'),\n s('bottom'),\n s('np-select-chevron'),\n )}\n />\n </Button>\n {isMobile ? (\n isSearchEnabled ? (\n <Drawer\n open={open}\n headerTitle={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n onClose={handleCloseOptions}\n >\n {renderOptionsList()}\n </Drawer>\n ) : (\n <BottomSheet open={open} onClose={handleCloseOptions}>\n {renderOptionsList({ className: isModern ? '' : 'p-a-1' })}\n </BottomSheet>\n )\n ) : (\n <Panel\n open={open}\n flip={false}\n altAxis\n anchorRef={selectReference}\n anchorWidth={isDropdownAutoWidth}\n position={dropdownUp ? Position.TOP : Position.BOTTOM}\n onClose={handleCloseOptions}\n >\n {renderOptionsList({ className: 'p-a-1' })}\n </Panel>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_SEARCH_VALUE","DEFAULT_OPTIONS_PAGE_SIZE","includesString","string1","string2","toLowerCase","includes","defaultFilterFunction","option","searchValue","isPlaceholderOption","label","note","secondary","currency","searchStrings","some","string","isActionableOption","header","separator","disabled","isHeaderOption","isSeparatorOption","clamp","from","to","value","Math","max","min","DEFAULT_SELECTED_OPTION","isSearchableOption","getUniqueIdForOption","parentId","undefined","uniqueOptionId","replace","defaultClassNames","Select","placeholder","id","required","inverse","dropdownWidth","size","block","selected","search","onChange","onFocus","onBlur","options","defaultOptions","onSearchChange","initSearchValue","searchPlaceholder","classNames","classNamesProp","dropdownUp","dropdownProps","buttonProps","inputAttributes","useInputAttributes","formatMessage","useIntl","isModern","useTheme","s","className","open","setOpen","useState","setSearchValue","keyboardFocusedOptionIndex","setKeyboardFocusedOptionIndex","keyboardFocusedReference","useRef","previousKeyboardFocusedOptionIndex","numberOfOptionsShown","setNumberOfOptionsShown","searchBoxReference","selectReference","dropdownButtonReference","optionsListReference","isSearchEnabled","isDropdownAutoWidth","useMemo","filter","selectableOptions","focusedOption","fallbackButtonId","useId","computedId","listboxId","searchBoxId","isMobile","useLayout","useEffect","cancelled","requestAnimationFrame","current","scrollIntoView","focus","handleOnClick","handleTouchStart","event","currentTarget","target","handleCloseOptions","handleOnFocus","handleOnBlur","nativeEvent","elementReceivingFocus","relatedTarget","select","Node","contains","handleSearchChange","handleKeyDown","key","moveFocusWithDifference","stopPropagation","selectKeyboardFocusedOption","length","selectOption","difference","selectedOptionIndex","reduce","optionIndex","index","isOptionSelected","previousFocusedIndex","indexToStartMovingFrom","unClampedNewIndex","newIndex","createSelectHandlerForOption","renderOptionsList","dropdownClass","clsx","showPlaceholder","Boolean","_jsxs","ref","role","tabIndex","children","_jsx","PlaceHolderOption","SearchBox","messages","focusedOptionId","onClick","slice","map","renderOption","ShowMoreOption","onKeyPress","placeholderOption","SeparatorOption","HeaderOption","separatorOption","headerOption","isActive","isFocusedWithKeyboard","getIndexWithoutHeadersForIndexWithHeaders","Option","sum","currentIndex","hasActiveOptions","onKeyDown","onTouchMove","Button","htmlType","type","priority","Chevron","Drawer","headerTitle","onClose","BottomSheet","Panel","flip","altAxis","anchorRef","anchorWidth","position","Position","TOP","BOTTOM"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../src/select/Select.tsx"],"sourcesContent":["import { useTheme } from '@wise/components-theming';\nimport { clsx } from 'clsx';\nimport { useState, useEffect, useRef, useMemo, useId } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport Button, { ButtonProps } from '../button';\nimport Chevron from '../chevron';\nimport { Position, Size } from '../common';\nimport BottomSheet from '../common/bottomSheet';\nimport { stopPropagation } from '../common/domHelpers';\nimport { useLayout } from '../common/hooks';\nimport Panel from '../common/panel';\nimport Drawer from '../drawer';\nimport { useInputAttributes } from '../inputs/contexts';\n\nimport messages from './Select.messages';\nimport Option from './option';\nimport SearchBox from './searchBox';\n\nconst DEFAULT_SEARCH_VALUE = '';\nconst DEFAULT_OPTIONS_PAGE_SIZE = 1000;\n\nconst includesString = (string1: string, string2: string) =>\n string1.toLowerCase().includes(string2.toLowerCase());\n\nexport interface SelectOptionItem {\n value: any;\n label?: React.ReactNode;\n icon?: React.ReactNode;\n currency?: string;\n note?: React.ReactNode;\n secondary?: React.ReactNode;\n}\n\nexport interface SelectItem extends Partial<SelectOptionItem> {\n header?: React.ReactNode;\n separator?: boolean;\n disabled?: boolean;\n searchStrings?: string[];\n}\n\nexport interface SelectItemWithPlaceholder extends SelectItem {\n placeholder?: string;\n}\n\nfunction defaultFilterFunction(option: SelectItemWithPlaceholder, searchValue: string) {\n if (isPlaceholderOption(option)) {\n return true;\n }\n const { label, note, secondary, currency, searchStrings } = option;\n return (\n (typeof label === 'string' && includesString(label, searchValue)) ||\n (typeof note === 'string' && includesString(note, searchValue)) ||\n (typeof secondary === 'string' && includesString(secondary, searchValue)) ||\n (!!currency && includesString(currency, searchValue)) ||\n (!!searchStrings && searchStrings.some((string) => includesString(string, searchValue)))\n );\n}\n\nfunction isActionableOption(option: SelectItem) {\n return !option.header && !option.separator && !option.disabled;\n}\n\nfunction isHeaderOption(option: SelectItem | null) {\n return option != null && 'header' in option;\n}\n\nfunction isSeparatorOption(option: SelectItem | null) {\n return option != null && 'separator' in option;\n}\n\nfunction clamp(from: number, to: number, value: number) {\n return Math.max(Math.min(to, value), from);\n}\n\n/**\n * No option or placeholder option is selected\n */\nconst DEFAULT_SELECTED_OPTION = null;\n\nfunction isPlaceholderOption(option: SelectItemWithPlaceholder | null) {\n return option === DEFAULT_SELECTED_OPTION || 'placeholder' in option;\n}\n\nfunction isSearchableOption(option: SelectItemWithPlaceholder | null) {\n return !isHeaderOption(option) && !isSeparatorOption(option) && !isPlaceholderOption(option);\n}\n\nconst getUniqueIdForOption = (parentId: string | undefined, option: SelectItem | null) => {\n if (option == null) {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const uniqueOptionId =\n option.value || (typeof option.label === 'string' ? option.label.replace(/\\s/g, '') : '');\n\n return `option-${parentId ?? ''}-${uniqueOptionId}`;\n};\n\nexport interface SelectProps {\n placeholder?: string;\n id?: string;\n required?: boolean;\n disabled?: boolean;\n inverse?: boolean;\n dropdownRight?: `${Size.EXTRA_SMALL | Size.SMALL | Size.MEDIUM | Size.LARGE | Size.EXTRA_LARGE}`;\n dropdownWidth?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n block?: boolean;\n selected?: SelectOptionItem;\n /**\n * Search toggle\n * if `true` default search functionality being enabled (not case sensitive search in option labels & currency props)\n * if `function` you can define your own search function to implement custom search experience. This search function used while filtering the options array.\n */\n search?: boolean | ((option: SelectItemWithPlaceholder, searchValue: string) => boolean);\n options: SelectItem[];\n searchValue?: string;\n searchPlaceholder?: string;\n classNames?: Record<string, string>;\n dropdownUp?: boolean;\n buttonProps?: Extract<ButtonProps, { as?: 'button' }>;\n dropdownProps?: React.ComponentPropsWithoutRef<'ul'>;\n onChange: (value: SelectItem | typeof DEFAULT_SELECTED_OPTION) => void;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n /**\n * To have full control of your search value and response use `onSearchChange` function combined with `searchValue` and custom filtering on the options array.\n * DO NOT USE TOGETHER WITH `search` PROPERTY\n */\n onSearchChange?: (value: string) => void;\n}\n\nconst defaultClassNames = {};\n\n/**\n * @deprecated Use `SelectInput` instead (https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)\n */\nexport default function Select({\n placeholder,\n id,\n required,\n disabled,\n inverse,\n dropdownWidth,\n size = 'md',\n block = true,\n selected,\n search,\n onChange,\n onFocus,\n onBlur,\n options: defaultOptions,\n onSearchChange,\n searchValue: initSearchValue = '',\n searchPlaceholder,\n classNames: classNamesProp = defaultClassNames,\n dropdownUp,\n dropdownProps,\n buttonProps,\n}: SelectProps) {\n const inputAttributes = useInputAttributes();\n\n const { formatMessage } = useIntl();\n const { isModern } = useTheme();\n const s = (className: string) => classNamesProp[className] || className;\n const [open, setOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(DEFAULT_SEARCH_VALUE);\n const [keyboardFocusedOptionIndex, setKeyboardFocusedOptionIndex] = useState(-1);\n const keyboardFocusedReference = useRef<HTMLLIElement>(null);\n const previousKeyboardFocusedOptionIndex = useRef(-1);\n const [numberOfOptionsShown, setNumberOfOptionsShown] = useState(DEFAULT_OPTIONS_PAGE_SIZE);\n const searchBoxReference = useRef<HTMLInputElement>(null);\n const selectReference = useRef<HTMLDivElement>(null);\n const dropdownButtonReference = useRef<HTMLButtonElement>(null);\n const optionsListReference = useRef<HTMLUListElement>(null);\n const isSearchEnabled = !!onSearchChange || !!search;\n const isDropdownAutoWidth = dropdownWidth == null;\n\n const options = useMemo(() => {\n if (!search || !searchValue) {\n return defaultOptions;\n }\n\n return defaultOptions.filter(isSearchableOption).filter((option) => {\n if (typeof search === 'function') {\n return search(option, searchValue);\n }\n return defaultFilterFunction(option, searchValue);\n });\n }, [defaultOptions, search, searchValue]);\n\n const selectableOptions = useMemo(() => options.filter(isActionableOption), [options]);\n const focusedOption = selectableOptions[keyboardFocusedOptionIndex];\n\n const fallbackButtonId = useId();\n const computedId = id || inputAttributes.id || fallbackButtonId;\n const listboxId = `${computedId}-listbox`;\n const searchBoxId = `${computedId}-searchbox`;\n\n const { isMobile } = useLayout();\n\n useEffect(() => {\n let cancelled = false;\n\n if (keyboardFocusedOptionIndex >= 0) {\n requestAnimationFrame(() => {\n if (!cancelled) {\n if (isSearchEnabled) {\n keyboardFocusedReference.current?.scrollIntoView?.({ block: 'center' });\n } else {\n keyboardFocusedReference.current?.focus();\n }\n }\n });\n\n return () => {\n cancelled = true;\n };\n }\n }, [keyboardFocusedOptionIndex, isSearchEnabled]);\n\n const handleOnClick = () => {\n setOpen(true);\n };\n\n const handleTouchStart: React.TouchEventHandler<HTMLDivElement> = (event) => {\n if (event.currentTarget === event.target && open) {\n handleCloseOptions();\n }\n };\n\n const handleOnFocus: React.FocusEventHandler<HTMLDivElement> = (event) => {\n onFocus?.(event);\n };\n\n const handleOnBlur: React.FocusEventHandler<HTMLDivElement> = (event) => {\n const { nativeEvent } = event;\n if (nativeEvent) {\n const elementReceivingFocus = nativeEvent.relatedTarget;\n const select = event.currentTarget;\n if (\n select &&\n elementReceivingFocus instanceof Node &&\n select.contains(elementReceivingFocus)\n ) {\n return;\n }\n }\n\n onBlur?.(event);\n };\n\n const handleSearchChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n setNumberOfOptionsShown(DEFAULT_OPTIONS_PAGE_SIZE);\n setSearchValue(event.target.value);\n onSearchChange?.(event.target.value);\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event) => {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n if (open) {\n moveFocusWithDifference(event.key === 'ArrowUp' ? -1 : 1);\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case ' ':\n if (event.target !== searchBoxReference.current) {\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n }\n break;\n case 'Enter':\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case 'Escape':\n handleCloseOptions();\n stopPropagation(event);\n break;\n case 'Tab':\n if (open) {\n selectKeyboardFocusedOption();\n }\n break;\n default:\n break;\n }\n };\n\n function selectKeyboardFocusedOption() {\n if (keyboardFocusedOptionIndex >= 0 && selectableOptions.length > 0) {\n selectOption(selectableOptions[keyboardFocusedOptionIndex]);\n }\n }\n\n function moveFocusWithDifference(difference: number) {\n const selectedOptionIndex = selectableOptions.reduce((optionIndex, current, index) => {\n if (optionIndex >= 0) {\n return optionIndex;\n }\n if (isOptionSelected(selected, current)) {\n return index;\n }\n return -1;\n }, -1);\n const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current;\n let indexToStartMovingFrom = previousFocusedIndex;\n if (previousFocusedIndex < 0) {\n if (selectedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n } else {\n indexToStartMovingFrom = selectedOptionIndex;\n }\n }\n\n const unClampedNewIndex = indexToStartMovingFrom + difference;\n const newIndex = clamp(0, selectableOptions.length - 1, unClampedNewIndex);\n\n setKeyboardFocusedOptionIndex(newIndex);\n }\n\n useEffect(() => {\n if (open) {\n if (!isMobile || searchValue) {\n if (isSearchEnabled && searchBoxReference.current) {\n searchBoxReference.current.focus();\n }\n if (\n !isSearchEnabled &&\n optionsListReference.current &&\n previousKeyboardFocusedOptionIndex.current < 0\n ) {\n optionsListReference.current.focus();\n }\n }\n\n previousKeyboardFocusedOptionIndex.current = keyboardFocusedOptionIndex;\n } else {\n previousKeyboardFocusedOptionIndex.current = -1;\n }\n }, [open, searchValue, isSearchEnabled, isMobile, keyboardFocusedOptionIndex]);\n\n const handleCloseOptions = () => {\n setOpen(false);\n setKeyboardFocusedOptionIndex(-1);\n if (dropdownButtonReference.current) {\n dropdownButtonReference.current.focus();\n }\n };\n\n function createSelectHandlerForOption(option: SelectItemWithPlaceholder) {\n return (event: React.SyntheticEvent) => {\n stopPropagation(event);\n selectOption(option);\n };\n }\n\n function selectOption(option: SelectItemWithPlaceholder) {\n onChange(isPlaceholderOption(option) ? DEFAULT_SELECTED_OPTION : option);\n handleCloseOptions();\n }\n\n function renderOptionsList({ className = '' } = {}) {\n const dropdownClass = clsx(\n s('np-dropdown-menu'),\n {\n [s('np-dropdown-menu-desktop')]: !isMobile,\n [s(`np-dropdown-menu-${dropdownWidth}`)]: !isMobile && !isDropdownAutoWidth,\n },\n s(className),\n );\n\n const showPlaceholder = !required && !isSearchEnabled && Boolean(placeholder);\n return (\n <ul\n ref={optionsListReference}\n id={listboxId}\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-activedescendant={getUniqueIdForOption(id, selected ?? null)}\n tabIndex={-1}\n className={dropdownClass}\n {...dropdownProps}\n >\n {showPlaceholder && <PlaceHolderOption />}\n {isSearchEnabled && (\n <SearchBox\n ref={searchBoxReference}\n id={searchBoxId}\n classNames={classNamesProp}\n value={initSearchValue || searchValue}\n placeholder={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n focusedOptionId={getUniqueIdForOption(id, focusedOption)}\n onChange={handleSearchChange}\n onClick={stopPropagation}\n />\n )}\n {options.slice(0, numberOfOptionsShown).map(renderOption)}\n {numberOfOptionsShown < options.length && <ShowMoreOption />}\n </ul>\n );\n }\n\n function ShowMoreOption() {\n function handleOnClick(event: React.SyntheticEvent<HTMLLIElement>) {\n stopPropagation(event);\n setNumberOfOptionsShown(numberOfOptionsShown + DEFAULT_OPTIONS_PAGE_SIZE);\n }\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'), s('show-more'))}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>...</a>\n </li>\n );\n }\n\n function PlaceHolderOption() {\n const placeholderOption = { placeholder };\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'))}\n onClick={createSelectHandlerForOption(placeholderOption)}\n onKeyPress={createSelectHandlerForOption(placeholderOption)}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>{placeholder}</a>\n </li>\n );\n }\n\n function SeparatorOption() {\n return <li className={s('np-separator')} aria-hidden />;\n }\n\n function HeaderOption({ children }: { children?: React.ReactNode }) {\n return (\n <li // eslint-disable-line jsx-a11y/no-noninteractive-element-interactions\n className={clsx(s('np-dropdown-header'), s('np-text-title-group'))}\n onClick={stopPropagation}\n onKeyPress={stopPropagation}\n >\n {children}\n </li>\n );\n }\n\n function isOptionSelected(selected: SelectOptionItem | undefined, option: SelectItem) {\n return selected?.value === option?.value;\n }\n\n const renderOption = (option: SelectItem, index: number) => {\n const separatorOption = option;\n if (isSeparatorOption(separatorOption) && separatorOption?.separator) {\n return <SeparatorOption key={index} />;\n }\n const headerOption = option;\n if (isHeaderOption(headerOption) && headerOption.header) {\n return <HeaderOption key={index}>{headerOption.header}</HeaderOption>;\n }\n\n const isActive = isOptionSelected(selected, option);\n const selectOption = option;\n const isFocusedWithKeyboard =\n !selectOption.disabled &&\n keyboardFocusedOptionIndex === getIndexWithoutHeadersForIndexWithHeaders(index);\n\n const className = clsx(\n s('np-dropdown-item'),\n selectOption.disabled ? [s('disabled')] : s('clickable'),\n {\n [s('active')]: isActive,\n [s('np-dropdown-item--focused')]: isFocusedWithKeyboard,\n },\n );\n\n const handleOnClick = selectOption.disabled\n ? stopPropagation\n : createSelectHandlerForOption(selectOption);\n\n return (\n <li\n ref={isFocusedWithKeyboard ? keyboardFocusedReference : undefined}\n key={index}\n id={getUniqueIdForOption(id, option)}\n aria-selected={isActive}\n aria-disabled={option.disabled}\n role=\"option\"\n tabIndex={-1}\n className={className}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* @ts-expect-error options needs DOM refactoring */}\n <a disabled={selectOption.disabled}>\n <Option\n label={undefined}\n value={undefined}\n {...selectOption}\n classNames={classNamesProp}\n />\n </a>\n </li>\n );\n };\n\n function getIndexWithoutHeadersForIndexWithHeaders(index: number) {\n return options.reduce((sum, option, currentIndex) => {\n if (currentIndex < index && isActionableOption(option)) {\n return sum + 1;\n }\n return sum;\n }, 0);\n }\n\n const hasActiveOptions = !!defaultOptions.length;\n if (open && (initSearchValue || searchValue)) {\n if (hasActiveOptions && keyboardFocusedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n }\n if (!hasActiveOptions && keyboardFocusedOptionIndex >= 0) {\n setKeyboardFocusedOptionIndex(-1);\n }\n }\n\n return (\n <div // eslint-disable-line jsx-a11y/no-static-element-interactions\n ref={selectReference}\n className={clsx(s('np-select'), block ? s('btn-block') : null, s('btn-group'))}\n onKeyDown={handleKeyDown}\n onTouchMove={handleTouchStart}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n >\n <Button\n ref={dropdownButtonReference}\n {...inputAttributes}\n id={computedId}\n block={block}\n size={size}\n htmlType=\"button\"\n className={clsx(\n s('np-dropdown-toggle'),\n s('np-text-body-large'),\n inverse ? s('np-dropdown-toggle-navy') : null,\n )}\n // reset Button's styles\n type={null}\n priority={null}\n disabled={disabled}\n aria-controls={listboxId}\n aria-expanded={open}\n onClick={handleOnClick}\n {...buttonProps}\n >\n {selected ? (\n <Option label={undefined} {...selected} classNames={classNamesProp} selected />\n ) : (\n <span className={s('form-control-placeholder')}>{placeholder}</span>\n )}\n <Chevron\n // disabled={disabled}\n className={clsx(\n s('tw-icon'),\n s('tw-chevron-up-icon'),\n s('tw-chevron'),\n s('bottom'),\n s('np-select-chevron'),\n )}\n />\n </Button>\n {isMobile ? (\n isSearchEnabled ? (\n <Drawer\n open={open}\n headerTitle={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n onClose={handleCloseOptions}\n >\n {renderOptionsList()}\n </Drawer>\n ) : (\n <BottomSheet open={open} onClose={handleCloseOptions}>\n {renderOptionsList({ className: isModern ? '' : 'p-a-1' })}\n </BottomSheet>\n )\n ) : (\n <Panel\n open={open}\n flip={false}\n altAxis\n anchorRef={selectReference}\n anchorWidth={isDropdownAutoWidth}\n position={dropdownUp ? Position.TOP : Position.BOTTOM}\n onClose={handleCloseOptions}\n >\n {renderOptionsList({ className: 'p-a-1' })}\n </Panel>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_SEARCH_VALUE","DEFAULT_OPTIONS_PAGE_SIZE","includesString","string1","string2","toLowerCase","includes","defaultFilterFunction","option","searchValue","isPlaceholderOption","label","note","secondary","currency","searchStrings","some","string","isActionableOption","header","separator","disabled","isHeaderOption","isSeparatorOption","clamp","from","to","value","Math","max","min","DEFAULT_SELECTED_OPTION","isSearchableOption","getUniqueIdForOption","parentId","undefined","uniqueOptionId","replace","defaultClassNames","Select","placeholder","id","required","inverse","dropdownWidth","size","block","selected","search","onChange","onFocus","onBlur","options","defaultOptions","onSearchChange","initSearchValue","searchPlaceholder","classNames","classNamesProp","dropdownUp","dropdownProps","buttonProps","inputAttributes","useInputAttributes","formatMessage","useIntl","isModern","useTheme","s","className","open","setOpen","useState","setSearchValue","keyboardFocusedOptionIndex","setKeyboardFocusedOptionIndex","keyboardFocusedReference","useRef","previousKeyboardFocusedOptionIndex","numberOfOptionsShown","setNumberOfOptionsShown","searchBoxReference","selectReference","dropdownButtonReference","optionsListReference","isSearchEnabled","isDropdownAutoWidth","useMemo","filter","selectableOptions","focusedOption","fallbackButtonId","useId","computedId","listboxId","searchBoxId","isMobile","useLayout","useEffect","cancelled","requestAnimationFrame","current","scrollIntoView","focus","handleOnClick","handleTouchStart","event","currentTarget","target","handleCloseOptions","handleOnFocus","handleOnBlur","nativeEvent","elementReceivingFocus","relatedTarget","select","Node","contains","handleSearchChange","handleKeyDown","key","moveFocusWithDifference","stopPropagation","selectKeyboardFocusedOption","length","selectOption","difference","selectedOptionIndex","reduce","optionIndex","index","isOptionSelected","previousFocusedIndex","indexToStartMovingFrom","unClampedNewIndex","newIndex","createSelectHandlerForOption","renderOptionsList","dropdownClass","clsx","showPlaceholder","Boolean","_jsxs","ref","role","tabIndex","children","_jsx","PlaceHolderOption","SearchBox","messages","focusedOptionId","onClick","slice","map","renderOption","ShowMoreOption","onKeyPress","placeholderOption","SeparatorOption","HeaderOption","separatorOption","headerOption","isActive","isFocusedWithKeyboard","getIndexWithoutHeadersForIndexWithHeaders","Option","sum","currentIndex","hasActiveOptions","onKeyDown","onTouchMove","Button","htmlType","type","priority","Chevron","Drawer","headerTitle","onClose","BottomSheet","Panel","flip","altAxis","anchorRef","anchorWidth","position","Position","TOP","BOTTOM"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAMA,oBAAoB,GAAG,EAAE,CAAA;AAC/B,MAAMC,yBAAyB,GAAG,IAAI,CAAA;AAEtC,MAAMC,cAAc,GAAGA,CAACC,OAAe,EAAEC,OAAe,KACtDD,OAAO,CAACE,WAAW,EAAE,CAACC,QAAQ,CAACF,OAAO,CAACC,WAAW,EAAE,CAAC,CAAA;AAsBvD,SAASE,qBAAqBA,CAACC,MAAiC,EAAEC,WAAmB,EAAA;AACnF,EAAA,IAAIC,mBAAmB,CAACF,MAAM,CAAC,EAAE;AAC/B,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EACA,MAAM;IAAEG,KAAK;IAAEC,IAAI;IAAEC,SAAS;IAAEC,QAAQ;AAAEC,IAAAA,aAAAA;AAAe,GAAA,GAAGP,MAAM,CAAA;AAClE,EAAA,OACG,OAAOG,KAAK,KAAK,QAAQ,IAAIT,cAAc,CAACS,KAAK,EAAEF,WAAW,CAAC,IAC/D,OAAOG,IAAI,KAAK,QAAQ,IAAIV,cAAc,CAACU,IAAI,EAAEH,WAAW,CAAE,IAC9D,OAAOI,SAAS,KAAK,QAAQ,IAAIX,cAAc,CAACW,SAAS,EAAEJ,WAAW,CAAE,IACxE,CAAC,CAACK,QAAQ,IAAIZ,cAAc,CAACY,QAAQ,EAAEL,WAAW,CAAE,IACpD,CAAC,CAACM,aAAa,IAAIA,aAAa,CAACC,IAAI,CAAEC,MAAM,IAAKf,cAAc,CAACe,MAAM,EAAER,WAAW,CAAC,CAAE,CAAA;AAE5F,CAAA;AAEA,SAASS,kBAAkBA,CAACV,MAAkB,EAAA;AAC5C,EAAA,OAAO,CAACA,MAAM,CAACW,MAAM,IAAI,CAACX,MAAM,CAACY,SAAS,IAAI,CAACZ,MAAM,CAACa,QAAQ,CAAA;AAChE,CAAA;AAEA,SAASC,cAAcA,CAACd,MAAyB,EAAA;AAC/C,EAAA,OAAOA,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAIA,MAAM,CAAA;AAC7C,CAAA;AAEA,SAASe,iBAAiBA,CAACf,MAAyB,EAAA;AAClD,EAAA,OAAOA,MAAM,IAAI,IAAI,IAAI,WAAW,IAAIA,MAAM,CAAA;AAChD,CAAA;AAEA,SAASgB,KAAKA,CAACC,IAAY,EAAEC,EAAU,EAAEC,KAAa,EAAA;AACpD,EAAA,OAAOC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAACJ,EAAE,EAAEC,KAAK,CAAC,EAAEF,IAAI,CAAC,CAAA;AAC5C,CAAA;AAEA;;AAEG;AACH,MAAMM,uBAAuB,GAAG,IAAI,CAAA;AAEpC,SAASrB,mBAAmBA,CAACF,MAAwC,EAAA;AACnE,EAAA,OAAOA,MAAM,KAAKuB,uBAAuB,IAAI,aAAa,IAAIvB,MAAM,CAAA;AACtE,CAAA;AAEA,SAASwB,kBAAkBA,CAACxB,MAAwC,EAAA;AAClE,EAAA,OAAO,CAACc,cAAc,CAACd,MAAM,CAAC,IAAI,CAACe,iBAAiB,CAACf,MAAM,CAAC,IAAI,CAACE,mBAAmB,CAACF,MAAM,CAAC,CAAA;AAC9F,CAAA;AAEA,MAAMyB,oBAAoB,GAAGA,CAACC,QAA4B,EAAE1B,MAAyB,KAAI;EACvF,IAAIA,MAAM,IAAI,IAAI,EAAE;AAClB,IAAA,OAAO2B,SAAS,CAAA;AAClB,GAAA;AAEA;EACA,MAAMC,cAAc,GAClB5B,MAAM,CAACmB,KAAK,KAAK,OAAOnB,MAAM,CAACG,KAAK,KAAK,QAAQ,GAAGH,MAAM,CAACG,KAAK,CAAC0B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;AAE3F,EAAA,OAAO,UAAUH,QAAQ,IAAI,EAAE,CAAA,CAAA,EAAIE,cAAc,CAAE,CAAA,CAAA;AACrD,CAAC,CAAA;AAoCD,MAAME,iBAAiB,GAAG,EAAE,CAAA;AAE5B;;AAEG;AACqB,SAAAC,MAAMA,CAAC;EAC7BC,WAAW;EACXC,EAAE;EACFC,QAAQ;EACRrB,QAAQ;EACRsB,OAAO;EACPC,aAAa;AACbC,EAAAA,IAAI,GAAG,IAAI;AACXC,EAAAA,KAAK,GAAG,IAAI;EACZC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC,OAAO;EACPC,MAAM;AACNC,EAAAA,OAAO,EAAEC,cAAc;EACvBC,cAAc;EACd7C,WAAW,EAAE8C,eAAe,GAAG,EAAE;EACjCC,iBAAiB;EACjBC,UAAU,EAAEC,cAAc,GAAGpB,iBAAiB;EAC9CqB,UAAU;EACVC,aAAa;AACbC,EAAAA,WAAAA;AACY,CAAA,EAAA;AACZ,EAAA,MAAMC,eAAe,GAAGC,2BAAkB,EAAE,CAAA;EAE5C,MAAM;AAAEC,IAAAA,aAAAA;GAAe,GAAGC,iBAAO,EAAE,CAAA;EACnC,MAAM;AAAEC,IAAAA,QAAAA;GAAU,GAAGC,0BAAQ,EAAE,CAAA;EAC/B,MAAMC,CAAC,GAAIC,SAAiB,IAAKX,cAAc,CAACW,SAAS,CAAC,IAAIA,SAAS,CAAA;EACvE,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC,CAAA;EACvC,MAAM,CAAC/D,WAAW,EAAEgE,cAAc,CAAC,GAAGD,cAAQ,CAACxE,oBAAoB,CAAC,CAAA;EACpE,MAAM,CAAC0E,0BAA0B,EAAEC,6BAA6B,CAAC,GAAGH,cAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAChF,EAAA,MAAMI,wBAAwB,GAAGC,YAAM,CAAgB,IAAI,CAAC,CAAA;AAC5D,EAAA,MAAMC,kCAAkC,GAAGD,YAAM,CAAC,CAAC,CAAC,CAAC,CAAA;EACrD,MAAM,CAACE,oBAAoB,EAAEC,uBAAuB,CAAC,GAAGR,cAAQ,CAACvE,yBAAyB,CAAC,CAAA;AAC3F,EAAA,MAAMgF,kBAAkB,GAAGJ,YAAM,CAAmB,IAAI,CAAC,CAAA;AACzD,EAAA,MAAMK,eAAe,GAAGL,YAAM,CAAiB,IAAI,CAAC,CAAA;AACpD,EAAA,MAAMM,uBAAuB,GAAGN,YAAM,CAAoB,IAAI,CAAC,CAAA;AAC/D,EAAA,MAAMO,oBAAoB,GAAGP,YAAM,CAAmB,IAAI,CAAC,CAAA;EAC3D,MAAMQ,eAAe,GAAG,CAAC,CAAC/B,cAAc,IAAI,CAAC,CAACN,MAAM,CAAA;AACpD,EAAA,MAAMsC,mBAAmB,GAAG1C,aAAa,IAAI,IAAI,CAAA;AAEjD,EAAA,MAAMQ,OAAO,GAAGmC,aAAO,CAAC,MAAK;AAC3B,IAAA,IAAI,CAACvC,MAAM,IAAI,CAACvC,WAAW,EAAE;AAC3B,MAAA,OAAO4C,cAAc,CAAA;AACvB,KAAA;IAEA,OAAOA,cAAc,CAACmC,MAAM,CAACxD,kBAAkB,CAAC,CAACwD,MAAM,CAAEhF,MAAM,IAAI;AACjE,MAAA,IAAI,OAAOwC,MAAM,KAAK,UAAU,EAAE;AAChC,QAAA,OAAOA,MAAM,CAACxC,MAAM,EAAEC,WAAW,CAAC,CAAA;AACpC,OAAA;AACA,MAAA,OAAOF,qBAAqB,CAACC,MAAM,EAAEC,WAAW,CAAC,CAAA;AACnD,KAAC,CAAC,CAAA;GACH,EAAE,CAAC4C,cAAc,EAAEL,MAAM,EAAEvC,WAAW,CAAC,CAAC,CAAA;AAEzC,EAAA,MAAMgF,iBAAiB,GAAGF,aAAO,CAAC,MAAMnC,OAAO,CAACoC,MAAM,CAACtE,kBAAkB,CAAC,EAAE,CAACkC,OAAO,CAAC,CAAC,CAAA;AACtF,EAAA,MAAMsC,aAAa,GAAGD,iBAAiB,CAACf,0BAA0B,CAAC,CAAA;AAEnE,EAAA,MAAMiB,gBAAgB,GAAGC,WAAK,EAAE,CAAA;EAChC,MAAMC,UAAU,GAAGpD,EAAE,IAAIqB,eAAe,CAACrB,EAAE,IAAIkD,gBAAgB,CAAA;AAC/D,EAAA,MAAMG,SAAS,GAAG,CAAGD,EAAAA,UAAU,CAAU,QAAA,CAAA,CAAA;AACzC,EAAA,MAAME,WAAW,GAAG,CAAGF,EAAAA,UAAU,CAAY,UAAA,CAAA,CAAA;EAE7C,MAAM;AAAEG,IAAAA,QAAAA;GAAU,GAAGC,mBAAS,EAAE,CAAA;AAEhCC,EAAAA,eAAS,CAAC,MAAK;IACb,IAAIC,SAAS,GAAG,KAAK,CAAA;IAErB,IAAIzB,0BAA0B,IAAI,CAAC,EAAE;AACnC0B,MAAAA,qBAAqB,CAAC,MAAK;QACzB,IAAI,CAACD,SAAS,EAAE;AACd,UAAA,IAAId,eAAe,EAAE;AACnBT,YAAAA,wBAAwB,CAACyB,OAAO,EAAEC,cAAc,GAAG;AAAExD,cAAAA,KAAK,EAAE,QAAA;AAAU,aAAA,CAAC,CAAA;AACzE,WAAC,MAAM;AACL8B,YAAAA,wBAAwB,CAACyB,OAAO,EAAEE,KAAK,EAAE,CAAA;AAC3C,WAAA;AACF,SAAA;AACF,OAAC,CAAC,CAAA;AAEF,MAAA,OAAO,MAAK;AACVJ,QAAAA,SAAS,GAAG,IAAI,CAAA;OACjB,CAAA;AACH,KAAA;AACF,GAAC,EAAE,CAACzB,0BAA0B,EAAEW,eAAe,CAAC,CAAC,CAAA;EAEjD,MAAMmB,aAAa,GAAGA,MAAK;IACzBjC,OAAO,CAAC,IAAI,CAAC,CAAA;GACd,CAAA;EAED,MAAMkC,gBAAgB,GAA6CC,KAAK,IAAI;IAC1E,IAAIA,KAAK,CAACC,aAAa,KAAKD,KAAK,CAACE,MAAM,IAAItC,IAAI,EAAE;AAChDuC,MAAAA,kBAAkB,EAAE,CAAA;AACtB,KAAA;GACD,CAAA;EAED,MAAMC,aAAa,GAA6CJ,KAAK,IAAI;IACvExD,OAAO,GAAGwD,KAAK,CAAC,CAAA;GACjB,CAAA;EAED,MAAMK,YAAY,GAA6CL,KAAK,IAAI;IACtE,MAAM;AAAEM,MAAAA,WAAAA;AAAa,KAAA,GAAGN,KAAK,CAAA;AAC7B,IAAA,IAAIM,WAAW,EAAE;AACf,MAAA,MAAMC,qBAAqB,GAAGD,WAAW,CAACE,aAAa,CAAA;AACvD,MAAA,MAAMC,MAAM,GAAGT,KAAK,CAACC,aAAa,CAAA;AAClC,MAAA,IACEQ,MAAM,IACNF,qBAAqB,YAAYG,IAAI,IACrCD,MAAM,CAACE,QAAQ,CAACJ,qBAAqB,CAAC,EACtC;AACA,QAAA,OAAA;AACF,OAAA;AACF,KAAA;IAEA9D,MAAM,GAAGuD,KAAK,CAAC,CAAA;GAChB,CAAA;EAED,MAAMY,kBAAkB,GAAgDZ,KAAK,IAAI;IAC/E1B,uBAAuB,CAAC/E,yBAAyB,CAAC,CAAA;AAClDwE,IAAAA,cAAc,CAACiC,KAAK,CAACE,MAAM,CAACjF,KAAK,CAAC,CAAA;AAClC2B,IAAAA,cAAc,GAAGoD,KAAK,CAACE,MAAM,CAACjF,KAAK,CAAC,CAAA;GACrC,CAAA;EAED,MAAM4F,aAAa,GAAgDb,KAAK,IAAI;IAC1E,QAAQA,KAAK,CAACc,GAAG;AACf,MAAA,KAAK,SAAS,CAAA;AACd,MAAA,KAAK,WAAW;AACd,QAAA,IAAIlD,IAAI,EAAE;UACRmD,uBAAuB,CAACf,KAAK,CAACc,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3D,SAAC,MAAM;UACLjD,OAAO,CAAC,IAAI,CAAC,CAAA;AACf,SAAA;QACAmD,gCAAe,CAAChB,KAAK,CAAC,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,GAAG;AACN,QAAA,IAAIA,KAAK,CAACE,MAAM,KAAK3B,kBAAkB,CAACoB,OAAO,EAAE;AAC/C,UAAA,IAAI/B,IAAI,EAAE;AACRqD,YAAAA,2BAA2B,EAAE,CAAA;AAC/B,WAAC,MAAM;YACLpD,OAAO,CAAC,IAAI,CAAC,CAAA;AACf,WAAA;UACAmD,gCAAe,CAAChB,KAAK,CAAC,CAAA;AACxB,SAAA;AACA,QAAA,MAAA;AACF,MAAA,KAAK,OAAO;AACV,QAAA,IAAIpC,IAAI,EAAE;AACRqD,UAAAA,2BAA2B,EAAE,CAAA;AAC/B,SAAC,MAAM;UACLpD,OAAO,CAAC,IAAI,CAAC,CAAA;AACf,SAAA;QACAmD,gCAAe,CAAChB,KAAK,CAAC,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,QAAQ;AACXG,QAAAA,kBAAkB,EAAE,CAAA;QACpBa,gCAAe,CAAChB,KAAK,CAAC,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,KAAK;AACR,QAAA,IAAIpC,IAAI,EAAE;AACRqD,UAAAA,2BAA2B,EAAE,CAAA;AAC/B,SAAA;AACA,QAAA,MAAA;AAGJ,KAAA;GACD,CAAA;EAED,SAASA,2BAA2BA,GAAA;IAClC,IAAIjD,0BAA0B,IAAI,CAAC,IAAIe,iBAAiB,CAACmC,MAAM,GAAG,CAAC,EAAE;AACnEC,MAAAA,YAAY,CAACpC,iBAAiB,CAACf,0BAA0B,CAAC,CAAC,CAAA;AAC7D,KAAA;AACF,GAAA;EAEA,SAAS+C,uBAAuBA,CAACK,UAAkB,EAAA;AACjD,IAAA,MAAMC,mBAAmB,GAAGtC,iBAAiB,CAACuC,MAAM,CAAC,CAACC,WAAW,EAAE5B,OAAO,EAAE6B,KAAK,KAAI;MACnF,IAAID,WAAW,IAAI,CAAC,EAAE;AACpB,QAAA,OAAOA,WAAW,CAAA;AACpB,OAAA;AACA,MAAA,IAAIE,gBAAgB,CAACpF,QAAQ,EAAEsD,OAAO,CAAC,EAAE;AACvC,QAAA,OAAO6B,KAAK,CAAA;AACd,OAAA;AACA,MAAA,OAAO,CAAC,CAAC,CAAA;KACV,EAAE,CAAC,CAAC,CAAC,CAAA;AACN,IAAA,MAAME,oBAAoB,GAAGtD,kCAAkC,CAACuB,OAAO,CAAA;IACvE,IAAIgC,sBAAsB,GAAGD,oBAAoB,CAAA;IACjD,IAAIA,oBAAoB,GAAG,CAAC,EAAE;MAC5B,IAAIL,mBAAmB,GAAG,CAAC,EAAE;QAC3BpD,6BAA6B,CAAC,CAAC,CAAC,CAAA;AAClC,OAAC,MAAM;AACL0D,QAAAA,sBAAsB,GAAGN,mBAAmB,CAAA;AAC9C,OAAA;AACF,KAAA;AAEA,IAAA,MAAMO,iBAAiB,GAAGD,sBAAsB,GAAGP,UAAU,CAAA;AAC7D,IAAA,MAAMS,QAAQ,GAAG/G,KAAK,CAAC,CAAC,EAAEiE,iBAAiB,CAACmC,MAAM,GAAG,CAAC,EAAEU,iBAAiB,CAAC,CAAA;IAE1E3D,6BAA6B,CAAC4D,QAAQ,CAAC,CAAA;AACzC,GAAA;AAEArC,EAAAA,eAAS,CAAC,MAAK;AACb,IAAA,IAAI5B,IAAI,EAAE;AACR,MAAA,IAAI,CAAC0B,QAAQ,IAAIvF,WAAW,EAAE;AAC5B,QAAA,IAAI4E,eAAe,IAAIJ,kBAAkB,CAACoB,OAAO,EAAE;AACjDpB,UAAAA,kBAAkB,CAACoB,OAAO,CAACE,KAAK,EAAE,CAAA;AACpC,SAAA;AACA,QAAA,IACE,CAAClB,eAAe,IAChBD,oBAAoB,CAACiB,OAAO,IAC5BvB,kCAAkC,CAACuB,OAAO,GAAG,CAAC,EAC9C;AACAjB,UAAAA,oBAAoB,CAACiB,OAAO,CAACE,KAAK,EAAE,CAAA;AACtC,SAAA;AACF,OAAA;MAEAzB,kCAAkC,CAACuB,OAAO,GAAG3B,0BAA0B,CAAA;AACzE,KAAC,MAAM;AACLI,MAAAA,kCAAkC,CAACuB,OAAO,GAAG,CAAC,CAAC,CAAA;AACjD,KAAA;AACF,GAAC,EAAE,CAAC/B,IAAI,EAAE7D,WAAW,EAAE4E,eAAe,EAAEW,QAAQ,EAAEtB,0BAA0B,CAAC,CAAC,CAAA;EAE9E,MAAMmC,kBAAkB,GAAGA,MAAK;IAC9BtC,OAAO,CAAC,KAAK,CAAC,CAAA;IACdI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,IAAIQ,uBAAuB,CAACkB,OAAO,EAAE;AACnClB,MAAAA,uBAAuB,CAACkB,OAAO,CAACE,KAAK,EAAE,CAAA;AACzC,KAAA;GACD,CAAA;EAED,SAASiC,4BAA4BA,CAAChI,MAAiC,EAAA;AACrE,IAAA,OAAQkG,KAA2B,IAAI;MACrCgB,gCAAe,CAAChB,KAAK,CAAC,CAAA;MACtBmB,YAAY,CAACrH,MAAM,CAAC,CAAA;KACrB,CAAA;AACH,GAAA;EAEA,SAASqH,YAAYA,CAACrH,MAAiC,EAAA;IACrDyC,QAAQ,CAACvC,mBAAmB,CAACF,MAAM,CAAC,GAAGuB,uBAAuB,GAAGvB,MAAM,CAAC,CAAA;AACxEqG,IAAAA,kBAAkB,EAAE,CAAA;AACtB,GAAA;AAEA,EAAA,SAAS4B,iBAAiBA,CAAC;AAAEpE,IAAAA,SAAS,GAAG,EAAA;GAAI,GAAG,EAAE,EAAA;IAChD,MAAMqE,aAAa,GAAGC,SAAI,CACxBvE,CAAC,CAAC,kBAAkB,CAAC,EACrB;AACE,MAAA,CAACA,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC4B,QAAQ;MAC1C,CAAC5B,CAAC,CAAC,CAAA,iBAAA,EAAoBxB,aAAa,CAAA,CAAE,CAAC,GAAG,CAACoD,QAAQ,IAAI,CAACV,mBAAAA;AACzD,KAAA,EACDlB,CAAC,CAACC,SAAS,CAAC,CACb,CAAA;IAED,MAAMuE,eAAe,GAAG,CAAClG,QAAQ,IAAI,CAAC2C,eAAe,IAAIwD,OAAO,CAACrG,WAAW,CAAC,CAAA;AAC7E,IAAA,oBACEsG,eAAA,CAAA,IAAA,EAAA;AACEC,MAAAA,GAAG,EAAE3D,oBAAqB;AAC1B3C,MAAAA,EAAE,EAAEqD,SAAU;AACdkD,MAAAA,IAAI,EAAC,SAAS;AACd,MAAA,kBAAA,EAAiB,UAAU;AAC3B,MAAA,uBAAA,EAAuB/G,oBAAoB,CAACQ,EAAE,EAAEM,QAAQ,IAAI,IAAI,CAAE;MAClEkG,QAAQ,EAAE,CAAC,CAAE;AACb5E,MAAAA,SAAS,EAAEqE,aAAc;AAAA,MAAA,GACrB9E,aAAa;AAAAsF,MAAAA,QAAA,EAEhBN,CAAAA,eAAe,iBAAIO,cAAA,CAACC,iBAAiB,KAAG,EACxC/D,eAAe,iBACd8D,cAAA,CAACE,SAAS,EAAA;AACRN,QAAAA,GAAG,EAAE9D,kBAAmB;AACxBxC,QAAAA,EAAE,EAAEsD,WAAY;AAChBtC,QAAAA,UAAU,EAAEC,cAAe;QAC3B/B,KAAK,EAAE4B,eAAe,IAAI9C,WAAY;QACtC+B,WAAW,EAAEgB,iBAAiB,IAAIQ,aAAa,CAACsF,eAAQ,CAAC9F,iBAAiB,CAAE;AAC5E+F,QAAAA,eAAe,EAAEtH,oBAAoB,CAACQ,EAAE,EAAEiD,aAAa,CAAE;AACzDzC,QAAAA,QAAQ,EAAEqE,kBAAmB;AAC7BkC,QAAAA,OAAO,EAAE9B,gCAAAA;OAAgB,CAE5B,EACAtE,OAAO,CAACqG,KAAK,CAAC,CAAC,EAAE1E,oBAAoB,CAAC,CAAC2E,GAAG,CAACC,YAAY,CAAC,EACxD5E,oBAAoB,GAAG3B,OAAO,CAACwE,MAAM,iBAAIuB,cAAA,CAACS,cAAc,EAAA,EAAA,CAAG,CAAA;AAAA,KAC1D,CAAC,CAAA;AAET,GAAA;EAEA,SAASA,cAAcA,GAAA;IACrB,SAASpD,aAAaA,CAACE,KAA0C,EAAA;MAC/DgB,gCAAe,CAAChB,KAAK,CAAC,CAAA;AACtB1B,MAAAA,uBAAuB,CAACD,oBAAoB,GAAG9E,yBAAyB,CAAC,CAAA;AAC3E,KAAA;AACA,IAAA;AAAA;AACE;MACAkJ,cAAA,CAAA,IAAA,EAAA;AACE9E,QAAAA,SAAS,EAAEsE,SAAI,CAACvE,CAAC,CAAC,WAAW,CAAC,EAAEA,CAAC,CAAC,eAAe,CAAC,EAAEA,CAAC,CAAC,WAAW,CAAC,CAAE;AACpEoF,QAAAA,OAAO,EAAEhD,aAAc;AACvBqD,QAAAA,UAAU,EAAErD,aAAc;AAAA0C,QAAAA,QAAA,eAG1BC,cAAA,CAAA,GAAA,EAAA;AAAAD,UAAAA,QAAA,EAAG,KAAA;SAAM,CAAA;OACP,CAAA;AAAC,MAAA;AAET,GAAA;EAEA,SAASE,iBAAiBA,GAAA;AACxB,IAAA,MAAMU,iBAAiB,GAAG;AAAEtH,MAAAA,WAAAA;KAAa,CAAA;AACzC,IAAA;AAAA;AACE;MACA2G,cAAA,CAAA,IAAA,EAAA;AACE9E,QAAAA,SAAS,EAAEsE,SAAI,CAACvE,CAAC,CAAC,WAAW,CAAC,EAAEA,CAAC,CAAC,eAAe,CAAC,CAAE;AACpDoF,QAAAA,OAAO,EAAEhB,4BAA4B,CAACsB,iBAAiB,CAAE;AACzDD,QAAAA,UAAU,EAAErB,4BAA4B,CAACsB,iBAAiB,CAAE;AAAAZ,QAAAA,QAAA,eAG5DC,cAAA,CAAA,GAAA,EAAA;AAAAD,UAAAA,QAAA,EAAI1G,WAAAA;SAAe,CAAA;OACjB,CAAA;AAAC,MAAA;AAET,GAAA;EAEA,SAASuH,eAAeA,GAAA;AACtB,IAAA,oBAAOZ,cAAA,CAAA,IAAA,EAAA;AAAI9E,MAAAA,SAAS,EAAED,CAAC,CAAC,cAAc,CAAE;AAAC,MAAA,aAAA,EAAA,IAAA;AAAW,MAAG,CAAA;AACzD,GAAA;AAEA,EAAA,SAAS4F,YAAYA,CAAC;AAAEd,IAAAA,QAAAA;AAA0C,GAAA,EAAA;AAChE,IAAA,oBACEC,cAAA,CAAA,IAAA,EAAA;AAAI;AACF9E,MAAAA,SAAS,EAAEsE,SAAI,CAACvE,CAAC,CAAC,oBAAoB,CAAC,EAAEA,CAAC,CAAC,qBAAqB,CAAC,CAAE;AACnEoF,MAAAA,OAAO,EAAE9B,gCAAgB;AACzBmC,MAAAA,UAAU,EAAEnC,gCAAgB;AAAAwB,MAAAA,QAAA,EAE3BA,QAAAA;AAAQ,KACP,CAAC,CAAA;AAET,GAAA;AAEA,EAAA,SAASf,gBAAgBA,CAACpF,QAAsC,EAAEvC,MAAkB,EAAA;AAClF,IAAA,OAAOuC,QAAQ,EAAEpB,KAAK,KAAKnB,MAAM,EAAEmB,KAAK,CAAA;AAC1C,GAAA;AAEA,EAAA,MAAMgI,YAAY,GAAGA,CAACnJ,MAAkB,EAAE0H,KAAa,KAAI;IACzD,MAAM+B,eAAe,GAAGzJ,MAAM,CAAA;IAC9B,IAAIe,iBAAiB,CAAC0I,eAAe,CAAC,IAAIA,eAAe,EAAE7I,SAAS,EAAE;AACpE,MAAA,oBAAO+H,cAAA,CAACY,eAAe,EAAA,EAAA,EAAM7B,KAAM,CAAG,CAAA;AACxC,KAAA;IACA,MAAMgC,YAAY,GAAG1J,MAAM,CAAA;IAC3B,IAAIc,cAAc,CAAC4I,YAAY,CAAC,IAAIA,YAAY,CAAC/I,MAAM,EAAE;MACvD,oBAAOgI,cAAA,CAACa,YAAY,EAAA;QAAAd,QAAA,EAAcgB,YAAY,CAAC/I,MAAAA;AAAM,OAAA,EAA3B+G,KAA0C,CAAC,CAAA;AACvE,KAAA;AAEA,IAAA,MAAMiC,QAAQ,GAAGhC,gBAAgB,CAACpF,QAAQ,EAAEvC,MAAM,CAAC,CAAA;IACnD,MAAMqH,YAAY,GAAGrH,MAAM,CAAA;AAC3B,IAAA,MAAM4J,qBAAqB,GACzB,CAACvC,YAAY,CAACxG,QAAQ,IACtBqD,0BAA0B,KAAK2F,yCAAyC,CAACnC,KAAK,CAAC,CAAA;IAEjF,MAAM7D,SAAS,GAAGsE,SAAI,CACpBvE,CAAC,CAAC,kBAAkB,CAAC,EACrByD,YAAY,CAACxG,QAAQ,GAAG,CAAC+C,CAAC,CAAC,UAAU,CAAC,CAAC,GAAGA,CAAC,CAAC,WAAW,CAAC,EACxD;AACE,MAAA,CAACA,CAAC,CAAC,QAAQ,CAAC,GAAG+F,QAAQ;AACvB,MAAA,CAAC/F,CAAC,CAAC,2BAA2B,CAAC,GAAGgG,qBAAAA;AACnC,KAAA,CACF,CAAA;IAED,MAAM5D,aAAa,GAAGqB,YAAY,CAACxG,QAAQ,GACvCqG,gCAAe,GACfc,4BAA4B,CAACX,YAAY,CAAC,CAAA;AAE9C,IAAA,oBACEsB,cAAA,CAAA,IAAA,EAAA;AACEJ,MAAAA,GAAG,EAAEqB,qBAAqB,GAAGxF,wBAAwB,GAAGzC,SAAU;AAElEM,MAAAA,EAAE,EAAER,oBAAoB,CAACQ,EAAE,EAAEjC,MAAM,CAAE;AACrC,MAAA,eAAA,EAAe2J,QAAS;MACxB,eAAe3J,EAAAA,MAAM,CAACa,QAAS;AAC/B2H,MAAAA,IAAI,EAAC,QAAQ;MACbC,QAAQ,EAAE,CAAC,CAAE;AACb5E,MAAAA,SAAS,EAAEA,SAAU;AACrBmF,MAAAA,OAAO,EAAEhD,aAAc;AACvBqD,MAAAA,UAAU,EAAErD,aAAc;AAAA0C,MAAAA,QAAA,eAG1BC,cAAA,CAAA,GAAA,EAAA;QAAG9H,QAAQ,EAAEwG,YAAY,CAACxG,QAAS;QAAA6H,QAAA,eACjCC,cAAA,CAACmB,MAAM,EAAA;AACL3J,UAAAA,KAAK,EAAEwB,SAAU;AACjBR,UAAAA,KAAK,EAAEQ,SAAU;AAAA,UAAA,GACb0F,YAAY;AAChBpE,UAAAA,UAAU,EAAEC,cAAAA;SAEhB,CAAA;OAAG,CAAA;AACL,KAAA,EAnBOwE,KAmBH,CAAC,CAAA;GAER,CAAA;EAED,SAASmC,yCAAyCA,CAACnC,KAAa,EAAA;IAC9D,OAAO9E,OAAO,CAAC4E,MAAM,CAAC,CAACuC,GAAG,EAAE/J,MAAM,EAAEgK,YAAY,KAAI;MAClD,IAAIA,YAAY,GAAGtC,KAAK,IAAIhH,kBAAkB,CAACV,MAAM,CAAC,EAAE;QACtD,OAAO+J,GAAG,GAAG,CAAC,CAAA;AAChB,OAAA;AACA,MAAA,OAAOA,GAAG,CAAA;KACX,EAAE,CAAC,CAAC,CAAA;AACP,GAAA;AAEA,EAAA,MAAME,gBAAgB,GAAG,CAAC,CAACpH,cAAc,CAACuE,MAAM,CAAA;AAChD,EAAA,IAAItD,IAAI,KAAKf,eAAe,IAAI9C,WAAW,CAAC,EAAE;AAC5C,IAAA,IAAIgK,gBAAgB,IAAI/F,0BAA0B,GAAG,CAAC,EAAE;MACtDC,6BAA6B,CAAC,CAAC,CAAC,CAAA;AAClC,KAAA;AACA,IAAA,IAAI,CAAC8F,gBAAgB,IAAI/F,0BAA0B,IAAI,CAAC,EAAE;MACxDC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,KAAA;AACF,GAAA;AAEA,EAAA,oBACEmE,eAAA,CAAA,KAAA,EAAA;AAAK;AACHC,IAAAA,GAAG,EAAE7D,eAAgB;IACrBb,SAAS,EAAEsE,SAAI,CAACvE,CAAC,CAAC,WAAW,CAAC,EAAEtB,KAAK,GAAGsB,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,EAAEA,CAAC,CAAC,WAAW,CAAC,CAAE;AAC/EsG,IAAAA,SAAS,EAAEnD,aAAc;AACzBoD,IAAAA,WAAW,EAAElE,gBAAiB;AAC9BvD,IAAAA,OAAO,EAAE4D,aAAc;AACvB3D,IAAAA,MAAM,EAAE4D,YAAa;IAAAmC,QAAA,EAAA,cAErBJ,eAAA,CAAC8B,eAAM,EAAA;AACL7B,MAAAA,GAAG,EAAE5D,uBAAwB;AAAA,MAAA,GACzBrB,eAAe;AACnBrB,MAAAA,EAAE,EAAEoD,UAAW;AACf/C,MAAAA,KAAK,EAAEA,KAAM;AACbD,MAAAA,IAAI,EAAEA,IAAK;AACXgI,MAAAA,QAAQ,EAAC,QAAQ;MACjBxG,SAAS,EAAEsE,SAAI,CACbvE,CAAC,CAAC,oBAAoB,CAAC,EACvBA,CAAC,CAAC,oBAAoB,CAAC,EACvBzB,OAAO,GAAGyB,CAAC,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAA;AAE/C;AAAA;AACA0G,MAAAA,IAAI,EAAE,IAAK;AACXC,MAAAA,QAAQ,EAAE,IAAK;AACf1J,MAAAA,QAAQ,EAAEA,QAAS;AACnB,MAAA,eAAA,EAAeyE,SAAU;AACzB,MAAA,eAAA,EAAexB,IAAK;AACpBkF,MAAAA,OAAO,EAAEhD,aAAc;AAAA,MAAA,GACnB3C,WAAW;AAAAqF,MAAAA,QAAA,EAEdnG,CAAAA,QAAQ,gBACPoG,cAAA,CAACmB,MAAM,EAAA;AAAC3J,QAAAA,KAAK,EAAEwB,SAAU;AAAA,QAAA,GAAKY,QAAQ;AAAEU,QAAAA,UAAU,EAAEC,cAAe;QAACX,QAAQ,EAAA,IAAA;QAAG,gBAE/EoG,cAAA,CAAA,MAAA,EAAA;AAAM9E,QAAAA,SAAS,EAAED,CAAC,CAAC,0BAA0B,CAAE;AAAA8E,QAAAA,QAAA,EAAE1G,WAAAA;OAAkB,CACpE,eACD2G,cAAA,CAAC6B,OAAAA;AACC;AAAA,QAAA;QACA3G,SAAS,EAAEsE,SAAI,CACbvE,CAAC,CAAC,SAAS,CAAC,EACZA,CAAC,CAAC,oBAAoB,CAAC,EACvBA,CAAC,CAAC,YAAY,CAAC,EACfA,CAAC,CAAC,QAAQ,CAAC,EACXA,CAAC,CAAC,mBAAmB,CAAC,CAAA;AACtB,OAEN,CAAA,CAAA;KAAQ,CACR,EAAC4B,QAAQ,GACPX,eAAe,gBACb8D,cAAA,CAAC8B,MAAM,EAAA;AACL3G,MAAAA,IAAI,EAAEA,IAAK;MACX4G,WAAW,EAAE1H,iBAAiB,IAAIQ,aAAa,CAACsF,eAAQ,CAAC9F,iBAAiB,CAAE;AAC5E2H,MAAAA,OAAO,EAAEtE,kBAAmB;MAAAqC,QAAA,EAE3BT,iBAAiB;AAAE,KACd,CAAC,gBAETU,cAAA,CAACiC,WAAW,EAAA;AAAC9G,MAAAA,IAAI,EAAEA,IAAK;AAAC6G,MAAAA,OAAO,EAAEtE,kBAAmB;MAAAqC,QAAA,EAClDT,iBAAiB,CAAC;AAAEpE,QAAAA,SAAS,EAAEH,QAAQ,GAAG,EAAE,GAAG,OAAA;OAAS,CAAA;AAAC,KAC/C,CACd,gBAEDiF,cAAA,CAACkC,KAAK,EAAA;AACJ/G,MAAAA,IAAI,EAAEA,IAAK;AACXgH,MAAAA,IAAI,EAAE,KAAM;MACZC,OAAO,EAAA,IAAA;AACPC,MAAAA,SAAS,EAAEtG,eAAgB;AAC3BuG,MAAAA,WAAW,EAAEnG,mBAAoB;MACjCoG,QAAQ,EAAE/H,UAAU,GAAGgI,iBAAQ,CAACC,GAAG,GAAGD,iBAAQ,CAACE,MAAO;AACtDV,MAAAA,OAAO,EAAEtE,kBAAmB;MAAAqC,QAAA,EAE3BT,iBAAiB,CAAC;AAAEpE,QAAAA,SAAS,EAAE,OAAA;OAAS,CAAA;AAAC,KACrC,CACR,CAAA;AAAA,GACE,CAAC,CAAA;AAEV;;;;"}
@@ -363,14 +363,12 @@ function Select({
363
363
  })
364
364
  );
365
365
  }
366
- // eslint-disable-next-line react/prop-types
367
366
  function SeparatorOption() {
368
367
  return /*#__PURE__*/jsx("li", {
369
368
  className: s('np-separator'),
370
369
  "aria-hidden": true
371
370
  });
372
371
  }
373
- // eslint-disable-next-line react/prop-types
374
372
  function HeaderOption({
375
373
  children
376
374
  }) {
@@ -404,30 +402,26 @@ function Select({
404
402
  [s('np-dropdown-item--focused')]: isFocusedWithKeyboard
405
403
  });
406
404
  const handleOnClick = selectOption.disabled ? stopPropagation : createSelectHandlerForOption(selectOption);
407
- return (
408
- /*#__PURE__*/
409
- /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */
410
- jsx("li", {
411
- ref: isFocusedWithKeyboard ? keyboardFocusedReference : undefined,
412
- id: getUniqueIdForOption(id, option),
413
- "aria-selected": isActive,
414
- "aria-disabled": option.disabled,
415
- role: "option",
416
- tabIndex: -1,
417
- className: className,
418
- onClick: handleOnClick,
419
- onKeyPress: handleOnClick,
420
- children: /*#__PURE__*/jsx("a", {
421
- disabled: selectOption.disabled,
422
- children: /*#__PURE__*/jsx(Option, {
423
- label: undefined,
424
- value: undefined,
425
- ...selectOption,
426
- classNames: classNamesProp
427
- })
405
+ return /*#__PURE__*/jsx("li", {
406
+ ref: isFocusedWithKeyboard ? keyboardFocusedReference : undefined,
407
+ id: getUniqueIdForOption(id, option),
408
+ "aria-selected": isActive,
409
+ "aria-disabled": option.disabled,
410
+ role: "option",
411
+ tabIndex: -1,
412
+ className: className,
413
+ onClick: handleOnClick,
414
+ onKeyPress: handleOnClick,
415
+ children: /*#__PURE__*/jsx("a", {
416
+ disabled: selectOption.disabled,
417
+ children: /*#__PURE__*/jsx(Option, {
418
+ label: undefined,
419
+ value: undefined,
420
+ ...selectOption,
421
+ classNames: classNamesProp
428
422
  })
429
- }, index)
430
- );
423
+ })
424
+ }, index);
431
425
  };
432
426
  function getIndexWithoutHeadersForIndexWithHeaders(index) {
433
427
  return options.reduce((sum, option, currentIndex) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Select.mjs","sources":["../../src/select/Select.tsx"],"sourcesContent":["import { useTheme } from '@wise/components-theming';\nimport { clsx } from 'clsx';\nimport { useState, useEffect, useRef, useMemo, useId } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport Button, { ButtonProps } from '../button';\nimport Chevron from '../chevron';\nimport { Position, Size } from '../common';\nimport BottomSheet from '../common/bottomSheet';\nimport { stopPropagation } from '../common/domHelpers';\nimport { useLayout } from '../common/hooks';\nimport Panel from '../common/panel';\nimport Drawer from '../drawer';\nimport { useInputAttributes } from '../inputs/contexts';\n\nimport messages from './Select.messages';\nimport Option from './option';\nimport SearchBox from './searchBox';\n\nconst DEFAULT_SEARCH_VALUE = '';\nconst DEFAULT_OPTIONS_PAGE_SIZE = 1000;\n\nconst includesString = (string1: string, string2: string) =>\n string1.toLowerCase().includes(string2.toLowerCase());\n\nexport interface SelectOptionItem {\n value: any;\n label?: React.ReactNode;\n icon?: React.ReactNode;\n currency?: string;\n note?: React.ReactNode;\n secondary?: React.ReactNode;\n}\n\nexport interface SelectItem extends Partial<SelectOptionItem> {\n header?: React.ReactNode;\n separator?: boolean;\n disabled?: boolean;\n searchStrings?: string[];\n}\n\nexport interface SelectItemWithPlaceholder extends SelectItem {\n placeholder?: string;\n}\n\nfunction defaultFilterFunction(option: SelectItemWithPlaceholder, searchValue: string) {\n if (isPlaceholderOption(option)) {\n return true;\n }\n const { label, note, secondary, currency, searchStrings } = option;\n return (\n (typeof label === 'string' && includesString(label, searchValue)) ||\n (typeof note === 'string' && includesString(note, searchValue)) ||\n (typeof secondary === 'string' && includesString(secondary, searchValue)) ||\n (!!currency && includesString(currency, searchValue)) ||\n (!!searchStrings && searchStrings.some((string) => includesString(string, searchValue)))\n );\n}\n\nfunction isActionableOption(option: SelectItem) {\n return !option.header && !option.separator && !option.disabled;\n}\n\nfunction isHeaderOption(option: SelectItem | null) {\n return option != null && 'header' in option;\n}\n\nfunction isSeparatorOption(option: SelectItem | null) {\n return option != null && 'separator' in option;\n}\n\nfunction clamp(from: number, to: number, value: number) {\n return Math.max(Math.min(to, value), from);\n}\n\n/**\n * No option or placeholder option is selected\n */\nconst DEFAULT_SELECTED_OPTION = null;\n\nfunction isPlaceholderOption(option: SelectItemWithPlaceholder | null) {\n return option === DEFAULT_SELECTED_OPTION || 'placeholder' in option;\n}\n\nfunction isSearchableOption(option: SelectItemWithPlaceholder | null) {\n return !isHeaderOption(option) && !isSeparatorOption(option) && !isPlaceholderOption(option);\n}\n\nconst getUniqueIdForOption = (parentId: string | undefined, option: SelectItem | null) => {\n if (option == null) {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const uniqueOptionId =\n option.value || (typeof option.label === 'string' ? option.label.replace(/\\s/g, '') : '');\n\n return `option-${parentId ?? ''}-${uniqueOptionId}`;\n};\n\nexport interface SelectProps {\n placeholder?: string;\n id?: string;\n required?: boolean;\n disabled?: boolean;\n inverse?: boolean;\n dropdownRight?: `${Size.EXTRA_SMALL | Size.SMALL | Size.MEDIUM | Size.LARGE | Size.EXTRA_LARGE}`;\n dropdownWidth?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n block?: boolean;\n selected?: SelectOptionItem;\n /**\n * Search toggle\n * if `true` default search functionality being enabled (not case sensitive search in option labels & currency props)\n * if `function` you can define your own search function to implement custom search experience. This search function used while filtering the options array.\n */\n search?: boolean | ((option: SelectItemWithPlaceholder, searchValue: string) => boolean);\n options: SelectItem[];\n searchValue?: string;\n searchPlaceholder?: string;\n classNames?: Record<string, string>;\n dropdownUp?: boolean;\n buttonProps?: Extract<ButtonProps, { as?: 'button' }>;\n dropdownProps?: React.ComponentPropsWithoutRef<'ul'>;\n onChange: (value: SelectItem | typeof DEFAULT_SELECTED_OPTION) => void;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n /**\n * To have full control of your search value and response use `onSearchChange` function combined with `searchValue` and custom filtering on the options array.\n * DO NOT USE TOGETHER WITH `search` PROPERTY\n */\n onSearchChange?: (value: string) => void;\n}\n\nconst defaultClassNames = {};\n\n/**\n * @deprecated Use `SelectInput` instead (https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)\n */\nexport default function Select({\n placeholder,\n id,\n required,\n disabled,\n inverse,\n dropdownWidth,\n size = 'md',\n block = true,\n selected,\n search,\n onChange,\n onFocus,\n onBlur,\n options: defaultOptions,\n onSearchChange,\n searchValue: initSearchValue = '',\n searchPlaceholder,\n classNames: classNamesProp = defaultClassNames,\n dropdownUp,\n dropdownProps,\n buttonProps,\n}: SelectProps) {\n const inputAttributes = useInputAttributes();\n\n const { formatMessage } = useIntl();\n const { isModern } = useTheme();\n const s = (className: string) => classNamesProp[className] || className;\n const [open, setOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(DEFAULT_SEARCH_VALUE);\n const [keyboardFocusedOptionIndex, setKeyboardFocusedOptionIndex] = useState(-1);\n const keyboardFocusedReference = useRef<HTMLLIElement>(null);\n const previousKeyboardFocusedOptionIndex = useRef(-1);\n const [numberOfOptionsShown, setNumberOfOptionsShown] = useState(DEFAULT_OPTIONS_PAGE_SIZE);\n const searchBoxReference = useRef<HTMLInputElement>(null);\n const selectReference = useRef<HTMLDivElement>(null);\n const dropdownButtonReference = useRef<HTMLButtonElement>(null);\n const optionsListReference = useRef<HTMLUListElement>(null);\n const isSearchEnabled = !!onSearchChange || !!search;\n const isDropdownAutoWidth = dropdownWidth == null;\n\n const options = useMemo(() => {\n if (!search || !searchValue) {\n return defaultOptions;\n }\n\n return defaultOptions.filter(isSearchableOption).filter((option) => {\n if (typeof search === 'function') {\n return search(option, searchValue);\n }\n return defaultFilterFunction(option, searchValue);\n });\n }, [defaultOptions, search, searchValue]);\n\n const selectableOptions = useMemo(() => options.filter(isActionableOption), [options]);\n const focusedOption = selectableOptions[keyboardFocusedOptionIndex];\n\n const fallbackButtonId = useId();\n const computedId = id || inputAttributes.id || fallbackButtonId;\n const listboxId = `${computedId}-listbox`;\n const searchBoxId = `${computedId}-searchbox`;\n\n const { isMobile } = useLayout();\n\n useEffect(() => {\n let cancelled = false;\n\n if (keyboardFocusedOptionIndex >= 0) {\n requestAnimationFrame(() => {\n if (!cancelled) {\n if (isSearchEnabled) {\n keyboardFocusedReference.current?.scrollIntoView?.({ block: 'center' });\n } else {\n keyboardFocusedReference.current?.focus();\n }\n }\n });\n\n return () => {\n cancelled = true;\n };\n }\n }, [keyboardFocusedOptionIndex, isSearchEnabled]);\n\n const handleOnClick = () => {\n setOpen(true);\n };\n\n const handleTouchStart: React.TouchEventHandler<HTMLDivElement> = (event) => {\n if (event.currentTarget === event.target && open) {\n handleCloseOptions();\n }\n };\n\n const handleOnFocus: React.FocusEventHandler<HTMLDivElement> = (event) => {\n onFocus?.(event);\n };\n\n const handleOnBlur: React.FocusEventHandler<HTMLDivElement> = (event) => {\n const { nativeEvent } = event;\n if (nativeEvent) {\n const elementReceivingFocus = nativeEvent.relatedTarget;\n const select = event.currentTarget;\n if (\n select &&\n elementReceivingFocus instanceof Node &&\n select.contains(elementReceivingFocus)\n ) {\n return;\n }\n }\n\n onBlur?.(event);\n };\n\n const handleSearchChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n setNumberOfOptionsShown(DEFAULT_OPTIONS_PAGE_SIZE);\n setSearchValue(event.target.value);\n onSearchChange?.(event.target.value);\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event) => {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n if (open) {\n moveFocusWithDifference(event.key === 'ArrowUp' ? -1 : 1);\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case ' ':\n if (event.target !== searchBoxReference.current) {\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n }\n break;\n case 'Enter':\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case 'Escape':\n handleCloseOptions();\n stopPropagation(event);\n break;\n case 'Tab':\n if (open) {\n selectKeyboardFocusedOption();\n }\n break;\n default:\n break;\n }\n };\n\n function selectKeyboardFocusedOption() {\n if (keyboardFocusedOptionIndex >= 0 && selectableOptions.length > 0) {\n selectOption(selectableOptions[keyboardFocusedOptionIndex]);\n }\n }\n\n function moveFocusWithDifference(difference: number) {\n const selectedOptionIndex = selectableOptions.reduce((optionIndex, current, index) => {\n if (optionIndex >= 0) {\n return optionIndex;\n }\n if (isOptionSelected(selected, current)) {\n return index;\n }\n return -1;\n }, -1);\n const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current;\n let indexToStartMovingFrom = previousFocusedIndex;\n if (previousFocusedIndex < 0) {\n if (selectedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n } else {\n indexToStartMovingFrom = selectedOptionIndex;\n }\n }\n\n const unClampedNewIndex = indexToStartMovingFrom + difference;\n const newIndex = clamp(0, selectableOptions.length - 1, unClampedNewIndex);\n\n setKeyboardFocusedOptionIndex(newIndex);\n }\n\n useEffect(() => {\n if (open) {\n if (!isMobile || searchValue) {\n if (isSearchEnabled && searchBoxReference.current) {\n searchBoxReference.current.focus();\n }\n if (\n !isSearchEnabled &&\n optionsListReference.current &&\n previousKeyboardFocusedOptionIndex.current < 0\n ) {\n optionsListReference.current.focus();\n }\n }\n\n previousKeyboardFocusedOptionIndex.current = keyboardFocusedOptionIndex;\n } else {\n previousKeyboardFocusedOptionIndex.current = -1;\n }\n }, [open, searchValue, isSearchEnabled, isMobile, keyboardFocusedOptionIndex]);\n\n const handleCloseOptions = () => {\n setOpen(false);\n setKeyboardFocusedOptionIndex(-1);\n if (dropdownButtonReference.current) {\n dropdownButtonReference.current.focus();\n }\n };\n\n function createSelectHandlerForOption(option: SelectItemWithPlaceholder) {\n return (event: React.SyntheticEvent) => {\n stopPropagation(event);\n selectOption(option);\n };\n }\n\n function selectOption(option: SelectItemWithPlaceholder) {\n onChange(isPlaceholderOption(option) ? DEFAULT_SELECTED_OPTION : option);\n handleCloseOptions();\n }\n\n function renderOptionsList({ className = '' } = {}) {\n const dropdownClass = clsx(\n s('np-dropdown-menu'),\n {\n [s('np-dropdown-menu-desktop')]: !isMobile,\n [s(`np-dropdown-menu-${dropdownWidth}`)]: !isMobile && !isDropdownAutoWidth,\n },\n s(className),\n );\n\n const showPlaceholder = !required && !isSearchEnabled && Boolean(placeholder);\n return (\n <ul\n ref={optionsListReference}\n id={listboxId}\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-activedescendant={getUniqueIdForOption(id, selected ?? null)}\n tabIndex={-1}\n className={dropdownClass}\n {...dropdownProps}\n >\n {showPlaceholder && <PlaceHolderOption />}\n {isSearchEnabled && (\n <SearchBox\n ref={searchBoxReference}\n id={searchBoxId}\n classNames={classNamesProp}\n value={initSearchValue || searchValue}\n placeholder={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n focusedOptionId={getUniqueIdForOption(id, focusedOption)}\n onChange={handleSearchChange}\n onClick={stopPropagation}\n />\n )}\n {options.slice(0, numberOfOptionsShown).map(renderOption)}\n {numberOfOptionsShown < options.length && <ShowMoreOption />}\n </ul>\n );\n }\n\n function ShowMoreOption() {\n function handleOnClick(event: React.SyntheticEvent<HTMLLIElement>) {\n stopPropagation(event);\n setNumberOfOptionsShown(numberOfOptionsShown + DEFAULT_OPTIONS_PAGE_SIZE);\n }\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'), s('show-more'))}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>...</a>\n </li>\n );\n }\n\n function PlaceHolderOption() {\n const placeholderOption = { placeholder };\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'))}\n onClick={createSelectHandlerForOption(placeholderOption)}\n onKeyPress={createSelectHandlerForOption(placeholderOption)}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>{placeholder}</a>\n </li>\n );\n }\n\n // eslint-disable-next-line react/prop-types\n function SeparatorOption() {\n return <li className={s('np-separator')} aria-hidden />;\n }\n\n // eslint-disable-next-line react/prop-types\n function HeaderOption({ children }: { children?: React.ReactNode }) {\n return (\n <li // eslint-disable-line jsx-a11y/no-noninteractive-element-interactions\n className={clsx(s('np-dropdown-header'), s('np-text-title-group'))}\n onClick={stopPropagation}\n onKeyPress={stopPropagation}\n >\n {children}\n </li>\n );\n }\n\n function isOptionSelected(selected: SelectOptionItem | undefined, option: SelectItem) {\n return selected?.value === option?.value;\n }\n\n const renderOption = (option: SelectItem, index: number) => {\n const separatorOption = option;\n if (isSeparatorOption(separatorOption) && separatorOption?.separator) {\n return <SeparatorOption key={index} />;\n }\n const headerOption = option;\n if (isHeaderOption(headerOption) && headerOption.header) {\n return <HeaderOption key={index}>{headerOption.header}</HeaderOption>;\n }\n\n const isActive = isOptionSelected(selected, option);\n const selectOption = option;\n const isFocusedWithKeyboard =\n !selectOption.disabled &&\n keyboardFocusedOptionIndex === getIndexWithoutHeadersForIndexWithHeaders(index);\n\n const className = clsx(\n s('np-dropdown-item'),\n selectOption.disabled ? [s('disabled')] : s('clickable'),\n {\n [s('active')]: isActive,\n [s('np-dropdown-item--focused')]: isFocusedWithKeyboard,\n },\n );\n\n const handleOnClick = selectOption.disabled\n ? stopPropagation\n : createSelectHandlerForOption(selectOption);\n\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n ref={isFocusedWithKeyboard ? keyboardFocusedReference : undefined}\n key={index}\n id={getUniqueIdForOption(id, option)}\n aria-selected={isActive}\n aria-disabled={option.disabled}\n role=\"option\"\n tabIndex={-1}\n className={className}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* @ts-expect-error options needs DOM refactoring */}\n <a disabled={selectOption.disabled}>\n <Option\n label={undefined}\n value={undefined}\n {...selectOption}\n classNames={classNamesProp}\n />\n </a>\n </li>\n );\n };\n\n function getIndexWithoutHeadersForIndexWithHeaders(index: number) {\n return options.reduce((sum, option, currentIndex) => {\n if (currentIndex < index && isActionableOption(option)) {\n return sum + 1;\n }\n return sum;\n }, 0);\n }\n\n const hasActiveOptions = !!defaultOptions.length;\n if (open && (initSearchValue || searchValue)) {\n if (hasActiveOptions && keyboardFocusedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n }\n if (!hasActiveOptions && keyboardFocusedOptionIndex >= 0) {\n setKeyboardFocusedOptionIndex(-1);\n }\n }\n\n return (\n <div // eslint-disable-line jsx-a11y/no-static-element-interactions\n ref={selectReference}\n className={clsx(s('np-select'), block ? s('btn-block') : null, s('btn-group'))}\n onKeyDown={handleKeyDown}\n onTouchMove={handleTouchStart}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n >\n <Button\n ref={dropdownButtonReference}\n {...inputAttributes}\n id={computedId}\n block={block}\n size={size}\n htmlType=\"button\"\n className={clsx(\n s('np-dropdown-toggle'),\n s('np-text-body-large'),\n inverse ? s('np-dropdown-toggle-navy') : null,\n )}\n // reset Button's styles\n type={null}\n priority={null}\n disabled={disabled}\n aria-controls={listboxId}\n aria-expanded={open}\n onClick={handleOnClick}\n {...buttonProps}\n >\n {selected ? (\n <Option label={undefined} {...selected} classNames={classNamesProp} selected />\n ) : (\n <span className={s('form-control-placeholder')}>{placeholder}</span>\n )}\n <Chevron\n // disabled={disabled}\n className={clsx(\n s('tw-icon'),\n s('tw-chevron-up-icon'),\n s('tw-chevron'),\n s('bottom'),\n s('np-select-chevron'),\n )}\n />\n </Button>\n {isMobile ? (\n isSearchEnabled ? (\n <Drawer\n open={open}\n headerTitle={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n onClose={handleCloseOptions}\n >\n {renderOptionsList()}\n </Drawer>\n ) : (\n <BottomSheet open={open} onClose={handleCloseOptions}>\n {renderOptionsList({ className: isModern ? '' : 'p-a-1' })}\n </BottomSheet>\n )\n ) : (\n <Panel\n open={open}\n flip={false}\n altAxis\n anchorRef={selectReference}\n anchorWidth={isDropdownAutoWidth}\n position={dropdownUp ? Position.TOP : Position.BOTTOM}\n onClose={handleCloseOptions}\n >\n {renderOptionsList({ className: 'p-a-1' })}\n </Panel>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_SEARCH_VALUE","DEFAULT_OPTIONS_PAGE_SIZE","includesString","string1","string2","toLowerCase","includes","defaultFilterFunction","option","searchValue","isPlaceholderOption","label","note","secondary","currency","searchStrings","some","string","isActionableOption","header","separator","disabled","isHeaderOption","isSeparatorOption","clamp","from","to","value","Math","max","min","DEFAULT_SELECTED_OPTION","isSearchableOption","getUniqueIdForOption","parentId","undefined","uniqueOptionId","replace","defaultClassNames","Select","placeholder","id","required","inverse","dropdownWidth","size","block","selected","search","onChange","onFocus","onBlur","options","defaultOptions","onSearchChange","initSearchValue","searchPlaceholder","classNames","classNamesProp","dropdownUp","dropdownProps","buttonProps","inputAttributes","useInputAttributes","formatMessage","useIntl","isModern","useTheme","s","className","open","setOpen","useState","setSearchValue","keyboardFocusedOptionIndex","setKeyboardFocusedOptionIndex","keyboardFocusedReference","useRef","previousKeyboardFocusedOptionIndex","numberOfOptionsShown","setNumberOfOptionsShown","searchBoxReference","selectReference","dropdownButtonReference","optionsListReference","isSearchEnabled","isDropdownAutoWidth","useMemo","filter","selectableOptions","focusedOption","fallbackButtonId","useId","computedId","listboxId","searchBoxId","isMobile","useLayout","useEffect","cancelled","requestAnimationFrame","current","scrollIntoView","focus","handleOnClick","handleTouchStart","event","currentTarget","target","handleCloseOptions","handleOnFocus","handleOnBlur","nativeEvent","elementReceivingFocus","relatedTarget","select","Node","contains","handleSearchChange","handleKeyDown","key","moveFocusWithDifference","stopPropagation","selectKeyboardFocusedOption","length","selectOption","difference","selectedOptionIndex","reduce","optionIndex","index","isOptionSelected","previousFocusedIndex","indexToStartMovingFrom","unClampedNewIndex","newIndex","createSelectHandlerForOption","renderOptionsList","dropdownClass","clsx","showPlaceholder","Boolean","_jsxs","ref","role","tabIndex","children","_jsx","PlaceHolderOption","SearchBox","messages","focusedOptionId","onClick","slice","map","renderOption","ShowMoreOption","onKeyPress","placeholderOption","SeparatorOption","HeaderOption","separatorOption","headerOption","isActive","isFocusedWithKeyboard","getIndexWithoutHeadersForIndexWithHeaders","Option","sum","currentIndex","hasActiveOptions","onKeyDown","onTouchMove","Button","htmlType","type","priority","Chevron","Drawer","headerTitle","onClose","BottomSheet","Panel","flip","altAxis","anchorRef","anchorWidth","position","Position","TOP","BOTTOM"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAMA,oBAAoB,GAAG,EAAE,CAAA;AAC/B,MAAMC,yBAAyB,GAAG,IAAI,CAAA;AAEtC,MAAMC,cAAc,GAAGA,CAACC,OAAe,EAAEC,OAAe,KACtDD,OAAO,CAACE,WAAW,EAAE,CAACC,QAAQ,CAACF,OAAO,CAACC,WAAW,EAAE,CAAC,CAAA;AAsBvD,SAASE,qBAAqBA,CAACC,MAAiC,EAAEC,WAAmB,EAAA;AACnF,EAAA,IAAIC,mBAAmB,CAACF,MAAM,CAAC,EAAE;AAC/B,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EACA,MAAM;IAAEG,KAAK;IAAEC,IAAI;IAAEC,SAAS;IAAEC,QAAQ;AAAEC,IAAAA,aAAAA;AAAe,GAAA,GAAGP,MAAM,CAAA;AAClE,EAAA,OACG,OAAOG,KAAK,KAAK,QAAQ,IAAIT,cAAc,CAACS,KAAK,EAAEF,WAAW,CAAC,IAC/D,OAAOG,IAAI,KAAK,QAAQ,IAAIV,cAAc,CAACU,IAAI,EAAEH,WAAW,CAAE,IAC9D,OAAOI,SAAS,KAAK,QAAQ,IAAIX,cAAc,CAACW,SAAS,EAAEJ,WAAW,CAAE,IACxE,CAAC,CAACK,QAAQ,IAAIZ,cAAc,CAACY,QAAQ,EAAEL,WAAW,CAAE,IACpD,CAAC,CAACM,aAAa,IAAIA,aAAa,CAACC,IAAI,CAAEC,MAAM,IAAKf,cAAc,CAACe,MAAM,EAAER,WAAW,CAAC,CAAE,CAAA;AAE5F,CAAA;AAEA,SAASS,kBAAkBA,CAACV,MAAkB,EAAA;AAC5C,EAAA,OAAO,CAACA,MAAM,CAACW,MAAM,IAAI,CAACX,MAAM,CAACY,SAAS,IAAI,CAACZ,MAAM,CAACa,QAAQ,CAAA;AAChE,CAAA;AAEA,SAASC,cAAcA,CAACd,MAAyB,EAAA;AAC/C,EAAA,OAAOA,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAIA,MAAM,CAAA;AAC7C,CAAA;AAEA,SAASe,iBAAiBA,CAACf,MAAyB,EAAA;AAClD,EAAA,OAAOA,MAAM,IAAI,IAAI,IAAI,WAAW,IAAIA,MAAM,CAAA;AAChD,CAAA;AAEA,SAASgB,KAAKA,CAACC,IAAY,EAAEC,EAAU,EAAEC,KAAa,EAAA;AACpD,EAAA,OAAOC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAACJ,EAAE,EAAEC,KAAK,CAAC,EAAEF,IAAI,CAAC,CAAA;AAC5C,CAAA;AAEA;;AAEG;AACH,MAAMM,uBAAuB,GAAG,IAAI,CAAA;AAEpC,SAASrB,mBAAmBA,CAACF,MAAwC,EAAA;AACnE,EAAA,OAAOA,MAAM,KAAKuB,uBAAuB,IAAI,aAAa,IAAIvB,MAAM,CAAA;AACtE,CAAA;AAEA,SAASwB,kBAAkBA,CAACxB,MAAwC,EAAA;AAClE,EAAA,OAAO,CAACc,cAAc,CAACd,MAAM,CAAC,IAAI,CAACe,iBAAiB,CAACf,MAAM,CAAC,IAAI,CAACE,mBAAmB,CAACF,MAAM,CAAC,CAAA;AAC9F,CAAA;AAEA,MAAMyB,oBAAoB,GAAGA,CAACC,QAA4B,EAAE1B,MAAyB,KAAI;EACvF,IAAIA,MAAM,IAAI,IAAI,EAAE;AAClB,IAAA,OAAO2B,SAAS,CAAA;AAClB,GAAA;AAEA;EACA,MAAMC,cAAc,GAClB5B,MAAM,CAACmB,KAAK,KAAK,OAAOnB,MAAM,CAACG,KAAK,KAAK,QAAQ,GAAGH,MAAM,CAACG,KAAK,CAAC0B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;AAE3F,EAAA,OAAO,UAAUH,QAAQ,IAAI,EAAE,CAAA,CAAA,EAAIE,cAAc,CAAE,CAAA,CAAA;AACrD,CAAC,CAAA;AAoCD,MAAME,iBAAiB,GAAG,EAAE,CAAA;AAE5B;;AAEG;AACqB,SAAAC,MAAMA,CAAC;EAC7BC,WAAW;EACXC,EAAE;EACFC,QAAQ;EACRrB,QAAQ;EACRsB,OAAO;EACPC,aAAa;AACbC,EAAAA,IAAI,GAAG,IAAI;AACXC,EAAAA,KAAK,GAAG,IAAI;EACZC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC,OAAO;EACPC,MAAM;AACNC,EAAAA,OAAO,EAAEC,cAAc;EACvBC,cAAc;EACd7C,WAAW,EAAE8C,eAAe,GAAG,EAAE;EACjCC,iBAAiB;EACjBC,UAAU,EAAEC,cAAc,GAAGpB,iBAAiB;EAC9CqB,UAAU;EACVC,aAAa;AACbC,EAAAA,WAAAA;AACY,CAAA,EAAA;AACZ,EAAA,MAAMC,eAAe,GAAGC,kBAAkB,EAAE,CAAA;EAE5C,MAAM;AAAEC,IAAAA,aAAAA;GAAe,GAAGC,OAAO,EAAE,CAAA;EACnC,MAAM;AAAEC,IAAAA,QAAAA;GAAU,GAAGC,QAAQ,EAAE,CAAA;EAC/B,MAAMC,CAAC,GAAIC,SAAiB,IAAKX,cAAc,CAACW,SAAS,CAAC,IAAIA,SAAS,CAAA;EACvE,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC,CAAA;EACvC,MAAM,CAAC/D,WAAW,EAAEgE,cAAc,CAAC,GAAGD,QAAQ,CAACxE,oBAAoB,CAAC,CAAA;EACpE,MAAM,CAAC0E,0BAA0B,EAAEC,6BAA6B,CAAC,GAAGH,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAChF,EAAA,MAAMI,wBAAwB,GAAGC,MAAM,CAAgB,IAAI,CAAC,CAAA;AAC5D,EAAA,MAAMC,kCAAkC,GAAGD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;EACrD,MAAM,CAACE,oBAAoB,EAAEC,uBAAuB,CAAC,GAAGR,QAAQ,CAACvE,yBAAyB,CAAC,CAAA;AAC3F,EAAA,MAAMgF,kBAAkB,GAAGJ,MAAM,CAAmB,IAAI,CAAC,CAAA;AACzD,EAAA,MAAMK,eAAe,GAAGL,MAAM,CAAiB,IAAI,CAAC,CAAA;AACpD,EAAA,MAAMM,uBAAuB,GAAGN,MAAM,CAAoB,IAAI,CAAC,CAAA;AAC/D,EAAA,MAAMO,oBAAoB,GAAGP,MAAM,CAAmB,IAAI,CAAC,CAAA;EAC3D,MAAMQ,eAAe,GAAG,CAAC,CAAC/B,cAAc,IAAI,CAAC,CAACN,MAAM,CAAA;AACpD,EAAA,MAAMsC,mBAAmB,GAAG1C,aAAa,IAAI,IAAI,CAAA;AAEjD,EAAA,MAAMQ,OAAO,GAAGmC,OAAO,CAAC,MAAK;AAC3B,IAAA,IAAI,CAACvC,MAAM,IAAI,CAACvC,WAAW,EAAE;AAC3B,MAAA,OAAO4C,cAAc,CAAA;AACvB,KAAA;IAEA,OAAOA,cAAc,CAACmC,MAAM,CAACxD,kBAAkB,CAAC,CAACwD,MAAM,CAAEhF,MAAM,IAAI;AACjE,MAAA,IAAI,OAAOwC,MAAM,KAAK,UAAU,EAAE;AAChC,QAAA,OAAOA,MAAM,CAACxC,MAAM,EAAEC,WAAW,CAAC,CAAA;AACpC,OAAA;AACA,MAAA,OAAOF,qBAAqB,CAACC,MAAM,EAAEC,WAAW,CAAC,CAAA;AACnD,KAAC,CAAC,CAAA;GACH,EAAE,CAAC4C,cAAc,EAAEL,MAAM,EAAEvC,WAAW,CAAC,CAAC,CAAA;AAEzC,EAAA,MAAMgF,iBAAiB,GAAGF,OAAO,CAAC,MAAMnC,OAAO,CAACoC,MAAM,CAACtE,kBAAkB,CAAC,EAAE,CAACkC,OAAO,CAAC,CAAC,CAAA;AACtF,EAAA,MAAMsC,aAAa,GAAGD,iBAAiB,CAACf,0BAA0B,CAAC,CAAA;AAEnE,EAAA,MAAMiB,gBAAgB,GAAGC,KAAK,EAAE,CAAA;EAChC,MAAMC,UAAU,GAAGpD,EAAE,IAAIqB,eAAe,CAACrB,EAAE,IAAIkD,gBAAgB,CAAA;AAC/D,EAAA,MAAMG,SAAS,GAAG,CAAGD,EAAAA,UAAU,CAAU,QAAA,CAAA,CAAA;AACzC,EAAA,MAAME,WAAW,GAAG,CAAGF,EAAAA,UAAU,CAAY,UAAA,CAAA,CAAA;EAE7C,MAAM;AAAEG,IAAAA,QAAAA;GAAU,GAAGC,SAAS,EAAE,CAAA;AAEhCC,EAAAA,SAAS,CAAC,MAAK;IACb,IAAIC,SAAS,GAAG,KAAK,CAAA;IAErB,IAAIzB,0BAA0B,IAAI,CAAC,EAAE;AACnC0B,MAAAA,qBAAqB,CAAC,MAAK;QACzB,IAAI,CAACD,SAAS,EAAE;AACd,UAAA,IAAId,eAAe,EAAE;AACnBT,YAAAA,wBAAwB,CAACyB,OAAO,EAAEC,cAAc,GAAG;AAAExD,cAAAA,KAAK,EAAE,QAAA;AAAU,aAAA,CAAC,CAAA;AACzE,WAAC,MAAM;AACL8B,YAAAA,wBAAwB,CAACyB,OAAO,EAAEE,KAAK,EAAE,CAAA;AAC3C,WAAA;AACF,SAAA;AACF,OAAC,CAAC,CAAA;AAEF,MAAA,OAAO,MAAK;AACVJ,QAAAA,SAAS,GAAG,IAAI,CAAA;OACjB,CAAA;AACH,KAAA;AACF,GAAC,EAAE,CAACzB,0BAA0B,EAAEW,eAAe,CAAC,CAAC,CAAA;EAEjD,MAAMmB,aAAa,GAAGA,MAAK;IACzBjC,OAAO,CAAC,IAAI,CAAC,CAAA;GACd,CAAA;EAED,MAAMkC,gBAAgB,GAA6CC,KAAK,IAAI;IAC1E,IAAIA,KAAK,CAACC,aAAa,KAAKD,KAAK,CAACE,MAAM,IAAItC,IAAI,EAAE;AAChDuC,MAAAA,kBAAkB,EAAE,CAAA;AACtB,KAAA;GACD,CAAA;EAED,MAAMC,aAAa,GAA6CJ,KAAK,IAAI;IACvExD,OAAO,GAAGwD,KAAK,CAAC,CAAA;GACjB,CAAA;EAED,MAAMK,YAAY,GAA6CL,KAAK,IAAI;IACtE,MAAM;AAAEM,MAAAA,WAAAA;AAAa,KAAA,GAAGN,KAAK,CAAA;AAC7B,IAAA,IAAIM,WAAW,EAAE;AACf,MAAA,MAAMC,qBAAqB,GAAGD,WAAW,CAACE,aAAa,CAAA;AACvD,MAAA,MAAMC,MAAM,GAAGT,KAAK,CAACC,aAAa,CAAA;AAClC,MAAA,IACEQ,MAAM,IACNF,qBAAqB,YAAYG,IAAI,IACrCD,MAAM,CAACE,QAAQ,CAACJ,qBAAqB,CAAC,EACtC;AACA,QAAA,OAAA;AACF,OAAA;AACF,KAAA;IAEA9D,MAAM,GAAGuD,KAAK,CAAC,CAAA;GAChB,CAAA;EAED,MAAMY,kBAAkB,GAAgDZ,KAAK,IAAI;IAC/E1B,uBAAuB,CAAC/E,yBAAyB,CAAC,CAAA;AAClDwE,IAAAA,cAAc,CAACiC,KAAK,CAACE,MAAM,CAACjF,KAAK,CAAC,CAAA;AAClC2B,IAAAA,cAAc,GAAGoD,KAAK,CAACE,MAAM,CAACjF,KAAK,CAAC,CAAA;GACrC,CAAA;EAED,MAAM4F,aAAa,GAAgDb,KAAK,IAAI;IAC1E,QAAQA,KAAK,CAACc,GAAG;AACf,MAAA,KAAK,SAAS,CAAA;AACd,MAAA,KAAK,WAAW;AACd,QAAA,IAAIlD,IAAI,EAAE;UACRmD,uBAAuB,CAACf,KAAK,CAACc,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3D,SAAC,MAAM;UACLjD,OAAO,CAAC,IAAI,CAAC,CAAA;AACf,SAAA;QACAmD,eAAe,CAAChB,KAAK,CAAC,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,GAAG;AACN,QAAA,IAAIA,KAAK,CAACE,MAAM,KAAK3B,kBAAkB,CAACoB,OAAO,EAAE;AAC/C,UAAA,IAAI/B,IAAI,EAAE;AACRqD,YAAAA,2BAA2B,EAAE,CAAA;AAC/B,WAAC,MAAM;YACLpD,OAAO,CAAC,IAAI,CAAC,CAAA;AACf,WAAA;UACAmD,eAAe,CAAChB,KAAK,CAAC,CAAA;AACxB,SAAA;AACA,QAAA,MAAA;AACF,MAAA,KAAK,OAAO;AACV,QAAA,IAAIpC,IAAI,EAAE;AACRqD,UAAAA,2BAA2B,EAAE,CAAA;AAC/B,SAAC,MAAM;UACLpD,OAAO,CAAC,IAAI,CAAC,CAAA;AACf,SAAA;QACAmD,eAAe,CAAChB,KAAK,CAAC,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,QAAQ;AACXG,QAAAA,kBAAkB,EAAE,CAAA;QACpBa,eAAe,CAAChB,KAAK,CAAC,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,KAAK;AACR,QAAA,IAAIpC,IAAI,EAAE;AACRqD,UAAAA,2BAA2B,EAAE,CAAA;AAC/B,SAAA;AACA,QAAA,MAAA;AAGJ,KAAA;GACD,CAAA;EAED,SAASA,2BAA2BA,GAAA;IAClC,IAAIjD,0BAA0B,IAAI,CAAC,IAAIe,iBAAiB,CAACmC,MAAM,GAAG,CAAC,EAAE;AACnEC,MAAAA,YAAY,CAACpC,iBAAiB,CAACf,0BAA0B,CAAC,CAAC,CAAA;AAC7D,KAAA;AACF,GAAA;EAEA,SAAS+C,uBAAuBA,CAACK,UAAkB,EAAA;AACjD,IAAA,MAAMC,mBAAmB,GAAGtC,iBAAiB,CAACuC,MAAM,CAAC,CAACC,WAAW,EAAE5B,OAAO,EAAE6B,KAAK,KAAI;MACnF,IAAID,WAAW,IAAI,CAAC,EAAE;AACpB,QAAA,OAAOA,WAAW,CAAA;AACpB,OAAA;AACA,MAAA,IAAIE,gBAAgB,CAACpF,QAAQ,EAAEsD,OAAO,CAAC,EAAE;AACvC,QAAA,OAAO6B,KAAK,CAAA;AACd,OAAA;AACA,MAAA,OAAO,CAAC,CAAC,CAAA;KACV,EAAE,CAAC,CAAC,CAAC,CAAA;AACN,IAAA,MAAME,oBAAoB,GAAGtD,kCAAkC,CAACuB,OAAO,CAAA;IACvE,IAAIgC,sBAAsB,GAAGD,oBAAoB,CAAA;IACjD,IAAIA,oBAAoB,GAAG,CAAC,EAAE;MAC5B,IAAIL,mBAAmB,GAAG,CAAC,EAAE;QAC3BpD,6BAA6B,CAAC,CAAC,CAAC,CAAA;AAClC,OAAC,MAAM;AACL0D,QAAAA,sBAAsB,GAAGN,mBAAmB,CAAA;AAC9C,OAAA;AACF,KAAA;AAEA,IAAA,MAAMO,iBAAiB,GAAGD,sBAAsB,GAAGP,UAAU,CAAA;AAC7D,IAAA,MAAMS,QAAQ,GAAG/G,KAAK,CAAC,CAAC,EAAEiE,iBAAiB,CAACmC,MAAM,GAAG,CAAC,EAAEU,iBAAiB,CAAC,CAAA;IAE1E3D,6BAA6B,CAAC4D,QAAQ,CAAC,CAAA;AACzC,GAAA;AAEArC,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI5B,IAAI,EAAE;AACR,MAAA,IAAI,CAAC0B,QAAQ,IAAIvF,WAAW,EAAE;AAC5B,QAAA,IAAI4E,eAAe,IAAIJ,kBAAkB,CAACoB,OAAO,EAAE;AACjDpB,UAAAA,kBAAkB,CAACoB,OAAO,CAACE,KAAK,EAAE,CAAA;AACpC,SAAA;AACA,QAAA,IACE,CAAClB,eAAe,IAChBD,oBAAoB,CAACiB,OAAO,IAC5BvB,kCAAkC,CAACuB,OAAO,GAAG,CAAC,EAC9C;AACAjB,UAAAA,oBAAoB,CAACiB,OAAO,CAACE,KAAK,EAAE,CAAA;AACtC,SAAA;AACF,OAAA;MAEAzB,kCAAkC,CAACuB,OAAO,GAAG3B,0BAA0B,CAAA;AACzE,KAAC,MAAM;AACLI,MAAAA,kCAAkC,CAACuB,OAAO,GAAG,CAAC,CAAC,CAAA;AACjD,KAAA;AACF,GAAC,EAAE,CAAC/B,IAAI,EAAE7D,WAAW,EAAE4E,eAAe,EAAEW,QAAQ,EAAEtB,0BAA0B,CAAC,CAAC,CAAA;EAE9E,MAAMmC,kBAAkB,GAAGA,MAAK;IAC9BtC,OAAO,CAAC,KAAK,CAAC,CAAA;IACdI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,IAAIQ,uBAAuB,CAACkB,OAAO,EAAE;AACnClB,MAAAA,uBAAuB,CAACkB,OAAO,CAACE,KAAK,EAAE,CAAA;AACzC,KAAA;GACD,CAAA;EAED,SAASiC,4BAA4BA,CAAChI,MAAiC,EAAA;AACrE,IAAA,OAAQkG,KAA2B,IAAI;MACrCgB,eAAe,CAAChB,KAAK,CAAC,CAAA;MACtBmB,YAAY,CAACrH,MAAM,CAAC,CAAA;KACrB,CAAA;AACH,GAAA;EAEA,SAASqH,YAAYA,CAACrH,MAAiC,EAAA;IACrDyC,QAAQ,CAACvC,mBAAmB,CAACF,MAAM,CAAC,GAAGuB,uBAAuB,GAAGvB,MAAM,CAAC,CAAA;AACxEqG,IAAAA,kBAAkB,EAAE,CAAA;AACtB,GAAA;AAEA,EAAA,SAAS4B,iBAAiBA,CAAC;AAAEpE,IAAAA,SAAS,GAAG,EAAA;GAAI,GAAG,EAAE,EAAA;IAChD,MAAMqE,aAAa,GAAGC,IAAI,CACxBvE,CAAC,CAAC,kBAAkB,CAAC,EACrB;AACE,MAAA,CAACA,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC4B,QAAQ;MAC1C,CAAC5B,CAAC,CAAC,CAAA,iBAAA,EAAoBxB,aAAa,CAAA,CAAE,CAAC,GAAG,CAACoD,QAAQ,IAAI,CAACV,mBAAAA;AACzD,KAAA,EACDlB,CAAC,CAACC,SAAS,CAAC,CACb,CAAA;IAED,MAAMuE,eAAe,GAAG,CAAClG,QAAQ,IAAI,CAAC2C,eAAe,IAAIwD,OAAO,CAACrG,WAAW,CAAC,CAAA;AAC7E,IAAA,oBACEsG,IAAA,CAAA,IAAA,EAAA;AACEC,MAAAA,GAAG,EAAE3D,oBAAqB;AAC1B3C,MAAAA,EAAE,EAAEqD,SAAU;AACdkD,MAAAA,IAAI,EAAC,SAAS;AACd,MAAA,kBAAA,EAAiB,UAAU;AAC3B,MAAA,uBAAA,EAAuB/G,oBAAoB,CAACQ,EAAE,EAAEM,QAAQ,IAAI,IAAI,CAAE;MAClEkG,QAAQ,EAAE,CAAC,CAAE;AACb5E,MAAAA,SAAS,EAAEqE,aAAc;AAAA,MAAA,GACrB9E,aAAa;AAAAsF,MAAAA,QAAA,EAEhBN,CAAAA,eAAe,iBAAIO,GAAA,CAACC,iBAAiB,KAAG,EACxC/D,eAAe,iBACd8D,GAAA,CAACE,SAAS,EAAA;AACRN,QAAAA,GAAG,EAAE9D,kBAAmB;AACxBxC,QAAAA,EAAE,EAAEsD,WAAY;AAChBtC,QAAAA,UAAU,EAAEC,cAAe;QAC3B/B,KAAK,EAAE4B,eAAe,IAAI9C,WAAY;QACtC+B,WAAW,EAAEgB,iBAAiB,IAAIQ,aAAa,CAACsF,QAAQ,CAAC9F,iBAAiB,CAAE;AAC5E+F,QAAAA,eAAe,EAAEtH,oBAAoB,CAACQ,EAAE,EAAEiD,aAAa,CAAE;AACzDzC,QAAAA,QAAQ,EAAEqE,kBAAmB;AAC7BkC,QAAAA,OAAO,EAAE9B,eAAAA;OAAgB,CAE5B,EACAtE,OAAO,CAACqG,KAAK,CAAC,CAAC,EAAE1E,oBAAoB,CAAC,CAAC2E,GAAG,CAACC,YAAY,CAAC,EACxD5E,oBAAoB,GAAG3B,OAAO,CAACwE,MAAM,iBAAIuB,GAAA,CAACS,cAAc,EAAA,EAAA,CAAG,CAAA;AAAA,KAC1D,CAAC,CAAA;AAET,GAAA;EAEA,SAASA,cAAcA,GAAA;IACrB,SAASpD,aAAaA,CAACE,KAA0C,EAAA;MAC/DgB,eAAe,CAAChB,KAAK,CAAC,CAAA;AACtB1B,MAAAA,uBAAuB,CAACD,oBAAoB,GAAG9E,yBAAyB,CAAC,CAAA;AAC3E,KAAA;AACA,IAAA;AAAA;AACE;MACAkJ,GAAA,CAAA,IAAA,EAAA;AACE9E,QAAAA,SAAS,EAAEsE,IAAI,CAACvE,CAAC,CAAC,WAAW,CAAC,EAAEA,CAAC,CAAC,eAAe,CAAC,EAAEA,CAAC,CAAC,WAAW,CAAC,CAAE;AACpEoF,QAAAA,OAAO,EAAEhD,aAAc;AACvBqD,QAAAA,UAAU,EAAErD,aAAc;AAAA0C,QAAAA,QAAA,eAG1BC,GAAA,CAAA,GAAA,EAAA;AAAAD,UAAAA,QAAA,EAAG,KAAA;SAAM,CAAA;OACP,CAAA;AAAC,MAAA;AAET,GAAA;EAEA,SAASE,iBAAiBA,GAAA;AACxB,IAAA,MAAMU,iBAAiB,GAAG;AAAEtH,MAAAA,WAAAA;KAAa,CAAA;AACzC,IAAA;AAAA;AACE;MACA2G,GAAA,CAAA,IAAA,EAAA;AACE9E,QAAAA,SAAS,EAAEsE,IAAI,CAACvE,CAAC,CAAC,WAAW,CAAC,EAAEA,CAAC,CAAC,eAAe,CAAC,CAAE;AACpDoF,QAAAA,OAAO,EAAEhB,4BAA4B,CAACsB,iBAAiB,CAAE;AACzDD,QAAAA,UAAU,EAAErB,4BAA4B,CAACsB,iBAAiB,CAAE;AAAAZ,QAAAA,QAAA,eAG5DC,GAAA,CAAA,GAAA,EAAA;AAAAD,UAAAA,QAAA,EAAI1G,WAAAA;SAAe,CAAA;OACjB,CAAA;AAAC,MAAA;AAET,GAAA;AAEA;EACA,SAASuH,eAAeA,GAAA;AACtB,IAAA,oBAAOZ,GAAA,CAAA,IAAA,EAAA;AAAI9E,MAAAA,SAAS,EAAED,CAAC,CAAC,cAAc,CAAE;AAAC,MAAA,aAAA,EAAA,IAAA;AAAW,MAAG,CAAA;AACzD,GAAA;AAEA;AACA,EAAA,SAAS4F,YAAYA,CAAC;AAAEd,IAAAA,QAAAA;AAA0C,GAAA,EAAA;AAChE,IAAA,oBACEC,GAAA,CAAA,IAAA,EAAA;AAAI;AACF9E,MAAAA,SAAS,EAAEsE,IAAI,CAACvE,CAAC,CAAC,oBAAoB,CAAC,EAAEA,CAAC,CAAC,qBAAqB,CAAC,CAAE;AACnEoF,MAAAA,OAAO,EAAE9B,eAAgB;AACzBmC,MAAAA,UAAU,EAAEnC,eAAgB;AAAAwB,MAAAA,QAAA,EAE3BA,QAAAA;AAAQ,KACP,CAAC,CAAA;AAET,GAAA;AAEA,EAAA,SAASf,gBAAgBA,CAACpF,QAAsC,EAAEvC,MAAkB,EAAA;AAClF,IAAA,OAAOuC,QAAQ,EAAEpB,KAAK,KAAKnB,MAAM,EAAEmB,KAAK,CAAA;AAC1C,GAAA;AAEA,EAAA,MAAMgI,YAAY,GAAGA,CAACnJ,MAAkB,EAAE0H,KAAa,KAAI;IACzD,MAAM+B,eAAe,GAAGzJ,MAAM,CAAA;IAC9B,IAAIe,iBAAiB,CAAC0I,eAAe,CAAC,IAAIA,eAAe,EAAE7I,SAAS,EAAE;AACpE,MAAA,oBAAO+H,GAAA,CAACY,eAAe,EAAA,EAAA,EAAM7B,KAAM,CAAG,CAAA;AACxC,KAAA;IACA,MAAMgC,YAAY,GAAG1J,MAAM,CAAA;IAC3B,IAAIc,cAAc,CAAC4I,YAAY,CAAC,IAAIA,YAAY,CAAC/I,MAAM,EAAE;MACvD,oBAAOgI,GAAA,CAACa,YAAY,EAAA;QAAAd,QAAA,EAAcgB,YAAY,CAAC/I,MAAAA;AAAM,OAAA,EAA3B+G,KAA0C,CAAC,CAAA;AACvE,KAAA;AAEA,IAAA,MAAMiC,QAAQ,GAAGhC,gBAAgB,CAACpF,QAAQ,EAAEvC,MAAM,CAAC,CAAA;IACnD,MAAMqH,YAAY,GAAGrH,MAAM,CAAA;AAC3B,IAAA,MAAM4J,qBAAqB,GACzB,CAACvC,YAAY,CAACxG,QAAQ,IACtBqD,0BAA0B,KAAK2F,yCAAyC,CAACnC,KAAK,CAAC,CAAA;IAEjF,MAAM7D,SAAS,GAAGsE,IAAI,CACpBvE,CAAC,CAAC,kBAAkB,CAAC,EACrByD,YAAY,CAACxG,QAAQ,GAAG,CAAC+C,CAAC,CAAC,UAAU,CAAC,CAAC,GAAGA,CAAC,CAAC,WAAW,CAAC,EACxD;AACE,MAAA,CAACA,CAAC,CAAC,QAAQ,CAAC,GAAG+F,QAAQ;AACvB,MAAA,CAAC/F,CAAC,CAAC,2BAA2B,CAAC,GAAGgG,qBAAAA;AACnC,KAAA,CACF,CAAA;IAED,MAAM5D,aAAa,GAAGqB,YAAY,CAACxG,QAAQ,GACvCqG,eAAe,GACfc,4BAA4B,CAACX,YAAY,CAAC,CAAA;AAE9C,IAAA;AAAA;AACE;MACAsB,GAAA,CAAA,IAAA,EAAA;AACEJ,QAAAA,GAAG,EAAEqB,qBAAqB,GAAGxF,wBAAwB,GAAGzC,SAAU;AAElEM,QAAAA,EAAE,EAAER,oBAAoB,CAACQ,EAAE,EAAEjC,MAAM,CAAE;AACrC,QAAA,eAAA,EAAe2J,QAAS;QACxB,eAAe3J,EAAAA,MAAM,CAACa,QAAS;AAC/B2H,QAAAA,IAAI,EAAC,QAAQ;QACbC,QAAQ,EAAE,CAAC,CAAE;AACb5E,QAAAA,SAAS,EAAEA,SAAU;AACrBmF,QAAAA,OAAO,EAAEhD,aAAc;AACvBqD,QAAAA,UAAU,EAAErD,aAAc;AAAA0C,QAAAA,QAAA,eAG1BC,GAAA,CAAA,GAAA,EAAA;UAAG9H,QAAQ,EAAEwG,YAAY,CAACxG,QAAS;UAAA6H,QAAA,eACjCC,GAAA,CAACmB,MAAM,EAAA;AACL3J,YAAAA,KAAK,EAAEwB,SAAU;AACjBR,YAAAA,KAAK,EAAEQ,SAAU;AAAA,YAAA,GACb0F,YAAY;AAChBpE,YAAAA,UAAU,EAAEC,cAAAA;WAEhB,CAAA;SAAG,CAAA;AACL,OAAA,EAnBOwE,KAmBH,CAAA;AAAC,MAAA;GAER,CAAA;EAED,SAASmC,yCAAyCA,CAACnC,KAAa,EAAA;IAC9D,OAAO9E,OAAO,CAAC4E,MAAM,CAAC,CAACuC,GAAG,EAAE/J,MAAM,EAAEgK,YAAY,KAAI;MAClD,IAAIA,YAAY,GAAGtC,KAAK,IAAIhH,kBAAkB,CAACV,MAAM,CAAC,EAAE;QACtD,OAAO+J,GAAG,GAAG,CAAC,CAAA;AAChB,OAAA;AACA,MAAA,OAAOA,GAAG,CAAA;KACX,EAAE,CAAC,CAAC,CAAA;AACP,GAAA;AAEA,EAAA,MAAME,gBAAgB,GAAG,CAAC,CAACpH,cAAc,CAACuE,MAAM,CAAA;AAChD,EAAA,IAAItD,IAAI,KAAKf,eAAe,IAAI9C,WAAW,CAAC,EAAE;AAC5C,IAAA,IAAIgK,gBAAgB,IAAI/F,0BAA0B,GAAG,CAAC,EAAE;MACtDC,6BAA6B,CAAC,CAAC,CAAC,CAAA;AAClC,KAAA;AACA,IAAA,IAAI,CAAC8F,gBAAgB,IAAI/F,0BAA0B,IAAI,CAAC,EAAE;MACxDC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,KAAA;AACF,GAAA;AAEA,EAAA,oBACEmE,IAAA,CAAA,KAAA,EAAA;AAAK;AACHC,IAAAA,GAAG,EAAE7D,eAAgB;IACrBb,SAAS,EAAEsE,IAAI,CAACvE,CAAC,CAAC,WAAW,CAAC,EAAEtB,KAAK,GAAGsB,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,EAAEA,CAAC,CAAC,WAAW,CAAC,CAAE;AAC/EsG,IAAAA,SAAS,EAAEnD,aAAc;AACzBoD,IAAAA,WAAW,EAAElE,gBAAiB;AAC9BvD,IAAAA,OAAO,EAAE4D,aAAc;AACvB3D,IAAAA,MAAM,EAAE4D,YAAa;IAAAmC,QAAA,EAAA,cAErBJ,IAAA,CAAC8B,MAAM,EAAA;AACL7B,MAAAA,GAAG,EAAE5D,uBAAwB;AAAA,MAAA,GACzBrB,eAAe;AACnBrB,MAAAA,EAAE,EAAEoD,UAAW;AACf/C,MAAAA,KAAK,EAAEA,KAAM;AACbD,MAAAA,IAAI,EAAEA,IAAK;AACXgI,MAAAA,QAAQ,EAAC,QAAQ;MACjBxG,SAAS,EAAEsE,IAAI,CACbvE,CAAC,CAAC,oBAAoB,CAAC,EACvBA,CAAC,CAAC,oBAAoB,CAAC,EACvBzB,OAAO,GAAGyB,CAAC,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAA;AAE/C;AAAA;AACA0G,MAAAA,IAAI,EAAE,IAAK;AACXC,MAAAA,QAAQ,EAAE,IAAK;AACf1J,MAAAA,QAAQ,EAAEA,QAAS;AACnB,MAAA,eAAA,EAAeyE,SAAU;AACzB,MAAA,eAAA,EAAexB,IAAK;AACpBkF,MAAAA,OAAO,EAAEhD,aAAc;AAAA,MAAA,GACnB3C,WAAW;AAAAqF,MAAAA,QAAA,EAEdnG,CAAAA,QAAQ,gBACPoG,GAAA,CAACmB,MAAM,EAAA;AAAC3J,QAAAA,KAAK,EAAEwB,SAAU;AAAA,QAAA,GAAKY,QAAQ;AAAEU,QAAAA,UAAU,EAAEC,cAAe;QAACX,QAAQ,EAAA,IAAA;QAAG,gBAE/EoG,GAAA,CAAA,MAAA,EAAA;AAAM9E,QAAAA,SAAS,EAAED,CAAC,CAAC,0BAA0B,CAAE;AAAA8E,QAAAA,QAAA,EAAE1G,WAAAA;OAAkB,CACpE,eACD2G,GAAA,CAAC6B,OAAAA;AACC;AAAA,QAAA;QACA3G,SAAS,EAAEsE,IAAI,CACbvE,CAAC,CAAC,SAAS,CAAC,EACZA,CAAC,CAAC,oBAAoB,CAAC,EACvBA,CAAC,CAAC,YAAY,CAAC,EACfA,CAAC,CAAC,QAAQ,CAAC,EACXA,CAAC,CAAC,mBAAmB,CAAC,CAAA;AACtB,OAEN,CAAA,CAAA;KAAQ,CACR,EAAC4B,QAAQ,GACPX,eAAe,gBACb8D,GAAA,CAAC8B,MAAM,EAAA;AACL3G,MAAAA,IAAI,EAAEA,IAAK;MACX4G,WAAW,EAAE1H,iBAAiB,IAAIQ,aAAa,CAACsF,QAAQ,CAAC9F,iBAAiB,CAAE;AAC5E2H,MAAAA,OAAO,EAAEtE,kBAAmB;MAAAqC,QAAA,EAE3BT,iBAAiB;AAAE,KACd,CAAC,gBAETU,GAAA,CAACiC,WAAW,EAAA;AAAC9G,MAAAA,IAAI,EAAEA,IAAK;AAAC6G,MAAAA,OAAO,EAAEtE,kBAAmB;MAAAqC,QAAA,EAClDT,iBAAiB,CAAC;AAAEpE,QAAAA,SAAS,EAAEH,QAAQ,GAAG,EAAE,GAAG,OAAA;OAAS,CAAA;AAAC,KAC/C,CACd,gBAEDiF,GAAA,CAACkC,KAAK,EAAA;AACJ/G,MAAAA,IAAI,EAAEA,IAAK;AACXgH,MAAAA,IAAI,EAAE,KAAM;MACZC,OAAO,EAAA,IAAA;AACPC,MAAAA,SAAS,EAAEtG,eAAgB;AAC3BuG,MAAAA,WAAW,EAAEnG,mBAAoB;MACjCoG,QAAQ,EAAE/H,UAAU,GAAGgI,QAAQ,CAACC,GAAG,GAAGD,QAAQ,CAACE,MAAO;AACtDV,MAAAA,OAAO,EAAEtE,kBAAmB;MAAAqC,QAAA,EAE3BT,iBAAiB,CAAC;AAAEpE,QAAAA,SAAS,EAAE,OAAA;OAAS,CAAA;AAAC,KACrC,CACR,CAAA;AAAA,GACE,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"Select.mjs","sources":["../../src/select/Select.tsx"],"sourcesContent":["import { useTheme } from '@wise/components-theming';\nimport { clsx } from 'clsx';\nimport { useState, useEffect, useRef, useMemo, useId } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport Button, { ButtonProps } from '../button';\nimport Chevron from '../chevron';\nimport { Position, Size } from '../common';\nimport BottomSheet from '../common/bottomSheet';\nimport { stopPropagation } from '../common/domHelpers';\nimport { useLayout } from '../common/hooks';\nimport Panel from '../common/panel';\nimport Drawer from '../drawer';\nimport { useInputAttributes } from '../inputs/contexts';\n\nimport messages from './Select.messages';\nimport Option from './option';\nimport SearchBox from './searchBox';\n\nconst DEFAULT_SEARCH_VALUE = '';\nconst DEFAULT_OPTIONS_PAGE_SIZE = 1000;\n\nconst includesString = (string1: string, string2: string) =>\n string1.toLowerCase().includes(string2.toLowerCase());\n\nexport interface SelectOptionItem {\n value: any;\n label?: React.ReactNode;\n icon?: React.ReactNode;\n currency?: string;\n note?: React.ReactNode;\n secondary?: React.ReactNode;\n}\n\nexport interface SelectItem extends Partial<SelectOptionItem> {\n header?: React.ReactNode;\n separator?: boolean;\n disabled?: boolean;\n searchStrings?: string[];\n}\n\nexport interface SelectItemWithPlaceholder extends SelectItem {\n placeholder?: string;\n}\n\nfunction defaultFilterFunction(option: SelectItemWithPlaceholder, searchValue: string) {\n if (isPlaceholderOption(option)) {\n return true;\n }\n const { label, note, secondary, currency, searchStrings } = option;\n return (\n (typeof label === 'string' && includesString(label, searchValue)) ||\n (typeof note === 'string' && includesString(note, searchValue)) ||\n (typeof secondary === 'string' && includesString(secondary, searchValue)) ||\n (!!currency && includesString(currency, searchValue)) ||\n (!!searchStrings && searchStrings.some((string) => includesString(string, searchValue)))\n );\n}\n\nfunction isActionableOption(option: SelectItem) {\n return !option.header && !option.separator && !option.disabled;\n}\n\nfunction isHeaderOption(option: SelectItem | null) {\n return option != null && 'header' in option;\n}\n\nfunction isSeparatorOption(option: SelectItem | null) {\n return option != null && 'separator' in option;\n}\n\nfunction clamp(from: number, to: number, value: number) {\n return Math.max(Math.min(to, value), from);\n}\n\n/**\n * No option or placeholder option is selected\n */\nconst DEFAULT_SELECTED_OPTION = null;\n\nfunction isPlaceholderOption(option: SelectItemWithPlaceholder | null) {\n return option === DEFAULT_SELECTED_OPTION || 'placeholder' in option;\n}\n\nfunction isSearchableOption(option: SelectItemWithPlaceholder | null) {\n return !isHeaderOption(option) && !isSeparatorOption(option) && !isPlaceholderOption(option);\n}\n\nconst getUniqueIdForOption = (parentId: string | undefined, option: SelectItem | null) => {\n if (option == null) {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const uniqueOptionId =\n option.value || (typeof option.label === 'string' ? option.label.replace(/\\s/g, '') : '');\n\n return `option-${parentId ?? ''}-${uniqueOptionId}`;\n};\n\nexport interface SelectProps {\n placeholder?: string;\n id?: string;\n required?: boolean;\n disabled?: boolean;\n inverse?: boolean;\n dropdownRight?: `${Size.EXTRA_SMALL | Size.SMALL | Size.MEDIUM | Size.LARGE | Size.EXTRA_LARGE}`;\n dropdownWidth?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n block?: boolean;\n selected?: SelectOptionItem;\n /**\n * Search toggle\n * if `true` default search functionality being enabled (not case sensitive search in option labels & currency props)\n * if `function` you can define your own search function to implement custom search experience. This search function used while filtering the options array.\n */\n search?: boolean | ((option: SelectItemWithPlaceholder, searchValue: string) => boolean);\n options: SelectItem[];\n searchValue?: string;\n searchPlaceholder?: string;\n classNames?: Record<string, string>;\n dropdownUp?: boolean;\n buttonProps?: Extract<ButtonProps, { as?: 'button' }>;\n dropdownProps?: React.ComponentPropsWithoutRef<'ul'>;\n onChange: (value: SelectItem | typeof DEFAULT_SELECTED_OPTION) => void;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n /**\n * To have full control of your search value and response use `onSearchChange` function combined with `searchValue` and custom filtering on the options array.\n * DO NOT USE TOGETHER WITH `search` PROPERTY\n */\n onSearchChange?: (value: string) => void;\n}\n\nconst defaultClassNames = {};\n\n/**\n * @deprecated Use `SelectInput` instead (https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)\n */\nexport default function Select({\n placeholder,\n id,\n required,\n disabled,\n inverse,\n dropdownWidth,\n size = 'md',\n block = true,\n selected,\n search,\n onChange,\n onFocus,\n onBlur,\n options: defaultOptions,\n onSearchChange,\n searchValue: initSearchValue = '',\n searchPlaceholder,\n classNames: classNamesProp = defaultClassNames,\n dropdownUp,\n dropdownProps,\n buttonProps,\n}: SelectProps) {\n const inputAttributes = useInputAttributes();\n\n const { formatMessage } = useIntl();\n const { isModern } = useTheme();\n const s = (className: string) => classNamesProp[className] || className;\n const [open, setOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(DEFAULT_SEARCH_VALUE);\n const [keyboardFocusedOptionIndex, setKeyboardFocusedOptionIndex] = useState(-1);\n const keyboardFocusedReference = useRef<HTMLLIElement>(null);\n const previousKeyboardFocusedOptionIndex = useRef(-1);\n const [numberOfOptionsShown, setNumberOfOptionsShown] = useState(DEFAULT_OPTIONS_PAGE_SIZE);\n const searchBoxReference = useRef<HTMLInputElement>(null);\n const selectReference = useRef<HTMLDivElement>(null);\n const dropdownButtonReference = useRef<HTMLButtonElement>(null);\n const optionsListReference = useRef<HTMLUListElement>(null);\n const isSearchEnabled = !!onSearchChange || !!search;\n const isDropdownAutoWidth = dropdownWidth == null;\n\n const options = useMemo(() => {\n if (!search || !searchValue) {\n return defaultOptions;\n }\n\n return defaultOptions.filter(isSearchableOption).filter((option) => {\n if (typeof search === 'function') {\n return search(option, searchValue);\n }\n return defaultFilterFunction(option, searchValue);\n });\n }, [defaultOptions, search, searchValue]);\n\n const selectableOptions = useMemo(() => options.filter(isActionableOption), [options]);\n const focusedOption = selectableOptions[keyboardFocusedOptionIndex];\n\n const fallbackButtonId = useId();\n const computedId = id || inputAttributes.id || fallbackButtonId;\n const listboxId = `${computedId}-listbox`;\n const searchBoxId = `${computedId}-searchbox`;\n\n const { isMobile } = useLayout();\n\n useEffect(() => {\n let cancelled = false;\n\n if (keyboardFocusedOptionIndex >= 0) {\n requestAnimationFrame(() => {\n if (!cancelled) {\n if (isSearchEnabled) {\n keyboardFocusedReference.current?.scrollIntoView?.({ block: 'center' });\n } else {\n keyboardFocusedReference.current?.focus();\n }\n }\n });\n\n return () => {\n cancelled = true;\n };\n }\n }, [keyboardFocusedOptionIndex, isSearchEnabled]);\n\n const handleOnClick = () => {\n setOpen(true);\n };\n\n const handleTouchStart: React.TouchEventHandler<HTMLDivElement> = (event) => {\n if (event.currentTarget === event.target && open) {\n handleCloseOptions();\n }\n };\n\n const handleOnFocus: React.FocusEventHandler<HTMLDivElement> = (event) => {\n onFocus?.(event);\n };\n\n const handleOnBlur: React.FocusEventHandler<HTMLDivElement> = (event) => {\n const { nativeEvent } = event;\n if (nativeEvent) {\n const elementReceivingFocus = nativeEvent.relatedTarget;\n const select = event.currentTarget;\n if (\n select &&\n elementReceivingFocus instanceof Node &&\n select.contains(elementReceivingFocus)\n ) {\n return;\n }\n }\n\n onBlur?.(event);\n };\n\n const handleSearchChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n setNumberOfOptionsShown(DEFAULT_OPTIONS_PAGE_SIZE);\n setSearchValue(event.target.value);\n onSearchChange?.(event.target.value);\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event) => {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n if (open) {\n moveFocusWithDifference(event.key === 'ArrowUp' ? -1 : 1);\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case ' ':\n if (event.target !== searchBoxReference.current) {\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n }\n break;\n case 'Enter':\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case 'Escape':\n handleCloseOptions();\n stopPropagation(event);\n break;\n case 'Tab':\n if (open) {\n selectKeyboardFocusedOption();\n }\n break;\n default:\n break;\n }\n };\n\n function selectKeyboardFocusedOption() {\n if (keyboardFocusedOptionIndex >= 0 && selectableOptions.length > 0) {\n selectOption(selectableOptions[keyboardFocusedOptionIndex]);\n }\n }\n\n function moveFocusWithDifference(difference: number) {\n const selectedOptionIndex = selectableOptions.reduce((optionIndex, current, index) => {\n if (optionIndex >= 0) {\n return optionIndex;\n }\n if (isOptionSelected(selected, current)) {\n return index;\n }\n return -1;\n }, -1);\n const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current;\n let indexToStartMovingFrom = previousFocusedIndex;\n if (previousFocusedIndex < 0) {\n if (selectedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n } else {\n indexToStartMovingFrom = selectedOptionIndex;\n }\n }\n\n const unClampedNewIndex = indexToStartMovingFrom + difference;\n const newIndex = clamp(0, selectableOptions.length - 1, unClampedNewIndex);\n\n setKeyboardFocusedOptionIndex(newIndex);\n }\n\n useEffect(() => {\n if (open) {\n if (!isMobile || searchValue) {\n if (isSearchEnabled && searchBoxReference.current) {\n searchBoxReference.current.focus();\n }\n if (\n !isSearchEnabled &&\n optionsListReference.current &&\n previousKeyboardFocusedOptionIndex.current < 0\n ) {\n optionsListReference.current.focus();\n }\n }\n\n previousKeyboardFocusedOptionIndex.current = keyboardFocusedOptionIndex;\n } else {\n previousKeyboardFocusedOptionIndex.current = -1;\n }\n }, [open, searchValue, isSearchEnabled, isMobile, keyboardFocusedOptionIndex]);\n\n const handleCloseOptions = () => {\n setOpen(false);\n setKeyboardFocusedOptionIndex(-1);\n if (dropdownButtonReference.current) {\n dropdownButtonReference.current.focus();\n }\n };\n\n function createSelectHandlerForOption(option: SelectItemWithPlaceholder) {\n return (event: React.SyntheticEvent) => {\n stopPropagation(event);\n selectOption(option);\n };\n }\n\n function selectOption(option: SelectItemWithPlaceholder) {\n onChange(isPlaceholderOption(option) ? DEFAULT_SELECTED_OPTION : option);\n handleCloseOptions();\n }\n\n function renderOptionsList({ className = '' } = {}) {\n const dropdownClass = clsx(\n s('np-dropdown-menu'),\n {\n [s('np-dropdown-menu-desktop')]: !isMobile,\n [s(`np-dropdown-menu-${dropdownWidth}`)]: !isMobile && !isDropdownAutoWidth,\n },\n s(className),\n );\n\n const showPlaceholder = !required && !isSearchEnabled && Boolean(placeholder);\n return (\n <ul\n ref={optionsListReference}\n id={listboxId}\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-activedescendant={getUniqueIdForOption(id, selected ?? null)}\n tabIndex={-1}\n className={dropdownClass}\n {...dropdownProps}\n >\n {showPlaceholder && <PlaceHolderOption />}\n {isSearchEnabled && (\n <SearchBox\n ref={searchBoxReference}\n id={searchBoxId}\n classNames={classNamesProp}\n value={initSearchValue || searchValue}\n placeholder={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n focusedOptionId={getUniqueIdForOption(id, focusedOption)}\n onChange={handleSearchChange}\n onClick={stopPropagation}\n />\n )}\n {options.slice(0, numberOfOptionsShown).map(renderOption)}\n {numberOfOptionsShown < options.length && <ShowMoreOption />}\n </ul>\n );\n }\n\n function ShowMoreOption() {\n function handleOnClick(event: React.SyntheticEvent<HTMLLIElement>) {\n stopPropagation(event);\n setNumberOfOptionsShown(numberOfOptionsShown + DEFAULT_OPTIONS_PAGE_SIZE);\n }\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'), s('show-more'))}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>...</a>\n </li>\n );\n }\n\n function PlaceHolderOption() {\n const placeholderOption = { placeholder };\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'))}\n onClick={createSelectHandlerForOption(placeholderOption)}\n onKeyPress={createSelectHandlerForOption(placeholderOption)}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>{placeholder}</a>\n </li>\n );\n }\n\n function SeparatorOption() {\n return <li className={s('np-separator')} aria-hidden />;\n }\n\n function HeaderOption({ children }: { children?: React.ReactNode }) {\n return (\n <li // eslint-disable-line jsx-a11y/no-noninteractive-element-interactions\n className={clsx(s('np-dropdown-header'), s('np-text-title-group'))}\n onClick={stopPropagation}\n onKeyPress={stopPropagation}\n >\n {children}\n </li>\n );\n }\n\n function isOptionSelected(selected: SelectOptionItem | undefined, option: SelectItem) {\n return selected?.value === option?.value;\n }\n\n const renderOption = (option: SelectItem, index: number) => {\n const separatorOption = option;\n if (isSeparatorOption(separatorOption) && separatorOption?.separator) {\n return <SeparatorOption key={index} />;\n }\n const headerOption = option;\n if (isHeaderOption(headerOption) && headerOption.header) {\n return <HeaderOption key={index}>{headerOption.header}</HeaderOption>;\n }\n\n const isActive = isOptionSelected(selected, option);\n const selectOption = option;\n const isFocusedWithKeyboard =\n !selectOption.disabled &&\n keyboardFocusedOptionIndex === getIndexWithoutHeadersForIndexWithHeaders(index);\n\n const className = clsx(\n s('np-dropdown-item'),\n selectOption.disabled ? [s('disabled')] : s('clickable'),\n {\n [s('active')]: isActive,\n [s('np-dropdown-item--focused')]: isFocusedWithKeyboard,\n },\n );\n\n const handleOnClick = selectOption.disabled\n ? stopPropagation\n : createSelectHandlerForOption(selectOption);\n\n return (\n <li\n ref={isFocusedWithKeyboard ? keyboardFocusedReference : undefined}\n key={index}\n id={getUniqueIdForOption(id, option)}\n aria-selected={isActive}\n aria-disabled={option.disabled}\n role=\"option\"\n tabIndex={-1}\n className={className}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* @ts-expect-error options needs DOM refactoring */}\n <a disabled={selectOption.disabled}>\n <Option\n label={undefined}\n value={undefined}\n {...selectOption}\n classNames={classNamesProp}\n />\n </a>\n </li>\n );\n };\n\n function getIndexWithoutHeadersForIndexWithHeaders(index: number) {\n return options.reduce((sum, option, currentIndex) => {\n if (currentIndex < index && isActionableOption(option)) {\n return sum + 1;\n }\n return sum;\n }, 0);\n }\n\n const hasActiveOptions = !!defaultOptions.length;\n if (open && (initSearchValue || searchValue)) {\n if (hasActiveOptions && keyboardFocusedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n }\n if (!hasActiveOptions && keyboardFocusedOptionIndex >= 0) {\n setKeyboardFocusedOptionIndex(-1);\n }\n }\n\n return (\n <div // eslint-disable-line jsx-a11y/no-static-element-interactions\n ref={selectReference}\n className={clsx(s('np-select'), block ? s('btn-block') : null, s('btn-group'))}\n onKeyDown={handleKeyDown}\n onTouchMove={handleTouchStart}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n >\n <Button\n ref={dropdownButtonReference}\n {...inputAttributes}\n id={computedId}\n block={block}\n size={size}\n htmlType=\"button\"\n className={clsx(\n s('np-dropdown-toggle'),\n s('np-text-body-large'),\n inverse ? s('np-dropdown-toggle-navy') : null,\n )}\n // reset Button's styles\n type={null}\n priority={null}\n disabled={disabled}\n aria-controls={listboxId}\n aria-expanded={open}\n onClick={handleOnClick}\n {...buttonProps}\n >\n {selected ? (\n <Option label={undefined} {...selected} classNames={classNamesProp} selected />\n ) : (\n <span className={s('form-control-placeholder')}>{placeholder}</span>\n )}\n <Chevron\n // disabled={disabled}\n className={clsx(\n s('tw-icon'),\n s('tw-chevron-up-icon'),\n s('tw-chevron'),\n s('bottom'),\n s('np-select-chevron'),\n )}\n />\n </Button>\n {isMobile ? (\n isSearchEnabled ? (\n <Drawer\n open={open}\n headerTitle={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n onClose={handleCloseOptions}\n >\n {renderOptionsList()}\n </Drawer>\n ) : (\n <BottomSheet open={open} onClose={handleCloseOptions}>\n {renderOptionsList({ className: isModern ? '' : 'p-a-1' })}\n </BottomSheet>\n )\n ) : (\n <Panel\n open={open}\n flip={false}\n altAxis\n anchorRef={selectReference}\n anchorWidth={isDropdownAutoWidth}\n position={dropdownUp ? Position.TOP : Position.BOTTOM}\n onClose={handleCloseOptions}\n >\n {renderOptionsList({ className: 'p-a-1' })}\n </Panel>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_SEARCH_VALUE","DEFAULT_OPTIONS_PAGE_SIZE","includesString","string1","string2","toLowerCase","includes","defaultFilterFunction","option","searchValue","isPlaceholderOption","label","note","secondary","currency","searchStrings","some","string","isActionableOption","header","separator","disabled","isHeaderOption","isSeparatorOption","clamp","from","to","value","Math","max","min","DEFAULT_SELECTED_OPTION","isSearchableOption","getUniqueIdForOption","parentId","undefined","uniqueOptionId","replace","defaultClassNames","Select","placeholder","id","required","inverse","dropdownWidth","size","block","selected","search","onChange","onFocus","onBlur","options","defaultOptions","onSearchChange","initSearchValue","searchPlaceholder","classNames","classNamesProp","dropdownUp","dropdownProps","buttonProps","inputAttributes","useInputAttributes","formatMessage","useIntl","isModern","useTheme","s","className","open","setOpen","useState","setSearchValue","keyboardFocusedOptionIndex","setKeyboardFocusedOptionIndex","keyboardFocusedReference","useRef","previousKeyboardFocusedOptionIndex","numberOfOptionsShown","setNumberOfOptionsShown","searchBoxReference","selectReference","dropdownButtonReference","optionsListReference","isSearchEnabled","isDropdownAutoWidth","useMemo","filter","selectableOptions","focusedOption","fallbackButtonId","useId","computedId","listboxId","searchBoxId","isMobile","useLayout","useEffect","cancelled","requestAnimationFrame","current","scrollIntoView","focus","handleOnClick","handleTouchStart","event","currentTarget","target","handleCloseOptions","handleOnFocus","handleOnBlur","nativeEvent","elementReceivingFocus","relatedTarget","select","Node","contains","handleSearchChange","handleKeyDown","key","moveFocusWithDifference","stopPropagation","selectKeyboardFocusedOption","length","selectOption","difference","selectedOptionIndex","reduce","optionIndex","index","isOptionSelected","previousFocusedIndex","indexToStartMovingFrom","unClampedNewIndex","newIndex","createSelectHandlerForOption","renderOptionsList","dropdownClass","clsx","showPlaceholder","Boolean","_jsxs","ref","role","tabIndex","children","_jsx","PlaceHolderOption","SearchBox","messages","focusedOptionId","onClick","slice","map","renderOption","ShowMoreOption","onKeyPress","placeholderOption","SeparatorOption","HeaderOption","separatorOption","headerOption","isActive","isFocusedWithKeyboard","getIndexWithoutHeadersForIndexWithHeaders","Option","sum","currentIndex","hasActiveOptions","onKeyDown","onTouchMove","Button","htmlType","type","priority","Chevron","Drawer","headerTitle","onClose","BottomSheet","Panel","flip","altAxis","anchorRef","anchorWidth","position","Position","TOP","BOTTOM"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAMA,oBAAoB,GAAG,EAAE,CAAA;AAC/B,MAAMC,yBAAyB,GAAG,IAAI,CAAA;AAEtC,MAAMC,cAAc,GAAGA,CAACC,OAAe,EAAEC,OAAe,KACtDD,OAAO,CAACE,WAAW,EAAE,CAACC,QAAQ,CAACF,OAAO,CAACC,WAAW,EAAE,CAAC,CAAA;AAsBvD,SAASE,qBAAqBA,CAACC,MAAiC,EAAEC,WAAmB,EAAA;AACnF,EAAA,IAAIC,mBAAmB,CAACF,MAAM,CAAC,EAAE;AAC/B,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EACA,MAAM;IAAEG,KAAK;IAAEC,IAAI;IAAEC,SAAS;IAAEC,QAAQ;AAAEC,IAAAA,aAAAA;AAAe,GAAA,GAAGP,MAAM,CAAA;AAClE,EAAA,OACG,OAAOG,KAAK,KAAK,QAAQ,IAAIT,cAAc,CAACS,KAAK,EAAEF,WAAW,CAAC,IAC/D,OAAOG,IAAI,KAAK,QAAQ,IAAIV,cAAc,CAACU,IAAI,EAAEH,WAAW,CAAE,IAC9D,OAAOI,SAAS,KAAK,QAAQ,IAAIX,cAAc,CAACW,SAAS,EAAEJ,WAAW,CAAE,IACxE,CAAC,CAACK,QAAQ,IAAIZ,cAAc,CAACY,QAAQ,EAAEL,WAAW,CAAE,IACpD,CAAC,CAACM,aAAa,IAAIA,aAAa,CAACC,IAAI,CAAEC,MAAM,IAAKf,cAAc,CAACe,MAAM,EAAER,WAAW,CAAC,CAAE,CAAA;AAE5F,CAAA;AAEA,SAASS,kBAAkBA,CAACV,MAAkB,EAAA;AAC5C,EAAA,OAAO,CAACA,MAAM,CAACW,MAAM,IAAI,CAACX,MAAM,CAACY,SAAS,IAAI,CAACZ,MAAM,CAACa,QAAQ,CAAA;AAChE,CAAA;AAEA,SAASC,cAAcA,CAACd,MAAyB,EAAA;AAC/C,EAAA,OAAOA,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAIA,MAAM,CAAA;AAC7C,CAAA;AAEA,SAASe,iBAAiBA,CAACf,MAAyB,EAAA;AAClD,EAAA,OAAOA,MAAM,IAAI,IAAI,IAAI,WAAW,IAAIA,MAAM,CAAA;AAChD,CAAA;AAEA,SAASgB,KAAKA,CAACC,IAAY,EAAEC,EAAU,EAAEC,KAAa,EAAA;AACpD,EAAA,OAAOC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAACJ,EAAE,EAAEC,KAAK,CAAC,EAAEF,IAAI,CAAC,CAAA;AAC5C,CAAA;AAEA;;AAEG;AACH,MAAMM,uBAAuB,GAAG,IAAI,CAAA;AAEpC,SAASrB,mBAAmBA,CAACF,MAAwC,EAAA;AACnE,EAAA,OAAOA,MAAM,KAAKuB,uBAAuB,IAAI,aAAa,IAAIvB,MAAM,CAAA;AACtE,CAAA;AAEA,SAASwB,kBAAkBA,CAACxB,MAAwC,EAAA;AAClE,EAAA,OAAO,CAACc,cAAc,CAACd,MAAM,CAAC,IAAI,CAACe,iBAAiB,CAACf,MAAM,CAAC,IAAI,CAACE,mBAAmB,CAACF,MAAM,CAAC,CAAA;AAC9F,CAAA;AAEA,MAAMyB,oBAAoB,GAAGA,CAACC,QAA4B,EAAE1B,MAAyB,KAAI;EACvF,IAAIA,MAAM,IAAI,IAAI,EAAE;AAClB,IAAA,OAAO2B,SAAS,CAAA;AAClB,GAAA;AAEA;EACA,MAAMC,cAAc,GAClB5B,MAAM,CAACmB,KAAK,KAAK,OAAOnB,MAAM,CAACG,KAAK,KAAK,QAAQ,GAAGH,MAAM,CAACG,KAAK,CAAC0B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;AAE3F,EAAA,OAAO,UAAUH,QAAQ,IAAI,EAAE,CAAA,CAAA,EAAIE,cAAc,CAAE,CAAA,CAAA;AACrD,CAAC,CAAA;AAoCD,MAAME,iBAAiB,GAAG,EAAE,CAAA;AAE5B;;AAEG;AACqB,SAAAC,MAAMA,CAAC;EAC7BC,WAAW;EACXC,EAAE;EACFC,QAAQ;EACRrB,QAAQ;EACRsB,OAAO;EACPC,aAAa;AACbC,EAAAA,IAAI,GAAG,IAAI;AACXC,EAAAA,KAAK,GAAG,IAAI;EACZC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC,OAAO;EACPC,MAAM;AACNC,EAAAA,OAAO,EAAEC,cAAc;EACvBC,cAAc;EACd7C,WAAW,EAAE8C,eAAe,GAAG,EAAE;EACjCC,iBAAiB;EACjBC,UAAU,EAAEC,cAAc,GAAGpB,iBAAiB;EAC9CqB,UAAU;EACVC,aAAa;AACbC,EAAAA,WAAAA;AACY,CAAA,EAAA;AACZ,EAAA,MAAMC,eAAe,GAAGC,kBAAkB,EAAE,CAAA;EAE5C,MAAM;AAAEC,IAAAA,aAAAA;GAAe,GAAGC,OAAO,EAAE,CAAA;EACnC,MAAM;AAAEC,IAAAA,QAAAA;GAAU,GAAGC,QAAQ,EAAE,CAAA;EAC/B,MAAMC,CAAC,GAAIC,SAAiB,IAAKX,cAAc,CAACW,SAAS,CAAC,IAAIA,SAAS,CAAA;EACvE,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC,CAAA;EACvC,MAAM,CAAC/D,WAAW,EAAEgE,cAAc,CAAC,GAAGD,QAAQ,CAACxE,oBAAoB,CAAC,CAAA;EACpE,MAAM,CAAC0E,0BAA0B,EAAEC,6BAA6B,CAAC,GAAGH,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAChF,EAAA,MAAMI,wBAAwB,GAAGC,MAAM,CAAgB,IAAI,CAAC,CAAA;AAC5D,EAAA,MAAMC,kCAAkC,GAAGD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;EACrD,MAAM,CAACE,oBAAoB,EAAEC,uBAAuB,CAAC,GAAGR,QAAQ,CAACvE,yBAAyB,CAAC,CAAA;AAC3F,EAAA,MAAMgF,kBAAkB,GAAGJ,MAAM,CAAmB,IAAI,CAAC,CAAA;AACzD,EAAA,MAAMK,eAAe,GAAGL,MAAM,CAAiB,IAAI,CAAC,CAAA;AACpD,EAAA,MAAMM,uBAAuB,GAAGN,MAAM,CAAoB,IAAI,CAAC,CAAA;AAC/D,EAAA,MAAMO,oBAAoB,GAAGP,MAAM,CAAmB,IAAI,CAAC,CAAA;EAC3D,MAAMQ,eAAe,GAAG,CAAC,CAAC/B,cAAc,IAAI,CAAC,CAACN,MAAM,CAAA;AACpD,EAAA,MAAMsC,mBAAmB,GAAG1C,aAAa,IAAI,IAAI,CAAA;AAEjD,EAAA,MAAMQ,OAAO,GAAGmC,OAAO,CAAC,MAAK;AAC3B,IAAA,IAAI,CAACvC,MAAM,IAAI,CAACvC,WAAW,EAAE;AAC3B,MAAA,OAAO4C,cAAc,CAAA;AACvB,KAAA;IAEA,OAAOA,cAAc,CAACmC,MAAM,CAACxD,kBAAkB,CAAC,CAACwD,MAAM,CAAEhF,MAAM,IAAI;AACjE,MAAA,IAAI,OAAOwC,MAAM,KAAK,UAAU,EAAE;AAChC,QAAA,OAAOA,MAAM,CAACxC,MAAM,EAAEC,WAAW,CAAC,CAAA;AACpC,OAAA;AACA,MAAA,OAAOF,qBAAqB,CAACC,MAAM,EAAEC,WAAW,CAAC,CAAA;AACnD,KAAC,CAAC,CAAA;GACH,EAAE,CAAC4C,cAAc,EAAEL,MAAM,EAAEvC,WAAW,CAAC,CAAC,CAAA;AAEzC,EAAA,MAAMgF,iBAAiB,GAAGF,OAAO,CAAC,MAAMnC,OAAO,CAACoC,MAAM,CAACtE,kBAAkB,CAAC,EAAE,CAACkC,OAAO,CAAC,CAAC,CAAA;AACtF,EAAA,MAAMsC,aAAa,GAAGD,iBAAiB,CAACf,0BAA0B,CAAC,CAAA;AAEnE,EAAA,MAAMiB,gBAAgB,GAAGC,KAAK,EAAE,CAAA;EAChC,MAAMC,UAAU,GAAGpD,EAAE,IAAIqB,eAAe,CAACrB,EAAE,IAAIkD,gBAAgB,CAAA;AAC/D,EAAA,MAAMG,SAAS,GAAG,CAAGD,EAAAA,UAAU,CAAU,QAAA,CAAA,CAAA;AACzC,EAAA,MAAME,WAAW,GAAG,CAAGF,EAAAA,UAAU,CAAY,UAAA,CAAA,CAAA;EAE7C,MAAM;AAAEG,IAAAA,QAAAA;GAAU,GAAGC,SAAS,EAAE,CAAA;AAEhCC,EAAAA,SAAS,CAAC,MAAK;IACb,IAAIC,SAAS,GAAG,KAAK,CAAA;IAErB,IAAIzB,0BAA0B,IAAI,CAAC,EAAE;AACnC0B,MAAAA,qBAAqB,CAAC,MAAK;QACzB,IAAI,CAACD,SAAS,EAAE;AACd,UAAA,IAAId,eAAe,EAAE;AACnBT,YAAAA,wBAAwB,CAACyB,OAAO,EAAEC,cAAc,GAAG;AAAExD,cAAAA,KAAK,EAAE,QAAA;AAAU,aAAA,CAAC,CAAA;AACzE,WAAC,MAAM;AACL8B,YAAAA,wBAAwB,CAACyB,OAAO,EAAEE,KAAK,EAAE,CAAA;AAC3C,WAAA;AACF,SAAA;AACF,OAAC,CAAC,CAAA;AAEF,MAAA,OAAO,MAAK;AACVJ,QAAAA,SAAS,GAAG,IAAI,CAAA;OACjB,CAAA;AACH,KAAA;AACF,GAAC,EAAE,CAACzB,0BAA0B,EAAEW,eAAe,CAAC,CAAC,CAAA;EAEjD,MAAMmB,aAAa,GAAGA,MAAK;IACzBjC,OAAO,CAAC,IAAI,CAAC,CAAA;GACd,CAAA;EAED,MAAMkC,gBAAgB,GAA6CC,KAAK,IAAI;IAC1E,IAAIA,KAAK,CAACC,aAAa,KAAKD,KAAK,CAACE,MAAM,IAAItC,IAAI,EAAE;AAChDuC,MAAAA,kBAAkB,EAAE,CAAA;AACtB,KAAA;GACD,CAAA;EAED,MAAMC,aAAa,GAA6CJ,KAAK,IAAI;IACvExD,OAAO,GAAGwD,KAAK,CAAC,CAAA;GACjB,CAAA;EAED,MAAMK,YAAY,GAA6CL,KAAK,IAAI;IACtE,MAAM;AAAEM,MAAAA,WAAAA;AAAa,KAAA,GAAGN,KAAK,CAAA;AAC7B,IAAA,IAAIM,WAAW,EAAE;AACf,MAAA,MAAMC,qBAAqB,GAAGD,WAAW,CAACE,aAAa,CAAA;AACvD,MAAA,MAAMC,MAAM,GAAGT,KAAK,CAACC,aAAa,CAAA;AAClC,MAAA,IACEQ,MAAM,IACNF,qBAAqB,YAAYG,IAAI,IACrCD,MAAM,CAACE,QAAQ,CAACJ,qBAAqB,CAAC,EACtC;AACA,QAAA,OAAA;AACF,OAAA;AACF,KAAA;IAEA9D,MAAM,GAAGuD,KAAK,CAAC,CAAA;GAChB,CAAA;EAED,MAAMY,kBAAkB,GAAgDZ,KAAK,IAAI;IAC/E1B,uBAAuB,CAAC/E,yBAAyB,CAAC,CAAA;AAClDwE,IAAAA,cAAc,CAACiC,KAAK,CAACE,MAAM,CAACjF,KAAK,CAAC,CAAA;AAClC2B,IAAAA,cAAc,GAAGoD,KAAK,CAACE,MAAM,CAACjF,KAAK,CAAC,CAAA;GACrC,CAAA;EAED,MAAM4F,aAAa,GAAgDb,KAAK,IAAI;IAC1E,QAAQA,KAAK,CAACc,GAAG;AACf,MAAA,KAAK,SAAS,CAAA;AACd,MAAA,KAAK,WAAW;AACd,QAAA,IAAIlD,IAAI,EAAE;UACRmD,uBAAuB,CAACf,KAAK,CAACc,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3D,SAAC,MAAM;UACLjD,OAAO,CAAC,IAAI,CAAC,CAAA;AACf,SAAA;QACAmD,eAAe,CAAChB,KAAK,CAAC,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,GAAG;AACN,QAAA,IAAIA,KAAK,CAACE,MAAM,KAAK3B,kBAAkB,CAACoB,OAAO,EAAE;AAC/C,UAAA,IAAI/B,IAAI,EAAE;AACRqD,YAAAA,2BAA2B,EAAE,CAAA;AAC/B,WAAC,MAAM;YACLpD,OAAO,CAAC,IAAI,CAAC,CAAA;AACf,WAAA;UACAmD,eAAe,CAAChB,KAAK,CAAC,CAAA;AACxB,SAAA;AACA,QAAA,MAAA;AACF,MAAA,KAAK,OAAO;AACV,QAAA,IAAIpC,IAAI,EAAE;AACRqD,UAAAA,2BAA2B,EAAE,CAAA;AAC/B,SAAC,MAAM;UACLpD,OAAO,CAAC,IAAI,CAAC,CAAA;AACf,SAAA;QACAmD,eAAe,CAAChB,KAAK,CAAC,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,QAAQ;AACXG,QAAAA,kBAAkB,EAAE,CAAA;QACpBa,eAAe,CAAChB,KAAK,CAAC,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,KAAK;AACR,QAAA,IAAIpC,IAAI,EAAE;AACRqD,UAAAA,2BAA2B,EAAE,CAAA;AAC/B,SAAA;AACA,QAAA,MAAA;AAGJ,KAAA;GACD,CAAA;EAED,SAASA,2BAA2BA,GAAA;IAClC,IAAIjD,0BAA0B,IAAI,CAAC,IAAIe,iBAAiB,CAACmC,MAAM,GAAG,CAAC,EAAE;AACnEC,MAAAA,YAAY,CAACpC,iBAAiB,CAACf,0BAA0B,CAAC,CAAC,CAAA;AAC7D,KAAA;AACF,GAAA;EAEA,SAAS+C,uBAAuBA,CAACK,UAAkB,EAAA;AACjD,IAAA,MAAMC,mBAAmB,GAAGtC,iBAAiB,CAACuC,MAAM,CAAC,CAACC,WAAW,EAAE5B,OAAO,EAAE6B,KAAK,KAAI;MACnF,IAAID,WAAW,IAAI,CAAC,EAAE;AACpB,QAAA,OAAOA,WAAW,CAAA;AACpB,OAAA;AACA,MAAA,IAAIE,gBAAgB,CAACpF,QAAQ,EAAEsD,OAAO,CAAC,EAAE;AACvC,QAAA,OAAO6B,KAAK,CAAA;AACd,OAAA;AACA,MAAA,OAAO,CAAC,CAAC,CAAA;KACV,EAAE,CAAC,CAAC,CAAC,CAAA;AACN,IAAA,MAAME,oBAAoB,GAAGtD,kCAAkC,CAACuB,OAAO,CAAA;IACvE,IAAIgC,sBAAsB,GAAGD,oBAAoB,CAAA;IACjD,IAAIA,oBAAoB,GAAG,CAAC,EAAE;MAC5B,IAAIL,mBAAmB,GAAG,CAAC,EAAE;QAC3BpD,6BAA6B,CAAC,CAAC,CAAC,CAAA;AAClC,OAAC,MAAM;AACL0D,QAAAA,sBAAsB,GAAGN,mBAAmB,CAAA;AAC9C,OAAA;AACF,KAAA;AAEA,IAAA,MAAMO,iBAAiB,GAAGD,sBAAsB,GAAGP,UAAU,CAAA;AAC7D,IAAA,MAAMS,QAAQ,GAAG/G,KAAK,CAAC,CAAC,EAAEiE,iBAAiB,CAACmC,MAAM,GAAG,CAAC,EAAEU,iBAAiB,CAAC,CAAA;IAE1E3D,6BAA6B,CAAC4D,QAAQ,CAAC,CAAA;AACzC,GAAA;AAEArC,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI5B,IAAI,EAAE;AACR,MAAA,IAAI,CAAC0B,QAAQ,IAAIvF,WAAW,EAAE;AAC5B,QAAA,IAAI4E,eAAe,IAAIJ,kBAAkB,CAACoB,OAAO,EAAE;AACjDpB,UAAAA,kBAAkB,CAACoB,OAAO,CAACE,KAAK,EAAE,CAAA;AACpC,SAAA;AACA,QAAA,IACE,CAAClB,eAAe,IAChBD,oBAAoB,CAACiB,OAAO,IAC5BvB,kCAAkC,CAACuB,OAAO,GAAG,CAAC,EAC9C;AACAjB,UAAAA,oBAAoB,CAACiB,OAAO,CAACE,KAAK,EAAE,CAAA;AACtC,SAAA;AACF,OAAA;MAEAzB,kCAAkC,CAACuB,OAAO,GAAG3B,0BAA0B,CAAA;AACzE,KAAC,MAAM;AACLI,MAAAA,kCAAkC,CAACuB,OAAO,GAAG,CAAC,CAAC,CAAA;AACjD,KAAA;AACF,GAAC,EAAE,CAAC/B,IAAI,EAAE7D,WAAW,EAAE4E,eAAe,EAAEW,QAAQ,EAAEtB,0BAA0B,CAAC,CAAC,CAAA;EAE9E,MAAMmC,kBAAkB,GAAGA,MAAK;IAC9BtC,OAAO,CAAC,KAAK,CAAC,CAAA;IACdI,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,IAAIQ,uBAAuB,CAACkB,OAAO,EAAE;AACnClB,MAAAA,uBAAuB,CAACkB,OAAO,CAACE,KAAK,EAAE,CAAA;AACzC,KAAA;GACD,CAAA;EAED,SAASiC,4BAA4BA,CAAChI,MAAiC,EAAA;AACrE,IAAA,OAAQkG,KAA2B,IAAI;MACrCgB,eAAe,CAAChB,KAAK,CAAC,CAAA;MACtBmB,YAAY,CAACrH,MAAM,CAAC,CAAA;KACrB,CAAA;AACH,GAAA;EAEA,SAASqH,YAAYA,CAACrH,MAAiC,EAAA;IACrDyC,QAAQ,CAACvC,mBAAmB,CAACF,MAAM,CAAC,GAAGuB,uBAAuB,GAAGvB,MAAM,CAAC,CAAA;AACxEqG,IAAAA,kBAAkB,EAAE,CAAA;AACtB,GAAA;AAEA,EAAA,SAAS4B,iBAAiBA,CAAC;AAAEpE,IAAAA,SAAS,GAAG,EAAA;GAAI,GAAG,EAAE,EAAA;IAChD,MAAMqE,aAAa,GAAGC,IAAI,CACxBvE,CAAC,CAAC,kBAAkB,CAAC,EACrB;AACE,MAAA,CAACA,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC4B,QAAQ;MAC1C,CAAC5B,CAAC,CAAC,CAAA,iBAAA,EAAoBxB,aAAa,CAAA,CAAE,CAAC,GAAG,CAACoD,QAAQ,IAAI,CAACV,mBAAAA;AACzD,KAAA,EACDlB,CAAC,CAACC,SAAS,CAAC,CACb,CAAA;IAED,MAAMuE,eAAe,GAAG,CAAClG,QAAQ,IAAI,CAAC2C,eAAe,IAAIwD,OAAO,CAACrG,WAAW,CAAC,CAAA;AAC7E,IAAA,oBACEsG,IAAA,CAAA,IAAA,EAAA;AACEC,MAAAA,GAAG,EAAE3D,oBAAqB;AAC1B3C,MAAAA,EAAE,EAAEqD,SAAU;AACdkD,MAAAA,IAAI,EAAC,SAAS;AACd,MAAA,kBAAA,EAAiB,UAAU;AAC3B,MAAA,uBAAA,EAAuB/G,oBAAoB,CAACQ,EAAE,EAAEM,QAAQ,IAAI,IAAI,CAAE;MAClEkG,QAAQ,EAAE,CAAC,CAAE;AACb5E,MAAAA,SAAS,EAAEqE,aAAc;AAAA,MAAA,GACrB9E,aAAa;AAAAsF,MAAAA,QAAA,EAEhBN,CAAAA,eAAe,iBAAIO,GAAA,CAACC,iBAAiB,KAAG,EACxC/D,eAAe,iBACd8D,GAAA,CAACE,SAAS,EAAA;AACRN,QAAAA,GAAG,EAAE9D,kBAAmB;AACxBxC,QAAAA,EAAE,EAAEsD,WAAY;AAChBtC,QAAAA,UAAU,EAAEC,cAAe;QAC3B/B,KAAK,EAAE4B,eAAe,IAAI9C,WAAY;QACtC+B,WAAW,EAAEgB,iBAAiB,IAAIQ,aAAa,CAACsF,QAAQ,CAAC9F,iBAAiB,CAAE;AAC5E+F,QAAAA,eAAe,EAAEtH,oBAAoB,CAACQ,EAAE,EAAEiD,aAAa,CAAE;AACzDzC,QAAAA,QAAQ,EAAEqE,kBAAmB;AAC7BkC,QAAAA,OAAO,EAAE9B,eAAAA;OAAgB,CAE5B,EACAtE,OAAO,CAACqG,KAAK,CAAC,CAAC,EAAE1E,oBAAoB,CAAC,CAAC2E,GAAG,CAACC,YAAY,CAAC,EACxD5E,oBAAoB,GAAG3B,OAAO,CAACwE,MAAM,iBAAIuB,GAAA,CAACS,cAAc,EAAA,EAAA,CAAG,CAAA;AAAA,KAC1D,CAAC,CAAA;AAET,GAAA;EAEA,SAASA,cAAcA,GAAA;IACrB,SAASpD,aAAaA,CAACE,KAA0C,EAAA;MAC/DgB,eAAe,CAAChB,KAAK,CAAC,CAAA;AACtB1B,MAAAA,uBAAuB,CAACD,oBAAoB,GAAG9E,yBAAyB,CAAC,CAAA;AAC3E,KAAA;AACA,IAAA;AAAA;AACE;MACAkJ,GAAA,CAAA,IAAA,EAAA;AACE9E,QAAAA,SAAS,EAAEsE,IAAI,CAACvE,CAAC,CAAC,WAAW,CAAC,EAAEA,CAAC,CAAC,eAAe,CAAC,EAAEA,CAAC,CAAC,WAAW,CAAC,CAAE;AACpEoF,QAAAA,OAAO,EAAEhD,aAAc;AACvBqD,QAAAA,UAAU,EAAErD,aAAc;AAAA0C,QAAAA,QAAA,eAG1BC,GAAA,CAAA,GAAA,EAAA;AAAAD,UAAAA,QAAA,EAAG,KAAA;SAAM,CAAA;OACP,CAAA;AAAC,MAAA;AAET,GAAA;EAEA,SAASE,iBAAiBA,GAAA;AACxB,IAAA,MAAMU,iBAAiB,GAAG;AAAEtH,MAAAA,WAAAA;KAAa,CAAA;AACzC,IAAA;AAAA;AACE;MACA2G,GAAA,CAAA,IAAA,EAAA;AACE9E,QAAAA,SAAS,EAAEsE,IAAI,CAACvE,CAAC,CAAC,WAAW,CAAC,EAAEA,CAAC,CAAC,eAAe,CAAC,CAAE;AACpDoF,QAAAA,OAAO,EAAEhB,4BAA4B,CAACsB,iBAAiB,CAAE;AACzDD,QAAAA,UAAU,EAAErB,4BAA4B,CAACsB,iBAAiB,CAAE;AAAAZ,QAAAA,QAAA,eAG5DC,GAAA,CAAA,GAAA,EAAA;AAAAD,UAAAA,QAAA,EAAI1G,WAAAA;SAAe,CAAA;OACjB,CAAA;AAAC,MAAA;AAET,GAAA;EAEA,SAASuH,eAAeA,GAAA;AACtB,IAAA,oBAAOZ,GAAA,CAAA,IAAA,EAAA;AAAI9E,MAAAA,SAAS,EAAED,CAAC,CAAC,cAAc,CAAE;AAAC,MAAA,aAAA,EAAA,IAAA;AAAW,MAAG,CAAA;AACzD,GAAA;AAEA,EAAA,SAAS4F,YAAYA,CAAC;AAAEd,IAAAA,QAAAA;AAA0C,GAAA,EAAA;AAChE,IAAA,oBACEC,GAAA,CAAA,IAAA,EAAA;AAAI;AACF9E,MAAAA,SAAS,EAAEsE,IAAI,CAACvE,CAAC,CAAC,oBAAoB,CAAC,EAAEA,CAAC,CAAC,qBAAqB,CAAC,CAAE;AACnEoF,MAAAA,OAAO,EAAE9B,eAAgB;AACzBmC,MAAAA,UAAU,EAAEnC,eAAgB;AAAAwB,MAAAA,QAAA,EAE3BA,QAAAA;AAAQ,KACP,CAAC,CAAA;AAET,GAAA;AAEA,EAAA,SAASf,gBAAgBA,CAACpF,QAAsC,EAAEvC,MAAkB,EAAA;AAClF,IAAA,OAAOuC,QAAQ,EAAEpB,KAAK,KAAKnB,MAAM,EAAEmB,KAAK,CAAA;AAC1C,GAAA;AAEA,EAAA,MAAMgI,YAAY,GAAGA,CAACnJ,MAAkB,EAAE0H,KAAa,KAAI;IACzD,MAAM+B,eAAe,GAAGzJ,MAAM,CAAA;IAC9B,IAAIe,iBAAiB,CAAC0I,eAAe,CAAC,IAAIA,eAAe,EAAE7I,SAAS,EAAE;AACpE,MAAA,oBAAO+H,GAAA,CAACY,eAAe,EAAA,EAAA,EAAM7B,KAAM,CAAG,CAAA;AACxC,KAAA;IACA,MAAMgC,YAAY,GAAG1J,MAAM,CAAA;IAC3B,IAAIc,cAAc,CAAC4I,YAAY,CAAC,IAAIA,YAAY,CAAC/I,MAAM,EAAE;MACvD,oBAAOgI,GAAA,CAACa,YAAY,EAAA;QAAAd,QAAA,EAAcgB,YAAY,CAAC/I,MAAAA;AAAM,OAAA,EAA3B+G,KAA0C,CAAC,CAAA;AACvE,KAAA;AAEA,IAAA,MAAMiC,QAAQ,GAAGhC,gBAAgB,CAACpF,QAAQ,EAAEvC,MAAM,CAAC,CAAA;IACnD,MAAMqH,YAAY,GAAGrH,MAAM,CAAA;AAC3B,IAAA,MAAM4J,qBAAqB,GACzB,CAACvC,YAAY,CAACxG,QAAQ,IACtBqD,0BAA0B,KAAK2F,yCAAyC,CAACnC,KAAK,CAAC,CAAA;IAEjF,MAAM7D,SAAS,GAAGsE,IAAI,CACpBvE,CAAC,CAAC,kBAAkB,CAAC,EACrByD,YAAY,CAACxG,QAAQ,GAAG,CAAC+C,CAAC,CAAC,UAAU,CAAC,CAAC,GAAGA,CAAC,CAAC,WAAW,CAAC,EACxD;AACE,MAAA,CAACA,CAAC,CAAC,QAAQ,CAAC,GAAG+F,QAAQ;AACvB,MAAA,CAAC/F,CAAC,CAAC,2BAA2B,CAAC,GAAGgG,qBAAAA;AACnC,KAAA,CACF,CAAA;IAED,MAAM5D,aAAa,GAAGqB,YAAY,CAACxG,QAAQ,GACvCqG,eAAe,GACfc,4BAA4B,CAACX,YAAY,CAAC,CAAA;AAE9C,IAAA,oBACEsB,GAAA,CAAA,IAAA,EAAA;AACEJ,MAAAA,GAAG,EAAEqB,qBAAqB,GAAGxF,wBAAwB,GAAGzC,SAAU;AAElEM,MAAAA,EAAE,EAAER,oBAAoB,CAACQ,EAAE,EAAEjC,MAAM,CAAE;AACrC,MAAA,eAAA,EAAe2J,QAAS;MACxB,eAAe3J,EAAAA,MAAM,CAACa,QAAS;AAC/B2H,MAAAA,IAAI,EAAC,QAAQ;MACbC,QAAQ,EAAE,CAAC,CAAE;AACb5E,MAAAA,SAAS,EAAEA,SAAU;AACrBmF,MAAAA,OAAO,EAAEhD,aAAc;AACvBqD,MAAAA,UAAU,EAAErD,aAAc;AAAA0C,MAAAA,QAAA,eAG1BC,GAAA,CAAA,GAAA,EAAA;QAAG9H,QAAQ,EAAEwG,YAAY,CAACxG,QAAS;QAAA6H,QAAA,eACjCC,GAAA,CAACmB,MAAM,EAAA;AACL3J,UAAAA,KAAK,EAAEwB,SAAU;AACjBR,UAAAA,KAAK,EAAEQ,SAAU;AAAA,UAAA,GACb0F,YAAY;AAChBpE,UAAAA,UAAU,EAAEC,cAAAA;SAEhB,CAAA;OAAG,CAAA;AACL,KAAA,EAnBOwE,KAmBH,CAAC,CAAA;GAER,CAAA;EAED,SAASmC,yCAAyCA,CAACnC,KAAa,EAAA;IAC9D,OAAO9E,OAAO,CAAC4E,MAAM,CAAC,CAACuC,GAAG,EAAE/J,MAAM,EAAEgK,YAAY,KAAI;MAClD,IAAIA,YAAY,GAAGtC,KAAK,IAAIhH,kBAAkB,CAACV,MAAM,CAAC,EAAE;QACtD,OAAO+J,GAAG,GAAG,CAAC,CAAA;AAChB,OAAA;AACA,MAAA,OAAOA,GAAG,CAAA;KACX,EAAE,CAAC,CAAC,CAAA;AACP,GAAA;AAEA,EAAA,MAAME,gBAAgB,GAAG,CAAC,CAACpH,cAAc,CAACuE,MAAM,CAAA;AAChD,EAAA,IAAItD,IAAI,KAAKf,eAAe,IAAI9C,WAAW,CAAC,EAAE;AAC5C,IAAA,IAAIgK,gBAAgB,IAAI/F,0BAA0B,GAAG,CAAC,EAAE;MACtDC,6BAA6B,CAAC,CAAC,CAAC,CAAA;AAClC,KAAA;AACA,IAAA,IAAI,CAAC8F,gBAAgB,IAAI/F,0BAA0B,IAAI,CAAC,EAAE;MACxDC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,KAAA;AACF,GAAA;AAEA,EAAA,oBACEmE,IAAA,CAAA,KAAA,EAAA;AAAK;AACHC,IAAAA,GAAG,EAAE7D,eAAgB;IACrBb,SAAS,EAAEsE,IAAI,CAACvE,CAAC,CAAC,WAAW,CAAC,EAAEtB,KAAK,GAAGsB,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,EAAEA,CAAC,CAAC,WAAW,CAAC,CAAE;AAC/EsG,IAAAA,SAAS,EAAEnD,aAAc;AACzBoD,IAAAA,WAAW,EAAElE,gBAAiB;AAC9BvD,IAAAA,OAAO,EAAE4D,aAAc;AACvB3D,IAAAA,MAAM,EAAE4D,YAAa;IAAAmC,QAAA,EAAA,cAErBJ,IAAA,CAAC8B,MAAM,EAAA;AACL7B,MAAAA,GAAG,EAAE5D,uBAAwB;AAAA,MAAA,GACzBrB,eAAe;AACnBrB,MAAAA,EAAE,EAAEoD,UAAW;AACf/C,MAAAA,KAAK,EAAEA,KAAM;AACbD,MAAAA,IAAI,EAAEA,IAAK;AACXgI,MAAAA,QAAQ,EAAC,QAAQ;MACjBxG,SAAS,EAAEsE,IAAI,CACbvE,CAAC,CAAC,oBAAoB,CAAC,EACvBA,CAAC,CAAC,oBAAoB,CAAC,EACvBzB,OAAO,GAAGyB,CAAC,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAA;AAE/C;AAAA;AACA0G,MAAAA,IAAI,EAAE,IAAK;AACXC,MAAAA,QAAQ,EAAE,IAAK;AACf1J,MAAAA,QAAQ,EAAEA,QAAS;AACnB,MAAA,eAAA,EAAeyE,SAAU;AACzB,MAAA,eAAA,EAAexB,IAAK;AACpBkF,MAAAA,OAAO,EAAEhD,aAAc;AAAA,MAAA,GACnB3C,WAAW;AAAAqF,MAAAA,QAAA,EAEdnG,CAAAA,QAAQ,gBACPoG,GAAA,CAACmB,MAAM,EAAA;AAAC3J,QAAAA,KAAK,EAAEwB,SAAU;AAAA,QAAA,GAAKY,QAAQ;AAAEU,QAAAA,UAAU,EAAEC,cAAe;QAACX,QAAQ,EAAA,IAAA;QAAG,gBAE/EoG,GAAA,CAAA,MAAA,EAAA;AAAM9E,QAAAA,SAAS,EAAED,CAAC,CAAC,0BAA0B,CAAE;AAAA8E,QAAAA,QAAA,EAAE1G,WAAAA;OAAkB,CACpE,eACD2G,GAAA,CAAC6B,OAAAA;AACC;AAAA,QAAA;QACA3G,SAAS,EAAEsE,IAAI,CACbvE,CAAC,CAAC,SAAS,CAAC,EACZA,CAAC,CAAC,oBAAoB,CAAC,EACvBA,CAAC,CAAC,YAAY,CAAC,EACfA,CAAC,CAAC,QAAQ,CAAC,EACXA,CAAC,CAAC,mBAAmB,CAAC,CAAA;AACtB,OAEN,CAAA,CAAA;KAAQ,CACR,EAAC4B,QAAQ,GACPX,eAAe,gBACb8D,GAAA,CAAC8B,MAAM,EAAA;AACL3G,MAAAA,IAAI,EAAEA,IAAK;MACX4G,WAAW,EAAE1H,iBAAiB,IAAIQ,aAAa,CAACsF,QAAQ,CAAC9F,iBAAiB,CAAE;AAC5E2H,MAAAA,OAAO,EAAEtE,kBAAmB;MAAAqC,QAAA,EAE3BT,iBAAiB;AAAE,KACd,CAAC,gBAETU,GAAA,CAACiC,WAAW,EAAA;AAAC9G,MAAAA,IAAI,EAAEA,IAAK;AAAC6G,MAAAA,OAAO,EAAEtE,kBAAmB;MAAAqC,QAAA,EAClDT,iBAAiB,CAAC;AAAEpE,QAAAA,SAAS,EAAEH,QAAQ,GAAG,EAAE,GAAG,OAAA;OAAS,CAAA;AAAC,KAC/C,CACd,gBAEDiF,GAAA,CAACkC,KAAK,EAAA;AACJ/G,MAAAA,IAAI,EAAEA,IAAK;AACXgH,MAAAA,IAAI,EAAE,KAAM;MACZC,OAAO,EAAA,IAAA;AACPC,MAAAA,SAAS,EAAEtG,eAAgB;AAC3BuG,MAAAA,WAAW,EAAEnG,mBAAoB;MACjCoG,QAAQ,EAAE/H,UAAU,GAAGgI,QAAQ,CAACC,GAAG,GAAGD,QAAQ,CAACE,MAAO;AACtDV,MAAAA,OAAO,EAAEtE,kBAAmB;MAAAqC,QAAA,EAE3BT,iBAAiB,CAAC;AAAEpE,QAAAA,SAAS,EAAE,OAAA;OAAS,CAAA;AAAC,KACrC,CACR,CAAA;AAAA,GACE,CAAC,CAAA;AAEV;;;;"}
@@ -115,9 +115,7 @@ const Table = ({
115
115
  'np-theme-personal': theme === 'bright-green',
116
116
  'np-table-outer-container--center': !fullWidth,
117
117
  'np-table-outer-container--full-width': fullWidth
118
- })
119
- // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
120
- ,
118
+ }),
121
119
  tabIndex: 0,
122
120
  "data-testid": "np-table-outer-container",
123
121
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../../src/table/Table.tsx"],"sourcesContent":["import { useIntl } from 'react-intl';\nimport TableCell from './TableCell';\nimport TableHeader, { TableHeaderType } from './TableHeader';\nimport TableRow, { TableRowClickableType, TableRowType } from './TableRow';\nimport Alert from '../alert';\n\nimport messages from './Table.messages';\nimport Loader from '../loader';\nimport { Sentiment, Size } from '../common';\nimport StatusIcon from '../statusIcon';\nimport { clsx } from 'clsx';\nimport { useTheme } from '@wise/components-theming';\nimport Body from '../body';\n\nexport interface TableProps {\n 'aria-labelledby'?: string;\n data: {\n headers?: TableHeaderType[];\n rows?: TableRowType[] | TableRowClickableType[];\n onRowClick?: (rowData: TableRowType | TableRowClickableType) => void;\n };\n loading?: boolean;\n className?: string | undefined;\n fullWidth?: boolean;\n error?: {\n message?: string;\n action?: {\n href?: string;\n text?: string;\n };\n };\n}\n\nconst Table = ({\n 'aria-labelledby': ariaLabelledBy,\n data,\n loading,\n className,\n fullWidth = true,\n error,\n}: TableProps) => {\n const { formatMessage } = useIntl();\n const { theme } = useTheme();\n const isEmptyHeader = loading ?? (data?.headers && !data?.headers.length);\n\n const getRowLength = () => {\n const columnsLength = data?.headers?.length ?? 0;\n return data?.onRowClick ? columnsLength + 1 : columnsLength;\n };\n\n const getTableContent = () => {\n if (loading) {\n return (\n <TableRow>\n <TableCell>\n <Loader data-testid=\"np-table-loader\" />\n </TableCell>\n </TableRow>\n );\n }\n\n // Shows the `emptyData` message when there is no data to display\n if (!data?.rows?.length) {\n return (\n <TableRow>\n <TableCell colSpan={data?.headers?.length}>\n <div className=\"np-table-empty-data\" data-testid=\"np-table-empty-data\">\n <StatusIcon sentiment={Sentiment.WARNING} size={Size.MEDIUM} />\n <Body type=\"body-default-bold\">{formatMessage(messages.emptyData)}</Body>\n </div>\n </TableCell>\n </TableRow>\n );\n }\n\n return data?.rows?.map((rowData, rowIndex) => {\n return (\n <TableRow\n key={'table-row-'.concat(rowIndex.toString())}\n rowData={rowData}\n hasSeparator={data?.rows?.length ? data.rows.length - 1 !== rowIndex : false}\n onRowClick={data?.onRowClick}\n />\n );\n });\n };\n\n if (error) {\n return (\n <Alert\n className=\"np-table-error\"\n message={error.message}\n type={Sentiment.NEGATIVE}\n action={{\n href: error?.action?.href ?? '/',\n text: error?.action?.text ?? formatMessage(messages.refreshPage),\n }}\n data-testid=\"np-table-error\"\n />\n );\n }\n\n return (\n <>\n <div aria-live=\"polite\" className=\"sr-only\">\n {formatMessage(messages[loading ? 'loading' : 'loaded'])}\n </div>\n <div\n role={loading ? 'presentation' : 'region'}\n aria-labelledby={ariaLabelledBy}\n className={clsx('np-table-outer-container', className, {\n 'np-theme-personal': theme === 'bright-green',\n 'np-table-outer-container--center': !fullWidth,\n 'np-table-outer-container--full-width': fullWidth,\n })}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={0}\n data-testid=\"np-table-outer-container\"\n >\n <div\n className={clsx('np-table-container', {\n 'np-table-container--loading': loading,\n })}\n data-testid=\"np-table-container\"\n >\n <div className=\"np-table-inner-container\">\n <table className=\"np-table\">\n <thead aria-hidden={isEmptyHeader}>\n <tr>\n {isEmptyHeader ? (\n <TableHeader />\n ) : (\n data?.headers?.map((headerItem: TableHeaderType, index) => (\n <TableHeader\n key={headerItem.header?.concat(index.toString())}\n {...headerItem}\n />\n ))\n )}\n {data?.onRowClick && <TableHeader isActionHeader />}\n </tr>\n </thead>\n <tbody>\n <tr\n key=\"first-np-table-row--cosmetic\"\n aria-hidden=\"true\"\n className=\"np-table-row np-table-row--cosmetic\"\n >\n <td className=\"np-table-cell\" colSpan={getRowLength()} />\n </tr>\n {getTableContent()}\n <tr\n key=\"last-np-table-row--cosmetic\"\n aria-hidden=\"true\"\n className=\"np-table-row np-table-row--cosmetic\"\n >\n <td className=\"np-table-cell\" colSpan={getRowLength()} />\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default Table;\n"],"names":["Table","ariaLabelledBy","data","loading","className","fullWidth","error","formatMessage","useIntl","theme","useTheme","isEmptyHeader","headers","length","getRowLength","columnsLength","onRowClick","getTableContent","_jsx","TableRow","children","TableCell","Loader","rows","colSpan","_jsxs","StatusIcon","sentiment","Sentiment","WARNING","size","Size","MEDIUM","Body","type","messages","emptyData","map","rowData","rowIndex","hasSeparator","concat","toString","Alert","message","NEGATIVE","action","href","text","refreshPage","_Fragment","role","clsx","tabIndex","TableHeader","headerItem","index","header","isActionHeader"],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","sources":["../../src/table/Table.tsx"],"sourcesContent":["import { useIntl } from 'react-intl';\nimport TableCell from './TableCell';\nimport TableHeader, { TableHeaderType } from './TableHeader';\nimport TableRow, { TableRowClickableType, TableRowType } from './TableRow';\nimport Alert from '../alert';\n\nimport messages from './Table.messages';\nimport Loader from '../loader';\nimport { Sentiment, Size } from '../common';\nimport StatusIcon from '../statusIcon';\nimport { clsx } from 'clsx';\nimport { useTheme } from '@wise/components-theming';\nimport Body from '../body';\n\nexport interface TableProps {\n 'aria-labelledby'?: string;\n data: {\n headers?: TableHeaderType[];\n rows?: TableRowType[] | TableRowClickableType[];\n onRowClick?: (rowData: TableRowType | TableRowClickableType) => void;\n };\n loading?: boolean;\n className?: string | undefined;\n fullWidth?: boolean;\n error?: {\n message?: string;\n action?: {\n href?: string;\n text?: string;\n };\n };\n}\n\nconst Table = ({\n 'aria-labelledby': ariaLabelledBy,\n data,\n loading,\n className,\n fullWidth = true,\n error,\n}: TableProps) => {\n const { formatMessage } = useIntl();\n const { theme } = useTheme();\n const isEmptyHeader = loading ?? (data?.headers && !data?.headers.length);\n\n const getRowLength = () => {\n const columnsLength = data?.headers?.length ?? 0;\n return data?.onRowClick ? columnsLength + 1 : columnsLength;\n };\n\n const getTableContent = () => {\n if (loading) {\n return (\n <TableRow>\n <TableCell>\n <Loader data-testid=\"np-table-loader\" />\n </TableCell>\n </TableRow>\n );\n }\n\n // Shows the `emptyData` message when there is no data to display\n if (!data?.rows?.length) {\n return (\n <TableRow>\n <TableCell colSpan={data?.headers?.length}>\n <div className=\"np-table-empty-data\" data-testid=\"np-table-empty-data\">\n <StatusIcon sentiment={Sentiment.WARNING} size={Size.MEDIUM} />\n <Body type=\"body-default-bold\">{formatMessage(messages.emptyData)}</Body>\n </div>\n </TableCell>\n </TableRow>\n );\n }\n\n return data?.rows?.map((rowData, rowIndex) => {\n return (\n <TableRow\n key={'table-row-'.concat(rowIndex.toString())}\n rowData={rowData}\n hasSeparator={data?.rows?.length ? data.rows.length - 1 !== rowIndex : false}\n onRowClick={data?.onRowClick}\n />\n );\n });\n };\n\n if (error) {\n return (\n <Alert\n className=\"np-table-error\"\n message={error.message}\n type={Sentiment.NEGATIVE}\n action={{\n href: error?.action?.href ?? '/',\n text: error?.action?.text ?? formatMessage(messages.refreshPage),\n }}\n data-testid=\"np-table-error\"\n />\n );\n }\n\n return (\n <>\n <div aria-live=\"polite\" className=\"sr-only\">\n {formatMessage(messages[loading ? 'loading' : 'loaded'])}\n </div>\n <div\n role={loading ? 'presentation' : 'region'}\n aria-labelledby={ariaLabelledBy}\n className={clsx('np-table-outer-container', className, {\n 'np-theme-personal': theme === 'bright-green',\n 'np-table-outer-container--center': !fullWidth,\n 'np-table-outer-container--full-width': fullWidth,\n })}\n tabIndex={0}\n data-testid=\"np-table-outer-container\"\n >\n <div\n className={clsx('np-table-container', {\n 'np-table-container--loading': loading,\n })}\n data-testid=\"np-table-container\"\n >\n <div className=\"np-table-inner-container\">\n <table className=\"np-table\">\n <thead aria-hidden={isEmptyHeader}>\n <tr>\n {isEmptyHeader ? (\n <TableHeader />\n ) : (\n data?.headers?.map((headerItem: TableHeaderType, index) => (\n <TableHeader\n key={headerItem.header?.concat(index.toString())}\n {...headerItem}\n />\n ))\n )}\n {data?.onRowClick && <TableHeader isActionHeader />}\n </tr>\n </thead>\n <tbody>\n <tr\n key=\"first-np-table-row--cosmetic\"\n aria-hidden=\"true\"\n className=\"np-table-row np-table-row--cosmetic\"\n >\n <td className=\"np-table-cell\" colSpan={getRowLength()} />\n </tr>\n {getTableContent()}\n <tr\n key=\"last-np-table-row--cosmetic\"\n aria-hidden=\"true\"\n className=\"np-table-row np-table-row--cosmetic\"\n >\n <td className=\"np-table-cell\" colSpan={getRowLength()} />\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default Table;\n"],"names":["Table","ariaLabelledBy","data","loading","className","fullWidth","error","formatMessage","useIntl","theme","useTheme","isEmptyHeader","headers","length","getRowLength","columnsLength","onRowClick","getTableContent","_jsx","TableRow","children","TableCell","Loader","rows","colSpan","_jsxs","StatusIcon","sentiment","Sentiment","WARNING","size","Size","MEDIUM","Body","type","messages","emptyData","map","rowData","rowIndex","hasSeparator","concat","toString","Alert","message","NEGATIVE","action","href","text","refreshPage","_Fragment","role","clsx","tabIndex","TableHeader","headerItem","index","header","isActionHeader"],"mappings":"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"}
@@ -113,9 +113,7 @@ const Table = ({
113
113
  'np-theme-personal': theme === 'bright-green',
114
114
  'np-table-outer-container--center': !fullWidth,
115
115
  'np-table-outer-container--full-width': fullWidth
116
- })
117
- // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
118
- ,
116
+ }),
119
117
  tabIndex: 0,
120
118
  "data-testid": "np-table-outer-container",
121
119
  children: /*#__PURE__*/jsx("div", {