@skbkontur/react-ui 6.0.0-beta.3 → 6.0.0-beta.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.
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { isElement } from 'react-is';
2
+ import { isElement } from '../../../lib/react-is.js';
3
3
  import { useEmotion, useStyles } from '../../../lib/renderEnvironment/index.js';
4
4
  import { isKonturIcon } from '../../../lib/utils.js';
5
5
  import { ThemeContext } from '../../../lib/theming/ThemeContext.js';
@@ -1 +1 @@
1
- {"version":3,"file":"InputLayoutAsideIcon.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayoutAsideIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAIpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAO1D,MAAM,CAAC,IAAM,oBAAoB,GAAuD,UAAC,EAAqB;;QAAnB,YAAW,EAAX,IAAI,mBAAG,IAAI,KAAA,EAAE,IAAI,UAAA;IAC1G,IAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACrC,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAC1C,IAAA,KAA8B,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAhE,OAAO,aAAA,EAAE,QAAQ,cAAA,EAAE,IAAI,UAAyC,CAAC;IAEzE,IAAM,KAAK,GAA6B;QACtC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACzC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAC3C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC;KAC1C,CAAC;IACF,IAAM,IAAI,GAA6B;QACrC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;QACxC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC1C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;KACzC,CAAC;IAEF,IAAI,KAAK,GAAG,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAM,SAAS,GAAG,IAAI,CAAC,KAAkB,CAAC;QAC1C,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE;YAC/B,IAAI,EAAE,MAAA,SAAS,CAAC,IAAI,mCAAI,KAAK,CAAC,IAAI,CAAC;SACvB,CAAC,CAAC;IAClB,CAAC;IAED,IAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,8BACE,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CACX,YAAY,CAAC,KAAK,EAAE,EACpB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,EACxC,QAAQ,IAAI,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAC7C,IAEA,KAAK,CACD,CACR,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport { isElement } from 'react-is';\n\nimport { useEmotion, useStyles } from '../../../lib/renderEnvironment/index.js';\nimport { isKonturIcon } from '../../../lib/utils.js';\nimport type { InputProps } from '../Input.js';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../../lib/types/props.js';\nimport type { IconProps } from '../../../internal/icons2022/BaseIcon.js';\n\nimport { InputLayoutContext } from './InputLayoutContext.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\n\nexport interface InputLayoutAsideIconProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAsideIcon: React.FunctionComponent<InputLayoutAsideIconProps> = ({ icon = null, side }) => {\n const theme = React.useContext(ThemeContext);\n const { cx } = useEmotion();\n const stylesLayout = useStyles(getStylesLayout);\n const { focused, disabled, size } = React.useContext(InputLayoutContext);\n\n const sizes: Record<SizeProp, number> = {\n small: parseInt(theme.inputIconSizeSmall),\n medium: parseInt(theme.inputIconSizeMedium),\n large: parseInt(theme.inputIconSizeLarge),\n };\n const gaps: Record<SizeProp, number> = {\n small: parseInt(theme.inputIconGapSmall),\n medium: parseInt(theme.inputIconGapMedium),\n large: parseInt(theme.inputIconGapLarge),\n };\n\n let _icon = icon instanceof Function ? icon() : icon;\n if (isElement(icon) && isKonturIcon(icon)) {\n const iconProps = icon.props as IconProps;\n _icon = React.cloneElement(icon, {\n size: iconProps.size ?? sizes[size],\n } as IconProps);\n }\n\n const style: React.CSSProperties = {};\n if (side) {\n if (side === 'right') {\n style.marginLeft = gaps[size];\n } else {\n style.marginRight = gaps[size];\n }\n }\n\n return _icon ? (\n <span\n style={style}\n className={cx(\n stylesLayout.aside(),\n stylesLayout.icon(theme),\n focused && stylesLayout.iconFocus(theme),\n disabled && stylesLayout.iconDisabled(theme),\n )}\n >\n {_icon}\n </span>\n ) : null;\n};\n"]}
1
+ {"version":3,"file":"InputLayoutAsideIcon.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayoutAsideIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAIpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAO1D,MAAM,CAAC,IAAM,oBAAoB,GAAuD,UAAC,EAAqB;;QAAnB,YAAW,EAAX,IAAI,mBAAG,IAAI,KAAA,EAAE,IAAI,UAAA;IAC1G,IAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACrC,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAC1C,IAAA,KAA8B,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAhE,OAAO,aAAA,EAAE,QAAQ,cAAA,EAAE,IAAI,UAAyC,CAAC;IAEzE,IAAM,KAAK,GAA6B;QACtC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACzC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAC3C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC;KAC1C,CAAC;IACF,IAAM,IAAI,GAA6B;QACrC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;QACxC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC1C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;KACzC,CAAC;IAEF,IAAI,KAAK,GAAG,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAM,SAAS,GAAG,IAAI,CAAC,KAAkB,CAAC;QAC1C,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE;YAC/B,IAAI,EAAE,MAAA,SAAS,CAAC,IAAI,mCAAI,KAAK,CAAC,IAAI,CAAC;SACvB,CAAC,CAAC;IAClB,CAAC;IAED,IAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,8BACE,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CACX,YAAY,CAAC,KAAK,EAAE,EACpB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,EACxC,QAAQ,IAAI,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAC7C,IAEA,KAAK,CACD,CACR,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport { isElement } from '../../../lib/react-is.js';\nimport { useEmotion, useStyles } from '../../../lib/renderEnvironment/index.js';\nimport { isKonturIcon } from '../../../lib/utils.js';\nimport type { InputProps } from '../Input.js';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../../lib/types/props.js';\nimport type { IconProps } from '../../../internal/icons2022/BaseIcon.js';\n\nimport { InputLayoutContext } from './InputLayoutContext.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\n\nexport interface InputLayoutAsideIconProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAsideIcon: React.FunctionComponent<InputLayoutAsideIconProps> = ({ icon = null, side }) => {\n const theme = React.useContext(ThemeContext);\n const { cx } = useEmotion();\n const stylesLayout = useStyles(getStylesLayout);\n const { focused, disabled, size } = React.useContext(InputLayoutContext);\n\n const sizes: Record<SizeProp, number> = {\n small: parseInt(theme.inputIconSizeSmall),\n medium: parseInt(theme.inputIconSizeMedium),\n large: parseInt(theme.inputIconSizeLarge),\n };\n const gaps: Record<SizeProp, number> = {\n small: parseInt(theme.inputIconGapSmall),\n medium: parseInt(theme.inputIconGapMedium),\n large: parseInt(theme.inputIconGapLarge),\n };\n\n let _icon = icon instanceof Function ? icon() : icon;\n if (isElement(icon) && isKonturIcon(icon)) {\n const iconProps = icon.props as IconProps;\n _icon = React.cloneElement(icon, {\n size: iconProps.size ?? sizes[size],\n } as IconProps);\n }\n\n const style: React.CSSProperties = {};\n if (side) {\n if (side === 'right') {\n style.marginLeft = gaps[size];\n } else {\n style.marginRight = gaps[size];\n }\n }\n\n return _icon ? (\n <span\n style={style}\n className={cx(\n stylesLayout.aside(),\n stylesLayout.icon(theme),\n focused && stylesLayout.iconFocus(theme),\n disabled && stylesLayout.iconDisabled(theme),\n )}\n >\n {_icon}\n </span>\n ) : null;\n};\n"]}
@@ -31,7 +31,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
31
31
  return c > 3 && r && Object.defineProperty(target, key, r), r;
