infinity-forge 0.36.2 → 0.36.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/ui/components/form/input-mask/index.js +14 -12
  2. package/dist/ui/components/form/input-mask/index.js.map +1 -1
  3. package/dist/ui/components/form/input-mask/lib/core/errors/SyntheticChangeError.d.ts +14 -0
  4. package/dist/ui/components/form/input-mask/lib/core/errors/SyntheticChangeError.js +34 -0
  5. package/dist/ui/components/form/input-mask/lib/core/errors/SyntheticChangeError.js.map +1 -0
  6. package/dist/ui/components/form/input-mask/lib/core/hooks/useConnectedInputRef.d.ts +7 -0
  7. package/dist/ui/components/form/input-mask/lib/core/hooks/useConnectedInputRef.js +21 -0
  8. package/dist/ui/components/form/input-mask/lib/core/hooks/useConnectedInputRef.js.map +1 -0
  9. package/dist/ui/components/form/input-mask/lib/core/hooks/useInput.d.ts +16 -0
  10. package/dist/ui/components/form/input-mask/lib/core/hooks/useInput.js +255 -0
  11. package/dist/ui/components/form/input-mask/lib/core/hooks/useInput.js.map +1 -0
  12. package/dist/ui/components/form/input-mask/lib/core/index.d.ts +5 -0
  13. package/dist/ui/components/form/input-mask/lib/core/index.js +15 -0
  14. package/dist/ui/components/form/input-mask/lib/core/index.js.map +1 -0
  15. package/dist/ui/components/form/input-mask/lib/core/types.d.ts +48 -0
  16. package/dist/ui/components/form/input-mask/lib/core/types.js +3 -0
  17. package/dist/ui/components/form/input-mask/lib/core/types.js.map +1 -0
  18. package/dist/ui/components/form/input-mask/lib/core/utils/setInputAttributes.d.ts +2 -0
  19. package/dist/ui/components/form/input-mask/lib/core/utils/setInputAttributes.js +15 -0
  20. package/dist/ui/components/form/input-mask/lib/core/utils/setInputAttributes.js.map +1 -0
  21. package/dist/ui/components/form/input-mask/lib/mask/InputMask.d.ts +6 -0
  22. package/dist/ui/components/form/input-mask/lib/mask/InputMask.js +44 -0
  23. package/dist/ui/components/form/input-mask/lib/mask/InputMask.js.map +1 -0
  24. package/dist/ui/components/form/input-mask/lib/mask/index.d.ts +5 -0
  25. package/dist/ui/components/form/input-mask/lib/mask/index.js +26 -0
  26. package/dist/ui/components/form/input-mask/lib/mask/index.js.map +1 -0
  27. package/dist/ui/components/form/input-mask/lib/mask/types.d.ts +61 -0
  28. package/dist/ui/components/form/input-mask/lib/mask/types.js +3 -0
  29. package/dist/ui/components/form/input-mask/lib/mask/types.js.map +1 -0
  30. package/dist/ui/components/form/input-mask/lib/mask/useMask.d.ts +3 -0
  31. package/dist/ui/components/form/input-mask/lib/mask/useMask.js +182 -0
  32. package/dist/ui/components/form/input-mask/lib/mask/useMask.js.map +1 -0
  33. package/dist/ui/components/form/input-mask/lib/mask/utils/filter.d.ts +14 -0
  34. package/dist/ui/components/form/input-mask/lib/mask/utils/filter.js +26 -0
  35. package/dist/ui/components/form/input-mask/lib/mask/utils/filter.js.map +1 -0
  36. package/dist/ui/components/form/input-mask/lib/mask/utils/format.d.ts +14 -0
  37. package/dist/ui/components/form/input-mask/lib/mask/utils/format.js +29 -0
  38. package/dist/ui/components/form/input-mask/lib/mask/utils/format.js.map +1 -0
  39. package/dist/ui/components/form/input-mask/lib/mask/utils/formatToParts.d.ts +17 -0
  40. package/dist/ui/components/form/input-mask/lib/mask/utils/formatToParts.js +30 -0
  41. package/dist/ui/components/form/input-mask/lib/mask/utils/formatToParts.js.map +1 -0
  42. package/dist/ui/components/form/input-mask/lib/mask/utils/formatToReplacementObject.d.ts +2 -0
  43. package/dist/ui/components/form/input-mask/lib/mask/utils/formatToReplacementObject.js +8 -0
  44. package/dist/ui/components/form/input-mask/lib/mask/utils/formatToReplacementObject.js.map +1 -0
  45. package/dist/ui/components/form/input-mask/lib/mask/utils/resolveDetail.d.ts +14 -0
  46. package/dist/ui/components/form/input-mask/lib/mask/utils/resolveDetail.js +25 -0
  47. package/dist/ui/components/form/input-mask/lib/mask/utils/resolveDetail.js.map +1 -0
  48. package/dist/ui/components/form/input-mask/lib/mask/utils/resolveSelection.d.ts +18 -0
  49. package/dist/ui/components/form/input-mask/lib/mask/utils/resolveSelection.js +47 -0
  50. package/dist/ui/components/form/input-mask/lib/mask/utils/resolveSelection.js.map +1 -0
  51. package/dist/ui/components/form/input-mask/lib/mask/utils/unformat.d.ts +16 -0
  52. package/dist/ui/components/form/input-mask/lib/mask/utils/unformat.js +26 -0
  53. package/dist/ui/components/form/input-mask/lib/mask/utils/unformat.js.map +1 -0
  54. package/dist/ui/components/form/input-mask/lib/mask/utils/validate.d.ts +13 -0
  55. package/dist/ui/components/form/input-mask/lib/mask/utils/validate.js +41 -0
  56. package/dist/ui/components/form/input-mask/lib/mask/utils/validate.js.map +1 -0
  57. package/dist/ui/components/form/input-mask/lib/mask/utils.d.ts +63 -0
  58. package/dist/ui/components/form/input-mask/lib/mask/utils.js +114 -0
  59. package/dist/ui/components/form/input-mask/lib/mask/utils.js.map +1 -0
  60. package/dist/ui/components/form/input-mask/lib/number-format/InputNumberFormat.d.ts +6 -0
  61. package/dist/ui/components/form/input-mask/lib/number-format/InputNumberFormat.js +58 -0
  62. package/dist/ui/components/form/input-mask/lib/number-format/InputNumberFormat.js.map +1 -0
  63. package/dist/ui/components/form/input-mask/lib/number-format/index.d.ts +4 -0
  64. package/dist/ui/components/form/input-mask/lib/number-format/index.js +11 -0
  65. package/dist/ui/components/form/input-mask/lib/number-format/index.js.map +1 -0
  66. package/dist/ui/components/form/input-mask/lib/number-format/types.d.ts +26 -0
  67. package/dist/ui/components/form/input-mask/lib/number-format/types.js +3 -0
  68. package/dist/ui/components/form/input-mask/lib/number-format/types.js.map +1 -0
  69. package/dist/ui/components/form/input-mask/lib/number-format/useNumberFormat.d.ts +3 -0
  70. package/dist/ui/components/form/input-mask/lib/number-format/useNumberFormat.js +208 -0
  71. package/dist/ui/components/form/input-mask/lib/number-format/useNumberFormat.js.map +1 -0
  72. package/dist/ui/components/form/input-mask/lib/number-format/utils/localizeValues.d.ts +7 -0
  73. package/dist/ui/components/form/input-mask/lib/number-format/utils/localizeValues.js +32 -0
  74. package/dist/ui/components/form/input-mask/lib/number-format/utils/localizeValues.js.map +1 -0
  75. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveDetail.d.ts +20 -0
  76. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveDetail.js +123 -0
  77. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveDetail.js.map +1 -0
  78. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveMinimumFractionDigits.d.ts +11 -0
  79. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveMinimumFractionDigits.js +28 -0
  80. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveMinimumFractionDigits.js.map +1 -0
  81. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveOptions.d.ts +5 -0
  82. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveOptions.js +53 -0
  83. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveOptions.js.map +1 -0
  84. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveSelection.d.ts +24 -0
  85. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveSelection.js +161 -0
  86. package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveSelection.js.map +1 -0
  87. package/package.json +86 -86
