@alfalab/core-components-masked-input 6.3.39 → 7.0.0-snapshot-6a9d3fc

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,8 +1,7 @@
1
- /// <reference types="react" />
2
1
  import React from 'react';
3
- import { InputProps } from "@alfalab/core-components-input";
4
- type Mask = Array<string | RegExp>;
5
- type TextMaskConfig = {
2
+ import { InputProps } from '@alfalab/core-components-input';
3
+ declare type Mask = Array<string | RegExp>;
4
+ export declare type TextMaskConfig = {
6
5
  currentCaretPosition: number;
7
6
  rawValue: string;
8
7
  previousConformedValue: string;
@@ -16,7 +15,7 @@ type TextMaskConfig = {
16
15
  indexesOfPipedChars: number[];
17
16
  };
18
17
  };
19
- type MaskedInputProps = InputProps & {
18
+ export declare type MaskedInputProps = InputProps & {
20
19
  /**
21
20
  * Маска для поля ввода
22
21
  * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array
@@ -31,8 +30,8 @@ type MaskedInputProps = InputProps & {
31
30
  */
32
31
  onBeforeDisplay?: TextMaskConfig['pipe'];
33
32
  };
34
- declare const PLACEHOLDER_CHAR = "\u2000";
35
- declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab/core-components-input/components/base-input").BaseInputProps, "FormControlComponent"> & {
33
+ export declare const PLACEHOLDER_CHAR = "\u2000";
34
+ export declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab/core-components-input/components/base-input").BaseInputProps, "FormControlComponent"> & {
36
35
  breakpoint?: number | undefined;
37
36
  client?: "desktop" | "mobile" | undefined;
38
37
  defaultMatchMediaValue?: boolean | (() => boolean) | undefined;
@@ -51,4 +50,4 @@ declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab
51
50
  */
52
51
  onBeforeDisplay?: TextMaskConfig['pipe'];
53
52
  } & React.RefAttributes<HTMLInputElement>>;
54
- export { TextMaskConfig, MaskedInputProps, PLACEHOLDER_CHAR, MaskedInput };
53
+ export {};
package/Component.js CHANGED
@@ -8,6 +8,7 @@ var mergeRefs = require('react-merge-refs');
8
8
  var cn = require('classnames');
9
9
  var textMaskCore = require('text-mask-core');
10
10
  var coreComponentsInput = require('@alfalab/core-components-input');
11
+ var index_module = require('./index.module.css.js');
11
12
 
12
13
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
13
14
 
@@ -15,9 +16,6 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
15
16
  var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
16
17
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
17
18
 
18
- var styles = {"textHidden":"masked-input__textHidden_1iern"};
19
- require('./index.css')
20
-
21
19
  // Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \u2000
22
20
  var PLACEHOLDER_CHAR = '\u2000';
23
21
  var MaskedInput = React__default.default.forwardRef(function (_a, ref) {
@@ -75,9 +73,10 @@ var MaskedInput = React__default.default.forwardRef(function (_a, ref) {
75
73
  React.useEffect(function () {
76
74
  setTextHidden(false);
77
75
  }, []);
78
- return (React__default.default.createElement(coreComponentsInput.Input, tslib.__assign({}, restProps, { className: cn__default.default(className, (_b = {}, _b[styles.textHidden] = textHidden, _b)), value: inputValue, onChange: handleInputChange, onClear: handleClear, ref: mergeRefs__default.default([ref, setInputNode]) })));
76
+ return (React__default.default.createElement(coreComponentsInput.Input, tslib.__assign({}, restProps, { className: cn__default.default(className, (_b = {}, _b[index_module.textHidden] = textHidden, _b)), value: inputValue, onChange: handleInputChange, onClear: handleClear, ref: mergeRefs__default.default([ref, setInputNode]) })));
79
77
  });
80
78
  MaskedInput.displayName = 'MaskedInput';
81
79
 
82
80
  exports.MaskedInput = MaskedInput;
83
81
  exports.PLACEHOLDER_CHAR = PLACEHOLDER_CHAR;
82
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +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,8 +1,7 @@
1
- /// <reference types="react" />
2
1
  import React from 'react';
3
- import { InputProps } from "@alfalab/core-components-input";
4
- type Mask = Array<string | RegExp>;
5
- type TextMaskConfig = {
2
+ import { InputProps } from '@alfalab/core-components-input';
3
+ declare type Mask = Array<string | RegExp>;
4
+ export declare type TextMaskConfig = {
6
5
  currentCaretPosition: number;
7
6
  rawValue: string;
8
7
  previousConformedValue: string;
@@ -16,7 +15,7 @@ type TextMaskConfig = {
16
15
  indexesOfPipedChars: number[];
17
16
  };
18
17
  };
19
- type MaskedInputProps = InputProps & {
18
+ export declare type MaskedInputProps = InputProps & {
20
19
  /**
21
20
  * Маска для поля ввода
22
21
  * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array
@@ -31,8 +30,8 @@ type MaskedInputProps = InputProps & {
31
30
  */
32
31
  onBeforeDisplay?: TextMaskConfig['pipe'];
33
32
  };
34
- declare const PLACEHOLDER_CHAR = "\u2000";
35
- declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab/core-components-input/components/base-input").BaseInputProps, "FormControlComponent"> & {
33
+ export declare const PLACEHOLDER_CHAR = "\u2000";
34
+ export declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab/core-components-input/components/base-input").BaseInputProps, "FormControlComponent"> & {
36
35
  breakpoint?: number | undefined;
37
36
  client?: "desktop" | "mobile" | undefined;
38
37
  defaultMatchMediaValue?: boolean | (() => boolean) | undefined;
@@ -51,4 +50,4 @@ declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab
51
50
  */
52
51
  onBeforeDisplay?: TextMaskConfig['pipe'];
53
52
  } & React.RefAttributes<HTMLInputElement>>;
54
- export { TextMaskConfig, MaskedInputProps, PLACEHOLDER_CHAR, MaskedInput };
53
+ export {};
package/cssm/Component.js CHANGED
@@ -7,7 +7,7 @@ var React = require('react');
7
7
  var mergeRefs = require('react-merge-refs');
8
8
  var cn = require('classnames');
9
9
  var textMaskCore = require('text-mask-core');
10
- var coreComponentsInput = require('@alfalab/core-components-input/cssm');
10
+ var cssm = require('@alfalab/core-components-input/cssm');
11
11
  var styles = require('./index.module.css');
12
12
 
13
13
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -74,9 +74,10 @@ var MaskedInput = React__default.default.forwardRef(function (_a, ref) {
74
74
  React.useEffect(function () {
75
75
  setTextHidden(false);
76
76
  }, []);
77
- return (React__default.default.createElement(coreComponentsInput.Input, tslib.__assign({}, restProps, { className: cn__default.default(className, (_b = {}, _b[styles__default.default.textHidden] = textHidden, _b)), value: inputValue, onChange: handleInputChange, onClear: handleClear, ref: mergeRefs__default.default([ref, setInputNode]) })));
77
+ return (React__default.default.createElement(cssm.Input, tslib.__assign({}, restProps, { className: cn__default.default(className, (_b = {}, _b[styles__default.default.textHidden] = textHidden, _b)), value: inputValue, onChange: handleInputChange, onClear: handleClear, ref: mergeRefs__default.default([ref, setInputNode]) })));
78
78
  });
79
79
  MaskedInput.displayName = 'MaskedInput';
80
80
 
81
81
  exports.MaskedInput = MaskedInput;
82
82
  exports.PLACEHOLDER_CHAR = PLACEHOLDER_CHAR;
83
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +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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"}
package/cssm/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from "./Component";
1
+ export * from './Component';
package/cssm/index.js CHANGED
@@ -8,3 +8,4 @@ var Component = require('./Component.js');
8
8
 
9
9
  exports.MaskedInput = Component.MaskedInput;
10
10
  exports.PLACEHOLDER_CHAR = Component.PLACEHOLDER_CHAR;
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,8 +1,7 @@
1
- /// <reference types="react" />
2
1
  import React from 'react';
3
- import { InputProps } from "@alfalab/core-components-input";
4
- type Mask = Array<string | RegExp>;
5
- type TextMaskConfig = {
2
+ import { InputProps } from '@alfalab/core-components-input';
3
+ declare type Mask = Array<string | RegExp>;
4
+ export declare type TextMaskConfig = {
6
5
  currentCaretPosition: number;
7
6
  rawValue: string;
8
7
  previousConformedValue: string;
@@ -16,7 +15,7 @@ type TextMaskConfig = {
16
15
  indexesOfPipedChars: number[];
17
16
  };
18
17
  };
19
- type MaskedInputProps = InputProps & {
18
+ export declare type MaskedInputProps = InputProps & {
20
19
  /**
21
20
  * Маска для поля ввода
22
21
  * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array
@@ -31,8 +30,8 @@ type MaskedInputProps = InputProps & {
31
30
  */
32
31
  onBeforeDisplay?: TextMaskConfig['pipe'];
33
32
  };
34
- declare const PLACEHOLDER_CHAR = "\u2000";
35
- declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab/core-components-input/components/base-input").BaseInputProps, "FormControlComponent"> & {
33
+ export declare const PLACEHOLDER_CHAR = "\u2000";
34
+ export declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab/core-components-input/components/base-input").BaseInputProps, "FormControlComponent"> & {
36
35
  breakpoint?: number | undefined;
37
36
  client?: "desktop" | "mobile" | undefined;
38
37
  defaultMatchMediaValue?: boolean | (() => boolean) | undefined;
@@ -51,4 +50,4 @@ declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab
51
50
  */
52
51
  onBeforeDisplay?: TextMaskConfig['pipe'];
53
52
  } & React.RefAttributes<HTMLInputElement>>;
54
- export { TextMaskConfig, MaskedInputProps, PLACEHOLDER_CHAR, MaskedInput };
53
+ export {};
package/esm/Component.js CHANGED
@@ -4,9 +4,7 @@ import mergeRefs from 'react-merge-refs';
4
4
  import cn from 'classnames';
5
5
  import { createTextMaskInputElement } from 'text-mask-core';
6
6
  import { Input } from '@alfalab/core-components-input/esm';
7
-
8
- var styles = {"textHidden":"masked-input__textHidden_1iern"};
9
- require('./index.css')
7
+ import styles from './index.module.css.js';
10
8
 
11
9
  // Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \u2000
12
10
  var PLACEHOLDER_CHAR = '\u2000';
@@ -70,3 +68,4 @@ var MaskedInput = React.forwardRef(function (_a, ref) {
70
68
  MaskedInput.displayName = 'MaskedInput';
71
69
 
72
70
  export { MaskedInput, PLACEHOLDER_CHAR };
71
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +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":";;;;;;;;AA4CA;AACO,IAAM,gBAAgB,GAAG;AAEnB,IAAA,WAAW,GAAG,KAAK,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,GAAA,MAAA,CAAA,EAAA,EAThB,6GAUC,CADe;IAIV,IAAA,EAAA,GAA4B,QAAQ,CAA0B,IAAI,CAAC,EAAlE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,YAAY,GAAA,EAAA,CAAA,CAAA,CAA2C;AACzE,IAAA,IAAM,QAAQ,GAAG,MAAM,CAA8B,IAAI,CAAC;AAEpD,IAAA,IAAA,EAA8B,GAAA,QAAQ,CAAC,KAAK,IAAI,YAAY,IAAI,EAAE,CAAC,EAAlE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,QAAyC;;IAEnE,IAAA,EAAA,GAA8B,QAAQ,CAAC,IAAI,CAAC,EAA3C,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,GAAA,EAAA,CAAA,CAAA,CAAkB;AAElD,IAAA,IAAM,MAAM,GAAG,WAAW,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,GAAG,WAAW,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,GAAG,WAAW,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,IAAA,SAAS,CAAC,YAAA;AACN,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,QAAQ,CAAC,OAAO,GAAG,0BAA0B,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,IAAA,SAAS,CAAC,YAAA;AACN,QAAA,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC;KAChC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAEjC,IAAA,SAAS,CAAC,YAAA;QACN,aAAa,CAAC,KAAK,CAAC;KACvB,EAAE,EAAE,CAAC;IAEN,QACI,oBAAC,KAAK,EAAA,QAAA,CAAA,EAAA,EACE,SAAS,EACb,EAAA,SAAS,EAAE,EAAE,CAAC,SAAS,GAAI,EAAA,GAAA,EAAA,EAAA,EAAA,CAAC,MAAM,CAAC,UAAU,IAAG,UAAU,EAAA,EAAA,EAAG,EAC7D,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAA,CAAA,CACrC;AAEV,CAAC;AAGL,WAAW,CAAC,WAAW,GAAG,aAAa;;;;"}
package/esm/index.css CHANGED
@@ -1,4 +1,3 @@
1
- /* hash: 1b3cg */
2
- .masked-input__textHidden_1iern input {
1
+ .masked-input__textHidden_8duji input {
3
2
  opacity: 0;
4
3
  }
package/esm/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from "./Component";
1
+ export * from './Component';
package/esm/index.js CHANGED
@@ -1 +1,2 @@
1
1
  export { MaskedInput, PLACEHOLDER_CHAR } from './Component.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import './index.css';
2
+
3
+ var styles = {"textHidden":"masked-input__textHidden_8duji"};
4
+
5
+ export { styles as default };
6
+ //# sourceMappingURL=index.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.module.css.js","sources":["src/index.module.css"],"sourcesContent":[".textHidden input {\n opacity: 0;\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,YAAY,CAAC,gCAAgC,CAAC;;;;"}
package/index.css CHANGED
@@ -1,4 +1,3 @@
1
- /* hash: 1b3cg */
2
- .masked-input__textHidden_1iern input {
1
+ .masked-input__textHidden_8duji input {
3
2
  opacity: 0;
4
3
  }
package/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from "./Component";
1
+ export * from './Component';
package/index.js CHANGED
@@ -8,3 +8,4 @@ var Component = require('./Component.js');
8
8
 
9
9
  exports.MaskedInput = Component.MaskedInput;
10
10
  exports.PLACEHOLDER_CHAR = Component.PLACEHOLDER_CHAR;
11
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ require('./index.css');
4
+
5
+ var styles = {"textHidden":"masked-input__textHidden_8duji"};
6
+
7
+ module.exports = styles;
8
+ //# sourceMappingURL=index.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.module.css.js","sources":["src/index.module.css"],"sourcesContent":[".textHidden input {\n opacity: 0;\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,YAAY,CAAC,gCAAgC,CAAC;;;;"}
@@ -1,8 +1,7 @@
1
- /// <reference types="react" />
2
1
  import React from 'react';
3
- import { InputProps } from "@alfalab/core-components-input";
4
- type Mask = Array<string | RegExp>;
5
- type TextMaskConfig = {
2
+ import { InputProps } from '@alfalab/core-components-input';
3
+ declare type Mask = Array<string | RegExp>;
4
+ export declare type TextMaskConfig = {
6
5
  currentCaretPosition: number;
7
6
  rawValue: string;
8
7
  previousConformedValue: string;
@@ -16,7 +15,7 @@ type TextMaskConfig = {
16
15
  indexesOfPipedChars: number[];
17
16
  };
18
17
  };
19
- type MaskedInputProps = InputProps & {
18
+ export declare type MaskedInputProps = InputProps & {
20
19
  /**
21
20
  * Маска для поля ввода
22
21
  * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array
@@ -31,8 +30,8 @@ type MaskedInputProps = InputProps & {
31
30
  */
32
31
  onBeforeDisplay?: TextMaskConfig['pipe'];
33
32
  };
34
- declare const PLACEHOLDER_CHAR = "\u2000";
35
- declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab/core-components-input/components/base-input").BaseInputProps, "FormControlComponent"> & {
33
+ export declare const PLACEHOLDER_CHAR = "\u2000";
34
+ export declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab/core-components-input/components/base-input").BaseInputProps, "FormControlComponent"> & {
36
35
  breakpoint?: number | undefined;
37
36
  client?: "desktop" | "mobile" | undefined;
38
37
  defaultMatchMediaValue?: boolean | (() => boolean) | undefined;
@@ -51,4 +50,4 @@ declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab
51
50
  */
52
51
  onBeforeDisplay?: TextMaskConfig['pipe'];
53
52
  } & React.RefAttributes<HTMLInputElement>>;
54
- export { TextMaskConfig, MaskedInputProps, PLACEHOLDER_CHAR, MaskedInput };
53
+ export {};
@@ -3,9 +3,7 @@ import mergeRefs from 'react-merge-refs';
3
3
  import cn from 'classnames';
4
4
  import { createTextMaskInputElement } from 'text-mask-core';
5
5
  import { Input } from '@alfalab/core-components-input/modern';
6
-
7
- const styles = {"textHidden":"masked-input__textHidden_1iern"};
8
- require('./index.css')
6
+ import styles from './index.module.css.js';
9
7
 
10
8
  // Символ плейсхолдера не может входить в маску, поэтому вместо пробела используется \u2000
11
9
  const PLACEHOLDER_CHAR = '\u2000';
@@ -66,3 +64,4 @@ const MaskedInput = React.forwardRef(({ mask, keepCharPositions = false, value,
66
64
  MaskedInput.displayName = 'MaskedInput';
67
65
 
68
66
  export { MaskedInput, PLACEHOLDER_CHAR };
67
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +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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"}
package/modern/index.css CHANGED
@@ -1,4 +1,3 @@
1
- /* hash: 1b3cg */
2
- .masked-input__textHidden_1iern input {
1
+ .masked-input__textHidden_8duji input {
3
2
  opacity: 0;
4
3
  }
package/modern/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from "./Component";
1
+ export * from './Component';
package/modern/index.js CHANGED
@@ -1 +1,2 @@
1
1
  export { MaskedInput, PLACEHOLDER_CHAR } from './Component.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import './index.css';
2
+
3
+ const styles = {"textHidden":"masked-input__textHidden_8duji"};
4
+
5
+ export { styles as default };
6
+ //# sourceMappingURL=index.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.module.css.js","sources":["src/index.module.css"],"sourcesContent":[".textHidden input {\n opacity: 0;\n}\n"],"names":[],"mappings":";;AAEgB,eAAe,CAAC,YAAY,CAAC,gCAAgC,CAAC;;;;"}
@@ -1,8 +1,7 @@
1
- /// <reference types="react" />
2
1
  import React from 'react';
3
- import { InputProps } from "@alfalab/core-components-input";
4
- type Mask = Array<string | RegExp>;
5
- type TextMaskConfig = {
2
+ import { InputProps } from '@alfalab/core-components-input';
3
+ declare type Mask = Array<string | RegExp>;
4
+ export declare type TextMaskConfig = {
6
5
  currentCaretPosition: number;
7
6
  rawValue: string;
8
7
  previousConformedValue: string;
@@ -16,7 +15,7 @@ type TextMaskConfig = {
16
15
  indexesOfPipedChars: number[];
17
16
  };
18
17
  };
19
- type MaskedInputProps = InputProps & {
18
+ export declare type MaskedInputProps = InputProps & {
20
19
  /**
21
20
  * Маска для поля ввода
22
21
  * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#mask-array
@@ -31,8 +30,8 @@ type MaskedInputProps = InputProps & {
31
30
  */
32
31
  onBeforeDisplay?: TextMaskConfig['pipe'];
33
32
  };
34
- declare const PLACEHOLDER_CHAR = "\u2000";
35
- declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab/core-components-input/components/base-input").BaseInputProps, "FormControlComponent"> & {
33
+ export declare const PLACEHOLDER_CHAR = "\u2000";
34
+ export declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab/core-components-input/components/base-input").BaseInputProps, "FormControlComponent"> & {
36
35
  breakpoint?: number | undefined;
37
36
  client?: "desktop" | "mobile" | undefined;
38
37
  defaultMatchMediaValue?: boolean | (() => boolean) | undefined;
@@ -51,4 +50,4 @@ declare const MaskedInput: React.ForwardRefExoticComponent<Omit<import("@alfalab
51
50
  */
52
51
  onBeforeDisplay?: TextMaskConfig['pipe'];
53
52
  } & React.RefAttributes<HTMLInputElement>>;
54
- export { TextMaskConfig, MaskedInputProps, PLACEHOLDER_CHAR, MaskedInput };
53
+ export {};
@@ -64,3 +64,4 @@ const MaskedInput = React.forwardRef(({ mask, keepCharPositions = false, value,
64
64
  MaskedInput.displayName = 'MaskedInput';
65
65
 
66
66
  export { MaskedInput, PLACEHOLDER_CHAR };
67
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +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 +1 @@
1
- export * from "./Component";
1
+ export * from './Component';
@@ -1 +1,2 @@
1
1
  export { MaskedInput, PLACEHOLDER_CHAR } from './Component.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-masked-input",
3
- "version": "6.3.39",
3
+ "version": "7.0.0-snapshot-6a9d3fc",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -12,15 +12,16 @@
12
12
  },
13
13
  "sideEffects": false,
14
14
  "peerDependencies": {
15
- "react": "^16.9.0 || ^17.0.1 || ^18.0.0"
15
+ "react": "^16.9.0 || ^17.0.1 || ^18.0.0",
16
+ "react-dom": "^16.9.0 || ^17.0.1 || ^18.0.0"
16
17
  },
17
18
  "dependencies": {
18
- "@alfalab/core-components-input": "^15.6.2",
19
+ "@alfalab/core-components-input": "16.0.0-snapshot-6a9d3fc",
19
20
  "classnames": "^2.5.1",
20
21
  "react-merge-refs": "^1.1.0",
21
22
  "text-mask-core": "^5.1.2",
22
23
  "tslib": "^2.4.0"
23
24
  },
24
- "themesVersion": "13.7.4",
25
- "varsVersion": "9.20.1"
25
+ "themesVersion": "14.0.0-snapshot-6a9d3fc",
26
+ "varsVersion": "10.0.0-snapshot-6a9d3fc"
26
27
  }
@@ -0,0 +1,44 @@
1
+ declare module 'text-mask-core' {
2
+ export type Mask = Array<string | RegExp>;
3
+
4
+ export type TextMaskConfig = {
5
+ currentCaretPosition: number;
6
+ rawValue: string;
7
+ previousConformedValue: string;
8
+ mask?: Mask | ((rawValue: string) => Mask);
9
+ guide?: boolean;
10
+ showMask?: boolean;
11
+ placeholderChar?: string;
12
+ keepCharPositions?: boolean;
13
+ pipe?: (
14
+ conformedValue: string,
15
+ config: TextMaskConfig,
16
+ ) => false | string | { value: string; indexesOfPipedChars: number[] };
17
+ };
18
+
19
+ export type TextMaskInputElement = {
20
+ state: { previousConformedValue: string; previousPlaceholder: string };
21
+ update: (
22
+ rawValue?: string,
23
+ textMaskConfig?: TextMaskConfig & { inputElement: HTMLInputElement },
24
+ ) => void;
25
+ };
26
+
27
+ export function createTextMaskInputElement(
28
+ config: TextMaskConfig & { inputElement: HTMLInputElement },
29
+ ): TextMaskInputElement;
30
+
31
+ export function conformToMask(
32
+ text: string,
33
+ mask: Mask | ((rawValue: string) => Mask),
34
+ config?: TextMaskConfig,
35
+ ): conformToMaskResult;
36
+
37
+ // eslint-disable-next-line @typescript-eslint/naming-convention
38
+ export type conformToMaskResult = {
39
+ conformedValue: string;
40
+ meta: {
41
+ someCharsRejected: boolean;
42
+ };
43
+ };
44
+ }