@vkontakte/vkui 4.35.1 → 4.35.4

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 (77) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +11 -11
  4. package/.cache/ts/src/components/ButtonGroup/ButtonGroup.d.ts +6 -2
  5. package/dist/cjs/components/Banner/Banner.js +41 -47
  6. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  7. package/dist/cjs/components/ButtonGroup/ButtonGroup.js.map +1 -1
  8. package/dist/cjs/components/CustomSelect/CustomSelect.js +1 -1
  9. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  10. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +3 -0
  11. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  12. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +1 -2
  13. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  14. package/dist/cjs/components/Popper/Popper.js +53 -50
  15. package/dist/cjs/components/Popper/Popper.js.map +1 -1
  16. package/dist/cjs/lib/platform.js +9 -4
  17. package/dist/cjs/lib/platform.js.map +1 -1
  18. package/dist/components/Banner/Banner.js +41 -48
  19. package/dist/components/Banner/Banner.js.map +1 -1
  20. package/dist/components/ButtonGroup/ButtonGroup.d.ts +6 -2
  21. package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -1
  22. package/dist/components/CustomSelect/CustomSelect.js +1 -1
  23. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  24. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +2 -0
  25. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  26. package/dist/components/PanelHeaderContent/PanelHeaderContent.js +1 -2
  27. package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  28. package/dist/components/Popper/Popper.js +53 -50
  29. package/dist/components/Popper/Popper.js.map +1 -1
  30. package/dist/components.css +4 -4
  31. package/dist/components.css.map +1 -1
  32. package/dist/cssm/components/Banner/Banner.js +41 -48
  33. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  34. package/dist/cssm/components/ButtonGroup/ButtonGroup.d.ts +6 -2
  35. package/dist/cssm/components/ButtonGroup/ButtonGroup.js.map +1 -1
  36. package/dist/cssm/components/CustomSelect/CustomSelect.js +1 -1
  37. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  38. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +2 -0
  39. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  40. package/dist/cssm/components/Header/Header.css +1 -1
  41. package/dist/cssm/components/PanelHeader/PanelHeader.css +1 -1
  42. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.css +1 -1
  43. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +1 -2
  44. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  45. package/dist/cssm/components/Popper/Popper.js +53 -50
  46. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  47. package/dist/cssm/components/Spacing/Spacing.css +1 -1
  48. package/dist/cssm/components/Typography/Headline/Headline.css +1 -1
  49. package/dist/cssm/components/Typography/Text/Text.css +1 -1
  50. package/dist/cssm/lib/platform.js +8 -3
  51. package/dist/cssm/lib/platform.js.map +1 -1
  52. package/dist/cssm/styles/components.css +4 -4
  53. package/dist/cssm/styles/themes.css +1 -1
  54. package/dist/cssm/styles/vkcom_dark.css +1 -1
  55. package/dist/cssm/styles/vkcom_light.css +1 -1
  56. package/dist/lib/platform.js +8 -3
  57. package/dist/lib/platform.js.map +1 -1
  58. package/dist/vkui.css +5 -5
  59. package/dist/vkui.css.map +1 -1
  60. package/package.json +2 -2
  61. package/src/components/Banner/Banner.tsx +58 -63
  62. package/src/components/ButtonGroup/ButtonGroup.tsx +6 -3
  63. package/src/components/ButtonGroup/Readme.md +13 -11
  64. package/src/components/CustomSelect/CustomSelect.tsx +1 -1
  65. package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +2 -0
  66. package/src/components/Header/Header.css +1 -5
  67. package/src/components/PanelHeader/PanelHeader.css +8 -13
  68. package/src/components/PanelHeaderContent/PanelHeaderContent.css +8 -2
  69. package/src/components/PanelHeaderContent/PanelHeaderContent.tsx +1 -2
  70. package/src/components/Popper/Popper.tsx +37 -31
  71. package/src/components/Spacing/Readme.md +20 -20
  72. package/src/components/Spacing/Spacing.css +5 -1
  73. package/src/components/Typography/Headline/Headline.css +10 -0
  74. package/src/components/Typography/Text/Text.css +10 -0
  75. package/src/lib/platform.ts +12 -6
  76. package/src/styles/vkcom_dark.css +8 -8
  77. package/src/styles/vkcom_light.css +34 -34
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"names":["findIndexAfter","options","startIndex","length","findIndex","option","i","disabled","findIndexBefore","endIndex","result","warn","checkOptionsValueType","Set","map","item","value","size","defaultRenderOptionFn","props","handleOptionDown","e","preventDefault","findSelectedIndex","Number","filter","inputValue","filterFn","defaultOptions","defaultIcon","CustomSelectComponent","before","name","className","getRef","getRootRef","popupDirection","sizeY","platform","style","onChange","children","onInputChangeProp","onInputChange","renderDropdown","onOpen","onClose","fetching","forceDropdownPortal","selectType","SelectType","default","autoHideScrollbar","autoHideScrollbarDelay","searchable","renderOption","renderOptionProp","optionsProp","emptyText","defaultFilterFn","icon","dropdownOffsetDistance","fixDropdownWidth","restProps","process","env","NODE_ENV","containerRef","React","useRef","scrollBoxRef","selectElRef","useState","focusedOptionIndex","setFocusedOptionIndex","undefined","isControlledOutside","setIsControlledOutside","setInputValue","defaultValue","nativeSelectValue","setNativeSelectValue","keyboardInput","setKeyboardInput","popperPlacement","setPopperPlacement","setOptions","selectedOptionIndex","setSelectedOptionIndex","opened","setOpened","useEffect","event","Event","bubbles","current","dispatchEvent","selected","useMemo","openedClassNames","includes","resetKeyboardInput","useCallback","scrollToElement","index","center","dropdown","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","isValidIndex","focusOptionByIndex","scrollTo","areOptionsShown","onKeyboardInput","key","fullInput","optionIndex","label","toLowerCase","close","selectFocused","open","onBlur","resetFocusedOption","onFocus","onClick","handleKeyUp","focusOption","type","nextIndex","beforeIndex","onLabelClick","contains","target","onNativeSelectChange","newSelectedOptionIndex","currentTarget","onInputKeyDown","handleKeyDownSelect","handleOptionClick","Array","prototype","indexOf","call","parentNode","handleOptionHover","hovered","onMouseDown","onMouseOver","resolvedContent","defaultDropdownContent","placeholder","CustomSelect"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { SelectMimicry } from \"../SelectMimicry/SelectMimicry\";\nimport { debounce, multiRef, getTitleFromChildren } from \"../../lib/utils\";\nimport { classNames } from \"../../lib/classNames\";\nimport { NativeSelectProps } from \"../NativeSelect/NativeSelect\";\nimport { withAdaptivity } from \"../../hoc/withAdaptivity\";\nimport {\n CustomSelectOption,\n CustomSelectOptionProps,\n} from \"../CustomSelectOption/CustomSelectOption\";\nimport { FormFieldProps } from \"../FormField/FormField\";\nimport { HasPlatform } from \"../../types\";\nimport { Input } from \"../Input/Input\";\nimport { DropdownIcon } from \"../DropdownIcon/DropdownIcon\";\nimport { Caption } from \"../Typography/Caption/Caption\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport {\n defaultFilterFn,\n getFormFieldModeFromSelectType,\n} from \"../../lib/select\";\nimport { Placement } from \"../Popper/Popper\";\nimport { CustomSelectDropdown } from \"../CustomSelectDropdown/CustomSelectDropdown\";\nimport { TrackerOptionsProps } from \"../CustomScrollView/useTrackerVisibility\";\nimport { SelectType } from \"../Select/Select\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport \"./CustomSelect.css\";\n\nconst findIndexAfter = (\n options: CustomSelectOptionInterface[] = [],\n startIndex = -1\n) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex((option, i) => i > startIndex && !option.disabled);\n};\n\nconst findIndexBefore = (\n options: CustomSelectOptionInterface[] = [],\n endIndex: number = options.length\n) => {\n let result = -1;\n if (endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nconst warn = warnOnce(\"CustomSelect\");\n\nconst checkOptionsValueType = (options: CustomSelectOptionInterface[]) => {\n if (new Set(options.map((item) => typeof item.value)).size > 1) {\n warn(\n \"Некоторые значения ваших опций имеют разные типы. onChange всегда возвращает строковый тип.\",\n \"error\"\n );\n }\n};\n\nfunction defaultRenderOptionFn({\n option,\n ...props\n}: CustomSelectOptionProps): React.ReactNode {\n return <CustomSelectOption {...props} />;\n}\n\nconst handleOptionDown: MouseEventHandler = (\n e: React.MouseEvent<HTMLElement>\n) => {\n e.preventDefault();\n};\n\nfunction findSelectedIndex(\n options: CustomSelectOptionInterface[],\n value: SelectValue\n) {\n return (\n options.findIndex((item) => {\n value = typeof item.value === \"number\" ? Number(value) : value;\n return item.value === value;\n }) ?? -1\n );\n}\n\nconst filter = (\n options: CustomSelectProps[\"options\"],\n inputValue: string,\n filterFn: CustomSelectProps[\"filterFn\"]\n) => {\n return typeof filterFn === \"function\"\n ? options.filter((option) => filterFn(inputValue, option))\n : options;\n};\n\nconst defaultOptions: CustomSelectOptionInterface[] = [];\nconst defaultIcon = <DropdownIcon />;\n\ntype SelectValue = React.SelectHTMLAttributes<HTMLSelectElement>[\"value\"];\n\nexport interface CustomSelectOptionInterface {\n value: SelectValue;\n label: React.ReactElement | string;\n disabled?: boolean;\n [index: string]: any;\n}\n\nexport interface CustomSelectProps\n extends NativeSelectProps,\n HasPlatform,\n FormFieldProps,\n TrackerOptionsProps {\n /**\n * Если `true`, то при клике на селект в нём появится текстовое поле для поиска по `options`. По умолчанию поиск\n * производится по `option.label`.\n */\n searchable?: boolean;\n /**\n * Текст, который будет отображен, если приходит пустой `options`.\n */\n emptyText?: string;\n onInputChange?: (\n e: React.ChangeEvent,\n options: CustomSelectOptionInterface[]\n ) => void | CustomSelectOptionInterface[];\n options: CustomSelectOptionInterface[];\n /**\n * Функция для кастомной фильтрации. По умолчанию поиск производится по `option.label`.\n */\n filterFn?:\n | false\n | ((\n value: string,\n option: CustomSelectOptionInterface,\n getOptionLabel?: (\n option: Partial<CustomSelectOptionInterface>\n ) => string\n ) => boolean);\n popupDirection?: \"top\" | \"bottom\";\n /**\n * Рендер-проп для кастомного рендера опции.\n * В объекте аргумента приходят [свойства опции](https://vkcom.github.io/VKUI/#/CustomSelectOption?id=props)\n */\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Рендер-проп для кастомного рендера содержимого дропдауна.\n * В `defaultDropdownContent` содержится список опций в виде скроллящегося блока.\n */\n renderDropdown?: ({\n defaultDropdownContent,\n }: {\n defaultDropdownContent: React.ReactNode;\n }) => React.ReactNode;\n /**\n * Если `true`, то в дропдауне вместо списка опций рисуется спиннер. При переданных `renderDropdown` и `fetching: true`\n * \"победит\" `renderDropdown`.\n */\n fetching?: boolean;\n onClose?: VoidFunction;\n onOpen?: VoidFunction;\n icon?: React.ReactNode;\n dropdownOffsetDistance?: number;\n fixDropdownWidth?: boolean;\n forceDropdownPortal?: boolean;\n selectType?: keyof typeof SelectType;\n}\n\ntype MouseEventHandler = (event: React.MouseEvent<HTMLElement>) => void;\n\nfunction CustomSelectComponent(props: CustomSelectProps) {\n const {\n before,\n name,\n className,\n getRef,\n getRootRef,\n popupDirection,\n sizeY,\n platform,\n style,\n onChange,\n children,\n onInputChange: onInputChangeProp,\n renderDropdown,\n onOpen,\n onClose,\n fetching,\n forceDropdownPortal,\n selectType = SelectType.default,\n autoHideScrollbar,\n autoHideScrollbarDelay,\n searchable = false,\n renderOption: renderOptionProp = defaultRenderOptionFn,\n options: optionsProp = defaultOptions,\n emptyText = \"Ничего не найдено\",\n filterFn = defaultFilterFn,\n icon = defaultIcon,\n dropdownOffsetDistance = 0,\n fixDropdownWidth = true,\n ...restProps\n } = props;\n\n if (process.env.NODE_ENV === \"development\") {\n checkOptionsValueType(optionsProp);\n }\n\n const containerRef = React.useRef<HTMLLabelElement>(null);\n const scrollBoxRef = React.useRef<HTMLDivElement>(null);\n const selectElRef = React.useRef<HTMLSelectElement>(null);\n\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<\n number | undefined\n >(-1);\n const [isControlledOutside, setIsControlledOutside] = React.useState(\n props.value !== undefined\n );\n const [inputValue, setInputValue] = React.useState(\"\");\n const [nativeSelectValue, setNativeSelectValue] = React.useState(\n props.value ?? props.defaultValue\n );\n const [keyboardInput, setKeyboardInput] = React.useState(\"\");\n const [popperPlacement, setPopperPlacement] = React.useState<\n Placement | undefined\n >(undefined);\n const [options, setOptions] = React.useState(optionsProp);\n const [selectedOptionIndex, setSelectedOptionIndex] = React.useState<\n number | undefined\n >(findSelectedIndex(optionsProp, props.value ?? props.defaultValue));\n const [opened, setOpened] = React.useState(false);\n\n React.useEffect(() => {\n setIsControlledOutside(props.value !== undefined);\n setNativeSelectValue(\n (nativeSelectValue) => props.value ?? nativeSelectValue\n );\n }, [props.value]);\n\n useIsomorphicLayoutEffect(() => {\n if (nativeSelectValue) {\n const event = new Event(\"change\", { bubbles: true });\n\n selectElRef.current?.dispatchEvent(event);\n }\n }, [nativeSelectValue]);\n\n const selected = React.useMemo(() => {\n if (!options.length) {\n return null;\n }\n\n return selectedOptionIndex !== undefined\n ? options[selectedOptionIndex]\n : undefined;\n }, [options, selectedOptionIndex]);\n\n const openedClassNames = React.useMemo(\n () =>\n classNames(\n opened && \"Select--open\",\n opened &&\n dropdownOffsetDistance === 0 &&\n (popperPlacement?.includes(\"top\")\n ? \"Select--pop-up\"\n : \"Select--pop-down\")\n ),\n [dropdownOffsetDistance, opened, popperPlacement]\n );\n\n const resetKeyboardInput = React.useCallback(() => {\n setKeyboardInput(\"\");\n }, []);\n\n const scrollToElement = React.useCallback((index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = dropdown ? (dropdown.children[index] as HTMLElement) : null;\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n }, []);\n\n const isValidIndex = React.useCallback(\n (index: number) => {\n return index >= 0 && index < (options.length ?? 0);\n },\n [options.length]\n );\n\n const focusOptionByIndex = React.useCallback(\n (index: number | undefined, scrollTo = true) => {\n if (\n index === undefined ||\n index < 0 ||\n index > (options.length ?? 0) - 1\n ) {\n return;\n }\n\n const option = options[index];\n\n if (option?.disabled) {\n return;\n }\n\n if (scrollTo) {\n scrollToElement(index);\n }\n\n // Это оптимизация, прежде всего, под `onMouseOver`\n setFocusedOptionIndex((focusedOptionIndex) =>\n focusedOptionIndex !== index ? index : focusedOptionIndex\n );\n },\n [options, scrollToElement]\n );\n\n const areOptionsShown = React.useCallback(() => {\n return scrollBoxRef.current !== null;\n }, []);\n\n const onKeyboardInput = React.useCallback(\n (key: string) => {\n const fullInput = keyboardInput + key;\n\n const optionIndex = options.findIndex((option) => {\n return getTitleFromChildren(option.label)\n .toLowerCase()\n .includes(fullInput);\n });\n\n if (optionIndex !== undefined && optionIndex > -1) {\n focusOptionByIndex(optionIndex);\n }\n\n setKeyboardInput(fullInput);\n },\n [focusOptionByIndex, keyboardInput, options]\n );\n\n const close = React.useCallback(() => {\n resetKeyboardInput();\n\n setInputValue(\"\");\n setOpened(false);\n setFocusedOptionIndex(-1);\n setOptions(optionsProp);\n onClose?.();\n }, [onClose, optionsProp, resetKeyboardInput]);\n\n const selectFocused = React.useCallback(() => {\n if (focusedOptionIndex !== undefined && isValidIndex(focusedOptionIndex)) {\n const item = options[focusedOptionIndex];\n\n setNativeSelectValue(item?.value);\n close();\n }\n }, [close, focusedOptionIndex, isValidIndex, options]);\n\n const open = React.useCallback(() => {\n setOpened(true);\n setFocusedOptionIndex(selectedOptionIndex);\n\n if (typeof onOpen === \"function\") {\n onOpen();\n }\n }, [onOpen, selectedOptionIndex]);\n\n React.useEffect(() => {\n if (\n opened &&\n selectedOptionIndex !== undefined &&\n isValidIndex(selectedOptionIndex)\n ) {\n scrollToElement(selectedOptionIndex, true);\n }\n }, [isValidIndex, opened, scrollToElement, selectedOptionIndex]);\n\n const onBlur = React.useCallback(() => {\n close();\n const event = new Event(\"blur\");\n selectElRef.current?.dispatchEvent(event);\n }, [close]);\n\n const resetFocusedOption = React.useCallback(() => {\n setFocusedOptionIndex(-1);\n }, []);\n\n const onFocus = React.useCallback(() => {\n const event = new Event(\"focus\");\n selectElRef.current?.dispatchEvent(event);\n }, []);\n\n const onClick = React.useCallback(() => {\n if (opened) {\n close();\n } else {\n open();\n }\n }, [close, open, opened]);\n\n const handleKeyUp = React.useMemo(\n () => debounce(resetKeyboardInput, 1000),\n [resetKeyboardInput]\n );\n\n const focusOption = React.useCallback(\n (type: \"next\" | \"prev\") => {\n let index = focusedOptionIndex;\n\n if (type === \"next\") {\n const nextIndex = findIndexAfter(options, index);\n index = nextIndex === -1 ? findIndexAfter(options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === \"prev\") {\n const beforeIndex = findIndexBefore(options, index);\n index = beforeIndex === -1 ? findIndexBefore(options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n focusOptionByIndex(index);\n },\n [focusOptionByIndex, focusedOptionIndex, options]\n );\n\n React.useEffect(() => {\n const value = props.value ?? nativeSelectValue ?? props.defaultValue;\n\n const options =\n searchable && inputValue !== undefined\n ? filter(optionsProp, inputValue, filterFn)\n : optionsProp;\n\n setOptions(options);\n setSelectedOptionIndex(findSelectedIndex(options, value));\n }, [\n filterFn,\n inputValue,\n nativeSelectValue,\n optionsProp,\n props.defaultValue,\n props.value,\n searchable,\n ]);\n\n /**\n * Нужен для правильного поведения обработчика onClick на select. Фильтрует клики, которые были сделаны по\n * выпадающему списку.\n */\n const onLabelClick = React.useCallback(\n (e: React.MouseEvent<HTMLLabelElement>) => {\n if (scrollBoxRef.current?.contains(e.target as Node)) {\n e.preventDefault();\n }\n },\n []\n );\n\n const onNativeSelectChange: React.ChangeEventHandler<HTMLSelectElement> =\n React.useCallback(\n (e) => {\n const newSelectedOptionIndex = findSelectedIndex(\n options,\n e.currentTarget.value\n );\n\n if (selectedOptionIndex !== newSelectedOptionIndex) {\n if (!isControlledOutside) {\n setSelectedOptionIndex(newSelectedOptionIndex);\n }\n onChange?.(e);\n }\n },\n [isControlledOutside, onChange, options, selectedOptionIndex]\n );\n\n const onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement> =\n React.useCallback(\n (event) => {\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n areOptionsShown() &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n areOptionsShown() && focusOption(\"prev\");\n break;\n case \"ArrowDown\":\n areOptionsShown() && focusOption(\"next\");\n break;\n case \"Escape\":\n close();\n break;\n case \"Enter\":\n areOptionsShown() && selectFocused();\n break;\n }\n },\n [areOptionsShown, close, focusOption, selectFocused]\n );\n\n const onInputChange: React.ChangeEventHandler<HTMLInputElement> =\n React.useCallback(\n (e) => {\n if (onInputChangeProp) {\n const options = onInputChangeProp(e, optionsProp);\n if (options) {\n if (process.env.NODE_ENV === \"development\") {\n warn(\n \"Этот метод фильтрации устарел. Возвращаемое значение onInputChange будет \" +\n \"проигнорировано в v5.0.0. Для фильтрации обновляйте props.options самостоятельно или используйте свойство filterFn.\"\n );\n }\n setOptions(options);\n setSelectedOptionIndex(\n findSelectedIndex(options, nativeSelectValue)\n );\n }\n } else {\n const options = filter(optionsProp, e.target.value, filterFn);\n setOptions(options);\n setSelectedOptionIndex(findSelectedIndex(options, nativeSelectValue));\n }\n setInputValue(e.target.value);\n },\n [filterFn, nativeSelectValue, onInputChangeProp, optionsProp]\n );\n\n const handleKeyDownSelect = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key.length === 1 && event.key !== \" \") {\n onKeyboardInput(event.key);\n return;\n }\n\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n areOptionsShown() &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n if (opened) {\n areOptionsShown() && focusOption(\"prev\");\n } else {\n open();\n }\n break;\n case \"ArrowDown\":\n if (opened) {\n areOptionsShown() && focusOption(\"next\");\n } else {\n open();\n }\n break;\n case \"Escape\":\n close();\n break;\n case \"Enter\":\n case \"Spacebar\":\n case \" \":\n if (opened) {\n areOptionsShown() && selectFocused();\n } else {\n open();\n }\n break;\n }\n },\n [\n areOptionsShown,\n close,\n focusOption,\n onKeyboardInput,\n open,\n opened,\n selectFocused,\n ]\n );\n\n const handleOptionClick = React.useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n const index = Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n );\n const option = options[index];\n\n if (option && !option.disabled) {\n selectFocused();\n }\n },\n [options, selectFocused]\n );\n\n const handleOptionHover = React.useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n focusOptionByIndex(\n Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n ),\n false\n );\n },\n [focusOptionByIndex]\n );\n\n const renderOption = React.useCallback(\n (option: CustomSelectOptionInterface, index: number) => {\n const hovered = index === focusedOptionIndex;\n const selected = index === selectedOptionIndex;\n\n return (\n <React.Fragment key={`${option.value}`}>\n {renderOptionProp({\n option,\n hovered,\n children: option.label,\n selected,\n disabled: option.disabled,\n onClick: handleOptionClick,\n onMouseDown: handleOptionDown,\n // Используем `onMouseOver` вместо `onMouseEnter`.\n // При параметре `searchable`, обновляется \"ребёнок\", из-за чего `onMouseEnter` не срабатывает в следующих кейсах:\n // 1. До загрузки выпадающего списка, курсор мышки находится над произвольным элементом этого списка.\n // > Лечение: только увод курсора мыши и возвращении его обратно вызывает событие `onMouseEnter` на этот элемент.\n // 2. Если это тач-устройство.\n // > Лечение: нужно нажать на какой-нибудь произвольный элемент списка, после чего `onMouseEnter` будет работать на соседние элементы,\n // но не на тот, на который нажали в первый раз.\n // Более подробно по ссылке https://github.com/facebook/react/issues/13956#issuecomment-1082055744\n onMouseOver: handleOptionHover,\n })}\n </React.Fragment>\n );\n },\n [\n focusedOptionIndex,\n handleOptionClick,\n handleOptionHover,\n renderOptionProp,\n selectedOptionIndex,\n ]\n );\n\n const resolvedContent = React.useMemo(() => {\n const defaultDropdownContent =\n options?.length > 0 ? (\n options.map(renderOption)\n ) : (\n <Caption vkuiClass=\"CustomSelect__empty\">{emptyText}</Caption>\n );\n\n if (typeof renderDropdown === \"function\") {\n return renderDropdown({ defaultDropdownContent });\n } else {\n return defaultDropdownContent;\n }\n }, [emptyText, options, renderDropdown, renderOption]);\n\n return (\n <label\n vkuiClass=\"CustomSelect\"\n className={className}\n style={style}\n ref={multiRef(containerRef, getRootRef)}\n onClick={onLabelClick}\n >\n {opened && searchable ? (\n <Input\n {...restProps}\n autoFocus\n onBlur={onBlur}\n vkuiClass={openedClassNames}\n value={inputValue}\n onKeyDown={onInputKeyDown}\n onChange={onInputChange}\n // TODO Ожидается, что клик поймает нативный select, но его перехватывает Input. К сожалению, это приводит к конфликтам типизации.\n // TODO Нужно перестать пытаться превратить CustomSelect в select. Тогда эта проблема уйдёт.\n // @ts-ignore\n onClick={props.onClick}\n before={before}\n after={icon}\n placeholder={restProps.placeholder}\n mode={getFormFieldModeFromSelectType(selectType)}\n />\n ) : (\n <SelectMimicry\n {...restProps}\n aria-hidden={true}\n onClick={onClick}\n onKeyDown={handleKeyDownSelect}\n onKeyUp={handleKeyUp}\n onFocus={onFocus}\n onBlur={onBlur}\n vkuiClass={openedClassNames}\n after={icon}\n selectType={selectType}\n >\n {selected?.label}\n </SelectMimicry>\n )}\n <select\n ref={selectElRef}\n name={name}\n onChange={onNativeSelectChange}\n onBlur={props.onBlur}\n onFocus={props.onFocus}\n onClick={props.onClick}\n value={nativeSelectValue}\n aria-hidden={true}\n vkuiClass=\"CustomSelect__control\"\n >\n {optionsProp.map((item) => (\n <option key={`${item.value}`} value={item.value} />\n ))}\n </select>\n {opened && (\n <CustomSelectDropdown\n targetRef={containerRef}\n placement={popupDirection}\n scrollBoxRef={scrollBoxRef}\n onPlacementChange={setPopperPlacement}\n onMouseLeave={resetFocusedOption}\n fetching={fetching}\n offsetDistance={dropdownOffsetDistance}\n sameWidth={fixDropdownWidth}\n forcePortal={forceDropdownPortal}\n autoHideScrollbar={autoHideScrollbar}\n autoHideScrollbarDelay={autoHideScrollbarDelay}\n observableRefs={scrollBoxRef}\n >\n {resolvedContent}\n </CustomSelectDropdown>\n )}\n </label>\n );\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CustomSelect\n */\nexport const CustomSelect = withAdaptivity(CustomSelectComponent, {\n sizeY: true,\n});\n"],"file":"CustomSelect.js"}
1
+ {"version":3,"sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"names":["findIndexAfter","options","startIndex","length","findIndex","option","i","disabled","findIndexBefore","endIndex","result","warn","checkOptionsValueType","Set","map","item","value","size","defaultRenderOptionFn","props","handleOptionDown","e","preventDefault","findSelectedIndex","Number","filter","inputValue","filterFn","defaultOptions","defaultIcon","CustomSelectComponent","before","name","className","getRef","getRootRef","popupDirection","sizeY","platform","style","onChange","children","onInputChangeProp","onInputChange","renderDropdown","onOpen","onClose","fetching","forceDropdownPortal","selectType","SelectType","default","autoHideScrollbar","autoHideScrollbarDelay","searchable","renderOption","renderOptionProp","optionsProp","emptyText","defaultFilterFn","icon","dropdownOffsetDistance","fixDropdownWidth","restProps","process","env","NODE_ENV","containerRef","React","useRef","scrollBoxRef","selectElRef","useState","focusedOptionIndex","setFocusedOptionIndex","undefined","isControlledOutside","setIsControlledOutside","setInputValue","defaultValue","nativeSelectValue","setNativeSelectValue","keyboardInput","setKeyboardInput","popperPlacement","setPopperPlacement","setOptions","selectedOptionIndex","setSelectedOptionIndex","opened","setOpened","useEffect","event","Event","bubbles","current","dispatchEvent","selected","useMemo","openedClassNames","includes","resetKeyboardInput","useCallback","scrollToElement","index","center","dropdown","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","isValidIndex","focusOptionByIndex","scrollTo","areOptionsShown","onKeyboardInput","key","fullInput","optionIndex","label","toLowerCase","close","selectFocused","open","onBlur","resetFocusedOption","onFocus","onClick","handleKeyUp","focusOption","type","nextIndex","beforeIndex","onLabelClick","contains","target","onNativeSelectChange","newSelectedOptionIndex","currentTarget","onInputKeyDown","handleKeyDownSelect","handleOptionClick","Array","prototype","indexOf","call","parentNode","handleOptionHover","hovered","onMouseDown","onMouseOver","resolvedContent","defaultDropdownContent","placeholder","CustomSelect"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { SelectMimicry } from \"../SelectMimicry/SelectMimicry\";\nimport { debounce, multiRef, getTitleFromChildren } from \"../../lib/utils\";\nimport { classNames } from \"../../lib/classNames\";\nimport { NativeSelectProps } from \"../NativeSelect/NativeSelect\";\nimport { withAdaptivity } from \"../../hoc/withAdaptivity\";\nimport {\n CustomSelectOption,\n CustomSelectOptionProps,\n} from \"../CustomSelectOption/CustomSelectOption\";\nimport { FormFieldProps } from \"../FormField/FormField\";\nimport { HasPlatform } from \"../../types\";\nimport { Input } from \"../Input/Input\";\nimport { DropdownIcon } from \"../DropdownIcon/DropdownIcon\";\nimport { Caption } from \"../Typography/Caption/Caption\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport {\n defaultFilterFn,\n getFormFieldModeFromSelectType,\n} from \"../../lib/select\";\nimport { Placement } from \"../Popper/Popper\";\nimport { CustomSelectDropdown } from \"../CustomSelectDropdown/CustomSelectDropdown\";\nimport { TrackerOptionsProps } from \"../CustomScrollView/useTrackerVisibility\";\nimport { SelectType } from \"../Select/Select\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport \"./CustomSelect.css\";\n\nconst findIndexAfter = (\n options: CustomSelectOptionInterface[] = [],\n startIndex = -1\n) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex((option, i) => i > startIndex && !option.disabled);\n};\n\nconst findIndexBefore = (\n options: CustomSelectOptionInterface[] = [],\n endIndex: number = options.length\n) => {\n let result = -1;\n if (endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nconst warn = warnOnce(\"CustomSelect\");\n\nconst checkOptionsValueType = (options: CustomSelectOptionInterface[]) => {\n if (new Set(options.map((item) => typeof item.value)).size > 1) {\n warn(\n \"Некоторые значения ваших опций имеют разные типы. onChange всегда возвращает строковый тип.\",\n \"error\"\n );\n }\n};\n\nfunction defaultRenderOptionFn({\n option,\n ...props\n}: CustomSelectOptionProps): React.ReactNode {\n return <CustomSelectOption {...props} />;\n}\n\nconst handleOptionDown: MouseEventHandler = (\n e: React.MouseEvent<HTMLElement>\n) => {\n e.preventDefault();\n};\n\nfunction findSelectedIndex(\n options: CustomSelectOptionInterface[],\n value: SelectValue\n) {\n return (\n options.findIndex((item) => {\n value = typeof item.value === \"number\" ? Number(value) : value;\n return item.value === value;\n }) ?? -1\n );\n}\n\nconst filter = (\n options: CustomSelectProps[\"options\"],\n inputValue: string,\n filterFn: CustomSelectProps[\"filterFn\"]\n) => {\n return typeof filterFn === \"function\"\n ? options.filter((option) => filterFn(inputValue, option))\n : options;\n};\n\nconst defaultOptions: CustomSelectOptionInterface[] = [];\nconst defaultIcon = <DropdownIcon />;\n\ntype SelectValue = React.SelectHTMLAttributes<HTMLSelectElement>[\"value\"];\n\nexport interface CustomSelectOptionInterface {\n value: SelectValue;\n label: React.ReactElement | string;\n disabled?: boolean;\n [index: string]: any;\n}\n\nexport interface CustomSelectProps\n extends NativeSelectProps,\n HasPlatform,\n FormFieldProps,\n TrackerOptionsProps {\n /**\n * Если `true`, то при клике на селект в нём появится текстовое поле для поиска по `options`. По умолчанию поиск\n * производится по `option.label`.\n */\n searchable?: boolean;\n /**\n * Текст, который будет отображен, если приходит пустой `options`.\n */\n emptyText?: string;\n onInputChange?: (\n e: React.ChangeEvent,\n options: CustomSelectOptionInterface[]\n ) => void | CustomSelectOptionInterface[];\n options: CustomSelectOptionInterface[];\n /**\n * Функция для кастомной фильтрации. По умолчанию поиск производится по `option.label`.\n */\n filterFn?:\n | false\n | ((\n value: string,\n option: CustomSelectOptionInterface,\n getOptionLabel?: (\n option: Partial<CustomSelectOptionInterface>\n ) => string\n ) => boolean);\n popupDirection?: \"top\" | \"bottom\";\n /**\n * Рендер-проп для кастомного рендера опции.\n * В объекте аргумента приходят [свойства опции](https://vkcom.github.io/VKUI/#/CustomSelectOption?id=props)\n */\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Рендер-проп для кастомного рендера содержимого дропдауна.\n * В `defaultDropdownContent` содержится список опций в виде скроллящегося блока.\n */\n renderDropdown?: ({\n defaultDropdownContent,\n }: {\n defaultDropdownContent: React.ReactNode;\n }) => React.ReactNode;\n /**\n * Если `true`, то в дропдауне вместо списка опций рисуется спиннер. При переданных `renderDropdown` и `fetching: true`\n * \"победит\" `renderDropdown`.\n */\n fetching?: boolean;\n onClose?: VoidFunction;\n onOpen?: VoidFunction;\n icon?: React.ReactNode;\n dropdownOffsetDistance?: number;\n fixDropdownWidth?: boolean;\n forceDropdownPortal?: boolean;\n selectType?: keyof typeof SelectType;\n}\n\ntype MouseEventHandler = (event: React.MouseEvent<HTMLElement>) => void;\n\nfunction CustomSelectComponent(props: CustomSelectProps) {\n const {\n before,\n name,\n className,\n getRef,\n getRootRef,\n popupDirection,\n sizeY,\n platform,\n style,\n onChange,\n children,\n onInputChange: onInputChangeProp,\n renderDropdown,\n onOpen,\n onClose,\n fetching,\n forceDropdownPortal,\n selectType = SelectType.default,\n autoHideScrollbar,\n autoHideScrollbarDelay,\n searchable = false,\n renderOption: renderOptionProp = defaultRenderOptionFn,\n options: optionsProp = defaultOptions,\n emptyText = \"Ничего не найдено\",\n filterFn = defaultFilterFn,\n icon = defaultIcon,\n dropdownOffsetDistance = 0,\n fixDropdownWidth = true,\n ...restProps\n } = props;\n\n if (process.env.NODE_ENV === \"development\") {\n checkOptionsValueType(optionsProp);\n }\n\n const containerRef = React.useRef<HTMLLabelElement>(null);\n const scrollBoxRef = React.useRef<HTMLDivElement>(null);\n const selectElRef = React.useRef<HTMLSelectElement>(null);\n\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<\n number | undefined\n >(-1);\n const [isControlledOutside, setIsControlledOutside] = React.useState(\n props.value !== undefined\n );\n const [inputValue, setInputValue] = React.useState(\"\");\n const [nativeSelectValue, setNativeSelectValue] = React.useState(\n props.value ?? props.defaultValue\n );\n const [keyboardInput, setKeyboardInput] = React.useState(\"\");\n const [popperPlacement, setPopperPlacement] = React.useState<\n Placement | undefined\n >(undefined);\n const [options, setOptions] = React.useState(optionsProp);\n const [selectedOptionIndex, setSelectedOptionIndex] = React.useState<\n number | undefined\n >(findSelectedIndex(optionsProp, props.value ?? props.defaultValue));\n const [opened, setOpened] = React.useState(false);\n\n React.useEffect(() => {\n setIsControlledOutside(props.value !== undefined);\n setNativeSelectValue(\n (nativeSelectValue) => props.value ?? nativeSelectValue\n );\n }, [props.value]);\n\n useIsomorphicLayoutEffect(() => {\n if (nativeSelectValue !== undefined) {\n const event = new Event(\"change\", { bubbles: true });\n\n selectElRef.current?.dispatchEvent(event);\n }\n }, [nativeSelectValue]);\n\n const selected = React.useMemo(() => {\n if (!options.length) {\n return null;\n }\n\n return selectedOptionIndex !== undefined\n ? options[selectedOptionIndex]\n : undefined;\n }, [options, selectedOptionIndex]);\n\n const openedClassNames = React.useMemo(\n () =>\n classNames(\n opened && \"Select--open\",\n opened &&\n dropdownOffsetDistance === 0 &&\n (popperPlacement?.includes(\"top\")\n ? \"Select--pop-up\"\n : \"Select--pop-down\")\n ),\n [dropdownOffsetDistance, opened, popperPlacement]\n );\n\n const resetKeyboardInput = React.useCallback(() => {\n setKeyboardInput(\"\");\n }, []);\n\n const scrollToElement = React.useCallback((index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = dropdown ? (dropdown.children[index] as HTMLElement) : null;\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n }, []);\n\n const isValidIndex = React.useCallback(\n (index: number) => {\n return index >= 0 && index < (options.length ?? 0);\n },\n [options.length]\n );\n\n const focusOptionByIndex = React.useCallback(\n (index: number | undefined, scrollTo = true) => {\n if (\n index === undefined ||\n index < 0 ||\n index > (options.length ?? 0) - 1\n ) {\n return;\n }\n\n const option = options[index];\n\n if (option?.disabled) {\n return;\n }\n\n if (scrollTo) {\n scrollToElement(index);\n }\n\n // Это оптимизация, прежде всего, под `onMouseOver`\n setFocusedOptionIndex((focusedOptionIndex) =>\n focusedOptionIndex !== index ? index : focusedOptionIndex\n );\n },\n [options, scrollToElement]\n );\n\n const areOptionsShown = React.useCallback(() => {\n return scrollBoxRef.current !== null;\n }, []);\n\n const onKeyboardInput = React.useCallback(\n (key: string) => {\n const fullInput = keyboardInput + key;\n\n const optionIndex = options.findIndex((option) => {\n return getTitleFromChildren(option.label)\n .toLowerCase()\n .includes(fullInput);\n });\n\n if (optionIndex !== undefined && optionIndex > -1) {\n focusOptionByIndex(optionIndex);\n }\n\n setKeyboardInput(fullInput);\n },\n [focusOptionByIndex, keyboardInput, options]\n );\n\n const close = React.useCallback(() => {\n resetKeyboardInput();\n\n setInputValue(\"\");\n setOpened(false);\n setFocusedOptionIndex(-1);\n setOptions(optionsProp);\n onClose?.();\n }, [onClose, optionsProp, resetKeyboardInput]);\n\n const selectFocused = React.useCallback(() => {\n if (focusedOptionIndex !== undefined && isValidIndex(focusedOptionIndex)) {\n const item = options[focusedOptionIndex];\n\n setNativeSelectValue(item?.value);\n close();\n }\n }, [close, focusedOptionIndex, isValidIndex, options]);\n\n const open = React.useCallback(() => {\n setOpened(true);\n setFocusedOptionIndex(selectedOptionIndex);\n\n if (typeof onOpen === \"function\") {\n onOpen();\n }\n }, [onOpen, selectedOptionIndex]);\n\n React.useEffect(() => {\n if (\n opened &&\n selectedOptionIndex !== undefined &&\n isValidIndex(selectedOptionIndex)\n ) {\n scrollToElement(selectedOptionIndex, true);\n }\n }, [isValidIndex, opened, scrollToElement, selectedOptionIndex]);\n\n const onBlur = React.useCallback(() => {\n close();\n const event = new Event(\"blur\");\n selectElRef.current?.dispatchEvent(event);\n }, [close]);\n\n const resetFocusedOption = React.useCallback(() => {\n setFocusedOptionIndex(-1);\n }, []);\n\n const onFocus = React.useCallback(() => {\n const event = new Event(\"focus\");\n selectElRef.current?.dispatchEvent(event);\n }, []);\n\n const onClick = React.useCallback(() => {\n if (opened) {\n close();\n } else {\n open();\n }\n }, [close, open, opened]);\n\n const handleKeyUp = React.useMemo(\n () => debounce(resetKeyboardInput, 1000),\n [resetKeyboardInput]\n );\n\n const focusOption = React.useCallback(\n (type: \"next\" | \"prev\") => {\n let index = focusedOptionIndex;\n\n if (type === \"next\") {\n const nextIndex = findIndexAfter(options, index);\n index = nextIndex === -1 ? findIndexAfter(options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === \"prev\") {\n const beforeIndex = findIndexBefore(options, index);\n index = beforeIndex === -1 ? findIndexBefore(options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n focusOptionByIndex(index);\n },\n [focusOptionByIndex, focusedOptionIndex, options]\n );\n\n React.useEffect(() => {\n const value = props.value ?? nativeSelectValue ?? props.defaultValue;\n\n const options =\n searchable && inputValue !== undefined\n ? filter(optionsProp, inputValue, filterFn)\n : optionsProp;\n\n setOptions(options);\n setSelectedOptionIndex(findSelectedIndex(options, value));\n }, [\n filterFn,\n inputValue,\n nativeSelectValue,\n optionsProp,\n props.defaultValue,\n props.value,\n searchable,\n ]);\n\n /**\n * Нужен для правильного поведения обработчика onClick на select. Фильтрует клики, которые были сделаны по\n * выпадающему списку.\n */\n const onLabelClick = React.useCallback(\n (e: React.MouseEvent<HTMLLabelElement>) => {\n if (scrollBoxRef.current?.contains(e.target as Node)) {\n e.preventDefault();\n }\n },\n []\n );\n\n const onNativeSelectChange: React.ChangeEventHandler<HTMLSelectElement> =\n React.useCallback(\n (e) => {\n const newSelectedOptionIndex = findSelectedIndex(\n options,\n e.currentTarget.value\n );\n\n if (selectedOptionIndex !== newSelectedOptionIndex) {\n if (!isControlledOutside) {\n setSelectedOptionIndex(newSelectedOptionIndex);\n }\n onChange?.(e);\n }\n },\n [isControlledOutside, onChange, options, selectedOptionIndex]\n );\n\n const onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement> =\n React.useCallback(\n (event) => {\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n areOptionsShown() &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n areOptionsShown() && focusOption(\"prev\");\n break;\n case \"ArrowDown\":\n areOptionsShown() && focusOption(\"next\");\n break;\n case \"Escape\":\n close();\n break;\n case \"Enter\":\n areOptionsShown() && selectFocused();\n break;\n }\n },\n [areOptionsShown, close, focusOption, selectFocused]\n );\n\n const onInputChange: React.ChangeEventHandler<HTMLInputElement> =\n React.useCallback(\n (e) => {\n if (onInputChangeProp) {\n const options = onInputChangeProp(e, optionsProp);\n if (options) {\n if (process.env.NODE_ENV === \"development\") {\n warn(\n \"Этот метод фильтрации устарел. Возвращаемое значение onInputChange будет \" +\n \"проигнорировано в v5.0.0. Для фильтрации обновляйте props.options самостоятельно или используйте свойство filterFn.\"\n );\n }\n setOptions(options);\n setSelectedOptionIndex(\n findSelectedIndex(options, nativeSelectValue)\n );\n }\n } else {\n const options = filter(optionsProp, e.target.value, filterFn);\n setOptions(options);\n setSelectedOptionIndex(findSelectedIndex(options, nativeSelectValue));\n }\n setInputValue(e.target.value);\n },\n [filterFn, nativeSelectValue, onInputChangeProp, optionsProp]\n );\n\n const handleKeyDownSelect = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key.length === 1 && event.key !== \" \") {\n onKeyboardInput(event.key);\n return;\n }\n\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n areOptionsShown() &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n if (opened) {\n areOptionsShown() && focusOption(\"prev\");\n } else {\n open();\n }\n break;\n case \"ArrowDown\":\n if (opened) {\n areOptionsShown() && focusOption(\"next\");\n } else {\n open();\n }\n break;\n case \"Escape\":\n close();\n break;\n case \"Enter\":\n case \"Spacebar\":\n case \" \":\n if (opened) {\n areOptionsShown() && selectFocused();\n } else {\n open();\n }\n break;\n }\n },\n [\n areOptionsShown,\n close,\n focusOption,\n onKeyboardInput,\n open,\n opened,\n selectFocused,\n ]\n );\n\n const handleOptionClick = React.useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n const index = Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n );\n const option = options[index];\n\n if (option && !option.disabled) {\n selectFocused();\n }\n },\n [options, selectFocused]\n );\n\n const handleOptionHover = React.useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n focusOptionByIndex(\n Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n ),\n false\n );\n },\n [focusOptionByIndex]\n );\n\n const renderOption = React.useCallback(\n (option: CustomSelectOptionInterface, index: number) => {\n const hovered = index === focusedOptionIndex;\n const selected = index === selectedOptionIndex;\n\n return (\n <React.Fragment key={`${option.value}`}>\n {renderOptionProp({\n option,\n hovered,\n children: option.label,\n selected,\n disabled: option.disabled,\n onClick: handleOptionClick,\n onMouseDown: handleOptionDown,\n // Используем `onMouseOver` вместо `onMouseEnter`.\n // При параметре `searchable`, обновляется \"ребёнок\", из-за чего `onMouseEnter` не срабатывает в следующих кейсах:\n // 1. До загрузки выпадающего списка, курсор мышки находится над произвольным элементом этого списка.\n // > Лечение: только увод курсора мыши и возвращении его обратно вызывает событие `onMouseEnter` на этот элемент.\n // 2. Если это тач-устройство.\n // > Лечение: нужно нажать на какой-нибудь произвольный элемент списка, после чего `onMouseEnter` будет работать на соседние элементы,\n // но не на тот, на который нажали в первый раз.\n // Более подробно по ссылке https://github.com/facebook/react/issues/13956#issuecomment-1082055744\n onMouseOver: handleOptionHover,\n })}\n </React.Fragment>\n );\n },\n [\n focusedOptionIndex,\n handleOptionClick,\n handleOptionHover,\n renderOptionProp,\n selectedOptionIndex,\n ]\n );\n\n const resolvedContent = React.useMemo(() => {\n const defaultDropdownContent =\n options?.length > 0 ? (\n options.map(renderOption)\n ) : (\n <Caption vkuiClass=\"CustomSelect__empty\">{emptyText}</Caption>\n );\n\n if (typeof renderDropdown === \"function\") {\n return renderDropdown({ defaultDropdownContent });\n } else {\n return defaultDropdownContent;\n }\n }, [emptyText, options, renderDropdown, renderOption]);\n\n return (\n <label\n vkuiClass=\"CustomSelect\"\n className={className}\n style={style}\n ref={multiRef(containerRef, getRootRef)}\n onClick={onLabelClick}\n >\n {opened && searchable ? (\n <Input\n {...restProps}\n autoFocus\n onBlur={onBlur}\n vkuiClass={openedClassNames}\n value={inputValue}\n onKeyDown={onInputKeyDown}\n onChange={onInputChange}\n // TODO Ожидается, что клик поймает нативный select, но его перехватывает Input. К сожалению, это приводит к конфликтам типизации.\n // TODO Нужно перестать пытаться превратить CustomSelect в select. Тогда эта проблема уйдёт.\n // @ts-ignore\n onClick={props.onClick}\n before={before}\n after={icon}\n placeholder={restProps.placeholder}\n mode={getFormFieldModeFromSelectType(selectType)}\n />\n ) : (\n <SelectMimicry\n {...restProps}\n aria-hidden={true}\n onClick={onClick}\n onKeyDown={handleKeyDownSelect}\n onKeyUp={handleKeyUp}\n onFocus={onFocus}\n onBlur={onBlur}\n vkuiClass={openedClassNames}\n after={icon}\n selectType={selectType}\n >\n {selected?.label}\n </SelectMimicry>\n )}\n <select\n ref={selectElRef}\n name={name}\n onChange={onNativeSelectChange}\n onBlur={props.onBlur}\n onFocus={props.onFocus}\n onClick={props.onClick}\n value={nativeSelectValue}\n aria-hidden={true}\n vkuiClass=\"CustomSelect__control\"\n >\n {optionsProp.map((item) => (\n <option key={`${item.value}`} value={item.value} />\n ))}\n </select>\n {opened && (\n <CustomSelectDropdown\n targetRef={containerRef}\n placement={popupDirection}\n scrollBoxRef={scrollBoxRef}\n onPlacementChange={setPopperPlacement}\n onMouseLeave={resetFocusedOption}\n fetching={fetching}\n offsetDistance={dropdownOffsetDistance}\n sameWidth={fixDropdownWidth}\n forcePortal={forceDropdownPortal}\n autoHideScrollbar={autoHideScrollbar}\n autoHideScrollbarDelay={autoHideScrollbarDelay}\n observableRefs={scrollBoxRef}\n >\n {resolvedContent}\n </CustomSelectDropdown>\n )}\n </label>\n );\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CustomSelect\n */\nexport const CustomSelect = withAdaptivity(CustomSelectComponent, {\n sizeY: true,\n});\n"],"file":"CustomSelect.js"}
@@ -31,6 +31,8 @@ var _Spinner = require("../Spinner/Spinner");
31
31
 
