@salutejs/plasma-new-hope 0.141.0-canary.1418.10719164040.0 → 0.141.0-canary.1420.10717002054.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/package.json +4 -4
  2. package/emotion/cjs/components/Mask/Mask.js +0 -227
  3. package/emotion/cjs/components/Mask/Mask.types.js +0 -5
  4. package/emotion/cjs/components/Mask/index.js +0 -12
  5. package/emotion/cjs/components/Mask/utils/constants.js +0 -31
  6. package/emotion/cjs/components/Mask/utils/createMask.js +0 -50
  7. package/emotion/cjs/components/Mask/utils/maskUtils.js +0 -248
  8. package/emotion/cjs/components/Mask/utils/parseMask.js +0 -36
  9. package/emotion/cjs/components/Mask/utils/processInput.js +0 -52
  10. package/emotion/cjs/components/Mask/utils/processMask.js +0 -99
  11. package/emotion/cjs/components/Mask/utils/selection.js +0 -48
  12. package/emotion/cjs/components/Mask/utils/types/input.types.js +0 -5
  13. package/emotion/cjs/components/Mask/utils/types/mask.types.js +0 -5
  14. package/emotion/cjs/components/Mask/utils/types/selectRange.types.js +0 -5
  15. package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.js +0 -9
  16. package/emotion/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +0 -131
  17. package/emotion/es/components/Mask/Mask.js +0 -219
  18. package/emotion/es/components/Mask/Mask.types.js +0 -1
  19. package/emotion/es/components/Mask/index.js +0 -1
  20. package/emotion/es/components/Mask/utils/constants.js +0 -25
  21. package/emotion/es/components/Mask/utils/createMask.js +0 -44
  22. package/emotion/es/components/Mask/utils/maskUtils.js +0 -242
  23. package/emotion/es/components/Mask/utils/parseMask.js +0 -30
  24. package/emotion/es/components/Mask/utils/processInput.js +0 -46
  25. package/emotion/es/components/Mask/utils/processMask.js +0 -93
  26. package/emotion/es/components/Mask/utils/selection.js +0 -42
  27. package/emotion/es/components/Mask/utils/types/input.types.js +0 -1
  28. package/emotion/es/components/Mask/utils/types/mask.types.js +0 -1
  29. package/emotion/es/components/Mask/utils/types/selectRange.types.js +0 -1
  30. package/emotion/es/examples/plasma_b2c/components/Mask/Mask.js +0 -3
  31. package/emotion/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +0 -131
  32. package/styled-components/cjs/components/Mask/Mask.js +0 -227
  33. package/styled-components/cjs/components/Mask/Mask.types.js +0 -5
  34. package/styled-components/cjs/components/Mask/index.js +0 -12
  35. package/styled-components/cjs/components/Mask/utils/constants.js +0 -31
  36. package/styled-components/cjs/components/Mask/utils/createMask.js +0 -50
  37. package/styled-components/cjs/components/Mask/utils/maskUtils.js +0 -248
  38. package/styled-components/cjs/components/Mask/utils/parseMask.js +0 -36
  39. package/styled-components/cjs/components/Mask/utils/processInput.js +0 -52
  40. package/styled-components/cjs/components/Mask/utils/processMask.js +0 -99
  41. package/styled-components/cjs/components/Mask/utils/selection.js +0 -48
  42. package/styled-components/cjs/components/Mask/utils/types/input.types.js +0 -5
  43. package/styled-components/cjs/components/Mask/utils/types/mask.types.js +0 -5
  44. package/styled-components/cjs/components/Mask/utils/types/selectRange.types.js +0 -5
  45. package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.js +0 -9
  46. package/styled-components/cjs/examples/plasma_b2c/components/Mask/Mask.stories.tsx +0 -131
  47. package/styled-components/es/components/Mask/Mask.js +0 -219
  48. package/styled-components/es/components/Mask/Mask.types.js +0 -1
  49. package/styled-components/es/components/Mask/index.js +0 -1
  50. package/styled-components/es/components/Mask/utils/constants.js +0 -25
  51. package/styled-components/es/components/Mask/utils/createMask.js +0 -44
  52. package/styled-components/es/components/Mask/utils/maskUtils.js +0 -242
  53. package/styled-components/es/components/Mask/utils/parseMask.js +0 -30
  54. package/styled-components/es/components/Mask/utils/processInput.js +0 -46
  55. package/styled-components/es/components/Mask/utils/processMask.js +0 -93
  56. package/styled-components/es/components/Mask/utils/selection.js +0 -42
  57. package/styled-components/es/components/Mask/utils/types/input.types.js +0 -1
  58. package/styled-components/es/components/Mask/utils/types/mask.types.js +0 -1
  59. package/styled-components/es/components/Mask/utils/types/selectRange.types.js +0 -1
  60. package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.js +0 -3
  61. package/styled-components/es/examples/plasma_b2c/components/Mask/Mask.stories.tsx +0 -131
  62. package/types/components/Mask/Mask.d.ts +0 -5
  63. package/types/components/Mask/Mask.d.ts.map +0 -1
  64. package/types/components/Mask/Mask.types.d.ts +0 -48
  65. package/types/components/Mask/Mask.types.d.ts.map +0 -1
  66. package/types/components/Mask/index.d.ts +0 -3
  67. package/types/components/Mask/index.d.ts.map +0 -1
  68. package/types/components/Mask/utils/constants.d.ts +0 -15
  69. package/types/components/Mask/utils/constants.d.ts.map +0 -1
  70. package/types/components/Mask/utils/createMask.d.ts +0 -19
  71. package/types/components/Mask/utils/createMask.d.ts.map +0 -1
  72. package/types/components/Mask/utils/maskUtils.d.ts +0 -44
  73. package/types/components/Mask/utils/maskUtils.d.ts.map +0 -1
  74. package/types/components/Mask/utils/parseMask.d.ts +0 -3
  75. package/types/components/Mask/utils/parseMask.d.ts.map +0 -1
  76. package/types/components/Mask/utils/processInput.d.ts +0 -15
  77. package/types/components/Mask/utils/processInput.d.ts.map +0 -1
  78. package/types/components/Mask/utils/processMask.d.ts +0 -9
  79. package/types/components/Mask/utils/processMask.d.ts.map +0 -1
  80. package/types/components/Mask/utils/selection.d.ts +0 -11
  81. package/types/components/Mask/utils/selection.d.ts.map +0 -1
  82. package/types/components/Mask/utils/types/input.types.d.ts +0 -26
  83. package/types/components/Mask/utils/types/input.types.d.ts.map +0 -1
  84. package/types/components/Mask/utils/types/mask.types.d.ts +0 -9
  85. package/types/components/Mask/utils/types/mask.types.d.ts.map +0 -1
  86. package/types/components/Mask/utils/types/selectRange.types.d.ts +0 -5
  87. package/types/components/Mask/utils/types/selectRange.types.d.ts.map +0 -1
  88. package/types/examples/plasma_b2c/components/Mask/Mask.d.ts +0 -191
  89. package/types/examples/plasma_b2c/components/Mask/Mask.d.ts.map +0 -1
