@alfalab/core-components-masked-input 7.0.1 → 7.0.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/Component.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { InputProps } from '@alfalab/core-components-input';
2
+ import { type InputProps } from '@alfalab/core-components-input';
3
3
  declare type Mask = Array<string | RegExp>;
4
4
  export declare type TextMaskConfig = {
5
5
  currentCaretPosition: number;
package/Component.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["src/Component.tsx"],"sourcesContent":["import React, { ChangeEvent, MouseEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\nimport { createTextMaskInputElement, TextMaskInputElement } from 'text-mask-core';\n\nimport { Input, InputProps } from '@alfalab/core-components-input';\n\nimport styles from './index.module.css';\n\n// TODO: заставить rollup добавлять кастомные декларации в сборку\ntype Mask = Array<string | RegExp>;\nexport type TextMaskConfig = {\n currentCaretPosition: number;\n rawValue: string;\n previousConformedValue: string;\n mask?: Mask | ((rawValue: string) => Mask);\n guide?: boolean;\n showMask?: boolean;\n placeholderChar?: string;\n keepCharPositions?: boolean;\n pipe?: (\n conformedValue: string,\n config: TextMaskConfig,\n ) => false | string | { value: string; indexesOfPipedChars: number[] };\n};\n\nexport type MaskedInputProps = InputProps & {\n /**\n * Маска для поля ввода\n * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array\n */\n mask?: TextMaskConfig['mask'];\n\n /**\n * Управляет поведением компонента при удалении символов\n */\n keepCharPositions?: TextMaskConfig['keepCharPositions'];\n\n /**\n * Дает возможность изменить значение поля перед рендером\n */\n onBeforeDisplay?: TextMaskConfig['pipe'];\n};\n\n// Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \\u2000\nexport const PLACEHOLDER_CHAR = '\\u2000';\n\nexport const MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n {\n mask,\n keepCharPositions = false,\n value,\n defaultValue,\n className,\n onBeforeDisplay,\n onChange,\n onClear,\n ...restProps\n },\n ref,\n ) => {\n const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null);\n const textMask = useRef<TextMaskInputElement | null>(null);\n\n const [inputValue, setInputValue] = useState(value || defaultValue || '');\n // Не показываем сырое значение до применения маски\n const [textHidden, setTextHidden] = useState(true);\n\n const update = useCallback(\n (newValue = '') => {\n if (textMask.current && inputNode) {\n try {\n textMask.current.update(newValue);\n } catch (e) {\n // ignore masking errors\n }\n\n setInputValue(inputNode.value);\n }\n },\n [inputNode],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n update(event.target.value);\n\n if (onChange) {\n onChange(event, {\n value: event.target.value,\n });\n }\n },\n [onChange, update],\n );\n\n const handleClear = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n update('');\n if (onClear) onClear(event);\n },\n [onClear, update],\n );\n\n useEffect(() => {\n if (inputNode) {\n textMask.current = createTextMaskInputElement({\n mask,\n inputElement: inputNode,\n pipe: onBeforeDisplay,\n guide: false,\n keepCharPositions,\n showMask: false,\n placeholderChar: PLACEHOLDER_CHAR,\n rawValue: '',\n currentCaretPosition: 0,\n previousConformedValue: '',\n });\n }\n }, [onBeforeDisplay, mask, keepCharPositions, inputNode]);\n\n useEffect(() => {\n update(value || defaultValue);\n }, [value, update, defaultValue]);\n\n useEffect(() => {\n setTextHidden(false);\n }, []);\n\n return (\n <Input\n {...restProps}\n className={cn(className, { [styles.textHidden]: textHidden })}\n value={inputValue}\n onChange={handleInputChange}\n onClear={handleClear}\n ref={mergeRefs([ref, setInputNode])}\n />\n );\n },\n);\n\nMaskedInput.displayName = 'MaskedInput';\n"],"names":["React","__rest","useState","useRef","useCallback","useEffect","createTextMaskInputElement","Input","__assign","cn","styles","mergeRefs"],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["src/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n type MouseEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\nimport { createTextMaskInputElement, type TextMaskInputElement } from 'text-mask-core';\n\nimport { Input, type InputProps } from '@alfalab/core-components-input';\n\nimport styles from './index.module.css';\n\n// TODO: заставить rollup добавлять кастомные декларации в сборку\ntype Mask = Array<string | RegExp>;\nexport type TextMaskConfig = {\n currentCaretPosition: number;\n rawValue: string;\n previousConformedValue: string;\n mask?: Mask | ((rawValue: string) => Mask);\n guide?: boolean;\n showMask?: boolean;\n placeholderChar?: string;\n keepCharPositions?: boolean;\n pipe?: (\n conformedValue: string,\n config: TextMaskConfig,\n ) => false | string | { value: string; indexesOfPipedChars: number[] };\n};\n\nexport type MaskedInputProps = InputProps & {\n /**\n * Маска для поля ввода\n * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array\n */\n mask?: TextMaskConfig['mask'];\n\n /**\n * Управляет поведением компонента при удалении символов\n */\n keepCharPositions?: TextMaskConfig['keepCharPositions'];\n\n /**\n * Дает возможность изменить значение поля перед рендером\n */\n onBeforeDisplay?: TextMaskConfig['pipe'];\n};\n\n// Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \\u2000\nexport const PLACEHOLDER_CHAR = '\\u2000';\n\nexport const MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n {\n mask,\n keepCharPositions = false,\n value,\n defaultValue,\n className,\n onBeforeDisplay,\n onChange,\n onClear,\n ...restProps\n },\n ref,\n ) => {\n const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null);\n const textMask = useRef<TextMaskInputElement | null>(null);\n\n const [inputValue, setInputValue] = useState(value || defaultValue || '');\n // Не показываем сырое значение до применения маски\n const [textHidden, setTextHidden] = useState(true);\n\n const update = useCallback(\n (newValue = '') => {\n if (textMask.current && inputNode) {\n try {\n textMask.current.update(newValue);\n } catch (e) {\n // ignore masking errors\n }\n\n setInputValue(inputNode.value);\n }\n },\n [inputNode],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n update(event.target.value);\n\n if (onChange) {\n onChange(event, {\n value: event.target.value,\n });\n }\n },\n [onChange, update],\n );\n\n const handleClear = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n update('');\n if (onClear) onClear(event);\n },\n [onClear, update],\n );\n\n useEffect(() => {\n if (inputNode) {\n textMask.current = createTextMaskInputElement({\n mask,\n inputElement: inputNode,\n pipe: onBeforeDisplay,\n guide: false,\n keepCharPositions,\n showMask: false,\n placeholderChar: PLACEHOLDER_CHAR,\n rawValue: '',\n currentCaretPosition: 0,\n previousConformedValue: '',\n });\n }\n }, [onBeforeDisplay, mask, keepCharPositions, inputNode]);\n\n useEffect(() => {\n update(value || defaultValue);\n }, [value, update, defaultValue]);\n\n useEffect(() => {\n setTextHidden(false);\n }, []);\n\n return (\n <Input\n {...restProps}\n className={cn(className, { [styles.textHidden]: textHidden })}\n value={inputValue}\n onChange={handleInputChange}\n onClear={handleClear}\n ref={mergeRefs([ref, setInputNode])}\n />\n );\n },\n);\n\nMaskedInput.displayName = 'MaskedInput';\n"],"names":["React","__rest","useState","useRef","useCallback","useEffect","createTextMaskInputElement","Input","__assign","cn","styles","mergeRefs"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { InputProps } from '@alfalab/core-components-input/cssm';
2
+ import { type InputProps } from '@alfalab/core-components-input/cssm';
3
3
  declare type Mask = Array<string | RegExp>;
4
4
  export declare type TextMaskConfig = {
5
5
  currentCaretPosition: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { ChangeEvent, MouseEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\nimport { createTextMaskInputElement, TextMaskInputElement } from 'text-mask-core';\n\nimport { Input, InputProps } from '@alfalab/core-components-input';\n\nimport styles from './index.module.css';\n\n// TODO: заставить rollup добавлять кастомные декларации в сборку\ntype Mask = Array<string | RegExp>;\nexport type TextMaskConfig = {\n currentCaretPosition: number;\n rawValue: string;\n previousConformedValue: string;\n mask?: Mask | ((rawValue: string) => Mask);\n guide?: boolean;\n showMask?: boolean;\n placeholderChar?: string;\n keepCharPositions?: boolean;\n pipe?: (\n conformedValue: string,\n config: TextMaskConfig,\n ) => false | string | { value: string; indexesOfPipedChars: number[] };\n};\n\nexport type MaskedInputProps = InputProps & {\n /**\n * Маска для поля ввода\n * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array\n */\n mask?: TextMaskConfig['mask'];\n\n /**\n * Управляет поведением компонента при удалении символов\n */\n keepCharPositions?: TextMaskConfig['keepCharPositions'];\n\n /**\n * Дает возможность изменить значение поля перед рендером\n */\n onBeforeDisplay?: TextMaskConfig['pipe'];\n};\n\n// Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \\u2000\nexport const PLACEHOLDER_CHAR = '\\u2000';\n\nexport const MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n {\n mask,\n keepCharPositions = false,\n value,\n defaultValue,\n className,\n onBeforeDisplay,\n onChange,\n onClear,\n ...restProps\n },\n ref,\n ) => {\n const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null);\n const textMask = useRef<TextMaskInputElement | null>(null);\n\n const [inputValue, setInputValue] = useState(value || defaultValue || '');\n // Не показываем сырое значение до применения маски\n const [textHidden, setTextHidden] = useState(true);\n\n const update = useCallback(\n (newValue = '') => {\n if (textMask.current && inputNode) {\n try {\n textMask.current.update(newValue);\n } catch (e) {\n // ignore masking errors\n }\n\n setInputValue(inputNode.value);\n }\n },\n [inputNode],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n update(event.target.value);\n\n if (onChange) {\n onChange(event, {\n value: event.target.value,\n });\n }\n },\n [onChange, update],\n );\n\n const handleClear = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n update('');\n if (onClear) onClear(event);\n },\n [onClear, update],\n );\n\n useEffect(() => {\n if (inputNode) {\n textMask.current = createTextMaskInputElement({\n mask,\n inputElement: inputNode,\n pipe: onBeforeDisplay,\n guide: false,\n keepCharPositions,\n showMask: false,\n placeholderChar: PLACEHOLDER_CHAR,\n rawValue: '',\n currentCaretPosition: 0,\n previousConformedValue: '',\n });\n }\n }, [onBeforeDisplay, mask, keepCharPositions, inputNode]);\n\n useEffect(() => {\n update(value || defaultValue);\n }, [value, update, defaultValue]);\n\n useEffect(() => {\n setTextHidden(false);\n }, []);\n\n return (\n <Input\n {...restProps}\n className={cn(className, { [styles.textHidden]: textHidden })}\n value={inputValue}\n onChange={handleInputChange}\n onClear={handleClear}\n ref={mergeRefs([ref, setInputNode])}\n />\n );\n },\n);\n\nMaskedInput.displayName = 'MaskedInput';\n"],"names":["React","__rest","useState","useRef","useCallback","useEffect","createTextMaskInputElement","Input","__assign","cn","styles","mergeRefs"],"mappings":";;;;;;;;;;;;;;;;;;;AA4CA;AACO,IAAM,gBAAgB,GAAG;AAEnB,IAAA,WAAW,GAAGA,sBAAK,CAAC,UAAU,CACvC,UACI,EAUC,EACD,GAAG,EAAA;;AAVC,IAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,EAAA,GAAA,EAAA,CAAA,iBAAyB,EAAzB,iBAAiB,GAAG,EAAA,KAAA,MAAA,GAAA,KAAK,GAAA,EAAA,EACzB,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,OAAO,GAAA,EAAA,CAAA,OAAA,EACJ,SAAS,GAAAC,YAAA,CAAA,EAAA,EAThB,6GAUC,CADe;IAIV,IAAA,EAAA,GAA4BC,cAAQ,CAA0B,IAAI,CAAC,EAAlE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,YAAY,GAAA,EAAA,CAAA,CAAA,CAA2C;AACzE,IAAA,IAAM,QAAQ,GAAGC,YAAM,CAA8B,IAAI,CAAC;AAEpD,IAAA,IAAA,EAA8B,GAAAD,cAAQ,CAAC,KAAK,IAAI,YAAY,IAAI,EAAE,CAAC,EAAlE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,QAAyC;;IAEnE,IAAA,EAAA,GAA8BA,cAAQ,CAAC,IAAI,CAAC,EAA3C,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,GAAA,EAAA,CAAA,CAAA,CAAkB;AAElD,IAAA,IAAM,MAAM,GAAGE,iBAAW,CACtB,UAAC,QAAa,EAAA;AAAb,QAAA,IAAA,QAAA,KAAA,MAAA,EAAA,EAAA,QAAa,GAAA,EAAA,CAAA;AACV,QAAA,IAAI,QAAQ,CAAC,OAAO,IAAI,SAAS,EAAE;YAC/B,IAAI;AACA,gBAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AACpC;AAAC,YAAA,OAAO,CAAC,EAAE;;AAEX;AAED,YAAA,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;AACjC;AACL,KAAC,EACD,CAAC,SAAS,CAAC,CACd;AAED,IAAA,IAAM,iBAAiB,GAAGA,iBAAW,CACjC,UAAC,KAAoC,EAAA;AACjC,QAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAE1B,QAAA,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,KAAK,EAAE;AACZ,gBAAA,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;AAC5B,aAAA,CAAC;AACL;AACL,KAAC,EACD,CAAC,QAAQ,EAAE,MAAM,CAAC,CACrB;AAED,IAAA,IAAM,WAAW,GAAGA,iBAAW,CAC3B,UAAC,KAAoC,EAAA;QACjC,MAAM,CAAC,EAAE,CAAC;AACV,QAAA,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC;AAC/B,KAAC,EACD,CAAC,OAAO,EAAE,MAAM,CAAC,CACpB;AAED,IAAAC,eAAS,CAAC,YAAA;AACN,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,QAAQ,CAAC,OAAO,GAAGC,uCAA0B,CAAC;AAC1C,gBAAA,IAAI,EAAA,IAAA;AACJ,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,iBAAiB,EAAA,iBAAA;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,eAAe,EAAE,gBAAgB;AACjC,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,oBAAoB,EAAE,CAAC;AACvB,gBAAA,sBAAsB,EAAE,EAAE;AAC7B,aAAA,CAAC;AACL;KACJ,EAAE,CAAC,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;AAEzD,IAAAD,eAAS,CAAC,YAAA;AACN,QAAA,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC;KAChC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAEjC,IAAAA,eAAS,CAAC,YAAA;QACN,aAAa,CAAC,KAAK,CAAC;KACvB,EAAE,EAAE,CAAC;IAEN,QACIL,qCAACO,UAAK,EAAAC,cAAA,CAAA,EAAA,EACE,SAAS,EACb,EAAA,SAAS,EAAEC,mBAAE,CAAC,SAAS,GAAI,EAAA,GAAA,EAAA,EAAA,EAAA,CAACC,uBAAM,CAAC,UAAU,IAAG,UAAU,EAAA,EAAA,EAAG,EAC7D,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAEC,0BAAS,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAA,CAAA,CACrC;AAEV,CAAC;AAGL,WAAW,CAAC,WAAW,GAAG,aAAa;;;;;"}
1
+ {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n type MouseEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\nimport { createTextMaskInputElement, type TextMaskInputElement } from 'text-mask-core';\n\nimport { Input, type InputProps } from '@alfalab/core-components-input';\n\nimport styles from './index.module.css';\n\n// TODO: заставить rollup добавлять кастомные декларации в сборку\ntype Mask = Array<string | RegExp>;\nexport type TextMaskConfig = {\n currentCaretPosition: number;\n rawValue: string;\n previousConformedValue: string;\n mask?: Mask | ((rawValue: string) => Mask);\n guide?: boolean;\n showMask?: boolean;\n placeholderChar?: string;\n keepCharPositions?: boolean;\n pipe?: (\n conformedValue: string,\n config: TextMaskConfig,\n ) => false | string | { value: string; indexesOfPipedChars: number[] };\n};\n\nexport type MaskedInputProps = InputProps & {\n /**\n * Маска для поля ввода\n * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array\n */\n mask?: TextMaskConfig['mask'];\n\n /**\n * Управляет поведением компонента при удалении символов\n */\n keepCharPositions?: TextMaskConfig['keepCharPositions'];\n\n /**\n * Дает возможность изменить значение поля перед рендером\n */\n onBeforeDisplay?: TextMaskConfig['pipe'];\n};\n\n// Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \\u2000\nexport const PLACEHOLDER_CHAR = '\\u2000';\n\nexport const MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n {\n mask,\n keepCharPositions = false,\n value,\n defaultValue,\n className,\n onBeforeDisplay,\n onChange,\n onClear,\n ...restProps\n },\n ref,\n ) => {\n const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null);\n const textMask = useRef<TextMaskInputElement | null>(null);\n\n const [inputValue, setInputValue] = useState(value || defaultValue || '');\n // Не показываем сырое значение до применения маски\n const [textHidden, setTextHidden] = useState(true);\n\n const update = useCallback(\n (newValue = '') => {\n if (textMask.current && inputNode) {\n try {\n textMask.current.update(newValue);\n } catch (e) {\n // ignore masking errors\n }\n\n setInputValue(inputNode.value);\n }\n },\n [inputNode],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n update(event.target.value);\n\n if (onChange) {\n onChange(event, {\n value: event.target.value,\n });\n }\n },\n [onChange, update],\n );\n\n const handleClear = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n update('');\n if (onClear) onClear(event);\n },\n [onClear, update],\n );\n\n useEffect(() => {\n if (inputNode) {\n textMask.current = createTextMaskInputElement({\n mask,\n inputElement: inputNode,\n pipe: onBeforeDisplay,\n guide: false,\n keepCharPositions,\n showMask: false,\n placeholderChar: PLACEHOLDER_CHAR,\n rawValue: '',\n currentCaretPosition: 0,\n previousConformedValue: '',\n });\n }\n }, [onBeforeDisplay, mask, keepCharPositions, inputNode]);\n\n useEffect(() => {\n update(value || defaultValue);\n }, [value, update, defaultValue]);\n\n useEffect(() => {\n setTextHidden(false);\n }, []);\n\n return (\n <Input\n {...restProps}\n className={cn(className, { [styles.textHidden]: textHidden })}\n value={inputValue}\n onChange={handleInputChange}\n onClear={handleClear}\n ref={mergeRefs([ref, setInputNode])}\n />\n );\n },\n);\n\nMaskedInput.displayName = 'MaskedInput';\n"],"names":["React","__rest","useState","useRef","useCallback","useEffect","createTextMaskInputElement","Input","__assign","cn","styles","mergeRefs"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { InputProps } from '@alfalab/core-components-input/esm';
2
+ import { type InputProps } from '@alfalab/core-components-input/esm';
3
3
  declare type Mask = Array<string | RegExp>;
4
4
  export declare type TextMaskConfig = {
5
5
  currentCaretPosition: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { ChangeEvent, MouseEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\nimport { createTextMaskInputElement, TextMaskInputElement } from 'text-mask-core';\n\nimport { Input, InputProps } from '@alfalab/core-components-input';\n\nimport styles from './index.module.css';\n\n// TODO: заставить rollup добавлять кастомные декларации в сборку\ntype Mask = Array<string | RegExp>;\nexport type TextMaskConfig = {\n currentCaretPosition: number;\n rawValue: string;\n previousConformedValue: string;\n mask?: Mask | ((rawValue: string) => Mask);\n guide?: boolean;\n showMask?: boolean;\n placeholderChar?: string;\n keepCharPositions?: boolean;\n pipe?: (\n conformedValue: string,\n config: TextMaskConfig,\n ) => false | string | { value: string; indexesOfPipedChars: number[] };\n};\n\nexport type MaskedInputProps = InputProps & {\n /**\n * Маска для поля ввода\n * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array\n */\n mask?: TextMaskConfig['mask'];\n\n /**\n * Управляет поведением компонента при удалении символов\n */\n keepCharPositions?: TextMaskConfig['keepCharPositions'];\n\n /**\n * Дает возможность изменить значение поля перед рендером\n */\n onBeforeDisplay?: TextMaskConfig['pipe'];\n};\n\n// Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \\u2000\nexport const PLACEHOLDER_CHAR = '\\u2000';\n\nexport const MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n {\n mask,\n keepCharPositions = false,\n value,\n defaultValue,\n className,\n onBeforeDisplay,\n onChange,\n onClear,\n ...restProps\n },\n ref,\n ) => {\n const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null);\n const textMask = useRef<TextMaskInputElement | null>(null);\n\n const [inputValue, setInputValue] = useState(value || defaultValue || '');\n // Не показываем сырое значение до применения маски\n const [textHidden, setTextHidden] = useState(true);\n\n const update = useCallback(\n (newValue = '') => {\n if (textMask.current && inputNode) {\n try {\n textMask.current.update(newValue);\n } catch (e) {\n // ignore masking errors\n }\n\n setInputValue(inputNode.value);\n }\n },\n [inputNode],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n update(event.target.value);\n\n if (onChange) {\n onChange(event, {\n value: event.target.value,\n });\n }\n },\n [onChange, update],\n );\n\n const handleClear = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n update('');\n if (onClear) onClear(event);\n },\n [onClear, update],\n );\n\n useEffect(() => {\n if (inputNode) {\n textMask.current = createTextMaskInputElement({\n mask,\n inputElement: inputNode,\n pipe: onBeforeDisplay,\n guide: false,\n keepCharPositions,\n showMask: false,\n placeholderChar: PLACEHOLDER_CHAR,\n rawValue: '',\n currentCaretPosition: 0,\n previousConformedValue: '',\n });\n }\n }, [onBeforeDisplay, mask, keepCharPositions, inputNode]);\n\n useEffect(() => {\n update(value || defaultValue);\n }, [value, update, defaultValue]);\n\n useEffect(() => {\n setTextHidden(false);\n }, []);\n\n return (\n <Input\n {...restProps}\n className={cn(className, { [styles.textHidden]: textHidden })}\n value={inputValue}\n onChange={handleInputChange}\n onClear={handleClear}\n ref={mergeRefs([ref, setInputNode])}\n />\n );\n },\n);\n\nMaskedInput.displayName = 'MaskedInput';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n type MouseEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\nimport { createTextMaskInputElement, type TextMaskInputElement } from 'text-mask-core';\n\nimport { Input, type InputProps } from '@alfalab/core-components-input';\n\nimport styles from './index.module.css';\n\n// TODO: заставить rollup добавлять кастомные декларации в сборку\ntype Mask = Array<string | RegExp>;\nexport type TextMaskConfig = {\n currentCaretPosition: number;\n rawValue: string;\n previousConformedValue: string;\n mask?: Mask | ((rawValue: string) => Mask);\n guide?: boolean;\n showMask?: boolean;\n placeholderChar?: string;\n keepCharPositions?: boolean;\n pipe?: (\n conformedValue: string,\n config: TextMaskConfig,\n ) => false | string | { value: string; indexesOfPipedChars: number[] };\n};\n\nexport type MaskedInputProps = InputProps & {\n /**\n * Маска для поля ввода\n * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array\n */\n mask?: TextMaskConfig['mask'];\n\n /**\n * Управляет поведением компонента при удалении символов\n */\n keepCharPositions?: TextMaskConfig['keepCharPositions'];\n\n /**\n * Дает возможность изменить значение поля перед рендером\n */\n onBeforeDisplay?: TextMaskConfig['pipe'];\n};\n\n// Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \\u2000\nexport const PLACEHOLDER_CHAR = '\\u2000';\n\nexport const MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n {\n mask,\n keepCharPositions = false,\n value,\n defaultValue,\n className,\n onBeforeDisplay,\n onChange,\n onClear,\n ...restProps\n },\n ref,\n ) => {\n const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null);\n const textMask = useRef<TextMaskInputElement | null>(null);\n\n const [inputValue, setInputValue] = useState(value || defaultValue || '');\n // Не показываем сырое значение до применения маски\n const [textHidden, setTextHidden] = useState(true);\n\n const update = useCallback(\n (newValue = '') => {\n if (textMask.current && inputNode) {\n try {\n textMask.current.update(newValue);\n } catch (e) {\n // ignore masking errors\n }\n\n setInputValue(inputNode.value);\n }\n },\n [inputNode],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n update(event.target.value);\n\n if (onChange) {\n onChange(event, {\n value: event.target.value,\n });\n }\n },\n [onChange, update],\n );\n\n const handleClear = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n update('');\n if (onClear) onClear(event);\n },\n [onClear, update],\n );\n\n useEffect(() => {\n if (inputNode) {\n textMask.current = createTextMaskInputElement({\n mask,\n inputElement: inputNode,\n pipe: onBeforeDisplay,\n guide: false,\n keepCharPositions,\n showMask: false,\n placeholderChar: PLACEHOLDER_CHAR,\n rawValue: '',\n currentCaretPosition: 0,\n previousConformedValue: '',\n });\n }\n }, [onBeforeDisplay, mask, keepCharPositions, inputNode]);\n\n useEffect(() => {\n update(value || defaultValue);\n }, [value, update, defaultValue]);\n\n useEffect(() => {\n setTextHidden(false);\n }, []);\n\n return (\n <Input\n {...restProps}\n className={cn(className, { [styles.textHidden]: textHidden })}\n value={inputValue}\n onChange={handleInputChange}\n onClear={handleClear}\n ref={mergeRefs([ref, setInputNode])}\n />\n );\n },\n);\n\nMaskedInput.displayName = 'MaskedInput';\n"],"names":[],"mappings":"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"}
package/esm/index.css CHANGED
@@ -1,3 +1,3 @@
1
- .masked-input__textHidden_13fn2 input {
1
+ .masked-input__textHidden_1wz45 input {
2
2
  opacity: 0;
3
3
  }
@@ -1,6 +1,6 @@
1
1
  import './index.css';
2
2
 
3
- var styles = {"textHidden":"masked-input__textHidden_13fn2"};
3
+ var styles = {"textHidden":"masked-input__textHidden_1wz45"};
4
4
 
5
5
  export { styles as default };
6
6
  //# sourceMappingURL=index.module.css.js.map
package/index.css CHANGED
@@ -1,3 +1,3 @@
1
- .masked-input__textHidden_13fn2 input {
1
+ .masked-input__textHidden_1wz45 input {
2
2
  opacity: 0;
3
3
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var styles = {"textHidden":"masked-input__textHidden_13fn2"};
5
+ var styles = {"textHidden":"masked-input__textHidden_1wz45"};
6
6
 
7
7
  module.exports = styles;
8
8
  //# sourceMappingURL=index.module.css.js.map
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { InputProps } from '@alfalab/core-components-input/modern';
2
+ import { type InputProps } from '@alfalab/core-components-input/modern';
3
3
  declare type Mask = Array<string | RegExp>;
4
4
  export declare type TextMaskConfig = {
5
5
  currentCaretPosition: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { ChangeEvent, MouseEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\nimport { createTextMaskInputElement, TextMaskInputElement } from 'text-mask-core';\n\nimport { Input, InputProps } from '@alfalab/core-components-input';\n\nimport styles from './index.module.css';\n\n// TODO: заставить rollup добавлять кастомные декларации в сборку\ntype Mask = Array<string | RegExp>;\nexport type TextMaskConfig = {\n currentCaretPosition: number;\n rawValue: string;\n previousConformedValue: string;\n mask?: Mask | ((rawValue: string) => Mask);\n guide?: boolean;\n showMask?: boolean;\n placeholderChar?: string;\n keepCharPositions?: boolean;\n pipe?: (\n conformedValue: string,\n config: TextMaskConfig,\n ) => false | string | { value: string; indexesOfPipedChars: number[] };\n};\n\nexport type MaskedInputProps = InputProps & {\n /**\n * Маска для поля ввода\n * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array\n */\n mask?: TextMaskConfig['mask'];\n\n /**\n * Управляет поведением компонента при удалении символов\n */\n keepCharPositions?: TextMaskConfig['keepCharPositions'];\n\n /**\n * Дает возможность изменить значение поля перед рендером\n */\n onBeforeDisplay?: TextMaskConfig['pipe'];\n};\n\n// Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \\u2000\nexport const PLACEHOLDER_CHAR = '\\u2000';\n\nexport const MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n {\n mask,\n keepCharPositions = false,\n value,\n defaultValue,\n className,\n onBeforeDisplay,\n onChange,\n onClear,\n ...restProps\n },\n ref,\n ) => {\n const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null);\n const textMask = useRef<TextMaskInputElement | null>(null);\n\n const [inputValue, setInputValue] = useState(value || defaultValue || '');\n // Не показываем сырое значение до применения маски\n const [textHidden, setTextHidden] = useState(true);\n\n const update = useCallback(\n (newValue = '') => {\n if (textMask.current && inputNode) {\n try {\n textMask.current.update(newValue);\n } catch (e) {\n // ignore masking errors\n }\n\n setInputValue(inputNode.value);\n }\n },\n [inputNode],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n update(event.target.value);\n\n if (onChange) {\n onChange(event, {\n value: event.target.value,\n });\n }\n },\n [onChange, update],\n );\n\n const handleClear = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n update('');\n if (onClear) onClear(event);\n },\n [onClear, update],\n );\n\n useEffect(() => {\n if (inputNode) {\n textMask.current = createTextMaskInputElement({\n mask,\n inputElement: inputNode,\n pipe: onBeforeDisplay,\n guide: false,\n keepCharPositions,\n showMask: false,\n placeholderChar: PLACEHOLDER_CHAR,\n rawValue: '',\n currentCaretPosition: 0,\n previousConformedValue: '',\n });\n }\n }, [onBeforeDisplay, mask, keepCharPositions, inputNode]);\n\n useEffect(() => {\n update(value || defaultValue);\n }, [value, update, defaultValue]);\n\n useEffect(() => {\n setTextHidden(false);\n }, []);\n\n return (\n <Input\n {...restProps}\n className={cn(className, { [styles.textHidden]: textHidden })}\n value={inputValue}\n onChange={handleInputChange}\n onClear={handleClear}\n ref={mergeRefs([ref, setInputNode])}\n />\n );\n },\n);\n\nMaskedInput.displayName = 'MaskedInput';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n type MouseEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\nimport { createTextMaskInputElement, type TextMaskInputElement } from 'text-mask-core';\n\nimport { Input, type InputProps } from '@alfalab/core-components-input';\n\nimport styles from './index.module.css';\n\n// TODO: заставить rollup добавлять кастомные декларации в сборку\ntype Mask = Array<string | RegExp>;\nexport type TextMaskConfig = {\n currentCaretPosition: number;\n rawValue: string;\n previousConformedValue: string;\n mask?: Mask | ((rawValue: string) => Mask);\n guide?: boolean;\n showMask?: boolean;\n placeholderChar?: string;\n keepCharPositions?: boolean;\n pipe?: (\n conformedValue: string,\n config: TextMaskConfig,\n ) => false | string | { value: string; indexesOfPipedChars: number[] };\n};\n\nexport type MaskedInputProps = InputProps & {\n /**\n * Маска для поля ввода\n * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array\n */\n mask?: TextMaskConfig['mask'];\n\n /**\n * Управляет поведением компонента при удалении символов\n */\n keepCharPositions?: TextMaskConfig['keepCharPositions'];\n\n /**\n * Дает возможность изменить значение поля перед рендером\n */\n onBeforeDisplay?: TextMaskConfig['pipe'];\n};\n\n// Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \\u2000\nexport const PLACEHOLDER_CHAR = '\\u2000';\n\nexport const MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n {\n mask,\n keepCharPositions = false,\n value,\n defaultValue,\n className,\n onBeforeDisplay,\n onChange,\n onClear,\n ...restProps\n },\n ref,\n ) => {\n const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null);\n const textMask = useRef<TextMaskInputElement | null>(null);\n\n const [inputValue, setInputValue] = useState(value || defaultValue || '');\n // Не показываем сырое значение до применения маски\n const [textHidden, setTextHidden] = useState(true);\n\n const update = useCallback(\n (newValue = '') => {\n if (textMask.current && inputNode) {\n try {\n textMask.current.update(newValue);\n } catch (e) {\n // ignore masking errors\n }\n\n setInputValue(inputNode.value);\n }\n },\n [inputNode],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n update(event.target.value);\n\n if (onChange) {\n onChange(event, {\n value: event.target.value,\n });\n }\n },\n [onChange, update],\n );\n\n const handleClear = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n update('');\n if (onClear) onClear(event);\n },\n [onClear, update],\n );\n\n useEffect(() => {\n if (inputNode) {\n textMask.current = createTextMaskInputElement({\n mask,\n inputElement: inputNode,\n pipe: onBeforeDisplay,\n guide: false,\n keepCharPositions,\n showMask: false,\n placeholderChar: PLACEHOLDER_CHAR,\n rawValue: '',\n currentCaretPosition: 0,\n previousConformedValue: '',\n });\n }\n }, [onBeforeDisplay, mask, keepCharPositions, inputNode]);\n\n useEffect(() => {\n update(value || defaultValue);\n }, [value, update, defaultValue]);\n\n useEffect(() => {\n setTextHidden(false);\n }, []);\n\n return (\n <Input\n {...restProps}\n className={cn(className, { [styles.textHidden]: textHidden })}\n value={inputValue}\n onChange={handleInputChange}\n onClear={handleClear}\n ref={mergeRefs([ref, setInputNode])}\n />\n );\n },\n);\n\nMaskedInput.displayName = 'MaskedInput';\n"],"names":[],"mappings":"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"}
package/modern/index.css CHANGED
@@ -1,3 +1,3 @@
1
- .masked-input__textHidden_13fn2 input {
1
+ .masked-input__textHidden_1wz45 input {
2
2
  opacity: 0;
3
3
  }
@@ -1,6 +1,6 @@
1
1
  import './index.css';
2
2
 
3
- const styles = {"textHidden":"masked-input__textHidden_13fn2"};
3
+ const styles = {"textHidden":"masked-input__textHidden_1wz45"};
4
4
 
5
5
  export { styles as default };
6
6
  //# sourceMappingURL=index.module.css.js.map
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { InputProps } from '@alfalab/core-components-input/moderncssm';
2
+ import { type InputProps } from '@alfalab/core-components-input/moderncssm';
3
3
  declare type Mask = Array<string | RegExp>;
4
4
  export declare type TextMaskConfig = {
5
5
  currentCaretPosition: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { ChangeEvent, MouseEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\nimport { createTextMaskInputElement, TextMaskInputElement } from 'text-mask-core';\n\nimport { Input, InputProps } from '@alfalab/core-components-input';\n\nimport styles from './index.module.css';\n\n// TODO: заставить rollup добавлять кастомные декларации в сборку\ntype Mask = Array<string | RegExp>;\nexport type TextMaskConfig = {\n currentCaretPosition: number;\n rawValue: string;\n previousConformedValue: string;\n mask?: Mask | ((rawValue: string) => Mask);\n guide?: boolean;\n showMask?: boolean;\n placeholderChar?: string;\n keepCharPositions?: boolean;\n pipe?: (\n conformedValue: string,\n config: TextMaskConfig,\n ) => false | string | { value: string; indexesOfPipedChars: number[] };\n};\n\nexport type MaskedInputProps = InputProps & {\n /**\n * Маска для поля ввода\n * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array\n */\n mask?: TextMaskConfig['mask'];\n\n /**\n * Управляет поведением компонента при удалении символов\n */\n keepCharPositions?: TextMaskConfig['keepCharPositions'];\n\n /**\n * Дает возможность изменить значение поля перед рендером\n */\n onBeforeDisplay?: TextMaskConfig['pipe'];\n};\n\n// Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \\u2000\nexport const PLACEHOLDER_CHAR = '\\u2000';\n\nexport const MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n {\n mask,\n keepCharPositions = false,\n value,\n defaultValue,\n className,\n onBeforeDisplay,\n onChange,\n onClear,\n ...restProps\n },\n ref,\n ) => {\n const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null);\n const textMask = useRef<TextMaskInputElement | null>(null);\n\n const [inputValue, setInputValue] = useState(value || defaultValue || '');\n // Не показываем сырое значение до применения маски\n const [textHidden, setTextHidden] = useState(true);\n\n const update = useCallback(\n (newValue = '') => {\n if (textMask.current && inputNode) {\n try {\n textMask.current.update(newValue);\n } catch (e) {\n // ignore masking errors\n }\n\n setInputValue(inputNode.value);\n }\n },\n [inputNode],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n update(event.target.value);\n\n if (onChange) {\n onChange(event, {\n value: event.target.value,\n });\n }\n },\n [onChange, update],\n );\n\n const handleClear = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n update('');\n if (onClear) onClear(event);\n },\n [onClear, update],\n );\n\n useEffect(() => {\n if (inputNode) {\n textMask.current = createTextMaskInputElement({\n mask,\n inputElement: inputNode,\n pipe: onBeforeDisplay,\n guide: false,\n keepCharPositions,\n showMask: false,\n placeholderChar: PLACEHOLDER_CHAR,\n rawValue: '',\n currentCaretPosition: 0,\n previousConformedValue: '',\n });\n }\n }, [onBeforeDisplay, mask, keepCharPositions, inputNode]);\n\n useEffect(() => {\n update(value || defaultValue);\n }, [value, update, defaultValue]);\n\n useEffect(() => {\n setTextHidden(false);\n }, []);\n\n return (\n <Input\n {...restProps}\n className={cn(className, { [styles.textHidden]: textHidden })}\n value={inputValue}\n onChange={handleInputChange}\n onClear={handleClear}\n ref={mergeRefs([ref, setInputNode])}\n />\n );\n },\n);\n\nMaskedInput.displayName = 'MaskedInput';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n type MouseEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\nimport { createTextMaskInputElement, type TextMaskInputElement } from 'text-mask-core';\n\nimport { Input, type InputProps } from '@alfalab/core-components-input';\n\nimport styles from './index.module.css';\n\n// TODO: заставить rollup добавлять кастомные декларации в сборку\ntype Mask = Array<string | RegExp>;\nexport type TextMaskConfig = {\n currentCaretPosition: number;\n rawValue: string;\n previousConformedValue: string;\n mask?: Mask | ((rawValue: string) => Mask);\n guide?: boolean;\n showMask?: boolean;\n placeholderChar?: string;\n keepCharPositions?: boolean;\n pipe?: (\n conformedValue: string,\n config: TextMaskConfig,\n ) => false | string | { value: string; indexesOfPipedChars: number[] };\n};\n\nexport type MaskedInputProps = InputProps & {\n /**\n * Маска для поля ввода\n * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array\n */\n mask?: TextMaskConfig['mask'];\n\n /**\n * Управляет поведением компонента при удалении символов\n */\n keepCharPositions?: TextMaskConfig['keepCharPositions'];\n\n /**\n * Дает возможность изменить значение поля перед рендером\n */\n onBeforeDisplay?: TextMaskConfig['pipe'];\n};\n\n// Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \\u2000\nexport const PLACEHOLDER_CHAR = '\\u2000';\n\nexport const MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n {\n mask,\n keepCharPositions = false,\n value,\n defaultValue,\n className,\n onBeforeDisplay,\n onChange,\n onClear,\n ...restProps\n },\n ref,\n ) => {\n const [inputNode, setInputNode] = useState<HTMLInputElement | null>(null);\n const textMask = useRef<TextMaskInputElement | null>(null);\n\n const [inputValue, setInputValue] = useState(value || defaultValue || '');\n // Не показываем сырое значение до применения маски\n const [textHidden, setTextHidden] = useState(true);\n\n const update = useCallback(\n (newValue = '') => {\n if (textMask.current && inputNode) {\n try {\n textMask.current.update(newValue);\n } catch (e) {\n // ignore masking errors\n }\n\n setInputValue(inputNode.value);\n }\n },\n [inputNode],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n update(event.target.value);\n\n if (onChange) {\n onChange(event, {\n value: event.target.value,\n });\n }\n },\n [onChange, update],\n );\n\n const handleClear = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n update('');\n if (onClear) onClear(event);\n },\n [onClear, update],\n );\n\n useEffect(() => {\n if (inputNode) {\n textMask.current = createTextMaskInputElement({\n mask,\n inputElement: inputNode,\n pipe: onBeforeDisplay,\n guide: false,\n keepCharPositions,\n showMask: false,\n placeholderChar: PLACEHOLDER_CHAR,\n rawValue: '',\n currentCaretPosition: 0,\n previousConformedValue: '',\n });\n }\n }, [onBeforeDisplay, mask, keepCharPositions, inputNode]);\n\n useEffect(() => {\n update(value || defaultValue);\n }, [value, update, defaultValue]);\n\n useEffect(() => {\n setTextHidden(false);\n }, []);\n\n return (\n <Input\n {...restProps}\n className={cn(className, { [styles.textHidden]: textHidden })}\n value={inputValue}\n onChange={handleInputChange}\n onClear={handleClear}\n ref={mergeRefs([ref, setInputNode])}\n />\n );\n },\n);\n\nMaskedInput.displayName = 'MaskedInput';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-masked-input",
3
- "version": "7.0.1",
3
+ "version": "7.0.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -10,7 +10,7 @@
10
10
  "main": "index.js",
11
11
  "module": "./esm/index.js",
12
12
  "dependencies": {
13
- "@alfalab/core-components-input": "^16.0.1",
13
+ "@alfalab/core-components-input": "^16.0.2",
14
14
  "classnames": "^2.5.1",
15
15
  "react-merge-refs": "^1.1.0",
16
16
  "text-mask-core": "^5.1.2",
@@ -24,6 +24,6 @@
24
24
  "access": "public",
25
25
  "directory": "dist"
26
26
  },
27
- "themesVersion": "14.1.0",
27
+ "themesVersion": "14.1.2",
28
28
  "varsVersion": "10.1.0"
29
29
  }
package/src/Component.tsx CHANGED
@@ -1,9 +1,16 @@
1
- import React, { ChangeEvent, MouseEvent, useCallback, useEffect, useRef, useState } from 'react';
1
+ import React, {
2
+ type ChangeEvent,
3
+ type MouseEvent,
4
+ useCallback,
5
+ useEffect,
6
+ useRef,
7
+ useState,
8
+ } from 'react';
2
9
  import mergeRefs from 'react-merge-refs';
3
10
  import cn from 'classnames';
4
- import { createTextMaskInputElement, TextMaskInputElement } from 'text-mask-core';
11
+ import { createTextMaskInputElement, type TextMaskInputElement } from 'text-mask-core';
5
12
 
6
- import { Input, InputProps } from '@alfalab/core-components-input';
13
+ import { Input, type InputProps } from '@alfalab/core-components-input';
7
14
 
8
15
  import styles from './index.module.css';
9
16