32
32
  var _useIsomorphicLayoutEffect = require("../../lib/useIsomorphicLayoutEffect");
33
33
 
34
+ var _utils = require("../../lib/utils");
35
+
34
36
  var _excluded = ["children", "targetRef", "scrollBoxRef", "placement", "fetching", "onPlacementChange", "offsetDistance", "sameWidth", "forcePortal", "autoHideScrollbar", "autoHideScrollbarDelay", "observableRefs"];
35
37
 
36
38
  var calcIsTop = function calcIsTop(placement) {
@@ -42,6 +44,7 @@ function getObserverModifier(element) {
42
44
  name: "customSelectChildrenChange",
43
45
  enabled: true,
44
46
  phase: "main",
47
+ fn: _utils.noop,
45
48
  effect: function effect(_ref) {
46
49
  var instance = _ref.instance;
47
50
  var observer = new MutationObserver(instance.forceUpdate);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"names":["calcIsTop","placement","includes","getObserverModifier","element","name","enabled","phase","effect","instance","observer","MutationObserver","forceUpdate","observe","childList","subtree","disconnect","CustomSelectDropdown","children","targetRef","scrollBoxRef","fetching","parentOnPlacementChange","onPlacementChange","offsetDistance","sameWidth","forcePortal","autoHideScrollbar","autoHideScrollbarDelay","observableRefs","restProps","React","useState","isTop","setIsTop","customModifiers","setCustomModifiers","Array","isArray","ref","current","push","useCallback"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;;AACA;;AACA;;AAEA;;;;AAoBA,IAAMA,SAAS,GAAG,SAAZA,SAAY,CAACC,SAAD;AAAA,SAA2BA,SAA3B,aAA2BA,SAA3B,uBAA2BA,SAAS,CAAEC,QAAX,CAAoB,KAApB,CAA3B;AAAA,CAAlB;;AAEA,SAASC,mBAAT,CACEC,OADF,EAEoB;AAClB,SAAO;AACLC,IAAAA,IAAI,EAAE,4BADD;AAELC,IAAAA,OAAO,EAAE,IAFJ;AAGLC,IAAAA,KAAK,EAAE,MAHF;AAILC,IAAAA,MAAM,EAAE,sBAAkB;AAAA,UAAfC,QAAe,QAAfA,QAAe;AACxB,UAAMC,QAAQ,GAAG,IAAIC,gBAAJ,CAAqBF,QAAQ,CAACG,WAA9B,CAAjB;AAEAF,MAAAA,QAAQ,CAACG,OAAT,CAAiBT,OAAjB,EAA0B;AACxBU,QAAAA,SAAS,EAAE,IADa;AAExBC,QAAAA,OAAO,EAAE;AAFe,OAA1B;AAKA,aAAO,YAAM;AACXL,QAAAA,QAAQ,CAACM,UAAT;AACD,OAFD;AAGD;AAfI,GAAP;AAiBD;;AAEM,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,QAcH;AAAA,MAb/BC,QAa+B,SAb/BA,QAa+B;AAAA,MAZ/BC,SAY+B,SAZ/BA,SAY+B;AAAA,MAX/BC,YAW+B,SAX/BA,YAW+B;AAAA,MAV/BnB,SAU+B,SAV/BA,SAU+B;AAAA,MAT/BoB,QAS+B,SAT/BA,QAS+B;AAAA,MARZC,uBAQY,SAR/BC,iBAQ+B;AAAA,mCAP/BC,cAO+B;AAAA,MAP/BA,cAO+B,qCAPd,CAOc;AAAA,8BAN/BC,SAM+B;AAAA,MAN/BA,SAM+B,gCANnB,IAMmB;AAAA,gCAL/BC,WAK+B;AAAA,MAL/BA,WAK+B,kCALjB,IAKiB;AAAA,MAJ/BC,iBAI+B,SAJ/BA,iBAI+B;AAAA,MAH/BC,sBAG+B,SAH/BA,sBAG+B;AAAA,MAF/BC,cAE+B,SAF/BA,cAE+B;AAAA,MAD5BC,SAC4B;;AAC/B,wBAA0BC,KAAK,CAACC,QAAN,CAAe;AAAA,WAAMhC,SAAS,CAACC,SAAD,CAAf;AAAA,GAAf,CAA1B;AAAA;AAAA,MAAOgC,KAAP;AAAA,MAAcC,QAAd;;AACA,yBAA8CH,KAAK,CAACC,QAAN,CAE5C,EAF4C,CAA9C;AAAA;AAAA,MAAOG,eAAP;AAAA,MAAwBC,kBAAxB;;AAIA,4DAA0B,YAAM;AAC9B,QAAI,CAACP,cAAL,EAAqB;AACnB;AACD;;AACD,QAAMM,eAAwC,GAAG,EAAjD;;AAEA,QAAIE,KAAK,CAACC,OAAN,CAAcT,cAAd,CAAJ,EAAmC;AAAA,+DACfA,cADe;AAAA;;AAAA;AACjC,4DAAkC;AAAA,cAAvBU,GAAuB;;AAChC,cAAIA,GAAJ,aAAIA,GAAJ,eAAIA,GAAG,CAAEC,OAAT,EAAkB;AAChBL,YAAAA,eAAe,CAACM,IAAhB,CAAqBtC,mBAAmB,CAACoC,GAAG,CAACC,OAAL,CAAxC;AACD;AACF;AALgC;AAAA;AAAA;AAAA;AAAA;AAMlC,KAND,MAMO,IAAIX,cAAc,CAACW,OAAnB,EAA4B;AACjCL,MAAAA,eAAe,CAACM,IAAhB,CAAqBtC,mBAAmB,CAAC0B,cAAc,CAACW,OAAhB,CAAxC;AACD;;AAEDJ,IAAAA,kBAAkB,CAACD,eAAD,CAAlB;AACD,GAjBD,EAiBG,CAACN,cAAD,CAjBH;AAmBA,MAAMN,iBAAiB,GAAGQ,KAAK,CAACW,WAAN,CACxB,iBAA8C;AAAA,QAA3CzC,SAA2C,SAA3CA,SAA2C;AAC5CiC,IAAAA,QAAQ,CAAClC,SAAS,CAACC,SAAD,CAAV,CAAR;AACAqB,IAAAA,uBAAuB,SAAvB,IAAAA,uBAAuB,WAAvB,YAAAA,uBAAuB,CAAGrB,SAAH,CAAvB;AACD,GAJuB,EAKxB,CAACqB,uBAAD,EAA0BY,QAA1B,CALwB,CAA1B;AAQA,SACE,qCAAC,cAAD;AACE,IAAA,SAAS,EAAEf,SADb;AAEE,IAAA,cAAc,EAAEK,cAFlB;AAGE,IAAA,SAAS,EAAEC,SAHb;AAIE,IAAA,iBAAiB,EAAEF,iBAJrB;AAKE,IAAA,SAAS,EAAEtB,SALb;AAME,IAAA,SAAS,EAAE,4BACT,sBADS,EAETuB,cAAc,KAAK,CAAnB,KACGS,KAAK,GACF,2BADE,GAEF,8BAHN,CAFS,EAMTR,SAAS,IAAI,4BANJ,CANb;AAcE,IAAA,WAAW,EAAEC,WAdf;AAeE,IAAA,eAAe,EAAES;AAfnB,KAgBML,SAhBN,GAkBE,qCAAC,kCAAD;AACE,IAAA,MAAM,EAAEV,YADV;AAEE,IAAA,SAAS,EAAC,0BAFZ;AAGE,IAAA,iBAAiB,EAAEO,iBAHrB;AAIE,IAAA,sBAAsB,EAAEC;AAJ1B,KAMGP,QAAQ,GACP;AAAK,IAAA,SAAS,EAAC;AAAf,KACE,qCAAC,gBAAD;AAAS,IAAA,IAAI,EAAC;AAAd,IADF,CADO,GAKPH,QAXJ,CAlBF,CADF;AAmCD,CAlFM","sourcesContent":["import * as React from \"react\";\nimport { Modifier } from \"react-popper\";\nimport { CustomScrollView } from \"../CustomScrollView/CustomScrollView\";\nimport { TrackerOptionsProps } from \"../CustomScrollView/useTrackerVisibility\";\nimport { classNames } from \"../../lib/classNames\";\nimport { Popper, Placement } from \"../Popper/Popper\";\nimport { Spinner } from \"../Spinner/Spinner\";\nimport { HasRef } from \"../../types\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport \"./CustomSelectDropdown.css\";\n\nexport interface CustomSelectDropdownProps\n extends React.HTMLAttributes<HTMLElement>,\n HasRef<HTMLDivElement>,\n TrackerOptionsProps {\n targetRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n scrollBoxRef?: React.RefObject<HTMLDivElement>;\n observableRefs?:\n | Array<React.RefObject<HTMLElement>>\n | React.RefObject<HTMLElement>;\n fetching?: boolean;\n offsetDistance?: number;\n sameWidth?: boolean;\n forcePortal?: boolean;\n onPlacementChange?: (placement?: Placement) => void;\n}\n\nconst calcIsTop = (placement?: Placement) => placement?.includes(\"top\");\n\nfunction getObserverModifier<T extends HTMLElement>(\n element: T\n): Modifier<string> {\n return {\n name: \"customSelectChildrenChange\",\n enabled: true,\n phase: \"main\",\n effect: ({ instance }) => {\n const observer = new MutationObserver(instance.forceUpdate);\n\n observer.observe(element, {\n childList: true,\n subtree: true,\n });\n\n return () => {\n observer.disconnect();\n };\n },\n };\n}\n\nexport const CustomSelectDropdown = ({\n children,\n targetRef,\n scrollBoxRef,\n placement,\n fetching,\n onPlacementChange: parentOnPlacementChange,\n offsetDistance = 0,\n sameWidth = true,\n forcePortal = true,\n autoHideScrollbar,\n autoHideScrollbarDelay,\n observableRefs,\n ...restProps\n}: CustomSelectDropdownProps) => {\n const [isTop, setIsTop] = React.useState(() => calcIsTop(placement));\n const [customModifiers, setCustomModifiers] = React.useState<\n Array<Modifier<string>>\n >([]);\n\n useIsomorphicLayoutEffect(() => {\n if (!observableRefs) {\n return;\n }\n const customModifiers: Array<Modifier<string>> = [];\n\n if (Array.isArray(observableRefs)) {\n for (const ref of observableRefs) {\n if (ref?.current) {\n customModifiers.push(getObserverModifier(ref.current));\n }\n }\n } else if (observableRefs.current) {\n customModifiers.push(getObserverModifier(observableRefs.current));\n }\n\n setCustomModifiers(customModifiers);\n }, [observableRefs]);\n\n const onPlacementChange = React.useCallback(\n ({ placement }: { placement?: Placement }) => {\n setIsTop(calcIsTop(placement));\n parentOnPlacementChange?.(placement);\n },\n [parentOnPlacementChange, setIsTop]\n );\n\n return (\n <Popper\n targetRef={targetRef}\n offsetDistance={offsetDistance}\n sameWidth={sameWidth}\n onPlacementChange={onPlacementChange}\n placement={placement}\n vkuiClass={classNames(\n \"CustomSelectDropdown\",\n offsetDistance === 0 &&\n (isTop\n ? \"CustomSelectDropdown--top\"\n : \"CustomSelectDropdown--bottom\"),\n sameWidth && \"CustomSelectDropdown--wide\"\n )}\n forcePortal={forcePortal}\n customModifiers={customModifiers}\n {...restProps}\n >\n <CustomScrollView\n boxRef={scrollBoxRef}\n vkuiClass=\"CustomSelectDropdown__in\"\n autoHideScrollbar={autoHideScrollbar}\n autoHideScrollbarDelay={autoHideScrollbarDelay}\n >\n {fetching ? (\n <div vkuiClass=\"CustomSelectDropdown__fetching\">\n <Spinner size=\"small\" />\n </div>\n ) : (\n children\n )}\n </CustomScrollView>\n </Popper>\n );\n};\n"],"file":"CustomSelectDropdown.js"}
1
+ {"version":3,"sources":["../../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"names":["calcIsTop","placement","includes","getObserverModifier","element","name","enabled","phase","fn","noop","effect","instance","observer","MutationObserver","forceUpdate","observe","childList","subtree","disconnect","CustomSelectDropdown","children","targetRef","scrollBoxRef","fetching","parentOnPlacementChange","onPlacementChange","offsetDistance","sameWidth","forcePortal","autoHideScrollbar","autoHideScrollbarDelay","observableRefs","restProps","React","useState","isTop","setIsTop","customModifiers","setCustomModifiers","Array","isArray","ref","current","push","useCallback"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { Modifier } from \"react-popper\";\nimport { CustomScrollView } from \"../CustomScrollView/CustomScrollView\";\nimport { TrackerOptionsProps } from \"../CustomScrollView/useTrackerVisibility\";\nimport { classNames } from \"../../lib/classNames\";\nimport { Popper, Placement } from \"../Popper/Popper\";\nimport { Spinner } from \"../Spinner/Spinner\";\nimport { HasRef } from \"../../types\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport { noop } from \"../../lib/utils\";\nimport \"./CustomSelectDropdown.css\";\n\nexport interface CustomSelectDropdownProps\n extends React.HTMLAttributes<HTMLElement>,\n HasRef<HTMLDivElement>,\n TrackerOptionsProps {\n targetRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n scrollBoxRef?: React.RefObject<HTMLDivElement>;\n observableRefs?:\n | Array<React.RefObject<HTMLElement>>\n | React.RefObject<HTMLElement>;\n fetching?: boolean;\n offsetDistance?: number;\n sameWidth?: boolean;\n forcePortal?: boolean;\n onPlacementChange?: (placement?: Placement) => void;\n}\n\nconst calcIsTop = (placement?: Placement) => placement?.includes(\"top\");\n\nfunction getObserverModifier<T extends HTMLElement>(\n element: T\n): Modifier<string> {\n return {\n name: \"customSelectChildrenChange\",\n enabled: true,\n phase: \"main\",\n fn: noop,\n effect: ({ instance }) => {\n const observer = new MutationObserver(instance.forceUpdate);\n\n observer.observe(element, {\n childList: true,\n subtree: true,\n });\n\n return () => {\n observer.disconnect();\n };\n },\n };\n}\n\nexport const CustomSelectDropdown = ({\n children,\n targetRef,\n scrollBoxRef,\n placement,\n fetching,\n onPlacementChange: parentOnPlacementChange,\n offsetDistance = 0,\n sameWidth = true,\n forcePortal = true,\n autoHideScrollbar,\n autoHideScrollbarDelay,\n observableRefs,\n ...restProps\n}: CustomSelectDropdownProps) => {\n const [isTop, setIsTop] = React.useState(() => calcIsTop(placement));\n const [customModifiers, setCustomModifiers] = React.useState<\n Array<Modifier<string>>\n >([]);\n\n useIsomorphicLayoutEffect(() => {\n if (!observableRefs) {\n return;\n }\n const customModifiers: Array<Modifier<string>> = [];\n\n if (Array.isArray(observableRefs)) {\n for (const ref of observableRefs) {\n if (ref?.current) {\n customModifiers.push(getObserverModifier(ref.current));\n }\n }\n } else if (observableRefs.current) {\n customModifiers.push(getObserverModifier(observableRefs.current));\n }\n\n setCustomModifiers(customModifiers);\n }, [observableRefs]);\n\n const onPlacementChange = React.useCallback(\n ({ placement }: { placement?: Placement }) => {\n setIsTop(calcIsTop(placement));\n parentOnPlacementChange?.(placement);\n },\n [parentOnPlacementChange, setIsTop]\n );\n\n return (\n <Popper\n targetRef={targetRef}\n offsetDistance={offsetDistance}\n sameWidth={sameWidth}\n onPlacementChange={onPlacementChange}\n placement={placement}\n vkuiClass={classNames(\n \"CustomSelectDropdown\",\n offsetDistance === 0 &&\n (isTop\n ? \"CustomSelectDropdown--top\"\n : \"CustomSelectDropdown--bottom\"),\n sameWidth && \"CustomSelectDropdown--wide\"\n )}\n forcePortal={forcePortal}\n customModifiers={customModifiers}\n {...restProps}\n >\n <CustomScrollView\n boxRef={scrollBoxRef}\n vkuiClass=\"CustomSelectDropdown__in\"\n autoHideScrollbar={autoHideScrollbar}\n autoHideScrollbarDelay={autoHideScrollbarDelay}\n >\n {fetching ? (\n <div vkuiClass=\"CustomSelectDropdown__fetching\">\n <Spinner size=\"small\" />\n </div>\n ) : (\n children\n )}\n </CustomScrollView>\n </Popper>\n );\n};\n"],"file":"CustomSelectDropdown.js"}
@@ -76,9 +76,8 @@ var PanelHeaderContent = function PanelHeaderContent(_ref2) {
76
76
  hasActive: platform === _platform.IOS,
77
77
  activeMode: "opacity"
78
78
  }) : {};
79
- var baseClassNames = (0, _getClassName.getClassName)("PanelHeaderContent", platform);
80
79
  return (0, _jsxRuntime.createScopedElement)("div", (0, _extends2.default)({}, rootProps, {
81
- vkuiClass: baseClassNames,
80
+ vkuiClass: (0, _getClassName.getClassName)("PanelHeaderContent", platform),
82
81
  style: style,
83
82
  className: className
84
83
  }), (0, _utils.hasReactNode)(before) && (0, _jsxRuntime.createScopedElement)("div", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/PanelHeaderContent/PanelHeaderContent.tsx"],"names":["PanelHeaderChildren","platform","hasStatus","hasBefore","children","Platform","VKCOM","PanelHeaderContent","className","style","aside","status","before","onClick","restProps","InComponent","Tappable","rootProps","inProps","activeEffectDelay","hasActive","IOS","activeMode","baseClassNames"],"mappings":";;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAiBA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,OAKI;AAAA,MAJ9BC,QAI8B,QAJ9BA,QAI8B;AAAA,MAH9BC,SAG8B,QAH9BA,SAG8B;AAAA,MAF9BC,SAE8B,QAF9BA,SAE8B;AAAA,MAD9BC,QAC8B,QAD9BA,QAC8B;;AAC9B,MAAIH,QAAQ,KAAKI,mBAASC,KAA1B,EAAiC;AAC/B,WACE,qCAAC,UAAD;AAAM,MAAA,SAAS,EAAC,KAAhB;AAAsB,MAAA,MAAM,EAAC;AAA7B,OACGF,QADH,CADF;AAKD;;AAED,SAAOF,SAAS,IAAIC,SAAb,GACL,qCAAC,kBAAD;AAAU,IAAA,SAAS,EAAC,KAApB;AAA0B,IAAA,MAAM,EAAC;AAAjC,KACGC,QADH,CADK,GAKL;AAAK,IAAA,SAAS,EAAC;AAAf,KAAkDA,QAAlD,CALF;AAOD,CArBD;AAuBA;AACA;AACA;;;AACO,IAAMG,kBAAkB,GAAG,SAArBA,kBAAqB,QASH;AAAA,MAR7BC,SAQ6B,SAR7BA,SAQ6B;AAAA,MAP7BC,KAO6B,SAP7BA,KAO6B;AAAA,MAN7BC,KAM6B,SAN7BA,KAM6B;AAAA,MAL7BC,MAK6B,SAL7BA,MAK6B;AAAA,MAJ7BC,MAI6B,SAJ7BA,MAI6B;AAAA,MAH7BR,QAG6B,SAH7BA,QAG6B;AAAA,MAF7BS,OAE6B,SAF7BA,OAE6B;AAAA,MAD1BC,SAC0B;AAC7B,MAAMC,WAAW,GAAGF,OAAO,GAAGG,kBAAH,GAAc,KAAzC;AACA,MAAMC,SAAS,GAAGJ,OAAO,GAAG,EAAH,GAAQC,SAAjC;AACA,MAAMb,QAAQ,GAAG,+BAAjB;AACA,MAAMiB,OAAO,GAAGL,OAAO,+DAEdC,SAFc;AAGjBD,IAAAA,OAAO,EAAPA,OAHiB;AAIjBM,IAAAA,iBAAiB,EAAE,GAJF;AAKjBC,IAAAA,SAAS,EAAEnB,QAAQ,KAAKoB,aALP;AAMjBC,IAAAA,UAAU,EAAE;AANK,OAQnB,EARJ;AASA,MAAMC,cAAc,GAAG,gCAAa,oBAAb,EAAmCtB,QAAnC,CAAvB;AAEA,SACE,uEACMgB,SADN;AAEE,IAAA,SAAS,EAAEM,cAFb;AAGE,IAAA,KAAK,EAAEd,KAHT;AAIE,IAAA,SAAS,EAAED;AAJb,MAMG,yBAAaI,MAAb,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA6CA,MAA7C,CAPJ,EASE,qCAAC,WAAD,6BAAiBM,OAAjB;AAA0B,IAAA,SAAS,EAAC;AAApC,MACG,yBAAaP,MAAb,KACC,qCAAC,gBAAD;AAAS,IAAA,SAAS,EAAC;AAAnB,KAAiDA,MAAjD,CAFJ,EAIE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE,qCAAC,mBAAD;AACE,IAAA,QAAQ,EAAEV,QADZ;AAEE,IAAA,SAAS,EAAE,yBAAaU,MAAb,CAFb;AAGE,IAAA,SAAS,EAAE,yBAAaC,MAAb;AAHb,KAKGR,QALH,CADF,EAQG,yBAAaM,KAAb,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA4CA,KAA5C,CATJ,CAJF,EAgBG,yBAAaE,MAAb,KAAwB;AAAK,IAAA,SAAS,EAAC;AAAf,IAhB3B,CATF,CADF;AA8BD,CAtDM","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { Tappable } from \"../Tappable/Tappable\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { Caption } from \"../Typography/Caption/Caption\";\nimport { Headline } from \"../Typography/Headline/Headline\";\nimport { IOS, Platform } from \"../../lib/platform\";\nimport { Text } from \"../Typography/Text/Text\";\nimport { HasPlatform } from \"../../types\";\nimport \"./PanelHeaderContent.css\";\n\nexport interface PanelHeaderContentProps\n extends React.HTMLAttributes<HTMLDivElement> {\n aside?: React.ReactNode;\n before?: React.ReactNode;\n status?: React.ReactNode;\n}\n\ninterface PanelHeaderChildrenProps extends HasPlatform {\n hasStatus: boolean;\n hasBefore: boolean;\n children?: React.ReactNode;\n}\n\nconst PanelHeaderChildren = ({\n platform,\n hasStatus,\n hasBefore,\n children,\n}: PanelHeaderChildrenProps) => {\n if (platform === Platform.VKCOM) {\n return (\n <Text Component=\"div\" weight=\"2\">\n {children}\n </Text>\n );\n }\n\n return hasStatus || hasBefore ? (\n <Headline Component=\"div\" weight=\"2\">\n {children}\n </Headline>\n ) : (\n <div vkuiClass=\"PanelHeaderContent__children-in\">{children}</div>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderContent\n */\nexport const PanelHeaderContent = ({\n className,\n style,\n aside,\n status,\n before,\n children,\n onClick,\n ...restProps\n}: PanelHeaderContentProps) => {\n const InComponent = onClick ? Tappable : \"div\";\n const rootProps = onClick ? {} : restProps;\n const platform = usePlatform();\n const inProps = onClick\n ? {\n ...restProps,\n onClick,\n activeEffectDelay: 200,\n hasActive: platform === IOS,\n activeMode: \"opacity\",\n }\n : {};\n const baseClassNames = getClassName(\"PanelHeaderContent\", platform);\n\n return (\n <div\n {...rootProps}\n vkuiClass={baseClassNames}\n style={style}\n className={className}\n >\n {hasReactNode(before) && (\n <div vkuiClass=\"PanelHeaderContent__before\">{before}</div>\n )}\n <InComponent {...inProps} vkuiClass=\"PanelHeaderContent__in\">\n {hasReactNode(status) && (\n <Caption vkuiClass=\"PanelHeaderContent__status\">{status}</Caption>\n )}\n <div vkuiClass=\"PanelHeaderContent__children\">\n <PanelHeaderChildren\n platform={platform}\n hasStatus={hasReactNode(status)}\n hasBefore={hasReactNode(before)}\n >\n {children}\n </PanelHeaderChildren>\n {hasReactNode(aside) && (\n <div vkuiClass=\"PanelHeaderContent__aside\">{aside}</div>\n )}\n </div>\n {hasReactNode(before) && <div vkuiClass=\"PanelHeaderContent__width\" />}\n </InComponent>\n </div>\n );\n};\n"],"file":"PanelHeaderContent.js"}
1
+ {"version":3,"sources":["../../../../src/components/PanelHeaderContent/PanelHeaderContent.tsx"],"names":["PanelHeaderChildren","platform","hasStatus","hasBefore","children","Platform","VKCOM","PanelHeaderContent","className","style","aside","status","before","onClick","restProps","InComponent","Tappable","rootProps","inProps","activeEffectDelay","hasActive","IOS","activeMode"],"mappings":";;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAiBA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,OAKI;AAAA,MAJ9BC,QAI8B,QAJ9BA,QAI8B;AAAA,MAH9BC,SAG8B,QAH9BA,SAG8B;AAAA,MAF9BC,SAE8B,QAF9BA,SAE8B;AAAA,MAD9BC,QAC8B,QAD9BA,QAC8B;;AAC9B,MAAIH,QAAQ,KAAKI,mBAASC,KAA1B,EAAiC;AAC/B,WACE,qCAAC,UAAD;AAAM,MAAA,SAAS,EAAC,KAAhB;AAAsB,MAAA,MAAM,EAAC;AAA7B,OACGF,QADH,CADF;AAKD;;AAED,SAAOF,SAAS,IAAIC,SAAb,GACL,qCAAC,kBAAD;AAAU,IAAA,SAAS,EAAC,KAApB;AAA0B,IAAA,MAAM,EAAC;AAAjC,KACGC,QADH,CADK,GAKL;AAAK,IAAA,SAAS,EAAC;AAAf,KAAkDA,QAAlD,CALF;AAOD,CArBD;AAuBA;AACA;AACA;;;AACO,IAAMG,kBAAkB,GAAG,SAArBA,kBAAqB,QASH;AAAA,MAR7BC,SAQ6B,SAR7BA,SAQ6B;AAAA,MAP7BC,KAO6B,SAP7BA,KAO6B;AAAA,MAN7BC,KAM6B,SAN7BA,KAM6B;AAAA,MAL7BC,MAK6B,SAL7BA,MAK6B;AAAA,MAJ7BC,MAI6B,SAJ7BA,MAI6B;AAAA,MAH7BR,QAG6B,SAH7BA,QAG6B;AAAA,MAF7BS,OAE6B,SAF7BA,OAE6B;AAAA,MAD1BC,SAC0B;AAC7B,MAAMC,WAAW,GAAGF,OAAO,GAAGG,kBAAH,GAAc,KAAzC;AACA,MAAMC,SAAS,GAAGJ,OAAO,GAAG,EAAH,GAAQC,SAAjC;AACA,MAAMb,QAAQ,GAAG,+BAAjB;AACA,MAAMiB,OAAO,GAAGL,OAAO,+DAEdC,SAFc;AAGjBD,IAAAA,OAAO,EAAPA,OAHiB;AAIjBM,IAAAA,iBAAiB,EAAE,GAJF;AAKjBC,IAAAA,SAAS,EAAEnB,QAAQ,KAAKoB,aALP;AAMjBC,IAAAA,UAAU,EAAE;AANK,OAQnB,EARJ;AAUA,SACE,uEACML,SADN;AAEE,IAAA,SAAS,EAAE,gCAAa,oBAAb,EAAmChB,QAAnC,CAFb;AAGE,IAAA,KAAK,EAAEQ,KAHT;AAIE,IAAA,SAAS,EAAED;AAJb,MAMG,yBAAaI,MAAb,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA6CA,MAA7C,CAPJ,EASE,qCAAC,WAAD,6BAAiBM,OAAjB;AAA0B,IAAA,SAAS,EAAC;AAApC,MACG,yBAAaP,MAAb,KACC,qCAAC,gBAAD;AAAS,IAAA,SAAS,EAAC;AAAnB,KAAiDA,MAAjD,CAFJ,EAIE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE,qCAAC,mBAAD;AACE,IAAA,QAAQ,EAAEV,QADZ;AAEE,IAAA,SAAS,EAAE,yBAAaU,MAAb,CAFb;AAGE,IAAA,SAAS,EAAE,yBAAaC,MAAb;AAHb,KAKGR,QALH,CADF,EAQG,yBAAaM,KAAb,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA4CA,KAA5C,CATJ,CAJF,EAgBG,yBAAaE,MAAb,KAAwB;AAAK,IAAA,SAAS,EAAC;AAAf,IAhB3B,CATF,CADF;AA8BD,CArDM","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { Tappable } from \"../Tappable/Tappable\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { Caption } from \"../Typography/Caption/Caption\";\nimport { Headline } from \"../Typography/Headline/Headline\";\nimport { IOS, Platform } from \"../../lib/platform\";\nimport { Text } from \"../Typography/Text/Text\";\nimport { HasPlatform } from \"../../types\";\nimport \"./PanelHeaderContent.css\";\n\nexport interface PanelHeaderContentProps\n extends React.HTMLAttributes<HTMLDivElement> {\n aside?: React.ReactNode;\n before?: React.ReactNode;\n status?: React.ReactNode;\n}\n\ninterface PanelHeaderChildrenProps extends HasPlatform {\n hasStatus: boolean;\n hasBefore: boolean;\n children?: React.ReactNode;\n}\n\nconst PanelHeaderChildren = ({\n platform,\n hasStatus,\n hasBefore,\n children,\n}: PanelHeaderChildrenProps) => {\n if (platform === Platform.VKCOM) {\n return (\n <Text Component=\"div\" weight=\"2\">\n {children}\n </Text>\n );\n }\n\n return hasStatus || hasBefore ? (\n <Headline Component=\"div\" weight=\"2\">\n {children}\n </Headline>\n ) : (\n <div vkuiClass=\"PanelHeaderContent__children-in\">{children}</div>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderContent\n */\nexport const PanelHeaderContent = ({\n className,\n style,\n aside,\n status,\n before,\n children,\n onClick,\n ...restProps\n}: PanelHeaderContentProps) => {\n const InComponent = onClick ? Tappable : \"div\";\n const rootProps = onClick ? {} : restProps;\n const platform = usePlatform();\n const inProps = onClick\n ? {\n ...restProps,\n onClick,\n activeEffectDelay: 200,\n hasActive: platform === IOS,\n activeMode: \"opacity\",\n }\n : {};\n\n return (\n <div\n {...rootProps}\n vkuiClass={getClassName(\"PanelHeaderContent\", platform)}\n style={style}\n className={className}\n >\n {hasReactNode(before) && (\n <div vkuiClass=\"PanelHeaderContent__before\">{before}</div>\n )}\n <InComponent {...inProps} vkuiClass=\"PanelHeaderContent__in\">\n {hasReactNode(status) && (\n <Caption vkuiClass=\"PanelHeaderContent__status\">{status}</Caption>\n )}\n <div vkuiClass=\"PanelHeaderContent__children\">\n <PanelHeaderChildren\n platform={platform}\n hasStatus={hasReactNode(status)}\n hasBefore={hasReactNode(before)}\n >\n {children}\n </PanelHeaderChildren>\n {hasReactNode(aside) && (\n <div vkuiClass=\"PanelHeaderContent__aside\">{aside}</div>\n )}\n </div>\n {hasReactNode(before) && <div vkuiClass=\"PanelHeaderContent__width\" />}\n </InComponent>\n </div>\n );\n};\n"],"file":"PanelHeaderContent.js"}
@@ -41,32 +41,61 @@ var _excluded = ["targetRef", "children", "getRef", "placement", "onPlacementCha
41
41
  var ARROW_PADDING = 8;
42
42
  var ARROW_WIDTH = 20;
43
43
  var ARROW_HEIGHT = 8;
44
+ var preventOverflowModifier = {
45
+ name: "preventOverflow",
46
+ options: {
47
+ mainAxis: false
48
+ }
49
+ };
50
+ var flipModifier = {
51
+ name: "flip"
52
+ };
53
+ var arrowModifier = {
54
+ name: "arrow",
55
+ options: {
56
+ padding: ARROW_PADDING
57
+ }
58
+ };
59
+ var sameWidthModifier = {
60
+ name: "sameWidth",
61
+ enabled: true,
62
+ phase: "beforeWrite",
63
+ requires: ["computeStyles"],
64
+ fn: function fn(_ref) {
65
+ var state = _ref.state;
66
+ state.styles.popper.width = "".concat(state.rects.reference.width, "px");
67
+ },
68
+ effect: function effect(_ref2) {
69
+ var state = _ref2.state;
70
+ state.elements.popper.style.width = "".concat(state.elements.reference.offsetWidth, "px");
71
+ }
72
+ };
44
73
  /**
45
74
  * @see https://vkcom.github.io/VKUI/#/Popper
46
75
  */
47
76
 
48
- var Popper = function Popper(_ref) {
77
+ var Popper = function Popper(_ref3) {
49
78
  var _targetRef$current3;
50
79
 
51
- var targetRef = _ref.targetRef,
52
- children = _ref.children,
53
- getRef = _ref.getRef,
54
- _ref$placement = _ref.placement,
55
- placement = _ref$placement === void 0 ? "bottom-start" : _ref$placement,
56
- onPlacementChange = _ref.onPlacementChange,
57
- arrow = _ref.arrow,
58
- arrowClassName = _ref.arrowClassName,
59
- sameWidth = _ref.sameWidth,
60
- _ref$offsetDistance = _ref.offsetDistance,
61
- offsetDistance = _ref$offsetDistance === void 0 ? 8 : _ref$offsetDistance,
62
- _ref$offsetSkidding = _ref.offsetSkidding,
63
- offsetSkidding = _ref$offsetSkidding === void 0 ? 0 : _ref$offsetSkidding,
64
- _ref$forcePortal = _ref.forcePortal,
65
- forcePortal = _ref$forcePortal === void 0 ? true : _ref$forcePortal,
66
- compStyles = _ref.style,
67
- customModifiers = _ref.customModifiers,
68
- renderContent = _ref.renderContent,
69
- restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
80
+ var targetRef = _ref3.targetRef,
81
+ children = _ref3.children,
82
+ getRef = _ref3.getRef,
83
+ _ref3$placement = _ref3.placement,
84
+ placement = _ref3$placement === void 0 ? "bottom-start" : _ref3$placement,
85
+ onPlacementChange = _ref3.onPlacementChange,
86
+ arrow = _ref3.arrow,
87
+ arrowClassName = _ref3.arrowClassName,
88
+ sameWidth = _ref3.sameWidth,
89
+ _ref3$offsetDistance = _ref3.offsetDistance,
90
+ offsetDistance = _ref3$offsetDistance === void 0 ? 8 : _ref3$offsetDistance,
91
+ _ref3$offsetSkidding = _ref3.offsetSkidding,
92
+ offsetSkidding = _ref3$offsetSkidding === void 0 ? 0 : _ref3$offsetSkidding,
93
+ _ref3$forcePortal = _ref3.forcePortal,
94
+ forcePortal = _ref3$forcePortal === void 0 ? true : _ref3$forcePortal,
95
+ compStyles = _ref3.style,
96
+ customModifiers = _ref3.customModifiers,
97
+ renderContent = _ref3.renderContent,
98
+ restProps = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
70
99
 
71
100
  var _React$useState = React.useState(null),
72
101
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
@@ -81,45 +110,19 @@ var Popper = function Popper(_ref) {
81
110
  var platform = (0, _usePlatform.usePlatform)();
82
111
  var setExternalRef = (0, _useExternRef.useExternRef)(getRef, setPopperNode);
83
112
  var modifiers = React.useMemo(function () {
84
- var modifiers = [{
85
- name: "preventOverflow",
86
- options: {
87
- mainAxis: false
88
- }
89
- }, {
113
+ var modifiers = [preventOverflowModifier, {
90
114
  name: "offset",
91
115
  options: {
92
116
  offset: [arrow ? offsetSkidding - smallTargetOffsetSkidding : offsetSkidding, arrow ? offsetDistance + ARROW_HEIGHT : offsetDistance]
93
117
  }
94
- }, {
95
- name: "flip"
96
- }];
118
+ }, flipModifier];
97
119
 
98
120
  if (arrow) {
99
- modifiers.push({
100
- name: "arrow",
101
- options: {
102
- padding: ARROW_PADDING
103
- }
104
- });
121
+ modifiers.push(arrowModifier);
105
122
  }
106
123
 
107
124
  if (sameWidth) {
108
- var _sameWidth = {
109
- name: "sameWidth",
110
- enabled: true,
111
- phase: "beforeWrite",
112
- requires: ["computeStyles"],
113
- fn: function fn(_ref2) {
114
- var state = _ref2.state;
115
- state.styles.popper.width = "".concat(state.rects.reference.width, "px");
116
- },
117
- effect: function effect(_ref3) {
118
- var state = _ref3.state;
119
- state.elements.popper.style.width = "".concat(state.elements.reference.offsetWidth, "px");
120
- }
121
- };
122
- modifiers.push(_sameWidth);
125
+ modifiers.push(sameWidthModifier);
123
126
  }
124
127
 
125
128
  if (customModifiers) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Popper/Popper.tsx"],"names":["ARROW_PADDING","ARROW_WIDTH","ARROW_HEIGHT","Popper","targetRef","children","getRef","placement","onPlacementChange","arrow","arrowClassName","sameWidth","offsetDistance","offsetSkidding","forcePortal","compStyles","style","customModifiers","renderContent","restProps","React","useState","popperNode","setPopperNode","smallTargetOffsetSkidding","setSmallTargetOffsetSkidding","platform","setExternalRef","modifiers","useMemo","name","options","mainAxis","offset","push","padding","enabled","phase","requires","fn","state","styles","popper","width","rects","reference","effect","elements","offsetWidth","current","attributes","resolvedPlacement","isEdgePlacement","includes","placementDirection","startsWith","arrowSize","targetSize","offsetHeight","useEffect","dropdown","minWidth","scrollWidth","undefined","className"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { usePopper, Modifier } from \"react-popper\";\nimport { AppRootPortal } from \"../AppRoot/AppRootPortal\";\nimport { PopperArrow } from \"../PopperArrow/PopperArrow\";\nimport { HasRef } from \"../../types\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport \"./Popper.css\";\n\nexport type Placement =\n | \"auto\"\n | \"auto-start\"\n | \"auto-end\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"right-start\"\n | \"right-end\"\n | \"left-start\"\n | \"left-end\"\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\";\n\nexport interface PopperRenderContentProps {\n className: string;\n}\n\nexport interface PopperCommonProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: Placement;\n /**\n * Отступ по вспомогательной оси\n */\n offsetSkidding?: number;\n /**\n * Отступ по главной оси\n */\n offsetDistance?: number;\n /**\n * Отображать ли стрелку, указывающую на якорный элемент\n */\n arrow?: boolean;\n /**\n * Стиль стрелки\n */\n arrowClassName?: string;\n /**\n * Выставлять ширину равной target элементу\n */\n sameWidth?: boolean;\n forcePortal?: boolean;\n onPlacementChange?: (data: { placement?: Placement }) => void;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать)\n */\n customModifiers?: Array<Modifier<string>>;\n /**\n * При передаче содержимого в `children`, он будет обёрнут во внутренний контейнер.\n *\n * Если хочется управлять этим контейнером, то используйте данную функцию.\n *\n * > ⚠️ Параметр `children` будет проигнорирован.\n */\n renderContent?(props: PopperRenderContentProps): React.ReactNode;\n}\n\nexport interface PopperProps extends PopperCommonProps {\n targetRef: React.RefObject<HTMLElement>;\n}\n\nconst ARROW_PADDING = 8;\nconst ARROW_WIDTH = 20;\nconst ARROW_HEIGHT = 8;\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popper\n */\nexport const Popper = ({\n targetRef,\n children,\n getRef,\n placement = \"bottom-start\",\n onPlacementChange,\n arrow,\n arrowClassName,\n sameWidth,\n offsetDistance = 8,\n offsetSkidding = 0,\n forcePortal = true,\n style: compStyles,\n customModifiers,\n renderContent,\n ...restProps\n}: PopperProps) => {\n const [popperNode, setPopperNode] = React.useState<HTMLDivElement | null>(\n null\n );\n const [smallTargetOffsetSkidding, setSmallTargetOffsetSkidding] =\n React.useState(0);\n const platform = usePlatform();\n\n const setExternalRef = useExternRef<HTMLDivElement>(getRef, setPopperNode);\n\n const modifiers = React.useMemo(() => {\n const modifiers: Array<Modifier<string>> = [\n {\n name: \"preventOverflow\",\n options: {\n mainAxis: false,\n },\n },\n {\n name: \"offset\",\n options: {\n offset: [\n arrow ? offsetSkidding - smallTargetOffsetSkidding : offsetSkidding,\n arrow ? offsetDistance + ARROW_HEIGHT : offsetDistance,\n ],\n },\n },\n {\n name: \"flip\",\n },\n ];\n\n if (arrow) {\n modifiers.push({\n name: \"arrow\",\n options: {\n padding: ARROW_PADDING,\n },\n });\n }\n\n if (sameWidth) {\n const sameWidth: Modifier<string> = {\n name: \"sameWidth\",\n enabled: true,\n phase: \"beforeWrite\",\n requires: [\"computeStyles\"],\n fn: ({ state }) => {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n },\n effect: ({ state }) => {\n state.elements.popper.style.width = `${\n (state.elements.reference as HTMLElement).offsetWidth\n }px`;\n },\n };\n\n modifiers.push(sameWidth);\n }\n\n if (customModifiers) {\n modifiers.push(...customModifiers);\n }\n return modifiers;\n }, [\n arrow,\n sameWidth,\n smallTargetOffsetSkidding,\n offsetSkidding,\n offsetDistance,\n customModifiers,\n ]);\n\n const { styles, state, attributes } = usePopper(\n targetRef.current,\n popperNode,\n {\n placement,\n modifiers,\n }\n );\n\n const resolvedPlacement = state?.placement;\n const isEdgePlacement =\n !!resolvedPlacement && resolvedPlacement.includes(\"-\"); // true, если поппер отрисован с краю\n\n // Если поппер рисуется с краю, то нужно опционально сместить его в тех случаях, когда стрелка не дотягивается до\n // таргета из-за маленьких размеров последнего\n useIsomorphicLayoutEffect(() => {\n if (arrow && isEdgePlacement) {\n const placementDirection =\n resolvedPlacement?.startsWith(\"bottom\") ||\n resolvedPlacement?.startsWith(\"top\")\n ? \"vertical\"\n : \"horizontal\";\n\n const arrowSize =\n placementDirection === \"vertical\" ? ARROW_WIDTH : ARROW_HEIGHT;\n const targetSize =\n (placementDirection === \"vertical\"\n ? targetRef.current?.offsetWidth\n : targetRef.current?.offsetHeight) ?? 0;\n\n if (targetSize < arrowSize + 2 * ARROW_PADDING) {\n setSmallTargetOffsetSkidding(ARROW_PADDING + arrowSize / 2);\n }\n } else {\n setSmallTargetOffsetSkidding(0);\n }\n }, [arrow, isEdgePlacement]);\n\n React.useEffect(() => {\n if (resolvedPlacement) {\n onPlacementChange && onPlacementChange({ placement: resolvedPlacement });\n }\n }, [onPlacementChange, resolvedPlacement]);\n\n const dropdown = (\n <div\n {...restProps}\n {...attributes.popper}\n vkuiClass={getClassName(\"Popper\", platform)}\n ref={setExternalRef}\n style={{\n ...compStyles,\n ...styles.popper,\n minWidth: sameWidth ? targetRef.current?.scrollWidth : undefined,\n }}\n >\n {arrow && (\n <PopperArrow\n attributes={attributes.arrow}\n style={styles.arrow}\n arrowClassName={arrowClassName}\n />\n )}\n {renderContent ? (\n renderContent({ className: \"Popper__content\" })\n ) : (\n <div vkuiClass=\"Popper__content\">{children}</div>\n )}\n </div>\n );\n\n return (\n <AppRootPortal forcePortal={forcePortal} vkuiClass=\"PopperPortal\">\n {dropdown}\n </AppRootPortal>\n );\n};\n"],"file":"Popper.js"}
1
+ {"version":3,"sources":["../../../../src/components/Popper/Popper.tsx"],"names":["ARROW_PADDING","ARROW_WIDTH","ARROW_HEIGHT","preventOverflowModifier","name","options","mainAxis","flipModifier","arrowModifier","padding","sameWidthModifier","enabled","phase","requires","fn","state","styles","popper","width","rects","reference","effect","elements","style","offsetWidth","Popper","targetRef","children","getRef","placement","onPlacementChange","arrow","arrowClassName","sameWidth","offsetDistance","offsetSkidding","forcePortal","compStyles","customModifiers","renderContent","restProps","React","useState","popperNode","setPopperNode","smallTargetOffsetSkidding","setSmallTargetOffsetSkidding","platform","setExternalRef","modifiers","useMemo","offset","push","current","attributes","resolvedPlacement","isEdgePlacement","includes","placementDirection","startsWith","arrowSize","targetSize","offsetHeight","useEffect","dropdown","minWidth","scrollWidth","undefined","className"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { usePopper, Modifier } from \"react-popper\";\nimport { AppRootPortal } from \"../AppRoot/AppRootPortal\";\nimport { PopperArrow } from \"../PopperArrow/PopperArrow\";\nimport { HasRef } from \"../../types\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport \"./Popper.css\";\n\nexport type Placement =\n | \"auto\"\n | \"auto-start\"\n | \"auto-end\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"right-start\"\n | \"right-end\"\n | \"left-start\"\n | \"left-end\"\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\";\n\nexport interface PopperRenderContentProps {\n className: string;\n}\n\nexport interface PopperCommonProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: Placement;\n /**\n * Отступ по вспомогательной оси\n */\n offsetSkidding?: number;\n /**\n * Отступ по главной оси\n */\n offsetDistance?: number;\n /**\n * Отображать ли стрелку, указывающую на якорный элемент\n */\n arrow?: boolean;\n /**\n * Стиль стрелки\n */\n arrowClassName?: string;\n /**\n * Выставлять ширину равной target элементу\n */\n sameWidth?: boolean;\n forcePortal?: boolean;\n onPlacementChange?: (data: { placement?: Placement }) => void;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать)\n */\n customModifiers?: Array<Modifier<string>>;\n /**\n * При передаче содержимого в `children`, он будет обёрнут во внутренний контейнер.\n *\n * Если хочется управлять этим контейнером, то используйте данную функцию.\n *\n * > ⚠️ Параметр `children` будет проигнорирован.\n */\n renderContent?(props: PopperRenderContentProps): React.ReactNode;\n}\n\nexport interface PopperProps extends PopperCommonProps {\n targetRef: React.RefObject<HTMLElement>;\n}\n\nconst ARROW_PADDING = 8;\nconst ARROW_WIDTH = 20;\nconst ARROW_HEIGHT = 8;\n\nconst preventOverflowModifier: Modifier<string> = {\n name: \"preventOverflow\",\n options: {\n mainAxis: false,\n },\n};\n\nconst flipModifier: Modifier<string> = {\n name: \"flip\",\n};\n\nconst arrowModifier: Modifier<string> = {\n name: \"arrow\",\n options: {\n padding: ARROW_PADDING,\n },\n};\n\nconst sameWidthModifier: Modifier<string> = {\n name: \"sameWidth\",\n enabled: true,\n phase: \"beforeWrite\",\n requires: [\"computeStyles\"],\n fn: ({ state }) => {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n },\n effect: ({ state }) => {\n state.elements.popper.style.width = `${\n (state.elements.reference as HTMLElement).offsetWidth\n }px`;\n },\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popper\n */\nexport const Popper = ({\n targetRef,\n children,\n getRef,\n placement = \"bottom-start\",\n onPlacementChange,\n arrow,\n arrowClassName,\n sameWidth,\n offsetDistance = 8,\n offsetSkidding = 0,\n forcePortal = true,\n style: compStyles,\n customModifiers,\n renderContent,\n ...restProps\n}: PopperProps) => {\n const [popperNode, setPopperNode] = React.useState<HTMLDivElement | null>(\n null\n );\n const [smallTargetOffsetSkidding, setSmallTargetOffsetSkidding] =\n React.useState(0);\n const platform = usePlatform();\n\n const setExternalRef = useExternRef<HTMLDivElement>(getRef, setPopperNode);\n\n const modifiers = React.useMemo(() => {\n const modifiers: Array<Modifier<string>> = [\n preventOverflowModifier,\n {\n name: \"offset\",\n options: {\n offset: [\n arrow ? offsetSkidding - smallTargetOffsetSkidding : offsetSkidding,\n arrow ? offsetDistance + ARROW_HEIGHT : offsetDistance,\n ],\n },\n },\n flipModifier,\n ];\n\n if (arrow) {\n modifiers.push(arrowModifier);\n }\n\n if (sameWidth) {\n modifiers.push(sameWidthModifier);\n }\n\n if (customModifiers) {\n modifiers.push(...customModifiers);\n }\n return modifiers;\n }, [\n arrow,\n sameWidth,\n smallTargetOffsetSkidding,\n offsetSkidding,\n offsetDistance,\n customModifiers,\n ]);\n\n const { styles, state, attributes } = usePopper(\n targetRef.current,\n popperNode,\n {\n placement,\n modifiers,\n }\n );\n\n const resolvedPlacement = state?.placement;\n const isEdgePlacement =\n !!resolvedPlacement && resolvedPlacement.includes(\"-\"); // true, если поппер отрисован с краю\n\n // Если поппер рисуется с краю, то нужно опционально сместить его в тех случаях, когда стрелка не дотягивается до\n // таргета из-за маленьких размеров последнего\n useIsomorphicLayoutEffect(() => {\n if (arrow && isEdgePlacement) {\n const placementDirection =\n resolvedPlacement?.startsWith(\"bottom\") ||\n resolvedPlacement?.startsWith(\"top\")\n ? \"vertical\"\n : \"horizontal\";\n\n const arrowSize =\n placementDirection === \"vertical\" ? ARROW_WIDTH : ARROW_HEIGHT;\n const targetSize =\n (placementDirection === \"vertical\"\n ? targetRef.current?.offsetWidth\n : targetRef.current?.offsetHeight) ?? 0;\n\n if (targetSize < arrowSize + 2 * ARROW_PADDING) {\n setSmallTargetOffsetSkidding(ARROW_PADDING + arrowSize / 2);\n }\n } else {\n setSmallTargetOffsetSkidding(0);\n }\n }, [arrow, isEdgePlacement]);\n\n React.useEffect(() => {\n if (resolvedPlacement) {\n onPlacementChange && onPlacementChange({ placement: resolvedPlacement });\n }\n }, [onPlacementChange, resolvedPlacement]);\n\n const dropdown = (\n <div\n {...restProps}\n {...attributes.popper}\n vkuiClass={getClassName(\"Popper\", platform)}\n ref={setExternalRef}\n style={{\n ...compStyles,\n ...styles.popper,\n minWidth: sameWidth ? targetRef.current?.scrollWidth : undefined,\n }}\n >\n {arrow && (\n <PopperArrow\n attributes={attributes.arrow}\n style={styles.arrow}\n arrowClassName={arrowClassName}\n />\n )}\n {renderContent ? (\n renderContent({ className: \"Popper__content\" })\n ) : (\n <div vkuiClass=\"Popper__content\">{children}</div>\n )}\n </div>\n );\n\n return (\n <AppRootPortal forcePortal={forcePortal} vkuiClass=\"PopperPortal\">\n {dropdown}\n </AppRootPortal>\n );\n};\n"],"file":"Popper.js"}
@@ -35,10 +35,15 @@ function isPlatformAlias(platformAlias) {
35
35
 
36
36
 
37
37
  function getPlatformByQueryString(queryString) {
38
- var parsedQuery = _vkjs.querystring.parse(queryString);
39
-
40
- var platformAliasByQuery = parsedQuery["vk_platform"];
41
- return typeof platformAliasByQuery === "string" && isPlatformAlias(platformAliasByQuery) ? PLATFORM_ALIAS[platformAliasByQuery] : undefined;
38
+ try {
39
+ var parsedQuery = _vkjs.querystring.parse(queryString);
40
+
41
+ var platformAliasByQuery = parsedQuery["vk_platform"];
42
+ return typeof platformAliasByQuery === "string" && isPlatformAlias(platformAliasByQuery) ? PLATFORM_ALIAS[platformAliasByQuery] : undefined;
43
+ } catch (e) {
44
+ console.warn(e);
45
+ return undefined;
46
+ }
42
47
  }
43
48
 
44
49
  var platformByQueryString = _dom.canUseDOM ? getPlatformByQueryString(location.search) : undefined;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/platform.ts"],"names":["Platform","PLATFORM_ALIAS","desktop_web","VKCOM","isPlatformAlias","platformAlias","getPlatformByQueryString","queryString","parsedQuery","querystring","parse","platformAliasByQuery","undefined","platformByQueryString","canUseDOM","location","search","ANDROID","IOS","platform","browserInfo","system","platformName","IS_PLATFORM_IOS","IS_PLATFORM_ANDROID"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;IAEYA,Q;;;WAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;GAAAA,Q,wBAAAA,Q;;AAMZ,IAAMC,cAAc,GAAG;AACrBC,EAAAA,WAAW,EAAEF,QAAQ,CAACG;AADD,CAAvB;;AAIA,SAASC,eAAT,CACEC,aADF,EAEgD;AAC9C,SAAOA,aAAa,IAAIJ,cAAxB;AACD;AAED;AACA;AACA;AACA;;;AACA,SAASK,wBAAT,CAAkCC,WAAlC,EAA6E;AAC3E,MAAMC,WAAW,GAAGC,kBAAYC,KAAZ,CAAkBH,WAAlB,CAApB;;AACA,MAAMI,oBAAoB,GAAGH,WAAW,CAAC,aAAD,CAAxC;AAEA,SAAO,OAAOG,oBAAP,KAAgC,QAAhC,IACLP,eAAe,CAACO,oBAAD,CADV,GAEHV,cAAc,CAACU,oBAAD,CAFX,GAGHC,SAHJ;AAID;;AAED,IAAMC,qBAAqB,GAAGC,iBAC1BR,wBAAwB,CAACS,QAAQ,CAACC,MAAV,CADE,GAE1BJ,SAFJ;AAIO,IAAMK,OAAO,GAAGjB,QAAQ,CAACiB,OAAzB;;AACA,IAAMC,GAAG,GAAGlB,QAAQ,CAACkB,GAArB;;AACA,IAAMf,KAAK,GAAGH,QAAQ,CAACG,KAAvB;;;AAQA,SAASgB,QAAT,CAAkBC,WAAlB,EAA2D;AAChE,MAAIP,qBAAJ,EAA2B;AACzB,WAAOA,qBAAP;AACD;;AAED,MAAI,CAACO,WAAL,EAAkB;AAChBA,IAAAA,WAAW,GAAG,kCAAd;AACD;;AAED,SAAOA,WAAW,CAACC,MAAZ,KAAuB,KAAvB,GAA+BH,GAA/B,GAAqCD,OAA5C;AACD;;AAED,IAAMK,YAAY,GAAGH,QAAQ,EAA7B;AAEA;AACA;AACA;;AACO,IAAMI,eAAwB,GAAGD,YAAY,KAAKJ,GAAlD;AACP;AACA;AACA;;;AACO,IAAMM,mBAA4B,GAAGF,YAAY,KAAKL,OAAtD","sourcesContent":["import { BrowserInfo, computeBrowserInfo } from \"./browser\";\nimport { querystring } from \"@vkontakte/vkjs\";\nimport { canUseDOM } from \"./dom\";\n\nexport enum Platform {\n ANDROID = \"android\",\n IOS = \"ios\",\n VKCOM = \"vkcom\",\n}\n\nconst PLATFORM_ALIAS = {\n desktop_web: Platform.VKCOM,\n};\n\nfunction isPlatformAlias(\n platformAlias: string\n): platformAlias is keyof typeof PLATFORM_ALIAS {\n return platformAlias in PLATFORM_ALIAS;\n}\n\n/**\n * Значение, которое передаётся в качестве query-параметра при открытии VK Mini Apps\n * @see {@link https://dev.vk.com/mini-apps/development/launch-params#vk_platform vk_platform}\n */\nfunction getPlatformByQueryString(queryString: string): Platform | undefined {\n const parsedQuery = querystring.parse(queryString);\n const platformAliasByQuery = parsedQuery[\"vk_platform\"];\n\n return typeof platformAliasByQuery === \"string\" &&\n isPlatformAlias(platformAliasByQuery)\n ? PLATFORM_ALIAS[platformAliasByQuery]\n : undefined;\n}\n\nconst platformByQueryString = canUseDOM\n ? getPlatformByQueryString(location.search)\n : undefined;\n\nexport const ANDROID = Platform.ANDROID;\nexport const IOS = Platform.IOS;\nexport const VKCOM = Platform.VKCOM;\n\nexport type PlatformType =\n | Platform.ANDROID\n | Platform.IOS\n | Platform.VKCOM\n | string;\n\nexport function platform(browserInfo?: BrowserInfo): PlatformType {\n if (platformByQueryString) {\n return platformByQueryString;\n }\n\n if (!browserInfo) {\n browserInfo = computeBrowserInfo();\n }\n\n return browserInfo.system === \"ios\" ? IOS : ANDROID;\n}\n\nconst platformName = platform();\n\n/**\n * @deprecated для определения платформы используйте withPlatform или usePlatform\n */\nexport const IS_PLATFORM_IOS: boolean = platformName === IOS;\n/**\n * @deprecated для определения платформы используйте withPlatform или usePlatform\n */\nexport const IS_PLATFORM_ANDROID: boolean = platformName === ANDROID;\n"],"file":"platform.js"}
1
+ {"version":3,"sources":["../../../src/lib/platform.ts"],"names":["Platform","PLATFORM_ALIAS","desktop_web","VKCOM","isPlatformAlias","platformAlias","getPlatformByQueryString","queryString","parsedQuery","querystring","parse","platformAliasByQuery","undefined","e","console","warn","platformByQueryString","canUseDOM","location","search","ANDROID","IOS","platform","browserInfo","system","platformName","IS_PLATFORM_IOS","IS_PLATFORM_ANDROID"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;IAEYA,Q;;;WAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;GAAAA,Q,wBAAAA,Q;;AAMZ,IAAMC,cAAc,GAAG;AACrBC,EAAAA,WAAW,EAAEF,QAAQ,CAACG;AADD,CAAvB;;AAIA,SAASC,eAAT,CACEC,aADF,EAEgD;AAC9C,SAAOA,aAAa,IAAIJ,cAAxB;AACD;AAED;AACA;AACA;AACA;;;AACA,SAASK,wBAAT,CAAkCC,WAAlC,EAA6E;AAC3E,MAAI;AACF,QAAMC,WAAW,GAAGC,kBAAYC,KAAZ,CAAkBH,WAAlB,CAApB;;AACA,QAAMI,oBAAoB,GAAGH,WAAW,CAAC,aAAD,CAAxC;AAEA,WAAO,OAAOG,oBAAP,KAAgC,QAAhC,IACLP,eAAe,CAACO,oBAAD,CADV,GAEHV,cAAc,CAACU,oBAAD,CAFX,GAGHC,SAHJ;AAID,GARD,CAQE,OAAOC,CAAP,EAAU;AACVC,IAAAA,OAAO,CAACC,IAAR,CAAaF,CAAb;AAEA,WAAOD,SAAP;AACD;AACF;;AAED,IAAMI,qBAAqB,GAAGC,iBAC1BX,wBAAwB,CAACY,QAAQ,CAACC,MAAV,CADE,GAE1BP,SAFJ;AAIO,IAAMQ,OAAO,GAAGpB,QAAQ,CAACoB,OAAzB;;AACA,IAAMC,GAAG,GAAGrB,QAAQ,CAACqB,GAArB;;AACA,IAAMlB,KAAK,GAAGH,QAAQ,CAACG,KAAvB;;;AAQA,SAASmB,QAAT,CAAkBC,WAAlB,EAA2D;AAChE,MAAIP,qBAAJ,EAA2B;AACzB,WAAOA,qBAAP;AACD;;AAED,MAAI,CAACO,WAAL,EAAkB;AAChBA,IAAAA,WAAW,GAAG,kCAAd;AACD;;AAED,SAAOA,WAAW,CAACC,MAAZ,KAAuB,KAAvB,GAA+BH,GAA/B,GAAqCD,OAA5C;AACD;;AAED,IAAMK,YAAY,GAAGH,QAAQ,EAA7B;AAEA;AACA;AACA;;AACO,IAAMI,eAAwB,GAAGD,YAAY,KAAKJ,GAAlD;AACP;AACA;AACA;;;AACO,IAAMM,mBAA4B,GAAGF,YAAY,KAAKL,OAAtD","sourcesContent":["import { BrowserInfo, computeBrowserInfo } from \"./browser\";\nimport { querystring } from \"@vkontakte/vkjs\";\nimport { canUseDOM } from \"./dom\";\n\nexport enum Platform {\n ANDROID = \"android\",\n IOS = \"ios\",\n VKCOM = \"vkcom\",\n}\n\nconst PLATFORM_ALIAS = {\n desktop_web: Platform.VKCOM,\n};\n\nfunction isPlatformAlias(\n platformAlias: string\n): platformAlias is keyof typeof PLATFORM_ALIAS {\n return platformAlias in PLATFORM_ALIAS;\n}\n\n/**\n * Значение, которое передаётся в качестве query-параметра при открытии VK Mini Apps\n * @see {@link https://dev.vk.com/mini-apps/development/launch-params#vk_platform vk_platform}\n */\nfunction getPlatformByQueryString(queryString: string): Platform | undefined {\n try {\n const parsedQuery = querystring.parse(queryString);\n const platformAliasByQuery = parsedQuery[\"vk_platform\"];\n\n return typeof platformAliasByQuery === \"string\" &&\n isPlatformAlias(platformAliasByQuery)\n ? PLATFORM_ALIAS[platformAliasByQuery]\n : undefined;\n } catch (e) {\n console.warn(e);\n\n return undefined;\n }\n}\n\nconst platformByQueryString = canUseDOM\n ? getPlatformByQueryString(location.search)\n : undefined;\n\nexport const ANDROID = Platform.ANDROID;\nexport const IOS = Platform.IOS;\nexport const VKCOM = Platform.VKCOM;\n\nexport type PlatformType =\n | Platform.ANDROID\n | Platform.IOS\n | Platform.VKCOM\n | string;\n\nexport function platform(browserInfo?: BrowserInfo): PlatformType {\n if (platformByQueryString) {\n return platformByQueryString;\n }\n\n if (!browserInfo) {\n browserInfo = computeBrowserInfo();\n }\n\n return browserInfo.system === \"ios\" ? IOS : ANDROID;\n}\n\nconst platformName = platform();\n\n/**\n * @deprecated для определения платформы используйте withPlatform или usePlatform\n */\nexport const IS_PLATFORM_IOS: boolean = platformName === IOS;\n/**\n * @deprecated для определения платформы используйте withPlatform или usePlatform\n */\nexport const IS_PLATFORM_ANDROID: boolean = platformName === ANDROID;\n"],"file":"platform.js"}