@salutejs/plasma-new-hope 0.146.0-dev.0 → 0.147.0-canary.1418.10899581491.0
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/components/Mask/Mask.js +209 -0
- package/cjs/components/Mask/Mask.js.map +1 -0
- package/cjs/components/Mask/utils/constants.js +33 -0
- package/cjs/components/Mask/utils/constants.js.map +1 -0
- package/cjs/components/Mask/utils/createMask.js +53 -0
- package/cjs/components/Mask/utils/createMask.js.map +1 -0
- package/cjs/components/Mask/utils/mask.js +244 -0
- package/cjs/components/Mask/utils/mask.js.map +1 -0
- package/cjs/components/Mask/utils/parseMask.js +38 -0
- package/cjs/components/Mask/utils/parseMask.js.map +1 -0
- package/cjs/components/Mask/utils/processInput.js +54 -0
- package/cjs/components/Mask/utils/processInput.js.map +1 -0
- package/cjs/components/Mask/utils/processMask.js +101 -0
- package/cjs/components/Mask/utils/processMask.js.map +1 -0
- package/cjs/components/Mask/utils/selection.js +50 -0
- package/cjs/components/Mask/utils/selection.js.map +1 -0
- package/cjs/components/TextField/TextField.js +3 -1
- package/cjs/components/TextField/TextField.js.map +1 -1
- package/cjs/index.js +2 -0
- package/cjs/index.js.map +1 -1
- package/emotion/cjs/components/Mask/Mask.js +220 -0
- package/emotion/cjs/components/Mask/Mask.template-doc.mdx +126 -0
- package/emotion/cjs/components/Mask/Mask.types.js +5 -0
- package/emotion/cjs/components/Mask/index.js +12 -0
- package/emotion/cjs/components/Mask/utils/constants.js +29 -0
- package/emotion/cjs/components/Mask/utils/createMask.js +50 -0
- package/emotion/cjs/components/Mask/utils/mask.js +247 -0
- package/emotion/cjs/components/Mask/utils/parseMask.js +36 -0
- package/emotion/cjs/components/Mask/utils/processInput.js +52 -0
- package/emotion/cjs/components/Mask/utils/processMask.js +99 -0
- package/emotion/cjs/components/Mask/utils/selection.js +48 -0
- package/emotion/cjs/components/TextField/TextField.js +4 -2
- package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.js +9 -0
- package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
- package/emotion/cjs/examples/plasma_web/components/Mask/Mask.js +9 -0
- package/emotion/cjs/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
- package/emotion/cjs/index.js +11 -0
- package/emotion/es/components/Mask/Mask.js +212 -0
- package/emotion/es/components/Mask/Mask.template-doc.mdx +126 -0
- package/emotion/es/components/Mask/Mask.types.js +1 -0
- package/emotion/es/components/Mask/index.js +1 -0
- package/emotion/es/components/Mask/utils/constants.js +23 -0
- package/emotion/es/components/Mask/utils/createMask.js +44 -0
- package/emotion/es/components/Mask/utils/mask.js +243 -0
- package/emotion/es/components/Mask/utils/parseMask.js +30 -0
- package/emotion/es/components/Mask/utils/processInput.js +46 -0
- package/emotion/es/components/Mask/utils/processMask.js +93 -0
- package/emotion/es/components/Mask/utils/selection.js +42 -0
- package/emotion/es/components/TextField/TextField.js +4 -2
- package/emotion/es/examples/plasma_b2c/components/Mask/Mask.js +3 -0
- package/emotion/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
- package/emotion/es/examples/plasma_web/components/Mask/Mask.js +3 -0
- package/emotion/es/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
- package/emotion/es/index.js +2 -1
- package/es/components/Mask/Mask.js +205 -0
- package/es/components/Mask/Mask.js.map +1 -0
- package/es/components/Mask/utils/constants.js +26 -0
- package/es/components/Mask/utils/constants.js.map +1 -0
- package/es/components/Mask/utils/createMask.js +48 -0
- package/es/components/Mask/utils/createMask.js.map +1 -0
- package/es/components/Mask/utils/mask.js +240 -0
- package/es/components/Mask/utils/mask.js.map +1 -0
- package/es/components/Mask/utils/parseMask.js +34 -0
- package/es/components/Mask/utils/parseMask.js.map +1 -0
- package/es/components/Mask/utils/processInput.js +50 -0
- package/es/components/Mask/utils/processInput.js.map +1 -0
- package/es/components/Mask/utils/processMask.js +97 -0
- package/es/components/Mask/utils/processMask.js.map +1 -0
- package/es/components/Mask/utils/selection.js +46 -0
- package/es/components/Mask/utils/selection.js.map +1 -0
- package/es/components/TextField/TextField.js +3 -1
- package/es/components/TextField/TextField.js.map +1 -1
- package/es/index.js +1 -0
- package/es/index.js.map +1 -1
- package/package.json +2 -2
- package/styled-components/cjs/components/Mask/Mask.js +220 -0
- package/styled-components/cjs/components/Mask/Mask.template-doc.mdx +126 -0
- package/styled-components/cjs/components/Mask/Mask.types.js +5 -0
- package/styled-components/cjs/components/Mask/index.js +12 -0
- package/styled-components/cjs/components/Mask/utils/constants.js +29 -0
- package/styled-components/cjs/components/Mask/utils/createMask.js +50 -0
- package/styled-components/cjs/components/Mask/utils/mask.js +247 -0
- package/styled-components/cjs/components/Mask/utils/parseMask.js +36 -0
- package/styled-components/cjs/components/Mask/utils/processInput.js +52 -0
- package/styled-components/cjs/components/Mask/utils/processMask.js +99 -0
- package/styled-components/cjs/components/Mask/utils/selection.js +48 -0
- package/styled-components/cjs/components/TextField/TextField.js +3 -1
- package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.js +9 -0
- package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
- package/styled-components/cjs/examples/plasma_web/components/Mask/Mask.js +9 -0
- package/styled-components/cjs/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
- package/styled-components/cjs/index.js +11 -0
- package/styled-components/es/components/Mask/Mask.js +212 -0
- package/styled-components/es/components/Mask/Mask.template-doc.mdx +126 -0
- package/styled-components/es/components/Mask/Mask.types.js +1 -0
- package/styled-components/es/components/Mask/index.js +1 -0
- package/styled-components/es/components/Mask/utils/constants.js +23 -0
- package/styled-components/es/components/Mask/utils/createMask.js +44 -0
- package/styled-components/es/components/Mask/utils/mask.js +243 -0
- package/styled-components/es/components/Mask/utils/parseMask.js +30 -0
- package/styled-components/es/components/Mask/utils/processInput.js +46 -0
- package/styled-components/es/components/Mask/utils/processMask.js +93 -0
- package/styled-components/es/components/Mask/utils/selection.js +42 -0
- package/styled-components/es/components/TextField/TextField.js +3 -1
- package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.js +3 -0
- package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +127 -0
- package/styled-components/es/examples/plasma_web/components/Mask/Mask.js +3 -0
- package/styled-components/es/examples/plasma_web/components/Mask/Mask.stories.tsx +125 -0
- package/styled-components/es/index.js +2 -1
- package/types/components/Mask/Mask.d.ts +5 -0
- package/types/components/Mask/Mask.d.ts.map +1 -0
- package/types/components/Mask/Mask.types.d.ts +84 -0
- package/types/components/Mask/Mask.types.d.ts.map +1 -0
- package/types/components/Mask/index.d.ts +2 -0
- package/types/components/Mask/index.d.ts.map +1 -0
- package/types/components/Mask/utils/constants.d.ts +15 -0
- package/types/components/Mask/utils/constants.d.ts.map +1 -0
- package/types/components/Mask/utils/createMask.d.ts +19 -0
- package/types/components/Mask/utils/createMask.d.ts.map +1 -0
- package/types/components/Mask/utils/mask.d.ts +48 -0
- package/types/components/Mask/utils/mask.d.ts.map +1 -0
- package/types/components/Mask/utils/parseMask.d.ts +3 -0
- package/types/components/Mask/utils/parseMask.d.ts.map +1 -0
- package/types/components/Mask/utils/processInput.d.ts +13 -0
- package/types/components/Mask/utils/processInput.d.ts.map +1 -0
- package/types/components/Mask/utils/processMask.d.ts +7 -0
- package/types/components/Mask/utils/processMask.d.ts.map +1 -0
- package/types/components/Mask/utils/selection.d.ts +10 -0
- package/types/components/Mask/utils/selection.d.ts.map +1 -0
- package/types/components/TextField/TextField.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Mask/Mask.d.ts +191 -0
- package/types/examples/plasma_b2c/components/Mask/Mask.d.ts.map +1 -0
- package/types/examples/plasma_web/components/Mask/Mask.d.ts +191 -0
- package/types/examples/plasma_web/components/Mask/Mask.d.ts.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
@@ -0,0 +1,209 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
4
|
+
|
5
|
+
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
6
|
+
var React = require('react');
|
7
|
+
var plasmaCore = require('@salutejs/plasma-core');
|
8
|
+
var useDidMountEffect = require('../../hooks/useDidMountEffect.js');
|
9
|
+
require('../../utils/react.js');
|
10
|
+
var createMask = require('./utils/createMask.js');
|
11
|
+
var constants = require('./utils/constants.js');
|
12
|
+
|
13
|
+
var _excluded = ["mask", "maskChar", "alwaysShowMask", "maskString", "showPrefix", "value", "defaultValue", "showMask", "onChange", "onBlur", "onFocus", "reformat"];
|
14
|
+
var composeMask = function composeMask(InputComponent) {
|
15
|
+
return /*#__PURE__*/React.forwardRef(function (props, outerRef) {
|
16
|
+
var maskValue = props.mask,
|
17
|
+
maskChar = props.maskChar,
|
18
|
+
alwaysShowMask = props.alwaysShowMask,
|
19
|
+
maskString = props.maskString,
|
20
|
+
showPrefix = props.showPrefix,
|
21
|
+
value = props.value,
|
22
|
+
defaultValue = props.defaultValue,
|
23
|
+
showMaskedValue = props.showMask,
|
24
|
+
onChange = props.onChange,
|
25
|
+
onBlur = props.onBlur,
|
26
|
+
onFocus = props.onFocus,
|
27
|
+
reformat = props.reformat,
|
28
|
+
rest = _rollupPluginBabelHelpers.objectWithoutProperties(props, _excluded);
|
29
|
+
var _useState = React.useState(alwaysShowMask || showMaskedValue),
|
30
|
+
_useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
|
31
|
+
showMask = _useState2[0],
|
32
|
+
setShowMask = _useState2[1];
|
33
|
+
var _useState3 = React.useState(''),
|
34
|
+
_useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
|
35
|
+
innerValue = _useState4[0],
|
36
|
+
setInnerValue = _useState4[1];
|
37
|
+
var mask = React.useMemo(function () {
|
38
|
+
return createMask.createMask({
|
39
|
+
value: String(value) || String(defaultValue) || '',
|
40
|
+
mask: maskValue,
|
41
|
+
maskChar: maskChar || createMask.defaults.maskChar,
|
42
|
+
maskString: maskString,
|
43
|
+
showPrefix: showPrefix || createMask.defaults.showPrefix,
|
44
|
+
reformat: reformat
|
45
|
+
});
|
46
|
+
}, []);
|
47
|
+
var canSetSelection = React.useRef(false);
|
48
|
+
var inputRef = React.useRef(null);
|
49
|
+
var innerRef = plasmaCore.useForkRef(inputRef, outerRef);
|
50
|
+
var getSelection = function getSelection() {
|
51
|
+
var _inputRef$current, _inputRef$current2;
|
52
|
+
mask.setSelection = {
|
53
|
+
start: (inputRef === null || inputRef === void 0 || (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.selectionStart) || 0,
|
54
|
+
end: (inputRef === null || inputRef === void 0 || (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.selectionEnd) || 0
|
55
|
+
};
|
56
|
+
};
|
57
|
+
var setSelection = function setSelection() {
|
58
|
+
var _inputRef$current3;
|
59
|
+
if (!canSetSelection.current) {
|
60
|
+
return;
|
61
|
+
}
|
62
|
+
var selection = mask.getSelection;
|
63
|
+
inputRef === null || inputRef === void 0 || (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.setSelectionRange(selection.start, selection.end);
|
64
|
+
setTimeout(function () {
|
65
|
+
var _inputRef$current4;
|
66
|
+
return inputRef === null || inputRef === void 0 || (_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 ? void 0 : _inputRef$current4.setSelectionRange(selection.start, selection.end);
|
67
|
+
}, 0);
|
68
|
+
};
|
69
|
+
var showValue = function showValue() {
|
70
|
+
if (!(inputRef !== null && inputRef !== void 0 && inputRef.current)) {
|
71
|
+
return;
|
72
|
+
}
|
73
|
+
if (showMask && (canSetSelection.current || alwaysShowMask)) {
|
74
|
+
inputRef.current.value = mask.getState.maskedValue;
|
75
|
+
setInnerValue(mask.getState.maskedValue);
|
76
|
+
return;
|
77
|
+
}
|
78
|
+
setInnerValue(mask.getState.visibleValue);
|
79
|
+
inputRef.current.value = mask.getState.visibleValue;
|
80
|
+
};
|
81
|
+
var keyPressPropName = function keyPressPropName() {
|
82
|
+
if (typeof navigator !== 'undefined' && navigator.userAgent.match(/Android/i)) {
|
83
|
+
return 'onBeforeInput';
|
84
|
+
}
|
85
|
+
return 'onKeyPress';
|
86
|
+
};
|
87
|
+
var dispatchEvent = function dispatchEvent(e) {
|
88
|
+
var _mask$getState = mask.getState,
|
89
|
+
maskedValue = _mask$getState.maskedValue,
|
90
|
+
visibleValue = _mask$getState.visibleValue;
|
91
|
+
if (onChange) {
|
92
|
+
onChange(e, {
|
93
|
+
maskedValue: maskedValue,
|
94
|
+
value: visibleValue
|
95
|
+
});
|
96
|
+
}
|
97
|
+
};
|
98
|
+
var onPaste = function onPaste(e) {
|
99
|
+
e.preventDefault();
|
100
|
+
getSelection();
|
101
|
+
if (!(e !== null && e !== void 0 && e.clipboardData)) {
|
102
|
+
return;
|
103
|
+
}
|
104
|
+
mask.paste(e.clipboardData.getData('Text'));
|
105
|
+
setTimeout(setSelection, 0);
|
106
|
+
dispatchEvent(e);
|
107
|
+
};
|
108
|
+
var handleChange = function handleChange(e) {
|
109
|
+
var currentValue;
|
110
|
+
if (showMask && (canSetSelection.current || alwaysShowMask)) {
|
111
|
+
currentValue = mask.getState.maskedValue;
|
112
|
+
} else {
|
113
|
+
currentValue = mask.getState.visibleValue;
|
114
|
+
}
|
115
|
+
if (e.target.value !== currentValue) {
|
116
|
+
getSelection();
|
117
|
+
mask.updateValue(e.target.value);
|
118
|
+
setTimeout(setSelection, 0);
|
119
|
+
}
|
120
|
+
dispatchEvent(e);
|
121
|
+
};
|
122
|
+
var onKeyPress = function onKeyPress(e) {
|
123
|
+
if (e.metaKey || e.altKey || e.ctrlKey || e.key === 'Enter') {
|
124
|
+
return;
|
125
|
+
}
|
126
|
+
e.preventDefault();
|
127
|
+
getSelection();
|
128
|
+
mask.input(e.key || String.fromCharCode(e.which));
|
129
|
+
setSelection();
|
130
|
+
dispatchEvent(e);
|
131
|
+
};
|
132
|
+
var onKeyDown = function onKeyDown(e) {
|
133
|
+
if (e.code === constants.keyboardCode.Backspace) {
|
134
|
+
e.preventDefault();
|
135
|
+
getSelection();
|
136
|
+
mask.removePreviousOrSelected();
|
137
|
+
setSelection();
|
138
|
+
dispatchEvent(e);
|
139
|
+
}
|
140
|
+
if (e.code === constants.keyboardCode.Delete) {
|
141
|
+
e.preventDefault();
|
142
|
+
getSelection();
|
143
|
+
mask.removeNextOrSelected();
|
144
|
+
setSelection();
|
145
|
+
dispatchEvent(e);
|
146
|
+
}
|
147
|
+
};
|
148
|
+
var handleFocus = function handleFocus(e) {
|
149
|
+
canSetSelection.current = true;
|
150
|
+
if (onFocus) {
|
151
|
+
onFocus(e);
|
152
|
+
}
|
153
|
+
};
|
154
|
+
var handleBlur = function handleBlur(e) {
|
155
|
+
canSetSelection.current = false;
|
156
|
+
if (onBlur) {
|
157
|
+
onBlur(e);
|
158
|
+
}
|
159
|
+
};
|
160
|
+
var keyPressEvent = _rollupPluginBabelHelpers.defineProperty({}, keyPressPropName(), onKeyPress);
|
161
|
+
useDidMountEffect.useDidMountEffect(function () {
|
162
|
+
setShowMask(alwaysShowMask || showMask);
|
163
|
+
}, [alwaysShowMask, showMask]);
|
164
|
+
useDidMountEffect.useDidMountEffect(function () {
|
165
|
+
if (reformat) {
|
166
|
+
mask.updateReformat(reformat);
|
167
|
+
}
|
168
|
+
}, [reformat]);
|
169
|
+
useDidMountEffect.useDidMountEffect(function () {
|
170
|
+
mask.updateMask(String(mask));
|
171
|
+
}, [mask]);
|
172
|
+
useDidMountEffect.useDidMountEffect(function () {
|
173
|
+
mask.updateMaskString(String(maskString));
|
174
|
+
}, [maskString]);
|
175
|
+
useDidMountEffect.useDidMountEffect(function () {
|
176
|
+
mask.updateMaskChar(String(maskChar));
|
177
|
+
}, [maskChar]);
|
178
|
+
React.useEffect(function () {
|
179
|
+
mask.updateValue(String(value));
|
180
|
+
}, [value]);
|
181
|
+
React.useEffect(function () {
|
182
|
+
showValue();
|
183
|
+
}, [showValue, mask]);
|
184
|
+
React.useEffect(function () {
|
185
|
+
var subscriber = function subscriber() {
|
186
|
+
showValue();
|
187
|
+
setSelection();
|
188
|
+
};
|
189
|
+
mask.subscribe(subscriber);
|
190
|
+
return function () {
|
191
|
+
mask.unsubscribe(subscriber);
|
192
|
+
};
|
193
|
+
}, [mask, showValue, setSelection]);
|
194
|
+
return /*#__PURE__*/React.createElement(InputComponent, _rollupPluginBabelHelpers.extends({}, rest, {
|
195
|
+
onChange: handleChange,
|
196
|
+
onKeyDown: onKeyDown,
|
197
|
+
onPaste: onPaste,
|
198
|
+
onFocus: handleFocus,
|
199
|
+
onBlur: handleBlur
|
200
|
+
}, keyPressEvent, {
|
201
|
+
value: innerValue,
|
202
|
+
ref: innerRef,
|
203
|
+
autoComplete: "off"
|
204
|
+
}));
|
205
|
+
});
|
206
|
+
};
|
207
|
+
|
208
|
+
exports.composeMask = composeMask;
|
209
|
+
//# sourceMappingURL=Mask.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Mask.js","sources":["../../../src/components/Mask/Mask.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ChangeEvent, FC, InputHTMLAttributes, FocusEvent } from 'react';\nimport { useForkRef } from '@salutejs/plasma-core';\n\nimport { useDidMountEffect } from '../../hooks';\n\nimport type { MaskProps } from './Mask.types';\nimport { createMask, defaults } from './utils/createMask';\nimport { keyboardCode } from './utils/constants';\nimport type { Mask } from './utils/mask';\n\nexport const composeMask = <T extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'>>(InputComponent: FC<T>) =>\n forwardRef<HTMLInputElement, T & MaskProps>((props, outerRef) => {\n const {\n mask: maskValue,\n maskChar,\n alwaysShowMask,\n maskString,\n showPrefix,\n value,\n defaultValue,\n showMask: showMaskedValue,\n onChange,\n onBlur,\n onFocus,\n reformat,\n ...rest\n } = props;\n\n const [showMask, setShowMask] = useState(alwaysShowMask || showMaskedValue);\n const [innerValue, setInnerValue] = useState('');\n\n const mask = useMemo<Mask>(\n () =>\n createMask({\n value: String(value) || String(defaultValue) || '',\n mask: maskValue,\n maskChar: maskChar || defaults.maskChar,\n maskString,\n showPrefix: showPrefix || defaults.showPrefix,\n reformat,\n }),\n [],\n );\n\n const canSetSelection = useRef(false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const innerRef = useForkRef(inputRef, outerRef);\n\n const getSelection = () => {\n mask.setSelection = {\n start: inputRef?.current?.selectionStart || 0,\n end: inputRef?.current?.selectionEnd || 0,\n };\n };\n\n const setSelection = () => {\n if (!canSetSelection.current) {\n return;\n }\n const selection = mask.getSelection;\n inputRef?.current?.setSelectionRange(selection.start, selection.end);\n\n setTimeout(() => inputRef?.current?.setSelectionRange(selection.start, selection.end), 0);\n };\n\n const showValue = () => {\n if (!inputRef?.current) {\n return;\n }\n\n if (showMask && (canSetSelection.current || alwaysShowMask)) {\n inputRef.current.value = mask.getState.maskedValue;\n setInnerValue(mask.getState.maskedValue);\n return;\n }\n\n setInnerValue(mask.getState.visibleValue);\n inputRef.current.value = mask.getState.visibleValue;\n };\n\n const keyPressPropName = () => {\n if (typeof navigator !== 'undefined' && navigator.userAgent.match(/Android/i)) {\n return 'onBeforeInput';\n }\n return 'onKeyPress';\n };\n\n const dispatchEvent = (e: KeyboardEvent | ChangeEvent | ClipboardEvent) => {\n const { maskedValue, visibleValue } = mask.getState;\n\n if (onChange) {\n onChange(e as ChangeEvent<HTMLInputElement>, { maskedValue, value: visibleValue });\n }\n };\n\n const onPaste = (e: ClipboardEvent) => {\n e.preventDefault();\n getSelection();\n\n if (!e?.clipboardData) {\n return;\n }\n\n mask.paste(e.clipboardData.getData('Text'));\n setTimeout(setSelection, 0);\n\n dispatchEvent(e);\n };\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n let currentValue;\n if (showMask && (canSetSelection.current || alwaysShowMask)) {\n currentValue = mask.getState.maskedValue;\n } else {\n currentValue = mask.getState.visibleValue;\n }\n\n if (e.target.value !== currentValue) {\n getSelection();\n mask.updateValue(e.target.value);\n\n setTimeout(setSelection, 0);\n }\n dispatchEvent(e);\n };\n\n const onKeyPress = (e: KeyboardEvent) => {\n if (e.metaKey || e.altKey || e.ctrlKey || e.key === 'Enter') {\n return;\n }\n\n e.preventDefault();\n getSelection();\n mask.input(e.key || String.fromCharCode(e.which));\n setSelection();\n dispatchEvent(e);\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.code === keyboardCode.Backspace) {\n e.preventDefault();\n getSelection();\n mask.removePreviousOrSelected();\n\n setSelection();\n\n dispatchEvent(e);\n }\n\n if (e.code === keyboardCode.Delete) {\n e.preventDefault();\n getSelection();\n mask.removeNextOrSelected();\n\n setSelection();\n\n dispatchEvent(e);\n }\n };\n\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n canSetSelection.current = true;\n\n if (onFocus) {\n onFocus(e);\n }\n };\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n canSetSelection.current = false;\n\n if (onBlur) {\n onBlur(e);\n }\n };\n\n const keyPressEvent = { [keyPressPropName()]: onKeyPress };\n\n useDidMountEffect(() => {\n setShowMask(alwaysShowMask || showMask);\n }, [alwaysShowMask, showMask]);\n\n useDidMountEffect(() => {\n if (reformat) {\n mask.updateReformat(reformat);\n }\n }, [reformat]);\n\n useDidMountEffect(() => {\n mask.updateMask(String(mask));\n }, [mask]);\n\n useDidMountEffect(() => {\n mask.updateMaskString(String(maskString));\n }, [maskString]);\n\n useDidMountEffect(() => {\n mask.updateMaskChar(String(maskChar));\n }, [maskChar]);\n\n useEffect(() => {\n mask.updateValue(String(value));\n }, [value]);\n\n useEffect(() => {\n showValue();\n }, [showValue, mask]);\n\n useEffect(() => {\n const subscriber = () => {\n showValue();\n setSelection();\n };\n\n mask.subscribe(subscriber);\n\n return () => {\n mask.unsubscribe(subscriber);\n };\n }, [mask, showValue, setSelection]);\n\n return (\n <InputComponent\n {...(rest as T)}\n onChange={handleChange}\n onKeyDown={onKeyDown}\n onPaste={onPaste}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...keyPressEvent}\n value={innerValue}\n ref={innerRef}\n autoComplete=\"off\"\n />\n );\n });\n"],"names":["composeMask","InputComponent","forwardRef","props","outerRef","maskValue","mask","maskChar","alwaysShowMask","maskString","showPrefix","value","defaultValue","showMaskedValue","showMask","onChange","onBlur","onFocus","reformat","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","setShowMask","_useState3","_useState4","innerValue","setInnerValue","useMemo","createMask","String","defaults","canSetSelection","useRef","inputRef","innerRef","useForkRef","getSelection","_inputRef$current","_inputRef$current2","setSelection","start","current","selectionStart","end","selectionEnd","_inputRef$current3","selection","setSelectionRange","setTimeout","_inputRef$current4","showValue","getState","maskedValue","visibleValue","keyPressPropName","navigator","userAgent","match","dispatchEvent","e","_mask$getState","onPaste","preventDefault","clipboardData","paste","getData","handleChange","currentValue","target","updateValue","onKeyPress","metaKey","altKey","ctrlKey","key","input","fromCharCode","which","onKeyDown","code","keyboardCode","Backspace","removePreviousOrSelected","Delete","removeNextOrSelected","handleFocus","handleBlur","keyPressEvent","_defineProperty","useDidMountEffect","updateReformat","updateMask","updateMaskString","updateMaskChar","useEffect","subscriber","subscribe","unsubscribe","React","createElement","_extends","ref","autoComplete"],"mappings":"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"}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
4
|
+
|
5
|
+
var charType = {
|
6
|
+
User: 1,
|
7
|
+
Char: 2,
|
8
|
+
Mask: 3
|
9
|
+
};
|
10
|
+
var keyboardCode = {
|
11
|
+
Backspace: 'Backspace',
|
12
|
+
Delete: 'Delete'
|
13
|
+
};
|
14
|
+
var escapeChar = '\\';
|
15
|
+
var defaultFormatChars = [{
|
16
|
+
str: '0',
|
17
|
+
regexp: /[0-9]/
|
18
|
+
}, {
|
19
|
+
str: '*',
|
20
|
+
regexp: /./
|
21
|
+
}, {
|
22
|
+
str: 'a',
|
23
|
+
regexp: /[a-zA-Z]/
|
24
|
+
}, {
|
25
|
+
str: 'я',
|
26
|
+
regexp: /[а-яА-ЯёЁ]/
|
27
|
+
}];
|
28
|
+
|
29
|
+
exports.charType = charType;
|
30
|
+
exports.defaultFormatChars = defaultFormatChars;
|
31
|
+
exports.escapeChar = escapeChar;
|
32
|
+
exports.keyboardCode = keyboardCode;
|
33
|
+
//# sourceMappingURL=constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/components/Mask/utils/constants.ts"],"sourcesContent":["export const charType = {\n User: 1,\n Char: 2,\n Mask: 3,\n} as const;\n\nexport const keyboardCode = {\n Backspace: 'Backspace',\n Delete: 'Delete',\n};\n\nexport const escapeChar = '\\\\';\n\nexport const defaultFormatChars = [\n {\n str: '0',\n regexp: /[0-9]/,\n },\n {\n str: '*',\n regexp: /./,\n },\n {\n str: 'a',\n regexp: /[a-zA-Z]/,\n },\n {\n str: 'я',\n regexp: /[а-яА-ЯёЁ]/,\n },\n];\n"],"names":["charType","User","Char","Mask","keyboardCode","Backspace","Delete","escapeChar","defaultFormatChars","str","regexp"],"mappings":";;;;AAAO,IAAMA,QAAQ,GAAG;AACpBC,EAAAA,IAAI,EAAE,CAAC;AACPC,EAAAA,IAAI,EAAE,CAAC;AACPC,EAAAA,IAAI,EAAE,CAAA;AACV,EAAU;AAEH,IAAMC,YAAY,GAAG;AACxBC,EAAAA,SAAS,EAAE,WAAW;AACtBC,EAAAA,MAAM,EAAE,QAAA;AACZ,EAAC;AAEM,IAAMC,UAAU,GAAG,KAAI;AAEvB,IAAMC,kBAAkB,GAAG,CAC9B;AACIC,EAAAA,GAAG,EAAE,GAAG;AACRC,EAAAA,MAAM,EAAE,OAAA;AACZ,CAAC,EACD;AACID,EAAAA,GAAG,EAAE,GAAG;AACRC,EAAAA,MAAM,EAAE,GAAA;AACZ,CAAC,EACD;AACID,EAAAA,GAAG,EAAE,GAAG;AACRC,EAAAA,MAAM,EAAE,UAAA;AACZ,CAAC,EACD;AACID,EAAAA,GAAG,EAAE,GAAG;AACRC,EAAAA,MAAM,EAAE,YAAA;AACZ,CAAC;;;;;;;"}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
4
|
+
|
5
|
+
var constants = require('./constants.js');
|
6
|
+
var mask = require('./mask.js');
|
7
|
+
var selection = require('./selection.js');
|
8
|
+
|
9
|
+
var defaults = {
|
10
|
+
maskFormat: constants.defaultFormatChars,
|
11
|
+
maskChar: '',
|
12
|
+
showMask: false,
|
13
|
+
removeSelectedRange: selection.removeSelectedRange,
|
14
|
+
showPrefix: false
|
15
|
+
};
|
16
|
+
var createMask = function createMask(params) {
|
17
|
+
var _params$mask;
|
18
|
+
var maskString = params.maskString,
|
19
|
+
_params$showPrefix = params.showPrefix,
|
20
|
+
showPrefix = _params$showPrefix === void 0 ? defaults.showPrefix : _params$showPrefix,
|
21
|
+
_params$maskChar = params.maskChar,
|
22
|
+
maskChar = _params$maskChar === void 0 ? defaults.maskChar : _params$maskChar,
|
23
|
+
reformat = params.reformat;
|
24
|
+
var resReformat = reformat;
|
25
|
+
if (!reformat && !params.mask) {
|
26
|
+
resReformat = function resReformat(args) {
|
27
|
+
var str = args.value.map(function (item) {
|
28
|
+
return item["char"];
|
29
|
+
}).join('');
|
30
|
+
return {
|
31
|
+
value: args.value,
|
32
|
+
visibleValue: str,
|
33
|
+
maskedValue: str,
|
34
|
+
selection: args.selection
|
35
|
+
};
|
36
|
+
};
|
37
|
+
} else if (reformat && params.mask) {
|
38
|
+
params.mask = undefined;
|
39
|
+
}
|
40
|
+
if (maskString && maskString.length !== (params === null || params === void 0 || (_params$mask = params.mask) === null || _params$mask === void 0 ? void 0 : _params$mask.length)) {
|
41
|
+
throw new Error('maskString должна быть такой же длины, как и mask');
|
42
|
+
}
|
43
|
+
if (maskChar.length > 1) {
|
44
|
+
throw new Error('maskChar должен содержать только 1 символ');
|
45
|
+
}
|
46
|
+
var mask$1 = new mask.Mask(showPrefix, maskChar, maskString, resReformat);
|
47
|
+
mask$1.updateMask(params.mask);
|
48
|
+
return mask$1;
|
49
|
+
};
|
50
|
+
|
51
|
+
exports.createMask = createMask;
|
52
|
+
exports.defaults = defaults;
|
53
|
+
//# sourceMappingURL=createMask.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"createMask.js","sources":["../../../../src/components/Mask/utils/createMask.ts"],"sourcesContent":["import type { CreateInputArgs, InputValueInfo } from '../Mask.types';\n\nimport { defaultFormatChars } from './constants';\nimport { Mask } from './mask';\nimport { removeSelectedRange } from './selection';\n\nexport const defaults = {\n maskFormat: defaultFormatChars,\n maskChar: '',\n showMask: false,\n removeSelectedRange,\n showPrefix: false,\n};\n\nexport const createMask = (params: CreateInputArgs): Mask => {\n const { maskString, showPrefix = defaults.showPrefix, maskChar = defaults.maskChar, reformat } = params;\n let resReformat = reformat;\n\n if (!reformat && !params.mask) {\n resReformat = (args) => {\n const str = (args.value as InputValueInfo[]).map((item) => item.char).join('');\n return {\n value: args.value,\n visibleValue: str,\n maskedValue: str,\n selection: args.selection,\n };\n };\n } else if (reformat && params.mask) {\n params.mask = undefined;\n }\n\n if (maskString && maskString.length !== params?.mask?.length) {\n throw new Error('maskString должна быть такой же длины, как и mask');\n }\n\n if (maskChar.length > 1) {\n throw new Error('maskChar должен содержать только 1 символ');\n }\n\n const mask = new Mask(showPrefix, maskChar, maskString, resReformat);\n\n mask.updateMask(params.mask);\n\n return mask;\n};\n"],"names":["defaults","maskFormat","defaultFormatChars","maskChar","showMask","removeSelectedRange","showPrefix","createMask","params","_params$mask","maskString","_params$showPrefix","_params$maskChar","reformat","resReformat","mask","args","str","value","map","item","join","visibleValue","maskedValue","selection","undefined","length","Error","Mask","updateMask"],"mappings":";;;;;;;;AAMO,IAAMA,QAAQ,GAAG;AACpBC,EAAAA,UAAU,EAAEC,4BAAkB;AAC9BC,EAAAA,QAAQ,EAAE,EAAE;AACZC,EAAAA,QAAQ,EAAE,KAAK;AACfC,EAAAA,mBAAmB,EAAnBA,6BAAmB;AACnBC,EAAAA,UAAU,EAAE,KAAA;AAChB,EAAC;IAEYC,UAAU,GAAG,SAAbA,UAAUA,CAAIC,MAAuB,EAAW;AAAA,EAAA,IAAAC,YAAA,CAAA;AACzD,EAAA,IAAQC,UAAU,GAA+EF,MAAM,CAA/FE,UAAU;IAAAC,kBAAA,GAA+EH,MAAM,CAAnFF,UAAU;AAAVA,IAAAA,UAAU,GAAAK,kBAAA,KAAA,KAAA,CAAA,GAAGX,QAAQ,CAACM,UAAU,GAAAK,kBAAA;IAAAC,gBAAA,GAA6CJ,MAAM,CAAjDL,QAAQ;AAARA,IAAAA,QAAQ,GAAAS,gBAAA,KAAA,KAAA,CAAA,GAAGZ,QAAQ,CAACG,QAAQ,GAAAS,gBAAA;IAAEC,QAAQ,GAAKL,MAAM,CAAnBK,QAAQ,CAAA;EAC5F,IAAIC,WAAW,GAAGD,QAAQ,CAAA;AAE1B,EAAA,IAAI,CAACA,QAAQ,IAAI,CAACL,MAAM,CAACO,IAAI,EAAE;AAC3BD,IAAAA,WAAW,GAAG,SAAAA,WAACE,CAAAA,IAAI,EAAK;MACpB,IAAMC,GAAG,GAAID,IAAI,CAACE,KAAK,CAAsBC,GAAG,CAAC,UAACC,IAAI,EAAA;AAAA,QAAA,OAAKA,IAAI,CAAK,MAAA,CAAA,CAAA;AAAA,OAAA,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC,CAAA;MAC9E,OAAO;QACHH,KAAK,EAAEF,IAAI,CAACE,KAAK;AACjBI,QAAAA,YAAY,EAAEL,GAAG;AACjBM,QAAAA,WAAW,EAAEN,GAAG;QAChBO,SAAS,EAAER,IAAI,CAACQ,SAAAA;OACnB,CAAA;KACJ,CAAA;AACL,GAAC,MAAM,IAAIX,QAAQ,IAAIL,MAAM,CAACO,IAAI,EAAE;IAChCP,MAAM,CAACO,IAAI,GAAGU,SAAS,CAAA;AAC3B,GAAA;EAEA,IAAIf,UAAU,IAAIA,UAAU,CAACgB,MAAM,MAAKlB,MAAM,aAANA,MAAM,KAAA,KAAA,CAAA,IAAA,CAAAC,YAAA,GAAND,MAAM,CAAEO,IAAI,MAAA,IAAA,IAAAN,YAAA,KAAZA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAA,CAAciB,MAAM,CAAE,EAAA;AAC1D,IAAA,MAAM,IAAIC,KAAK,CAAC,mDAAmD,CAAC,CAAA;AACxE,GAAA;AAEA,EAAA,IAAIxB,QAAQ,CAACuB,MAAM,GAAG,CAAC,EAAE;AACrB,IAAA,MAAM,IAAIC,KAAK,CAAC,2CAA2C,CAAC,CAAA;AAChE,GAAA;AAEA,EAAA,IAAMZ,MAAI,GAAG,IAAIa,SAAI,CAACtB,UAAU,EAAEH,QAAQ,EAAEO,UAAU,EAAEI,WAAW,CAAC,CAAA;AAEpEC,EAAAA,MAAI,CAACc,UAAU,CAACrB,MAAM,CAACO,IAAI,CAAC,CAAA;AAE5B,EAAA,OAAOA,MAAI,CAAA;AACf;;;;;"}
|
@@ -0,0 +1,244 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
4
|
+
|
5
|
+
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
|
6
|
+
var constants = require('./constants.js');
|
7
|
+
var parseMask = require('./parseMask.js');
|
8
|
+
var processInput = require('./processInput.js');
|
9
|
+
var selection = require('./selection.js');
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Copyright (c) 2018 Nikita Mostovoy.
|
13
|
+
*
|
14
|
+
* This source code is licensed under the MIT license found in the
|
15
|
+
* LICENSE file in the root directory of this source tree.
|
16
|
+
*/
|
17
|
+
|
18
|
+
var Mask = /*#__PURE__*/function () {
|
19
|
+
function Mask(showPrefix, maskChar, maskString, reformat) {
|
20
|
+
_rollupPluginBabelHelpers.classCallCheck(this, Mask);
|
21
|
+
_rollupPluginBabelHelpers.defineProperty(this, "selection", void 0);
|
22
|
+
_rollupPluginBabelHelpers.defineProperty(this, "value", void 0);
|
23
|
+
_rollupPluginBabelHelpers.defineProperty(this, "maskedValue", void 0);
|
24
|
+
_rollupPluginBabelHelpers.defineProperty(this, "visibleValue", void 0);
|
25
|
+
_rollupPluginBabelHelpers.defineProperty(this, "mask", void 0);
|
26
|
+
_rollupPluginBabelHelpers.defineProperty(this, "maskChar", void 0);
|
27
|
+
_rollupPluginBabelHelpers.defineProperty(this, "maskFormatMap", void 0);
|
28
|
+
_rollupPluginBabelHelpers.defineProperty(this, "showPrefix", void 0);
|
29
|
+
_rollupPluginBabelHelpers.defineProperty(this, "callbacks", void 0);
|
30
|
+
_rollupPluginBabelHelpers.defineProperty(this, "maskString", void 0);
|
31
|
+
_rollupPluginBabelHelpers.defineProperty(this, "reformat", void 0);
|
32
|
+
this.value = '';
|
33
|
+
this.mask = [];
|
34
|
+
this.maskedValue = '';
|
35
|
+
this.visibleValue = '';
|
36
|
+
this.selection = {
|
37
|
+
start: 0,
|
38
|
+
end: 0
|
39
|
+
};
|
40
|
+
this.callbacks = [];
|
41
|
+
this.maskFormatMap = this.parseMaskFormat;
|
42
|
+
this.showPrefix = showPrefix;
|
43
|
+
this.maskChar = maskChar;
|
44
|
+
this.maskString = maskString;
|
45
|
+
this.reformat = reformat;
|
46
|
+
}
|
47
|
+
return _rollupPluginBabelHelpers.createClass(Mask, [{
|
48
|
+
key: "parseMaskFormat",
|
49
|
+
get: function get() {
|
50
|
+
return constants.defaultFormatChars.reduce(function (acc, current) {
|
51
|
+
acc[String(current.str)] = current;
|
52
|
+
return acc;
|
53
|
+
}, {});
|
54
|
+
}
|
55
|
+
}, {
|
56
|
+
key: "getSelection",
|
57
|
+
get: function get() {
|
58
|
+
var _this$selection = this.selection,
|
59
|
+
start = _this$selection.start,
|
60
|
+
end = _this$selection.end;
|
61
|
+
return {
|
62
|
+
start: start,
|
63
|
+
end: end
|
64
|
+
};
|
65
|
+
}
|
66
|
+
}, {
|
67
|
+
key: "getState",
|
68
|
+
get: function get() {
|
69
|
+
return {
|
70
|
+
value: this.value,
|
71
|
+
maskedValue: this.maskedValue,
|
72
|
+
visibleValue: this.visibleValue,
|
73
|
+
selection: this.selection
|
74
|
+
};
|
75
|
+
}
|
76
|
+
}, {
|
77
|
+
key: "setSelection",
|
78
|
+
set: function set(newSelection) {
|
79
|
+
this.selection = newSelection;
|
80
|
+
}
|
81
|
+
}, {
|
82
|
+
key: "setShowStartChars",
|
83
|
+
set: function set(show) {
|
84
|
+
this.showPrefix = show;
|
85
|
+
}
|
86
|
+
}, {
|
87
|
+
key: "updateMask",
|
88
|
+
value: function updateMask(newMask) {
|
89
|
+
this.mask = parseMask.parseMask(newMask, this.maskFormatMap);
|
90
|
+
this.updateValue(this.value);
|
91
|
+
}
|
92
|
+
}, {
|
93
|
+
key: "updateMaskChar",
|
94
|
+
value: function updateMaskChar(newMaskChar) {
|
95
|
+
if (this.maskChar.length > 1) {
|
96
|
+
throw new Error('maskChar должен содержать только 1 символ');
|
97
|
+
}
|
98
|
+
this.maskChar = newMaskChar;
|
99
|
+
this.updateValue(this.value);
|
100
|
+
}
|
101
|
+
}, {
|
102
|
+
key: "updateMaskString",
|
103
|
+
value: function updateMaskString(newMaskString) {
|
104
|
+
if (newMaskString && newMaskString.length !== this.mask.length) {
|
105
|
+
throw new Error('maskString должна иметь такую же длину, как и mask');
|
106
|
+
}
|
107
|
+
this.maskString = newMaskString;
|
108
|
+
this.updateValue(this.value);
|
109
|
+
}
|
110
|
+
}, {
|
111
|
+
key: "updateReformat",
|
112
|
+
value: function updateReformat(newReformat) {
|
113
|
+
this.reformat = newReformat;
|
114
|
+
this.updateValue(this.value);
|
115
|
+
}
|
116
|
+
}, {
|
117
|
+
key: "updateValue",
|
118
|
+
value: function updateValue(data) {
|
119
|
+
if (this.reformat) {
|
120
|
+
var _result = this.reformat({
|
121
|
+
value: data,
|
122
|
+
selection: this.selection
|
123
|
+
});
|
124
|
+
return this.applyChanges(_result);
|
125
|
+
}
|
126
|
+
var dataList = Array.isArray(data) ? data : Array.from(data).reduce(function (acc, _char) {
|
127
|
+
acc.push({
|
128
|
+
"char": _char,
|
129
|
+
type: constants.charType.User
|
130
|
+
});
|
131
|
+
return acc;
|
132
|
+
}, []);
|
133
|
+
var result = processInput.processInput({
|
134
|
+
data: dataList,
|
135
|
+
selection: this.selection,
|
136
|
+
mask: this.mask,
|
137
|
+
maskChar: this.maskChar,
|
138
|
+
maskString: this.maskString,
|
139
|
+
showPrefix: this.showPrefix
|
140
|
+
});
|
141
|
+
this.applyChanges(result);
|
142
|
+
}
|
143
|
+
}, {
|
144
|
+
key: "removePreviousOrSelected",
|
145
|
+
value: function removePreviousOrSelected() {
|
146
|
+
var _this$selection2 = this.selection,
|
147
|
+
start = _this$selection2.start,
|
148
|
+
end = _this$selection2.end;
|
149
|
+
if (start === end) {
|
150
|
+
var newStart = end - 1 < 0 ? 0 : end - 1;
|
151
|
+
this.setSelection = {
|
152
|
+
start: newStart,
|
153
|
+
end: end
|
154
|
+
};
|
155
|
+
}
|
156
|
+
this.input('');
|
157
|
+
}
|
158
|
+
}, {
|
159
|
+
key: "removeNextOrSelected",
|
160
|
+
value: function removeNextOrSelected() {
|
161
|
+
var _this$selection3 = this.selection,
|
162
|
+
start = _this$selection3.start,
|
163
|
+
end = _this$selection3.end;
|
164
|
+
if (start === end) {
|
165
|
+
this.setSelection = {
|
166
|
+
start: start,
|
167
|
+
end: end + 1
|
168
|
+
};
|
169
|
+
}
|
170
|
+
this.input('');
|
171
|
+
}
|
172
|
+
}, {
|
173
|
+
key: "paste",
|
174
|
+
value: function paste(value) {
|
175
|
+
this.input(value);
|
176
|
+
}
|
177
|
+
}, {
|
178
|
+
key: "input",
|
179
|
+
value: function input(_input) {
|
180
|
+
if (this.reformat) {
|
181
|
+
var _result2 = this.reformat({
|
182
|
+
value: this.value,
|
183
|
+
input: _input,
|
184
|
+
selection: this.selection
|
185
|
+
});
|
186
|
+
return this.applyChanges(_result2);
|
187
|
+
}
|
188
|
+
var tmpValue = selection.removeSelectedRange({
|
189
|
+
value: this.value,
|
190
|
+
selection: this.selection,
|
191
|
+
maskChar: this.maskChar,
|
192
|
+
maskString: String(this.maskString)
|
193
|
+
});
|
194
|
+
this.selection.end = this.selection.start;
|
195
|
+
var result = processInput.processInput({
|
196
|
+
data: tmpValue,
|
197
|
+
input: _input,
|
198
|
+
selection: this.selection,
|
199
|
+
mask: this.mask,
|
200
|
+
maskChar: this.maskChar,
|
201
|
+
maskString: this.maskString,
|
202
|
+
showPrefix: this.showPrefix
|
203
|
+
});
|
204
|
+
this.applyChanges(result);
|
205
|
+
}
|
206
|
+
}, {
|
207
|
+
key: "applyChanges",
|
208
|
+
value: function applyChanges(result) {
|
209
|
+
var oldMaskedValue = this.maskedValue;
|
210
|
+
var oldVisibleValue = this.visibleValue;
|
211
|
+
var oldSelection = this.selection;
|
212
|
+
this.value = result.value;
|
213
|
+
this.maskedValue = result.maskedValue;
|
214
|
+
this.visibleValue = result.visibleValue;
|
215
|
+
this.setSelection = result.selection;
|
216
|
+
if (oldMaskedValue !== this.maskedValue || oldVisibleValue !== this.visibleValue || oldSelection.start !== this.selection.start || oldSelection.end !== this.selection.end) {
|
217
|
+
this.notify();
|
218
|
+
}
|
219
|
+
}
|
220
|
+
}, {
|
221
|
+
key: "subscribe",
|
222
|
+
value: function subscribe(callback) {
|
223
|
+
this.callbacks.push(callback);
|
224
|
+
}
|
225
|
+
}, {
|
226
|
+
key: "unsubscribe",
|
227
|
+
value: function unsubscribe(callback) {
|
228
|
+
this.callbacks = this.callbacks.filter(function (item) {
|
229
|
+
return item !== callback;
|
230
|
+
});
|
231
|
+
}
|
232
|
+
}, {
|
233
|
+
key: "notify",
|
234
|
+
value: function notify() {
|
235
|
+
var state = this.getState;
|
236
|
+
this.callbacks.forEach(function (callback) {
|
237
|
+
callback(state);
|
238
|
+
});
|
239
|
+
}
|
240
|
+
}]);
|
241
|
+
}();
|
242
|
+
|
243
|
+
exports.Mask = Mask;
|
244
|
+
//# sourceMappingURL=mask.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"mask.js","sources":["../../../../src/components/Mask/utils/mask.ts"],"sourcesContent":["import type { InputState, InputValueInfo, ReformatFn, MaskInfo, MaskItemsMap, SelectRange } from '../Mask.types';\n\nimport { charType, defaultFormatChars } from './constants';\nimport { parseMask } from './parseMask';\nimport { processInput } from './processInput';\nimport { removeSelectedRange } from './selection';\n\n/**\n * Copyright (c) 2018 Nikita Mostovoy.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport class Mask {\n selection: SelectRange;\n\n value: Array<InputValueInfo> | string;\n\n maskedValue: string;\n\n visibleValue: string;\n\n mask: Array<MaskInfo>;\n\n maskChar: string;\n\n maskFormatMap: MaskItemsMap;\n\n showPrefix: boolean;\n\n callbacks: Array<(state: InputState) => any>;\n\n maskString?: string;\n\n reformat?: ReformatFn;\n\n constructor(showPrefix: boolean, maskChar: string, maskString?: string, reformat?: ReformatFn) {\n this.value = '';\n this.mask = [];\n this.maskedValue = '';\n this.visibleValue = '';\n this.selection = { start: 0, end: 0 };\n this.callbacks = [];\n\n this.maskFormatMap = this.parseMaskFormat;\n this.showPrefix = showPrefix;\n this.maskChar = maskChar;\n this.maskString = maskString;\n this.reformat = reformat;\n }\n\n private get parseMaskFormat() {\n return defaultFormatChars.reduce((acc, current) => {\n acc[String(current.str)] = current;\n return acc;\n }, {} as MaskItemsMap);\n }\n\n get getSelection() {\n const { start, end } = this.selection;\n\n return { start, end };\n }\n\n get getState() {\n return {\n value: this.value,\n maskedValue: this.maskedValue,\n visibleValue: this.visibleValue,\n selection: this.selection,\n };\n }\n\n set setSelection(newSelection: SelectRange) {\n this.selection = newSelection;\n }\n\n set setShowStartChars(show: boolean) {\n this.showPrefix = show;\n }\n\n updateMask(newMask?: string) {\n this.mask = parseMask(newMask, this.maskFormatMap);\n this.updateValue(this.value);\n }\n\n updateMaskChar(newMaskChar: string) {\n if (this.maskChar.length > 1) {\n throw new Error('maskChar должен содержать только 1 символ');\n }\n\n this.maskChar = newMaskChar;\n\n this.updateValue(this.value);\n }\n\n updateMaskString(newMaskString: string) {\n if (newMaskString && newMaskString.length !== this.mask.length) {\n throw new Error('maskString должна иметь такую же длину, как и mask');\n }\n\n this.maskString = newMaskString;\n\n this.updateValue(this.value);\n }\n\n updateReformat(newReformat: ReformatFn) {\n this.reformat = newReformat;\n this.updateValue(this.value);\n }\n\n updateValue(data: string | Array<InputValueInfo>) {\n if (this.reformat) {\n const result = this.reformat({\n value: data,\n selection: this.selection,\n });\n\n return this.applyChanges(result);\n }\n\n const dataList: Array<InputValueInfo> = Array.isArray(data)\n ? data\n : Array.from(data).reduce((acc, char) => {\n acc.push({ char, type: charType.User });\n return acc;\n }, [] as Array<InputValueInfo>);\n\n const result = processInput({\n data: dataList,\n selection: this.selection,\n mask: this.mask,\n maskChar: this.maskChar,\n maskString: this.maskString,\n showPrefix: this.showPrefix,\n });\n\n this.applyChanges(result);\n }\n\n removePreviousOrSelected() {\n const { start, end } = this.selection;\n if (start === end) {\n const newStart = end - 1 < 0 ? 0 : end - 1;\n this.setSelection = { start: newStart, end };\n }\n\n this.input('');\n }\n\n removeNextOrSelected() {\n const { start, end } = this.selection;\n if (start === end) {\n this.setSelection = { start, end: end + 1 };\n }\n\n this.input('');\n }\n\n paste(value: string) {\n this.input(value);\n }\n\n input(input: string) {\n if (this.reformat) {\n const result = this.reformat({ value: this.value, input, selection: this.selection });\n\n return this.applyChanges(result);\n }\n\n const tmpValue = removeSelectedRange({\n value: this.value as InputValueInfo[],\n selection: this.selection,\n maskChar: this.maskChar,\n maskString: String(this.maskString),\n });\n\n this.selection.end = this.selection.start;\n\n const result = processInput({\n data: tmpValue,\n input,\n selection: this.selection,\n mask: this.mask,\n maskChar: this.maskChar,\n maskString: this.maskString,\n showPrefix: this.showPrefix,\n });\n\n this.applyChanges(result);\n }\n\n applyChanges(result: InputState) {\n const oldMaskedValue = this.maskedValue;\n const oldVisibleValue = this.visibleValue;\n const oldSelection = this.selection;\n\n this.value = result.value;\n this.maskedValue = result.maskedValue;\n this.visibleValue = result.visibleValue;\n this.setSelection = result.selection;\n\n if (\n oldMaskedValue !== this.maskedValue ||\n oldVisibleValue !== this.visibleValue ||\n oldSelection.start !== this.selection.start ||\n oldSelection.end !== this.selection.end\n ) {\n this.notify();\n }\n }\n\n subscribe(callback: (state: InputState) => any) {\n this.callbacks.push(callback);\n }\n\n unsubscribe(callback: (state: InputState) => any) {\n this.callbacks = this.callbacks.filter((item) => item !== callback);\n }\n\n notify() {\n const state = this.getState;\n this.callbacks.forEach((callback) => {\n callback(state);\n });\n }\n}\n"],"names":["Mask","showPrefix","maskChar","maskString","reformat","_classCallCheck","_defineProperty","value","mask","maskedValue","visibleValue","selection","start","end","callbacks","maskFormatMap","parseMaskFormat","_createClass","key","get","defaultFormatChars","reduce","acc","current","String","str","_this$selection","set","newSelection","show","updateMask","newMask","parseMask","updateValue","updateMaskChar","newMaskChar","length","Error","updateMaskString","newMaskString","updateReformat","newReformat","data","result","applyChanges","dataList","Array","isArray","from","char","push","type","charType","User","processInput","removePreviousOrSelected","_this$selection2","newStart","setSelection","input","removeNextOrSelected","_this$selection3","paste","tmpValue","removeSelectedRange","oldMaskedValue","oldVisibleValue","oldSelection","notify","subscribe","callback","unsubscribe","filter","item","state","getState","forEach"],"mappings":"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"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
4
|
+
|
5
|
+
var constants = require('./constants.js');
|
6
|
+
|
7
|
+
var parseMask = function parseMask(mask, format) {
|
8
|
+
if (!mask) {
|
9
|
+
return [];
|
10
|
+
}
|
11
|
+
var stack = [];
|
12
|
+
var escape = false;
|
13
|
+
mask.split('').forEach(function (maskChar) {
|
14
|
+
var item = format === null || format === void 0 ? void 0 : format[maskChar];
|
15
|
+
if (escape && item) {
|
16
|
+
item = undefined;
|
17
|
+
escape = false;
|
18
|
+
}
|
19
|
+
if (!item) {
|
20
|
+
if (!escape && maskChar === constants.escapeChar) {
|
21
|
+
escape = true;
|
22
|
+
return;
|
23
|
+
}
|
24
|
+
escape = false;
|
25
|
+
stack.push({
|
26
|
+
"char": maskChar
|
27
|
+
});
|
28
|
+
return;
|
29
|
+
}
|
30
|
+
if (item.regexp) {
|
31
|
+
stack.push(item);
|
32
|
+
}
|
33
|
+
});
|
34
|
+
return stack;
|
35
|
+
};
|
36
|
+
|
37
|
+
exports.parseMask = parseMask;
|
38
|
+
//# sourceMappingURL=parseMask.js.map
|