@@ -13,22 +13,24 @@ var __assign = (this && this.__assign) || function () {
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.InputMask = void 0;
15
15
  var jsx_runtime_1 = require("react/jsx-runtime");
16
+ var react_1 = require("react");
16
17
  var formik_1 = require("formik");
17
- // import { useMask } from '@react-input/mask'
18
+ var mask_1 = require("./lib/mask/index.js");
18
19
  var input_control_1 = require("../input-control/index.js");
19
20
  function InputMask(props) {
20
21
  var _a = (0, formik_1.useField)({ name: props.name }), field = _a[0], _ = _a[1], helpers = _a[2];
21
- // const inputRef = useMask({
22
- // mask: props.mask,
23
- // replacement: { _: /\d/ },
24
- // })
25
- // useEffect(() => {
26
- // if (field.value === undefined) {
27
- // helpers.setValue('')
28
- // inputRef.current.value = ''
29
- // }
30
- // }, [field.value])
31
- return ((0, jsx_runtime_1.jsx)(input_control_1.InputControl, __assign({}, props)));
22
+ var inputRef = (0, mask_1.useMask)({
23
+ mask: props.mask,
24
+ replacement: { _: /\d/ },
25
+ });
26
+ (0, react_1.useEffect)(function () {
27
+ if (field.value === undefined) {
28
+ helpers.setValue('');
29
+ inputRef.current.value = '';
30
+ }
31
+ }, [field.value]);
32
+ "___.__.___-__".replaceAll("_", "9");
33
+ return ((0, jsx_runtime_1.jsx)(input_control_1.InputControl, __assign({}, props, { children: (0, jsx_runtime_1.jsx)("input", __assign({ id: props.name }, field, { placeholder: props.placeholder, ref: inputRef })) })));
32
34
  }
33
35
  exports.InputMask = InputMask;
34
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ui/components/form/input-mask/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,iCAAiC;AACjC,8CAA8C;AAE9C,kDAA+C;AAI/C,SAAgB,SAAS,CAAC,KAA0D;IAC5E,IAAA,KAAsB,IAAA,iBAAQ,EAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAnD,KAAK,QAAA,EAAE,CAAC,QAAA,EAAE,OAAO,QAAkC,CAAA;IAE1D,6BAA6B;IAC7B,sBAAsB;IACtB,8BAA8B;IAC9B,KAAK;IAEL,oBAAoB;IACpB,qCAAqC;IACrC,2BAA2B;IAC3B,kCAAkC;IAClC,MAAM;IACN,oBAAoB;IAEpB,OAAO,CACL,uBAAC,4BAAY,eAAK,KAAK,EAER,CAChB,CAAA;AACH,CAAC;AApBD,8BAoBC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ui/components/form/input-mask/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+BAAiC;AAEjC,iCAAiC;AACjC,mCAAoC;AAEpC,kDAA+C;AAI/C,SAAgB,SAAS,CAAC,KAA0D;IAC5E,IAAA,KAAsB,IAAA,iBAAQ,EAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAnD,KAAK,QAAA,EAAE,CAAC,QAAA,EAAE,OAAO,QAAkC,CAAA;IAE1D,IAAM,QAAQ,GAAG,IAAA,cAAO,EAAC;QACvB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;KACzB,CAAC,CAAA;IAEF,IAAA,iBAAS,EAAC;QACR,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YACpB,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAA;QAC7B,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAEjB,eAAe,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAEpC,OAAO,CACL,uBAAC,4BAAY,eAAK,KAAK,cACrB,2CAAO,EAAE,EAAE,KAAK,CAAC,IAAI,IAAM,KAAK,IAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,QAAQ,IAAI,IACtE,CAChB,CAAA;AACH,CAAC;AAtBD,8BAsBC"}
@@ -0,0 +1,14 @@
1
+ import type { InputAttributes } from '../types.js';
2
+ interface SyntheticChangeError {
3
+ cause?: {
4
+ __attributes?: Partial<InputAttributes>;
5
+ };
6
+ }
7
+ /**
8
+ * Кастомная ошибка обрабатывается в хуке `useInput` с возможностью
9
+ * передать аттрибуты для установки в `input` элемент.
10
+ */
11
+ declare class SyntheticChangeError extends Error {
12
+ constructor(message: string, cause?: SyntheticChangeError['cause']);
13
+ }
14
+ export default SyntheticChangeError;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
3
+ var __extends = (this && this.__extends) || (function () {
4
+ var extendStatics = function (d, b) {
5
+ extendStatics = Object.setPrototypeOf ||
6
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
7
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
8
+ return extendStatics(d, b);
9
+ };
10
+ return function (d, b) {
11
+ if (typeof b !== "function" && b !== null)
12
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
13
+ extendStatics(d, b);
14
+ function __() { this.constructor = d; }
15
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16
+ };
17
+ })();
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ /**
20
+ * Кастомная ошибка обрабатывается в хуке `useInput` с возможностью
21
+ * передать аттрибуты для установки в `input` элемент.
22
+ */
23
+ var SyntheticChangeError = /** @class */ (function (_super) {
24
+ __extends(SyntheticChangeError, _super);
25
+ function SyntheticChangeError(message, cause) {
26
+ var _this = _super.call(this, message) || this;
27
+ _this.name = 'SyntheticChangeError';
28
+ _this.cause = cause;
29
+ return _this;
30
+ }
31
+ return SyntheticChangeError;
32
+ }(Error));
33
+ exports.default = SyntheticChangeError;
34
+ //# sourceMappingURL=SyntheticChangeError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyntheticChangeError.js","sourceRoot":"","sources":["../../../../../../../../src/ui/components/form/input-mask/lib/core/errors/SyntheticChangeError.ts"],"names":[],"mappings":";AAAA,qEAAqE;;;;;;;;;;;;;;;;;AAQrE;;;GAGG;AACH;IAAmC,wCAAK;IACtC,8BAAY,OAAe,EAAE,KAAqC;QAChE,YAAA,MAAK,YAAC,OAAO,CAAC,SAAC;QACf,KAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;IACrB,CAAC;IACH,2BAAC;AAAD,CAAC,AAND,CAAmC,KAAK,GAMvC;AAED,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * Объединяет ссылки на dom-элементы (`ref`). Полезно когда необходимо хранить
4
+ * ссылку на один и тот же элемент с помощью хука `useRef` в разных компонентах.
5
+ * @returns
6
+ */
7
+ export default function useConnectedInputRef(ref: React.MutableRefObject<HTMLInputElement | null>, forwardedRef: React.ForwardedRef<HTMLInputElement>): (element: HTMLInputElement | null) => void;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var react_1 = require("react");
4
+ /**
5
+ * Объединяет ссылки на dom-элементы (`ref`). Полезно когда необходимо хранить
6
+ * ссылку на один и тот же элемент с помощью хука `useRef` в разных компонентах.
7
+ * @returns
8
+ */
9
+ function useConnectedInputRef(ref, forwardedRef) {
10
+ return (0, react_1.useCallback)(function (element) {
11
+ ref.current = element;
12
+ if (typeof forwardedRef === 'function') {
13
+ forwardedRef(element);
14
+ }
15
+ else if (typeof forwardedRef === 'object' && forwardedRef !== null) {
16
+ forwardedRef.current = element;
17
+ }
18
+ }, [ref, forwardedRef]);
19
+ }
20
+ exports.default = useConnectedInputRef;
21
+ //# sourceMappingURL=useConnectedInputRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConnectedInputRef.js","sourceRoot":"","sources":["../../../../../../../../src/ui/components/form/input-mask/lib/core/hooks/useConnectedInputRef.ts"],"names":[],"mappings":";;AAAA,+BAAoC;AAEpC;;;;GAIG;AACH,SAAwB,oBAAoB,CAC1C,GAAoD,EACpD,YAAkD;IAElD,OAAO,IAAA,mBAAW,EAChB,UAAC,OAAgC;QAC/B,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;QAEtB,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;YACvC,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YACrE,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;QACjC,CAAC;IACH,CAAC,EACD,CAAC,GAAG,EAAE,YAAY,CAAC,CACpB,CAAC;AACJ,CAAC;AAhBD,uCAgBC"}
@@ -0,0 +1,16 @@
1
+ /// <reference types="react" />
2
+ import type { CustomInputEvent, CustomInputEventHandler, Init, Tracking } from '../types.js';
3
+ interface UseInputParam<D> {
4
+ init: Init;
5
+ tracking: Tracking<D>;
6
+ eventType?: string;
7
+ eventHandler?: CustomInputEventHandler<CustomInputEvent<D>>;
8
+ }
9
+ /**
10
+ * Хук контроля события изменения ввода позволяет выполнять логику и изменять
11
+ * аттрибуты `input` элемента на определённых этапах трекинга события.
12
+ * @param param
13
+ * @returns
14
+ */
15
+ export default function useInput<D = unknown>({ init, tracking, eventType, eventHandler, }: UseInputParam<D>): React.MutableRefObject<HTMLInputElement | null>;
16
+ export {};
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var react_1 = require("react");
7
+ var react_dom_1 = require("react-dom");
8
+ var SyntheticChangeError_1 = __importDefault(require("../errors/SyntheticChangeError.js"));
9
+ var setInputAttributes_1 = __importDefault(require("../utils/setInputAttributes.js"));
10
+ var TYPES = ['text', 'email', 'tel', 'search', 'url'];
11
+ function proxy(inputRef, init, _a) {
12
+ var onFocus = _a.onFocus, onBlur = _a.onBlur, onInput = _a.onInput;
13
+ return new Proxy(inputRef, {
14
+ set: function (target, property, inputElement) {
15
+ var _a;
16
+ if (property !== 'current') {
17
+ return false;
18
+ }
19
+ var isValidType = inputElement !== null && TYPES.includes(inputElement.type);
20
+ if (process.env.NODE_ENV !== 'production' && inputElement !== null && !isValidType) {
21
+ console.warn("Warn: The input element type does not match one of the types: ".concat(TYPES.join(', '), "."));
22
+ }
23
+ if (inputElement !== inputRef.current) {
24
+ if (inputRef.current !== null) {
25
+ inputRef.current.removeEventListener('focus', onFocus);
26
+ inputRef.current.removeEventListener('blur', onBlur);
27
+ inputRef.current.removeEventListener('input', onInput);
28
+ }
29
+ if (inputElement !== null && isValidType) {
30
+ var _b = (_a = inputElement._wrapperState) !== null && _a !== void 0 ? _a : {}, _c = _b.controlled, controlled = _c === void 0 ? false : _c, _d = _b.initialValue, initialValue = _d === void 0 ? '' : _d;
31
+ // При создании `input` элемента возможно программное изменение свойства `value`, что может
32
+ // сказаться на отображении состояния элемента, поэтому важно учесть свойство `value` в приоритете
33
+ // ISSUE: https://github.com/GoncharukBro/react-input/issues/3
34
+ var initResult = init({ controlled: controlled, initialValue: inputElement.value || initialValue });
35
+ // Поскольку в предыдущем шаге возможно изменение инициализированного значения, мы
36
+ // также должны изменить значение элемента, при этом мы не должны устанавливать
37
+ // позицию каретки, так как установка позиции здесь приведёт к автофокусу
38
+ (0, setInputAttributes_1.default)(inputElement, { value: initResult.value });
39
+ // Событие `focus` не сработает при рендере, даже если включено свойство `autoFocus`,
40
+ // поэтому нам необходимо запустить определение позиции курсора вручную при автофокусе
41
+ if (document.activeElement === inputElement) {
42
+ onFocus();
43
+ }
44
+ inputElement.addEventListener('focus', onFocus);
45
+ inputElement.addEventListener('blur', onBlur);
46
+ inputElement.addEventListener('input', onInput);
47
+ }
48
+ }
49
+ target[property] = inputElement;
50
+ return true;
51
+ },
52
+ });
53
+ }
54
+ /**
55
+ * Хук контроля события изменения ввода позволяет выполнять логику и изменять
56
+ * аттрибуты `input` элемента на определённых этапах трекинга события.
57
+ * @param param
58
+ * @returns
59
+ */
60
+ function useInput(_a) {
61
+ var init = _a.init, tracking = _a.tracking, eventType = _a.eventType, eventHandler = _a.eventHandler;
62
+ var selection = (0, react_1.useRef)({
63
+ timeoutId: -1,
64
+ fallbackTimeoutId: -1,
65
+ cachedTimeoutId: -1,
66
+ start: 0,
67
+ end: 0,
68
+ });
69
+ var dispatchedCustomInputEvent = (0, react_1.useRef)(true);
70
+ var inputRef = (0, react_1.useRef)(null);
71
+ var props = (0, react_1.useRef)({
72
+ init: init,
73
+ tracking: tracking,
74
+ eventType: eventType,
75
+ eventHandler: eventHandler,
76
+ });
77
+ props.current.init = init;
78
+ props.current.tracking = tracking;
79
+ props.current.eventType = eventType;
80
+ props.current.eventHandler = eventHandler;
81
+ return (0, react_1.useMemo)(function () {
82
+ return proxy(inputRef, props.current.init, {
83
+ /**
84
+ *
85
+ * Handle focus
86
+ *
87
+ */
88
+ onFocus: function () {
89
+ var setSelection = function () {
90
+ var _a, _b, _c, _d;
91
+ // Позиция курсора изменяется после завершения события `change` и к срабатыванию кастомного
92
+ // события позиция курсора может быть некорректной, что может повлечь за собой ошибки
93
+ if (dispatchedCustomInputEvent.current) {
94
+ selection.current.start = (_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.selectionStart) !== null && _b !== void 0 ? _b : 0;
95
+ selection.current.end = (_d = (_c = inputRef.current) === null || _c === void 0 ? void 0 : _c.selectionEnd) !== null && _d !== void 0 ? _d : 0;
96
+ selection.current.timeoutId = window.setTimeout(setSelection);
97
+ }
98
+ else {
99
+ selection.current.fallbackTimeoutId = window.setTimeout(setSelection);
100
+ }
101
+ };
102
+ selection.current.timeoutId = window.setTimeout(setSelection);
103
+ },
104
+ /**
105
+ *
106
+ * Handle blur
107
+ *
108
+ */
109
+ onBlur: function () {
110
+ window.clearTimeout(selection.current.timeoutId);
111
+ window.clearTimeout(selection.current.fallbackTimeoutId);
112
+ selection.current.timeoutId = -1;
113
+ selection.current.fallbackTimeoutId = -1;
114
+ selection.current.cachedTimeoutId = -1;
115
+ },
116
+ /**
117
+ *
118
+ * Handle input
119
+ *
120
+ */
121
+ onInput: function (event) {
122
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
123
+ var inputElement = inputRef.current;
124
+ if (inputElement === null) {
125
+ return;
126
+ }
127
+ try {
128
+ // Если событие вызывается слишком часто, смена курсора может не поспеть за новым событием,
129
+ // поэтому сравниваем `timeoutId` кэшированный и текущий для избежания некорректного поведения маски
130
+ if (selection.current.cachedTimeoutId === selection.current.timeoutId) {
131
+ throw new SyntheticChangeError_1.default('The input selection has not been updated.');
132
+ }
133
+ selection.current.cachedTimeoutId = selection.current.timeoutId;
134
+ var value = inputElement.value, selectionStart = inputElement.selectionStart, selectionEnd = inputElement.selectionEnd;
135
+ if (selectionStart === null || selectionEnd === null) {
136
+ throw new SyntheticChangeError_1.default('The selection attributes have not been initialized.');
137
+ }
138
+ var previousValue = (_c = (_b = (_a = inputElement._valueTracker) === null || _a === void 0 ? void 0 : _a.getValue) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : '';
139
+ var inputType = void 0;
140
+ // Определяем тип ввода (ручное определение типа ввода способствует кроссбраузерности)
141
+ if (selectionStart > selection.current.start) {
142
+ inputType = 'insert';
143
+ }
144
+ else if (selectionStart <= selection.current.start && selectionStart < selection.current.end) {
145
+ inputType = 'deleteBackward';
146
+ }
147
+ else if (selectionStart === selection.current.end && value.length < previousValue.length) {
148
+ inputType = 'deleteForward';
149
+ }
150
+ if (inputType === undefined ||
151
+ ((inputType === 'deleteBackward' || inputType === 'deleteForward') && value.length > previousValue.length)) {
152
+ throw new SyntheticChangeError_1.default('Input type detection error.');
153
+ }
154
+ var addedValue = '';
155
+ var deletedValue = '';
156
+ var changeStart = selection.current.start;
157
+ var changeEnd = selection.current.end;
158
+ if (inputType === 'insert') {
159
+ addedValue = value.slice(selection.current.start, selectionStart);
160
+ }
161
+ else {
162
+ // Для `delete` нам необходимо определить диапазон удаленных символов, так как
163
+ // при удалении без выделения позиция каретки "до" и "после" будут совпадать
164
+ var countDeleted = previousValue.length - value.length;
165
+ changeStart = selectionStart;
166
+ changeEnd = selectionStart + countDeleted;
167
+ deletedValue = previousValue.slice(changeStart, changeEnd);
168
+ }
169
+ var trackingResult_1 = props.current.tracking({
170
+ inputType: inputType,
171
+ previousValue: previousValue,
172
+ value: value,
173
+ addedValue: addedValue,
174
+ deletedValue: deletedValue,
175
+ changeStart: changeStart,
176
+ changeEnd: changeEnd,
177
+ selectionStart: selectionStart,
178
+ selectionEnd: selectionEnd,
179
+ });
180
+ (0, setInputAttributes_1.default)(inputElement, {
181
+ value: trackingResult_1.value,
182
+ selectionStart: trackingResult_1.selectionStart,
183
+ selectionEnd: trackingResult_1.selectionEnd,
184
+ });
185
+ var customEventType_1 = props.current.eventType;
186
+ var customEventHandler_1 = props.current.eventHandler;
187
+ if (typeof customEventType_1 === 'string' && customEventHandler_1) {
188
+ var value_1 = inputElement.value, selectionStart_1 = inputElement.selectionStart, selectionEnd_1 = inputElement.selectionEnd;
189
+ dispatchedCustomInputEvent.current = false;
190
+ // Генерируем и отправляем пользовательское событие. Нулевой `requestAnimationFrame` необходим для
191
+ // запуска события в асинхронном режиме, в противном случае возможна ситуация, когда компонент
192
+ // будет повторно отрисован с предыдущим значением, из-за обновления состояние после события `change`.
193
+ // Важно использовать именно `requestAnimationFrame`, а не `setTimeout` чтобы не было заметно обновление
194
+ // позиции каретки при вызове `setInputAttributes`
195
+ requestAnimationFrame(function () {
196
+ // После изменения состояния при событии `change` мы можем столкнуться с ситуацией,
197
+ // когда значение `input` элемента не будет равно маскированному значению, что отразится
198
+ // на данных передаваемых `event.target`. Поэтому устанавливаем предыдущее значение
199
+ (0, setInputAttributes_1.default)(inputElement, {
200
+ value: value_1,
201
+ selectionStart: selectionStart_1 !== null && selectionStart_1 !== void 0 ? selectionStart_1 : value_1.length,
202
+ selectionEnd: selectionEnd_1 !== null && selectionEnd_1 !== void 0 ? selectionEnd_1 : value_1.length,
203
+ });
204
+ var customInputEvent = new CustomEvent(customEventType_1, {
205
+ bubbles: true,
206
+ cancelable: false,
207
+ composed: true,
208
+ detail: trackingResult_1.__detail,
209
+ });
210
+ inputElement.dispatchEvent(customInputEvent);
211
+ if (react_dom_1.unstable_batchedUpdates) {
212
+ (0, react_dom_1.unstable_batchedUpdates)(customEventHandler_1, customInputEvent);
213
+ }
214
+ else {
215
+ customEventHandler_1(customInputEvent);
216
+ }
217
+ dispatchedCustomInputEvent.current = true;
218
+ });
219
+ }
220
+ // После изменения значения в кастомном событии (`dispatchCustomInputEvent`) событие `change`
221
+ // срабатывать не будет, так как предыдущее и текущее состояние внутри `input` совпадают. Чтобы
222
+ // обойти эту проблему с версии React 16, устанавливаем предыдущее состояние на отличное от текущего.
223
+ (_e = (_d = inputElement._valueTracker) === null || _d === void 0 ? void 0 : _d.setValue) === null || _e === void 0 ? void 0 : _e.call(_d, previousValue);
224
+ // Чтобы гарантировать правильное позиционирование каретки, обновляем
225
+ // значения `selection` перед последующим вызовом функции обработчика `input`
226
+ selection.current.start = trackingResult_1.selectionStart;
227
+ selection.current.end = trackingResult_1.selectionEnd;
228
+ }
229
+ catch (error) {
230
+ var _s = error, name_1 = _s.name, cause = _s.cause;
231
+ (0, setInputAttributes_1.default)(inputElement, {
232
+ value: (_k = (_g = (_f = cause === null || cause === void 0 ? void 0 : cause.__attributes) === null || _f === void 0 ? void 0 : _f.value) !== null && _g !== void 0 ? _g : (_j = (_h = inputElement._valueTracker) === null || _h === void 0 ? void 0 : _h.getValue) === null || _j === void 0 ? void 0 : _j.call(_h)) !== null && _k !== void 0 ? _k : '',
233
+ selectionStart: (_m = (_l = cause === null || cause === void 0 ? void 0 : cause.__attributes) === null || _l === void 0 ? void 0 : _l.selectionStart) !== null && _m !== void 0 ? _m : selection.current.start,
234
+ selectionEnd: (_p = (_o = cause === null || cause === void 0 ? void 0 : cause.__attributes) === null || _o === void 0 ? void 0 : _o.selectionEnd) !== null && _p !== void 0 ? _p : selection.current.end,
235
+ });
236
+ // Чтобы гарантировать правильное позиционирование каретки, обновляем
237
+ // значения `selection` перед последующим вызовом функции обработчика `input`
238
+ if (((_q = cause === null || cause === void 0 ? void 0 : cause.__attributes) === null || _q === void 0 ? void 0 : _q.selectionStart) !== undefined) {
239
+ selection.current.start = cause.__attributes.selectionStart;
240
+ }
241
+ if (((_r = cause === null || cause === void 0 ? void 0 : cause.__attributes) === null || _r === void 0 ? void 0 : _r.selectionEnd) !== undefined) {
242
+ selection.current.end = cause.__attributes.selectionEnd;
243
+ }
244
+ event.preventDefault();
245
+ event.stopPropagation();
246
+ if (name_1 !== 'SyntheticChangeError') {
247
+ throw error;
248
+ }
249
+ }
250
+ },
251
+ });
252
+ }, []);
253
+ }
254
+ exports.default = useInput;
255
+ //# sourceMappingURL=useInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInput.js","sourceRoot":"","sources":["../../../../../../../../src/ui/components/form/input-mask/lib/core/hooks/useInput.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { default as SyntheticChangeError } from './errors/SyntheticChangeError.js';
2
+ export { default as useConnectedInputRef } from './hooks/useConnectedInputRef.js';
3
+ export { default as useInput } from './hooks/useInput.js';
4
+ export { default as setInputAttributes } from './utils/setInputAttributes.js';
5
+ export type * from './types.js';
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.setInputAttributes = exports.useInput = exports.useConnectedInputRef = exports.SyntheticChangeError = void 0;
7
+ var SyntheticChangeError_1 = require("./errors/SyntheticChangeError.js");
8
+ Object.defineProperty(exports, "SyntheticChangeError", { enumerable: true, get: function () { return __importDefault(SyntheticChangeError_1).default; } });
9
+ var useConnectedInputRef_1 = require("./hooks/useConnectedInputRef.js");
10
+ Object.defineProperty(exports, "useConnectedInputRef", { enumerable: true, get: function () { return __importDefault(useConnectedInputRef_1).default; } });
11
+ var useInput_1 = require("./hooks/useInput.js");
12
+ Object.defineProperty(exports, "useInput", { enumerable: true, get: function () { return __importDefault(useInput_1).default; } });
13
+ var setInputAttributes_1 = require("./utils/setInputAttributes.js");
14
+ Object.defineProperty(exports, "setInputAttributes", { enumerable: true, get: function () { return __importDefault(setInputAttributes_1).default; } });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/ui/components/form/input-mask/lib/core/index.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAgF;AAAvE,6IAAA,OAAO,OAAwB;AACxC,qEAA+E;AAAtE,6IAAA,OAAO,OAAwB;AACxC,6CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAC5B,iEAA2E;AAAlE,yIAAA,OAAO,OAAsB"}
@@ -0,0 +1,48 @@
1
+ /// <reference types="react" />
2
+ export interface CustomInputEvent<D = unknown> extends CustomEvent<D> {
3
+ target: EventTarget & HTMLInputElement;
4
+ }
5
+ export type CustomInputEventHandler<E extends CustomInputEvent> = {
6
+ bivarianceHack(event: E): void;
7
+ }['bivarianceHack'];
8
+ export type InputType = 'insert' | 'deleteBackward' | 'deleteForward';
9
+ export interface InputAttributes {
10
+ value: string;
11
+ selectionStart: number;
12
+ selectionEnd: number;
13
+ }
14
+ interface InitParam {
15
+ controlled: boolean;
16
+ initialValue: string;
17
+ }
18
+ export type Init = (param: InitParam) => Pick<InputAttributes, 'value'>;
19
+ interface TrackingParam {
20
+ inputType: InputType;
21
+ value: string;
22
+ addedValue: string;
23
+ deletedValue: string;
24
+ previousValue: string;
25
+ changeStart: number;
26
+ changeEnd: number;
27
+ selectionStart: number;
28
+ selectionEnd: number;
29
+ }
30
+ export type Tracking<D = unknown> = (param: TrackingParam) => InputAttributes & {
31
+ __detail?: D;
32
+ };
33
+ export interface ExtendedHTMLInputElement extends HTMLInputElement {
34
+ _wrapperState?: {
35
+ controlled?: boolean;
36
+ initialValue?: string;
37
+ };
38
+ _valueTracker?: {
39
+ getValue?: () => string;
40
+ setValue?: (value: string) => void;
41
+ };
42
+ }
43
+ export type InputComponentProps<C extends React.ComponentType | undefined = undefined> = {
44
+ /** **Not used in the hook**. Serves to enable the use of custom components, for example, if you want to use your own styled component with the ability to format the value. */
45
+ component?: C;
46
+ } & (C extends React.ComponentType<infer P> ? P : React.InputHTMLAttributes<HTMLInputElement>);
47
+ export type InputComponent<P extends object> = <C extends React.ComponentType<any> | undefined = undefined>(props: P & InputComponentProps<C> & React.RefAttributes<HTMLInputElement>) => JSX.Element;
48
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../src/ui/components/form/input-mask/lib/core/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import type { InputAttributes } from '../types.js';
2
+ export default function setInputAttributes(inputElement: HTMLInputElement, { value, selectionStart, selectionEnd }: Partial<InputAttributes>): void;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function setInputAttributes(inputElement, _a) {
4
+ // Важно установить позицию курсора после установки значения,
5
+ // так как после установки значения, курсор автоматически уходит в конец значения
6
+ var value = _a.value, selectionStart = _a.selectionStart, selectionEnd = _a.selectionEnd;
7
+ if (value !== undefined) {
8
+ inputElement.value = value;
9
+ }
10
+ if (selectionStart !== undefined && selectionEnd !== undefined) {
11
+ inputElement.setSelectionRange(selectionStart, selectionEnd);
12
+ }
13
+ }
14
+ exports.default = setInputAttributes;
15
+ //# sourceMappingURL=setInputAttributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setInputAttributes.js","sourceRoot":"","sources":["../../../../../../../../src/ui/components/form/input-mask/lib/core/utils/setInputAttributes.ts"],"names":[],"mappings":";;AAEA,SAAwB,kBAAkB,CACxC,YAA8B,EAC9B,EAAiE;IAEjE,6DAA6D;IAC7D,iFAAiF;QAH/E,KAAK,WAAA,EAAE,cAAc,oBAAA,EAAE,YAAY,kBAAA;IAKrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,cAAc,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/D,YAAY,CAAC,iBAAiB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAdD,qCAcC"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import type { MaskProps } from './types.js';
3
+ import type { InputComponent, InputComponentProps } from '../core/index.js';
4
+ export type InputMaskProps<C extends React.ComponentType | undefined = undefined> = MaskProps & InputComponentProps<C>;
5
+ declare const InputMask: InputComponent<MaskProps>;
6
+ export default InputMask;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ var jsx_runtime_1 = require("react/jsx-runtime");
29
+ var react_1 = require("react");
30
+ var core_1 = require("../core/index.js");
31
+ var useMask_1 = __importDefault(require("./useMask.js"));
32
+ function ForwardedInputMask(_a, forwardedInputRef) {
33
+ var Component = _a.component, mask = _a.mask, replacement = _a.replacement, showMask = _a.showMask, separate = _a.separate, track = _a.track, modify = _a.modify, onMask = _a.onMask, props = __rest(_a, ["component", "mask", "replacement", "showMask", "separate", "track", "modify", "onMask"]);
34
+ var inputRef = (0, useMask_1.default)({ mask: mask, replacement: replacement, showMask: showMask, separate: separate, track: track, modify: modify, onMask: onMask });
35
+ var connectedInputRef = (0, core_1.useConnectedInputRef)(inputRef, forwardedInputRef);
36
+ if (Component) {
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ return (0, jsx_runtime_1.jsx)(Component, __assign({ ref: connectedInputRef }, props));
39
+ }
40
+ return (0, jsx_runtime_1.jsx)("input", __assign({ ref: connectedInputRef }, props));
41
+ }
42
+ var InputMask = (0, react_1.forwardRef)(ForwardedInputMask);
43
+ exports.default = InputMask;
44
+ //# sourceMappingURL=InputMask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputMask.js","sourceRoot":"","sources":["../../../../../../../src/ui/components/form/input-mask/lib/mask/InputMask.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAmC;AAEnC,gCAA+C;AAE/C,sDAAgC;AAOhC,SAAS,kBAAkB,CACzB,EAAmH,EACnH,iBAAuD;IADrD,IAAW,SAAS,eAAA,EAAE,IAAI,UAAA,EAAE,WAAW,iBAAA,EAAE,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,KAAK,WAAA,EAAE,MAAM,YAAA,EAAE,MAAM,YAAA,EAAK,KAAK,cAA9F,yFAAgG,CAAF;IAG9F,IAAM,QAAQ,GAAG,IAAA,iBAAO,EAAC,EAAE,IAAI,MAAA,EAAE,WAAW,aAAA,EAAE,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAE3F,IAAM,iBAAiB,GAAG,IAAA,2BAAoB,EAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAE5E,IAAI,SAAS,EAAE,CAAC;QACd,8DAA8D;QAC9D,OAAO,uBAAC,SAAS,aAAC,GAAG,EAAE,iBAAiB,IAAO,KAAa,EAAI,CAAC;IACnE,CAAC;IAED,OAAO,2CAAO,GAAG,EAAE,iBAAiB,IAAM,KAAK,EAAI,CAAC;AACtD,CAAC;AAED,IAAM,SAAS,GAAG,IAAA,kBAAU,EAAC,kBAAkB,CAA8B,CAAC;AAE9E,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { default as InputMask } from './InputMask.js';
2
+ export { default as useMask } from './useMask.js';
3
+ export * from './utils.js';
4
+ export type { InputMaskProps } from './InputMask.js';
5
+ export type { MaskProps, Replacement, TrackParam, Track, ModifiedData, Modify, MaskEvent, MaskEventDetail, MaskEventHandler, } from './types.js';