32
32
  };
33
33
  import React from 'react';
34
- import { isElement } from 'react-is';
34
+ import { isElement } from '../../lib/react-is.js';
35
35
  import { isKonturIcon } from '../../lib/utils.js';
36
36
  import { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers.js';
37
37
  import * as LayoutEvents from '../../lib/LayoutEvents.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Kebab.js","sourceRoot":"","sources":["../../../components/Kebab/Kebab.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { AriaAttributes, HTMLAttributes, JSX } from 'react';\nimport React from 'react';\nimport { isElement } from 'react-is';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isKonturIcon } from '../../lib/utils.js';\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers.js';\nimport * as LayoutEvents from '../../lib/LayoutEvents.js';\nimport { KeyListener } from '../../lib/events/keyListener.js';\nimport type { PopupMenuCaptionProps, PopupMenuProps } from '../../internal/PopupMenu/index.js';\nimport { PopupMenu } from '../../internal/PopupMenu/index.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { PopupPositionsType } from '../../internal/Popup/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { IconProps } from '../../internal/icons2022/BaseIcon.js';\n\nimport { getStyles } from './Kebab.styles.js';\nimport { KebabIcon } from './KebabIcon.js';\n\nexport interface KebabProps\n extends Pick<AriaAttributes, 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>,\n CommonProps {\n /** Размер кнопки. */\n size?: SizeProp;\n\n /** Список доступных позиций выпадающего меню относительно кнопки.\n * @default ['bottom left', 'bottom right', 'top left', 'top right'].\n */\n positions?: PopupPositionsType[];\n\n /** Максимальная высота меню. */\n menuMaxHeight?: number | string;\n\n /** Блокирует кнопку. */\n disabled?: boolean;\n\n /** Отключает анимацию выпадающего меню. */\n disableAnimations?: boolean;\n\n /** Заменяет иконку кебаба у кнопки. */\n icon?: React.ReactNode;\n\n /** @ignore */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const KebabDataTids = {\n caption: 'Kebab__caption',\n} as const;\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n}\n\ntype DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'disableAnimations'>>;\n\n/**\n * Кебаб-меню содержит действия с объектом.\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n public static displayName = 'Kebab';\n\n public static defaultProps: DefaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(Kebab.defaultProps);\n\n public state: KebabState = {\n focusedByTab: false,\n anchor: null,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private keyListener!: KeyListener;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined, this.globalObject);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: theme.kebabMargin,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled } = this.props;\n const { positions, disableAnimations, onOpen, onClose } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props} {...getVisualStateDataAttributes({ disabled })}>\n <PopupMenu\n id={this.props.id}\n popupHasPin={false}\n preventIconsOffset={this.props.preventIconsOffset}\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={disableAnimations}\n menuMaxHeight={this.props.menuMaxHeight}\n onOpen={onOpen}\n onClose={onClose}\n popupMenuId={this.props.popupMenuId}\n aria-label={this.props['aria-label']}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled } = this.getProps();\n const size = this.size;\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n role=\"button\"\n data-tid={KebabDataTids.caption}\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={this.cx(\n this.styles.kebab(this.theme),\n size === 'small' && this.styles.kebabSmall(this.theme),\n size === 'medium' && this.styles.kebabMedium(this.theme),\n size === 'large' && this.styles.kebabLarge(this.theme),\n captionProps.opened && this.styles.opened(this.theme),\n disabled && this.styles.disabled(),\n this.state.focusedByTab && this.styles.focused(this.theme),\n )}\n aria-describedby={this.props['aria-describedby']}\n >\n {this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState({\n focusedByTab: !isOpened && restoreFocus,\n });\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n this.globalObject.requestAnimationFrame?.(() => {\n if (this.keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n const { icon = <KebabIcon /> } = this.getProps();\n\n if (isElement(icon) && isKonturIcon(icon)) {\n const iconProps = icon.props as IconProps;\n const sizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.kebabIconSizeSmall),\n medium: parseInt(this.theme.kebabIconSizeMedium),\n large: parseInt(this.theme.kebabIconSizeLarge),\n };\n\n return React.cloneElement(icon, {\n size: iconProps.size ?? sizes[this.size],\n color: iconProps.color ?? this.theme.kebabIconColor,\n } as IconProps);\n }\n\n return icon;\n }\n}\n"]}
1
+ {"version":3,"file":"Kebab.js","sourceRoot":"","sources":["../../../components/Kebab/Kebab.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { AriaAttributes, HTMLAttributes, JSX } from 'react';\nimport React from 'react';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { isElement } from '../../lib/react-is.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isKonturIcon } from '../../lib/utils.js';\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers.js';\nimport * as LayoutEvents from '../../lib/LayoutEvents.js';\nimport { KeyListener } from '../../lib/events/keyListener.js';\nimport type { PopupMenuCaptionProps, PopupMenuProps } from '../../internal/PopupMenu/index.js';\nimport { PopupMenu } from '../../internal/PopupMenu/index.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { PopupPositionsType } from '../../internal/Popup/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { IconProps } from '../../internal/icons2022/BaseIcon.js';\n\nimport { getStyles } from './Kebab.styles.js';\nimport { KebabIcon } from './KebabIcon.js';\n\nexport interface KebabProps\n extends Pick<AriaAttributes, 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>,\n CommonProps {\n /** Размер кнопки. */\n size?: SizeProp;\n\n /** Список доступных позиций выпадающего меню относительно кнопки.\n * @default ['bottom left', 'bottom right', 'top left', 'top right'].\n */\n positions?: PopupPositionsType[];\n\n /** Максимальная высота меню. */\n menuMaxHeight?: number | string;\n\n /** Блокирует кнопку. */\n disabled?: boolean;\n\n /** Отключает анимацию выпадающего меню. */\n disableAnimations?: boolean;\n\n /** Заменяет иконку кебаба у кнопки. */\n icon?: React.ReactNode;\n\n /** @ignore */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const KebabDataTids = {\n caption: 'Kebab__caption',\n} as const;\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n}\n\ntype DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'disableAnimations'>>;\n\n/**\n * Кебаб-меню содержит действия с объектом.\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n public static displayName = 'Kebab';\n\n public static defaultProps: DefaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(Kebab.defaultProps);\n\n public state: KebabState = {\n focusedByTab: false,\n anchor: null,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private keyListener!: KeyListener;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined, this.globalObject);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: theme.kebabMargin,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled } = this.props;\n const { positions, disableAnimations, onOpen, onClose } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props} {...getVisualStateDataAttributes({ disabled })}>\n <PopupMenu\n id={this.props.id}\n popupHasPin={false}\n preventIconsOffset={this.props.preventIconsOffset}\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={disableAnimations}\n menuMaxHeight={this.props.menuMaxHeight}\n onOpen={onOpen}\n onClose={onClose}\n popupMenuId={this.props.popupMenuId}\n aria-label={this.props['aria-label']}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled } = this.getProps();\n const size = this.size;\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n role=\"button\"\n data-tid={KebabDataTids.caption}\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={this.cx(\n this.styles.kebab(this.theme),\n size === 'small' && this.styles.kebabSmall(this.theme),\n size === 'medium' && this.styles.kebabMedium(this.theme),\n size === 'large' && this.styles.kebabLarge(this.theme),\n captionProps.opened && this.styles.opened(this.theme),\n disabled && this.styles.disabled(),\n this.state.focusedByTab && this.styles.focused(this.theme),\n )}\n aria-describedby={this.props['aria-describedby']}\n >\n {this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState({\n focusedByTab: !isOpened && restoreFocus,\n });\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n this.globalObject.requestAnimationFrame?.(() => {\n if (this.keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n const { icon = <KebabIcon /> } = this.getProps();\n\n if (isElement(icon) && isKonturIcon(icon)) {\n const iconProps = icon.props as IconProps;\n const sizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.kebabIconSizeSmall),\n medium: parseInt(this.theme.kebabIconSizeMedium),\n large: parseInt(this.theme.kebabIconSizeLarge),\n };\n\n return React.cloneElement(icon, {\n size: iconProps.size ?? sizes[this.size],\n color: iconProps.color ?? this.theme.kebabIconColor,\n } as IconProps);\n }\n\n return icon;\n }\n}\n"]}
@@ -11,19 +11,19 @@ export function getSafeWindow() {
11
11
  }
12
12
  export function getOwnerGlobalObject(element) {
13
13
  if (!element) {
14
- warning(true, "The 'element' argument is missing. This indicates incorrect type casting and may cause issues in iframes.");
14
+ warning(false, "The 'element' argument is missing. This indicates incorrect type casting and may cause issues in iframes.");
15
15
  return globalObject;
16
16
  }
17
17
  if (element.nodeType === Node.DOCUMENT_NODE && 'defaultView' in element) {
18
- warning(true, "The 'element' argument is 'document', but 'Element' was expected.");
18
+ warning(false, "The 'element' argument is 'document', but 'Element' was expected.");
19
19
  return element.defaultView;
20
20
  }
21
21
  if ('window' in element && element.window === element) {
22
- warning(true, "The 'element' argument is 'window', but 'Element' was expected.");
22
+ warning(false, "The 'element' argument is 'window', but 'Element' was expected.");
23
23
  return element;
24
24
  }
25
25
  if (!element.ownerDocument.defaultView) {
26
- warning(true, "The 'element.ownerDocument.defaultView' is missing. This is an unexpected edge case.");
26
+ warning(false, "The 'element.ownerDocument.defaultView' is missing. This is an unexpected edge case.");
27
27
  return globalObject;
28
28
  }
29
29
  return element.ownerDocument.defaultView;
@@ -1 +1 @@
1
- {"version":3,"file":"globalObject.js","sourceRoot":"","sources":["../../lib/globalObject.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAU9B,IAAM,YAAY,GAChB,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC;IACtC,CAAC,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC;IAC9C,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;AAE5B,MAAM,UAAU,SAAS,CAAC,GAAiB;IACzC,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,IAAI,EACJ,2GAA2G,CAC5G,CAAC;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,IAAI,aAAa,IAAI,OAAO,EAAE,CAAC;QACxE,OAAO,CAAC,IAAI,EAAE,mEAAmE,CAAC,CAAC;QACnF,OAAO,OAAO,CAAC,WAA2B,CAAC;IAC7C,CAAC;IAED,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACtD,OAAO,CAAC,IAAI,EAAE,iEAAiE,CAAC,CAAC;QACjF,OAAO,OAAuB,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,EAAE,sFAAsF,CAAC,CAAC;QACtG,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC;AAC3C,CAAC","sourcesContent":["import warning from 'warning';\n\nimport type { Nullable } from '../typings/utility-types.js';\n\ntype SafeTimeout = ReturnType<typeof setTimeout>;\ntype SafeInterval = ReturnType<typeof setInterval>;\nexport type SafeTimer = Nullable<SafeInterval | SafeTimeout | number>;\n\nexport type GlobalObject = Partial<typeof globalThis>;\n\nconst globalObject: GlobalObject =\n (typeof window === 'object' && window) ||\n (typeof globalThis === 'object' && globalThis) ||\n (typeof global === 'object' && global) ||\n Function('return this')();\n\nexport function isBrowser(obj: GlobalObject): obj is GlobalObject & Window {\n return !!obj && typeof obj.window !== 'undefined';\n}\n\nexport function getSafeWindow(): GlobalObject {\n return globalObject;\n}\n\nexport function getOwnerGlobalObject(element: Element): GlobalObject {\n if (!element) {\n warning(\n true,\n \"The 'element' argument is missing. This indicates incorrect type casting and may cause issues in iframes.\",\n );\n return globalObject;\n }\n\n if (element.nodeType === Node.DOCUMENT_NODE && 'defaultView' in element) {\n warning(true, \"The 'element' argument is 'document', but 'Element' was expected.\");\n return element.defaultView as GlobalObject;\n }\n\n if ('window' in element && element.window === element) {\n warning(true, \"The 'element' argument is 'window', but 'Element' was expected.\");\n return element as GlobalObject;\n }\n\n if (!element.ownerDocument.defaultView) {\n warning(true, \"The 'element.ownerDocument.defaultView' is missing. This is an unexpected edge case.\");\n return globalObject;\n }\n\n return element.ownerDocument.defaultView;\n}\n"]}
1
+ {"version":3,"file":"globalObject.js","sourceRoot":"","sources":["../../lib/globalObject.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAU9B,IAAM,YAAY,GAChB,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC;IACtC,CAAC,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC;IAC9C,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;AAE5B,MAAM,UAAU,SAAS,CAAC,GAAiB;IACzC,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,KAAK,EACL,2GAA2G,CAC5G,CAAC;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,IAAI,aAAa,IAAI,OAAO,EAAE,CAAC;QACxE,OAAO,CAAC,KAAK,EAAE,mEAAmE,CAAC,CAAC;QACpF,OAAO,OAAO,CAAC,WAA2B,CAAC;IAC7C,CAAC;IAED,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACtD,OAAO,CAAC,KAAK,EAAE,iEAAiE,CAAC,CAAC;QAClF,OAAO,OAAuB,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,EAAE,sFAAsF,CAAC,CAAC;QACvG,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC;AAC3C,CAAC","sourcesContent":["import warning from 'warning';\n\nimport type { Nullable } from '../typings/utility-types.js';\n\ntype SafeTimeout = ReturnType<typeof setTimeout>;\ntype SafeInterval = ReturnType<typeof setInterval>;\nexport type SafeTimer = Nullable<SafeInterval | SafeTimeout | number>;\n\nexport type GlobalObject = Partial<typeof globalThis>;\n\nconst globalObject: GlobalObject =\n (typeof window === 'object' && window) ||\n (typeof globalThis === 'object' && globalThis) ||\n (typeof global === 'object' && global) ||\n Function('return this')();\n\nexport function isBrowser(obj: GlobalObject): obj is GlobalObject & Window {\n return !!obj && typeof obj.window !== 'undefined';\n}\n\nexport function getSafeWindow(): GlobalObject {\n return globalObject;\n}\n\nexport function getOwnerGlobalObject(element: Element): GlobalObject {\n if (!element) {\n warning(\n false,\n \"The 'element' argument is missing. This indicates incorrect type casting and may cause issues in iframes.\",\n );\n return globalObject;\n }\n\n if (element.nodeType === Node.DOCUMENT_NODE && 'defaultView' in element) {\n warning(false, \"The 'element' argument is 'document', but 'Element' was expected.\");\n return element.defaultView as GlobalObject;\n }\n\n if ('window' in element && element.window === element) {\n warning(false, \"The 'element' argument is 'window', but 'Element' was expected.\");\n return element as GlobalObject;\n }\n\n if (!element.ownerDocument.defaultView) {\n warning(false, \"The 'element.ownerDocument.defaultView' is missing. This is an unexpected edge case.\");\n return globalObject;\n }\n\n return element.ownerDocument.defaultView;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { ComponentType, ElementType, ForwardRefExoticComponent, MemoExoticComponent, ReactElement } from 'react';
2
+ export declare const IS_REACT_19: boolean;
3
+ export declare const IS_REACT_20: boolean;
4
+ export declare const ForwardRef: symbol;
5
+ export declare const Memo: symbol;
6
+ export declare function isValidElementType(type: unknown): type is ElementType;
7
+ export declare function isMemo(object: unknown): object is MemoExoticComponent<ComponentType<typeof object>>;
8
+ export declare function isForwardRef(object: unknown): object is ForwardRefExoticComponent<ComponentType<typeof object>>;
9
+ export declare function isElement(object: unknown): object is ReactElement;
@@ -0,0 +1,93 @@
1
+ import React from 'react';
2
+ import warning from 'warning';
3
+ // This code supports React <= 18 and React 19. Ported from production builds:
4
+ // - https://app.unpkg.com/react-is@19.0.0/files/cjs/react-is.production.js
5
+ // - https://app.unpkg.com/react-is@18.3.1/files/cjs/react-is.production.min.js
6
+ export var IS_REACT_19 = /* @__PURE__ */ React.version.startsWith('19');
7
+ export var IS_REACT_20 = /* @__PURE__ */ React.version.startsWith('20');
8
+ if (IS_REACT_20) {
9
+ warning(false, 'React 20 detected. You must check and update this code for React 20 support. ' +
10
+ 'Check changes and add new warning for future React 21 here: ' +
11
+ 'https://github.com/facebook/react/commits/main/packages/react-is');
12
+ }
13
+ var REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for(IS_REACT_19 ? 'react.transitional.element' : 'react.element');
14
+ var REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for('react.portal');
15
+ var REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for('react.fragment');
16
+ var REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for('react.strict_mode');
17
+ var REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for('react.profiler');
18
+ var REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for('react.consumer');
19
+ var REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for('react.context');
20
+ var REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for('react.forward_ref');
21
+ var REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for('react.suspense');
22
+ var REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for('react.suspense_list');
23
+ var REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for('react.memo');
24
+ var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for('react.lazy');
25
+ var REACT_OFFSCREEN_TYPE = /* @__PURE__ */ Symbol.for('react.offscreen');
26
+ var REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for('react.client.reference');
27
+ export var ForwardRef = REACT_FORWARD_REF_TYPE;
28
+ export var Memo = REACT_MEMO_TYPE;
29
+ export function isValidElementType(type) {
30
+ return typeof type === 'string' ||
31
+ typeof type === 'function' ||
32
+ type === REACT_FRAGMENT_TYPE ||
33
+ type === REACT_PROFILER_TYPE ||
34
+ type === REACT_STRICT_MODE_TYPE ||
35
+ type === REACT_SUSPENSE_TYPE ||
36
+ type === REACT_SUSPENSE_LIST_TYPE ||
37
+ type === REACT_OFFSCREEN_TYPE ||
38
+ (typeof type === 'object' &&
39
+ type !== null &&
40
+ '$$typeof' in type &&
41
+ type !== null &&
42
+ (type.$$typeof === REACT_LAZY_TYPE ||
43
+ type.$$typeof === REACT_MEMO_TYPE ||
44
+ type.$$typeof === REACT_CONTEXT_TYPE ||
45
+ type.$$typeof === REACT_CONSUMER_TYPE ||
46
+ type.$$typeof === REACT_FORWARD_REF_TYPE ||
47
+ type.$$typeof === REACT_CLIENT_REFERENCE ||
48
+ (typeof type === 'object' && type !== null && 'getModuleId' in type && type.getModuleId !== undefined)))
49
+ ? !0
50
+ : !1;
51
+ }
52
+ function typeOf(object) {
53
+ if (typeof object === 'object' && object !== null && '$$typeof' in object) {
54
+ var $$typeof = object.$$typeof;
55
+ if ($$typeof === REACT_ELEMENT_TYPE) {
56
+ if ('type' in object) {
57
+ var type = object.type;
58
+ if (type === REACT_FRAGMENT_TYPE ||
59
+ type === REACT_PROFILER_TYPE ||
60
+ type === REACT_STRICT_MODE_TYPE ||
61
+ type === REACT_SUSPENSE_TYPE ||
62
+ type === REACT_SUSPENSE_LIST_TYPE) {
63
+ return type;
64
+ }
65
+ if (type !== null && typeof type === 'object' && '$$typeof' in type) {
66
+ var inner$$typeof = type.$$typeof;
67
+ if (inner$$typeof === REACT_CONTEXT_TYPE ||
68
+ inner$$typeof === REACT_FORWARD_REF_TYPE ||
69
+ inner$$typeof === REACT_LAZY_TYPE ||
70
+ inner$$typeof === REACT_MEMO_TYPE ||
71
+ inner$$typeof === REACT_CONSUMER_TYPE) {
72
+ return inner$$typeof;
73
+ }
74
+ }
75
+ }
76
+ return $$typeof;
77
+ }
78
+ if ($$typeof === REACT_PORTAL_TYPE) {
79
+ return $$typeof;
80
+ }
81
+ }
82
+ return undefined;
83
+ }
84
+ export function isMemo(object) {
85
+ return typeOf(object) === REACT_MEMO_TYPE;
86
+ }
87
+ export function isForwardRef(object) {
88
+ return typeOf(object) === REACT_FORWARD_REF_TYPE;
89
+ }
90
+ export function isElement(object) {
91
+ return (typeof object === 'object' && object !== null && '$$typeof' in object && object.$$typeof === REACT_ELEMENT_TYPE);
92
+ }
93
+ //# sourceMappingURL=react-is.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-is.js","sourceRoot":"","sources":["../../lib/react-is.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComponentType, ElementType, ForwardRefExoticComponent, MemoExoticComponent, ReactElement } from 'react';\nimport React from 'react';\nimport warning from 'warning';\n\n// This code supports React <= 18 and React 19. Ported from production builds:\n// - https://app.unpkg.com/react-is@19.0.0/files/cjs/react-is.production.js\n// - https://app.unpkg.com/react-is@18.3.1/files/cjs/react-is.production.min.js\n\nexport const IS_REACT_19 = /* @__PURE__ */ React.version.startsWith('19');\nexport const IS_REACT_20 = /* @__PURE__ */ React.version.startsWith('20');\n\nif (IS_REACT_20) {\n warning(\n false,\n 'React 20 detected. You must check and update this code for React 20 support. ' +\n 'Check changes and add new warning for future React 21 here: ' +\n 'https://github.com/facebook/react/commits/main/packages/react-is',\n );\n}\n\nconst REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for(IS_REACT_19 ? 'react.transitional.element' : 'react.element');\nconst REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for('react.portal');\nconst REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for('react.fragment');\nconst REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for('react.strict_mode');\nconst REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for('react.profiler');\nconst REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for('react.consumer');\nconst REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for('react.context');\nconst REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for('react.forward_ref');\nconst REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for('react.suspense');\nconst REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for('react.suspense_list');\nconst REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for('react.memo');\nconst REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for('react.lazy');\nconst REACT_OFFSCREEN_TYPE = /* @__PURE__ */ Symbol.for('react.offscreen');\nconst REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for('react.client.reference');\n\nexport const ForwardRef = REACT_FORWARD_REF_TYPE;\nexport const Memo = REACT_MEMO_TYPE;\n\nexport function isValidElementType(type: unknown): type is ElementType {\n return typeof type === 'string' ||\n typeof type === 'function' ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n type === REACT_OFFSCREEN_TYPE ||\n (typeof type === 'object' &&\n type !== null &&\n '$$typeof' in type &&\n type !== null &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n (typeof type === 'object' && type !== null && 'getModuleId' in type && type.getModuleId !== undefined)))\n ? !0\n : !1;\n}\n\nfunction typeOf(object: unknown): symbol | undefined {\n if (typeof object === 'object' && object !== null && '$$typeof' in object) {\n const $$typeof = object.$$typeof;\n\n if ($$typeof === REACT_ELEMENT_TYPE) {\n if ('type' in object) {\n const type = object.type;\n\n if (\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE\n ) {\n return type;\n }\n\n if (type !== null && typeof type === 'object' && '$$typeof' in type) {\n const inner$$typeof = type.$$typeof;\n if (\n inner$$typeof === REACT_CONTEXT_TYPE ||\n inner$$typeof === REACT_FORWARD_REF_TYPE ||\n inner$$typeof === REACT_LAZY_TYPE ||\n inner$$typeof === REACT_MEMO_TYPE ||\n inner$$typeof === REACT_CONSUMER_TYPE\n ) {\n return inner$$typeof;\n }\n }\n }\n\n return $$typeof;\n }\n\n if ($$typeof === REACT_PORTAL_TYPE) {\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\nexport function isMemo(object: unknown): object is MemoExoticComponent<ComponentType<typeof object>> {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\n\nexport function isForwardRef(object: unknown): object is ForwardRefExoticComponent<ComponentType<typeof object>> {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\n\nexport function isElement(object: unknown): object is ReactElement {\n return (\n typeof object === 'object' && object !== null && '$$typeof' in object && object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\n"]}
package/lib/utils.js CHANGED
@@ -14,8 +14,8 @@ var __extends = (this && this.__extends) || (function () {
14
14
  };
15
15
  })();
