@salutejs/plasma-new-hope 0.139.0-canary.1417.10685487591.0 → 0.139.0-canary.1418.10685382771.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. package/emotion/cjs/components/Mask/Mask.js +233 -0
  2. package/emotion/cjs/components/Mask/Mask.types.js +5 -0
  3. package/emotion/cjs/components/Mask/index.js +12 -0
  4. package/emotion/cjs/components/Mask/utils/constants.js +30 -0
  5. package/emotion/cjs/components/Mask/utils/createMask.js +53 -0
  6. package/emotion/cjs/components/Mask/utils/maskUtils.js +256 -0
  7. package/emotion/cjs/components/Mask/utils/parseMask.js +36 -0
  8. package/emotion/cjs/components/Mask/utils/processInput.js +52 -0
  9. package/emotion/cjs/components/Mask/utils/processMask.js +99 -0
  10. package/emotion/cjs/components/Mask/utils/selection.js +48 -0
  11. package/emotion/cjs/components/Mask/utils/types/input.types.js +5 -0
  12. package/emotion/cjs/components/Mask/utils/types/mask.types.js +5 -0
  13. package/emotion/cjs/components/Mask/utils/types/selectRange.types.js +5 -0
  14. package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.js +9 -0
  15. package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +131 -0
  16. package/emotion/es/components/Mask/Mask.js +225 -0
  17. package/emotion/es/components/Mask/Mask.types.js +1 -0
  18. package/emotion/es/components/Mask/index.js +1 -0
  19. package/emotion/es/components/Mask/utils/constants.js +24 -0
  20. package/emotion/es/components/Mask/utils/createMask.js +47 -0
  21. package/emotion/es/components/Mask/utils/maskUtils.js +250 -0
  22. package/emotion/es/components/Mask/utils/parseMask.js +30 -0
  23. package/emotion/es/components/Mask/utils/processInput.js +46 -0
  24. package/emotion/es/components/Mask/utils/processMask.js +93 -0
  25. package/emotion/es/components/Mask/utils/selection.js +42 -0
  26. package/emotion/es/components/Mask/utils/types/input.types.js +1 -0
  27. package/emotion/es/components/Mask/utils/types/mask.types.js +1 -0
  28. package/emotion/es/components/Mask/utils/types/selectRange.types.js +1 -0
  29. package/emotion/es/examples/plasma_b2c/components/Mask/Mask.js +3 -0
  30. package/emotion/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +131 -0
  31. package/package.json +4 -4
  32. package/styled-components/cjs/components/Mask/Mask.js +233 -0
  33. package/styled-components/cjs/components/Mask/Mask.types.js +5 -0
  34. package/styled-components/cjs/components/Mask/index.js +12 -0
  35. package/styled-components/cjs/components/Mask/utils/constants.js +30 -0
  36. package/styled-components/cjs/components/Mask/utils/createMask.js +53 -0
  37. package/styled-components/cjs/components/Mask/utils/maskUtils.js +256 -0
  38. package/styled-components/cjs/components/Mask/utils/parseMask.js +36 -0
  39. package/styled-components/cjs/components/Mask/utils/processInput.js +52 -0
  40. package/styled-components/cjs/components/Mask/utils/processMask.js +99 -0
  41. package/styled-components/cjs/components/Mask/utils/selection.js +48 -0
  42. package/styled-components/cjs/components/Mask/utils/types/input.types.js +5 -0
  43. package/styled-components/cjs/components/Mask/utils/types/mask.types.js +5 -0
  44. package/styled-components/cjs/components/Mask/utils/types/selectRange.types.js +5 -0
  45. package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.js +9 -0
  46. package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +131 -0
  47. package/styled-components/es/components/Mask/Mask.js +225 -0
  48. package/styled-components/es/components/Mask/Mask.types.js +1 -0
  49. package/styled-components/es/components/Mask/index.js +1 -0
  50. package/styled-components/es/components/Mask/utils/constants.js +24 -0
  51. package/styled-components/es/components/Mask/utils/createMask.js +47 -0
  52. package/styled-components/es/components/Mask/utils/maskUtils.js +250 -0
  53. package/styled-components/es/components/Mask/utils/parseMask.js +30 -0
  54. package/styled-components/es/components/Mask/utils/processInput.js +46 -0
  55. package/styled-components/es/components/Mask/utils/processMask.js +93 -0
  56. package/styled-components/es/components/Mask/utils/selection.js +42 -0
  57. package/styled-components/es/components/Mask/utils/types/input.types.js +1 -0
  58. package/styled-components/es/components/Mask/utils/types/mask.types.js +1 -0
  59. package/styled-components/es/components/Mask/utils/types/selectRange.types.js +1 -0
  60. package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.js +3 -0
  61. package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +131 -0
  62. package/types/components/Mask/Mask.d.ts +5 -0
  63. package/types/components/Mask/Mask.d.ts.map +1 -0
  64. package/types/components/Mask/Mask.types.d.ts +52 -0
  65. package/types/components/Mask/Mask.types.d.ts.map +1 -0
  66. package/types/components/Mask/index.d.ts +3 -0
  67. package/types/components/Mask/index.d.ts.map +1 -0
  68. package/types/components/Mask/utils/constants.d.ts +15 -0
  69. package/types/components/Mask/utils/constants.d.ts.map +1 -0
  70. package/types/components/Mask/utils/createMask.d.ts +12 -0
  71. package/types/components/Mask/utils/createMask.d.ts.map +1 -0
  72. package/types/components/Mask/utils/maskUtils.d.ts +45 -0
  73. package/types/components/Mask/utils/maskUtils.d.ts.map +1 -0
  74. package/types/components/Mask/utils/parseMask.d.ts +3 -0
  75. package/types/components/Mask/utils/parseMask.d.ts.map +1 -0
  76. package/types/components/Mask/utils/processInput.d.ts +15 -0
  77. package/types/components/Mask/utils/processInput.d.ts.map +1 -0
  78. package/types/components/Mask/utils/processMask.d.ts +9 -0
  79. package/types/components/Mask/utils/processMask.d.ts.map +1 -0
  80. package/types/components/Mask/utils/selection.d.ts +11 -0
  81. package/types/components/Mask/utils/selection.d.ts.map +1 -0
  82. package/types/components/Mask/utils/types/input.types.d.ts +52 -0
  83. package/types/components/Mask/utils/types/input.types.d.ts.map +1 -0
  84. package/types/components/Mask/utils/types/mask.types.d.ts +9 -0
  85. package/types/components/Mask/utils/types/mask.types.d.ts.map +1 -0
  86. package/types/components/Mask/utils/types/selectRange.types.d.ts +5 -0
  87. package/types/components/Mask/utils/types/selectRange.types.d.ts.map +1 -0
  88. package/types/examples/plasma_b2c/components/Mask/Mask.d.ts +87 -0
  89. package/types/examples/plasma_b2c/components/Mask/Mask.d.ts.map +1 -0
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.composeMask = void 0;
8
+ var _react = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("react"));
9
+ var _plasmaCore = /*#__PURE__*/require("@salutejs/plasma-core");
10
+ var _createMask = /*#__PURE__*/require("./utils/createMask");
11
+ var _constants = /*#__PURE__*/require("./utils/constants");
12
+ var _excluded = ["mask", "maskChar", "alwaysShowMask", "maskString", "showPrefix", "value", "defaultValue", "showMask", "onChange", "getApplyValueCallback", "onValueChange", "onBlur", "onFocus", "reformat"];
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
15
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
16
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
18
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
20
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
22
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
23
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
24
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
25
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
26
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
27
+ var composeMask = exports.composeMask = function composeMask(InputComponent) {
28
+ return /*#__PURE__*/(0, _react.forwardRef)(function (props, outerRef) {
29
+ var maskValue = props.mask,
30
+ maskChar = props.maskChar,
31
+ alwaysShowMask = props.alwaysShowMask,
32
+ maskString = props.maskString,
33
+ showPrefix = props.showPrefix,
34
+ value = props.value,
35
+ defaultValue = props.defaultValue,
36
+ showMaskedValue = props.showMask,
37
+ onChange = props.onChange,
38
+ getApplyValueCallback = props.getApplyValueCallback,
39
+ onValueChange = props.onValueChange,
40
+ onBlur = props.onBlur,
41
+ onFocus = props.onFocus,
42
+ reformat = props.reformat,
43
+ rest = _objectWithoutProperties(props, _excluded);
44
+ var mask = (0, _react.useMemo)(function () {
45
+ return (0, _createMask.createMask)({
46
+ value: String(value) || String(defaultValue) || '',
47
+ maskChar: maskChar || _createMask.defaults.maskChar,
48
+ mask: maskValue,
49
+ maskString: maskString,
50
+ showPrefix: showPrefix || _createMask.defaults.showPrefix,
51
+ reformat: reformat
52
+ });
53
+ }, []);
54
+ var firstRender = (0, _react.useRef)(true);
55
+ var canSetSelection = (0, _react.useRef)(false);
56
+ var inputRef = (0, _react.useRef)(null);
57
+ var innerRef = (0, _plasmaCore.useForkRef)(inputRef, outerRef);
58
+ var _useState = (0, _react.useState)(alwaysShowMask || showMaskedValue),
59
+ _useState2 = _slicedToArray(_useState, 2),
60
+ showMask = _useState2[0],
61
+ setShowMask = _useState2[1];
62
+ var getSelection = (0, _react.useCallback)(function () {
63
+ var _inputRef$current, _inputRef$current2;
64
+ mask.setSelection = {
65
+ start: (inputRef === null || inputRef === void 0 || (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.selectionStart) || 0,
66
+ end: (inputRef === null || inputRef === void 0 || (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.selectionEnd) || 0
67
+ };
68
+ }, [mask]);
69
+ var setSelection = (0, _react.useCallback)(function () {
70
+ var _inputRef$current3;
71
+ if (!canSetSelection.current) {
72
+ return;
73
+ }
74
+ var selection = mask.getSelection;
75
+ inputRef === null || inputRef === void 0 || (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.setSelectionRange(selection.start, selection.end);
76
+ var raf = function raf(fn) {
77
+ return setTimeout(fn, 0);
78
+ };
79
+ if (typeof window !== 'undefined' && window.requestAnimationFrame) {
80
+ raf = window.requestAnimationFrame;
81
+ }
82
+ raf(function () {
83
+ var _inputRef$current4;
84
+ return inputRef === null || inputRef === void 0 || (_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 ? void 0 : _inputRef$current4.setSelectionRange(selection.start, selection.end);
85
+ });
86
+ }, [mask]);
87
+ var showValue = (0, _react.useCallback)(function () {
88
+ if (!(inputRef !== null && inputRef !== void 0 && inputRef.current)) {
89
+ return;
90
+ }
91
+ if (showMask && (canSetSelection.current || alwaysShowMask)) {
92
+ inputRef.current.value = mask.getState().maskedValue;
93
+ return;
94
+ }
95
+ inputRef.current.value = mask.getState().visibleValue;
96
+ }, [showMask, alwaysShowMask, mask]);
97
+ var keyPressPropName = (0, _react.useCallback)(function () {
98
+ if (typeof navigator !== 'undefined' && navigator.userAgent.match(/Android/i)) {
99
+ return 'onBeforeInput';
100
+ }
101
+ return 'onKeyPress';
102
+ }, []);
103
+ var dispatchEvent = function dispatchEvent(e) {
104
+ onChange && onChange(e);
105
+ var _mask$getState = mask.getState(),
106
+ maskedValue = _mask$getState.maskedValue,
107
+ visibleValue = _mask$getState.visibleValue;
108
+ onValueChange && onValueChange({
109
+ maskedValue: maskedValue,
110
+ value: visibleValue
111
+ });
112
+ };
113
+ var onPaste = function onPaste(e) {
114
+ e.preventDefault();
115
+ getSelection();
116
+ if (!(e !== null && e !== void 0 && e.clipboardData)) {
117
+ return;
118
+ }
119
+ mask.paste(e.clipboardData.getData('Text'));
120
+ setTimeout(setSelection, 0);
121
+ dispatchEvent(e);
122
+ };
123
+ var handleChange = function handleChange(e) {
124
+ var currentValue;
125
+ if (showMask && (canSetSelection.current || alwaysShowMask)) {
126
+ currentValue = mask.getState().maskedValue;
127
+ } else {
128
+ currentValue = mask.getState().visibleValue;
129
+ }
130
+ if (e.target.value !== currentValue) {
131
+ getSelection();
132
+ mask.setValue = e.target.value;
133
+ setTimeout(setSelection, 0);
134
+ }
135
+ dispatchEvent(e);
136
+ };
137
+ var onKeyPress = function onKeyPress(e) {
138
+ if (e.metaKey || e.altKey || e.ctrlKey || e.key === 'Enter') {
139
+ return;
140
+ }
141
+ e.preventDefault();
142
+ getSelection();
143
+ mask.input(e.key || String.fromCharCode(e.which));
144
+ setSelection();
145
+ dispatchEvent(e);
146
+ };
147
+ var onKeyDown = function onKeyDown(e) {
148
+ if (e.keyCode === _constants.KEYBOARD.BACKSPACE) {
149
+ e.preventDefault();
150
+ getSelection();
151
+ mask.removePreviosOrSelected();
152
+ setSelection();
153
+ dispatchEvent(e);
154
+ }
155
+ if (e.keyCode === _constants.KEYBOARD.DELETE) {
156
+ e.preventDefault();
157
+ getSelection();
158
+ mask.removeNextOrSelected();
159
+ setSelection();
160
+ dispatchEvent(e);
161
+ }
162
+ };
163
+ var handleFocus = function handleFocus(e) {
164
+ canSetSelection.current = true;
165
+ onFocus && onFocus(e);
166
+ };
167
+ var handleBlur = function handleBlur(e) {
168
+ canSetSelection.current = false;
169
+ onBlur && onBlur(e);
170
+ };
171
+ var keyPressEvent = _defineProperty({}, keyPressPropName(), onKeyPress);
172
+ (0, _react.useEffect)(function () {
173
+ if (!firstRender.current) {
174
+ setShowMask(alwaysShowMask || showMask);
175
+ }
176
+ }, [alwaysShowMask, showMask]);
177
+ (0, _react.useEffect)(function () {
178
+ if (!firstRender.current && reformat) {
179
+ mask.setReformat(reformat);
180
+ }
181
+ }, [reformat]);
182
+ (0, _react.useEffect)(function () {
183
+ if (!firstRender.current) {
184
+ mask.setMask(String(mask));
185
+ }
186
+ }, [mask]);
187
+ (0, _react.useEffect)(function () {
188
+ if (!firstRender.current) {
189
+ mask.setMaskString(String(maskString));
190
+ }
191
+ }, [maskString]);
192
+ (0, _react.useEffect)(function () {
193
+ if (!firstRender.current) {
194
+ mask.setMaskChar(String(maskChar));
195
+ }
196
+ }, [maskChar]);
197
+ (0, _react.useEffect)(function () {
198
+ if (!firstRender.current) {
199
+ mask.setValue = String(value);
200
+ }
201
+ }, [value]);
202
+ (0, _react.useEffect)(function () {
203
+ firstRender.current = false;
204
+ showValue();
205
+ }, [firstRender.current, mask]);
206
+ (0, _react.useEffect)(function () {
207
+ getApplyValueCallback && getApplyValueCallback(function (str) {
208
+ mask.setValue = str;
209
+ showValue();
210
+ });
211
+ }, [getApplyValueCallback, showValue]);
212
+ (0, _react.useEffect)(function () {
213
+ var subscriber = function subscriber() {
214
+ showValue();
215
+ setSelection();
216
+ };
217
+ mask.subscribe(subscriber);
218
+ return function () {
219
+ mask.unsubscribe(subscriber);
220
+ };
221
+ }, [mask, showValue, setSelection]);
222
+ return /*#__PURE__*/_react["default"].createElement(InputComponent, _extends({}, rest, {
223
+ onChange: handleChange,
224
+ onKeyDown: onKeyDown,
225
+ onPaste: onPaste,
226
+ onFocus: handleFocus,
227
+ onBlur: handleBlur
228
+ }, keyPressEvent, {
229
+ ref: innerRef,
230
+ autoComplete: "off"
231
+ }));
232
+ });
233
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "composeMask", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Mask.composeMask;
10
+ }
11
+ });
12
+ var _Mask = /*#__PURE__*/require("./Mask");
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.escapeChar = exports.defaultFormatChars = exports.KEYBOARD = exports.CharTypes = void 0;
7
+ var CharTypes = exports.CharTypes = /*#__PURE__*/function (CharTypes) {
8
+ CharTypes[CharTypes["USER"] = 1] = "USER";
9
+ CharTypes[CharTypes["CHAR"] = 2] = "CHAR";
10
+ CharTypes[CharTypes["MASK"] = 3] = "MASK";
11
+ return CharTypes;
12
+ }({});
13
+ var escapeChar = exports.escapeChar = '\\';
14
+ var defaultFormatChars = exports.defaultFormatChars = [{
15
+ str: '0',
16
+ regexp: /[0-9]/
17
+ }, {
18
+ str: '*',
19
+ regexp: /./
20
+ }, {
21
+ str: 'a',
22
+ regexp: /[a-zA-Z]/
23
+ }, {
24
+ str: 'я',
25
+ regexp: /[а-яА-ЯёЁ]/
26
+ }];
27
+ var KEYBOARD = exports.KEYBOARD = {
28
+ BACKSPACE: 8,
29
+ DELETE: 46
30
+ };
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaults = exports.createMask = void 0;
7
+ var _constants = /*#__PURE__*/require("./constants");
8
+ var _maskUtils = /*#__PURE__*/require("./maskUtils");
9
+ var _parseMask = /*#__PURE__*/require("./parseMask");
10
+ var _selection = /*#__PURE__*/require("./selection");
11
+ var defaults = exports.defaults = {
12
+ maskFormat: _constants.defaultFormatChars,
13
+ maskChar: '',
14
+ showMask: false,
15
+ removeSelectedRange: _selection.removeSelectedRange,
16
+ showPrefix: false
17
+ };
18
+ var createMask = exports.createMask = function createMask(params) {
19
+ var _params$mask;
20
+ var maskString = params.maskString,
21
+ reformat = params.reformat,
22
+ _params$showPrefix = params.showPrefix,
23
+ showPrefix = _params$showPrefix === void 0 ? defaults.showPrefix : _params$showPrefix,
24
+ _params$maskChar = params.maskChar,
25
+ maskChar = _params$maskChar === void 0 ? defaults.maskChar : _params$maskChar;
26
+ var resReformat = reformat;
27
+ if (!reformat && !params.mask) {
28
+ resReformat = function resReformat(args) {
29
+ var str = args.value.map(function (item) {
30
+ return item["char"];
31
+ }).join('');
32
+ return {
33
+ value: args.value,
34
+ visibleValue: str,
35
+ maskedValue: str,
36
+ selection: args.selection
37
+ };
38
+ };
39
+ } else if (reformat && params.mask) {
40
+ params.mask = undefined;
41
+ }
42
+ if (maskString && maskString.length !== (params === null || params === void 0 || (_params$mask = params.mask) === null || _params$mask === void 0 ? void 0 : _params$mask.length)) {
43
+ throw new Error('maskString must have same length as mask');
44
+ }
45
+ if (maskChar.length > 1) {
46
+ throw new Error('maskChar must have only 1 char');
47
+ }
48
+ var maskUtils = new _maskUtils.MaskUtils(showPrefix, maskChar, maskString, resReformat);
49
+ maskUtils.setMaskFormat = defaults.maskFormat;
50
+ maskUtils.mask = (0, _parseMask.parseMask)(params.mask, maskUtils.maskFormatMap);
51
+ maskUtils.setValue = params.value;
52
+ return maskUtils;
53
+ };
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MaskUtils = void 0;
7
+ var _constants = /*#__PURE__*/require("./constants");
8
+ var _parseMask = /*#__PURE__*/require("./parseMask");
9
+ var _processInput = /*#__PURE__*/require("./processInput");
10
+ var _selection = /*#__PURE__*/require("./selection");
11
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
12
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
14
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
15
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
16
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
17
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
+ var MaskUtils = exports.MaskUtils = /*#__PURE__*/function () {
19
+ function MaskUtils(showPrefix, maskChar, maskString, reformat) {
20
+ _classCallCheck(this, MaskUtils);
21
+ _defineProperty(this, "maskFormatMap", void 0);
22
+ _defineProperty(this, "selection", void 0);
23
+ _defineProperty(this, "value", void 0);
24
+ _defineProperty(this, "maskedValue", void 0);
25
+ _defineProperty(this, "visibleValue", void 0);
26
+ _defineProperty(this, "mask", void 0);
27
+ _defineProperty(this, "maskChar", void 0);
28
+ _defineProperty(this, "maskString", void 0);
29
+ _defineProperty(this, "showPrefix", void 0);
30
+ _defineProperty(this, "callbacks", void 0);
31
+ _defineProperty(this, "reformat", void 0);
32
+ this.maskFormatMap = {};
33
+ this.selection = {
34
+ start: 0,
35
+ end: 0
36
+ };
37
+ this.value = '';
38
+ this.maskedValue = '';
39
+ this.visibleValue = '';
40
+ this.mask = [];
41
+ this.showPrefix = showPrefix;
42
+ this.callbacks = [];
43
+ this.maskChar = maskChar;
44
+ this.maskString = maskString;
45
+ this.reformat = reformat;
46
+ }
47
+ return _createClass(MaskUtils, [{
48
+ key: "setShowStartChars",
49
+ set: function set(show) {
50
+ this.showPrefix = show;
51
+ }
52
+ }, {
53
+ key: "setMaskFormat",
54
+ set: function set(maskFormat) {
55
+ if (!maskFormat) {
56
+ return;
57
+ }
58
+ this.maskFormatMap = maskFormat.reduce(function (acc, current) {
59
+ acc[String(current.str)] = current;
60
+ return acc;
61
+ }, {});
62
+ }
63
+ }, {
64
+ key: "getSelection",
65
+ get: function get() {
66
+ var _this$selection = this.selection,
67
+ start = _this$selection.start,
68
+ end = _this$selection.end;
69
+ return {
70
+ start: start,
71
+ end: end
72
+ };
73
+ }
74
+ }, {
75
+ key: "setSelection",
76
+ set: function set(newSelection) {
77
+ this.selection = newSelection;
78
+ }
79
+ }, {
80
+ key: "setValue",
81
+ set: function set(data) {
82
+ var result;
83
+ if (this.reformat) {
84
+ result = this.reformat({
85
+ value: data,
86
+ selection: this.selection
87
+ });
88
+ } else {
89
+ var dataList;
90
+ if (Array.isArray(data)) {
91
+ dataList = data;
92
+ } else {
93
+ dataList = [];
94
+ for (var i = 0; i < data.length; i++) {
95
+ dataList.push({
96
+ "char": data[i],
97
+ type: _constants.CharTypes.USER
98
+ });
99
+ }
100
+ }
101
+ result = (0, _processInput.processInput)({
102
+ data: dataList,
103
+ selection: this.selection,
104
+ mask: this.mask,
105
+ maskChar: this.maskChar,
106
+ maskString: this.maskString,
107
+ showPrefix: this.showPrefix
108
+ });
109
+ }
110
+ this.applyChanges(result);
111
+ }
112
+ }, {
113
+ key: "getState",
114
+ value: function getState() {
115
+ return {
116
+ value: this.value,
117
+ maskedValue: this.maskedValue,
118
+ visibleValue: this.visibleValue,
119
+ selection: this.selection
120
+ };
121
+ }
122
+ }, {
123
+ key: "setMask",
124
+ value: function setMask(newMask) {
125
+ this.mask = (0, _parseMask.parseMask)(newMask, this.maskFormatMap);
126
+ this.setValue = this.value;
127
+ }
128
+ }, {
129
+ key: "setMaskChar",
130
+ value: function setMaskChar(newMaskChar) {
131
+ if (this.maskChar.length > 1) {
132
+ throw new Error('maskChar must have only 1 char');
133
+ }
134
+ this.maskChar = newMaskChar;
135
+ this.setValue = this.value;
136
+ }
137
+ }, {
138
+ key: "setMaskString",
139
+ value: function setMaskString(newMaskString) {
140
+ if (newMaskString && newMaskString.length !== this.mask.length) {
141
+ throw new Error('maskString must have the same length as mask');
142
+ }
143
+ this.maskString = newMaskString;
144
+ this.setValue = this.value;
145
+ }
146
+ }, {
147
+ key: "setReformat",
148
+ value: function setReformat(newReformat) {
149
+ this.reformat = newReformat;
150
+ this.setValue = this.value;
151
+ }
152
+ }, {
153
+ key: "backspace",
154
+ value: function backspace() {
155
+ this.removePreviosOrSelected();
156
+ }
157
+ }, {
158
+ key: "removePreviosOrSelected",
159
+ value: function removePreviosOrSelected() {
160
+ var _this$selection2 = this.selection,
161
+ start = _this$selection2.start,
162
+ end = _this$selection2.end;
163
+ if (start === end) {
164
+ var newStart = end - 1 < 0 ? 0 : end - 1;
165
+ this.setSelection = {
166
+ start: newStart,
167
+ end: end
168
+ };
169
+ }
170
+ this.input('');
171
+ }
172
+ }, {
173
+ key: "removeNextOrSelected",
174
+ value: function removeNextOrSelected() {
175
+ var _this$selection3 = this.selection,
176
+ start = _this$selection3.start,
177
+ end = _this$selection3.end;
178
+ if (start === end) {
179
+ this.setSelection = {
180
+ start: start,
181
+ end: end + 1
182
+ };
183
+ }
184
+ this.input('');
185
+ }
186
+ }, {
187
+ key: "subscribe",
188
+ value: function subscribe(callback) {
189
+ this.callbacks.push(callback);
190
+ }
191
+ }, {
192
+ key: "unsubscribe",
193
+ value: function unsubscribe(callback) {
194
+ this.callbacks = this.callbacks.filter(function (item) {
195
+ return item !== callback;
196
+ });
197
+ }
198
+ }, {
199
+ key: "paste",
200
+ value: function paste(value) {
201
+ this.input(value);
202
+ }
203
+ }, {
204
+ key: "input",
205
+ value: function input(_input) {
206
+ var result;
207
+ if (this.reformat) {
208
+ result = this.reformat({
209
+ value: this.value,
210
+ input: _input,
211
+ selection: this.selection
212
+ });
213
+ } else {
214
+ var tmpValue = (0, _selection.removeSelectedRange)({
215
+ value: this.value,
216
+ selection: this.selection,
217
+ maskChar: this.maskChar,
218
+ maskString: String(this.maskString)
219
+ });
220
+ this.selection.end = this.selection.start;
221
+ result = (0, _processInput.processInput)({
222
+ data: tmpValue,
223
+ input: _input,
224
+ selection: this.selection,
225
+ mask: this.mask,
226
+ maskChar: this.maskChar,
227
+ maskString: this.maskString,
228
+ showPrefix: this.showPrefix
229
+ });
230
+ }
231
+ this.applyChanges(result);
232
+ }
233
+ }, {
234
+ key: "applyChanges",
235
+ value: function applyChanges(result) {
236
+ var oldMaskedValue = this.maskedValue;
237
+ var oldVisibleValue = this.visibleValue;
238
+ var oldSelection = this.selection;
239
+ this.value = result.value;
240
+ this.maskedValue = result.maskedValue;
241
+ this.visibleValue = result.visibleValue;
242
+ this.setSelection = result.selection;
243
+ if (oldMaskedValue !== this.maskedValue || oldVisibleValue !== this.visibleValue || oldSelection.start !== this.selection.start || oldSelection.end !== this.selection.end) {
244
+ this.notify();
245
+ }
246
+ }
247
+ }, {
248
+ key: "notify",
249
+ value: function notify() {
250
+ var state = this.getState();
251
+ this.callbacks.forEach(function (callback) {
252
+ callback(state);
253
+ });
254
+ }
255
+ }]);
256
+ }();
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseMask = void 0;
7
+ var _constants = /*#__PURE__*/require("./constants");
8
+ var parseMask = exports.parseMask = function parseMask(mask, format) {
9
+ if (!mask) {
10
+ return [];
11
+ }
12
+ var stack = [];
13
+ var escape = false;
14
+ mask.split('').forEach(function (maskChar) {
15
+ var item = format === null || format === void 0 ? void 0 : format[maskChar];
16
+ if (escape && item) {
17
+ item = undefined;
18
+ escape = false;
19
+ }
20
+ if (!item) {
21
+ if (!escape && maskChar === _constants.escapeChar) {
22
+ escape = true;
23
+ return;
24
+ }
25
+ escape = false;
26
+ stack.push({
27
+ "char": maskChar
28
+ });
29
+ return;
30
+ }
31
+ if (item.regexp) {
32
+ stack.push(item);
33
+ }
34
+ });
35
+ return stack;
36
+ };
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.processInput = void 0;
7
+ var _constants = /*#__PURE__*/require("./constants");
8
+ var _processMask2 = /*#__PURE__*/require("./processMask");
9
+ var processInput = exports.processInput = function processInput(args) {
10
+ var data = args.data,
11
+ _args$input = args.input,
12
+ input = _args$input === void 0 ? '' : _args$input,
13
+ selection = args.selection,
14
+ mask = args.mask,
15
+ _args$maskChar = args.maskChar,
16
+ maskChar = _args$maskChar === void 0 ? '' : _args$maskChar,
17
+ _args$maskString = args.maskString,
18
+ maskString = _args$maskString === void 0 ? '' : _args$maskString,
19
+ showPrefix = args.showPrefix;
20
+ var _processMask = (0, _processMask2.processMask)(data, mask, input, maskChar, maskString, selection),
21
+ value = _processMask.value,
22
+ maskedValue = _processMask.maskedValue,
23
+ inputValuesApplied = _processMask.inputValuesApplied;
24
+ var selectionPosition = selection.start + inputValuesApplied;
25
+ var bound = value.length - 1;
26
+ var charsCount = 0;
27
+ while (bound >= 0 && value[bound].type !== _constants.CharTypes.USER) {
28
+ if (value[bound].type === _constants.CharTypes.MASK) {
29
+ charsCount = 0;
30
+ }
31
+ if (value[bound].type === _constants.CharTypes.CHAR) {
32
+ charsCount++;
33
+ }
34
+ bound--;
35
+ }
36
+ if (showPrefix || bound >= 0 || input && input.trim()) {
37
+ bound += charsCount;
38
+ }
39
+ var visibleValue = '';
40
+ for (var i = 0; i <= bound; i++) {
41
+ visibleValue += value[i]["char"];
42
+ }
43
+ return {
44
+ value: value,
45
+ visibleValue: visibleValue,
46
+ maskedValue: maskedValue,
47
+ selection: {
48
+ start: selectionPosition,
49
+ end: selectionPosition
50
+ }
51
+ };
52
+ };