@skbkontur/react-ui 5.4.0 → 5.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/cjs/components/Autocomplete/Autocomplete.d.ts +10 -2
- package/cjs/components/Autocomplete/Autocomplete.js +18 -2
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Button/Button.d.ts +23 -13
- package/cjs/components/Button/Button.js +13 -3
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +11 -22
- package/cjs/components/CurrencyInput/CurrencyInput.js +10 -17
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/FxInput/FxInput.d.ts +23 -16
- package/cjs/components/FxInput/FxInput.js +142 -65
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +27 -37
- package/cjs/components/Input/Input.js +9 -19
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +10 -10
- package/cjs/components/Link/Link.js +1 -1
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -0
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +107 -78
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.js +5 -3
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.d.ts +5 -6
- package/cjs/components/PasswordInput/PasswordInput.js +4 -5
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/__stories__/Form.js +95 -0
- package/cjs/components/__stories__/Form.js.map +1 -0
- package/cjs/internal/CommonWrapper/types.d.ts +1 -1
- package/cjs/internal/CommonWrapper/types.js.map +1 -1
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +2 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/cjs/lib/utils.d.ts +5 -1
- package/cjs/lib/utils.js +20 -4
- package/cjs/lib/utils.js.map +1 -1
- package/cjs/test-setup.d.ts +1 -0
- package/cjs/vitest.config.d.ts +2 -0
- package/components/Autocomplete/Autocomplete/Autocomplete.js +10 -2
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +10 -2
- package/components/Button/Button/Button.js +4 -2
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +23 -13
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +6 -17
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +11 -22
- package/components/FxInput/FxInput/FxInput.js +122 -71
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/FxInput/FxInput.d.ts +23 -16
- package/components/Input/Input/Input.js +8 -16
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +27 -37
- package/components/Link/Link/Link.js +1 -1
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +10 -10
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +81 -66
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -0
- package/components/MaskedInput/MaskedInput/MaskedInput.js +4 -2
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +4 -5
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +5 -6
- package/components/__stories__/Form/Form.js +98 -0
- package/components/__stories__/Form/Form.js.map +1 -0
- package/components/__stories__/Form/package.json +6 -0
- package/internal/CommonWrapper/types/types.js.map +1 -1
- package/internal/CommonWrapper/types.d.ts +1 -1
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/lib/utils/utils.js +18 -2
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +5 -1
- package/package.json +8 -14
- package/test-setup.d.ts +1 -0
- package/vitest.config.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","warning","debounce","globalObject","isNonNullable","isNullable","isIE11","Input","CommonWrapper","rootNode","createPropsGetter","isInstanceOf","FocusControlWrapper","MAX_SAFE_DIGITS","SelectionHelper","CurrencyHelper","CurrencyInputHelper","CURRENCY_INPUT_ACTIONS","extractAction","CurrencyInputDataTids","root","CurrencyInput","_class","_CurrencyInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","_extends","getState","value","fractionDigits","hideTrailingZeros","focused","tempSelectionForOnChange","fromPosition","renderMain","props","signed","onSubmit","integerDigits","rest","_objectWithoutPropertiesLoose","_excluded","createElement","onBlurWhenDisabled","resetFocus","align","formatted","onBlur","handleBlur","onFocus","handleFocus","onMouseUp","handleMouseUp","onKeyDown","handleKeyDown","onValueChange","handleValueChange","onPaste","handlePaste","onCopy","handleCopy","onCut","handleCut","onMouseEnter","onMouseLeave","onMouseOver","ref","refInput","placeholder","getPlaceholder","focus","input","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","persist","selection","getSelection","target","defaultPrevented","action","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","Comma","scrollInput","_this$input","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","_event$target","selectionStart","selectionEnd","selectionDirection","valueLength","element","_inheritsLoose","_proto","prototype","validateProps","isNumeric","maxLength","undefined","componentDidMount","componentDidUpdate","prevProps","prevState","_this$getProps","Number","_this$state$selection","setSelectionRange","render","rootNodeRef","setRootNode","format","normilized","normalizeSelection","PureComponent","__KONTUR_REACT_UI__","displayName","inputMode","_input$selectionStart","_input$selectionEnd","HTMLInputElement","Error","isNaN","parseFloat","isFinite"],"sources":["CurrencyInput.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isIE11 } from '../../lib/client';\nimport type { InputProps } from '../Input';\nimport { Input } from '../Input';\nimport type { Nullable, Override } from '../../typings/utility-types';\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 { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport type { Selection, SelectionDirection } from './SelectionHelper';\nimport { SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n Omit<InputProps, 'showClearIcon'>,\n {\n /** Задает значение инпута. */\n value?: Nullable<number>;\n\n /** Убирает лишние нули после запятой. */\n hideTrailingZeros?: boolean;\n\n /** Устанавливает минимальное количество отображаемых знаков после запятой. */\n fractionDigits?: Nullable<number>;\n\n /** Разрешает отрицательные значения. */\n signed?: boolean;\n\n /** Задает допустимое количество цифр целой части. Если передан **0**, или fractionDigits=15, то и в целой части допускается только **0**. */\n integerDigits?: Nullable<number>;\n\n /** Задает функцию, которая вызывается при изменении `value`. */\n onValueChange: (value: Nullable<number>) => void;\n\n /** Задает функцию, которая вызывается при отправке формы. */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\nexport const CurrencyInputDataTids = {\n root: 'CurrencyInput__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<CurrencyInputProps, 'align' | 'fractionDigits' | 'hideTrailingZeros' | 'value' | 'inputMode'>\n>;\n\n/**\n * `CurrencyInput` — поле для денежных сумм (и других числовых значений).\n * Принимает любые свойства `Input`.\n *\n * Используйте такое поле, когда нужно вводить значение в рублях, долларах или другой валюте.\n * Оно форматирует введенное значение и помогает пользователю не ошибиться при вводе.\n *\n * Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).\n *\n * **Почему 15?** Максимальное безопасное целочисленное значение - 9007199254740991 (16 цифр). Убрав один разряд под знак, мы получим \"новое\" максимальное безопасное значение - 999999999999999 (15 цифр).\n * При этом десятичный резделитель может находиться в любом месте. Если целая часть равна 0, то она не учитывается. Детали можно почитать здесь - [MDN web docs](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER).\n *\n * Если `fractionDigits=15`, то в целой части допускается **0**.\n */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n public static displayName = 'CurrencyInput';\n\n public static defaultProps: DefaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n private getProps = createPropsGetter(CurrencyInput.defaultProps);\n private validateProps(props: CurrencyInputProps): void {\n warning(isNumeric(props.value), '[CurrencyInput]: Prop `value` is not a valid number');\n warning(\n props.maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (props.integerDigits || 0) + (props.fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee CurrencyInput documentation`,\n );\n }\n\n public state: CurrencyInputState = {\n ...this.getState(this.getProps().value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.getProps();\n this.validateProps(this.getProps());\n\n if (\n (isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted)) ||\n prevProps.fractionDigits !== fractionDigits\n ) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (isNonNullable(prevProps.value) && isNullable(value)) {\n this.setState({ formatted: '' });\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n\n return (\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <Input\n data-tid={CurrencyInputDataTids.root}\n {...rest}\n align={this.getProps().align}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n aria-label={this.props['aria-label']}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : getPlaceholder(props)}\n />\n </FocusControlWrapper>\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Comma: {\n this.inputValue(selection.start, selection.end, ',');\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.getProps().fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (isNonNullable(delta) && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLength = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLength,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLength,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private resetFocus = () => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n });\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(event);\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!isInstanceOf(input, globalObject.HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart ?? 0,\n end: input.selectionEnd ?? 0,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nfunction isNumeric(value: unknown): value is number | string {\n return !isNaN(parseFloat(value as string)) && isFinite(value as number);\n}\n\nconst getPlaceholder = (props: CurrencyInputProps) => {\n if (isNullable(props.placeholder)) {\n return CurrencyHelper.format(0, {\n fractionDigits: props.fractionDigits,\n hideTrailingZeros: props.hideTrailingZeros,\n });\n }\n\n return props.placeholder;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","warning","debounce","globalObject","isNonNullable","isNullable","isIE11","Input","CommonWrapper","rootNode","createPropsGetter","isInstanceOf","FocusControlWrapper","MAX_SAFE_DIGITS","SelectionHelper","CurrencyHelper","CurrencyInputHelper","CURRENCY_INPUT_ACTIONS","extractAction","CurrencyInputDataTids","root","CurrencyInput","_class","_CurrencyInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","_extends","getState","value","fractionDigits","hideTrailingZeros","focused","tempSelectionForOnChange","fromPosition","renderMain","props","signed","onSubmit","integerDigits","rest","_objectWithoutPropertiesLoose","_excluded","createElement","onBlurWhenDisabled","resetFocus","align","formatted","onBlur","handleBlur","onFocus","handleFocus","onMouseUp","handleMouseUp","onKeyDown","handleKeyDown","onValueChange","handleValueChange","onPaste","handlePaste","onCopy","handleCopy","onCut","handleCut","onMouseEnter","onMouseLeave","onMouseOver","ref","refInput","placeholder","getPlaceholder","focus","input","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","persist","selection","getSelection","target","defaultPrevented","action","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","Comma","scrollInput","_this$input","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","_event$target","selectionStart","selectionEnd","selectionDirection","valueLength","element","_inheritsLoose","_proto","prototype","validateProps","isNumeric","maxLength","undefined","componentDidMount","componentDidUpdate","prevProps","prevState","_this$getProps","Number","_this$state$selection","setSelectionRange","render","rootNodeRef","setRootNode","format","normilized","normalizeSelection","PureComponent","__KONTUR_REACT_UI__","displayName","inputMode","_input$selectionStart","_input$selectionEnd","HTMLInputElement","Error","isNaN","parseFloat","isFinite"],"sources":["CurrencyInput.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isIE11 } from '../../lib/client';\nimport type { InputProps } from '../Input';\nimport { Input } from '../Input';\nimport type { Nullable, Override } from '../../typings/utility-types';\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 { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport type { Selection, SelectionDirection } from './SelectionHelper';\nimport { SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n Omit<InputProps, 'showClearIcon'>,\n {\n /** Задаёт значение поля. */\n value?: Nullable<number>;\n\n /** Убирает лишние нули после запятой. */\n hideTrailingZeros?: boolean;\n\n /** Устанавливает минимальное количество отображаемых знаков после запятой. Если fractionDigits=15, то в целой части допускается только **0**. */\n fractionDigits?: Nullable<number>;\n\n /** Разрешает вводить в поле символ минуса для отрицательных значений. */\n signed?: boolean;\n\n /** Задаёт допустимое количество цифр целой части до запятой.\n * Если передан **0**, то в целой части допускается только **0**. */\n integerDigits?: Nullable<number>;\n\n /** Задаёт функцию, которая вызывается при изменении `value`. */\n onValueChange: (value: Nullable<number>) => void;\n\n /** Задаёт функцию, которая вызывается при отправке формы. */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\nexport const CurrencyInputDataTids = {\n root: 'CurrencyInput__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<CurrencyInputProps, 'align' | 'fractionDigits' | 'hideTrailingZeros' | 'value' | 'inputMode'>\n>;\n\n/** Поле для денежных сумм. */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n public static displayName = 'CurrencyInput';\n\n public static defaultProps: DefaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n private getProps = createPropsGetter(CurrencyInput.defaultProps);\n private validateProps(props: CurrencyInputProps): void {\n warning(\n isNumeric(props.value) || isNullable(props.value),\n '[CurrencyInput]: Prop `value` is not a valid number. Received value is `' + props.value + '`.',\n );\n warning(\n props.maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (props.integerDigits || 0) + (props.fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee CurrencyInput documentation`,\n );\n }\n\n public state: CurrencyInputState = {\n ...this.getState(this.getProps().value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.getProps();\n this.validateProps(this.getProps());\n\n if (\n (isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted)) ||\n prevProps.fractionDigits !== fractionDigits\n ) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (isNonNullable(prevProps.value) && isNullable(value)) {\n this.setState({ formatted: '' });\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n\n return (\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <Input\n data-tid={CurrencyInputDataTids.root}\n {...rest}\n align={this.getProps().align}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n aria-label={this.props['aria-label']}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : getPlaceholder(props)}\n />\n </FocusControlWrapper>\n );\n };\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /** Программно снимает фокус с кнопки.\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Comma: {\n this.inputValue(selection.start, selection.end, ',');\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.getProps().fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (isNonNullable(delta) && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n this.props.onPaste?.(event);\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLength = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLength,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLength,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private resetFocus = () => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.getProps().fractionDigits, this.getProps().hideTrailingZeros),\n focused: false,\n });\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(event);\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!isInstanceOf(input, globalObject.HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart ?? 0,\n end: input.selectionEnd ?? 0,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nfunction isNumeric(value: unknown): value is number | string {\n return !isNaN(parseFloat(value as string)) && isFinite(value as number);\n}\n\nconst getPlaceholder = (props: CurrencyInputProps) => {\n if (isNullable(props.placeholder)) {\n return CurrencyHelper.format(0, {\n fractionDigits: props.fractionDigits,\n hideTrailingZeros: props.hideTrailingZeros,\n });\n }\n\n return props.placeholder;\n};\n"],"mappings":";AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,OAAO,MAAM,SAAS;AAC7B,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,SAASC,YAAY,QAAQ,0BAA0B;;AAEvD,SAASC,aAAa,EAAEC,UAAU,QAAQ,iBAAiB;AAC3D,SAASC,MAAM,QAAQ,kBAAkB;;AAEzC,SAASC,KAAK,QAAQ,UAAU;;;AAGhC,SAASC,aAAa,QAAQ,8BAA8B;;AAE5D,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,iBAAiB,QAAQ,6BAA6B;AAC/D,SAASC,YAAY,QAAQ,wBAAwB;AACrD,SAASC,mBAAmB,QAAQ,oCAAoC;;AAExE,SAASC,eAAe,QAAQ,aAAa;;AAE7C,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,SAASC,sBAAsB,EAAEC,aAAa,QAAQ,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCtF,OAAO,IAAMC,qBAAqB,GAAG;EACnCC,IAAI,EAAE;AACR,CAAU;;;;;;AAMV;AACA;AACaC,aAAa,GADzBZ,QAAQ,CAAAa,MAAA,IAAAC,cAAA,0BAAAC,oBAAA,YAAAH,cAAA,OAAAI,KAAA,UAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,KAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA,GAAAN,KAAA,GAAAD,oBAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,oBAAA,SAAAU,MAAA,CAAAL,IAAA,WAAAJ,KAAA;;;;;;;;;;;;IAaCU,QAAQ,GAAGzB,iBAAiB,CAACW,aAAa,CAACe,YAAY,CAAC,CAAAX,KAAA;;;;;;;;;;;;;;;;;IAiBzDY,KAAK,GAAAC,QAAA;IACPb,KAAA,CAAKc,QAAQ,CAACd,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACK,KAAK,EAAEf,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACM,cAAc,EAAEhB,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACO,iBAAiB,CAAC;MAC1GC,OAAO,EAAE,KAAK,IAAAlB,KAAA;;;;IAIRmB,wBAAwB,GAAc9B,eAAe,CAAC+B,YAAY,CAAC,CAAC,CAAC,CAAApB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuCtEqB,UAAU,GAAG,UAACC,KAAiD,EAAK;MACzE,IAAQN,cAAc,GAAkEM,KAAK,CAArFN,cAAc,CAAEO,MAAM,GAA0DD,KAAK,CAArEC,MAAM,CAAEC,QAAQ,GAAgDF,KAAK,CAA7DE,QAAQ,CAAEC,aAAa,GAAiCH,KAAK,CAAnDG,aAAa,CAAER,iBAAiB,GAAcK,KAAK,CAApCL,iBAAiB,CAAKS,IAAI,GAAAC,6BAAA,CAAKL,KAAK,EAAAM,SAAA;;MAE7F;QACErD,KAAA,CAAAsD,aAAA,CAAC1C,mBAAmB,IAAC2C,kBAAkB,EAAE9B,KAAA,CAAK+B,UAAW;QACvDxD,KAAA,CAAAsD,aAAA,CAAC/C,KAAK,EAAA+B,QAAA;UACJ,YAAUnB,qBAAqB,CAACC,IAAK;QACjC+B,IAAI;UACRM,KAAK,EAAEhC,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACsB,KAAM;UAC7BjB,KAAK,EAAEf,KAAA,CAAKY,KAAK,CAACqB,SAAU;UAC5BC,MAAM,EAAElC,KAAA,CAAKmC,UAAW;UACxBC,OAAO,EAAEpC,KAAA,CAAKqC,WAAY;UAC1BC,SAAS,EAAEtC,KAAA,CAAKuC,aAAc;UAC9BC,SAAS,EAAExC,KAAA,CAAKyC,aAAc;UAC9BC,aAAa,EAAE1C,KAAA,CAAK2C,iBAAkB;UACtCC,OAAO,EAAE5C,KAAA,CAAK6C,WAAY;UAC1BC,MAAM,EAAE9C,KAAA,CAAK+C,UAAW;UACxBC,KAAK,EAAEhD,KAAA,CAAKiD,SAAU;UACtB,cAAYjD,KAAA,CAAKsB,KAAK,CAAC,YAAY,CAAE;UACrC4B,YAAY,EAAElD,KAAA,CAAKsB,KAAK,CAAC4B,YAAa;UACtCC,YAAY,EAAEnD,KAAA,CAAKsB,KAAK,CAAC6B,YAAa;UACtCC,WAAW,EAAEpD,KAAA,CAAKsB,KAAK,CAAC8B,WAAY;UACpCC,GAAG,EAAErD,KAAA,CAAKsD,QAAS;UACnBC,WAAW,EAAEvD,KAAA,CAAKY,KAAK,CAACM,OAAO,GAAG,EAAE,GAAGsC,cAAc,CAAClC,KAAK,CAAE;QAC9D;QACkB,CAAC;;IAE1B,CAAC;;IAED;AACF;AACA;AACA,OAHEtB,KAAA;IAIOyD,KAAK,GAAG,YAAM;MACnB,IAAIzD,KAAA,CAAK0D,KAAK,EAAE;QACd1D,KAAA,CAAK0D,KAAK,CAACD,KAAK,CAAC,CAAC;MACpB;IACF,CAAC;;IAED;AACF;AACA,OAFEzD,KAAA;IAGO2D,IAAI,GAAG,YAAM;MAClB,IAAI3D,KAAA,CAAK0D,KAAK,EAAE;QACd1D,KAAA,CAAK0D,KAAK,CAACC,IAAI,CAAC,CAAC;MACnB;IACF,CAAC;;;;;;;;;;;;;;;IAeD;IAAA3D,KAAA,CACiB4D,8BAA8B,GAAGnF,QAAQ,CAACuB,KAAA,CAAK6D,qBAAqB,EAAE,GAAG,CAAC,CAAA7D,KAAA;;IAEnFuC,aAAa,GAAG,UAACuB,KAAyC,EAAK;MACrE,IAAIjF,MAAM,EAAE;QACViF,KAAK,CAACC,OAAO,CAAC,CAAC;QACf/D,KAAA,CAAK4D,8BAA8B,CAACE,KAAK,CAAC;MAC5C,CAAC,MAAM;QACL9D,KAAA,CAAK6D,qBAAqB,CAACC,KAAK,CAAC;MACnC;IACF,CAAC,CAAA9D,KAAA;;IAEOyC,aAAa,GAAG,UAACqB,KAA4C,EAAK;MACxE,IAAME,SAAS,GAAGhE,KAAA,CAAKiE,YAAY,CAACH,KAAK,CAACI,MAAM,CAAC;MACjDlE,KAAA,CAAKmB,wBAAwB,GAAG6C,SAAS;;MAEzC,IAAIhE,KAAA,CAAKsB,KAAK,CAACkB,SAAS,EAAE;QACxBxC,KAAA,CAAKsB,KAAK,CAACkB,SAAS,CAACsB,KAAK,CAAC;QAC3B,IAAIA,KAAK,CAACK,gBAAgB,EAAE;UAC1B;QACF;MACF;;MAEA,IAAMC,MAAM,GAAG3E,aAAa,CAACqE,KAAK,CAAC;;MAEnC,IAAIM,MAAM,KAAK5E,sBAAsB,CAAC6E,MAAM,EAAE;QAC5C;MACF;;MAEA,IAAID,MAAM,KAAK5E,sBAAsB,CAAC8E,OAAO,EAAE;QAC7CR,KAAK,CAACS,cAAc,CAAC,CAAC;MACxB;;MAEA,QAAQH,MAAM;QACZ,KAAK5E,sBAAsB,CAACgF,MAAM,CAAE;YAClC,IAAIxE,KAAA,CAAKsB,KAAK,CAACE,QAAQ,EAAE;cACvBxB,KAAA,CAAKsB,KAAK,CAACE,QAAQ,CAAC,CAAC;YACvB;YACA;UACF;QACA,KAAKhC,sBAAsB,CAACiF,SAAS,CAAE;YACrCzE,KAAA,CAAK0E,UAAU,CAACnF,mBAAmB,CAACoF,UAAU,CAAC3E,KAAA,CAAKY,KAAK,CAACqB,SAAS,EAAE+B,SAAS,EAAE,CAAC,CAAC,CAAC,EAAEA,SAAS,CAACY,GAAG,EAAE,EAAE,CAAC;YACvG;UACF;QACA,KAAKpF,sBAAsB,CAACqF,MAAM,CAAE;YAClC7E,KAAA,CAAK0E,UAAU,CAACV,SAAS,CAACc,KAAK,EAAEvF,mBAAmB,CAACoF,UAAU,CAAC3E,KAAA,CAAKY,KAAK,CAACqB,SAAS,EAAE+B,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACzG;UACF;QACA,KAAKxE,sBAAsB,CAACuF,cAAc,CAAE;YAC1C/E,KAAA,CAAK2E,UAAU,CAACX,SAAS,EAAE,CAAC,CAAC,CAAC;YAC9B;UACF;QACA,KAAKxE,sBAAsB,CAACwF,eAAe,CAAE;YAC3ChF,KAAA,CAAK2E,UAAU,CAACX,SAAS,EAAE,CAAC,CAAC,CAAC;YAC9B;UACF;QACA,KAAKxE,sBAAsB,CAACyF,IAAI,CAAE;YAChCjF,KAAA,CAAKkF,QAAQ,CAAC,EAAElB,SAAS,EAAE3E,eAAe,CAAC+B,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D;UACF;QACA,KAAK5B,sBAAsB,CAAC2F,GAAG,CAAE;YAC/B,IAAMP,GAAG,GAAG5E,KAAA,CAAKY,KAAK,CAACqB,SAAS,CAAC9B,MAAM;YACvCH,KAAA,CAAKkF,QAAQ,CAAC,EAAElB,SAAS,EAAE3E,eAAe,CAAC+B,YAAY,CAACwD,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/D;UACF;QACA,KAAKpF,sBAAsB,CAAC4F,mBAAmB,CAAE;YAC/CpF,KAAA,CAAKqF,eAAe,CAACrB,SAAS,EAAE,CAAC,CAAC,CAAC;YACnC;UACF;QACA,KAAKxE,sBAAsB,CAAC8F,oBAAoB,CAAE;YAChDtF,KAAA,CAAKqF,eAAe,CAACrB,SAAS,EAAE,CAAC,CAAC,CAAC;YACnC;UACF;QACA,KAAKxE,sBAAsB,CAAC+F,aAAa,CAAE;YACzCvF,KAAA,CAAKkF,QAAQ,CAAC;cACZlB,SAAS,EAAE3E,eAAe,CAACmG,OAAO,CAAC,CAAC,EAAExF,KAAA,CAAKY,KAAK,CAACqB,SAAS,CAAC9B,MAAM;YACnE,CAAC,CAAC;YACF;UACF;QACA,KAAKX,sBAAsB,CAACiG,sBAAsB,CAAE;YAClDzF,KAAA,CAAKkF,QAAQ,CAAC;cACZlB,SAAS,EAAE3E,eAAe,CAACqG,QAAQ,CAAC,CAAC,EAAE1B,SAAS,CAACc,KAAK;YACxD,CAAC,CAAC;YACF;UACF;QACA,KAAKtF,sBAAsB,CAACmG,oBAAoB,CAAE;YAChD,IAAMC,QAAQ,GAAG5F,KAAA,CAAKY,KAAK,CAACqB,SAAS,CAAC9B,MAAM;YAC5CH,KAAA,CAAKkF,QAAQ,CAAC;cACZlB,SAAS,EAAE3E,eAAe,CAACmG,OAAO,CAACxB,SAAS,CAACc,KAAK,EAAEc,QAAQ;YAC9D,CAAC,CAAC;YACF;UACF;QACA,KAAKpG,sBAAsB,CAACqG,KAAK,CAAE;YACjC7F,KAAA,CAAK0E,UAAU,CAACV,SAAS,CAACc,KAAK,EAAEd,SAAS,CAACY,GAAG,EAAE,GAAG,CAAC;YACpD;UACF;MACF;IACF,CAAC,CAAA5E,KAAA;;IAEO8F,WAAW,GAAG,YAAM,KAAAC,WAAA;MAC1B,IAAMC,IAAI,IAAAD,WAAA,GAAG/F,KAAA,CAAK0D,KAAK,qBAAVqC,WAAA,CAAYE,OAAO,CAAC,CAAC;MAClC,IAAI,CAACD,IAAI,IAAIA,IAAI,CAACE,WAAW,KAAKF,IAAI,CAACG,WAAW,EAAE;QAClD;MACF;MACA,IAAMC,GAAG,GAAG,CAAC;MACb,IAAMC,KAAK,GAAG,CAAC;;MAEf,IAAMrC,SAAS,GAAGhE,KAAA,CAAKY,KAAK,CAACoD,SAAS;MACtC,IAAMsC,QAAQ,GAAGtC,SAAS,CAACc,KAAK,KAAKd,SAAS,CAACY,GAAG;MAClD,IAAM2B,QAAQ,GAAGD,QAAQ,IAAItC,SAAS,CAACwC,SAAS,KAAK,SAAS,GAAGxC,SAAS,CAACY,GAAG,GAAGZ,SAAS,CAACc,KAAK;MAChG,IAAM2B,UAAU,GAAGzG,KAAA,CAAKY,KAAK,CAACqB,SAAS,CAAC9B,MAAM;MAC9C,IAAMuG,SAAS,GAAGV,IAAI,CAACE,WAAW,GAAGO,UAAU;MAC/C,IAAME,KAAK,GAAGC,IAAI,CAACC,IAAI,CAACb,IAAI,CAACG,WAAW,GAAGO,SAAS,CAAC;MACrD,IAAMI,UAAU,GAAGF,IAAI,CAACC,IAAI,CAACb,IAAI,CAACe,UAAU,GAAGL,SAAS,CAAC;MACzD,IAAMM,QAAQ,GAAGF,UAAU,GAAGH,KAAK;;MAEnC,IAAIJ,QAAQ,GAAGO,UAAU,GAAGV,GAAG,EAAE;QAC/BJ,IAAI,CAACe,UAAU,GAAG,CAACR,QAAQ,GAAGF,KAAK,IAAIK,SAAS;MAClD;MACA,IAAIH,QAAQ,GAAGS,QAAQ,GAAGZ,GAAG,EAAE;QAC7BJ,IAAI,CAACe,UAAU,GAAG,CAACR,QAAQ,GAAGI,KAAK,GAAGN,KAAK,IAAIK,SAAS;MAC1D;IACF,CAAC,CAAA1G,KAAA;;IAEOiE,YAAY,GAAG,UAACP,KAAkB,EAAgB;MACxD,IAAMM,SAAS,GAAGiD,0BAA0B,CAACvD,KAAK,CAAC;MACnD,OAAO;QACLoB,KAAK,EAAEd,SAAS,CAACc,KAAK;QACtBF,GAAG,EAAEZ,SAAS,CAACY,GAAG;QAClB4B,SAAS,EAAExG,KAAA,CAAKY,KAAK,CAACoD,SAAS,CAACwC;MAClC,CAAC;IACH,CAAC,CAAAxG,KAAA;;IAEO2E,UAAU,GAAG,UAACX,SAAoB,EAAEkD,IAAY,EAAK;MAC3D,IAAMX,QAAQ,GAAGhH,mBAAmB,CAACoF,UAAU,CAAC3E,KAAA,CAAKY,KAAK,CAACqB,SAAS,EAAE+B,SAAS,EAAEkD,IAAI,CAAC;MACtFlH,KAAA,CAAKkF,QAAQ,CAAC,EAAElB,SAAS,EAAE3E,eAAe,CAAC+B,YAAY,CAACmF,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC,CAAAvG,KAAA;;IAEOqF,eAAe,GAAG,UAACrB,SAAoB,EAAEkD,IAAY,EAAK;MAChE,IAAMC,QAAQ,GAAG5H,mBAAmB,CAAC8F,eAAe,CAACrF,KAAA,CAAKY,KAAK,CAACqB,SAAS,EAAE+B,SAAS,EAAEkD,IAAI,CAAC;MAC3FlH,KAAA,CAAKkF,QAAQ,CAAC,EAAElB,SAAS,EAAEmD,QAAQ,CAAC,CAAC,CAAC;IACxC,CAAC,CAAAnH,KAAA;;IAEO0E,UAAU,GAAG,UAACI,KAAa,EAAEF,GAAW,EAAE7D,KAAa,EAAK;MAClE,IAAMqG,MAAM,GAAG7H,mBAAmB,CAAC8H,UAAU,CAACrH,KAAA,CAAKY,KAAK,CAACqB,SAAS,EAAE6C,KAAK,EAAEF,GAAG,EAAE7D,KAAK,EAAE;QACrFU,aAAa,EAAEzB,KAAA,CAAKsB,KAAK,CAACG,aAAa;QACvCT,cAAc,EAAEhB,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACM,cAAc;QAC9CsG,QAAQ,EAAE,CAACtH,KAAA,CAAKsB,KAAK,CAACC;MACxB,CAAC,CAAC;MACF,IAAI6F,MAAM,EAAE;QACV,IAAMnF,SAAS,GAAGmF,MAAM,CAACrG,KAAK;QAC9B,IAAMiD,SAAS,GAAG3E,eAAe,CAAC+B,YAAY,CAACgG,MAAM,CAACb,QAAQ,CAAC;QAC/DvG,KAAA,CAAKkF,QAAQ,CAAC,EAAEjD,SAAS,EAATA,SAAS,EAAE+B,SAAS,EAATA,SAAS,CAAC,CAAC,EAAE,YAAM;UAC5C,IAAMuD,WAAW,GAAGjI,cAAc,CAACkI,KAAK,CAACvF,SAAS,CAAC;UACnD,IAAIjC,KAAA,CAAKsB,KAAK,CAACP,KAAK,KAAKwG,WAAW,EAAE;YACpCvH,KAAA,CAAKsB,KAAK,CAACoB,aAAa,CAAC6E,WAAW,CAAC;UACvC;QACF,CAAC,CAAC;QACF,OAAO,IAAI;MACb;;MAEA,IAAIvH,KAAA,CAAK0D,KAAK,EAAE;QACd1D,KAAA,CAAK0D,KAAK,CAAC+D,KAAK,CAAC,CAAC;MACpB;MACA,OAAO,KAAK;IACd,CAAC,CAAAzH,KAAA;;IAEO0H,gBAAgB,GAAG,UAAC3G,KAAa,EAAK;MAC5C,IAAMiD,SAAS,GAAGhE,KAAA,CAAKmB,wBAAwB;MAC/C,IAAMwG,QAAQ,GAAG3H,KAAA,CAAKY,KAAK,CAACqB,SAAS;MACrC,IAAI+B,SAAS,CAACc,KAAK,KAAKd,SAAS,CAACY,GAAG,EAAE;QACrC,OAAO7D,KAAK,CAAC6G,SAAS,CAAC5D,SAAS,CAACc,KAAK,EAAE/D,KAAK,CAACZ,MAAM,IAAIwH,QAAQ,CAACxH,MAAM,GAAG6D,SAAS,CAACY,GAAG,CAAC,CAAC;MAC3F,CAAC,MAAM,IAAI7D,KAAK,CAACZ,MAAM,GAAGwH,QAAQ,CAACxH,MAAM,EAAE;QACzC,OAAOY,KAAK,CAAC8G,MAAM,CAAC7D,SAAS,CAACc,KAAK,EAAE/D,KAAK,CAACZ,MAAM,GAAGwH,QAAQ,CAACxH,MAAM,CAAC;MACtE;MACA,OAAO,IAAI;IACb,CAAC,CAAAH,KAAA;;IAEO2C,iBAAiB,GAAG,UAAC5B,KAAa,EAAW;MACnD,IAAMiD,SAAS,GAAGhE,KAAA,CAAKmB,wBAAwB;MAC/C,IAAM2G,KAAK,GAAG9H,KAAA,CAAK0H,gBAAgB,CAAC3G,KAAK,CAAC;MAC1C,IAAIpC,aAAa,CAACmJ,KAAK,CAAC,IAAI,CAAC9H,KAAA,CAAK0E,UAAU,CAACV,SAAS,CAACc,KAAK,EAAEd,SAAS,CAACY,GAAG,EAAEkD,KAAK,CAAC,EAAE;QACnF9H,KAAA,CAAKkF,QAAQ,CAAC,EAAElB,SAAS,EAATA,SAAS,CAAC,CAAC,CAAC;MAC9B;IACF,CAAC,CAAAhE,KAAA;;IAEO6C,WAAW,GAAG,UAACiB,KAA6C,EAAK;MACvE,IAAMiE,IAAI,GAAGjE,KAAK,CAACkE,aAAa,CAACC,OAAO,CAAC,MAAM,CAAC;MAChD,IAAMjE,SAAS,GAAGhE,KAAA,CAAKiE,YAAY,CAACH,KAAK,CAACI,MAAM,CAAC;MACjDlE,KAAA,CAAK0E,UAAU,CAACV,SAAS,CAACc,KAAK,EAAEd,SAAS,CAACY,GAAG,EAAEmD,IAAI,CAAC;MACrDjE,KAAK,CAACS,cAAc,CAAC,CAAC;MACtBvE,KAAA,CAAKsB,KAAK,CAACsB,OAAO,YAAlB5C,KAAA,CAAKsB,KAAK,CAACsB,OAAO,CAAGkB,KAAK,CAAC;IAC7B,CAAC,CAAA9D,KAAA;;IAEO+C,UAAU,GAAG,UAACe,KAA6C,EAAK;MACtE,IAAME,SAAS,GAAGhE,KAAA,CAAKiE,YAAY,CAACH,KAAK,CAACI,MAAM,CAAC;MACjD,IAAIF,SAAS,CAACc,KAAK,KAAKd,SAAS,CAACY,GAAG,EAAE;QACrC,IAAMgD,SAAS,GAAG5H,KAAA,CAAKY,KAAK,CAACqB,SAAS,CAAC2F,SAAS,CAAC5D,SAAS,CAACc,KAAK,EAAEd,SAAS,CAACY,GAAG,CAAC;QAChF,IAAMmD,IAAI,GAAGzI,cAAc,CAAC4I,kBAAkB,CAACN,SAAS,CAAC;QACzD9D,KAAK,CAACkE,aAAa,CAACG,OAAO,CAAC,MAAM,EAAEJ,IAAI,CAAC;MAC3C;MACAjE,KAAK,CAACS,cAAc,CAAC,CAAC;IACxB,CAAC,CAAAvE,KAAA;;IAEOiD,SAAS,GAAG,UAACa,KAA6C,EAAK;MACrE,IAAME,SAAS,GAAGhE,KAAA,CAAKiE,YAAY,CAACH,KAAK,CAACI,MAAM,CAAC;MACjD,IAAIF,SAAS,CAACc,KAAK,KAAKd,SAAS,CAACY,GAAG,EAAE;QACrC,IAAMgD,SAAS,GAAG5H,KAAA,CAAKY,KAAK,CAACqB,SAAS,CAAC2F,SAAS,CAAC5D,SAAS,CAACc,KAAK,EAAEd,SAAS,CAACY,GAAG,CAAC;QAChF,IAAMmD,IAAI,GAAGzI,cAAc,CAAC4I,kBAAkB,CAACN,SAAS,CAAC;QACzD9D,KAAK,CAACkE,aAAa,CAACG,OAAO,CAAC,MAAM,EAAEJ,IAAI,CAAC;QACzC/H,KAAA,CAAK0E,UAAU,CAACV,SAAS,CAACc,KAAK,EAAEd,SAAS,CAACY,GAAG,EAAE,EAAE,CAAC;MACrD;MACAd,KAAK,CAACS,cAAc,CAAC,CAAC;IACxB,CAAC,CAAAvE,KAAA;;IAEOqC,WAAW,GAAG,UAACyB,KAAyC,EAAK;MACnE,IAAAsE,aAAA,GAA6DtE,KAAK,CAACI,MAAM,CAAjEmE,cAAc,GAAAD,aAAA,CAAdC,cAAc,CAAEC,YAAY,GAAAF,aAAA,CAAZE,YAAY,CAAEC,kBAAkB,GAAAH,aAAA,CAAlBG,kBAAkB;MACxD,IAAMC,WAAW,GAAG1E,KAAK,CAACI,MAAM,CAACnD,KAAK,CAACZ,MAAM;;MAE7C,IAAM6D,SAAS,GAAG;QAChBc,KAAK,EAAEuD,cAAc,KAAKC,YAAY,GAAGD,cAAc,IAAI,CAAC,GAAGA,cAAc,IAAIG,WAAW;QAC5F5D,GAAG,EAAE0D,YAAY,KAAKD,cAAc,GAAGC,YAAY,IAAI,CAAC,GAAGA,YAAY,IAAIE,WAAW;QACtFhC,SAAS,EAAG+B,kBAAkB,IAA2B;MAC3D,CAAC;;MAEDvI,KAAA,CAAKkF,QAAQ,CAAC;QACZhE,OAAO,EAAE,IAAI;QACb8C,SAAS,EAATA;MACF,CAAC,CAAC;;MAEF,IAAIhE,KAAA,CAAKsB,KAAK,CAACc,OAAO,EAAE;QACtBpC,KAAA,CAAKsB,KAAK,CAACc,OAAO,CAAC0B,KAAK,CAAC;MAC3B;IACF,CAAC,CAAA9D,KAAA;;IAEO+B,UAAU,GAAG,YAAM;MACzB,IAAMhB,KAAK,GAAGzB,cAAc,CAACkI,KAAK,CAACxH,KAAA,CAAKY,KAAK,CAACqB,SAAS,CAAC;;MAExDjC,KAAA,CAAKkF,QAAQ,CAAArE,QAAA;MACRb,KAAA,CAAKc,QAAQ,CAACC,KAAK,EAAEf,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACM,cAAc,EAAEhB,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACO,iBAAiB,CAAC;QAC1FC,OAAO,EAAE,KAAK;MACf,CAAC;IACJ,CAAC,CAAAlB,KAAA;;IAEOmC,UAAU,GAAG,UAAC2B,KAAyC,EAAK;MAClE9D,KAAA,CAAK+B,UAAU,CAAC,CAAC;MACjB/B,KAAA,CAAKsB,KAAK,CAACY,MAAM,YAAjBlC,KAAA,CAAKsB,KAAK,CAACY,MAAM,CAAG4B,KAAK,CAAC;IAC5B,CAAC,CAAA9D,KAAA;;IAEOsD,QAAQ,GAAG,UAACmF,OAAwB,EAAK;MAC/CzI,KAAA,CAAK0D,KAAK,GAAG+E,OAAO;IACtB,CAAC,QAAAzI,KAAA,EAAA0I,cAAA,CAAA9I,aAAA,EAAAG,oBAAA,MAAA4I,MAAA,GAAA/I,aAAA,CAAAgJ,SAAA,CAAAD,MAAA,CArXOE,aAAa,GAArB,SAAAA,cAAsBvH,KAAyB,EAAQ,CACrD9C,OAAO,CACLsK,SAAS,CAACxH,KAAK,CAACP,KAAK,CAAC,IAAInC,UAAU,CAAC0C,KAAK,CAACP,KAAK,CAAC,EACjD,0EAA0E,GAAGO,KAAK,CAACP,KAAK,GAAG,IAC7F,CAAC,CACDvC,OAAO,CACL8C,KAAK,CAACyH,SAAS,KAAKC,SAAS,mGAE/B,CAAC,CACDxK,OAAO,CACL,CAAC8C,KAAK,CAACG,aAAa,IAAI,CAAC,KAAKH,KAAK,CAACN,cAAc,IAAI,CAAC,CAAC,IAAI5B,eAAe,EAC3E,0EAAwEA,eAAe,4CAEzF,CAAC,CACH,CAAC,CAAAuJ,MAAA,CAYMM,iBAAiB,GAAxB,SAAAA,kBAAA,EAAiC,CAC/B,IAAI,CAACJ,aAAa,CAAC,IAAI,CAACnI,QAAQ,CAAC,CAAC,CAAC,CACrC,CAAC,CAAAiI,MAAA,CAEMO,kBAAkB,GAAzB,SAAAA,mBAA0BC,SAA6B,EAAEC,SAA6B,EAAE,CACtF,IAAAC,cAAA,GAAqD,IAAI,CAAC3I,QAAQ,CAAC,CAAC,CAA5DK,KAAK,GAAAsI,cAAA,CAALtI,KAAK,CAAEC,cAAc,GAAAqI,cAAA,CAAdrI,cAAc,CAAEC,iBAAiB,GAAAoI,cAAA,CAAjBpI,iBAAiB,CAChD,IAAI,CAAC4H,aAAa,CAAC,IAAI,CAACnI,QAAQ,CAAC,CAAC,CAAC,CAEnC,IACGoI,SAAS,CAAC/H,KAAK,CAAC,IAAIuI,MAAM,CAACvI,KAAK,CAAC,KAAKzB,cAAc,CAACkI,KAAK,CAAC4B,SAAS,CAACnH,SAAS,CAAC,IAChFkH,SAAS,CAACnI,cAAc,KAAKA,cAAc,EAC3C,CACA,IAAI,CAACkE,QAAQ,CAAC,IAAI,CAACpE,QAAQ,CAACC,KAAK,EAAEC,cAAc,EAAEC,iBAAiB,CAAC,CAAC,CACxE,CACA,IAAItC,aAAa,CAACwK,SAAS,CAACpI,KAAK,CAAC,IAAInC,UAAU,CAACmC,KAAK,CAAC,EAAE,CACvD,IAAI,CAACmE,QAAQ,CAAC,EAAEjD,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAClC,CACA,IAAI,IAAI,CAACrB,KAAK,CAACM,OAAO,IAAI,IAAI,CAACwC,KAAK,EAAE,CACpC,IAAA6F,qBAAA,GAAuB,IAAI,CAAC3I,KAAK,CAACoD,SAAS,CAAnCc,KAAK,GAAAyE,qBAAA,CAALzE,KAAK,CAAEF,GAAG,GAAA2E,qBAAA,CAAH3E,GAAG,CAElB,IAAI,CAAClB,KAAK,CAAC8F,iBAAiB,CAAC1E,KAAK,EAAEF,GAAG,CAAC,CAC1C,CACA,IAAIwE,SAAS,CAACpF,SAAS,KAAK,IAAI,CAACpD,KAAK,CAACoD,SAAS,EAAE,CAChD,IAAI,CAAC8B,WAAW,CAAC,CAAC,CACpB,CACF,CAAC,CAAA6C,MAAA,CAEMc,MAAM,GAAb,SAAAA,OAAA,EAAgB,CACd,oBACElL,KAAA,CAAAsD,aAAA,CAAC9C,aAAa,EAAA8B,QAAA,GAAC6I,WAAW,EAAE,IAAI,CAACC,WAAY,IAAK,IAAI,CAACjJ,QAAQ,CAAC,CAAC,GAC9D,IAAI,CAACW,UACO,CAAC,CAEpB,CAAC,CAAAsH,MAAA,CAkDO7H,QAAQ,GAAhB,SAAAA,SAAiBC,KAAuB,EAAEC,cAAgC,EAAEC,iBAA0B,EAAE,CACtG,OAAO,EACLgB,SAAS,EAAE3C,cAAc,CAACsK,MAAM,CAAC7I,KAAK,EAAE,EAAEC,cAAc,EAAdA,cAAc,EAAEC,iBAAiB,EAAjBA,iBAAiB,CAAC,CAAC,CAAC,EAC9E+C,SAAS,EAAE3E,eAAe,CAAC+B,YAAY,CAAC,CAAC,CAAC,CAC5C,CAAC,CACH,CAAC,CAAAuH,MAAA,CAEO9E,qBAAqB,GAA7B,SAAAA,sBAA8BC,KAAyC,EAAE,CACvE,IAAME,SAAS,GAAGiD,0BAA0B,CAACnD,KAAK,CAACI,MAAM,CAAC,CAC1D,IAAM2F,UAAU,GAAGtK,mBAAmB,CAACuK,kBAAkB,CAAC,IAAI,CAAClJ,KAAK,CAACqB,SAAS,EAAE+B,SAAS,CAAC,CAC1F,IAAI,CAACkB,QAAQ,CAAC,EAAElB,SAAS,EAAE6F,UAAU,CAAC,CAAC,CAAC,CAC1C,CAAC,QAAAjK,aAAA,GArIgCrB,KAAK,CAACwL,aAAa,GAAAjK,cAAA,CACtCkK,mBAAmB,GAAG,eAAe,EAAAlK,cAAA,CACrCmK,WAAW,GAAG,eAAe,EAAAnK,cAAA,CAE7Ba,YAAY,GAAiB,EACzCqB,KAAK,EAAE,OAAO,EACdhB,cAAc,EAAE,CAAC,EACjBC,iBAAiB,EAAE,KAAK,EACxBF,KAAK,EAAE,IAAI,EACXmJ,SAAS,EAAE,SAAS,CACtB,CAAC,EAAApK,cAAA,MAAAD,MAAA;;;AA2XH,SAASoH,0BAA0BA,CAACvD,KAAkB,EAAa,KAAAyG,qBAAA,EAAAC,mBAAA;EACjE,IAAI,CAAClL,YAAY,CAACwE,KAAK,EAAEhF,YAAY,CAAC2L,gBAAgB,CAAC,EAAE;IACvD,MAAM,IAAIC,KAAK,CAAC,+BAA+B,CAAC;EAClD;;EAEA,OAAO;IACLxF,KAAK,GAAAqF,qBAAA,GAAEzG,KAAK,CAAC2E,cAAc,YAAA8B,qBAAA,GAAI,CAAC;IAChCvF,GAAG,GAAAwF,mBAAA,GAAE1G,KAAK,CAAC4E,YAAY,YAAA8B,mBAAA,GAAI,CAAC;IAC5B5D,SAAS,EAAE9C,KAAK,CAAC6E;EACnB,CAAC;AACH;;AAEA,SAASO,SAASA,CAAC/H,KAAc,EAA4B;EAC3D,OAAO,CAACwJ,KAAK,CAACC,UAAU,CAACzJ,KAAe,CAAC,CAAC,IAAI0J,QAAQ,CAAC1J,KAAe,CAAC;AACzE;;AAEA,IAAMyC,cAAc,GAAG,SAAjBA,cAAcA,CAAIlC,KAAyB,EAAK;EACpD,IAAI1C,UAAU,CAAC0C,KAAK,CAACiC,WAAW,CAAC,EAAE;IACjC,OAAOjE,cAAc,CAACsK,MAAM,CAAC,CAAC,EAAE;MAC9B5I,cAAc,EAAEM,KAAK,CAACN,cAAc;MACpCC,iBAAiB,EAAEK,KAAK,CAACL;IAC3B,CAAC,CAAC;EACJ;;EAEA,OAAOK,KAAK,CAACiC,WAAW;AAC1B,CAAC","ignoreList":[]}
|
|
@@ -6,19 +6,20 @@ import type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonW
|
|
|
6
6
|
import type { TGetRootNode } from '../../lib/rootNode';
|
|
7
7
|
import type { Selection } from './SelectionHelper';
|
|
8
8
|
export interface CurrencyInputProps extends Pick<AriaAttributes, 'aria-label'>, CommonProps, Override<Omit<InputProps, 'showClearIcon'>, {
|
|
9
|
-
/**
|
|
9
|
+
/** Задаёт значение поля. */
|
|
10
10
|
value?: Nullable<number>;
|
|
11
11
|
/** Убирает лишние нули после запятой. */
|
|
12
12
|
hideTrailingZeros?: boolean;
|
|
13
|
-
/** Устанавливает минимальное количество отображаемых знаков после запятой. */
|
|
13
|
+
/** Устанавливает минимальное количество отображаемых знаков после запятой. Если fractionDigits=15, то в целой части допускается только **0**. */
|
|
14
14
|
fractionDigits?: Nullable<number>;
|
|
15
|
-
/** Разрешает
|
|
15
|
+
/** Разрешает вводить в поле символ минуса для отрицательных значений. */
|
|
16
16
|
signed?: boolean;
|
|
17
|
-
/**
|
|
17
|
+
/** Задаёт допустимое количество цифр целой части до запятой.
|
|
18
|
+
* Если передан **0**, то в целой части допускается только **0**. */
|
|
18
19
|
integerDigits?: Nullable<number>;
|
|
19
|
-
/**
|
|
20
|
+
/** Задаёт функцию, которая вызывается при изменении `value`. */
|
|
20
21
|
onValueChange: (value: Nullable<number>) => void;
|
|
21
|
-
/**
|
|
22
|
+
/** Задаёт функцию, которая вызывается при отправке формы. */
|
|
22
23
|
onSubmit?: () => void;
|
|
23
24
|
}> {
|
|
24
25
|
}
|
|
@@ -31,20 +32,7 @@ export declare const CurrencyInputDataTids: {
|
|
|
31
32
|
readonly root: "CurrencyInput__root";
|
|
32
33
|
};
|
|
33
34
|
type DefaultProps = Required<Pick<CurrencyInputProps, 'align' | 'fractionDigits' | 'hideTrailingZeros' | 'value' | 'inputMode'>>;
|
|
34
|
-
/**
|
|
35
|
-
* `CurrencyInput` — поле для денежных сумм (и других числовых значений).
|
|
36
|
-
* Принимает любые свойства `Input`.
|
|
37
|
-
*
|
|
38
|
-
* Используйте такое поле, когда нужно вводить значение в рублях, долларах или другой валюте.
|
|
39
|
-
* Оно форматирует введенное значение и помогает пользователю не ошибиться при вводе.
|
|
40
|
-
*
|
|
41
|
-
* Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).
|
|
42
|
-
*
|
|
43
|
-
* **Почему 15?** Максимальное безопасное целочисленное значение - 9007199254740991 (16 цифр). Убрав один разряд под знак, мы получим "новое" максимальное безопасное значение - 999999999999999 (15 цифр).
|
|
44
|
-
* При этом десятичный резделитель может находиться в любом месте. Если целая часть равна 0, то она не учитывается. Детали можно почитать здесь - [MDN web docs](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER).
|
|
45
|
-
*
|
|
46
|
-
* Если `fractionDigits=15`, то в целой части допускается **0**.
|
|
47
|
-
*/
|
|
35
|
+
/** Поле для денежных сумм. */
|
|
48
36
|
export declare class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {
|
|
49
37
|
static __KONTUR_REACT_UI__: string;
|
|
50
38
|
static displayName: string;
|
|
@@ -60,11 +48,12 @@ export declare class CurrencyInput extends React.PureComponent<CurrencyInputProp
|
|
|
60
48
|
componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState): void;
|
|
61
49
|
render(): React.JSX.Element;
|
|
62
50
|
renderMain: (props: CommonWrapperRestProps<CurrencyInputProps>) => React.JSX.Element;
|
|
63
|
-
/**
|
|
51
|
+
/** Программно устанавливает фокус на поле.
|
|
52
|
+
* Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.
|
|
64
53
|
* @public
|
|
65
54
|
*/
|
|
66
55
|
focus: () => void;
|
|
67
|
-
/**
|
|
56
|
+
/** Программно снимает фокус с кнопки.
|
|
68
57
|
* @public
|
|
69
58
|
*/
|
|
70
59
|
blur: () => void;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
3
|
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
4
|
-
var _excluded = ["type", "onRestore", "auto", "refInput", "value", "width"];
|
|
4
|
+
var _excluded = ["type", "onRestore", "auto", "refInput", "value", "width", "size", "mask", "maskChar", "formatChars", "alwaysShowMask", "signed", "integerDigits", "fractionDigits", "hideTrailingZeros", "buttonAriaLabel", "corners"];
|
|
5
5
|
var _class, _FxInput;
|
|
6
6
|
import React from 'react';
|
|
7
|
+
import warning from 'warning';
|
|
7
8
|
import { Group } from "../../Group";
|
|
8
9
|
import { Input } from "../../Input";
|
|
9
10
|
import { CurrencyInput } from "../../CurrencyInput";
|
|
@@ -11,6 +12,9 @@ import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
|
11
12
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
12
13
|
import { rootNode } from "../../../lib/rootNode";
|
|
13
14
|
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
15
|
+
import { MaskedInput } from "../../MaskedInput";
|
|
16
|
+
import { getFullReactUIFlagsContext } from "../../../lib/featureFlagsContext";
|
|
17
|
+
import { ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext/ReactUIFeatureFlagsContext";
|
|
14
18
|
import { withSize } from "../../../lib/size/SizeDecorator";
|
|
15
19
|
import { MathFunctionIcon } from "../MathFunctionIcon";
|
|
16
20
|
import { FxInputRestoreBtn } from "../FxInputRestoreBtn";
|
|
@@ -18,14 +22,10 @@ export var FxInputDataTids = {
|
|
|
18
22
|
root: 'FxInput__root'
|
|
19
23
|
};
|
|
20
24
|
|
|
21
|
-
/**
|
|
22
|
-
* Автополе `FxInput`.
|
|
25
|
+
/** В автополе можно вывести автоматически рассчитанное цифровое значение. В него можно передавать итог любого вычисления, например, сумму других полей, процент или более сложную функцию.
|
|
23
26
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* Принимает все свойства `Input`'a.
|
|
27
|
+
* У поля есть иконка математической формулы и кнопка Restore — с её помощью пользователь может вернуть исходное значение, если редактировал поле. Видимость кнопки и поведение при нажатии нужно прописывать в компоненте самостоятельно.
|
|
27
28
|
*/
|
|
28
|
-
|
|
29
29
|
export var FxInput = rootNode(_class = withSize(_class = (_FxInput = /*#__PURE__*/function (_React$Component) {
|
|
30
30
|
function FxInput() {
|
|
31
31
|
var _this;
|
|
@@ -36,70 +36,25 @@ export var FxInput = rootNode(_class = withSize(_class = (_FxInput = /*#__PURE__
|
|
|
36
36
|
_this.input = null;
|
|
37
37
|
_this.getProps = createPropsGetter(FxInput.defaultProps);
|
|
38
38
|
_this.renderMain = function (props) {
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
align: 'right'
|
|
48
|
-
};
|
|
49
|
-
var button = null;
|
|
50
|
-
var inputCorners = auto ? _extends({}, rest.corners) : _extends({
|
|
51
|
-
borderBottomLeftRadius: 0,
|
|
52
|
-
borderTopLeftRadius: 0
|
|
53
|
-
}, rest.corners);
|
|
54
|
-
var iconSizes = {
|
|
55
|
-
small: parseInt(_this.theme.inputIconSizeSmall),
|
|
56
|
-
medium: parseInt(_this.theme.inputIconSizeMedium),
|
|
57
|
-
large: parseInt(_this.theme.inputIconSizeLarge)
|
|
58
|
-
};
|
|
59
|
-
var size = _this.size;
|
|
60
|
-
var IconFunction = /*#__PURE__*/React.createElement(MathFunctionIcon, {
|
|
61
|
-
size: iconSizes[size]
|
|
39
|
+
var button = props.auto ? null : /*#__PURE__*/
|
|
40
|
+
React.createElement(FxInputRestoreBtn, {
|
|
41
|
+
size: props.size,
|
|
42
|
+
onRestore: props.onRestore,
|
|
43
|
+
corners: props.corners,
|
|
44
|
+
disabled: props.disabled,
|
|
45
|
+
borderless: props.borderless,
|
|
46
|
+
"aria-label": props.buttonAriaLabel
|
|
62
47
|
});
|
|
63
|
-
if (auto) {
|
|
64
|
-
inputProps.leftIcon = IconFunction;
|
|
65
|
-
} else {
|
|
66
|
-
button = /*#__PURE__*/
|
|
67
|
-
React.createElement(FxInputRestoreBtn, {
|
|
68
|
-
size: _this.size,
|
|
69
|
-
onRestore: onRestore,
|
|
70
|
-
corners: rest.corners,
|
|
71
|
-
disabled: rest.disabled,
|
|
72
|
-
borderless: rest.borderless,
|
|
73
|
-
"aria-label": props.buttonAriaLabel
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
48
|
return /*#__PURE__*/(
|
|
77
49
|
React.createElement(Group, {
|
|
78
50
|
"data-tid": FxInputDataTids.root,
|
|
79
|
-
width: width
|
|
80
|
-
}, button,
|
|
81
|
-
React.createElement(CurrencyInput, _extends({}, inputProps, rest, {
|
|
82
|
-
corners: inputCorners,
|
|
83
|
-
size: _this.size,
|
|
84
|
-
width: '100%',
|
|
85
|
-
ref: _this.refInput,
|
|
86
|
-
value: value,
|
|
87
|
-
onValueChange: _this.props.onValueChange
|
|
88
|
-
})) : /*#__PURE__*/
|
|
89
|
-
|
|
90
|
-
React.createElement(Input, _extends({}, inputProps, rest, {
|
|
91
|
-
corners: inputCorners,
|
|
92
|
-
size: _this.size,
|
|
93
|
-
width: '100%',
|
|
94
|
-
ref: _this.refInput,
|
|
95
|
-
type: type,
|
|
96
|
-
value: value,
|
|
97
|
-
onValueChange: _this.props.onValueChange
|
|
98
|
-
})))
|
|
51
|
+
width: props.width
|
|
52
|
+
}, button, _this.getInput(props))
|
|
99
53
|
);
|
|
100
54
|
};
|
|
101
55
|
|
|
102
|
-
/**
|
|
56
|
+
/** Программно устанавливает фокус на поле.
|
|
57
|
+
* Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.
|
|
103
58
|
* @public
|
|
104
59
|
*/
|
|
105
60
|
_this.focus = function () {
|
|
@@ -108,7 +63,7 @@ export var FxInput = rootNode(_class = withSize(_class = (_FxInput = /*#__PURE__
|
|
|
108
63
|
}
|
|
109
64
|
};
|
|
110
65
|
|
|
111
|
-
/**
|
|
66
|
+
/** Программно снимает фокус с кнопки.
|
|
112
67
|
* @public
|
|
113
68
|
*/
|
|
114
69
|
_this.blur = function () {
|
|
@@ -122,22 +77,118 @@ export var FxInput = rootNode(_class = withSize(_class = (_FxInput = /*#__PURE__
|
|
|
122
77
|
_this.props.refInput(_this.input);
|
|
123
78
|
}
|
|
124
79
|
};
|
|
80
|
+
_this.getLeftIcon = function (props) {
|
|
81
|
+
if (!props.auto) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
var iconSizes = {
|
|
85
|
+
small: parseInt(_this.theme.inputIconSizeSmall),
|
|
86
|
+
medium: parseInt(_this.theme.inputIconSizeMedium),
|
|
87
|
+
large: parseInt(_this.theme.inputIconSizeLarge)
|
|
88
|
+
};
|
|
89
|
+
var size = _this.size;
|
|
90
|
+
return /*#__PURE__*/React.createElement(MathFunctionIcon, {
|
|
91
|
+
size: iconSizes[size]
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
_this.getInput = function (props) {
|
|
95
|
+
var type = props.type,
|
|
96
|
+
onRestore = props.onRestore,
|
|
97
|
+
auto = props.auto,
|
|
98
|
+
refInput = props.refInput,
|
|
99
|
+
value = props.value,
|
|
100
|
+
width = props.width,
|
|
101
|
+
_size = props.size,
|
|
102
|
+
mask = props.mask,
|
|
103
|
+
maskChar = props.maskChar,
|
|
104
|
+
formatChars = props.formatChars,
|
|
105
|
+
alwaysShowMask = props.alwaysShowMask,
|
|
106
|
+
signed = props.signed,
|
|
107
|
+
integerDigits = props.integerDigits,
|
|
108
|
+
fractionDigits = props.fractionDigits,
|
|
109
|
+
hideTrailingZeros = props.hideTrailingZeros,
|
|
110
|
+
buttonAriaLabel = props.buttonAriaLabel,
|
|
111
|
+
originalCorners = props.corners,
|
|
112
|
+
rest = _objectWithoutPropertiesLoose(props, _excluded);
|
|
113
|
+
var corners = auto ? originalCorners : _extends({
|
|
114
|
+
borderBottomLeftRadius: 0,
|
|
115
|
+
borderTopLeftRadius: 0
|
|
116
|
+
}, originalCorners);
|
|
117
|
+
var size = _this.size;
|
|
118
|
+
var commonInputProps = _extends({
|
|
119
|
+
corners: corners,
|
|
120
|
+
size: size,
|
|
121
|
+
width: '100%',
|
|
122
|
+
ref: _this.refInput
|
|
123
|
+
}, rest);
|
|
124
|
+
if (type === 'currency') {
|
|
125
|
+
return /*#__PURE__*/(
|
|
126
|
+
React.createElement(CurrencyInput, _extends({}, commonInputProps, {
|
|
127
|
+
signed: signed,
|
|
128
|
+
integerDigits: integerDigits,
|
|
129
|
+
fractionDigits: fractionDigits,
|
|
130
|
+
value: value,
|
|
131
|
+
onValueChange: _this.props.onValueChange
|
|
132
|
+
}))
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
if (_this.featureFlags.fxInputUseMaskedInput && mask) {
|
|
136
|
+
return /*#__PURE__*/(
|
|
137
|
+
React.createElement(MaskedInput, _extends({}, commonInputProps, {
|
|
138
|
+
leftIcon: _this.getLeftIcon(props),
|
|
139
|
+
align: "right",
|
|
140
|
+
mask: mask,
|
|
141
|
+
maskChar: maskChar,
|
|
142
|
+
formatChars: formatChars,
|
|
143
|
+
alwaysShowMask: alwaysShowMask,
|
|
144
|
+
value: value,
|
|
145
|
+
onValueChange: _this.props.onValueChange
|
|
146
|
+
}))
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
return /*#__PURE__*/(
|
|
150
|
+
React.createElement(Input, _extends({}, commonInputProps, {
|
|
151
|
+
leftIcon: _this.getLeftIcon(props),
|
|
152
|
+
align: "right",
|
|
153
|
+
mask: mask,
|
|
154
|
+
maskChar: maskChar,
|
|
155
|
+
formatChars: formatChars,
|
|
156
|
+
alwaysShowMask: alwaysShowMask,
|
|
157
|
+
type: type,
|
|
158
|
+
value: value,
|
|
159
|
+
onValueChange: _this.props.onValueChange
|
|
160
|
+
}))
|
|
161
|
+
);
|
|
162
|
+
};
|
|
125
163
|
return _this;
|
|
126
164
|
}
|
|
127
165
|
_inheritsLoose(FxInput, _React$Component);
|
|
128
166
|
var _proto = FxInput.prototype;
|
|
167
|
+
_proto.validateProps = function validateProps(props) {
|
|
168
|
+
warning(props.type !== 'currency' && props.mask !== undefined, '[FxInput]: Prop "mask" is not supported when type="currency"');
|
|
169
|
+
};
|
|
170
|
+
_proto.componentDidMount = function componentDidMount() {
|
|
171
|
+
this.validateProps(this.getProps());
|
|
172
|
+
};
|
|
173
|
+
_proto.componentDidUpdate = function componentDidUpdate() {
|
|
174
|
+
this.validateProps(this.getProps());
|
|
175
|
+
};
|
|
129
176
|
_proto.render = function render() {
|
|
130
177
|
var _this2 = this;
|
|
131
|
-
return /*#__PURE__*/React.createElement(
|
|
132
|
-
_this2.
|
|
133
|
-
return /*#__PURE__*/React.createElement(
|
|
134
|
-
|
|
135
|
-
|
|
178
|
+
return /*#__PURE__*/React.createElement(ReactUIFeatureFlagsContext.Consumer, null, function (flags) {
|
|
179
|
+
_this2.featureFlags = getFullReactUIFlagsContext(flags);
|
|
180
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
181
|
+
_this2.theme = theme;
|
|
182
|
+
return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
|
|
183
|
+
rootNodeRef: _this2.setRootNode
|
|
184
|
+
}, _this2.getProps()), _this2.renderMain);
|
|
185
|
+
});
|
|
136
186
|
});
|
|
137
187
|
};
|
|
138
188
|
return FxInput;
|
|
139
189
|
}(React.Component), _FxInput.__KONTUR_REACT_UI__ = 'FxInput', _FxInput.displayName = 'FxInput', _FxInput.defaultProps = {
|
|
140
190
|
width: 250,
|
|
141
191
|
type: 'text',
|
|
142
|
-
value: ''
|
|
192
|
+
value: '',
|
|
193
|
+
auto: false
|
|
143
194
|
}, _FxInput)) || _class) || _class;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Group","Input","CurrencyInput","createPropsGetter","CommonWrapper","rootNode","ThemeContext","withSize","MathFunctionIcon","FxInputRestoreBtn","FxInputDataTids","root","FxInput","_class","_FxInput","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","input","getProps","defaultProps","renderMain","props","type","onRestore","auto","refInput","value","width","rest","_objectWithoutPropertiesLoose","_excluded","inputProps","align","button","inputCorners","_extends","corners","borderBottomLeftRadius","borderTopLeftRadius","iconSizes","small","parseInt","theme","inputIconSizeSmall","medium","inputIconSizeMedium","large","inputIconSizeLarge","size","IconFunction","createElement","leftIcon","disabled","borderless","buttonAriaLabel","ref","onValueChange","focus","blur","element","_inheritsLoose","_proto","prototype","render","_this2","Consumer","rootNodeRef","setRootNode","Component","__KONTUR_REACT_UI__","displayName"],"sources":["FxInput.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\n\nimport { Group } from '../Group';\nimport type { InputProps } from '../Input';\nimport { Input } from '../Input';\nimport type { CurrencyInputProps } from '../CurrencyInput';\nimport { CurrencyInput } from '../CurrencyInput';\nimport type { DefaultizedProps } from '../../lib/createPropsGetter';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { Override } from '../../typings/utility-types';\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 { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { SizeProp } from '../../lib/types/props';\nimport { withSize } from '../../lib/size/SizeDecorator';\n\nimport { MathFunctionIcon } from './MathFunctionIcon';\nimport { FxInputRestoreBtn } from './FxInputRestoreBtn';\n\nexport interface FxInputProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n CurrencyInputProps,\n {\n /** Устанавливает авто-режим. */\n auto?: boolean;\n\n /** Задает тип инпута */\n type?: 'currency' | InputProps['type'];\n\n /** Задает функцию, которая вызывается при нажатии на кнопку Restore. */\n onRestore?: () => void;\n\n /** Задает функцию, вызывающуюся при изменении value. */\n onValueChange: CurrencyInputProps['onValueChange'] | InputProps['onValueChange'];\n\n /** Задает значение инпута. */\n value?: string | number;\n\n /** Задает ref инпута. */\n refInput?: (element: CurrencyInput | Input | null) => void;\n\n /** Убирает лишние нули после запятой. */\n hideTrailingZeros?: boolean;\n\n /** Задает атрибут aria-label кнопке восстановления (restore button). */\n buttonAriaLabel?: AriaAttributes['aria-label'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n }\n > {}\n\nexport const FxInputDataTids = {\n root: 'FxInput__root',\n} as const;\n\ntype DefaultProps = Required<Pick<FxInputProps, 'width' | 'type' | 'value'>>;\ntype DefaultizedFxInputProps = DefaultizedProps<FxInputProps, DefaultProps>;\n\n/**\n * Автополе `FxInput`.\n *\n * Используйте `FxInput`, если поле вычисляемое и вы рассчитали значение.\n *\n * Принимает все свойства `Input`'a.\n */\n\n@rootNode\n@withSize\nexport class FxInput extends React.Component<FxInputProps> {\n public static __KONTUR_REACT_UI__ = 'FxInput';\n public static displayName = 'FxInput';\n\n public static defaultProps: DefaultProps = {\n width: 250,\n type: 'text',\n value: '',\n };\n\n private theme!: Theme;\n private size!: SizeProp;\n private input: Input | CurrencyInput | null = null;\n\n private getProps = createPropsGetter(FxInput.defaultProps);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.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 public renderMain = (props: CommonWrapperRestProps<DefaultizedFxInputProps>) => {\n const { type, onRestore, auto, refInput, value, width, ...rest } = props;\n const inputProps: Partial<CurrencyInputProps> = {\n align: 'right',\n };\n\n let button = null;\n const inputCorners: InputProps['corners'] = auto\n ? { ...rest.corners }\n : { borderBottomLeftRadius: 0, borderTopLeftRadius: 0, ...rest.corners };\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.inputIconSizeSmall),\n medium: parseInt(this.theme.inputIconSizeMedium),\n large: parseInt(this.theme.inputIconSizeLarge),\n };\n const size = this.size;\n const IconFunction = <MathFunctionIcon size={iconSizes[size]} />;\n\n if (auto) {\n inputProps.leftIcon = IconFunction;\n } else {\n button = (\n <FxInputRestoreBtn\n size={this.size}\n onRestore={onRestore}\n corners={rest.corners}\n disabled={rest.disabled}\n borderless={rest.borderless}\n aria-label={props.buttonAriaLabel}\n />\n );\n }\n\n return (\n <Group data-tid={FxInputDataTids.root} width={width}>\n {button}\n {type === 'currency' ? (\n <CurrencyInput\n {...inputProps}\n {...rest}\n corners={inputCorners}\n size={this.size}\n width={'100%'}\n ref={this.refInput}\n value={value as CurrencyInputProps['value']}\n onValueChange={this.props.onValueChange as CurrencyInputProps['onValueChange']}\n />\n ) : (\n <Input\n {...inputProps}\n {...rest}\n corners={inputCorners}\n size={this.size}\n width={'100%'}\n ref={this.refInput}\n type={type}\n value={value as InputProps['value']}\n onValueChange={this.props.onValueChange as InputProps['onValueChange']}\n />\n )}\n </Group>\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private refInput = (element: Input | CurrencyInput | null) => {\n this.input = element;\n\n if (this.props.refInput) {\n this.props.refInput(this.input);\n }\n };\n}\n"],"mappings":";AACA,OAAOA,KAAK,MAAM,OAAO;;AAEzB,SAASC,KAAK,QAAQ,UAAU;;AAEhC,SAASC,KAAK,QAAQ,UAAU;;AAEhC,SAASC,aAAa,QAAQ,kBAAkB;;AAEhD,SAASC,iBAAiB,QAAQ,6BAA6B;;;AAG/D,SAASC,aAAa,QAAQ,8BAA8B;;AAE5D,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,YAAY,QAAQ,gCAAgC;;;AAG7D,SAASC,QAAQ,QAAQ,8BAA8B;;AAEvD,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,iBAAiB,QAAQ,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCvD,OAAO,IAAMC,eAAe,GAAG;EAC7BC,IAAI,EAAE;AACR,CAAU;;;;;AAKV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEaC,OAAO,GAFnBP,QAAQ,CAAAQ,MAAA,GACRN,QAAQ,CAAAM,MAAA,IAAAC,QAAA,0BAAAC,gBAAA,YAAAH,QAAA,OAAAI,KAAA,UAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,KAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA,GAAAN,KAAA,GAAAD,gBAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,gBAAA,SAAAU,MAAA,CAAAL,IAAA,WAAAJ,KAAA;;;;;;;;;;;;IAaCU,KAAK,GAAiC,IAAI,CAAAV,KAAA;;IAE1CW,QAAQ,GAAGxB,iBAAiB,CAACS,OAAO,CAACgB,YAAY,CAAC,CAAAZ,KAAA;;;;;;;;;;;;;;;;;;;IAmBnDa,UAAU,GAAG,UAACC,KAAsD,EAAK;MAC9E,IAAQC,IAAI,GAAuDD,KAAK,CAAhEC,IAAI,CAAEC,SAAS,GAA4CF,KAAK,CAA1DE,SAAS,CAAEC,IAAI,GAAsCH,KAAK,CAA/CG,IAAI,CAAEC,QAAQ,GAA4BJ,KAAK,CAAzCI,QAAQ,CAAEC,KAAK,GAAqBL,KAAK,CAA/BK,KAAK,CAAEC,KAAK,GAAcN,KAAK,CAAxBM,KAAK,CAAKC,IAAI,GAAAC,6BAAA,CAAKR,KAAK,EAAAS,SAAA;MACxE,IAAMC,UAAuC,GAAG;QAC9CC,KAAK,EAAE;MACT,CAAC;;MAED,IAAIC,MAAM,GAAG,IAAI;MACjB,IAAMC,YAAmC,GAAGV,IAAI,GAAAW,QAAA;MACvCP,IAAI,CAACQ,OAAO,IAAAD,QAAA;QACfE,sBAAsB,EAAE,CAAC,EAAEC,mBAAmB,EAAE,CAAC,IAAKV,IAAI,CAACQ,OAAO,CAAE;MAC1E,IAAMG,SAAmC,GAAG;QAC1CC,KAAK,EAAEC,QAAQ,CAAClC,KAAA,CAAKmC,KAAK,CAACC,kBAAkB,CAAC;QAC9CC,MAAM,EAAEH,QAAQ,CAAClC,KAAA,CAAKmC,KAAK,CAACG,mBAAmB,CAAC;QAChDC,KAAK,EAAEL,QAAQ,CAAClC,KAAA,CAAKmC,KAAK,CAACK,kBAAkB;MAC/C,CAAC;MACD,IAAMC,IAAI,GAAGzC,KAAA,CAAKyC,IAAI;MACtB,IAAMC,YAAY,gBAAG3D,KAAA,CAAA4D,aAAA,CAACnD,gBAAgB,IAACiD,IAAI,EAAET,SAAS,CAACS,IAAI,CAAE,EAAE,CAAC;;MAEhE,IAAIxB,IAAI,EAAE;QACRO,UAAU,CAACoB,QAAQ,GAAGF,YAAY;MACpC,CAAC,MAAM;QACLhB,MAAM;QACJ3C,KAAA,CAAA4D,aAAA,CAAClD,iBAAiB;UAChBgD,IAAI,EAAEzC,KAAA,CAAKyC,IAAK;UAChBzB,SAAS,EAAEA,SAAU;UACrBa,OAAO,EAAER,IAAI,CAACQ,OAAQ;UACtBgB,QAAQ,EAAExB,IAAI,CAACwB,QAAS;UACxBC,UAAU,EAAEzB,IAAI,CAACyB,UAAW;UAC5B,cAAYhC,KAAK,CAACiC,eAAgB;QACnC,CACF;;MACH;;MAEA;QACEhE,KAAA,CAAA4D,aAAA,CAAC3D,KAAK,IAAC,YAAUU,eAAe,CAACC,IAAK,EAACyB,KAAK,EAAEA,KAAM;QACjDM,MAAM;QACNX,IAAI,KAAK,UAAU;QAClBhC,KAAA,CAAA4D,aAAA,CAACzD,aAAa,EAAA0C,QAAA;QACRJ,UAAU;QACVH,IAAI;UACRQ,OAAO,EAAEF,YAAa;UACtBc,IAAI,EAAEzC,KAAA,CAAKyC,IAAK;UAChBrB,KAAK,EAAE,MAAO;UACd4B,GAAG,EAAEhD,KAAA,CAAKkB,QAAS;UACnBC,KAAK,EAAEA,KAAqC;UAC5C8B,aAAa,EAAEjD,KAAA,CAAKc,KAAK,CAACmC,aAAqD;QAChF,CAAC;;QAEFlE,KAAA,CAAA4D,aAAA,CAAC1D,KAAK,EAAA2C,QAAA;QACAJ,UAAU;QACVH,IAAI;UACRQ,OAAO,EAAEF,YAAa;UACtBc,IAAI,EAAEzC,KAAA,CAAKyC,IAAK;UAChBrB,KAAK,EAAE,MAAO;UACd4B,GAAG,EAAEhD,KAAA,CAAKkB,QAAS;UACnBH,IAAI,EAAEA,IAAK;UACXI,KAAK,EAAEA,KAA6B;UACpC8B,aAAa,EAAEjD,KAAA,CAAKc,KAAK,CAACmC,aAA6C;QACxE;;QAEE,CAAC;;IAEZ,CAAC;;IAED;AACF;AACA,OAFEjD,KAAA;IAGOkD,KAAK,GAAG,YAAM;MACnB,IAAIlD,KAAA,CAAKU,KAAK,EAAE;QACdV,KAAA,CAAKU,KAAK,CAACwC,KAAK,CAAC,CAAC;MACpB;IACF,CAAC;;IAED;AACF;AACA,OAFElD,KAAA;IAGOmD,IAAI,GAAG,YAAM;MAClB,IAAInD,KAAA,CAAKU,KAAK,EAAE;QACdV,KAAA,CAAKU,KAAK,CAACyC,IAAI,CAAC,CAAC;MACnB;IACF,CAAC,CAAAnD,KAAA;;IAEOkB,QAAQ,GAAG,UAACkC,OAAqC,EAAK;MAC5DpD,KAAA,CAAKU,KAAK,GAAG0C,OAAO;;MAEpB,IAAIpD,KAAA,CAAKc,KAAK,CAACI,QAAQ,EAAE;QACvBlB,KAAA,CAAKc,KAAK,CAACI,QAAQ,CAAClB,KAAA,CAAKU,KAAK,CAAC;MACjC;IACF,CAAC,QAAAV,KAAA,EAAAqD,cAAA,CAAAzD,OAAA,EAAAG,gBAAA,MAAAuD,MAAA,GAAA1D,OAAA,CAAA2D,SAAA,CAAAD,MAAA,CAvGME,MAAM,GAAb,SAAAA,OAAA,EAAgB,KAAAC,MAAA,QACd,oBACE1E,KAAA,CAAA4D,aAAA,CAACrD,YAAY,CAACoE,QAAQ,QACnB,UAACvB,KAAK,EAAK,CACVsB,MAAI,CAACtB,KAAK,GAAGA,KAAK,CAClB,oBACEpD,KAAA,CAAA4D,aAAA,CAACvD,aAAa,EAAAwC,QAAA,GAAC+B,WAAW,EAAEF,MAAI,CAACG,WAAY,IAAKH,MAAI,CAAC9C,QAAQ,CAAC,CAAC,GAC9D8C,MAAI,CAAC5C,UACO,CAAC,CAEpB,CACqB,CAAC,CAE5B,CAAC,QAAAjB,OAAA,GA/B0Bb,KAAK,CAAC8E,SAAS,GAAA/D,QAAA,CAC5BgE,mBAAmB,GAAG,SAAS,EAAAhE,QAAA,CAC/BiE,WAAW,GAAG,SAAS,EAAAjE,QAAA,CAEvBc,YAAY,GAAiB,EACzCQ,KAAK,EAAE,GAAG,EACVL,IAAI,EAAE,MAAM,EACZI,KAAK,EAAE,EAAE,CACX,CAAC,EAAArB,QAAA,MAAAD,MAAA,KAAAA,MAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","warning","Group","Input","CurrencyInput","createPropsGetter","CommonWrapper","rootNode","ThemeContext","MaskedInput","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","withSize","MathFunctionIcon","FxInputRestoreBtn","FxInputDataTids","root","FxInput","_class","_FxInput","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","input","getProps","defaultProps","renderMain","props","button","auto","createElement","size","onRestore","corners","disabled","borderless","buttonAriaLabel","width","getInput","focus","blur","refInput","element","getLeftIcon","iconSizes","small","parseInt","theme","inputIconSizeSmall","medium","inputIconSizeMedium","large","inputIconSizeLarge","type","value","_size","mask","maskChar","formatChars","alwaysShowMask","signed","integerDigits","fractionDigits","hideTrailingZeros","originalCorners","rest","_objectWithoutPropertiesLoose","_excluded","_extends","borderBottomLeftRadius","borderTopLeftRadius","commonInputProps","ref","onValueChange","featureFlags","fxInputUseMaskedInput","leftIcon","align","_inheritsLoose","_proto","prototype","validateProps","undefined","componentDidMount","componentDidUpdate","render","_this2","Consumer","flags","rootNodeRef","setRootNode","Component","__KONTUR_REACT_UI__","displayName"],"sources":["FxInput.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport warning from 'warning';\n\nimport { Group } from '../Group';\nimport type { InputProps } from '../Input';\nimport { Input } from '../Input';\nimport type { CurrencyInputProps } from '../CurrencyInput';\nimport { CurrencyInput } from '../CurrencyInput';\nimport type { DefaultizedProps } from '../../lib/createPropsGetter';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { Override } from '../../typings/utility-types';\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 { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { SizeProp } from '../../lib/types/props';\nimport type { MaskedInputProps } from '../MaskedInput';\nimport { MaskedInput } from '../MaskedInput';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext } from '../../lib/featureFlagsContext';\nimport { ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext/ReactUIFeatureFlagsContext';\nimport { withSize } from '../../lib/size/SizeDecorator';\n\nimport { MathFunctionIcon } from './MathFunctionIcon';\nimport { FxInputRestoreBtn } from './FxInputRestoreBtn';\n\nexport interface FxInputProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Pick<Partial<MaskedInputProps>, 'alwaysShowMask' | 'mask' | 'maskChar' | 'formatChars'>,\n Override<\n Omit<CurrencyInputProps, 'alwaysShowMask' | 'mask' | 'maskChar' | 'formatChars'>,\n {\n /** Управляет видимостью кнопки Restore:\n * - true — кнопка Restore не отображается. Значение в поле является автоматически рассчитанным.\n * - false — кнопка Restore отображается в поле. Значение в поле считается отредактированным. */\n auto?: boolean;\n\n /** Задаёт тип поля. */\n type?: 'currency' | InputProps['type'];\n\n /** Задаёт функцию, которая вызывается при нажатии на кнопку Restore. */\n onRestore?: () => void;\n\n /** Задаёт функцию, вызывающуюся при изменении value. */\n onValueChange: CurrencyInputProps['onValueChange'] | InputProps['onValueChange'];\n\n /** Задаёт значение поля. */\n value?: string | number;\n\n /** Задаёт ref поля. */\n refInput?: (element: CurrencyInput | Input | null) => void;\n\n /** Убирает лишние нули после запятой. */\n hideTrailingZeros?: boolean;\n\n /** Задаёт атрибут aria-label кнопке Restore. */\n buttonAriaLabel?: AriaAttributes['aria-label'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n }\n > {}\n\nexport const FxInputDataTids = {\n root: 'FxInput__root',\n} as const;\n\ntype DefaultProps = Required<Pick<FxInputProps, 'width' | 'type' | 'value' | 'auto'>>;\ntype DefaultizedFxInputProps = DefaultizedProps<FxInputProps, DefaultProps>;\n\n/** В автополе можно вывести автоматически рассчитанное цифровое значение. В него можно передавать итог любого вычисления, например, сумму других полей, процент или более сложную функцию.\n *\n * У поля есть иконка математической формулы и кнопка Restore — с её помощью пользователь может вернуть исходное значение, если редактировал поле. Видимость кнопки и поведение при нажатии нужно прописывать в компоненте самостоятельно.\n */\n@rootNode\n@withSize\nexport class FxInput extends React.Component<FxInputProps> {\n public static __KONTUR_REACT_UI__ = 'FxInput';\n public static displayName = 'FxInput';\n\n public static defaultProps: DefaultProps = {\n width: 250,\n type: 'text',\n value: '',\n auto: false,\n };\n\n private theme!: Theme;\n private size!: SizeProp;\n private input: Input | CurrencyInput | null = null;\n\n private getProps = createPropsGetter(FxInput.defaultProps);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private featureFlags!: ReactUIFeatureFlags;\n\n private validateProps(props: FxInputProps) {\n warning(\n props.type !== 'currency' && props.mask !== undefined,\n '[FxInput]: Prop \"mask\" is not supported when type=\"currency\"',\n );\n }\n\n public componentDidMount() {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate() {\n this.validateProps(this.getProps());\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DefaultizedFxInputProps>) => {\n const button = props.auto ? null : (\n <FxInputRestoreBtn\n size={props.size}\n onRestore={props.onRestore}\n corners={props.corners}\n disabled={props.disabled}\n borderless={props.borderless}\n aria-label={props.buttonAriaLabel}\n />\n );\n\n return (\n <Group data-tid={FxInputDataTids.root} width={props.width}>\n {button}\n {this.getInput(props)}\n </Group>\n );\n };\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /** Программно снимает фокус с кнопки.\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private refInput = (element: Input | CurrencyInput | null) => {\n this.input = element;\n\n if (this.props.refInput) {\n this.props.refInput(this.input);\n }\n };\n\n private getLeftIcon = (props: FxInputProps) => {\n if (!props.auto) {\n return null;\n }\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.inputIconSizeSmall),\n medium: parseInt(this.theme.inputIconSizeMedium),\n large: parseInt(this.theme.inputIconSizeLarge),\n };\n const size = this.size;\n\n return <MathFunctionIcon size={iconSizes[size]} />;\n };\n\n private getInput = (props: FxInputProps) => {\n const {\n type,\n onRestore,\n auto,\n refInput,\n value,\n width,\n size: _size,\n mask,\n maskChar,\n formatChars,\n alwaysShowMask,\n signed,\n integerDigits,\n fractionDigits,\n hideTrailingZeros,\n buttonAriaLabel,\n corners: originalCorners,\n ...rest\n } = props;\n const corners: InputProps['corners'] = auto\n ? originalCorners\n : { borderBottomLeftRadius: 0, borderTopLeftRadius: 0, ...originalCorners };\n const size = this.size;\n const commonInputProps = {\n corners,\n size,\n width: '100%',\n ref: this.refInput,\n ...rest,\n };\n\n if (type === 'currency') {\n return (\n <CurrencyInput\n {...commonInputProps}\n signed={signed}\n integerDigits={integerDigits}\n fractionDigits={fractionDigits}\n value={value as CurrencyInputProps['value']}\n onValueChange={this.props.onValueChange as CurrencyInputProps['onValueChange']}\n />\n );\n }\n if (this.featureFlags.fxInputUseMaskedInput && mask) {\n return (\n <MaskedInput\n {...commonInputProps}\n leftIcon={this.getLeftIcon(props)}\n align=\"right\"\n mask={mask}\n maskChar={maskChar}\n formatChars={formatChars}\n alwaysShowMask={alwaysShowMask}\n value={value as MaskedInputProps['value']}\n onValueChange={this.props.onValueChange as MaskedInputProps['onValueChange']}\n />\n );\n }\n return (\n <Input\n {...commonInputProps}\n leftIcon={this.getLeftIcon(props)}\n align=\"right\"\n mask={mask}\n maskChar={maskChar}\n formatChars={formatChars}\n alwaysShowMask={alwaysShowMask}\n type={type}\n value={value as InputProps['value']}\n onValueChange={this.props.onValueChange as InputProps['onValueChange']}\n />\n );\n };\n}\n"],"mappings":";AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,OAAO,MAAM,SAAS;;AAE7B,SAASC,KAAK,QAAQ,UAAU;;AAEhC,SAASC,KAAK,QAAQ,UAAU;;AAEhC,SAASC,aAAa,QAAQ,kBAAkB;;AAEhD,SAASC,iBAAiB,QAAQ,6BAA6B;;;AAG/D,SAASC,aAAa,QAAQ,8BAA8B;;AAE5D,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,YAAY,QAAQ,gCAAgC;;;;AAI7D,SAASC,WAAW,QAAQ,gBAAgB;;AAE5C,SAASC,0BAA0B,QAAQ,+BAA+B;AAC1E,SAASC,0BAA0B,QAAQ,0DAA0D;AACrG,SAASC,QAAQ,QAAQ,8BAA8B;;AAEvD,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,iBAAiB,QAAQ,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCvD,OAAO,IAAMC,eAAe,GAAG;EAC7BC,IAAI,EAAE;AACR,CAAU;;;;;AAKV;AACA;AACA;AACA;AACA;;AAEaC,OAAO,GAFnBV,QAAQ,CAAAW,MAAA,GACRN,QAAQ,CAAAM,MAAA,IAAAC,QAAA,0BAAAC,gBAAA,YAAAH,QAAA,OAAAI,KAAA,UAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,KAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA,GAAAN,KAAA,GAAAD,gBAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,gBAAA,SAAAU,MAAA,CAAAL,IAAA,WAAAJ,KAAA;;;;;;;;;;;;;IAcCU,KAAK,GAAiC,IAAI,CAAAV,KAAA;;IAE1CW,QAAQ,GAAG3B,iBAAiB,CAACY,OAAO,CAACgB,YAAY,CAAC,CAAAZ,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0CnDa,UAAU,GAAG,UAACC,KAAsD,EAAK;MAC9E,IAAMC,MAAM,GAAGD,KAAK,CAACE,IAAI,GAAG,IAAI;MAC9BrC,KAAA,CAAAsC,aAAA,CAACxB,iBAAiB;QAChByB,IAAI,EAAEJ,KAAK,CAACI,IAAK;QACjBC,SAAS,EAAEL,KAAK,CAACK,SAAU;QAC3BC,OAAO,EAAEN,KAAK,CAACM,OAAQ;QACvBC,QAAQ,EAAEP,KAAK,CAACO,QAAS;QACzBC,UAAU,EAAER,KAAK,CAACQ,UAAW;QAC7B,cAAYR,KAAK,CAACS,eAAgB;MACnC,CACF;;;MAED;QACE5C,KAAA,CAAAsC,aAAA,CAACpC,KAAK,IAAC,YAAUa,eAAe,CAACC,IAAK,EAAC6B,KAAK,EAAEV,KAAK,CAACU,KAAM;QACvDT,MAAM;QACNf,KAAA,CAAKyB,QAAQ,CAACX,KAAK;QACf,CAAC;;IAEZ,CAAC;;IAED;AACF;AACA;AACA,OAHEd,KAAA;IAIO0B,KAAK,GAAG,YAAM;MACnB,IAAI1B,KAAA,CAAKU,KAAK,EAAE;QACdV,KAAA,CAAKU,KAAK,CAACgB,KAAK,CAAC,CAAC;MACpB;IACF,CAAC;;IAED;AACF;AACA,OAFE1B,KAAA;IAGO2B,IAAI,GAAG,YAAM;MAClB,IAAI3B,KAAA,CAAKU,KAAK,EAAE;QACdV,KAAA,CAAKU,KAAK,CAACiB,IAAI,CAAC,CAAC;MACnB;IACF,CAAC,CAAA3B,KAAA;;IAEO4B,QAAQ,GAAG,UAACC,OAAqC,EAAK;MAC5D7B,KAAA,CAAKU,KAAK,GAAGmB,OAAO;;MAEpB,IAAI7B,KAAA,CAAKc,KAAK,CAACc,QAAQ,EAAE;QACvB5B,KAAA,CAAKc,KAAK,CAACc,QAAQ,CAAC5B,KAAA,CAAKU,KAAK,CAAC;MACjC;IACF,CAAC,CAAAV,KAAA;;IAEO8B,WAAW,GAAG,UAAChB,KAAmB,EAAK;MAC7C,IAAI,CAACA,KAAK,CAACE,IAAI,EAAE;QACf,OAAO,IAAI;MACb;;MAEA,IAAMe,SAAmC,GAAG;QAC1CC,KAAK,EAAEC,QAAQ,CAACjC,KAAA,CAAKkC,KAAK,CAACC,kBAAkB,CAAC;QAC9CC,MAAM,EAAEH,QAAQ,CAACjC,KAAA,CAAKkC,KAAK,CAACG,mBAAmB,CAAC;QAChDC,KAAK,EAAEL,QAAQ,CAACjC,KAAA,CAAKkC,KAAK,CAACK,kBAAkB;MAC/C,CAAC;MACD,IAAMrB,IAAI,GAAGlB,KAAA,CAAKkB,IAAI;;MAEtB,oBAAOvC,KAAA,CAAAsC,aAAA,CAACzB,gBAAgB,IAAC0B,IAAI,EAAEa,SAAS,CAACb,IAAI,CAAE,EAAE,CAAC;IACpD,CAAC,CAAAlB,KAAA;;IAEOyB,QAAQ,GAAG,UAACX,KAAmB,EAAK;MAC1C;QACE0B,IAAI;;;;;;;;;;;;;;;;;;QAkBF1B,KAAK,CAlBP0B,IAAI,CACJrB,SAAS,GAiBPL,KAAK,CAjBPK,SAAS,CACTH,IAAI,GAgBFF,KAAK,CAhBPE,IAAI,CACJY,QAAQ,GAeNd,KAAK,CAfPc,QAAQ,CACRa,KAAK,GAcH3B,KAAK,CAdP2B,KAAK,CACLjB,KAAK,GAaHV,KAAK,CAbPU,KAAK,CACCkB,KAAK,GAYT5B,KAAK,CAZPI,IAAI,CACJyB,IAAI,GAWF7B,KAAK,CAXP6B,IAAI,CACJC,QAAQ,GAUN9B,KAAK,CAVP8B,QAAQ,CACRC,WAAW,GAST/B,KAAK,CATP+B,WAAW,CACXC,cAAc,GAQZhC,KAAK,CARPgC,cAAc,CACdC,MAAM,GAOJjC,KAAK,CAPPiC,MAAM,CACNC,aAAa,GAMXlC,KAAK,CANPkC,aAAa,CACbC,cAAc,GAKZnC,KAAK,CALPmC,cAAc,CACdC,iBAAiB,GAIfpC,KAAK,CAJPoC,iBAAiB,CACjB3B,eAAe,GAGbT,KAAK,CAHPS,eAAe,CACN4B,eAAe,GAEtBrC,KAAK,CAFPM,OAAO,CACJgC,IAAI,GAAAC,6BAAA,CACLvC,KAAK,EAAAwC,SAAA;MACT,IAAMlC,OAA8B,GAAGJ,IAAI;MACvCmC,eAAe,GAAAI,QAAA;QACbC,sBAAsB,EAAE,CAAC,EAAEC,mBAAmB,EAAE,CAAC,IAAKN,eAAe,CAAE;MAC7E,IAAMjC,IAAI,GAAGlB,KAAA,CAAKkB,IAAI;MACtB,IAAMwC,gBAAgB,GAAAH,QAAA;QACpBnC,OAAO,EAAPA,OAAO;QACPF,IAAI,EAAJA,IAAI;QACJM,KAAK,EAAE,MAAM;QACbmC,GAAG,EAAE3D,KAAA,CAAK4B,QAAQ;MACfwB,IAAI,CACR;;;MAED,IAAIZ,IAAI,KAAK,UAAU,EAAE;QACvB;UACE7D,KAAA,CAAAsC,aAAA,CAAClC,aAAa,EAAAwE,QAAA;UACRG,gBAAgB;YACpBX,MAAM,EAAEA,MAAO;YACfC,aAAa,EAAEA,aAAc;YAC7BC,cAAc,EAAEA,cAAe;YAC/BR,KAAK,EAAEA,KAAqC;YAC5CmB,aAAa,EAAE5D,KAAA,CAAKc,KAAK,CAAC8C,aAAqD;UAChF,CAAC;;MAEN;MACA,IAAI5D,KAAA,CAAK6D,YAAY,CAACC,qBAAqB,IAAInB,IAAI,EAAE;QACnD;UACEhE,KAAA,CAAAsC,aAAA,CAAC7B,WAAW,EAAAmE,QAAA;UACNG,gBAAgB;YACpBK,QAAQ,EAAE/D,KAAA,CAAK8B,WAAW,CAAChB,KAAK,CAAE;YAClCkD,KAAK,EAAC,OAAO;YACbrB,IAAI,EAAEA,IAAK;YACXC,QAAQ,EAAEA,QAAS;YACnBC,WAAW,EAAEA,WAAY;YACzBC,cAAc,EAAEA,cAAe;YAC/BL,KAAK,EAAEA,KAAmC;YAC1CmB,aAAa,EAAE5D,KAAA,CAAKc,KAAK,CAAC8C,aAAmD;UAC9E,CAAC;;MAEN;MACA;QACEjF,KAAA,CAAAsC,aAAA,CAACnC,KAAK,EAAAyE,QAAA;QACAG,gBAAgB;UACpBK,QAAQ,EAAE/D,KAAA,CAAK8B,WAAW,CAAChB,KAAK,CAAE;UAClCkD,KAAK,EAAC,OAAO;UACbrB,IAAI,EAAEA,IAAK;UACXC,QAAQ,EAAEA,QAAS;UACnBC,WAAW,EAAEA,WAAY;UACzBC,cAAc,EAAEA,cAAe;UAC/BN,IAAI,EAAEA,IAAK;UACXC,KAAK,EAAEA,KAA6B;UACpCmB,aAAa,EAAE5D,KAAA,CAAKc,KAAK,CAAC8C,aAA6C;QACxE,CAAC;;IAEN,CAAC,QAAA5D,KAAA,EAAAiE,cAAA,CAAArE,OAAA,EAAAG,gBAAA,MAAAmE,MAAA,GAAAtE,OAAA,CAAAuE,SAAA,CAAAD,MAAA,CA7KOE,aAAa,GAArB,SAAAA,cAAsBtD,KAAmB,EAAE,CACzClC,OAAO,CACLkC,KAAK,CAAC0B,IAAI,KAAK,UAAU,IAAI1B,KAAK,CAAC6B,IAAI,KAAK0B,SAAS,EACrD,8DACF,CAAC,CACH,CAAC,CAAAH,MAAA,CAEMI,iBAAiB,GAAxB,SAAAA,kBAAA,EAA2B,CACzB,IAAI,CAACF,aAAa,CAAC,IAAI,CAACzD,QAAQ,CAAC,CAAC,CAAC,CACrC,CAAC,CAAAuD,MAAA,CAEMK,kBAAkB,GAAzB,SAAAA,mBAAA,EAA4B,CAC1B,IAAI,CAACH,aAAa,CAAC,IAAI,CAACzD,QAAQ,CAAC,CAAC,CAAC,CACrC,CAAC,CAAAuD,MAAA,CAEMM,MAAM,GAAb,SAAAA,OAAA,EAAgB,KAAAC,MAAA,QACd,oBACE9F,KAAA,CAAAsC,aAAA,CAAC3B,0BAA0B,CAACoF,QAAQ,QACjC,UAACC,KAAK,EAAK,CACVF,MAAI,CAACZ,YAAY,GAAGxE,0BAA0B,CAACsF,KAAK,CAAC,CACrD,oBACEhG,KAAA,CAAAsC,aAAA,CAAC9B,YAAY,CAACuF,QAAQ,QACnB,UAACxC,KAAK,EAAK,CACVuC,MAAI,CAACvC,KAAK,GAAGA,KAAK,CAClB,oBACEvD,KAAA,CAAAsC,aAAA,CAAChC,aAAa,EAAAsE,QAAA,GAACqB,WAAW,EAAEH,MAAI,CAACI,WAAY,IAAKJ,MAAI,CAAC9D,QAAQ,CAAC,CAAC,GAC9D8D,MAAI,CAAC5D,UACO,CAAC,CAEpB,CACqB,CAAC,CAE5B,CACmC,CAAC,CAE1C,CAAC,QAAAjB,OAAA,GAvD0BjB,KAAK,CAACmG,SAAS,GAAAhF,QAAA,CAC5BiF,mBAAmB,GAAG,SAAS,EAAAjF,QAAA,CAC/BkF,WAAW,GAAG,SAAS,EAAAlF,QAAA,CAEvBc,YAAY,GAAiB,EACzCY,KAAK,EAAE,GAAG,EACVgB,IAAI,EAAE,MAAM,EACZC,KAAK,EAAE,EAAE,EACTzB,IAAI,EAAE,KAAK,CACb,CAAC,EAAAlB,QAAA,MAAAD,MAAA,KAAAA,MAAA","ignoreList":[]}
|