@skbkontur/react-ui-validations 1.10.0 → 1.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -1
- package/index.d.ts +1 -1
- package/index.js +128 -55
- package/index.js.map +1 -1
- package/package.json +1 -26
package/CHANGELOG.md
CHANGED
|
@@ -3,9 +3,21 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.10.1](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/compare/react-ui-validations@1.10.0...react-ui-validations@1.10.1) (2022-08-24)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **ValidationContainer:** fix scroll to invalid field on submit ([#2930](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/issues/2930)) ([c2b966b](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/commit/c2b966bc8f2fcaac63e377e4d98669a14de610c3))
|
|
12
|
+
* **ValidationContainer:** submit a form with a warning on the second attempt ([#2977](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/issues/2977)) ([c9a222d](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/commit/c9a222dca93c6869962f55ff119d4f5a219d9a2f))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
6
18
|
# [1.10.0](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/compare/react-ui-validations@1.9.1...react-ui-validations@1.10.0) (2022-08-16)
|
|
7
19
|
|
|
8
|
-
**Note:** Version bump
|
|
20
|
+
**Note:** Version bump due significan refactoring
|
|
9
21
|
|
|
10
22
|
|
|
11
23
|
|
package/index.d.ts
CHANGED
|
@@ -96,7 +96,7 @@ declare module '@skbkontur/react-ui-validations/src/ValidationWrapperInternal' {
|
|
|
96
96
|
componentDidUpdate(): void;
|
|
97
97
|
focus(): Promise<void>;
|
|
98
98
|
render(): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
|
|
99
|
-
getRootNode: () => Nullable<
|
|
99
|
+
getRootNode: () => Nullable<Element>;
|
|
100
100
|
getControlPosition(): Nullable<Point>;
|
|
101
101
|
processBlur(): Promise<void>;
|
|
102
102
|
processSubmit(): Promise<void>;
|
package/index.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var warning = require('warning');
|
|
7
|
+
var reactDom = require('react-dom');
|
|
7
8
|
|
|
8
9
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
10
|
|
|
@@ -207,7 +208,20 @@ var isReactUITestEnv = Boolean(REACT_UI_TEST) || // for cases when NODE_ENV is n
|
|
|
207
208
|
Boolean(STORYBOOK_REACT_UI_TEST) || // for usage with storybook
|
|
208
209
|
Boolean(enableReactTesting); // deprecated, legacy variable
|
|
209
210
|
var isTestEnv = NODE_ENV === 'test' || isReactUITestEnv;
|
|
210
|
-
var isBrowser = typeof window !== 'undefined';
|
|
211
|
+
var isBrowser = typeof window !== 'undefined';
|
|
212
|
+
var canUseDOM = isBrowser && window.document && window.document.createElement;
|
|
213
|
+
function isElement(el) {
|
|
214
|
+
if (isBrowser) {
|
|
215
|
+
return el instanceof Element;
|
|
216
|
+
}
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
function isNode(node) {
|
|
220
|
+
if (isBrowser) {
|
|
221
|
+
return node instanceof Node;
|
|
222
|
+
}
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
211
225
|
|
|
212
226
|
/**
|
|
213
227
|
* Checks if the value `null` or `undefined`.
|
|
@@ -220,6 +234,42 @@ var isNullable = function (value) {
|
|
|
220
234
|
return value === null || value === undefined;
|
|
221
235
|
};
|
|
222
236
|
|
|
237
|
+
function getVisibleValidation(visible, actual, changing) {
|
|
238
|
+
var from = function (type) { return getType(visible) === type; };
|
|
239
|
+
var to = function (type) { return getType(actual) === type; };
|
|
240
|
+
if (to('immediate')) {
|
|
241
|
+
return actual;
|
|
242
|
+
}
|
|
243
|
+
if (changing) {
|
|
244
|
+
return from('immediate') ? null : visible;
|
|
245
|
+
}
|
|
246
|
+
if (from(null) && to('lostfocus')) {
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
if (to('lostfocus')) {
|
|
250
|
+
return actual;
|
|
251
|
+
}
|
|
252
|
+
if (from('submit') && to('submit')) {
|
|
253
|
+
return visible;
|
|
254
|
+
}
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
function getType(validation) {
|
|
258
|
+
return validation ? validation.behaviour : null;
|
|
259
|
+
}
|
|
260
|
+
function getLevel(validation) {
|
|
261
|
+
return validation ? validation.level : null;
|
|
262
|
+
}
|
|
263
|
+
function getIndependent(validation) {
|
|
264
|
+
return validation ? validation.independent : null;
|
|
265
|
+
}
|
|
266
|
+
function isEqual(a, b) {
|
|
267
|
+
if (a === b) {
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
return !!a && !!b && a.behaviour === b.behaviour && a.message === b.message && a.independent === b.independent;
|
|
271
|
+
}
|
|
272
|
+
|
|
223
273
|
var ValidationContext = React__default["default"].createContext({
|
|
224
274
|
register: function () { return undefined; },
|
|
225
275
|
unregister: function () { return undefined; },
|
|
@@ -237,6 +287,10 @@ var ValidationContextWrapper = /** @class */ (function (_super) {
|
|
|
237
287
|
function ValidationContextWrapper() {
|
|
238
288
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
239
289
|
_this.childWrappers = [];
|
|
290
|
+
_this.previousValidation = [];
|
|
291
|
+
_this.validationsArraysEqual = function (a1, a2) {
|
|
292
|
+
return a1.length === a2.length && a1.every(function (o, idx) { return isEqual(o, a2[idx]); });
|
|
293
|
+
};
|
|
240
294
|
return _this;
|
|
241
295
|
}
|
|
242
296
|
ValidationContextWrapper.prototype.getSettings = function () {
|
|
@@ -317,13 +371,23 @@ var ValidationContextWrapper = /** @class */ (function (_super) {
|
|
|
317
371
|
};
|
|
318
372
|
ValidationContextWrapper.prototype.validate = function (withoutFocus) {
|
|
319
373
|
return __awaiter(this, void 0, void 0, function () {
|
|
320
|
-
var firstInvalid;
|
|
374
|
+
var currentValidation, validationHasNotChanged, firstInvalid;
|
|
321
375
|
return __generator(this, function (_a) {
|
|
322
376
|
switch (_a.label) {
|
|
323
|
-
case 0:
|
|
377
|
+
case 0:
|
|
378
|
+
currentValidation = this.childWrappers.map(function (x) { return x.props.validation; });
|
|
379
|
+
validationHasNotChanged = this.validationsArraysEqual(this.previousValidation, currentValidation);
|
|
380
|
+
return [4 /*yield*/, Promise.all(this.childWrappers.map(function (x) { return x.processSubmit(); }))];
|
|
324
381
|
case 1:
|
|
325
382
|
_a.sent();
|
|
326
|
-
firstInvalid = this.getChildWrappersSortedByPosition().find(function (x) {
|
|
383
|
+
firstInvalid = this.getChildWrappersSortedByPosition().find(function (x) {
|
|
384
|
+
var hasWarning = x.hasWarning();
|
|
385
|
+
var hasError = x.hasError();
|
|
386
|
+
if (validationHasNotChanged && hasWarning && !hasError) {
|
|
387
|
+
return false;
|
|
388
|
+
}
|
|
389
|
+
return hasError || hasWarning;
|
|
390
|
+
});
|
|
327
391
|
if (firstInvalid) {
|
|
328
392
|
if (!withoutFocus) {
|
|
329
393
|
firstInvalid.focus();
|
|
@@ -332,6 +396,7 @@ var ValidationContextWrapper = /** @class */ (function (_super) {
|
|
|
332
396
|
if (this.props.onValidationUpdated) {
|
|
333
397
|
this.props.onValidationUpdated(!firstInvalid);
|
|
334
398
|
}
|
|
399
|
+
this.previousValidation = currentValidation;
|
|
335
400
|
return [2 /*return*/, !firstInvalid];
|
|
336
401
|
}
|
|
337
402
|
});
|
|
@@ -395,6 +460,47 @@ var ValidationContainer = /** @class */ (function (_super) {
|
|
|
395
460
|
return ValidationContainer;
|
|
396
461
|
}(React__default["default"].Component));
|
|
397
462
|
|
|
463
|
+
/* eslint-disable react/no-find-dom-node */
|
|
464
|
+
var isInstanceWithRootNode = function (instance) {
|
|
465
|
+
return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');
|
|
466
|
+
};
|
|
467
|
+
/**
|
|
468
|
+
* Temporary duplicates @skbkontur/react-ui/lib/rootNode/getRootNode.ts
|
|
469
|
+
* */
|
|
470
|
+
var getRootNode = function (instance) {
|
|
471
|
+
if (!canUseDOM || !instance) {
|
|
472
|
+
// instance can be `null` if component was unmounted
|
|
473
|
+
// also checking undefined for convinient usage
|
|
474
|
+
return null;
|
|
475
|
+
}
|
|
476
|
+
if (isElement(instance)) {
|
|
477
|
+
// instance can be a `Element` already if comming
|
|
478
|
+
// from Refs of intrinsic elements (<div />, <button />, etc.)
|
|
479
|
+
return instance;
|
|
480
|
+
}
|
|
481
|
+
var rootNode;
|
|
482
|
+
if (isInstanceWithRootNode(instance)) {
|
|
483
|
+
// it happened to be that native Node interface also has
|
|
484
|
+
// the "getRootNode" method, but we can ignore it here
|
|
485
|
+
// because we'd already checked the instance on being an `Element`
|
|
486
|
+
// which is a subclass of Node, so, just fixing types here
|
|
487
|
+
if (!isNode(instance)) {
|
|
488
|
+
rootNode = instance.getRootNode();
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
if (rootNode !== undefined) {
|
|
492
|
+
// at this point, it is rather `Element` (what we are looking for)
|
|
493
|
+
// or null (which is also OK, e.g. Popup/Tooltip/Hint before opening), so, just return it
|
|
494
|
+
return rootNode;
|
|
495
|
+
}
|
|
496
|
+
// node is undefined, which means that the instance's root node getter doesn't exists or returns the undefined
|
|
497
|
+
// anyway, it tell us that the convention is not respected (by the component itself or its children),
|
|
498
|
+
// so, we have to fall back to the deprecated findDOMNode, which always works but breaks StrictMode
|
|
499
|
+
rootNode = reactDom.findDOMNode(instance);
|
|
500
|
+
// the findDOMNode can also return Text, but we are only intrested in HTMLElements, so just filter it
|
|
501
|
+
return isElement(rootNode) ? rootNode : null;
|
|
502
|
+
};
|
|
503
|
+
|
|
398
504
|
function smoothScrollIntoView(element, scrollOffset) {
|
|
399
505
|
return __awaiter(this, void 0, void 0, function () {
|
|
400
506
|
var scrollableParent, parentRects, clientRects, topOffset, bottomOffset, html, viewportHeight, viewportWidth, isElementInViewport;
|
|
@@ -536,42 +642,6 @@ function scrollBy(_a) {
|
|
|
536
642
|
return smoothScroll(getDocumentBodyStrict(), Math.floor(left) + (window.scrollX || window.pageXOffset), Math.floor(top) + (window.scrollY || window.pageYOffset));
|
|
537
643
|
}
|
|
538
644
|
|
|
539
|
-
function getVisibleValidation(visible, actual, changing) {
|
|
540
|
-
var from = function (type) { return getType(visible) === type; };
|
|
541
|
-
var to = function (type) { return getType(actual) === type; };
|
|
542
|
-
if (to('immediate')) {
|
|
543
|
-
return actual;
|
|
544
|
-
}
|
|
545
|
-
if (changing) {
|
|
546
|
-
return from('immediate') ? null : visible;
|
|
547
|
-
}
|
|
548
|
-
if (from(null) && to('lostfocus')) {
|
|
549
|
-
return null;
|
|
550
|
-
}
|
|
551
|
-
if (to('lostfocus')) {
|
|
552
|
-
return actual;
|
|
553
|
-
}
|
|
554
|
-
if (from('submit') && to('submit')) {
|
|
555
|
-
return visible;
|
|
556
|
-
}
|
|
557
|
-
return null;
|
|
558
|
-
}
|
|
559
|
-
function getType(validation) {
|
|
560
|
-
return validation ? validation.behaviour : null;
|
|
561
|
-
}
|
|
562
|
-
function getLevel(validation) {
|
|
563
|
-
return validation ? validation.level : null;
|
|
564
|
-
}
|
|
565
|
-
function getIndependent(validation) {
|
|
566
|
-
return validation ? validation.independent : null;
|
|
567
|
-
}
|
|
568
|
-
function isEqual(a, b) {
|
|
569
|
-
if (a === b) {
|
|
570
|
-
return true;
|
|
571
|
-
}
|
|
572
|
-
return !!a && !!b && a.behaviour === b.behaviour && a.message === b.message && a.independent === b.independent;
|
|
573
|
-
}
|
|
574
|
-
|
|
575
645
|
if (isBrowser && typeof HTMLElement === 'undefined') {
|
|
576
646
|
var w = window;
|
|
577
647
|
w.HTMLElement = w.Element;
|
|
@@ -585,8 +655,22 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
|
|
|
585
655
|
};
|
|
586
656
|
_this.isChanging = false;
|
|
587
657
|
_this.context = _this.context;
|
|
658
|
+
_this.customRef = function (instance) {
|
|
659
|
+
var children = _this.props.children;
|
|
660
|
+
_this.setRootNode(instance);
|
|
661
|
+
var child = children; // todo type or maybe React.Children.only
|
|
662
|
+
if (child && child.ref) {
|
|
663
|
+
if (typeof child.ref === 'function') {
|
|
664
|
+
child.ref(instance);
|
|
665
|
+
}
|
|
666
|
+
if (Object.prototype.hasOwnProperty.call(child.ref, 'current')) {
|
|
667
|
+
child.ref.current = instance;
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
_this.child = instance;
|
|
671
|
+
};
|
|
588
672
|
_this.setRootNode = function (element) {
|
|
589
|
-
_this.rootNode = element;
|
|
673
|
+
_this.rootNode = getRootNode(element);
|
|
590
674
|
};
|
|
591
675
|
_this.getRootNode = function () {
|
|
592
676
|
return _this.rootNode;
|
|
@@ -638,18 +722,7 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
|
|
|
638
722
|
var children = this.props.children;
|
|
639
723
|
var validation = this.state.validation;
|
|
640
724
|
var clonedChild = children ? (React__default["default"].cloneElement(children, {
|
|
641
|
-
ref:
|
|
642
|
-
var child = children; // todo type or maybe React.Children.only
|
|
643
|
-
if (child && child.ref) {
|
|
644
|
-
if (typeof child.ref === 'function') {
|
|
645
|
-
child.ref(x);
|
|
646
|
-
}
|
|
647
|
-
if (Object.prototype.hasOwnProperty.call(child.ref, 'current')) {
|
|
648
|
-
child.ref.current = x;
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
_this.child = x;
|
|
652
|
-
},
|
|
725
|
+
ref: this.customRef,
|
|
653
726
|
error: !this.isChanging && getLevel(validation) === 'error',
|
|
654
727
|
warning: !this.isChanging && getLevel(validation) === 'warning',
|
|
655
728
|
onBlur: function () {
|
|
@@ -685,7 +758,7 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
|
|
|
685
758
|
(_a = children.props).onValueChange.apply(_a, args);
|
|
686
759
|
}
|
|
687
760
|
},
|
|
688
|
-
})) : (React__default["default"].createElement("span",
|
|
761
|
+
})) : (React__default["default"].createElement("span", { ref: this.setRootNode }));
|
|
689
762
|
if (ReactUiDetection.isComboBox(clonedChild)) {
|
|
690
763
|
clonedChild = React__default["default"].cloneElement(clonedChild, {
|
|
691
764
|
onInputValueChange: function () {
|
|
@@ -702,7 +775,7 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
|
|
|
702
775
|
},
|
|
703
776
|
});
|
|
704
777
|
}
|
|
705
|
-
return this.props.errorMessage(React__default["default"].createElement("span",
|
|
778
|
+
return this.props.errorMessage(React__default["default"].createElement("span", null, clonedChild), !!validation, validation);
|
|
706
779
|
};
|
|
707
780
|
ValidationWrapperInternal.prototype.getControlPosition = function () {
|
|
708
781
|
var htmlElement = this.getRootNode();
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/utils/isNonNullable/isNonNullable.ts","../../src/ReactUiDetection.ts","../../src/ValidationTooltip.tsx","../../src/ErrorRenderer.tsx","../../src/utils/createPropsGetter.ts","../../src/utils/utils.ts","../../src/utils/isNullable/isNullable.ts","../../src/ValidationContextWrapper.tsx","../../src/ValidationContainer.tsx","../../src/smoothScrollIntoView.ts","../../src/ValidationHelper.ts","../../src/ValidationWrapperInternal.tsx","../../src/ValidationWrapper.tsx","../../src/Validations/ValidationBuilder.ts","../../src/Validations/ValidationReader.ts","../../src/Validations/ValidationWriter.ts","../../src/Validations/PathHelper.ts","../../src/Validations/index.ts"],"sourcesContent":["/**\n * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента\n *\n * @param value Значение, которое нужно проверить и исключить из него типы\n * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false\n */\nexport const isNonNullable = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n","import { isNonNullable } from '../src/utils/isNonNullable';\n\ndeclare function require(name: string): any;\n\nconst defaultOrNamed = (module: any, component: string) =>\n module && module.__esModule && module.default ? module.default : module[component];\n\nconst Tooltip = defaultOrNamed(require('__REACT_UI_PACKAGE__/components/Tooltip'), 'Tooltip');\n\nexport { Tooltip };\n\nexport class ReactUiDetection {\n public static isDatePicker(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'DatePicker';\n }\n\n public static isRadioGroup(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'RadioGroup';\n }\n\n public static isTokenInput(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'TokenInput';\n }\n\n public static isSwitcher(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'Switcher';\n }\n public static isComboBox(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'ComboBox';\n }\n}\n","import React from 'react';\n\nimport { ReactUiDetection, Tooltip } from './ReactUiDetection';\n\nexport type TooltipPosition =\n | 'top left'\n | 'top center'\n | 'top right'\n | 'bottom left'\n | 'bottom center'\n | 'bottom right'\n | 'left top'\n | 'left middle'\n | 'left bottom'\n | 'right top'\n | 'right middle'\n | 'right bottom';\n\nexport interface ValidationTooltipProps {\n children: React.ReactElement<any>;\n error: boolean;\n pos?: TooltipPosition;\n render?: () => React.ReactNode;\n}\n\nexport class ValidationTooltip extends React.Component<ValidationTooltipProps> {\n public render() {\n const onlyChild = React.Children.only(this.props.children);\n const child = onlyChild && onlyChild.props ? onlyChild.props.children : null;\n if (\n ReactUiDetection.isRadioGroup(child) ||\n ReactUiDetection.isTokenInput(child) ||\n ReactUiDetection.isSwitcher(child)\n ) {\n return (\n <Tooltip\n useWrapper={false}\n pos={this.props.pos}\n render={this.props.error && this.props.render}\n trigger={'hover&focus'}\n >\n {child}\n </Tooltip>\n );\n }\n return (\n <Tooltip pos={this.props.pos} render={this.props.error && this.props.render} trigger={'hover&focus'}>\n {this.props.children}\n </Tooltip>\n );\n }\n}\n","/* eslint-disable react/display-name */\nimport React from 'react';\n\nimport { TooltipPosition, ValidationTooltip } from './ValidationTooltip';\nimport { RenderErrorMessage } from './ValidationWrapperInternal';\n\nexport function tooltip(pos: TooltipPosition): RenderErrorMessage {\n return (control, hasError, validation) => {\n return (\n <ValidationTooltip\n pos={pos}\n error={hasError}\n render={() => {\n if (!validation || !validation.message) {\n return null;\n }\n return (validation && validation.message) || '';\n }}\n >\n {control}\n </ValidationTooltip>\n );\n };\n}\n\nexport function text(pos: 'bottom' | 'right' = 'right'): RenderErrorMessage {\n if (pos === 'right') {\n return (control, _hasError, validation) => {\n return (\n <span style={{ display: 'inline-block' }}>\n {control}\n <span data-validation-message=\"text\" style={{ marginLeft: '10px', color: '#d43517' }}>\n {(validation && validation.message) || ''}\n </span>\n </span>\n );\n };\n }\n return (control, _hasError, validation) => {\n return (\n <span style={{ position: 'relative', display: 'inline-block' }}>\n {control}\n <span style={{ position: 'absolute', bottom: 0, left: 0, height: 0 }}>\n <span\n data-validation-message=\"text\"\n style={{\n color: '#d43517',\n overflow: 'visible',\n whiteSpace: 'nowrap',\n position: 'absolute',\n top: '2px',\n left: 0,\n }}\n >\n {(validation && validation.message) || ''}\n </span>\n </span>\n </span>\n );\n };\n}\n","import React from 'react';\n\nexport type DefaultizedProps<P, DP> = P & DP;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function createPropsGetter<DP extends unknown>(defaultProps: DP) {\n return function <P, T extends React.Component<P>>(this: T) {\n return this.props as DefaultizedProps<T['props'], DP>;\n };\n}\n","const env: NodeJS.ProcessEnv = (typeof process === 'object' && process && process.env) || {};\nconst { enableReactTesting, NODE_ENV, REACT_UI_TEST, REACT_APP_REACT_UI_TEST, STORYBOOK_REACT_UI_TEST } = env;\n\nconst isReactUITestEnv =\n Boolean(REACT_UI_TEST) || // for cases when NODE_ENV is not usable (dev/prod)\n Boolean(REACT_APP_REACT_UI_TEST) || // for usage with CRA\n Boolean(STORYBOOK_REACT_UI_TEST) || // for usage with storybook\n Boolean(enableReactTesting); // deprecated, legacy variable\n\nexport const isTestEnv = NODE_ENV === 'test' || isReactUITestEnv;\n\nexport const isBrowser = typeof window !== 'undefined';\n","/**\n * Checks if the value `null` or `undefined`.\n *\n * @param value Value to check for `null` and `undefined`.\n * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.\n */\n// @ts-expect-error: TypeScript doesn't consider the check inside of the function.\nexport const isNullable = <T>(value: T): value is null | undefined => {\n return value === null || value === undefined;\n};\n","import React from 'react';\n\nimport { ValidationWrapperInternal } from './ValidationWrapperInternal';\nimport { ScrollOffset } from './ValidationContainer';\nimport { isNullable } from './utils/isNullable';\n\nexport interface ValidationContextSettings {\n scrollOffset: ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextWrapperProps {\n children?: React.ReactNode;\n onValidationUpdated?: (isValid?: boolean) => void;\n scrollOffset?: number | ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextType {\n register: (wrapper: ValidationWrapperInternal) => void;\n unregister: (wrapper: ValidationWrapperInternal) => void;\n instanceProcessBlur: (wrapper: ValidationWrapperInternal) => void;\n onValidationUpdated: (wrapper: ValidationWrapperInternal, isValid: boolean) => void;\n getSettings: () => ValidationContextSettings;\n isAnyWrapperInChangingMode: () => boolean;\n}\n\nexport const ValidationContext = React.createContext<ValidationContextType>({\n register: () => undefined,\n unregister: () => undefined,\n instanceProcessBlur: () => undefined,\n onValidationUpdated: () => undefined,\n getSettings: () => ({\n scrollOffset: {},\n disableSmoothScroll: false,\n }),\n isAnyWrapperInChangingMode: () => false,\n});\n\nValidationContext.displayName = 'ValidationContext';\n\nexport class ValidationContextWrapper extends React.Component<ValidationContextWrapperProps> {\n public childWrappers: ValidationWrapperInternal[] = [];\n\n public getSettings(): ValidationContextSettings {\n let scrollOffset: ScrollOffset = {};\n\n if (typeof this.props.scrollOffset === 'number') {\n scrollOffset = { top: this.props.scrollOffset };\n } else {\n scrollOffset = isNullable(this.props.scrollOffset) ? {} : this.props.scrollOffset;\n }\n\n const { top = 50, bottom = 0 } = scrollOffset;\n return {\n scrollOffset: {\n top,\n bottom,\n },\n disableSmoothScroll: this.props.disableSmoothScroll,\n };\n }\n\n public register(wrapper: ValidationWrapperInternal) {\n this.childWrappers.push(wrapper);\n }\n\n public unregister(wrapper: ValidationWrapperInternal) {\n this.childWrappers.splice(this.childWrappers.indexOf(wrapper), 1);\n this.onValidationRemoved();\n }\n\n public instanceProcessBlur(instance: ValidationWrapperInternal) {\n for (const wrapper of this.childWrappers.filter((x) => x !== instance && !x.isIndependent())) {\n wrapper.processBlur();\n }\n }\n\n public onValidationUpdated(wrapper: ValidationWrapperInternal, isValid?: boolean) {\n const { onValidationUpdated } = this.props;\n if (onValidationUpdated) {\n const isValidResult = !this.childWrappers.find((x) => {\n if (x === wrapper) {\n return !isValid;\n }\n return x.hasError();\n });\n onValidationUpdated(isValidResult);\n }\n }\n\n public isAnyWrapperInChangingMode(): boolean {\n return this.childWrappers.some((x) => x.isChanging);\n }\n\n public onValidationRemoved() {\n const { onValidationUpdated } = this.props;\n if (onValidationUpdated) {\n const isValidResult = !this.childWrappers.find((x) => x.hasError());\n onValidationUpdated(isValidResult);\n }\n }\n\n public getChildWrappersSortedByPosition(): ValidationWrapperInternal[] {\n const wrappersWithPosition = [...this.childWrappers].map((x) => ({\n target: x,\n position: x.getControlPosition(),\n }));\n wrappersWithPosition.sort((x, y) => {\n const xPosition = x.position;\n const yPosition = y.position;\n if (isNullable(xPosition) && isNullable(yPosition)) {\n return 0;\n }\n\n if (isNullable(xPosition)) {\n return 1;\n }\n if (isNullable(yPosition)) {\n return -1;\n }\n if (Math.sign(xPosition.x - yPosition.x) !== 0) {\n return Math.sign(xPosition.x - yPosition.x);\n }\n return Math.sign(xPosition.y - yPosition.y);\n });\n return wrappersWithPosition.map((x) => x.target);\n }\n\n public async validate(withoutFocus: boolean): Promise<boolean> {\n await Promise.all(this.childWrappers.map((x) => x.processSubmit()));\n const firstInvalid = this.getChildWrappersSortedByPosition().find((x) => x.hasError() || x.hasWarning());\n if (firstInvalid) {\n if (!withoutFocus) {\n firstInvalid.focus();\n }\n }\n\n if (this.props.onValidationUpdated) {\n this.props.onValidationUpdated(!firstInvalid);\n }\n\n return !firstInvalid;\n }\n\n public render() {\n return (\n <ValidationContext.Provider value={this}>\n <span>{this.props.children}</span>\n </ValidationContext.Provider>\n );\n }\n}\n","import React from 'react';\n\nimport { Nullable } from '../typings/Types';\n\nimport { createPropsGetter } from './utils/createPropsGetter';\nimport { isTestEnv } from './utils/utils';\nimport { ValidationContextWrapper } from './ValidationContextWrapper';\n\nexport interface ScrollOffset {\n top?: number;\n bottom?: number;\n}\n\nexport interface ValidationContainerProps {\n children?: React.ReactNode;\n onValidationUpdated?: (isValid?: Nullable<boolean>) => void;\n scrollOffset?: number | ScrollOffset;\n disableSmoothScroll?: boolean;\n}\n\ntype DefaultProps = Required<Pick<ValidationContainerProps, 'disableSmoothScroll'>>;\n\nexport class ValidationContainer extends React.Component<ValidationContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationContainer';\n\n public static defaultProps: DefaultProps = {\n disableSmoothScroll: isTestEnv,\n };\n\n private getProps = createPropsGetter(ValidationContainer.defaultProps);\n\n public static propTypes = {\n scrollOffset(props: ValidationContainerProps, propName: keyof ValidationContainerProps, componentName: string) {\n const { scrollOffset } = props;\n if (typeof scrollOffset === 'number') {\n return new Error(\n `[${componentName}]: scrollOffset as a number type has been deprecated, now use object { top?: number; bottom?: number; }`,\n );\n }\n },\n };\n\n private childContext: ValidationContextWrapper | null = null;\n\n public async submit(withoutFocus = false): Promise<void> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n await this.childContext.validate(withoutFocus);\n }\n\n public validate(withoutFocus = false): Promise<boolean> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n return this.childContext.validate(withoutFocus);\n }\n\n public render() {\n return (\n <ValidationContextWrapper\n ref={this.refChildContext}\n scrollOffset={this.props.scrollOffset}\n disableSmoothScroll={this.getProps().disableSmoothScroll}\n onValidationUpdated={this.props.onValidationUpdated}\n >\n {this.props.children}\n </ValidationContextWrapper>\n );\n }\n\n private refChildContext = (el: ValidationContextWrapper | null) => (this.childContext = el);\n}\n","import { Nullable, Omit } from '../typings/Types';\n\nimport { ScrollOffset } from './ValidationContainer';\nimport { isBrowser } from './utils/utils';\nimport { isNullable } from './utils/isNullable';\n\nexport async function smoothScrollIntoView(element: HTMLElement, scrollOffset: ScrollOffset): Promise<void> {\n const scrollableParent = findScrollableParent(element);\n const parentRects = scrollableParent.getBoundingClientRect();\n const clientRects = element.getBoundingClientRect();\n\n const topOffset = scrollOffset.top || 0;\n const bottomOffset = scrollOffset.bottom || 0;\n\n if (scrollableParent === document.body) {\n const html = document.documentElement || { clientHeight: 0, clientWidth: 0 };\n const viewportHeight = window.innerHeight || html.clientHeight;\n const viewportWidth = window.innerWidth || html.clientWidth;\n\n const isElementInViewport =\n clientRects.top >= topOffset &&\n clientRects.left >= 0 &&\n clientRects.bottom <= viewportHeight - bottomOffset &&\n clientRects.right <= viewportWidth;\n\n if (isElementInViewport) {\n return;\n }\n\n await scrollBy({\n left: clientRects.left,\n top: clientRects.top - topOffset,\n });\n } else {\n if (clientRects.top - topOffset + 50 > parentRects.top && clientRects.bottom < parentRects.bottom) {\n return;\n }\n\n await smoothScroll(\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top - topOffset,\n );\n await scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n });\n }\n}\n\nfunction smoothScroll(element: HTMLElement, x: number, y: number): Promise<void> {\n let context: Omit<StepContent, 'resolve'>;\n if (element === getDocumentBodyStrict()) {\n context = {\n scrollable: window as any as HTMLElement,\n startX: window.scrollX || window.pageXOffset,\n startY: window.scrollY || window.pageYOffset,\n method: scrollWindow,\n startTime: now(),\n x,\n y,\n };\n } else {\n context = {\n scrollable: element,\n startX: element.scrollLeft,\n startY: element.scrollTop,\n method: scrollElement,\n startTime: now(),\n x,\n y,\n };\n }\n\n return new Promise((resolve) => step({ ...context, resolve }));\n}\n\ninterface StepContent {\n scrollable: HTMLElement;\n startTime: number;\n startX: number;\n startY: number;\n x: number;\n y: number;\n method: (element: Element, x: number, y: number) => void;\n resolve: () => void;\n}\n\nfunction step(context: StepContent) {\n const time = now();\n const elapsed = Math.min(1, (time - context.startTime) / ScrollTime);\n const value = ease(elapsed);\n\n const currentX = context.startX + (context.x - context.startX) * value;\n const currentY = context.startY + (context.y - context.startY) * value;\n\n context.method(context.scrollable, currentX, currentY);\n\n if (currentX !== context.x || currentY !== context.y) {\n window.requestAnimationFrame(() => step(context));\n } else {\n context.resolve();\n }\n}\n\nconst ScrollTime = 468;\n\nconst getScrollWindow = (isBrowser: boolean) => {\n if (isBrowser) {\n if (typeof window.scroll === 'function') {\n return (_: any, x: any, y: any) => window.scroll(x, y);\n }\n\n return (_: any, x: any, y: any) => window.scrollTo(x, y);\n }\n\n return () => undefined;\n};\n\nconst scrollWindow = getScrollWindow(isBrowser);\n\nconst now =\n isBrowser && window.performance && window.performance.now\n ? window.performance.now.bind(window.performance)\n : Date.now;\n\nfunction scrollElement(element: Element, x: number, y: number) {\n element.scrollLeft = x;\n element.scrollTop = y;\n}\n\nfunction ease(time: number): number {\n return 0.5 * (1 - Math.cos(Math.PI * time));\n}\n\nfunction getDocumentBodyStrict(): HTMLElement {\n if (isNullable(document.body)) {\n throw new Error('Scrolling can be used only in browser');\n }\n\n return document.body;\n}\n\nfunction findScrollableParent(el: HTMLElement): HTMLElement {\n let isBody: Nullable<boolean>;\n let hasScrollableSpace: Nullable<boolean>;\n let hasVisibleOverflow: Nullable<boolean>;\n let currentElement: HTMLElement = el;\n do {\n if (isNullable(currentElement.parentElement) || !(currentElement.parentElement instanceof HTMLElement)) {\n return getDocumentBodyStrict();\n }\n currentElement = currentElement.parentElement;\n isBody = currentElement === document.body;\n hasScrollableSpace =\n currentElement.clientHeight < currentElement.scrollHeight ||\n currentElement.clientWidth < currentElement.scrollWidth;\n hasVisibleOverflow = window.getComputedStyle(currentElement, null).overflow === 'visible';\n } while (!isBody && !(hasScrollableSpace && !hasVisibleOverflow));\n\n isBody = null;\n hasScrollableSpace = null;\n hasVisibleOverflow = null;\n\n return currentElement;\n}\n\nfunction scrollBy({ left, top }: { left: number; top: number }): Promise<void> {\n return smoothScroll(\n getDocumentBodyStrict(),\n Math.floor(left) + (window.scrollX || window.pageXOffset),\n Math.floor(top) + (window.scrollY || window.pageYOffset),\n );\n}\n","import { Nullable } from '../typings/Types';\n\nimport { Validation, ValidationBehaviour, ValidationLevel } from './ValidationWrapperInternal';\n\nexport function getVisibleValidation(\n visible: Nullable<Validation>,\n actual: Nullable<Validation>,\n changing: boolean,\n): Nullable<Validation> {\n const from = (type?: Nullable<ValidationBehaviour>): boolean => getType(visible) === type;\n const to = (type?: Nullable<ValidationBehaviour>): boolean => getType(actual) === type;\n\n if (to('immediate')) {\n return actual;\n }\n\n if (changing) {\n return from('immediate') ? null : visible;\n }\n\n if (from(null) && to('lostfocus')) {\n return null;\n }\n\n if (to('lostfocus')) {\n return actual;\n }\n\n if (from('submit') && to('submit')) {\n return visible;\n }\n\n return null;\n}\n\nexport function getType(validation: Nullable<Validation>): Nullable<ValidationBehaviour> {\n return validation ? validation.behaviour : null;\n}\n\nexport function getLevel(validation: Nullable<Validation>): Nullable<ValidationLevel> {\n return validation ? validation.level : null;\n}\n\nexport function getIndependent(validation: Nullable<Validation>): Nullable<boolean> {\n return validation ? validation.independent : null;\n}\n\nexport function isEqual(a: Nullable<Validation>, b: Nullable<Validation>): boolean {\n if (a === b) {\n return true;\n }\n return !!a && !!b && a.behaviour === b.behaviour && a.message === b.message && a.independent === b.independent;\n}\n","import React from 'react';\nimport warning from 'warning';\n\nimport { Nullable } from '../typings/Types';\n\nimport { isBrowser } from './utils/utils';\nimport { smoothScrollIntoView } from './smoothScrollIntoView';\nimport { getIndependent, getLevel, getType, getVisibleValidation, isEqual } from './ValidationHelper';\nimport { ReactUiDetection } from './ReactUiDetection';\nimport { ValidationContext, ValidationContextType } from './ValidationContextWrapper';\n\nif (isBrowser && typeof HTMLElement === 'undefined') {\n const w = window as any;\n w.HTMLElement = w.Element;\n}\n\nexport type ValidationBehaviour = 'immediate' | 'lostfocus' | 'submit';\n\nexport type ValidationLevel = 'error' | 'warning';\n\nexport interface Validation {\n level: ValidationLevel;\n behaviour: ValidationBehaviour;\n message: React.ReactNode;\n independent: boolean;\n}\n\nexport type RenderErrorMessage = (\n control: React.ReactElement<any>,\n hasError: boolean,\n validation: Nullable<Validation>,\n) => React.ReactElement<any>;\n\nexport interface ValidationWrapperInternalProps {\n children?: React.ReactElement<any>;\n validation: Nullable<Validation>;\n errorMessage: RenderErrorMessage;\n}\n\ninterface ValidationWrapperInternalState {\n validation: Nullable<Validation>;\n}\n\ninterface Point {\n x: number;\n y: number;\n}\n\nexport class ValidationWrapperInternal extends React.Component<\n ValidationWrapperInternalProps,\n ValidationWrapperInternalState\n> {\n public state: ValidationWrapperInternalState = {\n validation: null,\n };\n\n public isChanging = false;\n private child: any; // todo type\n private rootNode: Nullable<HTMLElement>;\n\n public static contextType = ValidationContext;\n public context: ValidationContextType = this.context;\n\n public componentDidMount() {\n warning(\n this.context,\n 'ValidationWrapper should appears as child of ValidationContainer.\\n' +\n 'https://tech.skbkontur.ru/react-ui-validations/#/getting-started',\n );\n if (this.context) {\n this.context.register(this);\n }\n this.applyValidation(this.props.validation);\n }\n\n public componentWillUnmount() {\n this.context.unregister(this);\n }\n\n public componentDidUpdate() {\n this.applyValidation(this.props.validation);\n }\n\n public async focus(): Promise<void> {\n const htmlElement = this.getRootNode();\n if (htmlElement instanceof HTMLElement) {\n const { disableSmoothScroll, scrollOffset } = this.context.getSettings();\n if (!disableSmoothScroll) {\n await smoothScrollIntoView(htmlElement, scrollOffset);\n }\n if (this.child && typeof this.child.focus === 'function') {\n this.child.focus();\n }\n }\n this.isChanging = false;\n }\n\n public render() {\n const { children } = this.props;\n const { validation } = this.state;\n\n let clonedChild: React.ReactElement<any> = children ? (\n React.cloneElement(children, {\n ref: (x: any) => {\n const child = children as any; // todo type or maybe React.Children.only\n if (child && child.ref) {\n if (typeof child.ref === 'function') {\n child.ref(x);\n }\n if (Object.prototype.hasOwnProperty.call(child.ref, 'current')) {\n child.ref.current = x;\n }\n }\n this.child = x;\n },\n error: !this.isChanging && getLevel(validation) === 'error',\n warning: !this.isChanging && getLevel(validation) === 'warning',\n onBlur: (...args: any[]) => {\n this.handleBlur();\n if (children.props && children.props.onBlur) {\n children.props.onBlur(...args);\n }\n },\n onChange: (...args: any[]) => {\n this.isChanging = true;\n if (children.props && children.props.onChange) {\n children.props.onChange(...args);\n }\n },\n onValueChange: (...args: any[]) => {\n this.isChanging = true;\n if (children.props && children.props.onValueChange) {\n children.props.onValueChange(...args);\n }\n },\n })\n ) : (\n <span />\n );\n if (ReactUiDetection.isComboBox(clonedChild)) {\n clonedChild = React.cloneElement(clonedChild, {\n onInputValueChange: (...args: any[]) => {\n this.isChanging = true;\n this.forceUpdate();\n if (children && children.props && children.props.onInputValueChange) {\n children.props.onInputValueChange(...args);\n }\n },\n });\n }\n return this.props.errorMessage(<span ref={this.setRootNode}>{clonedChild}</span>, !!validation, validation);\n }\n\n private setRootNode = (element: Nullable<HTMLElement>) => {\n this.rootNode = element;\n };\n\n public getRootNode = () => {\n return this.rootNode;\n };\n\n public getControlPosition(): Nullable<Point> {\n const htmlElement = this.getRootNode();\n if (htmlElement instanceof HTMLElement) {\n const rect = htmlElement.getBoundingClientRect();\n return { x: rect.top, y: rect.left };\n }\n return null;\n }\n\n public processBlur() {\n const touched = this.isChanging;\n this.isChanging = false;\n const validation = this.getOnBlurValidation(touched);\n return this.setValidation(validation);\n }\n\n public async processSubmit(): Promise<void> {\n this.isChanging = false;\n return this.setValidation(this.props.validation);\n }\n\n public hasError(): boolean {\n return getLevel(this.state.validation) === 'error';\n }\n\n public hasWarning(): boolean {\n return getLevel(this.state.validation) === 'warning';\n }\n\n public isIndependent(): boolean {\n return getIndependent(this.state.validation || this.props.validation) === true;\n }\n\n private handleBlur() {\n setTimeout(() => {\n this.processBlur();\n if (!this.isIndependent()) {\n this.context.instanceProcessBlur(this);\n }\n this.setState({});\n });\n }\n\n private applyValidation(actual: Nullable<Validation>) {\n const visible = this.getVisibleValidation(actual);\n this.setValidation(visible);\n }\n\n private setValidation(validation: Nullable<Validation>): Promise<void> {\n const current = this.state.validation;\n\n if (current === validation) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n this.setState({ validation }, resolve);\n if (Boolean(current) !== Boolean(validation)) {\n this.context.onValidationUpdated(this, !validation);\n }\n });\n }\n\n private getOnBlurValidation(touched: boolean): Nullable<Validation> {\n const actual = this.props.validation;\n if (getType(actual) === 'submit') {\n const visible = this.state.validation;\n return !touched && getType(visible) === 'submit' ? visible : null;\n }\n return actual;\n }\n\n private getVisibleValidation(actual: Nullable<Validation>): Nullable<Validation> {\n const visible = this.state.validation;\n if (isEqual(visible, actual)) {\n return visible;\n }\n const changing = this.context.isAnyWrapperInChangingMode();\n return getVisibleValidation(visible, actual, changing);\n }\n}\n","import React from 'react';\n\nimport { Nullable } from '../typings/Types';\n\nimport { tooltip } from './ErrorRenderer';\nimport {\n RenderErrorMessage,\n Validation,\n ValidationBehaviour,\n ValidationLevel,\n ValidationWrapperInternal,\n} from './ValidationWrapperInternal';\n\nexport interface ValidationInfo {\n type?: Nullable<ValidationBehaviour>;\n level?: Nullable<ValidationLevel>;\n message: React.ReactNode;\n independent?: boolean;\n}\n\nexport interface ValidationWrapperProps {\n children?: React.ReactElement<any>;\n validationInfo: Nullable<ValidationInfo>;\n renderMessage?: Nullable<RenderErrorMessage>;\n}\n\nexport class ValidationWrapper extends React.Component<ValidationWrapperProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationWrapper';\n\n public render() {\n const { children, validationInfo, renderMessage } = this.props;\n const validation: Nullable<Validation> = validationInfo\n ? {\n level: validationInfo.level || 'error',\n behaviour: validationInfo.type || 'lostfocus',\n message: validationInfo.message,\n independent: validationInfo.independent || false,\n }\n : null;\n return (\n <ValidationWrapperInternal errorMessage={renderMessage || tooltip('right top')} validation={validation}>\n {children}\n </ValidationWrapperInternal>\n );\n }\n}\n","import React from 'react';\n\nimport { Nullable } from '../../typings/Types';\nimport { ValidationBehaviour, ValidationLevel } from '../ValidationWrapperInternal';\nimport { ValidationInfo } from '../ValidationWrapper';\nimport { isNullable } from '../utils/isNullable';\n\nimport { LambdaPath, PathTokensCache } from './PathHelper';\nimport { ValidationWriter } from './ValidationWriter';\nimport { ItemValidationRule, ValidationRule } from './Types';\n\ninterface PathInfo<T> {\n data: T;\n path: string[];\n}\n\nexport class ValidationBuilder<TRoot, T> {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private readonly writer: ValidationWriter<TRoot>,\n private readonly tokens: PathTokensCache,\n private readonly path: string[],\n private readonly data: T,\n ) {}\n\n public prop<TChild>(lambdaPath: LambdaPath<T, TChild>, rule: ValidationRule<TRoot, TChild>): void {\n const info = this.getPathInfo(lambdaPath);\n if (isNullable(info)) {\n return;\n }\n\n const builder = new ValidationBuilder<TRoot, TChild>(this.writer, this.tokens, info.path, info.data);\n rule(builder, builder.data);\n }\n\n public array<TChild>(lambdaPath: LambdaPath<T, TChild[]>, rule: ItemValidationRule<TRoot, TChild>): void {\n const info = this.getPathInfo(lambdaPath);\n if (isNullable(info) || !Array.isArray(info.data)) {\n return;\n }\n\n const array = info.data;\n for (let i = 0; i < array.length; ++i) {\n const path = [...info.path, i.toString()];\n const builder = new ValidationBuilder<TRoot, TChild>(this.writer, this.tokens, path, array[i]);\n rule(builder, builder.data, i, array);\n }\n }\n\n public invalid(isInvalid: (value: T) => boolean, validationInfo: ValidationInfo): void;\n public invalid(\n isInvalid: (value: T) => boolean,\n message: React.ReactNode,\n type?: ValidationBehaviour,\n level?: ValidationLevel,\n independent?: boolean,\n ): void;\n\n public invalid(\n isInvalid: (value: T) => boolean,\n messageOrValidationInfo: React.ReactNode | ValidationInfo,\n type?: ValidationBehaviour,\n level?: ValidationLevel,\n independent?: boolean,\n ) {\n const validationWriter = this.writer.getNode<T>(this.path);\n if (validationWriter.isValidated()) {\n return;\n }\n\n const invalid = isInvalid(this.data);\n if (!invalid) {\n return;\n }\n\n if (isValidationInfo(messageOrValidationInfo)) {\n validationWriter.set(messageOrValidationInfo);\n } else {\n validationWriter.set({ message: messageOrValidationInfo, type, level, independent });\n }\n }\n\n private getPathInfo<TChild>(lambdaPath: LambdaPath<T, TChild>): Nullable<PathInfo<TChild>> {\n const path = this.tokens.getOrAdd(lambdaPath);\n\n let data: any = this.data;\n for (const part of path) {\n if (isNullable(data)) {\n return null;\n }\n data = data[part];\n }\n\n return { data, path: [...this.path, ...path] };\n }\n}\n\nconst isValidationInfo = (argument: unknown): argument is ValidationInfo =>\n typeof argument === 'object' && Object.prototype.hasOwnProperty.call(argument, 'message');\n","/* eslint-disable no-useless-constructor */\nimport { ValidationInfo } from '../ValidationWrapper';\nimport { ExtractItem, Nullable } from '../../typings/Types';\n\nimport { ValidationNode } from './Types';\nimport { LambdaPath, PathTokensCache } from './PathHelper';\n\nexport class ValidationReader<T> {\n constructor(private readonly node: Nullable<ValidationNode<T>>, private readonly tokens: PathTokensCache) {}\n\n public getNode<TChild>(lambdaPath: LambdaPath<T, TChild>): ValidationReader<TChild> {\n const path = this.tokens.getOrAdd(lambdaPath);\n return this.getReaderInternal<TChild>(path);\n }\n\n public getNodeByIndex(index: number): ValidationReader<ExtractItem<T>> {\n return this.getReaderInternal<ExtractItem<T>>([index.toString()]);\n }\n\n public getNodeByKey<TKey extends keyof T>(key: TKey): ValidationReader<T[TKey]> {\n return this.getReaderInternal<T[TKey]>([key.toString()]);\n }\n\n public get(): Nullable<ValidationInfo> {\n return this.node ? this.node.validation : null;\n }\n\n private getReaderInternal<TChild>(path: string[]): ValidationReader<TChild> {\n const node = this.getNodeInternal<TChild>(path);\n return new ValidationReader<TChild>(node, this.tokens);\n }\n\n private getNodeInternal<TChild>(path: string[]): Nullable<ValidationNode<TChild>> {\n let current: Nullable<ValidationNode<any>> = this.node;\n for (const part of path) {\n if (!current || !current.children) {\n return null;\n }\n current = current.children[part];\n }\n return current;\n }\n}\n","import { ValidationInfo } from '../ValidationWrapper';\n\nimport { ValidationNode } from './Types';\nimport { ValidationReader } from './ValidationReader';\nimport { PathTokensCache } from './PathHelper';\n\nexport class ValidationWriter<T> {\n private readonly node: ValidationNode<T>;\n\n constructor(node?: ValidationNode<T>) {\n this.node = node || { validation: null, children: null };\n }\n\n public getReader(tokens: PathTokensCache): ValidationReader<T> {\n return new ValidationReader(this.node, tokens);\n }\n\n public set(validation: ValidationInfo): void {\n this.node.validation = validation;\n }\n\n public isValidated(): boolean {\n return !!this.node.validation;\n }\n\n public getNode<TChild>(path: string[]): ValidationWriter<TChild> {\n const node = this.getNodeInternal<TChild>(path);\n return new ValidationWriter<TChild>(node);\n }\n\n private getNodeInternal<TChild>(path: string[]): ValidationNode<TChild> {\n let node: ValidationNode<any> = this.node;\n for (const part of path) {\n if (!node.children) {\n node.children = {};\n }\n if (!node.children[part]) {\n node.children[part] = {\n validation: null,\n children: null,\n };\n }\n node = node.children[part];\n }\n return node;\n }\n}\n","const classicFunctionRegEx =\n /^\\s*function\\s*\\(\\s*([A-Za-z0-9_]+)\\s*\\)\\s*\\{\\s*(?:(?:\"use strict\"|'use strict');?)?\\s*return\\s+\\1\\s*([.[].*?)?\\s*;?\\s*\\}\\s*$/;\nconst arrowFunctionRegEx = /^\\s*\\(?\\s*([A-Za-z0-9_]+)\\s*\\)?\\s*=>\\s*\\1\\s*([.[].*?)?\\s*$/;\n\ntype NonNullableRecursive<T> = {\n [K in keyof T]: T[K] extends Record<string, unknown> ? NonNullable<NonNullableRecursive<T[K]>> : NonNullable<T[K]>;\n};\n\nexport type LambdaPath<T, TChild> = (x: NonNullable<NonNullableRecursive<T>>) => TChild;\n\nexport function extractPath(lambda: string): string {\n const match = classicFunctionRegEx.exec(lambda) || arrowFunctionRegEx.exec(lambda);\n if (match && match.length === 3) {\n return (match[2] || '').replace(/(^\\.\\s*)/g, '');\n }\n throw new Error(`Not supported or invalid path: <${lambda}>`);\n}\n\nexport function extractTokens(path: string): string[] {\n return path.split(/[\\s.[\\]]+/g).filter((x) => x);\n}\n\nexport class PathTokensCache {\n private readonly cache = new Map<string, string[]>();\n\n public getOrAdd<T, TChild>(lambdaPath: LambdaPath<T, TChild>): string[] {\n const lambdaString = lambdaPath.toString();\n\n if (!this.cache.has(lambdaString)) {\n const path = extractPath(lambdaString);\n const tokens = extractTokens(path);\n this.cache.set(lambdaString, tokens);\n }\n\n return this.cache.get(lambdaString) as string[];\n }\n\n public has<T, TChild>(lambdaPath: LambdaPath<T, TChild>): boolean {\n const lambdaString = lambdaPath.toString();\n return this.cache.has(lambdaString);\n }\n\n public get size(): number {\n return this.cache.size;\n }\n}\n","import { ValidationBuilder } from './ValidationBuilder';\nimport { ValidationWriter } from './ValidationWriter';\nimport { RootValidationRule, ValidationRule, ItemValidationRule } from './Types';\nimport { ValidationReader } from './ValidationReader';\nimport { PathTokensCache } from './PathHelper';\n\nfunction validate<T>(data: T, validationRule: RootValidationRule<T>, tokens: PathTokensCache): ValidationReader<T> {\n const validationWriter = new ValidationWriter<T>();\n const builder = new ValidationBuilder<T, T>(validationWriter, tokens, [], data);\n validationRule(builder, data);\n return validationWriter.getReader(tokens);\n}\n\nexport type Validator<T> = (value: T) => ValidationReader<T>;\n\nexport function createValidator<T>(rule: RootValidationRule<T>): Validator<T> {\n const tokens = new PathTokensCache();\n return (value: T): ValidationReader<T> => {\n return validate(value, rule, tokens);\n };\n}\n\nexport { ValidationReader, ValidationBuilder, RootValidationRule, ValidationRule, ItemValidationRule };\n"],"names":["React","warning"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/utils/isNonNullable/isNonNullable.ts","../../src/ReactUiDetection.ts","../../src/ValidationTooltip.tsx","../../src/ErrorRenderer.tsx","../../src/utils/createPropsGetter.ts","../../src/utils/utils.ts","../../src/utils/isNullable/isNullable.ts","../../src/ValidationHelper.ts","../../src/ValidationContextWrapper.tsx","../../src/ValidationContainer.tsx","../../src/utils/getRootNode/getRootNode.ts","../../src/smoothScrollIntoView.ts","../../src/ValidationWrapperInternal.tsx","../../src/ValidationWrapper.tsx","../../src/Validations/ValidationBuilder.ts","../../src/Validations/ValidationReader.ts","../../src/Validations/ValidationWriter.ts","../../src/Validations/PathHelper.ts","../../src/Validations/index.ts"],"sourcesContent":["/**\n * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента\n *\n * @param value Значение, которое нужно проверить и исключить из него типы\n * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false\n */\nexport const isNonNullable = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n","import { isNonNullable } from '../src/utils/isNonNullable';\n\ndeclare function require(name: string): any;\n\nconst defaultOrNamed = (module: any, component: string) =>\n module && module.__esModule && module.default ? module.default : module[component];\n\nconst Tooltip = defaultOrNamed(require('__REACT_UI_PACKAGE__/components/Tooltip'), 'Tooltip');\n\nexport { Tooltip };\n\nexport class ReactUiDetection {\n public static isDatePicker(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'DatePicker';\n }\n\n public static isRadioGroup(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'RadioGroup';\n }\n\n public static isTokenInput(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'TokenInput';\n }\n\n public static isSwitcher(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'Switcher';\n }\n public static isComboBox(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'ComboBox';\n }\n}\n","import React from 'react';\n\nimport { ReactUiDetection, Tooltip } from './ReactUiDetection';\n\nexport type TooltipPosition =\n | 'top left'\n | 'top center'\n | 'top right'\n | 'bottom left'\n | 'bottom center'\n | 'bottom right'\n | 'left top'\n | 'left middle'\n | 'left bottom'\n | 'right top'\n | 'right middle'\n | 'right bottom';\n\nexport interface ValidationTooltipProps {\n children: React.ReactElement<any>;\n error: boolean;\n pos?: TooltipPosition;\n render?: () => React.ReactNode;\n}\n\nexport class ValidationTooltip extends React.Component<ValidationTooltipProps> {\n public render() {\n const onlyChild = React.Children.only(this.props.children);\n const child = onlyChild && onlyChild.props ? onlyChild.props.children : null;\n if (\n ReactUiDetection.isRadioGroup(child) ||\n ReactUiDetection.isTokenInput(child) ||\n ReactUiDetection.isSwitcher(child)\n ) {\n return (\n <Tooltip\n useWrapper={false}\n pos={this.props.pos}\n render={this.props.error && this.props.render}\n trigger={'hover&focus'}\n >\n {child}\n </Tooltip>\n );\n }\n return (\n <Tooltip pos={this.props.pos} render={this.props.error && this.props.render} trigger={'hover&focus'}>\n {this.props.children}\n </Tooltip>\n );\n }\n}\n","/* eslint-disable react/display-name */\nimport React from 'react';\n\nimport { TooltipPosition, ValidationTooltip } from './ValidationTooltip';\nimport { RenderErrorMessage } from './ValidationWrapperInternal';\n\nexport function tooltip(pos: TooltipPosition): RenderErrorMessage {\n return (control, hasError, validation) => {\n return (\n <ValidationTooltip\n pos={pos}\n error={hasError}\n render={() => {\n if (!validation || !validation.message) {\n return null;\n }\n return (validation && validation.message) || '';\n }}\n >\n {control}\n </ValidationTooltip>\n );\n };\n}\n\nexport function text(pos: 'bottom' | 'right' = 'right'): RenderErrorMessage {\n if (pos === 'right') {\n return (control, _hasError, validation) => {\n return (\n <span style={{ display: 'inline-block' }}>\n {control}\n <span data-validation-message=\"text\" style={{ marginLeft: '10px', color: '#d43517' }}>\n {(validation && validation.message) || ''}\n </span>\n </span>\n );\n };\n }\n return (control, _hasError, validation) => {\n return (\n <span style={{ position: 'relative', display: 'inline-block' }}>\n {control}\n <span style={{ position: 'absolute', bottom: 0, left: 0, height: 0 }}>\n <span\n data-validation-message=\"text\"\n style={{\n color: '#d43517',\n overflow: 'visible',\n whiteSpace: 'nowrap',\n position: 'absolute',\n top: '2px',\n left: 0,\n }}\n >\n {(validation && validation.message) || ''}\n </span>\n </span>\n </span>\n );\n };\n}\n","import React from 'react';\n\nexport type DefaultizedProps<P, DP> = P & DP;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function createPropsGetter<DP extends unknown>(defaultProps: DP) {\n return function <P, T extends React.Component<P>>(this: T) {\n return this.props as DefaultizedProps<T['props'], DP>;\n };\n}\n","const env: NodeJS.ProcessEnv = (typeof process === 'object' && process && process.env) || {};\nconst { enableReactTesting, NODE_ENV, REACT_UI_TEST, REACT_APP_REACT_UI_TEST, STORYBOOK_REACT_UI_TEST } = env;\n\nconst isReactUITestEnv =\n Boolean(REACT_UI_TEST) || // for cases when NODE_ENV is not usable (dev/prod)\n Boolean(REACT_APP_REACT_UI_TEST) || // for usage with CRA\n Boolean(STORYBOOK_REACT_UI_TEST) || // for usage with storybook\n Boolean(enableReactTesting); // deprecated, legacy variable\n\nexport const isTestEnv = NODE_ENV === 'test' || isReactUITestEnv;\n\nexport const isBrowser = typeof window !== 'undefined';\n\nexport const canUseDOM = isBrowser && window.document && window.document.createElement;\n\nexport function isElement(el: unknown): el is Element {\n if (isBrowser) {\n return el instanceof Element;\n }\n\n return false;\n}\n\nexport function isNode(node: unknown): node is Node {\n if (isBrowser) {\n return node instanceof Node;\n }\n\n return false;\n}\n","/**\n * Checks if the value `null` or `undefined`.\n *\n * @param value Value to check for `null` and `undefined`.\n * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.\n */\n// @ts-expect-error: TypeScript doesn't consider the check inside of the function.\nexport const isNullable = <T>(value: T): value is null | undefined => {\n return value === null || value === undefined;\n};\n","import { Nullable } from '../typings/Types';\n\nimport { Validation, ValidationBehaviour, ValidationLevel } from './ValidationWrapperInternal';\n\nexport function getVisibleValidation(\n visible: Nullable<Validation>,\n actual: Nullable<Validation>,\n changing: boolean,\n): Nullable<Validation> {\n const from = (type?: Nullable<ValidationBehaviour>): boolean => getType(visible) === type;\n const to = (type?: Nullable<ValidationBehaviour>): boolean => getType(actual) === type;\n\n if (to('immediate')) {\n return actual;\n }\n\n if (changing) {\n return from('immediate') ? null : visible;\n }\n\n if (from(null) && to('lostfocus')) {\n return null;\n }\n\n if (to('lostfocus')) {\n return actual;\n }\n\n if (from('submit') && to('submit')) {\n return visible;\n }\n\n return null;\n}\n\nexport function getType(validation: Nullable<Validation>): Nullable<ValidationBehaviour> {\n return validation ? validation.behaviour : null;\n}\n\nexport function getLevel(validation: Nullable<Validation>): Nullable<ValidationLevel> {\n return validation ? validation.level : null;\n}\n\nexport function getIndependent(validation: Nullable<Validation>): Nullable<boolean> {\n return validation ? validation.independent : null;\n}\n\nexport function isEqual(a: Nullable<Validation>, b: Nullable<Validation>): boolean {\n if (a === b) {\n return true;\n }\n return !!a && !!b && a.behaviour === b.behaviour && a.message === b.message && a.independent === b.independent;\n}\n","import React from 'react';\n\nimport { Nullable } from '../typings/Types';\n\nimport { Validation, ValidationWrapperInternal } from './ValidationWrapperInternal';\nimport { ScrollOffset } from './ValidationContainer';\nimport { isNullable } from './utils/isNullable';\nimport { isEqual } from './ValidationHelper';\n\nexport interface ValidationContextSettings {\n scrollOffset: ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextWrapperProps {\n children?: React.ReactNode;\n onValidationUpdated?: (isValid?: boolean) => void;\n scrollOffset?: number | ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextType {\n register: (wrapper: ValidationWrapperInternal) => void;\n unregister: (wrapper: ValidationWrapperInternal) => void;\n instanceProcessBlur: (wrapper: ValidationWrapperInternal) => void;\n onValidationUpdated: (wrapper: ValidationWrapperInternal, isValid: boolean) => void;\n getSettings: () => ValidationContextSettings;\n isAnyWrapperInChangingMode: () => boolean;\n}\n\nexport const ValidationContext = React.createContext<ValidationContextType>({\n register: () => undefined,\n unregister: () => undefined,\n instanceProcessBlur: () => undefined,\n onValidationUpdated: () => undefined,\n getSettings: () => ({\n scrollOffset: {},\n disableSmoothScroll: false,\n }),\n isAnyWrapperInChangingMode: () => false,\n});\n\nValidationContext.displayName = 'ValidationContext';\n\nexport class ValidationContextWrapper extends React.Component<ValidationContextWrapperProps> {\n public childWrappers: ValidationWrapperInternal[] = [];\n private previousValidation: Array<Nullable<Validation>> = [];\n\n public getSettings(): ValidationContextSettings {\n let scrollOffset: ScrollOffset = {};\n\n if (typeof this.props.scrollOffset === 'number') {\n scrollOffset = { top: this.props.scrollOffset };\n } else {\n scrollOffset = isNullable(this.props.scrollOffset) ? {} : this.props.scrollOffset;\n }\n\n const { top = 50, bottom = 0 } = scrollOffset;\n return {\n scrollOffset: {\n top,\n bottom,\n },\n disableSmoothScroll: this.props.disableSmoothScroll,\n };\n }\n\n public register(wrapper: ValidationWrapperInternal) {\n this.childWrappers.push(wrapper);\n }\n\n public unregister(wrapper: ValidationWrapperInternal) {\n this.childWrappers.splice(this.childWrappers.indexOf(wrapper), 1);\n this.onValidationRemoved();\n }\n\n public instanceProcessBlur(instance: ValidationWrapperInternal) {\n for (const wrapper of this.childWrappers.filter((x) => x !== instance && !x.isIndependent())) {\n wrapper.processBlur();\n }\n }\n\n public onValidationUpdated(wrapper: ValidationWrapperInternal, isValid?: boolean) {\n const { onValidationUpdated } = this.props;\n if (onValidationUpdated) {\n const isValidResult = !this.childWrappers.find((x) => {\n if (x === wrapper) {\n return !isValid;\n }\n return x.hasError();\n });\n onValidationUpdated(isValidResult);\n }\n }\n\n public isAnyWrapperInChangingMode(): boolean {\n return this.childWrappers.some((x) => x.isChanging);\n }\n\n public onValidationRemoved() {\n const { onValidationUpdated } = this.props;\n if (onValidationUpdated) {\n const isValidResult = !this.childWrappers.find((x) => x.hasError());\n onValidationUpdated(isValidResult);\n }\n }\n\n public getChildWrappersSortedByPosition(): ValidationWrapperInternal[] {\n const wrappersWithPosition = [...this.childWrappers].map((x) => ({\n target: x,\n position: x.getControlPosition(),\n }));\n wrappersWithPosition.sort((x, y) => {\n const xPosition = x.position;\n const yPosition = y.position;\n if (isNullable(xPosition) && isNullable(yPosition)) {\n return 0;\n }\n\n if (isNullable(xPosition)) {\n return 1;\n }\n if (isNullable(yPosition)) {\n return -1;\n }\n if (Math.sign(xPosition.x - yPosition.x) !== 0) {\n return Math.sign(xPosition.x - yPosition.x);\n }\n return Math.sign(xPosition.y - yPosition.y);\n });\n return wrappersWithPosition.map((x) => x.target);\n }\n\n public async validate(withoutFocus: boolean): Promise<boolean> {\n const currentValidation = this.childWrappers.map((x) => x.props.validation);\n const validationHasNotChanged = this.validationsArraysEqual(this.previousValidation, currentValidation);\n\n await Promise.all(this.childWrappers.map((x) => x.processSubmit()));\n\n const firstInvalid = this.getChildWrappersSortedByPosition().find((x) => {\n const hasWarning = x.hasWarning();\n const hasError = x.hasError();\n if (validationHasNotChanged && hasWarning && !hasError) {\n return false;\n }\n return hasError || hasWarning;\n });\n if (firstInvalid) {\n if (!withoutFocus) {\n firstInvalid.focus();\n }\n }\n\n if (this.props.onValidationUpdated) {\n this.props.onValidationUpdated(!firstInvalid);\n }\n\n this.previousValidation = currentValidation;\n return !firstInvalid;\n }\n\n public render() {\n return (\n <ValidationContext.Provider value={this}>\n <span>{this.props.children}</span>\n </ValidationContext.Provider>\n );\n }\n\n private validationsArraysEqual = (a1: Array<Nullable<Validation>>, a2: Array<Nullable<Validation>>): boolean =>\n a1.length === a2.length && a1.every((o, idx) => isEqual(o, a2[idx]));\n}\n","import React from 'react';\n\nimport { Nullable } from '../typings/Types';\n\nimport { createPropsGetter } from './utils/createPropsGetter';\nimport { isTestEnv } from './utils/utils';\nimport { ValidationContextWrapper } from './ValidationContextWrapper';\n\nexport interface ScrollOffset {\n top?: number;\n bottom?: number;\n}\n\nexport interface ValidationContainerProps {\n children?: React.ReactNode;\n onValidationUpdated?: (isValid?: Nullable<boolean>) => void;\n scrollOffset?: number | ScrollOffset;\n disableSmoothScroll?: boolean;\n}\n\ntype DefaultProps = Required<Pick<ValidationContainerProps, 'disableSmoothScroll'>>;\n\nexport class ValidationContainer extends React.Component<ValidationContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationContainer';\n\n public static defaultProps: DefaultProps = {\n disableSmoothScroll: isTestEnv,\n };\n\n private getProps = createPropsGetter(ValidationContainer.defaultProps);\n\n public static propTypes = {\n scrollOffset(props: ValidationContainerProps, propName: keyof ValidationContainerProps, componentName: string) {\n const { scrollOffset } = props;\n if (typeof scrollOffset === 'number') {\n return new Error(\n `[${componentName}]: scrollOffset as a number type has been deprecated, now use object { top?: number; bottom?: number; }`,\n );\n }\n },\n };\n\n private childContext: ValidationContextWrapper | null = null;\n\n public async submit(withoutFocus = false): Promise<void> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n await this.childContext.validate(withoutFocus);\n }\n\n public validate(withoutFocus = false): Promise<boolean> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n return this.childContext.validate(withoutFocus);\n }\n\n public render() {\n return (\n <ValidationContextWrapper\n ref={this.refChildContext}\n scrollOffset={this.props.scrollOffset}\n disableSmoothScroll={this.getProps().disableSmoothScroll}\n onValidationUpdated={this.props.onValidationUpdated}\n >\n {this.props.children}\n </ValidationContextWrapper>\n );\n }\n\n private refChildContext = (el: ValidationContextWrapper | null) => (this.childContext = el);\n}\n","/* eslint-disable react/no-find-dom-node */\nimport { findDOMNode } from 'react-dom';\nimport React from 'react';\n\nimport { Nullable } from '../../../typings/Types';\nimport { isElement, isNode, canUseDOM } from '../utils';\n\ninterface InstanceWithRootNode {\n getRootNode: () => Nullable<HTMLElement>;\n}\n\nconst isInstanceWithRootNode = (instance: unknown): instance is InstanceWithRootNode => {\n return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');\n};\n\n/**\n * Temporary duplicates @skbkontur/react-ui/lib/rootNode/getRootNode.ts\n * */\n\nexport const getRootNode = (instance: Nullable<React.ReactInstance>): Nullable<Element> => {\n if (!canUseDOM || !instance) {\n // instance can be `null` if component was unmounted\n // also checking undefined for convinient usage\n return null;\n }\n\n if (isElement(instance)) {\n // instance can be a `Element` already if comming\n // from Refs of intrinsic elements (<div />, <button />, etc.)\n return instance;\n }\n\n let rootNode;\n\n if (isInstanceWithRootNode(instance)) {\n // it happened to be that native Node interface also has\n // the \"getRootNode\" method, but we can ignore it here\n // because we'd already checked the instance on being an `Element`\n // which is a subclass of Node, so, just fixing types here\n if (!isNode(instance)) {\n rootNode = instance.getRootNode();\n }\n }\n\n if (rootNode !== undefined) {\n // at this point, it is rather `Element` (what we are looking for)\n // or null (which is also OK, e.g. Popup/Tooltip/Hint before opening), so, just return it\n return rootNode;\n }\n\n // node is undefined, which means that the instance's root node getter doesn't exists or returns the undefined\n // anyway, it tell us that the convention is not respected (by the component itself or its children),\n // so, we have to fall back to the deprecated findDOMNode, which always works but breaks StrictMode\n rootNode = findDOMNode(instance);\n\n // the findDOMNode can also return Text, but we are only intrested in HTMLElements, so just filter it\n return isElement(rootNode) ? rootNode : null;\n};\n","import { Nullable, Omit } from '../typings/Types';\n\nimport { ScrollOffset } from './ValidationContainer';\nimport { isBrowser } from './utils/utils';\nimport { isNullable } from './utils/isNullable';\n\nexport async function smoothScrollIntoView(element: HTMLElement, scrollOffset: ScrollOffset): Promise<void> {\n const scrollableParent = findScrollableParent(element);\n const parentRects = scrollableParent.getBoundingClientRect();\n const clientRects = element.getBoundingClientRect();\n\n const topOffset = scrollOffset.top || 0;\n const bottomOffset = scrollOffset.bottom || 0;\n\n if (scrollableParent === document.body) {\n const html = document.documentElement || { clientHeight: 0, clientWidth: 0 };\n const viewportHeight = window.innerHeight || html.clientHeight;\n const viewportWidth = window.innerWidth || html.clientWidth;\n\n const isElementInViewport =\n clientRects.top >= topOffset &&\n clientRects.left >= 0 &&\n clientRects.bottom <= viewportHeight - bottomOffset &&\n clientRects.right <= viewportWidth;\n\n if (isElementInViewport) {\n return;\n }\n\n await scrollBy({\n left: clientRects.left,\n top: clientRects.top - topOffset,\n });\n } else {\n if (clientRects.top - topOffset + 50 > parentRects.top && clientRects.bottom < parentRects.bottom) {\n return;\n }\n\n await smoothScroll(\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top - topOffset,\n );\n await scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n });\n }\n}\n\nfunction smoothScroll(element: HTMLElement, x: number, y: number): Promise<void> {\n let context: Omit<StepContent, 'resolve'>;\n if (element === getDocumentBodyStrict()) {\n context = {\n scrollable: window as any as HTMLElement,\n startX: window.scrollX || window.pageXOffset,\n startY: window.scrollY || window.pageYOffset,\n method: scrollWindow,\n startTime: now(),\n x,\n y,\n };\n } else {\n context = {\n scrollable: element,\n startX: element.scrollLeft,\n startY: element.scrollTop,\n method: scrollElement,\n startTime: now(),\n x,\n y,\n };\n }\n\n return new Promise((resolve) => step({ ...context, resolve }));\n}\n\ninterface StepContent {\n scrollable: HTMLElement;\n startTime: number;\n startX: number;\n startY: number;\n x: number;\n y: number;\n method: (element: Element, x: number, y: number) => void;\n resolve: () => void;\n}\n\nfunction step(context: StepContent) {\n const time = now();\n const elapsed = Math.min(1, (time - context.startTime) / ScrollTime);\n const value = ease(elapsed);\n\n const currentX = context.startX + (context.x - context.startX) * value;\n const currentY = context.startY + (context.y - context.startY) * value;\n\n context.method(context.scrollable, currentX, currentY);\n\n if (currentX !== context.x || currentY !== context.y) {\n window.requestAnimationFrame(() => step(context));\n } else {\n context.resolve();\n }\n}\n\nconst ScrollTime = 468;\n\nconst getScrollWindow = (isBrowser: boolean) => {\n if (isBrowser) {\n if (typeof window.scroll === 'function') {\n return (_: any, x: any, y: any) => window.scroll(x, y);\n }\n\n return (_: any, x: any, y: any) => window.scrollTo(x, y);\n }\n\n return () => undefined;\n};\n\nconst scrollWindow = getScrollWindow(isBrowser);\n\nconst now =\n isBrowser && window.performance && window.performance.now\n ? window.performance.now.bind(window.performance)\n : Date.now;\n\nfunction scrollElement(element: Element, x: number, y: number) {\n element.scrollLeft = x;\n element.scrollTop = y;\n}\n\nfunction ease(time: number): number {\n return 0.5 * (1 - Math.cos(Math.PI * time));\n}\n\nfunction getDocumentBodyStrict(): HTMLElement {\n if (isNullable(document.body)) {\n throw new Error('Scrolling can be used only in browser');\n }\n\n return document.body;\n}\n\nfunction findScrollableParent(el: HTMLElement): HTMLElement {\n let isBody: Nullable<boolean>;\n let hasScrollableSpace: Nullable<boolean>;\n let hasVisibleOverflow: Nullable<boolean>;\n let currentElement: HTMLElement = el;\n do {\n if (isNullable(currentElement.parentElement) || !(currentElement.parentElement instanceof HTMLElement)) {\n return getDocumentBodyStrict();\n }\n currentElement = currentElement.parentElement;\n isBody = currentElement === document.body;\n hasScrollableSpace =\n currentElement.clientHeight < currentElement.scrollHeight ||\n currentElement.clientWidth < currentElement.scrollWidth;\n hasVisibleOverflow = window.getComputedStyle(currentElement, null).overflow === 'visible';\n } while (!isBody && !(hasScrollableSpace && !hasVisibleOverflow));\n\n isBody = null;\n hasScrollableSpace = null;\n hasVisibleOverflow = null;\n\n return currentElement;\n}\n\nfunction scrollBy({ left, top }: { left: number; top: number }): Promise<void> {\n return smoothScroll(\n getDocumentBodyStrict(),\n Math.floor(left) + (window.scrollX || window.pageXOffset),\n Math.floor(top) + (window.scrollY || window.pageYOffset),\n );\n}\n","import React, { ReactInstance } from 'react';\nimport warning from 'warning';\n\nimport { Nullable } from '../typings/Types';\n\nimport { getRootNode } from './utils/getRootNode';\nimport { isBrowser } from './utils/utils';\nimport { smoothScrollIntoView } from './smoothScrollIntoView';\nimport { getIndependent, getLevel, getType, getVisibleValidation, isEqual } from './ValidationHelper';\nimport { ReactUiDetection } from './ReactUiDetection';\nimport { ValidationContext, ValidationContextType } from './ValidationContextWrapper';\n\nif (isBrowser && typeof HTMLElement === 'undefined') {\n const w = window as any;\n w.HTMLElement = w.Element;\n}\n\nexport type ValidationBehaviour = 'immediate' | 'lostfocus' | 'submit';\n\nexport type ValidationLevel = 'error' | 'warning';\n\nexport interface Validation {\n level: ValidationLevel;\n behaviour: ValidationBehaviour;\n message: React.ReactNode;\n independent: boolean;\n}\n\nexport type RenderErrorMessage = (\n control: React.ReactElement<any>,\n hasError: boolean,\n validation: Nullable<Validation>,\n) => React.ReactElement<any>;\n\nexport interface ValidationWrapperInternalProps {\n children?: React.ReactElement<any>;\n validation: Nullable<Validation>;\n errorMessage: RenderErrorMessage;\n}\n\ninterface ValidationWrapperInternalState {\n validation: Nullable<Validation>;\n}\n\ninterface Point {\n x: number;\n y: number;\n}\n\nexport class ValidationWrapperInternal extends React.Component<\n ValidationWrapperInternalProps,\n ValidationWrapperInternalState\n> {\n public state: ValidationWrapperInternalState = {\n validation: null,\n };\n\n public isChanging = false;\n private child: any; // todo type\n private rootNode: Nullable<Element>;\n\n public static contextType = ValidationContext;\n public context: ValidationContextType = this.context;\n\n public componentDidMount() {\n warning(\n this.context,\n 'ValidationWrapper should appears as child of ValidationContainer.\\n' +\n 'https://tech.skbkontur.ru/react-ui-validations/#/getting-started',\n );\n if (this.context) {\n this.context.register(this);\n }\n this.applyValidation(this.props.validation);\n }\n\n public componentWillUnmount() {\n this.context.unregister(this);\n }\n\n public componentDidUpdate() {\n this.applyValidation(this.props.validation);\n }\n\n public async focus(): Promise<void> {\n const htmlElement = this.getRootNode();\n if (htmlElement instanceof HTMLElement) {\n const { disableSmoothScroll, scrollOffset } = this.context.getSettings();\n if (!disableSmoothScroll) {\n await smoothScrollIntoView(htmlElement, scrollOffset);\n }\n if (this.child && typeof this.child.focus === 'function') {\n this.child.focus();\n }\n }\n this.isChanging = false;\n }\n\n public render() {\n const { children } = this.props;\n const { validation } = this.state;\n\n let clonedChild: React.ReactElement<any> = children ? (\n React.cloneElement(children, {\n ref: this.customRef,\n error: !this.isChanging && getLevel(validation) === 'error',\n warning: !this.isChanging && getLevel(validation) === 'warning',\n onBlur: (...args: any[]) => {\n this.handleBlur();\n if (children.props && children.props.onBlur) {\n children.props.onBlur(...args);\n }\n },\n onChange: (...args: any[]) => {\n this.isChanging = true;\n if (children.props && children.props.onChange) {\n children.props.onChange(...args);\n }\n },\n onValueChange: (...args: any[]) => {\n this.isChanging = true;\n if (children.props && children.props.onValueChange) {\n children.props.onValueChange(...args);\n }\n },\n })\n ) : (\n <span ref={this.setRootNode} />\n );\n if (ReactUiDetection.isComboBox(clonedChild)) {\n clonedChild = React.cloneElement(clonedChild, {\n onInputValueChange: (...args: any[]) => {\n this.isChanging = true;\n this.forceUpdate();\n if (children && children.props && children.props.onInputValueChange) {\n children.props.onInputValueChange(...args);\n }\n },\n });\n }\n return this.props.errorMessage(<span>{clonedChild}</span>, !!validation, validation);\n }\n\n private customRef = (instance: Nullable<ReactInstance>) => {\n const { children } = this.props;\n\n this.setRootNode(instance);\n const child = children as any; // todo type or maybe React.Children.only\n if (child && child.ref) {\n if (typeof child.ref === 'function') {\n child.ref(instance);\n }\n if (Object.prototype.hasOwnProperty.call(child.ref, 'current')) {\n child.ref.current = instance;\n }\n }\n this.child = instance;\n };\n\n private setRootNode = (element: Nullable<ReactInstance>) => {\n this.rootNode = getRootNode(element);\n };\n\n public getRootNode = () => {\n return this.rootNode;\n };\n\n public getControlPosition(): Nullable<Point> {\n const htmlElement = this.getRootNode();\n if (htmlElement instanceof HTMLElement) {\n const rect = htmlElement.getBoundingClientRect();\n return { x: rect.top, y: rect.left };\n }\n return null;\n }\n\n public processBlur() {\n const touched = this.isChanging;\n this.isChanging = false;\n const validation = this.getOnBlurValidation(touched);\n return this.setValidation(validation);\n }\n\n public async processSubmit(): Promise<void> {\n this.isChanging = false;\n return this.setValidation(this.props.validation);\n }\n\n public hasError(): boolean {\n return getLevel(this.state.validation) === 'error';\n }\n\n public hasWarning(): boolean {\n return getLevel(this.state.validation) === 'warning';\n }\n\n public isIndependent(): boolean {\n return getIndependent(this.state.validation || this.props.validation) === true;\n }\n\n private handleBlur() {\n setTimeout(() => {\n this.processBlur();\n if (!this.isIndependent()) {\n this.context.instanceProcessBlur(this);\n }\n this.setState({});\n });\n }\n\n private applyValidation(actual: Nullable<Validation>) {\n const visible = this.getVisibleValidation(actual);\n this.setValidation(visible);\n }\n\n private setValidation(validation: Nullable<Validation>): Promise<void> {\n const current = this.state.validation;\n\n if (current === validation) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n this.setState({ validation }, resolve);\n if (Boolean(current) !== Boolean(validation)) {\n this.context.onValidationUpdated(this, !validation);\n }\n });\n }\n\n private getOnBlurValidation(touched: boolean): Nullable<Validation> {\n const actual = this.props.validation;\n if (getType(actual) === 'submit') {\n const visible = this.state.validation;\n return !touched && getType(visible) === 'submit' ? visible : null;\n }\n return actual;\n }\n\n private getVisibleValidation(actual: Nullable<Validation>): Nullable<Validation> {\n const visible = this.state.validation;\n if (isEqual(visible, actual)) {\n return visible;\n }\n const changing = this.context.isAnyWrapperInChangingMode();\n return getVisibleValidation(visible, actual, changing);\n }\n}\n","import React from 'react';\n\nimport { Nullable } from '../typings/Types';\n\nimport { tooltip } from './ErrorRenderer';\nimport {\n RenderErrorMessage,\n Validation,\n ValidationBehaviour,\n ValidationLevel,\n ValidationWrapperInternal,\n} from './ValidationWrapperInternal';\n\nexport interface ValidationInfo {\n type?: Nullable<ValidationBehaviour>;\n level?: Nullable<ValidationLevel>;\n message: React.ReactNode;\n independent?: boolean;\n}\n\nexport interface ValidationWrapperProps {\n children?: React.ReactElement<any>;\n validationInfo: Nullable<ValidationInfo>;\n renderMessage?: Nullable<RenderErrorMessage>;\n}\n\nexport class ValidationWrapper extends React.Component<ValidationWrapperProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationWrapper';\n\n public render() {\n const { children, validationInfo, renderMessage } = this.props;\n const validation: Nullable<Validation> = validationInfo\n ? {\n level: validationInfo.level || 'error',\n behaviour: validationInfo.type || 'lostfocus',\n message: validationInfo.message,\n independent: validationInfo.independent || false,\n }\n : null;\n return (\n <ValidationWrapperInternal errorMessage={renderMessage || tooltip('right top')} validation={validation}>\n {children}\n </ValidationWrapperInternal>\n );\n }\n}\n","import React from 'react';\n\nimport { Nullable } from '../../typings/Types';\nimport { ValidationBehaviour, ValidationLevel } from '../ValidationWrapperInternal';\nimport { ValidationInfo } from '../ValidationWrapper';\nimport { isNullable } from '../utils/isNullable';\n\nimport { LambdaPath, PathTokensCache } from './PathHelper';\nimport { ValidationWriter } from './ValidationWriter';\nimport { ItemValidationRule, ValidationRule } from './Types';\n\ninterface PathInfo<T> {\n data: T;\n path: string[];\n}\n\nexport class ValidationBuilder<TRoot, T> {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private readonly writer: ValidationWriter<TRoot>,\n private readonly tokens: PathTokensCache,\n private readonly path: string[],\n private readonly data: T,\n ) {}\n\n public prop<TChild>(lambdaPath: LambdaPath<T, TChild>, rule: ValidationRule<TRoot, TChild>): void {\n const info = this.getPathInfo(lambdaPath);\n if (isNullable(info)) {\n return;\n }\n\n const builder = new ValidationBuilder<TRoot, TChild>(this.writer, this.tokens, info.path, info.data);\n rule(builder, builder.data);\n }\n\n public array<TChild>(lambdaPath: LambdaPath<T, TChild[]>, rule: ItemValidationRule<TRoot, TChild>): void {\n const info = this.getPathInfo(lambdaPath);\n if (isNullable(info) || !Array.isArray(info.data)) {\n return;\n }\n\n const array = info.data;\n for (let i = 0; i < array.length; ++i) {\n const path = [...info.path, i.toString()];\n const builder = new ValidationBuilder<TRoot, TChild>(this.writer, this.tokens, path, array[i]);\n rule(builder, builder.data, i, array);\n }\n }\n\n public invalid(isInvalid: (value: T) => boolean, validationInfo: ValidationInfo): void;\n public invalid(\n isInvalid: (value: T) => boolean,\n message: React.ReactNode,\n type?: ValidationBehaviour,\n level?: ValidationLevel,\n independent?: boolean,\n ): void;\n\n public invalid(\n isInvalid: (value: T) => boolean,\n messageOrValidationInfo: React.ReactNode | ValidationInfo,\n type?: ValidationBehaviour,\n level?: ValidationLevel,\n independent?: boolean,\n ) {\n const validationWriter = this.writer.getNode<T>(this.path);\n if (validationWriter.isValidated()) {\n return;\n }\n\n const invalid = isInvalid(this.data);\n if (!invalid) {\n return;\n }\n\n if (isValidationInfo(messageOrValidationInfo)) {\n validationWriter.set(messageOrValidationInfo);\n } else {\n validationWriter.set({ message: messageOrValidationInfo, type, level, independent });\n }\n }\n\n private getPathInfo<TChild>(lambdaPath: LambdaPath<T, TChild>): Nullable<PathInfo<TChild>> {\n const path = this.tokens.getOrAdd(lambdaPath);\n\n let data: any = this.data;\n for (const part of path) {\n if (isNullable(data)) {\n return null;\n }\n data = data[part];\n }\n\n return { data, path: [...this.path, ...path] };\n }\n}\n\nconst isValidationInfo = (argument: unknown): argument is ValidationInfo =>\n typeof argument === 'object' && Object.prototype.hasOwnProperty.call(argument, 'message');\n","/* eslint-disable no-useless-constructor */\nimport { ValidationInfo } from '../ValidationWrapper';\nimport { ExtractItem, Nullable } from '../../typings/Types';\n\nimport { ValidationNode } from './Types';\nimport { LambdaPath, PathTokensCache } from './PathHelper';\n\nexport class ValidationReader<T> {\n constructor(private readonly node: Nullable<ValidationNode<T>>, private readonly tokens: PathTokensCache) {}\n\n public getNode<TChild>(lambdaPath: LambdaPath<T, TChild>): ValidationReader<TChild> {\n const path = this.tokens.getOrAdd(lambdaPath);\n return this.getReaderInternal<TChild>(path);\n }\n\n public getNodeByIndex(index: number): ValidationReader<ExtractItem<T>> {\n return this.getReaderInternal<ExtractItem<T>>([index.toString()]);\n }\n\n public getNodeByKey<TKey extends keyof T>(key: TKey): ValidationReader<T[TKey]> {\n return this.getReaderInternal<T[TKey]>([key.toString()]);\n }\n\n public get(): Nullable<ValidationInfo> {\n return this.node ? this.node.validation : null;\n }\n\n private getReaderInternal<TChild>(path: string[]): ValidationReader<TChild> {\n const node = this.getNodeInternal<TChild>(path);\n return new ValidationReader<TChild>(node, this.tokens);\n }\n\n private getNodeInternal<TChild>(path: string[]): Nullable<ValidationNode<TChild>> {\n let current: Nullable<ValidationNode<any>> = this.node;\n for (const part of path) {\n if (!current || !current.children) {\n return null;\n }\n current = current.children[part];\n }\n return current;\n }\n}\n","import { ValidationInfo } from '../ValidationWrapper';\n\nimport { ValidationNode } from './Types';\nimport { ValidationReader } from './ValidationReader';\nimport { PathTokensCache } from './PathHelper';\n\nexport class ValidationWriter<T> {\n private readonly node: ValidationNode<T>;\n\n constructor(node?: ValidationNode<T>) {\n this.node = node || { validation: null, children: null };\n }\n\n public getReader(tokens: PathTokensCache): ValidationReader<T> {\n return new ValidationReader(this.node, tokens);\n }\n\n public set(validation: ValidationInfo): void {\n this.node.validation = validation;\n }\n\n public isValidated(): boolean {\n return !!this.node.validation;\n }\n\n public getNode<TChild>(path: string[]): ValidationWriter<TChild> {\n const node = this.getNodeInternal<TChild>(path);\n return new ValidationWriter<TChild>(node);\n }\n\n private getNodeInternal<TChild>(path: string[]): ValidationNode<TChild> {\n let node: ValidationNode<any> = this.node;\n for (const part of path) {\n if (!node.children) {\n node.children = {};\n }\n if (!node.children[part]) {\n node.children[part] = {\n validation: null,\n children: null,\n };\n }\n node = node.children[part];\n }\n return node;\n }\n}\n","const classicFunctionRegEx =\n /^\\s*function\\s*\\(\\s*([A-Za-z0-9_]+)\\s*\\)\\s*\\{\\s*(?:(?:\"use strict\"|'use strict');?)?\\s*return\\s+\\1\\s*([.[].*?)?\\s*;?\\s*\\}\\s*$/;\nconst arrowFunctionRegEx = /^\\s*\\(?\\s*([A-Za-z0-9_]+)\\s*\\)?\\s*=>\\s*\\1\\s*([.[].*?)?\\s*$/;\n\ntype NonNullableRecursive<T> = {\n [K in keyof T]: T[K] extends Record<string, unknown> ? NonNullable<NonNullableRecursive<T[K]>> : NonNullable<T[K]>;\n};\n\nexport type LambdaPath<T, TChild> = (x: NonNullable<NonNullableRecursive<T>>) => TChild;\n\nexport function extractPath(lambda: string): string {\n const match = classicFunctionRegEx.exec(lambda) || arrowFunctionRegEx.exec(lambda);\n if (match && match.length === 3) {\n return (match[2] || '').replace(/(^\\.\\s*)/g, '');\n }\n throw new Error(`Not supported or invalid path: <${lambda}>`);\n}\n\nexport function extractTokens(path: string): string[] {\n return path.split(/[\\s.[\\]]+/g).filter((x) => x);\n}\n\nexport class PathTokensCache {\n private readonly cache = new Map<string, string[]>();\n\n public getOrAdd<T, TChild>(lambdaPath: LambdaPath<T, TChild>): string[] {\n const lambdaString = lambdaPath.toString();\n\n if (!this.cache.has(lambdaString)) {\n const path = extractPath(lambdaString);\n const tokens = extractTokens(path);\n this.cache.set(lambdaString, tokens);\n }\n\n return this.cache.get(lambdaString) as string[];\n }\n\n public has<T, TChild>(lambdaPath: LambdaPath<T, TChild>): boolean {\n const lambdaString = lambdaPath.toString();\n return this.cache.has(lambdaString);\n }\n\n public get size(): number {\n return this.cache.size;\n }\n}\n","import { ValidationBuilder } from './ValidationBuilder';\nimport { ValidationWriter } from './ValidationWriter';\nimport { RootValidationRule, ValidationRule, ItemValidationRule } from './Types';\nimport { ValidationReader } from './ValidationReader';\nimport { PathTokensCache } from './PathHelper';\n\nfunction validate<T>(data: T, validationRule: RootValidationRule<T>, tokens: PathTokensCache): ValidationReader<T> {\n const validationWriter = new ValidationWriter<T>();\n const builder = new ValidationBuilder<T, T>(validationWriter, tokens, [], data);\n validationRule(builder, data);\n return validationWriter.getReader(tokens);\n}\n\nexport type Validator<T> = (value: T) => ValidationReader<T>;\n\nexport function createValidator<T>(rule: RootValidationRule<T>): Validator<T> {\n const tokens = new PathTokensCache();\n return (value: T): ValidationReader<T> => {\n return validate(value, rule, tokens);\n };\n}\n\nexport { ValidationReader, ValidationBuilder, RootValidationRule, ValidationRule, ItemValidationRule };\n"],"names":["React","findDOMNode","warning"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skbkontur/react-ui-validations",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.1",
|
|
4
4
|
"description": "Validations for @skbkontur/react-ui",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -24,30 +24,5 @@
|
|
|
24
24
|
"prop-types": "^15.8.0",
|
|
25
25
|
"smoothscroll-polyfill": "^0.4.4",
|
|
26
26
|
"warning": "^4.0.3"
|
|
27
|
-
},
|
|
28
|
-
"jest": {
|
|
29
|
-
"testEnvironment": "jsdom",
|
|
30
|
-
"testResultsProcessor": "jest-teamcity-reporter",
|
|
31
|
-
"moduleNameMapper": {
|
|
32
|
-
"\\.(css|less)$": "identity-obj-proxy"
|
|
33
|
-
},
|
|
34
|
-
"testMatch": [
|
|
35
|
-
"<rootDir>/tests/**/*test.(ts|tsx)"
|
|
36
|
-
],
|
|
37
|
-
"testPathIgnorePatterns": [
|
|
38
|
-
"/node_modules/",
|
|
39
|
-
"/__fixtures__/"
|
|
40
|
-
],
|
|
41
|
-
"setupFilesAfterEnv": [
|
|
42
|
-
"<rootDir>/tests/test-setup.js"
|
|
43
|
-
],
|
|
44
|
-
"moduleFileExtensions": [
|
|
45
|
-
"ts",
|
|
46
|
-
"tsx",
|
|
47
|
-
"js",
|
|
48
|
-
"jsx",
|
|
49
|
-
"json",
|
|
50
|
-
"node"
|
|
51
|
-
]
|
|
52
27
|
}
|
|
53
28
|
}
|