16
16
  import { isValidElement } from 'react';
17
- import { isForwardRef, isMemo } from 'react-is';
18
17
  import { isBrowser } from '../lib/globalObject.js';
18
+ import { isForwardRef, isMemo } from './react-is.js';
19
19
  export { delay } from './delay.js';
20
20
  export var emptyHandler = function () {
21
21
  /* noop */
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type React from 'react';\nimport { isValidElement } from 'react';\nimport { isForwardRef, isMemo } from 'react-is';\n\nimport type { GlobalObject } from '../lib/globalObject.js';\nimport { isBrowser } from '../lib/globalObject.js';\nimport type { CurrencyInputProps } from '../components/CurrencyInput/index.js';\nimport type { PasswordInputProps } from '../components/PasswordInput/index.js';\nimport type { InputProps } from '../components/Input/index.js';\nimport type { AutocompleteProps } from '../components/Autocomplete/index.js';\nimport type { FxInputProps } from '../components/FxInput/index.js';\nimport type { SelectProps } from '../components/Select/index.js';\nimport type { DropdownProps } from '../components/Dropdown/index.js';\nimport type { DropdownMenuProps } from '../components/DropdownMenu/index.js';\nimport type { ButtonProps } from '../components/Button/index.js';\nimport type { TooltipProps } from '../components/Tooltip/index.js';\nimport type { HintProps } from '../components/Hint/index.js';\n\nexport { delay } from './delay.js';\n\n// NOTE: Copy-paste from @types/react\nexport type Defaultize<P, D> = P extends any\n ? string extends keyof P\n ? P\n : Pick<P, Exclude<keyof P, keyof D>> &\n Partial<Pick<P, Extract<keyof P, keyof D>>> &\n Partial<Pick<D, Exclude<keyof D, keyof P>>>\n : never;\n\nexport type DefaultizeProps<C, P> = C extends { defaultProps: infer D } ? Defaultize<P, D> : P;\n\nexport type AnyObject = Record<string, unknown>;\n\nexport type NoInfer<T> = T extends infer U ? U : never;\n\nexport const emptyHandler = (): void => {\n /* noop */\n};\n\nexport class CancelationError extends Error {\n public code = 'CancelationError';\n}\n\nexport function taskWithDelay(task: () => void, ms: number): () => void {\n let cancelationToken: () => void = () => null;\n\n new Promise((resolve, reject) => {\n cancelationToken = reject;\n setTimeout(resolve, ms);\n })\n .then(task)\n .catch(() => null);\n\n return cancelationToken;\n}\n\nexport type FunctionWithParams<R = any> = (...args: any[]) => R;\n\nexport function isFunction<T>(x: T | FunctionWithParams): x is FunctionWithParams {\n return typeof x === 'function';\n}\n\nexport function isFunctionalComponent(Component: unknown): Component is React.ComponentType {\n return Boolean(typeof Component === 'function' && !(Component.prototype && Component.prototype.isReactComponent));\n}\n\nexport function isClassComponent(Component: unknown): Component is React.ComponentType {\n return Boolean(typeof Component === 'function' && Component.prototype && Component.prototype.isReactComponent);\n}\n\nexport function isIntrinsicElement(element: React.ReactElement<unknown>): boolean {\n return typeof element.type === 'string';\n}\n\nexport function isRefableElement(element: React.ReactElement<unknown>): boolean {\n return (\n Boolean(isIntrinsicElement(element) || isClassComponent(element.type) || isForwardRef(element)) || isMemo(element)\n );\n}\n\nexport function escapeRegExpSpecChars(s: string): string {\n return s.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nexport const getRandomID = (): string => Math.random().toString(16).slice(2);\n\nexport const isExternalLink = (link: string, globalObject: GlobalObject): boolean => {\n return isBrowser(globalObject) && new RegExp(`^(https?:)?//(?!${globalObject.location.host})\\\\S+`, 'gi').test(link);\n};\n\n/**\n * Check if the given ReactNode is an element of the specified ReactUI component\n */\nexport const isReactUINode = (componentName: string, node: React.ReactNode): boolean => {\n if (isValidElement(node)) {\n return (\n Object.prototype.hasOwnProperty.call(node.type, '__KONTUR_REACT_UI__') &&\n // @ts-expect-error: React doesn't know about existence of __KONTUR_REACT_UI__.\n node.type.__KONTUR_REACT_UI__ === componentName\n );\n }\n\n return false;\n};\n\nconst KB = 1024;\nconst UNITS = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\nconst calculateDecimals = (decimals: number) => {\n if (decimals < 0) {\n return 0;\n }\n\n return 0;\n};\n\nexport const formatBytes = (bytes: number, decimals = 2): string | null => {\n if (bytes === 0) {\n return '0 Bytes';\n }\n\n if (!bytes) {\n return null;\n }\n\n const calculatedDecimals = calculateDecimals(decimals);\n\n const i = Math.floor(Math.log2(bytes) / Math.log2(KB));\n const formattedBytes = parseFloat((bytes / Math.pow(KB, i)).toFixed(calculatedDecimals));\n\n return `${formattedBytes} ${UNITS[i]}`;\n};\n\n/**\n * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента\n *\n * @param value Значение, которое нужно проверить и исключить из него типы\n * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false\n */\nexport const isNonNullable = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n\n/**\n * Checks if the value `null` or `undefined`.\n *\n * @param value Value to check for `null` and `undefined`.\n * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.\n */\nexport const isNullable = (value: unknown): value is null | undefined => {\n return value === null || value === undefined;\n};\n\n/**\n * Creates a function that checks if the given `child`\n * is an instance of some component specified by `name`.\n *\n * @param name Component name for which function will be created.\n * @returns A function that checks if the given `child` is an instance of the component specified by `name`.\n */\nexport const isReactUIComponent = <P = any>(name: string) => {\n return (child: React.ReactNode): child is React.ReactElement<P> => {\n // @ts-expect-error: Property `type` doesn't exist on type `React.ReactNode`, but exists on type `React.ReactElement` meanwhile `React.ReactElement` is not compatible with `React` `children` type.\n return child?.type?.__KONTUR_REACT_UI__ === name;\n };\n};\n\n/**\n * Checks if a component instance is a ReactUI component with the given name.\n *\n * @typeParam T Expected ReactUI component type.\n * @param instance Component instance.\n * @param componentName ReactUI component name.\n * @returns `true` if it matches, otherwise `false`.\n */\nexport const isReactUIInstance = <T extends React.Component>(\n instance: React.Component,\n componentName: string,\n): instance is T => {\n const constructor = instance?.constructor;\n return '__KONTUR_REACT_UI__' in constructor && constructor.__KONTUR_REACT_UI__ === componentName;\n};\n\n/**\n * Extracts all data attributes from props and returns them as well as props.\n *\n * @param props Props object to extract data attributes from.\n * @returns Separated data attributes and all other props.\n */\nexport const extractDataProps = <T extends Record<string, unknown>>(\n props: T,\n): { dataProps: Record<string, unknown>; restWithoutDataProps: Record<string, unknown> } => {\n const dataProps: Record<string, any> = {};\n const restWithoutDataProps: Record<string, any> = {};\n\n Object.entries(props).map(([name, value]) => {\n if (name.startsWith('data-')) {\n return (dataProps[name] = value);\n }\n\n return (restWithoutDataProps[name] = value);\n });\n\n return { dataProps, restWithoutDataProps };\n};\n\n/**\n * Basically `.startsWith` for arrays.\n *\n * @param searchKeys Array of strings to test against `inputString`.\n * @param inputString String on which search will be performed.\n * @returns `true` if `inputString` starts with one of keys, else `false`.\n */\nexport const startsWithOneOf = (searchKeys: string[], inputString: string): boolean => {\n const keyIndex = searchKeys.findIndex((key) => {\n return inputString.startsWith(key);\n });\n\n return keyIndex >= 0;\n};\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\nexport const isInput = isReactUIComponent<InputProps>('Input');\nexport const isFxInput = isReactUIComponent<FxInputProps>('FxInput');\nexport const isAutocomplete = isReactUIComponent<AutocompleteProps>('Autocomplete');\nexport const isPasswordInput = isReactUIComponent<PasswordInputProps>('PasswordInput');\nexport const isCurrencyInput = isReactUIComponent<CurrencyInputProps>('CurrencyInput');\nexport const isSelect = isReactUIComponent<SelectProps<unknown, unknown>>('Select');\nexport const isDropdown = isReactUIComponent<DropdownProps>('Dropdown');\nexport const isDropdownMenu = isReactUIComponent<DropdownMenuProps>('DropdownMenu');\nexport const isHint = isReactUIComponent<HintProps>('Hint');\nexport const isTooltip = isReactUIComponent<TooltipProps>('Tooltip');\n\nexport const isKonturIcon = (icon: React.ReactElement): boolean => {\n return Object.prototype.hasOwnProperty.call(icon?.type, '__KONTUR_ICON__');\n};\n\nexport function clickOutside(eventType: 'touchstart' | 'mousedown' | 'pointerup' = 'mousedown'): void {\n const event = document.createEvent('HTMLEvents');\n event.initEvent(eventType, true, true);\n document.body.dispatchEvent(event);\n}\n\nexport function isElement(el: unknown): el is Element {\n return !!el && typeof el === 'object' && 'nodeType' in el && el.nodeType === Node.ELEMENT_NODE;\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type React from 'react';\nimport { isValidElement } from 'react';\n\nimport type { GlobalObject } from '../lib/globalObject.js';\nimport { isBrowser } from '../lib/globalObject.js';\nimport type { CurrencyInputProps } from '../components/CurrencyInput/index.js';\nimport type { PasswordInputProps } from '../components/PasswordInput/index.js';\nimport type { InputProps } from '../components/Input/index.js';\nimport type { AutocompleteProps } from '../components/Autocomplete/index.js';\nimport type { FxInputProps } from '../components/FxInput/index.js';\nimport type { SelectProps } from '../components/Select/index.js';\nimport type { DropdownProps } from '../components/Dropdown/index.js';\nimport type { DropdownMenuProps } from '../components/DropdownMenu/index.js';\nimport type { ButtonProps } from '../components/Button/index.js';\nimport type { TooltipProps } from '../components/Tooltip/index.js';\nimport type { HintProps } from '../components/Hint/index.js';\n\nimport { isForwardRef, isMemo } from './react-is.js';\n\nexport { delay } from './delay.js';\n\n// NOTE: Copy-paste from @types/react\nexport type Defaultize<P, D> = P extends any\n ? string extends keyof P\n ? P\n : Pick<P, Exclude<keyof P, keyof D>> &\n Partial<Pick<P, Extract<keyof P, keyof D>>> &\n Partial<Pick<D, Exclude<keyof D, keyof P>>>\n : never;\n\nexport type DefaultizeProps<C, P> = C extends { defaultProps: infer D } ? Defaultize<P, D> : P;\n\nexport type AnyObject = Record<string, unknown>;\n\nexport type NoInfer<T> = T extends infer U ? U : never;\n\nexport const emptyHandler = (): void => {\n /* noop */\n};\n\nexport class CancelationError extends Error {\n public code = 'CancelationError';\n}\n\nexport function taskWithDelay(task: () => void, ms: number): () => void {\n let cancelationToken: () => void = () => null;\n\n new Promise((resolve, reject) => {\n cancelationToken = reject;\n setTimeout(resolve, ms);\n })\n .then(task)\n .catch(() => null);\n\n return cancelationToken;\n}\n\nexport type FunctionWithParams<R = any> = (...args: any[]) => R;\n\nexport function isFunction<T>(x: T | FunctionWithParams): x is FunctionWithParams {\n return typeof x === 'function';\n}\n\nexport function isFunctionalComponent(Component: unknown): Component is React.ComponentType {\n return Boolean(typeof Component === 'function' && !(Component.prototype && Component.prototype.isReactComponent));\n}\n\nexport function isClassComponent(Component: unknown): Component is React.ComponentType {\n return Boolean(typeof Component === 'function' && Component.prototype && Component.prototype.isReactComponent);\n}\n\nexport function isIntrinsicElement(element: React.ReactElement<unknown>): boolean {\n return typeof element.type === 'string';\n}\n\nexport function isRefableElement(element: React.ReactElement<unknown>): boolean {\n return (\n Boolean(isIntrinsicElement(element) || isClassComponent(element.type) || isForwardRef(element)) || isMemo(element)\n );\n}\n\nexport function escapeRegExpSpecChars(s: string): string {\n return s.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nexport const getRandomID = (): string => Math.random().toString(16).slice(2);\n\nexport const isExternalLink = (link: string, globalObject: GlobalObject): boolean => {\n return isBrowser(globalObject) && new RegExp(`^(https?:)?//(?!${globalObject.location.host})\\\\S+`, 'gi').test(link);\n};\n\n/**\n * Check if the given ReactNode is an element of the specified ReactUI component\n */\nexport const isReactUINode = (componentName: string, node: React.ReactNode): boolean => {\n if (isValidElement(node)) {\n return (\n Object.prototype.hasOwnProperty.call(node.type, '__KONTUR_REACT_UI__') &&\n // @ts-expect-error: React doesn't know about existence of __KONTUR_REACT_UI__.\n node.type.__KONTUR_REACT_UI__ === componentName\n );\n }\n\n return false;\n};\n\nconst KB = 1024;\nconst UNITS = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\nconst calculateDecimals = (decimals: number) => {\n if (decimals < 0) {\n return 0;\n }\n\n return 0;\n};\n\nexport const formatBytes = (bytes: number, decimals = 2): string | null => {\n if (bytes === 0) {\n return '0 Bytes';\n }\n\n if (!bytes) {\n return null;\n }\n\n const calculatedDecimals = calculateDecimals(decimals);\n\n const i = Math.floor(Math.log2(bytes) / Math.log2(KB));\n const formattedBytes = parseFloat((bytes / Math.pow(KB, i)).toFixed(calculatedDecimals));\n\n return `${formattedBytes} ${UNITS[i]}`;\n};\n\n/**\n * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента\n *\n * @param value Значение, которое нужно проверить и исключить из него типы\n * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false\n */\nexport const isNonNullable = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n\n/**\n * Checks if the value `null` or `undefined`.\n *\n * @param value Value to check for `null` and `undefined`.\n * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.\n */\nexport const isNullable = (value: unknown): value is null | undefined => {\n return value === null || value === undefined;\n};\n\n/**\n * Creates a function that checks if the given `child`\n * is an instance of some component specified by `name`.\n *\n * @param name Component name for which function will be created.\n * @returns A function that checks if the given `child` is an instance of the component specified by `name`.\n */\nexport const isReactUIComponent = <P = any>(name: string) => {\n return (child: React.ReactNode): child is React.ReactElement<P> => {\n // @ts-expect-error: Property `type` doesn't exist on type `React.ReactNode`, but exists on type `React.ReactElement` meanwhile `React.ReactElement` is not compatible with `React` `children` type.\n return child?.type?.__KONTUR_REACT_UI__ === name;\n };\n};\n\n/**\n * Checks if a component instance is a ReactUI component with the given name.\n *\n * @typeParam T Expected ReactUI component type.\n * @param instance Component instance.\n * @param componentName ReactUI component name.\n * @returns `true` if it matches, otherwise `false`.\n */\nexport const isReactUIInstance = <T extends React.Component>(\n instance: React.Component,\n componentName: string,\n): instance is T => {\n const constructor = instance?.constructor;\n return '__KONTUR_REACT_UI__' in constructor && constructor.__KONTUR_REACT_UI__ === componentName;\n};\n\n/**\n * Extracts all data attributes from props and returns them as well as props.\n *\n * @param props Props object to extract data attributes from.\n * @returns Separated data attributes and all other props.\n */\nexport const extractDataProps = <T extends Record<string, unknown>>(\n props: T,\n): { dataProps: Record<string, unknown>; restWithoutDataProps: Record<string, unknown> } => {\n const dataProps: Record<string, any> = {};\n const restWithoutDataProps: Record<string, any> = {};\n\n Object.entries(props).map(([name, value]) => {\n if (name.startsWith('data-')) {\n return (dataProps[name] = value);\n }\n\n return (restWithoutDataProps[name] = value);\n });\n\n return { dataProps, restWithoutDataProps };\n};\n\n/**\n * Basically `.startsWith` for arrays.\n *\n * @param searchKeys Array of strings to test against `inputString`.\n * @param inputString String on which search will be performed.\n * @returns `true` if `inputString` starts with one of keys, else `false`.\n */\nexport const startsWithOneOf = (searchKeys: string[], inputString: string): boolean => {\n const keyIndex = searchKeys.findIndex((key) => {\n return inputString.startsWith(key);\n });\n\n return keyIndex >= 0;\n};\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\nexport const isInput = isReactUIComponent<InputProps>('Input');\nexport const isFxInput = isReactUIComponent<FxInputProps>('FxInput');\nexport const isAutocomplete = isReactUIComponent<AutocompleteProps>('Autocomplete');\nexport const isPasswordInput = isReactUIComponent<PasswordInputProps>('PasswordInput');\nexport const isCurrencyInput = isReactUIComponent<CurrencyInputProps>('CurrencyInput');\nexport const isSelect = isReactUIComponent<SelectProps<unknown, unknown>>('Select');\nexport const isDropdown = isReactUIComponent<DropdownProps>('Dropdown');\nexport const isDropdownMenu = isReactUIComponent<DropdownMenuProps>('DropdownMenu');\nexport const isHint = isReactUIComponent<HintProps>('Hint');\nexport const isTooltip = isReactUIComponent<TooltipProps>('Tooltip');\n\nexport const isKonturIcon = (icon: React.ReactElement): boolean => {\n return Object.prototype.hasOwnProperty.call(icon?.type, '__KONTUR_ICON__');\n};\n\nexport function clickOutside(eventType: 'touchstart' | 'mousedown' | 'pointerup' = 'mousedown'): void {\n const event = document.createEvent('HTMLEvents');\n event.initEvent(eventType, true, true);\n document.body.dispatchEvent(event);\n}\n\nexport function isElement(el: unknown): el is Element {\n return !!el && typeof el === 'object' && 'nodeType' in el && el.nodeType === Node.ELEMENT_NODE;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui",
3
- "version": "6.0.0-beta.3",
3
+ "version": "6.0.0-beta.4",
4
4
  "description": "UI Components",
5
5
  "sideEffects": false,
6
6
  "homepage": "https://tech.skbkontur.ru/kontur-ui",
@@ -262,7 +262,7 @@
262
262
  "dependencies": {
263
263
  "@babel/runtime": "^7.24.6",
264
264
  "@emotion/css": "^11.11.2",
265
- "@skbkontur/colors": "2.1.1",
265
+ "@skbkontur/colors": "^2.1.1",
266
266
  "@skbkontur/react-imask": "^7.6.5",
267
267
  "eventemitter3": "^5.0.1",
268
268
  "invariant": "^2.2.4",
@@ -273,7 +273,6 @@
273
273
  "normalize-wheel": "^1.0.1",
274
274
  "react-clientside-effect": "^1.2.6",
275
275
  "react-docgen": "7.0.0",
276
- "react-is": ">=17.0.2",
277
276
  "react-transition-group": "^4.4.5",
278
277
  "shallowequal": "^1.1.0",
279
278
  "stylis-plugin-extra-scope": "^0.3.0",
@@ -312,7 +311,6 @@
312
311
  "@types/lodash.throttle": "^4.1.6",
313
312
  "@types/react": "19.2.7",
314
313
  "@types/react-dom": "19.2.3",
315
- "@types/react-is": "^19.2.0",
316
314
  "@types/react-transition-group": "^4.4.4",
317
315
  "@types/shallowequal": "^1.1.1",
318
316
  "@types/warning": "^3.0.0",