@skbkontur/react-ui 5.4.7-7ccf0.0 → 5.4.7-a27a4.0
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.
- package/cjs/components/Button/Button.d.ts +1 -0
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Calendar/Calendar.d.ts +1 -1
- package/cjs/components/Calendar/Calendar.js.map +1 -1
- package/cjs/components/DateInput/DateFragmentsView.d.ts +2 -2
- package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.d.ts +2 -2
- package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePickerContext.d.ts +3 -3
- package/cjs/components/DateRangePicker/DateRangePickerContext.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +4 -4
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js +3 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.d.ts +1 -1
- package/cjs/components/FileUploader/FileUploaderFile.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoaderView.d.ts +3 -2
- package/cjs/components/GlobalLoader/GlobalLoaderView.js +49 -50
- package/cjs/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +2 -2
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayout.d.ts +3 -1
- package/cjs/components/Input/InputLayout/InputLayout.js +2 -1
- package/cjs/components/Input/InputLayout/InputLayout.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +6 -4
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +1 -1
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +1 -1
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -1
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +1 -1
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/cjs/components/MaskedInput/FixedIMaskInput.js +3 -1
- package/cjs/components/MaskedInput/FixedIMaskInput.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.js +2 -2
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.d.ts +1 -1
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/Modal/Modal.d.ts +4 -1
- package/cjs/components/Modal/Modal.js +8 -3
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalBody.d.ts +2 -2
- package/cjs/components/Modal/ModalBody.js.map +1 -1
- package/cjs/components/Paging/Paging.d.ts +2 -2
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.d.ts +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -2
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/ResponsiveLayout/decorator.d.ts +0 -3
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +1 -1
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +5 -2
- package/cjs/components/SidePage/SidePage.js +9 -3
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePageFooter.d.ts +1 -1
- package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.d.ts +1 -1
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/SingleToast/SingleToast.d.ts +1 -1
- package/cjs/components/Sticky/Sticky.js +6 -2
- package/cjs/components/Sticky/Sticky.js.map +1 -1
- package/cjs/components/Tabs/Tabs.d.ts +1 -1
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Token/TokenView.d.ts +2 -1
- package/cjs/components/Token/TokenView.js +4 -4
- package/cjs/components/Token/TokenView.js.map +1 -1
- package/cjs/components/TokenInput/TextWidthHelper.js +3 -1
- package/cjs/components/TokenInput/TextWidthHelper.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.js +14 -7
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +4 -4
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/hooks/useDrop.js +1 -1
- package/cjs/hooks/useDrop.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.js +3 -2
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +3 -6
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +84 -83
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
- package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +1 -1
- package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +11 -12
- package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -1
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.d.ts +5 -6
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js +28 -23
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js.map +1 -1
- package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.d.ts +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +2 -2
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/Menu/Menu.js +6 -2
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/Menu/MenuNavigation.d.ts +1 -1
- package/cjs/internal/Menu/MenuNavigation.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +1 -0
- package/cjs/internal/MobilePopup/MobilePopup.js +9 -1
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/Popup/Popup.js +2 -4
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js +9 -3
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.d.ts +2 -2
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/TextWidthHelper/TextWidthHelper.js +3 -1
- package/cjs/internal/TextWidthHelper/TextWidthHelper.js.map +1 -1
- package/cjs/internal/ThemePlayground/FxInputPlayground.d.ts +1 -1
- package/cjs/internal/ThemePlayground/FxInputPlayground.js.map +1 -1
- package/cjs/lib/dom/getDOMRect.d.ts +1 -1
- package/cjs/lib/dom/getDOMRect.js +3 -1
- package/cjs/lib/dom/getDOMRect.js.map +1 -1
- package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +1 -1
- package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js.map +1 -1
- package/cjs/lib/forwardRefAndName.d.ts +3 -2
- package/cjs/lib/forwardRefAndName.js +2 -1
- package/cjs/lib/forwardRefAndName.js.map +1 -1
- package/cjs/lib/getElementRef.d.ts +5 -0
- package/cjs/lib/getElementRef.js +16 -0
- package/cjs/lib/getElementRef.js.map +1 -0
- package/cjs/lib/locale/decorators.d.ts +0 -3
- package/cjs/lib/mergeRefs.d.ts +2 -3
- package/cjs/lib/mergeRefs.js +1 -1
- package/cjs/lib/mergeRefs.js.map +1 -1
- package/cjs/lib/reactGetTextContent.js +6 -1
- package/cjs/lib/reactGetTextContent.js.map +1 -1
- package/cjs/lib/renderEnvironment/RenderEnvironmentDecorator.d.ts +0 -3
- package/cjs/lib/rootNode/getRootNode.js +1 -24
- package/cjs/lib/rootNode/getRootNode.js.map +1 -1
- package/cjs/lib/rootNode/rootNodeDecorator.d.ts +0 -3
- package/cjs/lib/size/SizeDecorator.d.ts +0 -3
- package/cjs/lib/types/polymorphic-component.d.ts +2 -1
- package/cjs/lib/types/polymorphic-component.js.map +1 -1
- package/cjs/lib/utils.d.ts +4 -3
- package/cjs/lib/utils.js +4 -3
- package/cjs/lib/utils.js.map +1 -1
- package/cjs/lib/withClassWrapper.d.ts +3 -8
- package/components/Button/Button/Button.js +1 -1
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +1 -0
- package/components/Calendar/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +1 -1
- package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
- package/components/DateInput/DateFragmentsView.d.ts +2 -2
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +1 -1
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.d.ts +2 -2
- package/components/DateRangePicker/DateRangePickerContext/DateRangePickerContext.js.map +1 -1
- package/components/DateRangePicker/DateRangePickerContext.d.ts +3 -3
- package/components/DateRangePicker/DateRangePickerInput/DateRangePickerInput.js.map +1 -1
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +4 -4
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/FileUploader/FileUploader.d.ts +1 -1
- package/components/FileUploader/FileUploaderFile/FileUploaderFile.js +1 -1
- package/components/FileUploader/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js +5 -4
- package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js.map +1 -1
- package/components/GlobalLoader/GlobalLoaderView.d.ts +3 -2
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +2 -2
- package/components/Input/InputLayout/InputLayout/InputLayout.js +4 -2
- package/components/Input/InputLayout/InputLayout/InputLayout.js.map +1 -1
- package/components/Input/InputLayout/InputLayout.d.ts +3 -1
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +2 -2
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +1 -1
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -1
- package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js +1 -1
- package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput/MaskedInput.js +2 -2
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +1 -1
- package/components/Modal/Modal/Modal.js +7 -3
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/Modal.d.ts +4 -1
- package/components/Modal/ModalBody/ModalBody.js.map +1 -1
- package/components/Modal/ModalBody.d.ts +2 -2
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +2 -2
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +1 -1
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +2 -2
- package/components/ResponsiveLayout/decorator.d.ts +0 -3
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +1 -1
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +1 -1
- package/components/SidePage/SidePage/SidePage.js +7 -3
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +5 -2
- package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageFooter.d.ts +1 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/SidePage/SidePageHeader.d.ts +1 -1
- package/components/SingleToast/SingleToast.d.ts +1 -1
- package/components/Sticky/Sticky/Sticky.js +2 -2
- package/components/Sticky/Sticky/Sticky.js.map +1 -1
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +1 -1
- package/components/Token/TokenView/TokenView.js +6 -4
- package/components/Token/TokenView/TokenView.js.map +1 -1
- package/components/Token/TokenView.d.ts +2 -1
- package/components/TokenInput/TextWidthHelper/TextWidthHelper.js +1 -1
- package/components/TokenInput/TextWidthHelper/TextWidthHelper.js.map +1 -1
- package/components/TokenInput/TokenInput/TokenInput.js +5 -5
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +4 -4
- package/hooks/useDrop/useDrop.js +1 -1
- package/hooks/useDrop/useDrop.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +3 -2
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +2 -2
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +3 -6
- package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +2 -3
- package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -1
- package/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +1 -1
- package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js +7 -4
- package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js.map +1 -1
- package/internal/FocusControlWrapper/FocusControlWrapper.d.ts +5 -6
- package/internal/IgnoreLayerClick/IgnoreLayerClick.d.ts +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +2 -2
- package/internal/Menu/Menu/Menu.js +2 -2
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/MenuNavigation/MenuNavigation.js.map +1 -1
- package/internal/Menu/MenuNavigation.d.ts +1 -1
- package/internal/MobilePopup/MobilePopup/MobilePopup.js +5 -2
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +1 -0
- package/internal/Popup/Popup/Popup.js +2 -2
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -3
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +1 -1
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +2 -2
- package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js +1 -1
- package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js.map +1 -1
- package/internal/ThemePlayground/FxInputPlayground/FxInputPlayground.js.map +1 -1
- package/internal/ThemePlayground/FxInputPlayground.d.ts +1 -1
- package/lib/dom/getDOMRect/getDOMRect.js.map +1 -1
- package/lib/dom/getDOMRect.d.ts +1 -1
- package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js.map +1 -1
- package/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +1 -1
- package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -1
- package/lib/forwardRefAndName.d.ts +3 -2
- package/lib/getElementRef/getElementRef.js +11 -0
- package/lib/getElementRef/getElementRef.js.map +1 -0
- package/lib/getElementRef/package.json +6 -0
- package/lib/getElementRef.d.ts +5 -0
- package/lib/locale/decorators.d.ts +0 -3
- package/lib/mergeRefs/mergeRefs.js.map +1 -1
- package/lib/mergeRefs.d.ts +2 -3
- package/lib/reactGetTextContent/reactGetTextContent.js +1 -1
- package/lib/reactGetTextContent/reactGetTextContent.js.map +1 -1
- package/lib/renderEnvironment/RenderEnvironmentDecorator.d.ts +0 -3
- package/lib/rootNode/getRootNode/getRootNode.js +0 -15
- package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
- package/lib/rootNode/rootNodeDecorator.d.ts +0 -3
- package/lib/size/SizeDecorator.d.ts +0 -3
- package/lib/types/polymorphic-component/polymorphic-component.js.map +1 -1
- package/lib/types/polymorphic-component.d.ts +2 -1
- package/lib/utils/utils.js +2 -2
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +4 -3
- package/lib/withClassWrapper.d.ts +3 -8
- package/package.json +10 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_renderEnvironment","_forwardRefAndName","_Input","_CommonWrapper","_InputLayoutAside","_InputLayoutContext","_InputLayout","InputLayout","exports","forwardRefAndName","props","ref","stylesLayout","useStyles","getStylesLayout","leftIcon","rightIcon","prefix","suffix","labelProps","context","children","_props$tag","tag","_context","_extends2","default","InputLayoutContextDefault","Tag","createElement","InputLayoutContext","Provider","value","CommonWrapper","InputDataTids","root","InputLayoutAside","icon","text","side","className","input"],"sources":["InputLayout.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useStyles } from '../../../lib/renderEnvironment';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport type { InputProps } from '../Input';\nimport { InputDataTids } from '../Input';\nimport type { CommonProps } from '../../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../../internal/CommonWrapper';\n\nimport { InputLayoutAside } from './InputLayoutAside';\nimport type { InputLayoutContextProps } from './InputLayoutContext';\nimport { InputLayoutContext, InputLayoutContextDefault } from './InputLayoutContext';\nimport { getStylesLayout } from './InputLayout.styles';\n\ntype InputLayoutRootFromInputProps = Pick<InputProps, 'leftIcon' | 'rightIcon' | 'prefix' | 'suffix'>;\n\nexport interface InputLayoutRootProps extends InputLayoutRootFromInputProps, CommonProps {\n labelProps: React.LabelHTMLAttributes<HTMLLabelElement
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_renderEnvironment","_forwardRefAndName","_Input","_CommonWrapper","_mergeRefs","_InputLayoutAside","_InputLayoutContext","_InputLayout","InputLayout","exports","forwardRefAndName","props","ref","stylesLayout","useStyles","getStylesLayout","leftIcon","rightIcon","prefix","suffix","labelProps","context","children","_props$tag","tag","_context","_extends2","default","InputLayoutContextDefault","Tag","createElement","InputLayoutContext","Provider","value","CommonWrapper","InputDataTids","root","mergeRefs","InputLayoutAside","icon","text","side","className","input"],"sources":["InputLayout.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useStyles } from '../../../lib/renderEnvironment';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport type { InputProps } from '../Input';\nimport { InputDataTids } from '../Input';\nimport type { CommonProps } from '../../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../../internal/CommonWrapper';\nimport { mergeRefs } from '../../../lib/mergeRefs';\n\nimport { InputLayoutAside } from './InputLayoutAside';\nimport type { InputLayoutContextProps } from './InputLayoutContext';\nimport { InputLayoutContext, InputLayoutContextDefault } from './InputLayoutContext';\nimport { getStylesLayout } from './InputLayout.styles';\n\ntype InputLayoutRootFromInputProps = Pick<InputProps, 'leftIcon' | 'rightIcon' | 'prefix' | 'suffix'>;\n\nexport interface InputLayoutRootProps extends InputLayoutRootFromInputProps, CommonProps {\n labelProps: React.LabelHTMLAttributes<HTMLLabelElement> & { ref?: React.Ref<HTMLLabelElement> };\n context: Partial<InputLayoutContextProps>;\n tag?: 'label' | 'span';\n}\n\nexport const InputLayout = forwardRefAndName<HTMLLabelElement, InputLayoutRootProps>('InputLayout', (props, ref) => {\n const stylesLayout = useStyles(getStylesLayout);\n const { leftIcon, rightIcon, prefix, suffix, labelProps, context, children, tag = 'label' } = props;\n const _context: InputLayoutContextProps = { ...InputLayoutContextDefault, ...context };\n const Tag = tag;\n\n return (\n <InputLayoutContext.Provider value={_context}>\n <CommonWrapper {...props}>\n <Tag data-tid={InputDataTids.root} {...labelProps} ref={mergeRefs(ref, labelProps.ref)}>\n <InputLayoutAside icon={leftIcon} text={prefix} side=\"left\" />\n <span className={stylesLayout.input()}>{children}</span>\n <InputLayoutAside icon={rightIcon} text={suffix} side=\"right\" />\n </Tag>\n </CommonWrapper>\n </InputLayoutContext.Provider>\n );\n});\n"],"mappings":"mPAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;;AAEA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;;AAEA,IAAAG,MAAA,GAAAH,OAAA;;AAEA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;;AAEA,IAAAM,iBAAA,GAAAN,OAAA;;AAEA,IAAAO,mBAAA,GAAAP,OAAA;AACA,IAAAQ,YAAA,GAAAR,OAAA;;;;;;;;;;AAUO,IAAMS,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,IAAAE,oCAAiB,EAAyC,aAAa,EAAE,UAACC,KAAK,EAAEC,GAAG,EAAK;EAClH,IAAMC,YAAY,GAAG,IAAAC,4BAAS,EAACC,4BAAe,CAAC;EAC/C,IAAQC,QAAQ,GAA8EL,KAAK,CAA3FK,QAAQ,CAAEC,SAAS,GAAmEN,KAAK,CAAjFM,SAAS,CAAEC,MAAM,GAA2DP,KAAK,CAAtEO,MAAM,CAAEC,MAAM,GAAmDR,KAAK,CAA9DQ,MAAM,CAAEC,UAAU,GAAuCT,KAAK,CAAtDS,UAAU,CAAEC,OAAO,GAA8BV,KAAK,CAA1CU,OAAO,CAAEC,QAAQ,GAAoBX,KAAK,CAAjCW,QAAQ,CAAAC,UAAA,GAAoBZ,KAAK,CAAvBa,GAAG,CAAHA,GAAG,GAAAD,UAAA,cAAG,OAAO,GAAAA,UAAA;EACzF,IAAME,QAAiC,OAAAC,SAAA,CAAAC,OAAA,MAAQC,6CAAyB,EAAKP,OAAO,CAAE;EACtF,IAAMQ,GAAG,GAAGL,GAAG;;EAEf;IACE3B,MAAA,CAAA8B,OAAA,CAAAG,aAAA,CAACxB,mBAAA,CAAAyB,kBAAkB,CAACC,QAAQ,IAACC,KAAK,EAAER,QAAS;IAC3C5B,MAAA,CAAA8B,OAAA,CAAAG,aAAA,CAAC3B,cAAA,CAAA+B,aAAa,EAAKvB,KAAK;IACtBd,MAAA,CAAA8B,OAAA,CAAAG,aAAA,CAACD,GAAG,MAAAH,SAAA,CAAAC,OAAA,IAAC,YAAUQ,oBAAa,CAACC,IAAK,IAAKhB,UAAU,IAAER,GAAG,EAAE,IAAAyB,oBAAS,EAACzB,GAAG,EAAEQ,UAAU,CAACR,GAAG,CAAE;IACrFf,MAAA,CAAA8B,OAAA,CAAAG,aAAA,CAACzB,iBAAA,CAAAiC,gBAAgB,IAACC,IAAI,EAAEvB,QAAS,EAACwB,IAAI,EAAEtB,MAAO,EAACuB,IAAI,EAAC,MAAM,EAAE,CAAC;IAC9D5C,MAAA,CAAA8B,OAAA,CAAAG,aAAA,WAAMY,SAAS,EAAE7B,YAAY,CAAC8B,KAAK,CAAC,CAAE,IAAErB,QAAe,CAAC;IACxDzB,MAAA,CAAA8B,OAAA,CAAAG,aAAA,CAACzB,iBAAA,CAAAiC,gBAAgB,IAACC,IAAI,EAAEtB,SAAU,EAACuB,IAAI,EAAErB,MAAO,EAACsB,IAAI,EAAC,OAAO,EAAE;IAC5D;IACQ;IACY,CAAC;;AAElC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;exports.__esModule = true;exports.InputLayoutAsideIcon = void 0;
|
|
2
|
-
var _react = _interopRequireDefault(require("react"));
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;exports.__esModule = true;exports.InputLayoutAsideIcon = void 0;var _react = _interopRequireDefault(require("react"));
|
|
3
2
|
var _reactIs = require("react-is");
|
|
4
3
|
|
|
5
4
|
var _renderEnvironment = require("../../../lib/renderEnvironment");
|
|
@@ -15,6 +14,7 @@ var _InputLayout = require("./InputLayout.styles");
|
|
|
15
14
|
|
|
16
15
|
|
|
17
16
|
|
|
17
|
+
|
|
18
18
|
var InputLayoutAsideIcon = exports.InputLayoutAsideIcon = function InputLayoutAsideIcon(_ref) {var _ref$icon = _ref.icon,icon = _ref$icon === void 0 ? null : _ref$icon,side = _ref.side;
|
|
19
19
|
var theme = _react.default.useContext(_ThemeContext.ThemeContext);
|
|
20
20
|
var _useEmotion = (0, _renderEnvironment.useEmotion)(),cx = _useEmotion.cx;
|
|
@@ -33,8 +33,10 @@ var InputLayoutAsideIcon = exports.InputLayoutAsideIcon = function InputLayoutAs
|
|
|
33
33
|
};
|
|
34
34
|
|
|
35
35
|
var _icon = icon instanceof Function ? icon() : icon;
|
|
36
|
-
if ((0, _reactIs.isElement)(icon) && (0, _utils.isKonturIcon)(icon)) {var
|
|
37
|
-
_icon = /*#__PURE__*/_react.default.cloneElement(icon, {
|
|
36
|
+
if ((0, _reactIs.isElement)(icon) && (0, _utils.isKonturIcon)(icon)) {var _ref2;
|
|
37
|
+
_icon = /*#__PURE__*/_react.default.cloneElement(icon, {
|
|
38
|
+
size: (_ref2 = icon.props.size) != null ? _ref2 : sizes[size]
|
|
39
|
+
});
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
var style = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactIs","_renderEnvironment","_utils","_ThemeContext","_InputLayoutContext","_InputLayout","InputLayoutAsideIcon","exports","_ref","_ref$icon","icon","side","theme","React","useContext","ThemeContext","_useEmotion","useEmotion","cx","stylesLayout","useStyles","getStylesLayout","_React$useContext","InputLayoutContext","focused","disabled","size","sizes","small","parseInt","inputIconSizeSmall","medium","inputIconSizeMedium","large","inputIconSizeLarge","gaps","inputIconGapSmall","inputIconGapMedium","inputIconGapLarge","_icon","Function","isElement","isKonturIcon","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactIs","_renderEnvironment","_utils","_ThemeContext","_InputLayoutContext","_InputLayout","InputLayoutAsideIcon","exports","_ref","_ref$icon","icon","side","theme","React","useContext","ThemeContext","_useEmotion","useEmotion","cx","stylesLayout","useStyles","getStylesLayout","_React$useContext","InputLayoutContext","focused","disabled","size","sizes","small","parseInt","inputIconSizeSmall","medium","inputIconSizeMedium","large","inputIconSizeLarge","gaps","inputIconGapSmall","inputIconGapMedium","inputIconGapLarge","_icon","Function","isElement","isKonturIcon","_ref2","cloneElement","props","style","marginLeft","marginRight","default","createElement","className","aside","iconFocus","iconDisabled"],"sources":["InputLayoutAsideIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { isElement } from 'react-is';\n\nimport { useEmotion, useStyles } from '../../../lib/renderEnvironment';\nimport { isKonturIcon } from '../../../lib/utils';\nimport type { InputProps } from '../Input';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport type { SizeProp } from '../../../lib/types/props';\n\nimport { InputLayoutContext } from './InputLayoutContext';\nimport { getStylesLayout } from './InputLayout.styles';\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 _icon = React.cloneElement(icon, {\n size: (icon.props.size as number) ?? sizes[size],\n });\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"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AriaAttributes, HTMLAttributes } from 'react';
|
|
1
|
+
import type { AriaAttributes, HTMLAttributes, JSX } from 'react';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import type { PopupMenuProps } from '../../internal/PopupMenu';
|
|
4
4
|
import type { Nullable } from '../../typings/utility-types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactIs","_utils","_identifiers","LayoutEvents","_interopRequireWildcard","_keyListener","_PopupMenu","_ThemeContext","_currentEnvironment","_ThemeFactory","_CommonWrapper","_rootNode","_createPropsGetter","_getVisualStateDataAttributes","_SizeDecorator","_renderEnvironment","_Kebab2","_KebabIcon","_class","_Kebab","KebabDataTids","exports","caption","Kebab","withRenderEnvironment","rootNode","withSize","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","_this$getProps","disabled","size","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","default","createElement","role","tabIndex","onClick","onKeyDown","onFocus","handleFocus","onBlur","handleBlur","className","cx","styles","kebab","theme","kebabSmall","kebabMedium","kebabLarge","opened","focused","props","renderIcon","e","someKeys","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","globalObject","requestAnimationFrame","keyListener","isTabPressed","_inheritsLoose2","_proto","prototype","componentDidMount","KeyListener","addListener","componentWillUnmount","render","_this2","getStyles","emotion","ThemeContext","Consumer","Provider","value","ThemeFactory","create","popupMargin","kebabMargin","renderMain","_this$getProps2","positions","disableAnimations","onOpen","onClose","CommonWrapper","_extends2","rootNodeRef","setRootNode","getVisualStateDataAttributes","PopupMenu","id","popupHasPin","preventIconsOffset","onChangeMenuState","menuMaxHeight","popupMenuId","children","_this$getProps3","_this$getProps3$icon","icon","KebabIcon","isElement","isKonturIcon","_icon$props$size","_icon$props$color","sizes","small","parseInt","kebabIconSizeSmall","medium","kebabIconSizeMedium","large","kebabIconSizeLarge","React","cloneElement","color","kebabIconColor","Component","__KONTUR_REACT_UI__","displayName","isTestEnv"],"sources":["Kebab.tsx"],"sourcesContent":["import type { AriaAttributes, ReactElement, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { isElement } from 'react-is';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { isKonturIcon } from '../../lib/utils';\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { KeyListener } from '../../lib/events/keyListener';\nimport type { PopupMenuCaptionProps, PopupMenuProps } from '../../internal/PopupMenu';\nimport { PopupMenu } from '../../internal/PopupMenu';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { PopupPositionsType } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { SizeProp } from '../../lib/types/props';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './Kebab.styles';\nimport { KebabIcon } from './KebabIcon';\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 disabled?: boolean;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** Определяет список позиций, доступных для расположения выпадашки относительно `kebab`.\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n * @default ['bottom left', 'bottom right', 'top left', 'top right']. */\n positions?: PopupPositionsType[];\n positions2?: string;\n\n /** Задает максимальную высоту меню. */\n menuMaxHeight?: number | string;\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 * Кебаб-меню `Kebab` содержит действия с объектом.\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 as ReactElement)) {\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 as ReactElement, {\n size: icon.props.size ?? sizes[this.size],\n color: icon.props.color ?? this.theme.kebabIconColor,\n });\n }\n\n return icon;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactIs","_utils","_identifiers","LayoutEvents","_interopRequireWildcard","_keyListener","_PopupMenu","_ThemeContext","_currentEnvironment","_ThemeFactory","_CommonWrapper","_rootNode","_createPropsGetter","_getVisualStateDataAttributes","_SizeDecorator","_renderEnvironment","_Kebab2","_KebabIcon","_class","_Kebab","KebabDataTids","exports","caption","Kebab","withRenderEnvironment","rootNode","withSize","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","_this$getProps","disabled","size","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","default","createElement","role","tabIndex","onClick","onKeyDown","onFocus","handleFocus","onBlur","handleBlur","className","cx","styles","kebab","theme","kebabSmall","kebabMedium","kebabLarge","opened","focused","props","renderIcon","e","someKeys","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","globalObject","requestAnimationFrame","keyListener","isTabPressed","_inheritsLoose2","_proto","prototype","componentDidMount","KeyListener","addListener","componentWillUnmount","render","_this2","getStyles","emotion","ThemeContext","Consumer","Provider","value","ThemeFactory","create","popupMargin","kebabMargin","renderMain","_this$getProps2","positions","disableAnimations","onOpen","onClose","CommonWrapper","_extends2","rootNodeRef","setRootNode","getVisualStateDataAttributes","PopupMenu","id","popupHasPin","preventIconsOffset","onChangeMenuState","menuMaxHeight","popupMenuId","children","_this$getProps3","_this$getProps3$icon","icon","KebabIcon","isElement","isKonturIcon","_icon$props$size","_icon$props$color","sizes","small","parseInt","kebabIconSizeSmall","medium","kebabIconSizeMedium","large","kebabIconSizeLarge","React","cloneElement","color","kebabIconColor","Component","__KONTUR_REACT_UI__","displayName","isTestEnv"],"sources":["Kebab.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes, JSX } from 'react';\nimport React from 'react';\nimport { isElement } from 'react-is';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { isKonturIcon } from '../../lib/utils';\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { KeyListener } from '../../lib/events/keyListener';\nimport type { PopupMenuCaptionProps, PopupMenuProps } from '../../internal/PopupMenu';\nimport { PopupMenu } from '../../internal/PopupMenu';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { PopupPositionsType } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { SizeProp } from '../../lib/types/props';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './Kebab.styles';\nimport { KebabIcon } from './KebabIcon';\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 disabled?: boolean;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** Определяет список позиций, доступных для расположения выпадашки относительно `kebab`.\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n * @default ['bottom left', 'bottom right', 'top left', 'top right']. */\n positions?: PopupPositionsType[];\n positions2?: string;\n\n /** Задает максимальную высоту меню. */\n menuMaxHeight?: number | string;\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 * Кебаб-меню `Kebab` содержит действия с объектом.\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 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: icon.props.size ?? sizes[this.size],\n color: icon.props.color ?? this.theme.kebabIconColor,\n });\n }\n\n return icon;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { type JSX } from 'react';
|
|
2
2
|
import type { ButtonLinkAllowedValues } from '../../lib/types/button-link';
|
|
3
3
|
import type { PolymorphicPropsWithoutRef } from '../../lib/types/polymorphic-component';
|
|
4
4
|
import type { ThemeIn } from '../../lib/theming/Theme';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_keyListener","_ThemeContext","_utils","_CommonWrapper","_rootNode","_createPropsGetter","_ThemeFactory","_getVisualStateDataAttributes","_renderEnvironment","_Link2","_LinkIcon","_excluded","_class","_Link","LINK_DEFAULT_COMPONENT","LinkDataTids","exports","root","Link","withRenderEnvironment","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","focusedByTab","getTabIndex","_ref","nonInteractive","_ref$tabIndex","tabIndex","getRel","isAnchorProps","props","_this$props","rel","href","isExternalLink","globalObject","undefined","renderMain","_this$cx","disabled","icon","rightIcon","use","loading","_button","_buttonOpened","Root","component","_props$focused","focused","error","warning","theme","rest","_objectWithoutPropertiesLoose2","default","arrow","createElement","className","styles","isFocused","leftIconElement","LinkIcon","position","rightIconElement","hasBothIcons","getUseStyles","danger","success","grayed","getUseLineFocusStyles","lineFocus","lineFocusDanger","lineFocusSuccess","lineFocusGrayed","rootProps","_extends2","cx","reserButton","focus","useGrayedFocus","button","buttonOpened","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","buttonOnlyProps","getVisualStateDataAttributes","children","requestAnimationFrame","keyListener","isTabPressed","setState","event","_this$props2","preventDefault","stopPropagation","_inheritsLoose2","_proto","prototype","componentDidMount","KeyListener","render","_this2","getStyles","emotion","ThemeContext","Consumer","ThemeFactory","create","CommonWrapper","rootNodeRef","setRootNode","React","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Link.tsx"],"sourcesContent":["import React from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport type { ButtonLinkAllowedValues } from '../../lib/types/button-link';\nimport type { PolymorphicPropsWithoutRef } from '../../lib/types/polymorphic-component';\nimport { KeyListener } from '../../lib/events/keyListener';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport type { DefaultizedProps } from '../../lib/createPropsGetter';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './Link.styles';\nimport { LinkIcon } from './LinkIcon';\n\nexport interface LinkInnerProps extends CommonProps {\n /** Ссылка меняет цвет на серый и становится недоступна для нажатия. */\n disabled?: boolean;\n\n /** Добавляет иконку слева от ссылки. */\n icon?: React.ReactElement;\n\n /** Добавляет иконку справа от ссылки. */\n rightIcon?: React.ReactElement;\n\n /** Задаёт стиль ссылки. */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n\n /** @ignore */\n _button?: boolean;\n\n /** @ignore */\n _buttonOpened?: boolean;\n\n /** Задаёт HTML-атрибут `tabindex`. */\n tabIndex?: number;\n\n /** Переводит ссылку в состояние загрузки. */\n loading?: boolean;\n\n /** Задаёт объект с переменными темы. */\n theme?: ThemeIn;\n\n /** Задает состояние фокуса.\n * @ignore */\n focused?: boolean;\n\n /** Переводит ссылку в состояние валидации \"Ошибка\". */\n error?: boolean;\n\n /** Переводит ссылку в состояние валидации \"Предупреждение\". */\n warning?: boolean;\n}\n\nconst LINK_DEFAULT_COMPONENT = 'a';\n\nexport type LinkProps<C extends ButtonLinkAllowedValues = typeof LINK_DEFAULT_COMPONENT> = PolymorphicPropsWithoutRef<\n LinkInnerProps,\n C\n>;\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\nexport const LinkDataTids = {\n root: 'Link__root',\n} as const;\n\ntype DefaultProps = Required<Pick<LinkProps<ButtonLinkAllowedValues>, 'use' | 'component'>>;\ntype DefaultizedLinkProps = DefaultizedProps<LinkProps<ButtonLinkAllowedValues>, DefaultProps>;\n\n/**\n * С помощью ссылки пользователь может перейти на другую страницу, раздел приложения или внешний URL.\n */\n@withRenderEnvironment\n@rootNode\nexport class Link<C extends ButtonLinkAllowedValues = typeof LINK_DEFAULT_COMPONENT> extends React.Component<\n LinkProps<C>,\n LinkState\n> {\n public static __KONTUR_REACT_UI__ = 'Link';\n public static displayName = 'Link';\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n component: LINK_DEFAULT_COMPONENT,\n };\n\n private getProps = createPropsGetter(Link.defaultProps);\n\n public state: LinkState = {\n focusedByTab: false,\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 public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private keyListener!: KeyListener;\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private getTabIndex = ({\n nonInteractive,\n tabIndex = 0,\n }: {\n nonInteractive: boolean | undefined;\n tabIndex: number | undefined;\n }) => {\n return nonInteractive ? -1 : tabIndex;\n };\n\n private getRel = () => {\n if (isAnchorProps(this.props)) {\n const { rel, href } = this.props;\n if (!rel && href) {\n return `noopener${isExternalLink(href, this.globalObject) ? ' noreferrer' : ''}`;\n }\n return rel;\n }\n\n return undefined;\n };\n\n private renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n icon,\n rightIcon,\n use,\n loading,\n _button,\n _buttonOpened,\n component: Root,\n focused = false,\n error,\n warning,\n tabIndex,\n theme,\n ...rest\n } = props;\n\n let arrow = null;\n if (_button) {\n arrow = <span className={this.styles.arrow()} />;\n }\n\n const isFocused = !disabled && (this.state.focusedByTab || focused);\n\n const leftIconElement = icon && <LinkIcon icon={icon} loading={loading} position=\"left\" />;\n const rightIconElement = rightIcon && (\n <LinkIcon hasBothIcons={!!icon && !!rightIcon} icon={rightIcon} loading={loading} position=\"right\" />\n );\n const nonInteractive = disabled || loading;\n const getUseStyles = () => {\n switch (use) {\n case 'default':\n return this.styles.default(this.theme);\n case 'danger':\n return this.styles.danger(this.theme);\n case 'success':\n return this.styles.success(this.theme);\n case 'grayed':\n return this.styles.grayed(this.theme);\n }\n };\n const getUseLineFocusStyles = () => {\n switch (use) {\n case 'default':\n return this.styles.lineFocus(this.theme);\n case 'danger':\n return this.styles.lineFocusDanger(this.theme);\n case 'success':\n return this.styles.lineFocusSuccess(this.theme);\n case 'grayed':\n return this.styles.lineFocusGrayed(this.theme);\n }\n };\n\n const rootProps = {\n ...rest,\n className: this.cx({\n [this.styles.root(this.theme)]: true,\n [this.styles.reserButton()]: Root === 'button',\n [this.styles.focus(this.theme)]: isFocused,\n [this.styles.disabled(this.theme)]: disabled || loading,\n [getUseStyles()]: true,\n [this.styles.useGrayedFocus(this.theme)]: use === 'grayed' && focused,\n [this.styles.button(this.theme)]: !!_button,\n [this.styles.buttonOpened(this.theme)]: !!_buttonOpened,\n [this.styles.warning(this.theme)]: warning,\n [this.styles.error(this.theme)]: error,\n [getUseLineFocusStyles()]: isFocused,\n }),\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: this.getTabIndex({ nonInteractive, tabIndex }),\n rel: this.getRel(),\n };\n\n const buttonOnlyProps = Root === 'button' ? { disabled: nonInteractive } : {};\n\n return (\n <Root\n data-tid={LinkDataTids.root}\n {...rootProps}\n {...buttonOnlyProps}\n {...getVisualStateDataAttributes({ disabled })}\n >\n {leftIconElement}\n {this.props.children}\n {rightIconElement}\n {arrow}\n </Root>\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({ focusedByTab: false });\n };\n\n private handleClick = (event: React.MouseEvent) => {\n const { onClick, disabled, loading } = this.props;\n\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n}\n\nconst isAnchorProps = (props: LinkProps<any>): props is LinkProps<'a'> => {\n return props.component === 'a';\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_keyListener","_ThemeContext","_utils","_CommonWrapper","_rootNode","_createPropsGetter","_ThemeFactory","_getVisualStateDataAttributes","_renderEnvironment","_Link2","_LinkIcon","_excluded","_class","_Link","LINK_DEFAULT_COMPONENT","LinkDataTids","exports","root","Link","withRenderEnvironment","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","focusedByTab","getTabIndex","_ref","nonInteractive","_ref$tabIndex","tabIndex","getRel","isAnchorProps","props","_this$props","rel","href","isExternalLink","globalObject","undefined","renderMain","_this$cx","disabled","icon","rightIcon","use","loading","_button","_buttonOpened","Root","component","_props$focused","focused","error","warning","theme","rest","_objectWithoutPropertiesLoose2","default","arrow","createElement","className","styles","isFocused","leftIconElement","LinkIcon","position","rightIconElement","hasBothIcons","getUseStyles","danger","success","grayed","getUseLineFocusStyles","lineFocus","lineFocusDanger","lineFocusSuccess","lineFocusGrayed","rootProps","_extends2","cx","reserButton","focus","useGrayedFocus","button","buttonOpened","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","buttonOnlyProps","getVisualStateDataAttributes","children","requestAnimationFrame","keyListener","isTabPressed","setState","event","_this$props2","preventDefault","stopPropagation","_inheritsLoose2","_proto","prototype","componentDidMount","KeyListener","render","_this2","getStyles","emotion","ThemeContext","Consumer","ThemeFactory","create","CommonWrapper","rootNodeRef","setRootNode","React","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Link.tsx"],"sourcesContent":["import React, { type JSX } from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport type { ButtonLinkAllowedValues } from '../../lib/types/button-link';\nimport type { PolymorphicPropsWithoutRef } from '../../lib/types/polymorphic-component';\nimport { KeyListener } from '../../lib/events/keyListener';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport type { DefaultizedProps } from '../../lib/createPropsGetter';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './Link.styles';\nimport { LinkIcon } from './LinkIcon';\n\nexport interface LinkInnerProps extends CommonProps {\n /** Ссылка меняет цвет на серый и становится недоступна для нажатия. */\n disabled?: boolean;\n\n /** Добавляет иконку слева от ссылки. */\n icon?: React.ReactElement;\n\n /** Добавляет иконку справа от ссылки. */\n rightIcon?: React.ReactElement;\n\n /** Задаёт стиль ссылки. */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n\n /** @ignore */\n _button?: boolean;\n\n /** @ignore */\n _buttonOpened?: boolean;\n\n /** Задаёт HTML-атрибут `tabindex`. */\n tabIndex?: number;\n\n /** Переводит ссылку в состояние загрузки. */\n loading?: boolean;\n\n /** Задаёт объект с переменными темы. */\n theme?: ThemeIn;\n\n /** Задает состояние фокуса.\n * @ignore */\n focused?: boolean;\n\n /** Переводит ссылку в состояние валидации \"Ошибка\". */\n error?: boolean;\n\n /** Переводит ссылку в состояние валидации \"Предупреждение\". */\n warning?: boolean;\n}\n\nconst LINK_DEFAULT_COMPONENT = 'a';\n\nexport type LinkProps<C extends ButtonLinkAllowedValues = typeof LINK_DEFAULT_COMPONENT> = PolymorphicPropsWithoutRef<\n LinkInnerProps,\n C\n>;\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\nexport const LinkDataTids = {\n root: 'Link__root',\n} as const;\n\ntype DefaultProps = Required<Pick<LinkProps<ButtonLinkAllowedValues>, 'use' | 'component'>>;\ntype DefaultizedLinkProps = DefaultizedProps<LinkProps<ButtonLinkAllowedValues>, DefaultProps>;\n\n/**\n * С помощью ссылки пользователь может перейти на другую страницу, раздел приложения или внешний URL.\n */\n@withRenderEnvironment\n@rootNode\nexport class Link<C extends ButtonLinkAllowedValues = typeof LINK_DEFAULT_COMPONENT> extends React.Component<\n LinkProps<C>,\n LinkState\n> {\n public static __KONTUR_REACT_UI__ = 'Link';\n public static displayName = 'Link';\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n component: LINK_DEFAULT_COMPONENT,\n };\n\n private getProps = createPropsGetter(Link.defaultProps);\n\n public state: LinkState = {\n focusedByTab: false,\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 public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private keyListener!: KeyListener;\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private getTabIndex = ({\n nonInteractive,\n tabIndex = 0,\n }: {\n nonInteractive: boolean | undefined;\n tabIndex: number | undefined;\n }) => {\n return nonInteractive ? -1 : tabIndex;\n };\n\n private getRel = () => {\n if (isAnchorProps(this.props)) {\n const { rel, href } = this.props;\n if (!rel && href) {\n return `noopener${isExternalLink(href, this.globalObject) ? ' noreferrer' : ''}`;\n }\n return rel;\n }\n\n return undefined;\n };\n\n private renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n icon,\n rightIcon,\n use,\n loading,\n _button,\n _buttonOpened,\n component: Root,\n focused = false,\n error,\n warning,\n tabIndex,\n theme,\n ...rest\n } = props;\n\n let arrow = null;\n if (_button) {\n arrow = <span className={this.styles.arrow()} />;\n }\n\n const isFocused = !disabled && (this.state.focusedByTab || focused);\n\n const leftIconElement = icon && <LinkIcon icon={icon} loading={loading} position=\"left\" />;\n const rightIconElement = rightIcon && (\n <LinkIcon hasBothIcons={!!icon && !!rightIcon} icon={rightIcon} loading={loading} position=\"right\" />\n );\n const nonInteractive = disabled || loading;\n const getUseStyles = () => {\n switch (use) {\n case 'default':\n return this.styles.default(this.theme);\n case 'danger':\n return this.styles.danger(this.theme);\n case 'success':\n return this.styles.success(this.theme);\n case 'grayed':\n return this.styles.grayed(this.theme);\n }\n };\n const getUseLineFocusStyles = () => {\n switch (use) {\n case 'default':\n return this.styles.lineFocus(this.theme);\n case 'danger':\n return this.styles.lineFocusDanger(this.theme);\n case 'success':\n return this.styles.lineFocusSuccess(this.theme);\n case 'grayed':\n return this.styles.lineFocusGrayed(this.theme);\n }\n };\n\n const rootProps = {\n ...rest,\n className: this.cx({\n [this.styles.root(this.theme)]: true,\n [this.styles.reserButton()]: Root === 'button',\n [this.styles.focus(this.theme)]: isFocused,\n [this.styles.disabled(this.theme)]: disabled || loading,\n [getUseStyles()]: true,\n [this.styles.useGrayedFocus(this.theme)]: use === 'grayed' && focused,\n [this.styles.button(this.theme)]: !!_button,\n [this.styles.buttonOpened(this.theme)]: !!_buttonOpened,\n [this.styles.warning(this.theme)]: warning,\n [this.styles.error(this.theme)]: error,\n [getUseLineFocusStyles()]: isFocused,\n }),\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: this.getTabIndex({ nonInteractive, tabIndex }),\n rel: this.getRel(),\n };\n\n const buttonOnlyProps = Root === 'button' ? { disabled: nonInteractive } : {};\n\n return (\n <Root\n data-tid={LinkDataTids.root}\n {...rootProps}\n {...buttonOnlyProps}\n {...getVisualStateDataAttributes({ disabled })}\n >\n {leftIconElement}\n {this.props.children}\n {rightIconElement}\n {arrow}\n </Root>\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({ focusedByTab: false });\n };\n\n private handleClick = (event: React.MouseEvent) => {\n const { onClick, disabled, loading } = this.props;\n\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n}\n\nconst isAnchorProps = (props: LinkProps<any>): props is LinkProps<'a'> => {\n return props.component === 'a';\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,6 @@ import type { InputElement, InputElementProps } from '../../Input';
|
|
|
3
3
|
export type ColorableInputElementProps = InputElementProps & {
|
|
4
4
|
alwaysShowMask?: boolean;
|
|
5
5
|
showOnFocus?: boolean;
|
|
6
|
-
children: React.ReactElement
|
|
6
|
+
children: React.ReactElement<any>;
|
|
7
7
|
};
|
|
8
8
|
export declare const ColorableInputElement: import("../../../lib/forwardRefAndName").ReactUIComponentWithRef<InputElement, ColorableInputElementProps> & Record<never, never>;
|
|
@@ -28,7 +28,7 @@ var ColorableInputElement = exports.ColorableInputElement = (0, _forwardRefAndNa
|
|
|
28
28
|
var inputRef = (0, _react.useRef)(null);
|
|
29
29
|
var spanRef = (0, _react.useRef)(null);
|
|
30
30
|
var focused = (0, _react.useRef)(false);
|
|
31
|
-
var updateActiveTimer = (0, _react.useRef)();
|
|
31
|
+
var updateActiveTimer = (0, _react.useRef)(undefined);
|
|
32
32
|
var globalObject = (0, _renderEnvironment.useGlobal)();
|
|
33
33
|
var emotion = (0, _renderEnvironment.useEmotion)();
|
|
34
34
|
var cx = emotion.cx;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_lodash","_interopRequireDefault","_renderEnvironment","_globalObject","_ThemeContext","_forwardRefAndName","_ColorableInputElement","_excluded","ColorableInputElement","exports","forwardRefAndName","props","ref","_props$style3","_cx","inputRef","useRef","spanRef","focused","updateActiveTimer","globalObject","useGlobal","emotion","useEmotion","cx","styles","useStyles","getStyles","theme","useContext","ThemeContext","_useState","useState","Boolean","alwaysShowMask","placeholder","value","defaultValue","active","setActive","children","onInput","onFocus","onBlur","showOnFocus","inputProps","_objectWithoutPropertiesLoose2","default","stopUpdateActive","useCallback","clearTimeout","current","updateActive","setTimeout","nextActive","_inputRef$current2","_inputRef$current","clientWidth","scrollWidth","scrollable","placeholderShown","parentElement","querySelector","paintText","_inputRef$current4","_shadow","_shadow2","_props$style","_props$style2","isBrowser","_inputRef$current3","style","backgroundImage","classList","remove","globalClasses","input","add","shadow","shadowRoot","typedValueElement","getElementById","fullValueElement","attachShadow","mode","document","createElement","setAttribute","append","getComputedStyle","textContent","getAttribute","inputRect","getBoundingClientRect","typedValueRect","fullValueRect","threshold","width","degree","fontStyle","restValueWidth","Math","min","typedValueColor","inputTextColor","maskColor","inputPlaceholderColor","indent","disabled","inputTextColorDisabled","textAlign","debouncedPaintText","debounce","handleInput","e","handleFocus","handleBlur","useImperativeHandle","getRootNode","useEffect","Fragment","React","cloneElement","_extends2","className","root","visibility","position","whiteSpace"],"sources":["ColorableInputElement.tsx"],"sourcesContent":["/* eslint react-hooks/exhaustive-deps: 2 */\nimport type { ForwardedRef } from 'react';\nimport React, { useContext, useEffect, useImperativeHandle, useRef, useCallback, useState } from 'react';\nimport debounce from 'lodash.debounce';\n\nimport { useGlobal, useEmotion, useStyles } from '../../../lib/renderEnvironment';\nimport { isBrowser } from '../../../lib/globalObject';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport type { InputElement, InputElementProps } from '../../Input';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\n\nimport { globalClasses, getStyles } from './ColorableInputElement.styles';\n\nexport type ColorableInputElementProps = InputElementProps & {\n alwaysShowMask?: boolean;\n showOnFocus?: boolean;\n children: React.ReactElement;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const updateActiveTimer = useRef<ReturnType<typeof setTimeout>>();\n const globalObject = useGlobal();\n const emotion = useEmotion();\n const { cx } = emotion;\n const styles = useStyles(getStyles);\n const theme = useContext(ThemeContext);\n const [active, setActive] = useState(\n Boolean(props.alwaysShowMask || (!props.placeholder && (props.value || props.defaultValue))),\n );\n\n const { children, onInput, onFocus, onBlur, showOnFocus, alwaysShowMask, ...inputProps } = props;\n\n const stopUpdateActive = useCallback(() => {\n clearTimeout(updateActiveTimer.current);\n }, []);\n\n const updateActive = useCallback(() => {\n stopUpdateActive();\n updateActiveTimer.current = setTimeout(() => {\n let nextActive = true;\n if (inputRef.current) {\n const { clientWidth, scrollWidth } = inputRef.current;\n const scrollable = scrollWidth > clientWidth;\n\n const placeholderShown = inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n\n nextActive = !(scrollable || placeholderShown);\n }\n setActive(nextActive);\n }, 0);\n }, [stopUpdateActive]);\n\n const paintText = useCallback(() => {\n if (!isBrowser(globalObject) || !spanRef.current || !inputRef.current || !active) {\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('typed-value');\n let fullValueElement = shadow?.getElementById('full-value');\n\n if (!typedValueElement || !fullValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = globalObject.document.createElement('span');\n fullValueElement = globalObject.document.createElement('span');\n typedValueElement.setAttribute('id', 'typed-value');\n fullValueElement.setAttribute('id', 'full-value');\n\n shadow.append(typedValueElement, fullValueElement);\n }\n\n const style = getComputedStyle(inputRef.current);\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n fullValueElement.textContent = inputRef.current.value || inputRef.current.defaultValue || '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const typedValueRect = typedValueElement.getBoundingClientRect();\n const fullValueRect = fullValueElement.getBoundingClientRect();\n\n const threshold = typedValueRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n const restValueWidth = 1 - Math.min(fullValueRect.width / inputRect.width, 1);\n\n let typedValueColor = theme.inputTextColor;\n let maskColor = theme.inputPlaceholderColor;\n let indent = 0;\n\n if (props.disabled) {\n typedValueColor = theme.inputTextColorDisabled;\n maskColor = theme.inputTextColorDisabled;\n }\n if (props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n if (props.style?.textAlign === 'right') {\n indent = 100 * restValueWidth;\n }\n if (props.style?.textAlign === 'center') {\n indent = 50 * restValueWidth;\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold + indent}%,\n ${maskColor} ${threshold + indent}%\n )`;\n }, [\n active,\n props.showOnFocus,\n props.disabled,\n theme.inputTextColor,\n theme.inputPlaceholderColor,\n theme.inputTextColorDisabled,\n globalObject,\n props.style?.textAlign,\n ]);\n\n const debouncedPaintText = useCallback(() => debounce(paintText), [paintText])();\n\n const handleInput = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n debouncedPaintText();\n\n onInput?.(e);\n },\n [debouncedPaintText, onInput],\n );\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = true;\n\n onFocus?.(e);\n },\n [onFocus, updateActive],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n },\n [onBlur, updateActive],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(() => {\n debouncedPaintText();\n updateActive();\n\n return stopUpdateActive;\n }, [updateActive, props.value, props.defaultValue, theme, debouncedPaintText, stopUpdateActive]);\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, styles.root(), {\n [globalClasses.input]: active,\n }),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_lodash","_interopRequireDefault","_renderEnvironment","_globalObject","_ThemeContext","_forwardRefAndName","_ColorableInputElement","_excluded","ColorableInputElement","exports","forwardRefAndName","props","ref","_props$style3","_cx","inputRef","useRef","spanRef","focused","updateActiveTimer","undefined","globalObject","useGlobal","emotion","useEmotion","cx","styles","useStyles","getStyles","theme","useContext","ThemeContext","_useState","useState","Boolean","alwaysShowMask","placeholder","value","defaultValue","active","setActive","children","onInput","onFocus","onBlur","showOnFocus","inputProps","_objectWithoutPropertiesLoose2","default","stopUpdateActive","useCallback","clearTimeout","current","updateActive","setTimeout","nextActive","_inputRef$current2","_inputRef$current","clientWidth","scrollWidth","scrollable","placeholderShown","parentElement","querySelector","paintText","_inputRef$current4","_shadow","_shadow2","_props$style","_props$style2","isBrowser","_inputRef$current3","style","backgroundImage","classList","remove","globalClasses","input","add","shadow","shadowRoot","typedValueElement","getElementById","fullValueElement","attachShadow","mode","document","createElement","setAttribute","append","getComputedStyle","textContent","getAttribute","inputRect","getBoundingClientRect","typedValueRect","fullValueRect","threshold","width","degree","fontStyle","restValueWidth","Math","min","typedValueColor","inputTextColor","maskColor","inputPlaceholderColor","indent","disabled","inputTextColorDisabled","textAlign","debouncedPaintText","debounce","handleInput","e","handleFocus","handleBlur","useImperativeHandle","getRootNode","useEffect","Fragment","React","cloneElement","_extends2","className","root","visibility","position","whiteSpace"],"sources":["ColorableInputElement.tsx"],"sourcesContent":["/* eslint react-hooks/exhaustive-deps: 2 */\nimport type { ForwardedRef } from 'react';\nimport React, { useContext, useEffect, useImperativeHandle, useRef, useCallback, useState } from 'react';\nimport debounce from 'lodash.debounce';\n\nimport { useGlobal, useEmotion, useStyles } from '../../../lib/renderEnvironment';\nimport { isBrowser } from '../../../lib/globalObject';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport type { InputElement, InputElementProps } from '../../Input';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\n\nimport { globalClasses, getStyles } from './ColorableInputElement.styles';\n\nexport type ColorableInputElementProps = InputElementProps & {\n alwaysShowMask?: boolean;\n showOnFocus?: boolean;\n children: React.ReactElement<any>;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const updateActiveTimer = useRef<ReturnType<typeof setTimeout>>(undefined);\n const globalObject = useGlobal();\n const emotion = useEmotion();\n const { cx } = emotion;\n const styles = useStyles(getStyles);\n const theme = useContext(ThemeContext);\n const [active, setActive] = useState(\n Boolean(props.alwaysShowMask || (!props.placeholder && (props.value || props.defaultValue))),\n );\n\n const { children, onInput, onFocus, onBlur, showOnFocus, alwaysShowMask, ...inputProps } = props;\n\n const stopUpdateActive = useCallback(() => {\n clearTimeout(updateActiveTimer.current);\n }, []);\n\n const updateActive = useCallback(() => {\n stopUpdateActive();\n updateActiveTimer.current = setTimeout(() => {\n let nextActive = true;\n if (inputRef.current) {\n const { clientWidth, scrollWidth } = inputRef.current;\n const scrollable = scrollWidth > clientWidth;\n\n const placeholderShown = inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n\n nextActive = !(scrollable || placeholderShown);\n }\n setActive(nextActive);\n }, 0);\n }, [stopUpdateActive]);\n\n const paintText = useCallback(() => {\n if (!isBrowser(globalObject) || !spanRef.current || !inputRef.current || !active) {\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('typed-value');\n let fullValueElement = shadow?.getElementById('full-value');\n\n if (!typedValueElement || !fullValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = globalObject.document.createElement('span');\n fullValueElement = globalObject.document.createElement('span');\n typedValueElement.setAttribute('id', 'typed-value');\n fullValueElement.setAttribute('id', 'full-value');\n\n shadow.append(typedValueElement, fullValueElement);\n }\n\n const style = getComputedStyle(inputRef.current);\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n fullValueElement.textContent = inputRef.current.value || inputRef.current.defaultValue || '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const typedValueRect = typedValueElement.getBoundingClientRect();\n const fullValueRect = fullValueElement.getBoundingClientRect();\n\n const threshold = typedValueRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n const restValueWidth = 1 - Math.min(fullValueRect.width / inputRect.width, 1);\n\n let typedValueColor = theme.inputTextColor;\n let maskColor = theme.inputPlaceholderColor;\n let indent = 0;\n\n if (props.disabled) {\n typedValueColor = theme.inputTextColorDisabled;\n maskColor = theme.inputTextColorDisabled;\n }\n if (props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n if (props.style?.textAlign === 'right') {\n indent = 100 * restValueWidth;\n }\n if (props.style?.textAlign === 'center') {\n indent = 50 * restValueWidth;\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold + indent}%,\n ${maskColor} ${threshold + indent}%\n )`;\n }, [\n active,\n props.showOnFocus,\n props.disabled,\n theme.inputTextColor,\n theme.inputPlaceholderColor,\n theme.inputTextColorDisabled,\n globalObject,\n props.style?.textAlign,\n ]);\n\n const debouncedPaintText = useCallback(() => debounce(paintText), [paintText])();\n\n const handleInput = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n debouncedPaintText();\n\n onInput?.(e);\n },\n [debouncedPaintText, onInput],\n );\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = true;\n\n onFocus?.(e);\n },\n [onFocus, updateActive],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n },\n [onBlur, updateActive],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(() => {\n debouncedPaintText();\n updateActive();\n\n return stopUpdateActive;\n }, [updateActive, props.value, props.defaultValue, theme, debouncedPaintText, stopUpdateActive]);\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, styles.root(), {\n [globalClasses.input]: active,\n }),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -55,7 +55,9 @@ var FixedIMaskInput = exports.FixedIMaskInput = (0, _forwardRefAndName.forwardRe
|
|
|
55
55
|
}
|
|
56
56
|
}, []);
|
|
57
57
|
|
|
58
|
-
(0, _react.useImperativeHandle)(ref, function () {return imaskRef.current;}, [
|
|
58
|
+
(0, _react.useImperativeHandle)(ref, function () {return imaskRef.current;}, [
|
|
59
|
+
imaskRef.current]
|
|
60
|
+
);
|
|
59
61
|
|
|
60
62
|
return /*#__PURE__*/(
|
|
61
63
|
_react.default.createElement(_reactImask.IMaskInput, (0, _extends2.default)({},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactImask","_forwardRefAndName","_identifiers","_MouseDrag","_excluded","FixedIMaskInput","exports","forwardRefAndName","props","ref","inputRef","restProps","_objectWithoutPropertiesLoose2","default","imaskRef","useRef","focused","useEffect","_imaskRef$current","current","element","fillTypedValue","mouseDrag","MouseDrag","listen","onMouseDragEnd","e","_imaskRef$current2","_imaskRef$current3","direction","mouseDragStartEvent","selectionStart","selectionEnd","pageX","_getSelection","getSelection","start","end","setSelection","useImperativeHandle","createElement","IMaskInput","_extends2","onKeyDown","handleKeyDown","onFocus","handleFocus","onBlur","handleBlur","onMouseUp","handleMouseUp","onAccept","handleAccept","onInput","handleInput","getTypedValue","_imaskRef$current4","_ref","maskRef","masked","_ref$_value","_value","_ref$displayValue","displayValue","getMaxCaretPosition","value","slice","_imaskRef$current5","_imaskRef$current6","_imaskRef$current7","setAttribute","unmaskedValue","maskChars","push","placeholderChar","blocks","Object","values","forEach","_ref2","split","RegExp","join","length","Infinity","normalizeSelection","_getSelection2","max","getNormalizedRange","calc","Math","min","selectionDirection","_imaskRef$current8","_len","arguments","_ref3","Array","_key","setSelectionRange","jumpCaret","prev","headDirection","_imaskRef$current9","word","valueOf","wordRegExp","next","match","reduce","s","a","pos","concat","calcSelection","_getSelection3","isSelectionMode","isModShift","tail","head","someKeys","isKeyArrowLeft","isKeyArrowUp","isKeyHome","step","isKeyArrowHorizontal","increment","isShortcutJumpCaret","setTimeout","_len2","args","_key2","apply","_imaskRef$current10","rawInputValue","nativeEvent","nearest","isShortcutSelectAll","preventDefault","isKeyArrow","isKeyEnd","_calcSelection"],"sources":["FixedIMaskInput.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useRef } from 'react';\nimport type { InputMask, MaskedPatternOptions } from '@skbkontur/imask';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport { IMaskInput } from '@skbkontur/react-imask';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport {\n isKeyArrow,\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowUp,\n isKeyEnd,\n isKeyHome,\n isModShift,\n isShortcutJumpCaret,\n isShortcutSelectAll,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag } from '../../lib/events/MouseDrag';\n\nexport type FixedIMaskInputProps = IMaskInputProps<HTMLInputElement>;\n\ntype HeadDirection = 'left' | 'right';\ntype SelectionDirection = 'forward' | 'backward' | 'none';\ntype SelectionSet = [number, number, SelectionDirection];\n\ninterface IMaskRefType {\n maskRef: InputMask<MaskedPatternOptions>;\n element: HTMLInputElement;\n}\n\nexport const FixedIMaskInput = forwardRefAndName(\n 'FixedIMaskInput',\n function FixedIMaskInput(props: FixedIMaskInputProps, ref: React.Ref<IMaskRefType | null>) {\n const { inputRef, ...restProps } = props;\n const imaskRef = useRef<IMaskRefType>(null);\n const focused = useRef(false);\n\n useEffect(() => {\n if (imaskRef.current?.element) {\n fillTypedValue();\n const mouseDrag = MouseDrag.listen(imaskRef.current.element).onMouseDragEnd((e) => {\n let direction: SelectionDirection = 'none';\n\n if (\n mouseDrag.mouseDragStartEvent &&\n imaskRef.current?.element.selectionStart !== imaskRef.current?.element.selectionEnd\n ) {\n direction = mouseDrag.mouseDragStartEvent.pageX > e.pageX ? 'backward' : 'forward';\n }\n\n const [start, end] = getSelection();\n setSelection(start, end, direction);\n });\n }\n }, []);\n\n useImperativeHandle(ref, () => imaskRef.current, []);\n\n return (\n <IMaskInput\n {...restProps}\n ref={imaskRef}\n inputRef={inputRef}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onAccept={handleAccept}\n onInput={handleInput}\n />\n );\n\n function getTypedValue() {\n const { _value = '', displayValue = '' } = imaskRef.current?.maskRef.masked || {};\n const end = getMaxCaretPosition();\n const value = _value !== '' || focused.current === true ? displayValue : '';\n\n return value.slice(0, end);\n }\n\n function fillTypedValue() {\n imaskRef.current?.element.setAttribute('data-typed-value', getTypedValue());\n imaskRef.current?.element.setAttribute('data-unmasked-value', imaskRef.current?.maskRef.unmaskedValue);\n }\n\n function getMaxCaretPosition(): number {\n const maskChars = [];\n if (imaskRef.current) {\n maskChars.push(imaskRef.current.maskRef.masked.placeholderChar);\n if (imaskRef.current.maskRef.masked.blocks) {\n (Object.values(imaskRef.current.maskRef.masked.blocks) as Array<{ placeholderChar?: string }>).forEach(\n ({ placeholderChar }) => placeholderChar && maskChars.push(placeholderChar),\n );\n }\n return imaskRef.current.element.value.split(new RegExp(maskChars.join('|')))[0].length;\n }\n\n return Infinity;\n }\n\n function normalizeSelection() {\n const [start, end] = getSelection();\n const max = getMaxCaretPosition();\n if (end > max) {\n setSelection(start, max);\n }\n }\n\n function getNormalizedRange(calc: number | unknown) {\n return typeof calc === 'number' ? Math.min(getMaxCaretPosition(), Math.max(0, calc)) : 0;\n }\n\n function getSelection(): SelectionSet {\n if (imaskRef.current) {\n return [\n imaskRef.current.element.selectionStart || 0,\n imaskRef.current.element.selectionEnd || 0,\n imaskRef.current.element.selectionDirection || 'none',\n ];\n }\n return [0, 0, 'none'];\n }\n\n function setSelection(...[start, end, direction]: Parameters<HTMLInputElement['setSelectionRange']>) {\n imaskRef.current?.element.setSelectionRange(\n getNormalizedRange(start),\n getNormalizedRange(end),\n direction || 'none',\n );\n }\n\n function jumpCaret(prev: number, headDirection: HeadDirection) {\n const word = /а-яa-z0-9_/.valueOf();\n const wordRegExp = new RegExp(`([${word}])+[\\\\s]*|([^${word}])+`, 'gi');\n let next = headDirection === 'right' ? prev : 0;\n imaskRef.current?.element.value.match(wordRegExp)?.reduce<number[]>((s, a) => {\n const pos = a.length + (s.slice(-1)[0] || 0);\n if (headDirection === 'right' && next === prev && next < pos) {\n next = getNormalizedRange(pos);\n } else if (headDirection === 'left' && prev > pos) {\n next = getNormalizedRange(pos);\n }\n return [...s, pos];\n }, []);\n return next;\n }\n\n /**\n * Вычислят положение каретки при управлении клавишами\n * @param e\n */\n function calcSelection(e: React.KeyboardEvent<HTMLInputElement>): SelectionSet {\n const [start, end, direction] = getSelection();\n const isSelectionMode = isModShift()(e);\n let tail = start !== end && direction === 'backward' ? end : start;\n let head = start !== end && direction === 'backward' ? start : end;\n const headDirection: HeadDirection = someKeys(isKeyArrowLeft, isKeyArrowUp, isKeyHome)(e) ? 'left' : 'right';\n const step = isKeyArrowHorizontal(e) ? 1 : Infinity;\n const increment = headDirection === 'left' ? -step : step;\n if (isShortcutJumpCaret(e)) {\n head = jumpCaret(head, headDirection);\n } else if (head !== tail && !isSelectionMode && isKeyArrowHorizontal(e)) {\n head = headDirection === 'right' ? Math.max(tail, head) : Math.min(tail, head);\n } else {\n head = head + increment;\n }\n if (isSelectionMode) {\n const start = Math.min(tail, head);\n const end = Math.max(tail, head);\n return [getNormalizedRange(start), getNormalizedRange(end), end === head ? 'forward' : 'backward'];\n }\n tail = head;\n return [getNormalizedRange(tail), getNormalizedRange(head), 'none'];\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n normalizeSelection();\n\n props.onMouseUp?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = true;\n fillTypedValue();\n\n setTimeout(normalizeSelection);\n\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = false;\n fillTypedValue();\n\n props.onBlur?.(e);\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n fillTypedValue();\n\n props.onAccept?.(...args);\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const maskRef = imaskRef.current?.maskRef;\n if (maskRef && maskRef.rawInputValue === '') {\n // в случае, когда пользователь стер все из инпута, очищаем value полностью\n // иначе в value остаются символы маски\n props.onAccept?.('', maskRef, e.nativeEvent as InputEvent);\n }\n\n props.onInput?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const nearest = getMaxCaretPosition();\n if (isShortcutSelectAll(e)) {\n e.preventDefault();\n setSelection(0, nearest);\n } else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {\n e.preventDefault();\n const [start, end, direction] = calcSelection(e);\n setSelection(start, end, direction);\n }\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactImask","_forwardRefAndName","_identifiers","_MouseDrag","_excluded","FixedIMaskInput","exports","forwardRefAndName","props","ref","inputRef","restProps","_objectWithoutPropertiesLoose2","default","imaskRef","useRef","focused","useEffect","_imaskRef$current","current","element","fillTypedValue","mouseDrag","MouseDrag","listen","onMouseDragEnd","e","_imaskRef$current2","_imaskRef$current3","direction","mouseDragStartEvent","selectionStart","selectionEnd","pageX","_getSelection","getSelection","start","end","setSelection","useImperativeHandle","createElement","IMaskInput","_extends2","onKeyDown","handleKeyDown","onFocus","handleFocus","onBlur","handleBlur","onMouseUp","handleMouseUp","onAccept","handleAccept","onInput","handleInput","getTypedValue","_imaskRef$current4","_ref","maskRef","masked","_ref$_value","_value","_ref$displayValue","displayValue","getMaxCaretPosition","value","slice","_imaskRef$current5","_imaskRef$current6","_imaskRef$current7","setAttribute","unmaskedValue","maskChars","push","placeholderChar","blocks","Object","values","forEach","_ref2","split","RegExp","join","length","Infinity","normalizeSelection","_getSelection2","max","getNormalizedRange","calc","Math","min","selectionDirection","_imaskRef$current8","_len","arguments","_ref3","Array","_key","setSelectionRange","jumpCaret","prev","headDirection","_imaskRef$current9","word","valueOf","wordRegExp","next","match","reduce","s","a","pos","concat","calcSelection","_getSelection3","isSelectionMode","isModShift","tail","head","someKeys","isKeyArrowLeft","isKeyArrowUp","isKeyHome","step","isKeyArrowHorizontal","increment","isShortcutJumpCaret","setTimeout","_len2","args","_key2","apply","_imaskRef$current10","rawInputValue","nativeEvent","nearest","isShortcutSelectAll","preventDefault","isKeyArrow","isKeyEnd","_calcSelection"],"sources":["FixedIMaskInput.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useRef } from 'react';\nimport type { InputMask, MaskedPatternOptions } from '@skbkontur/imask';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport { IMaskInput } from '@skbkontur/react-imask';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport {\n isKeyArrow,\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowUp,\n isKeyEnd,\n isKeyHome,\n isModShift,\n isShortcutJumpCaret,\n isShortcutSelectAll,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag } from '../../lib/events/MouseDrag';\n\nexport type FixedIMaskInputProps = IMaskInputProps<HTMLInputElement>;\n\ntype HeadDirection = 'left' | 'right';\ntype SelectionDirection = 'forward' | 'backward' | 'none';\ntype SelectionSet = [number, number, SelectionDirection];\n\ninterface IMaskRefType {\n maskRef: InputMask<MaskedPatternOptions>;\n element: HTMLInputElement;\n}\n\nexport const FixedIMaskInput = forwardRefAndName(\n 'FixedIMaskInput',\n function FixedIMaskInput(props: FixedIMaskInputProps, ref: React.Ref<IMaskRefType | null>) {\n const { inputRef, ...restProps } = props;\n const imaskRef = useRef<IMaskRefType>(null);\n const focused = useRef(false);\n\n useEffect(() => {\n if (imaskRef.current?.element) {\n fillTypedValue();\n const mouseDrag = MouseDrag.listen(imaskRef.current.element).onMouseDragEnd((e) => {\n let direction: SelectionDirection = 'none';\n\n if (\n mouseDrag.mouseDragStartEvent &&\n imaskRef.current?.element.selectionStart !== imaskRef.current?.element.selectionEnd\n ) {\n direction = mouseDrag.mouseDragStartEvent.pageX > e.pageX ? 'backward' : 'forward';\n }\n\n const [start, end] = getSelection();\n setSelection(start, end, direction);\n });\n }\n }, []);\n\n useImperativeHandle<typeof imaskRef.current, typeof imaskRef.current>(ref, () => imaskRef.current, [\n imaskRef.current,\n ]);\n\n return (\n <IMaskInput\n {...restProps}\n ref={imaskRef}\n inputRef={inputRef}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onAccept={handleAccept}\n onInput={handleInput}\n />\n );\n\n function getTypedValue() {\n const { _value = '', displayValue = '' } = imaskRef.current?.maskRef.masked || {};\n const end = getMaxCaretPosition();\n const value = _value !== '' || focused.current === true ? displayValue : '';\n\n return value.slice(0, end);\n }\n\n function fillTypedValue() {\n imaskRef.current?.element.setAttribute('data-typed-value', getTypedValue());\n imaskRef.current?.element.setAttribute('data-unmasked-value', imaskRef.current?.maskRef.unmaskedValue);\n }\n\n function getMaxCaretPosition(): number {\n const maskChars = [];\n if (imaskRef.current) {\n maskChars.push(imaskRef.current.maskRef.masked.placeholderChar);\n if (imaskRef.current.maskRef.masked.blocks) {\n (Object.values(imaskRef.current.maskRef.masked.blocks) as Array<{ placeholderChar?: string }>).forEach(\n ({ placeholderChar }) => placeholderChar && maskChars.push(placeholderChar),\n );\n }\n return imaskRef.current.element.value.split(new RegExp(maskChars.join('|')))[0].length;\n }\n\n return Infinity;\n }\n\n function normalizeSelection() {\n const [start, end] = getSelection();\n const max = getMaxCaretPosition();\n if (end > max) {\n setSelection(start, max);\n }\n }\n\n function getNormalizedRange(calc: number | unknown) {\n return typeof calc === 'number' ? Math.min(getMaxCaretPosition(), Math.max(0, calc)) : 0;\n }\n\n function getSelection(): SelectionSet {\n if (imaskRef.current) {\n return [\n imaskRef.current.element.selectionStart || 0,\n imaskRef.current.element.selectionEnd || 0,\n imaskRef.current.element.selectionDirection || 'none',\n ];\n }\n return [0, 0, 'none'];\n }\n\n function setSelection(...[start, end, direction]: Parameters<HTMLInputElement['setSelectionRange']>) {\n imaskRef.current?.element.setSelectionRange(\n getNormalizedRange(start),\n getNormalizedRange(end),\n direction || 'none',\n );\n }\n\n function jumpCaret(prev: number, headDirection: HeadDirection) {\n const word = /а-яa-z0-9_/.valueOf();\n const wordRegExp = new RegExp(`([${word}])+[\\\\s]*|([^${word}])+`, 'gi');\n let next = headDirection === 'right' ? prev : 0;\n imaskRef.current?.element.value.match(wordRegExp)?.reduce<number[]>((s, a) => {\n const pos = a.length + (s.slice(-1)[0] || 0);\n if (headDirection === 'right' && next === prev && next < pos) {\n next = getNormalizedRange(pos);\n } else if (headDirection === 'left' && prev > pos) {\n next = getNormalizedRange(pos);\n }\n return [...s, pos];\n }, []);\n return next;\n }\n\n /**\n * Вычислят положение каретки при управлении клавишами\n * @param e\n */\n function calcSelection(e: React.KeyboardEvent<HTMLInputElement>): SelectionSet {\n const [start, end, direction] = getSelection();\n const isSelectionMode = isModShift()(e);\n let tail = start !== end && direction === 'backward' ? end : start;\n let head = start !== end && direction === 'backward' ? start : end;\n const headDirection: HeadDirection = someKeys(isKeyArrowLeft, isKeyArrowUp, isKeyHome)(e) ? 'left' : 'right';\n const step = isKeyArrowHorizontal(e) ? 1 : Infinity;\n const increment = headDirection === 'left' ? -step : step;\n if (isShortcutJumpCaret(e)) {\n head = jumpCaret(head, headDirection);\n } else if (head !== tail && !isSelectionMode && isKeyArrowHorizontal(e)) {\n head = headDirection === 'right' ? Math.max(tail, head) : Math.min(tail, head);\n } else {\n head = head + increment;\n }\n if (isSelectionMode) {\n const start = Math.min(tail, head);\n const end = Math.max(tail, head);\n return [getNormalizedRange(start), getNormalizedRange(end), end === head ? 'forward' : 'backward'];\n }\n tail = head;\n return [getNormalizedRange(tail), getNormalizedRange(head), 'none'];\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n normalizeSelection();\n\n props.onMouseUp?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = true;\n fillTypedValue();\n\n setTimeout(normalizeSelection);\n\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = false;\n fillTypedValue();\n\n props.onBlur?.(e);\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n fillTypedValue();\n\n props.onAccept?.(...args);\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const maskRef = imaskRef.current?.maskRef;\n if (maskRef && maskRef.rawInputValue === '') {\n // в случае, когда пользователь стер все из инпута, очищаем value полностью\n // иначе в value остаются символы маски\n props.onAccept?.('', maskRef, e.nativeEvent as InputEvent);\n }\n\n props.onInput?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const nearest = getMaxCaretPosition();\n if (isShortcutSelectAll(e)) {\n e.preventDefault();\n setSelection(0, nearest);\n } else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {\n e.preventDefault();\n const [start, end, direction] = calcSelection(e);\n setSelection(start, end, direction);\n }\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;exports.__esModule = true;exports.getSafeMaskInputType = exports.MaskedInput = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
2
|
-
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;exports.__esModule = true;exports.getSafeMaskInputType = exports.MaskedInput = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
2
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
var _renderEnvironment = require("../../lib/renderEnvironment");
|