@@ -1,52 +0,0 @@
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.CharType.User) {
28
- if (value[bound].type === _constants.CharType.Mask) {
29
- charsCount = 0;
30
- }
31
- if (value[bound].type === _constants.CharType.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
- };
@@ -1,99 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.processMask = void 0;
7
- var _constants = /*#__PURE__*/require("./constants");
8
- var processMask = exports.processMask = function processMask(data, mask, input, maskChar, maskString, selection) {
9
- var value = [];
10
- var valueIndex = 0;
11
- var pastedIndex = 0;
12
- var maskedValue = '';
13
- var inputValuesApplied = 0;
14
- var processMaskPartAsChar = function processMaskPartAsChar(maskPart, pastedValuesStack, item) {
15
- if (pastedValuesStack && pastedValuesStack[0] === maskPart["char"]) {
16
- pastedIndex++;
17
- } else if (item && (item["char"] === maskPart["char"] || item.type !== _constants.CharType.User) || input) {
18
- valueIndex++;
19
- }
20
- value.push({
21
- "char": String(maskPart["char"]),
22
- type: _constants.CharType.Char
23
- });
24
- if (pastedValuesStack) {
25
- inputValuesApplied++;
26
- }
27
- maskedValue += maskPart["char"];
28
- };
29
- var processMaskPartAsRegExp = function processMaskPartAsRegExp(maskPart, maskIndex, pastedValuesStack, item) {
30
- var _maskPart$regexp2;
31
- var part = null;
32
- if (pastedValuesStack) {
33
- var i = 0;
34
- while (!(maskPart !== null && maskPart !== void 0 && (_maskPart$regexp = maskPart.regexp) !== null && _maskPart$regexp !== void 0 && _maskPart$regexp.test(pastedValuesStack[i])) && pastedValuesStack.length > i) {
35
- var _maskPart$regexp;
36
- i++;
37
- pastedIndex++;
38
- }
39
- if (pastedValuesStack.length > i) {
40
- pastedIndex++;
41
- inputValuesApplied++;
42
- valueIndex++;
43
- part = pastedValuesStack[i];
44
- value.push({
45
- "char": part,
46
- type: _constants.CharType.User
47
- });
48
- maskedValue += part;
49
- }
50
- }
51
- if (part) {
52
- return;
53
- }
54
- if (item && item.type === _constants.CharType.Char && data.length > valueIndex + 1) {
55
- valueIndex++;
56
- processMaskItem(maskPart, maskIndex);
57
- return;
58
- }
59
- if (item && item.type === _constants.CharType.User && maskPart !== null && maskPart !== void 0 && (_maskPart$regexp2 = maskPart.regexp) !== null && _maskPart$regexp2 !== void 0 && _maskPart$regexp2.test(item["char"])) {
60
- value.push({
61
- "char": item["char"],
62
- type: _constants.CharType.User
63
- });
64
- maskedValue += item["char"];
65
- valueIndex++;
66
- return;
67
- }
68
- part = maskString ? maskString[maskIndex] : maskChar;
69
- value.push({
70
- "char": part,
71
- type: _constants.CharType.Mask
72
- });
73
- if (data.length > maskIndex) {
74
- valueIndex++;
75
- }
76
- maskedValue += part;
77
- };
78
- var processMaskItem = function processMaskItem(maskPart, maskIndex) {
79
- var item = data.length > valueIndex ? data[valueIndex] : null;
80
- var pastedValuesStack = '';
81
- if (selection.start <= maskIndex && pastedIndex < input.length) {
82
- pastedValuesStack = input.slice(pastedIndex);
83
- }
84
- if (maskPart["char"]) {
85
- return processMaskPartAsChar(maskPart, pastedValuesStack, item);
86
- }
87
- if (maskPart.regexp) {
88
- return processMaskPartAsRegExp(maskPart, maskIndex, pastedValuesStack, item);
89
- }
90
- };
91
- mask.forEach(function (maskPart, maskIndex) {
92
- processMaskItem(maskPart, maskIndex);
93
- });
94
- return {
95
- value: value,
96
- maskedValue: maskedValue,
97
- inputValuesApplied: inputValuesApplied
98
- };
99
- };
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.removeSelectedRange = void 0;
7
- var _constants = /*#__PURE__*/require("./constants");
8
- var copyMaskChar = function copyMaskChar(count, maskChar) {
9
- var res = [];
10
- for (var i = 0; i < count; i++) {
11
- res.push({
12
- "char": maskChar,
13
- type: _constants.CharType.Mask
14
- });
15
- }
16
- return res;
17
- };
18
- var pasteMaskSymbols = function pasteMaskSymbols(maskString, maskChar, selection) {
19
- if (maskString) {
20
- var res = [];
21
- for (var i = selection.start; i < selection.end; i++) {
22
- res.push({
23
- "char": maskString[i],
24
- type: _constants.CharType.Mask
25
- });
26
- }
27
- return res;
28
- }
29
- return copyMaskChar(selection.end - selection.start, maskChar);
30
- };
31
- var removeSelectedRange = exports.removeSelectedRange = function removeSelectedRange(args) {
32
- var value = args.value,
33
- selection = args.selection,
34
- maskChar = args.maskChar,
35
- maskString = args.maskString;
36
- if (selection.end < selection.start) {
37
- var tmp = selection.end;
38
- selection.end = selection.start;
39
- selection.start = tmp;
40
- }
41
- if (selection.start === selection.end) {
42
- return value;
43
- }
44
- if (value.length > selection.start) {
45
- return value.slice(0, selection.start).concat(pasteMaskSymbols(maskString, maskChar, selection), value.slice(selection.end, value.length));
46
- }
47
- return value;
48
- };
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Mask = void 0;
7
- var _Mask = /*#__PURE__*/require("../../../../components/Mask");
8
- var _TextField = /*#__PURE__*/require("../TextField/TextField");
9
- var Mask = exports.Mask = /*#__PURE__*/(0, _Mask.composeMask)(_TextField.TextField);
@@ -1,131 +0,0 @@
1
- import React from 'react';
2
- import type { ComponentProps } from 'react';
3
- import type { StoryObj, Meta } from '@storybook/react';
4
- import { action } from '@storybook/addon-actions';
5
-
6
- import { WithTheme } from '../../../_helpers';
7
-
8
- import { Mask } from './Mask';
9
-
10
- const onChange = action('onChange');
11
- const onValueChange = action('onValueChange');
12
-
13
- const sizes = ['l', 'm', 's', 'xs'];
14
- const views = ['default', 'positive', 'warning', 'negative'];
15
-
16
- const meta: Meta<typeof Mask> = {
17
- title: 'plasma_b2c/Mask',
18
- component: Mask,
19
- decorators: [WithTheme],
20
- argTypes: {
21
- view: {
22
- options: views,
23
- control: {
24
- type: 'select',
25
- },
26
- },
27
- size: {
28
- options: sizes,
29
- control: {
30
- type: 'inline-radio',
31
- },
32
- },
33
- },
34
- };
35
-
36
- export default meta;
37
-
38
- type StoryPropsDefault = Omit<
39
- ComponentProps<typeof Mask>,
40
- | 'helperBlock'
41
- | 'contentLeft'
42
- | 'htmlSize'
43
- | 'contentRight'
44
- | 'type'
45
- | 'name'
46
- | 'onFocus'
47
- | 'onBlur'
48
- | 'onChange'
49
- | 'value'
50
- | 'checked'
51
- | 'maxLength'
52
- | 'minLength'
53
- | 'required'
54
- | 'enumerationType'
55
- | 'chips'
56
- | 'onChangeChips'
57
- >;
58
-
59
- const StoryDemo = ({ view, ...rest }: StoryPropsDefault) => {
60
- return (
61
- <div style={{ display: 'flex', flexDirection: 'column', gap: '2rem', width: '50%' }}>
62
- <Mask
63
- label="Маска телефона"
64
- mask="+7 (000) 000 - 00 - 00"
65
- maskChar="_"
66
- showPrefix={false}
67
- view={view}
68
- onChange={onChange}
69
- onValueChange={onValueChange}
70
- {...rest}
71
- />
72
-
73
- <Mask
74
- label="Маска телефона: отображается всегда"
75
- mask="+7 (000) 000 - 00 - 00"
76
- maskChar="_"
77
- view={view}
78
- alwaysShowMask
79
- onChange={onChange}
80
- onValueChange={onValueChange}
81
- {...rest}
82
- />
83
-
84
- <Mask
85
- label="Маска даты"
86
- mask="00/00/0000"
87
- maskString="DD/MM/YYYY"
88
- alwaysShowMask
89
- view={view}
90
- onChange={onChange}
91
- onValueChange={onValueChange}
92
- {...rest}
93
- />
94
-
95
- <Mask
96
- label="Маска даты: значения по умолчанию"
97
- // eslint-disable-next-line no-octal-escape
98
- mask="12.\04.0000"
99
- maskChar="_"
100
- alwaysShowMask
101
- view={view}
102
- onChange={onChange}
103
- onValueChange={onValueChange}
104
- {...rest}
105
- />
106
-
107
- <Mask
108
- label="Маска времени"
109
- mask="00:00"
110
- maskChar="_"
111
- alwaysShowMask
112
- view={view}
113
- onChange={onChange}
114
- onValueChange={onValueChange}
115
- {...rest}
116
- />
117
- </div>
118
- );
119
- };
120
-
121
- export const Default: StoryObj<StoryPropsDefault> = {
122
- args: {
123
- size: 'l',
124
- view: 'default',
125
- labelPlacement: 'outer',
126
- placeholder: 'Заполните поле',
127
- disabled: false,
128
- readOnly: false,
129
- },
130
- render: (args) => <StoryDemo {...args} />,
131
- };
@@ -1,219 +0,0 @@
1
- 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); }
2
- var _excluded = ["mask", "maskChar", "alwaysShowMask", "maskString", "showPrefix", "value", "defaultValue", "showMask", "onChange", "onValueChange", "onBlur", "onFocus", "reformat"];
3
- 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); }
4
- 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; }
5
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
- 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); }
7
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
- 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."); }
9
- 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); }
10
- 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; }
11
- 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; } }
12
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
- 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; }
14
- 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; }
15
- import React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';
16
- import { useForkRef } from '@salutejs/plasma-core';
17
- import { canUseDOM } from '../../utils';
18
- import { createMask, defaults } from './utils/createMask';
19
- import { KeyboardCode } from './utils/constants';
20
- export var composeMask = function composeMask(InputComponent) {
21
- return /*#__PURE__*/forwardRef(function (props, outerRef) {
22
- var maskValue = props.mask,
23
- maskChar = props.maskChar,
24
- alwaysShowMask = props.alwaysShowMask,
25
- maskString = props.maskString,
26
- showPrefix = props.showPrefix,
27
- value = props.value,
28
- defaultValue = props.defaultValue,
29
- showMaskedValue = props.showMask,
30
- onChange = props.onChange,
31
- onValueChange = props.onValueChange,
32
- onBlur = props.onBlur,
33
- onFocus = props.onFocus,
34
- reformat = props.reformat,
35
- rest = _objectWithoutProperties(props, _excluded);
36
- var mask = useMemo(function () {
37
- return createMask({
38
- value: String(value) || String(defaultValue) || '',
39
- mask: maskValue,
40
- maskChar: maskChar || defaults.maskChar,
41
- maskString: maskString,
42
- showPrefix: showPrefix || defaults.showPrefix,
43
- reformat: reformat
44
- });
45
- }, []);
46
- var firstRender = useRef(true);
47
- var canSetSelection = useRef(false);
48
- var inputRef = useRef(null);
49
- var innerRef = useForkRef(inputRef, outerRef);
50
- var _useState = useState(alwaysShowMask || showMaskedValue),
51
- _useState2 = _slicedToArray(_useState, 2),
52
- showMask = _useState2[0],
53
- setShowMask = _useState2[1];
54
- var getSelection = useCallback(function () {
55
- var _inputRef$current, _inputRef$current2;
56
- mask.setSelection = {
57
- start: (inputRef === null || inputRef === void 0 || (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.selectionStart) || 0,
58
- end: (inputRef === null || inputRef === void 0 || (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.selectionEnd) || 0
59
- };
60
- }, [mask]);
61
- var setSelection = useCallback(function () {
62
- var _inputRef$current3;
63
- if (!canSetSelection.current) {
64
- return;
65
- }
66
- var selection = mask.getSelection;
67
- inputRef === null || inputRef === void 0 || (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.setSelectionRange(selection.start, selection.end);
68
- var raf = function raf(fn) {
69
- return setTimeout(fn, 0);
70
- };
71
- if (canUseDOM && window.requestAnimationFrame) {
72
- raf = window.requestAnimationFrame;
73
- }
74
- raf(function () {
75
- var _inputRef$current4;
76
- return inputRef === null || inputRef === void 0 || (_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 ? void 0 : _inputRef$current4.setSelectionRange(selection.start, selection.end);
77
- });
78
- }, [mask]);
79
- var showValue = useCallback(function () {
80
- if (!(inputRef !== null && inputRef !== void 0 && inputRef.current)) {
81
- return;
82
- }
83
- if (showMask && (canSetSelection.current || alwaysShowMask)) {
84
- inputRef.current.value = mask.getState.maskedValue;
85
- return;
86
- }
87
- inputRef.current.value = mask.getState.visibleValue;
88
- }, [showMask, alwaysShowMask, mask]);
89
- var keyPressPropName = useCallback(function () {
90
- if (typeof navigator !== 'undefined' && navigator.userAgent.match(/Android/i)) {
91
- return 'onBeforeInput';
92
- }
93
- return 'onKeyPress';
94
- }, []);
95
- var dispatchEvent = function dispatchEvent(e) {
96
- onChange && onChange(e);
97
- var _mask$getState = mask.getState,
98
- maskedValue = _mask$getState.maskedValue,
99
- visibleValue = _mask$getState.visibleValue;
100
- onValueChange && onValueChange({
101
- maskedValue: maskedValue,
102
- value: visibleValue
103
- });
104
- };
105
- var onPaste = function onPaste(e) {
106
- e.preventDefault();
107
- getSelection();
108
- if (!(e !== null && e !== void 0 && e.clipboardData)) {
109
- return;
110
- }
111
- mask.paste(e.clipboardData.getData('Text'));
112
- setTimeout(setSelection, 0);
113
- dispatchEvent(e);
114
- };
115
- var handleChange = function handleChange(e) {
116
- var currentValue;
117
- if (showMask && (canSetSelection.current || alwaysShowMask)) {
118
- currentValue = mask.getState.maskedValue;
119
- } else {
120
- currentValue = mask.getState.visibleValue;
121
- }
122
- if (e.target.value !== currentValue) {
123
- getSelection();
124
- mask.updateValue(e.target.value);
125
- setTimeout(setSelection, 0);
126
- }
127
- dispatchEvent(e);
128
- };
129
- var onKeyPress = function onKeyPress(e) {
130
- if (e.metaKey || e.altKey || e.ctrlKey || e.key === 'Enter') {
131
- return;
132
- }
133
- e.preventDefault();
134
- getSelection();
135
- mask.input(e.key || String.fromCharCode(e.which));
136
- setSelection();
137
- dispatchEvent(e);
138
- };
139
- var onKeyDown = function onKeyDown(e) {
140
- if (e.keyCode === KeyboardCode.Backspace) {
141
- e.preventDefault();
142
- getSelection();
143
- mask.removePreviosOrSelected();
144
- setSelection();
145
- dispatchEvent(e);
146
- }
147
- if (e.keyCode === KeyboardCode.Delete) {
148
- e.preventDefault();
149
- getSelection();
150
- mask.removeNextOrSelected();
151
- setSelection();
152
- dispatchEvent(e);
153
- }
154
- };
155
- var handleFocus = function handleFocus(e) {
156
- canSetSelection.current = true;
157
- onFocus && onFocus(e);
158
- };
159
- var handleBlur = function handleBlur(e) {
160
- canSetSelection.current = false;
161
- onBlur && onBlur(e);
162
- };
163
- var keyPressEvent = _defineProperty({}, keyPressPropName(), onKeyPress);
164
- useEffect(function () {
165
- if (!firstRender.current) {
166
- setShowMask(alwaysShowMask || showMask);
167
- }
168
- }, [alwaysShowMask, showMask]);
169
- useEffect(function () {
170
- if (!firstRender.current && reformat) {
171
- mask.updateReformat(reformat);
172
- }
173
- }, [reformat]);
174
- useEffect(function () {
175
- if (!firstRender.current) {
176
- mask.updateMask(String(mask));
177
- }
178
- }, [mask]);
179
- useEffect(function () {
180
- if (!firstRender.current) {
181
- mask.updateMaskString(String(maskString));
182
- }
183
- }, [maskString]);
184
- useEffect(function () {
185
- if (!firstRender.current) {
186
- mask.updateMaskChar(String(maskChar));
187
- }
188
- }, [maskChar]);
189
- useEffect(function () {
190
- if (!firstRender.current) {
191
- mask.updateValue(String(value));
192
- }
193
- }, [value]);
194
- useEffect(function () {
195
- firstRender.current = false;
196
- showValue();
197
- }, [firstRender.current, mask]);
198
- useEffect(function () {
199
- var subscriber = function subscriber() {
200
- showValue();
201
- setSelection();
202
- };
203
- mask.subscribe(subscriber);
204
- return function () {
205
- mask.unsubscribe(subscriber);
206
- };
207
- }, [mask, showValue, setSelection]);
208
- return /*#__PURE__*/React.createElement(InputComponent, _extends({}, rest, {
209
- onChange: handleChange,
210
- onKeyDown: onKeyDown,
211
- onPaste: onPaste,
212
- onFocus: handleFocus,
213
- onBlur: handleBlur
214
- }, keyPressEvent, {
215
- ref: innerRef,
216
- autoComplete: "off"
217
- }));
218
- });
219
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export { composeMask } from './Mask';
@@ -1,25 +0,0 @@
1
- export var CharType = /*#__PURE__*/function (CharType) {
2
- CharType[CharType["User"] = 1] = "User";
3
- CharType[CharType["Char"] = 2] = "Char";
4
- CharType[CharType["Mask"] = 3] = "Mask";
5
- return CharType;
6
- }({});
7
- export var KeyboardCode = /*#__PURE__*/function (KeyboardCode) {
8
- KeyboardCode[KeyboardCode["Backspace"] = 8] = "Backspace";
9
- KeyboardCode[KeyboardCode["Delete"] = 46] = "Delete";
10
- return KeyboardCode;
11
- }({});
12
- export var escapeChar = '\\';
13
- export var defaultFormatChars = [{
14
- str: '0',
15
- regexp: /[0-9]/
16
- }, {
17
- str: '*',
18
- regexp: /./
19
- }, {
20
- str: 'a',
21
- regexp: /[a-zA-Z]/
22
- }, {
23
- str: 'я',
24
- regexp: /[а-яА-ЯёЁ]/
25
- }];
@@ -1,44 +0,0 @@
1
- import { defaultFormatChars } from './constants';
2
- import { MaskUtils } from './maskUtils';
3
- import { removeSelectedRange } from './selection';
4
- export var defaults = {
5
- maskFormat: defaultFormatChars,
6
- maskChar: '',
7
- showMask: false,
8
- removeSelectedRange: removeSelectedRange,
9
- showPrefix: false
10
- };
11
- export var createMask = function createMask(params) {
12
- var _params$mask;
13
- var maskString = params.maskString,
14
- _params$showPrefix = params.showPrefix,
15
- showPrefix = _params$showPrefix === void 0 ? defaults.showPrefix : _params$showPrefix,
16
- _params$maskChar = params.maskChar,
17
- maskChar = _params$maskChar === void 0 ? defaults.maskChar : _params$maskChar,
18
- reformat = params.reformat;
19
- var resReformat = reformat;
20
- if (!reformat && !params.mask) {
21
- resReformat = function resReformat(args) {
22
- var str = args.value.map(function (item) {
23
- return item["char"];
24
- }).join('');
25
- return {
26
- value: args.value,
27
- visibleValue: str,
28
- maskedValue: str,
29
- selection: args.selection
30
- };
31
- };
32
- } else if (reformat && params.mask) {
33
- params.mask = undefined;
34
- }
35
- if (maskString && maskString.length !== (params === null || params === void 0 || (_params$mask = params.mask) === null || _params$mask === void 0 ? void 0 : _params$mask.length)) {
36
- throw new Error('maskString должна быть такой же длины как и mask');
37
- }
38
- if (maskChar.length > 1) {
39
- throw new Error('maskChar должен содержать только 1 символ');
40
- }
41
- var maskUtils = new MaskUtils(showPrefix, maskChar, maskString, resReformat);
42
- maskUtils.updateMask(params.mask);
43
- return maskUtils;
44
- };