@skbkontur/react-ui-validations 1.16.3 → 2.0.0

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 CHANGED
@@ -3,6 +3,26 @@
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
+ # [2.0.0](https://github.com/skbkontur/retail-ui/compare/react-ui-validations@1.16.3...react-ui-validations@2.0.0) (2024-10-21)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **Theming:** use right colors for error outline and disabled text ([#3493](https://github.com/skbkontur/retail-ui/issues/3493)) ([7a98ee1](https://github.com/skbkontur/retail-ui/commit/7a98ee1815176303582f543e3551a57e65752055))
12
+ * **ValidationWrapper:** add div wrapper, fix w3c issue, tooltip and text position ([#3463](https://github.com/skbkontur/retail-ui/issues/3463)) ([e83e842](https://github.com/skbkontur/retail-ui/commit/e83e842891ce81a5a2c13334d5de4cdb30d03bb8))
13
+
14
+
15
+ ### Features
16
+
17
+ * **MaskedInput:** (rev. 2) ([#3390](https://github.com/skbkontur/retail-ui/issues/3390)) ([b2fb84f](https://github.com/skbkontur/retail-ui/commit/b2fb84f662fbb28c03ff38544d4f367a7446a778))
18
+ * **Popup:** replace DropdownContainer, unify shadows ([#3451](https://github.com/skbkontur/retail-ui/issues/3451)) ([723ec43](https://github.com/skbkontur/retail-ui/commit/723ec43470bec9f0dd89b5f899ffffb90004a538))
19
+ * remove feature flags ([#3434](https://github.com/skbkontur/retail-ui/issues/3434)) ([26676a3](https://github.com/skbkontur/retail-ui/commit/26676a307c055110410f786941d9ace1f07dafe4))
20
+ * update dependencies ([#3400](https://github.com/skbkontur/retail-ui/issues/3400)) ([d54f08d](https://github.com/skbkontur/retail-ui/commit/d54f08db9b10e2b10cb2d40c695a79f4e93271f5))
21
+
22
+
23
+
24
+
25
+
6
26
  ## [1.16.3](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/compare/react-ui-validations@1.16.2...react-ui-validations@1.16.3) (2024-08-20)
7
27
 
8
28
  **Note:** Version bump only for package react-ui-validations
package/index.d.ts CHANGED
@@ -53,7 +53,7 @@ declare module '@skbkontur/react-ui-validations/src/ValidationContainer' {
53
53
  submit(validationSettings?: ValidationSettings): Promise<void>;
54
54
  validate(withoutFocus?: boolean): Promise<boolean>;
55
55
  validate(validationSettings?: ValidationSettings): Promise<boolean>;
56
- render(): JSX.Element;
56
+ render(): React.JSX.Element;
57
57
  }
58
58
  export {};
59
59
  }
@@ -71,7 +71,7 @@ declare module '@skbkontur/react-ui-validations/src/ValidationTooltip' {
71
71
  export class ValidationTooltip extends React.Component<ValidationTooltipProps> {
72
72
  static __KONTUR_REACT_UI__: string;
73
73
  static displayName: string;
74
- render(): JSX.Element;
74
+ render(): React.JSX.Element;
75
75
  }
76
76
  }
77
77
 
@@ -111,7 +111,7 @@ declare module '@skbkontur/react-ui-validations/src/ValidationWrapperInternal' {
111
111
  componentWillUnmount(): void;
112
112
  componentDidUpdate(): void;
113
113
  focus(): Promise<void>;
114
- render(): JSX.Element;
114
+ render(): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
115
115
  getRootNode: () => Nullable<Element>;
116
116
  getControlPosition(): Nullable<Point>;
117
117
  processBlur(): Promise<void>;
@@ -141,7 +141,7 @@ declare module '@skbkontur/react-ui-validations/src/ValidationWrapper' {
141
141
  export class ValidationWrapper extends React.Component<ValidationWrapperProps> {
142
142
  static __KONTUR_REACT_UI__: string;
143
143
  static displayName: string;
144
- render(): JSX.Element;
144
+ render(): React.JSX.Element;
145
145
  }
146
146
  }
147
147
 
@@ -180,7 +180,7 @@ declare module '@skbkontur/react-ui-validations/src/ValidationContextWrapper' {
180
180
  onValidationRemoved(): void;
181
181
  getChildWrappersSortedByPosition(): ValidationWrapperInternal[];
182
182
  validate(withoutFocusOrValidationSettings: ValidateArgumentType): Promise<boolean>;
183
- render(): JSX.Element;
183
+ render(): React.JSX.Element;
184
184
  }
185
185
  }
186
186
 
@@ -214,18 +214,16 @@ declare module '@skbkontur/react-ui-validations/typings/Types' {
214
214
 
215
215
  declare module '@skbkontur/react-ui-validations/src/utils/featureFlagsContext/ValidationsFeatureFlagsContext' {
216
216
  import React from 'react';
217
- export type FeatureFlags = 'validationsRemoveExtraSpans' | 'fixedValidationTextColors' | 'darkTheme';
217
+ export type FeatureFlags = '';
218
218
  export type ValidationsFeatureFlags = Partial<Record<FeatureFlags, boolean>>;
219
219
  export const validationsFeatureFlagsDefault: ValidationsFeatureFlags;
220
- export const ValidationsFeatureFlagsContext: React.Context<Partial<Record<FeatureFlags, boolean>>>;
220
+ export const ValidationsFeatureFlagsContext: React.Context<Partial<Record<"", boolean>>>;
221
221
  }
222
222
 
223
223
  declare module '@skbkontur/react-ui-validations/src/utils/featureFlagsContext/FeatureFlagsHelpers' {
224
224
  import { ValidationsFeatureFlags } from '@skbkontur/react-ui-validations/src/utils/featureFlagsContext/ValidationsFeatureFlagsContext';
225
225
  export const getFullValidationsFlagsContext: (flags: ValidationsFeatureFlags) => {
226
- validationsRemoveExtraSpans?: boolean | undefined;
227
- fixedValidationTextColors?: boolean | undefined;
228
- darkTheme?: boolean | undefined;
226
+ ""?: boolean | undefined;
229
227
  };
230
228
  }
231
229
 
package/index.js CHANGED
@@ -1,25 +1,84 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var React = require('react');
6
4
  var warning = require('warning');
7
5
  var reactDom = require('react-dom');
8
6
 
9
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
+ var DEFAULT_TEXT_COLOR = '#d43517';
8
+ function getValidationTextColor(theme, level) {
9
+ if (level === void 0) { level = 'error'; }
10
+ return ((level === 'warning' ? theme.validationsTextColorWarning : theme.validationsTextColorError) || DEFAULT_TEXT_COLOR);
11
+ }
10
12
 
11
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
- var warning__default = /*#__PURE__*/_interopDefaultLegacy(warning);
13
+ /**
14
+ * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента
15
+ *
16
+ * @param value Значение, которое нужно проверить и исключить из него типы
17
+ * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false
18
+ */
19
+ var isNonNullable = function (value) {
20
+ return value !== null && value !== undefined;
21
+ };
13
22
 
14
- var validationsFeatureFlagsDefault = {
15
- validationsRemoveExtraSpans: false,
16
- fixedValidationTextColors: false,
23
+ var defaultOrNamed = function (module, component) {
24
+ return module && module.__esModule && module.default ? module.default : module[component];
17
25
  };
18
- var ValidationsFeatureFlagsContext = React__default["default"].createContext(validationsFeatureFlagsDefault);
19
- ValidationsFeatureFlagsContext.displayName = 'ValidationsFeatureFlagsContext';
20
- ValidationsFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ValidationsFeatureFlagsContext';
26
+ var importContext = function (module, component) { return module[component] || React.createContext({}); };
27
+ var Tooltip = defaultOrNamed(require('@skbkontur/react-ui/components/Tooltip'), 'Tooltip');
28
+ var ThemeContext = importContext(require('@skbkontur/react-ui/lib/theming/ThemeContext'), 'ThemeContext');
29
+ var ReactUiDetection = /** @class */ (function () {
30
+ function ReactUiDetection() {
31
+ }
32
+ ReactUiDetection.isDatePicker = function (childrenArray) {
33
+ var _a;
34
+ return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'DatePicker';
35
+ };
36
+ ReactUiDetection.isRadioGroup = function (childrenArray) {
37
+ var _a;
38
+ return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'RadioGroup';
39
+ };
40
+ ReactUiDetection.isTokenInput = function (childrenArray) {
41
+ var _a;
42
+ return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'TokenInput';
43
+ };
44
+ ReactUiDetection.isSwitcher = function (childrenArray) {
45
+ var _a;
46
+ return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'Switcher';
47
+ };
48
+ ReactUiDetection.isComboBox = function (childrenArray) {
49
+ var _a;
50
+ return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'ComboBox';
51
+ };
52
+ return ReactUiDetection;
53
+ }());
21
54
 
22
- /*! *****************************************************************************
55
+ var ValidationText = function (_a) {
56
+ var pos = _a.pos, children = _a.children, validation = _a.validation, dataTid = _a["data-tid"];
57
+ var theme = React.useContext(ThemeContext);
58
+ var color = getValidationTextColor(theme, validation === null || validation === void 0 ? void 0 : validation.level);
59
+ if (pos === 'right') {
60
+ var childrenAndValidationText_1 = (React.createElement(React.Fragment, null,
61
+ children,
62
+ React.createElement("span", { "data-tid": dataTid, "data-validation-message": "text", style: { marginLeft: '10px', color: color } }, (validation && validation.message) || '')));
63
+ return React.createElement("div", { style: { display: 'inline-block' } }, childrenAndValidationText_1);
64
+ }
65
+ var validationText = (React.createElement("span", { "data-tid": dataTid, "data-validation-message": "text", style: {
66
+ color: color,
67
+ overflow: 'visible',
68
+ whiteSpace: 'nowrap',
69
+ position: 'absolute',
70
+ top: '2px',
71
+ left: 0,
72
+ } }, (validation && validation.message) || ''));
73
+ var childrenAndValidationText = (React.createElement(React.Fragment, null,
74
+ children,
75
+ React.createElement("span", { style: { position: 'absolute', bottom: 0, left: 0, height: 0 } }, validationText)));
76
+ return React.createElement("div", { style: { position: 'relative', display: 'inline-block' } }, childrenAndValidationText);
77
+ };
78
+ ValidationText.__KONTUR_REACT_UI__ = 'ValidationText';
79
+ ValidationText.displayName = 'ValidationText';
80
+
81
+ /******************************************************************************
23
82
  Copyright (c) Microsoft Corporation.
24
83
 
25
84
  Permission to use, copy, modify, and/or distribute this software for any
@@ -33,7 +92,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
33
92
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
34
93
  PERFORMANCE OF THIS SOFTWARE.
35
94
  ***************************************************************************** */
36
- /* global Reflect, Promise */
95
+ /* global Reflect, Promise, SuppressedError, Symbol */
37
96
 
38
97
  var extendStatics = function(d, b) {
39
98
  extendStatics = Object.setPrototypeOf ||
@@ -89,7 +148,7 @@ function __generator(thisArg, body) {
89
148
  function verb(n) { return function (v) { return step([n, v]); }; }
90
149
  function step(op) {
91
150
  if (f) throw new TypeError("Generator is already executing.");
92
- while (_) try {
151
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
93
152
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
94
153
  if (y = 0, t) op = [op[0] & 2, t.value];
95
154
  switch (op[0]) {
@@ -119,126 +178,34 @@ function __spreadArray(to, from, pack) {
119
178
  }
120
179
  }
121
180
  return to.concat(ar || Array.prototype.slice.call(from));
122
- }
123
-
124
- var getFullValidationsFlagsContext = function (flags) {
125
- return __assign(__assign({}, validationsFeatureFlagsDefault), flags);
126
- };
127
-
128
- var DEFAULT_TEXT_COLOR = '#d43517';
129
- function getValidationTextColor(flags, theme, level) {
130
- if (level === void 0) { level = 'error'; }
131
- if (flags.fixedValidationTextColors) {
132
- if (!theme.validationsTextColorWarning && !theme.validationsTextColorError) {
133
- switch (level) {
134
- case 'warning':
135
- return flags.darkTheme ? '#fdd481' : '#ef8b17';
136
- case 'error':
137
- return flags.darkTheme ? '#ff887b' : '#cb3d35';
138
- }
139
- }
140
- return ((level === 'warning' ? theme.validationsTextColorWarning : theme.validationsTextColorError) || DEFAULT_TEXT_COLOR);
141
- }
142
- return DEFAULT_TEXT_COLOR;
143
- }
144
-
145
- /**
146
- * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента
147
- *
148
- * @param value Значение, которое нужно проверить и исключить из него типы
149
- * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false
150
- */
151
- var isNonNullable = function (value) {
152
- return value !== null && value !== undefined;
181
+ }
182
+
183
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
184
+ var e = new Error(message);
185
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
153
186
  };
154
187
 
155
- var defaultOrNamed = function (module, component) {
156
- return module && module.__esModule && module.default ? module.default : module[component];
157
- };
158
- var importContext = function (module, component) { return module[component] || React__default["default"].createContext({}); };
159
- var Tooltip = defaultOrNamed(require('@skbkontur/react-ui/components/Tooltip'), 'Tooltip');
160
- var ThemeContext = importContext(require('@skbkontur/react-ui/lib/theming/ThemeContext'), 'ThemeContext');
161
- var ReactUiDetection = /** @class */ (function () {
162
- function ReactUiDetection() {
163
- }
164
- ReactUiDetection.isDatePicker = function (childrenArray) {
165
- var _a;
166
- return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'DatePicker';
167
- };
168
- ReactUiDetection.isRadioGroup = function (childrenArray) {
169
- var _a;
170
- return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'RadioGroup';
171
- };
172
- ReactUiDetection.isTokenInput = function (childrenArray) {
173
- var _a;
174
- return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'TokenInput';
175
- };
176
- ReactUiDetection.isSwitcher = function (childrenArray) {
177
- var _a;
178
- return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'Switcher';
179
- };
180
- ReactUiDetection.isComboBox = function (childrenArray) {
181
- var _a;
182
- return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'ComboBox';
183
- };
184
- return ReactUiDetection;
185
- }());
186
-
187
- var ValidationText = function (_a) {
188
- var pos = _a.pos, children = _a.children, validation = _a.validation, dataTid = _a["data-tid"];
189
- var theme = React.useContext(ThemeContext);
190
- var featureFlags = getFullValidationsFlagsContext(React.useContext(ValidationsFeatureFlagsContext));
191
- var color = getValidationTextColor(featureFlags, theme, validation === null || validation === void 0 ? void 0 : validation.level);
192
- if (pos === 'right') {
193
- var childrenAndValidationText = (React__default["default"].createElement(React__default["default"].Fragment, null,
194
- children,
195
- React__default["default"].createElement("span", { "data-tid": dataTid, "data-validation-message": "text", style: { marginLeft: '10px', color: color } }, (validation && validation.message) || '')));
196
- return featureFlags.validationsRemoveExtraSpans ? (childrenAndValidationText) : (React__default["default"].createElement("span", { style: { display: 'inline-block' } }, childrenAndValidationText));
197
- }
198
- var validationText = (React__default["default"].createElement("span", { "data-tid": dataTid, "data-validation-message": "text", style: {
199
- color: color,
200
- overflow: 'visible',
201
- whiteSpace: 'nowrap',
202
- position: 'absolute',
203
- top: '2px',
204
- left: 0,
205
- } }, (validation && validation.message) || ''));
206
- return featureFlags.validationsRemoveExtraSpans ? (React__default["default"].createElement(React__default["default"].Fragment, null,
207
- children,
208
- React__default["default"].createElement("span", { style: { position: 'absolute', display: 'block' } }, validationText))) : (React__default["default"].createElement("span", { style: { position: 'relative', display: 'inline-block' } },
209
- children,
210
- React__default["default"].createElement("span", { style: { position: 'absolute', bottom: 0, left: 0, height: 0 } }, validationText)));
211
- };
212
- ValidationText.__KONTUR_REACT_UI__ = 'ValidationText';
213
- ValidationText.displayName = 'ValidationText';
214
-
215
188
  var ValidationTooltip = /** @class */ (function (_super) {
216
189
  __extends(ValidationTooltip, _super);
217
190
  function ValidationTooltip() {
218
191
  return _super !== null && _super.apply(this, arguments) || this;
219
192
  }
220
193
  ValidationTooltip.prototype.render = function () {
221
- var _this = this;
222
194
  var _a = this.props, children = _a.children, pos = _a.pos, error = _a.error, render = _a.render, rest = __rest(_a, ["children", "pos", "error", "render"]);
223
- var onlyChild = React__default["default"].Children.only(children);
195
+ var onlyChild = React.Children.only(children);
224
196
  var child = onlyChild && onlyChild.props ? onlyChild.props.children : null;
225
- return (React__default["default"].createElement(ValidationsFeatureFlagsContext.Consumer, null, function (flags) {
226
- _this.featureFlags = getFullValidationsFlagsContext(flags);
227
- return !_this.featureFlags.validationsRemoveExtraSpans &&
228
- (ReactUiDetection.isRadioGroup(child) ||
229
- ReactUiDetection.isTokenInput(child) ||
230
- ReactUiDetection.isSwitcher(child)) ? (React__default["default"].createElement(Tooltip, __assign({ useWrapper: false, pos: pos, render: error && render, trigger: 'hover&focus' }, rest), child)) : (React__default["default"].createElement(Tooltip, __assign({ pos: pos, render: error && render, trigger: 'hover&focus' }, rest), children));
231
- }));
197
+ return ReactUiDetection.isRadioGroup(child) ||
198
+ ReactUiDetection.isTokenInput(child) ||
199
+ ReactUiDetection.isSwitcher(child) ? (React.createElement(Tooltip, __assign({ useWrapper: false, pos: pos, render: error && render, trigger: 'hover&focus' }, rest), child)) : (React.createElement(Tooltip, __assign({ pos: pos, render: error && render, trigger: 'hover&focus' }, rest), children));
232
200
  };
233
201
  ValidationTooltip.__KONTUR_REACT_UI__ = 'ValidationTooltip';
234
202
  ValidationTooltip.displayName = 'ValidationTooltip';
235
203
  return ValidationTooltip;
236
- }(React__default["default"].Component));
204
+ }(React.Component));
237
205
 
238
- /* eslint-disable react/display-name */
239
206
  function tooltip(pos) {
240
207
  return function (control, hasError, validation) {
241
- return (React__default["default"].createElement(ValidationTooltip, { pos: pos, error: hasError, render: function () {
208
+ return (React.createElement(ValidationTooltip, { pos: pos, error: hasError, render: function () {
242
209
  if (!validation || !validation.message) {
243
210
  return null;
244
211
  }
@@ -249,11 +216,11 @@ function tooltip(pos) {
249
216
  function text(pos) {
250
217
  if (pos === void 0) { pos = 'right'; }
251
218
  return function (control, _hasError, validation) {
252
- return (React__default["default"].createElement(ValidationText, { pos: pos, validation: validation }, control));
219
+ return (React.createElement(ValidationText, { pos: pos, validation: validation }, control));
253
220
  };
254
221
  }
255
222
 
256
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
223
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-unnecessary-type-constraint
257
224
  function createPropsGetter(defaultProps) {
258
225
  return function () {
259
226
  return this.props;
@@ -300,7 +267,7 @@ exports.FocusMode = void 0;
300
267
  FocusMode[FocusMode["None"] = 2] = "None";
301
268
  })(exports.FocusMode || (exports.FocusMode = {}));
302
269
 
303
- var ValidationContext = React__default["default"].createContext({
270
+ var ValidationContext = React.createContext({
304
271
  register: function () { return undefined; },
305
272
  unregister: function () { return undefined; },
306
273
  instanceProcessBlur: function () { return undefined; },
@@ -317,15 +284,9 @@ var ValidationContextWrapper = /** @class */ (function (_super) {
317
284
  function ValidationContextWrapper() {
318
285
  var _this = _super !== null && _super.apply(this, arguments) || this;
319
286
  _this.childWrappers = [];
320
- _this.children = function (flags) {
321
- if (flags.validationsRemoveExtraSpans) {
322
- return _this.props.children;
323
- }
324
- return React__default["default"].createElement("span", null, _this.props.children);
325
- };
326
287
  _this.renderChildren = function (children) {
327
- if (React__default["default"].isValidElement(children)) {
328
- return React__default["default"].cloneElement(children, {
288
+ if (React.isValidElement(children)) {
289
+ return React.cloneElement(children, {
329
290
  'data-tid': _this.props['data-tid'],
330
291
  });
331
292
  }
@@ -446,20 +407,16 @@ var ValidationContextWrapper = /** @class */ (function (_super) {
446
407
  return exports.FocusMode.None;
447
408
  };
448
409
  ValidationContextWrapper.prototype.render = function () {
449
- var _this = this;
450
- return (React__default["default"].createElement(ValidationsFeatureFlagsContext.Consumer, null, function (flags) {
451
- _this.featureFlags = getFullValidationsFlagsContext(flags);
452
- return (React__default["default"].createElement(ValidationContext.Provider, { value: _this }, _this.renderChildren(_this.children(_this.featureFlags))));
453
- }));
410
+ return (React.createElement(ValidationContext.Provider, { value: this }, this.renderChildren(React.createElement("div", { style: { display: 'inline' } }, this.props.children))));
454
411
  };
455
412
  return ValidationContextWrapper;
456
- }(React__default["default"].Component));
413
+ }(React.Component));
457
414
 
458
415
  var ValidationContainer = /** @class */ (function (_super) {
459
416
  __extends(ValidationContainer, _super);
460
417
  function ValidationContainer() {
461
418
  var _this = _super !== null && _super.apply(this, arguments) || this;
462
- _this.getProps = createPropsGetter();
419
+ _this.getProps = createPropsGetter(ValidationContainer.defaultProps);
463
420
  _this.childContext = null;
464
421
  _this.refChildContext = function (el) { return (_this.childContext = el); };
465
422
  return _this;
@@ -489,7 +446,7 @@ var ValidationContainer = /** @class */ (function (_super) {
489
446
  return this.childContext.validate(withoutFocusOrValidationSettings);
490
447
  };
491
448
  ValidationContainer.prototype.render = function () {
492
- return (React__default["default"].createElement(ValidationContextWrapper, { "data-tid": this.props['data-tid'], ref: this.refChildContext, scrollOffset: this.props.scrollOffset, disableSmoothScroll: this.getProps().disableSmoothScroll, onValidationUpdated: this.props.onValidationUpdated }, this.props.children));
449
+ return (React.createElement(ValidationContextWrapper, { "data-tid": this.props['data-tid'], ref: this.refChildContext, scrollOffset: this.props.scrollOffset, disableSmoothScroll: this.getProps().disableSmoothScroll, onValidationUpdated: this.props.onValidationUpdated }, this.props.children));
493
450
  };
494
451
  ValidationContainer.__KONTUR_REACT_UI__ = 'ValidationContainer';
495
452
  ValidationContainer.displayName = 'ValidationContainer';
@@ -505,9 +462,8 @@ var ValidationContainer = /** @class */ (function (_super) {
505
462
  },
506
463
  };
507
464
  return ValidationContainer;
508
- }(React__default["default"].Component));
465
+ }(React.Component));
509
466
 
510
- /* eslint-disable react/no-find-dom-node */
511
467
  var isInstanceWithRootNode = function (instance) {
512
468
  return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');
513
469
  };
@@ -558,7 +514,7 @@ var getRootNode = function (instance) {
558
514
  // but findDOMNode doesn`t accept everything that instance can be at this point,
559
515
  // so we have to handle exceptions
560
516
  // see https://github.com/facebook/react/blob/cae63505/packages/react-dom/src/__tests__/findDOMNode-test.js#L66-L86
561
- warning__default["default"](false, '[getRootNode]: can`t fallback to findDOMNode.' +
517
+ warning(false, '[getRootNode]: can`t fallback to findDOMNode.' +
562
518
  '\n' +
563
519
  'See https://github.com/skbkontur/retail-ui/blob/master/packages/react-ui/README.md#strictmode' +
564
520
  '\n\n' +
@@ -782,7 +738,7 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
782
738
  return _this;
783
739
  }
784
740
  ValidationWrapperInternal.prototype.componentDidMount = function () {
785
- warning__default["default"](this.context, 'ValidationWrapper should appears as child of ValidationContainer.\n' +
741
+ warning(this.context, 'ValidationWrapper should appears as child of ValidationContainer.\n' +
786
742
  'https://tech.skbkontur.ru/react-ui-validations/#/getting-started');
787
743
  if (this.context) {
788
744
  this.context.register(this);
@@ -825,7 +781,7 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
825
781
  var _this = this;
826
782
  var _a = this.props, children = _a.children, dataTid = _a["data-tid"];
827
783
  var validation = this.state.validation;
828
- var clonedChild = children ? (React__default["default"].cloneElement(children, {
784
+ var clonedChild = children ? (React.cloneElement(children, {
829
785
  ref: this.customRef,
830
786
  error: !this.isChanging && getLevel(validation) === 'error',
831
787
  warning: !this.isChanging && getLevel(validation) === 'warning',
@@ -862,9 +818,9 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
862
818
  (_a = children.props).onValueChange.apply(_a, args);
863
819
  }
864
820
  },
865
- })) : (React__default["default"].createElement("span", { ref: this.setRootNode }));
821
+ })) : (React.createElement("span", { ref: this.setRootNode }));
866
822
  if (ReactUiDetection.isComboBox(clonedChild)) {
867
- clonedChild = React__default["default"].cloneElement(clonedChild, {
823
+ clonedChild = React.cloneElement(clonedChild, {
868
824
  onInputValueChange: function () {
869
825
  var _a;
870
826
  var args = [];
@@ -879,12 +835,9 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
879
835
  },
880
836
  });
881
837
  }
882
- return (React__default["default"].createElement(ValidationsFeatureFlagsContext.Consumer, null, function (flags) {
883
- _this.featureFlags = getFullValidationsFlagsContext(flags);
884
- return React__default["default"].cloneElement(_this.props.errorMessage(_this.featureFlags.validationsRemoveExtraSpans ? clonedChild : React__default["default"].createElement("span", null, clonedChild), !!validation, validation), {
885
- 'data-tid': dataTid,
886
- });
887
- }));
838
+ return React.cloneElement(this.props.errorMessage(React.createElement("div", { style: { display: 'inline' } }, clonedChild), !!validation, validation), {
839
+ 'data-tid': dataTid,
840
+ });
888
841
  };
889
842
  ValidationWrapperInternal.prototype.getControlPosition = function () {
890
843
  var htmlElement = this.getRootNode();
@@ -964,7 +917,7 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
964
917
  };
965
918
  ValidationWrapperInternal.contextType = ValidationContext;
966
919
  return ValidationWrapperInternal;
967
- }(React__default["default"].Component));
920
+ }(React.Component));
968
921
 
969
922
  var ValidationWrapper = /** @class */ (function (_super) {
970
923
  __extends(ValidationWrapper, _super);
@@ -981,12 +934,21 @@ var ValidationWrapper = /** @class */ (function (_super) {
981
934
  independent: validationInfo.independent || false,
982
935
  }
983
936
  : null;
984
- return (React__default["default"].createElement(ValidationWrapperInternal, { "data-tid": datTid, errorMessage: renderMessage || tooltip('right top'), validation: validation }, children));
937
+ return (React.createElement(ValidationWrapperInternal, { "data-tid": datTid, errorMessage: renderMessage || tooltip('right top'), validation: validation }, children));
985
938
  };
986
939
  ValidationWrapper.__KONTUR_REACT_UI__ = 'ValidationWrapper';
987
940
  ValidationWrapper.displayName = 'ValidationWrapper';
988
941
  return ValidationWrapper;
989
- }(React__default["default"].Component));
942
+ }(React.Component));
943
+
944
+ var validationsFeatureFlagsDefault = {};
945
+ var ValidationsFeatureFlagsContext = React.createContext(validationsFeatureFlagsDefault);
946
+ ValidationsFeatureFlagsContext.displayName = 'ValidationsFeatureFlagsContext';
947
+ ValidationsFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ValidationsFeatureFlagsContext';
948
+
949
+ var getFullValidationsFlagsContext = function (flags) {
950
+ return __assign(__assign({}, validationsFeatureFlagsDefault), flags);
951
+ };
990
952
 
991
953
  var ValidationBuilder = /** @class */ (function () {
992
954
  // eslint-disable-next-line no-useless-constructor
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/utils/featureFlagsContext/ValidationsFeatureFlagsContext.tsx","../../src/utils/featureFlagsContext/FeatureFlagsHelpers.tsx","../../src/utils/getValidationTextColor.ts","../../src/utils/isNonNullable/isNonNullable.ts","../../src/ReactUiDetection.ts","../../src/ValidationText.tsx","../../src/ValidationTooltip.tsx","../../src/ErrorRenderer.tsx","../../src/utils/createPropsGetter.ts","../../src/utils/utils.ts","../../src/utils/isNullable/isNullable.ts","../../src/FocusMode.tsx","../../src/ValidationContextWrapper.tsx","../../src/ValidationContainer.tsx","../../src/utils/getRootNode/getRootNode.ts","../../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":["import React from 'react';\n\nexport type FeatureFlags = 'validationsRemoveExtraSpans' | 'fixedValidationTextColors' | 'darkTheme';\n\nexport type ValidationsFeatureFlags = Partial<Record<FeatureFlags, boolean>>;\n\nexport const validationsFeatureFlagsDefault: ValidationsFeatureFlags = {\n validationsRemoveExtraSpans: false,\n fixedValidationTextColors: false,\n};\n\nexport const ValidationsFeatureFlagsContext =\n React.createContext<ValidationsFeatureFlags>(validationsFeatureFlagsDefault);\n\nValidationsFeatureFlagsContext.displayName = 'ValidationsFeatureFlagsContext';\nValidationsFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ValidationsFeatureFlagsContext';\n","import { validationsFeatureFlagsDefault, ValidationsFeatureFlags } from './ValidationsFeatureFlagsContext';\n\nexport const getFullValidationsFlagsContext = (flags: ValidationsFeatureFlags) => {\n return { ...validationsFeatureFlagsDefault, ...flags };\n};\n","import type { ValidationLevel } from '../ValidationWrapperInternal';\nimport type { ThemeValidations } from '../../typings/theme-context';\n\nimport { ValidationsFeatureFlags } from './featureFlagsContext';\n\nexport const DEFAULT_TEXT_COLOR = '#d43517';\n\nexport function getValidationTextColor(\n flags: ValidationsFeatureFlags,\n theme: ThemeValidations,\n level: ValidationLevel = 'error',\n) {\n if (flags.fixedValidationTextColors) {\n if (!theme.validationsTextColorWarning && !theme.validationsTextColorError) {\n switch (level) {\n case 'warning':\n return flags.darkTheme ? '#fdd481' : '#ef8b17';\n case 'error':\n return flags.darkTheme ? '#ff887b' : '#cb3d35';\n }\n }\n return (\n (level === 'warning' ? theme.validationsTextColorWarning : theme.validationsTextColorError) || DEFAULT_TEXT_COLOR\n );\n }\n return DEFAULT_TEXT_COLOR;\n}\n","/**\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 React from 'react';\n\nimport { 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 importContext = (module: any, component: string) => module[component] || React.createContext({});\n\nconst Tooltip = defaultOrNamed(require('__REACT_UI_PACKAGE__/components/Tooltip'), 'Tooltip');\nconst ThemeContext = importContext(require('__REACT_UI_PACKAGE__/lib/theming/ThemeContext'), 'ThemeContext');\n\nexport { Tooltip, ThemeContext };\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, { useContext } from 'react';\n\nimport { Nullable } from '../typings/Types';\nimport { ThemeValidations } from '../typings/theme-context';\n\nimport { getFullValidationsFlagsContext, ValidationsFeatureFlagsContext } from './utils/featureFlagsContext';\nimport { TextPosition, Validation } from './ValidationWrapperInternal';\nimport { getValidationTextColor } from './utils/getValidationTextColor';\nimport { ThemeContext } from './ReactUiDetection';\n\nexport interface ValidationTextProps {\n pos: TextPosition;\n children: React.ReactNode;\n validation: Nullable<Validation>;\n 'data-tid'?: string;\n}\n\nexport const ValidationText = ({ pos, children, validation, 'data-tid': dataTid }: ValidationTextProps) => {\n const theme = useContext<ThemeValidations>(ThemeContext);\n const featureFlags = getFullValidationsFlagsContext(useContext(ValidationsFeatureFlagsContext));\n const color = getValidationTextColor(featureFlags, theme, validation?.level);\n\n if (pos === 'right') {\n const childrenAndValidationText = (\n <>\n {children}\n <span data-tid={dataTid} data-validation-message=\"text\" style={{ marginLeft: '10px', color }}>\n {(validation && validation.message) || ''}\n </span>\n </>\n );\n\n return featureFlags.validationsRemoveExtraSpans ? (\n childrenAndValidationText\n ) : (\n <span style={{ display: 'inline-block' }}>{childrenAndValidationText}</span>\n );\n }\n\n const validationText = (\n <span\n data-tid={dataTid}\n data-validation-message=\"text\"\n style={{\n color,\n overflow: 'visible',\n whiteSpace: 'nowrap',\n position: 'absolute',\n top: '2px',\n left: 0,\n }}\n >\n {(validation && validation.message) || ''}\n </span>\n );\n\n return featureFlags.validationsRemoveExtraSpans ? (\n <>\n {children}\n <span style={{ position: 'absolute', display: 'block' }}>{validationText}</span>\n </>\n ) : (\n <span style={{ position: 'relative', display: 'inline-block' }}>\n {children}\n <span style={{ position: 'absolute', bottom: 0, left: 0, height: 0 }}>{validationText}</span>\n </span>\n );\n};\n\nValidationText.__KONTUR_REACT_UI__ = 'ValidationText';\nValidationText.displayName = 'ValidationText';\n","import React from 'react';\n\nimport {\n ValidationsFeatureFlags,\n ValidationsFeatureFlagsContext,\n getFullValidationsFlagsContext,\n} from './utils/featureFlagsContext';\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 'data-tid'?: string;\n}\n\nexport class ValidationTooltip extends React.Component<ValidationTooltipProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationTooltip';\n public static displayName = 'ValidationTooltip';\n\n private featureFlags!: ValidationsFeatureFlags;\n public render() {\n const { children, pos, error, render, ...rest } = this.props;\n\n const onlyChild = React.Children.only(children);\n const child = onlyChild && onlyChild.props ? onlyChild.props.children : null;\n\n return (\n <ValidationsFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullValidationsFlagsContext(flags);\n return !this.featureFlags.validationsRemoveExtraSpans &&\n (ReactUiDetection.isRadioGroup(child) ||\n ReactUiDetection.isTokenInput(child) ||\n ReactUiDetection.isSwitcher(child)) ? (\n <Tooltip useWrapper={false} pos={pos} render={error && render} trigger={'hover&focus'} {...rest}>\n {child}\n </Tooltip>\n ) : (\n <Tooltip pos={pos} render={error && render} trigger={'hover&focus'} {...rest}>\n {children}\n </Tooltip>\n );\n }}\n </ValidationsFeatureFlagsContext.Consumer>\n );\n }\n}\n","/* eslint-disable react/display-name */\nimport React from 'react';\n\nimport { ValidationText } from './ValidationText';\nimport { TooltipPosition, ValidationTooltip } from './ValidationTooltip';\nimport { RenderErrorMessage, TextPosition } 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: TextPosition = 'right'): RenderErrorMessage {\n return (control, _hasError, validation) => {\n return (\n <ValidationText pos={pos} validation={validation}>\n {control}\n </ValidationText>\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","export enum FocusMode {\n 'Errors',\n 'ErrorsAndWarnings',\n 'None',\n}\n","import React from 'react';\n\nimport {\n ValidationsFeatureFlags,\n ValidationsFeatureFlagsContext,\n getFullValidationsFlagsContext,\n} from './utils/featureFlagsContext';\nimport { ValidationWrapperInternal } from './ValidationWrapperInternal';\nimport type { ScrollOffset, ValidateArgumentType } from './ValidationContainer';\nimport { isNullable } from './utils/isNullable';\nimport { FocusMode } from './FocusMode';\n\nexport interface ValidationContextSettings {\n scrollOffset: ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextWrapperProps {\n 'data-tid'?: string;\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(withoutFocusOrValidationSettings: ValidateArgumentType): Promise<boolean> {\n const focusMode = ValidationContextWrapper.getFocusMode(withoutFocusOrValidationSettings);\n\n await Promise.all(this.childWrappers.map((x) => x.processSubmit()));\n\n const childrenWrappersSortedByPosition = this.getChildWrappersSortedByPosition();\n const firstError = childrenWrappersSortedByPosition.find((x) => x.hasError());\n if (focusMode === FocusMode.ErrorsAndWarnings) {\n childrenWrappersSortedByPosition.find((x) => x.hasError() || x.hasWarning())?.focus();\n }\n if (focusMode === FocusMode.Errors) {\n firstError?.focus();\n }\n if (this.props.onValidationUpdated) {\n this.props.onValidationUpdated(!firstError);\n }\n return !firstError;\n }\n\n private static getFocusMode(withoutFocusOrValidationSettings: ValidateArgumentType) {\n if (typeof withoutFocusOrValidationSettings === 'object' && 'focusMode' in withoutFocusOrValidationSettings) {\n return withoutFocusOrValidationSettings.focusMode;\n } else if (!withoutFocusOrValidationSettings) {\n return FocusMode.Errors;\n }\n return FocusMode.None;\n }\n\n private featureFlags!: ValidationsFeatureFlags;\n\n private children = (flags: ValidationsFeatureFlags) => {\n if (flags.validationsRemoveExtraSpans) {\n return this.props.children;\n }\n\n return <span>{this.props.children}</span>;\n };\n\n private renderChildren = (children: ValidationContextWrapperProps['children']) => {\n if (React.isValidElement(children)) {\n return React.cloneElement(children, {\n 'data-tid': this.props['data-tid'],\n });\n }\n\n return children;\n };\n\n public render() {\n return (\n <ValidationsFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullValidationsFlagsContext(flags);\n return (\n <ValidationContext.Provider value={this}>\n {this.renderChildren(this.children(this.featureFlags))}\n </ValidationContext.Provider>\n );\n }}\n </ValidationsFeatureFlagsContext.Consumer>\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';\nimport { FocusMode } from './FocusMode';\n\nexport interface ScrollOffset {\n top?: number;\n bottom?: number;\n}\n\nexport interface ValidationSettings {\n focusMode: FocusMode;\n}\n\nexport type ValidateArgumentType = boolean | ValidationSettings;\n\nexport interface ValidationContainerProps {\n 'data-tid'?: string;\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 public static displayName = '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?: boolean): Promise<void>;\n public async submit(validationSettings?: ValidationSettings): Promise<void>;\n\n public async submit(\n withoutFocusOrValidationSettings: ValidateArgumentType = { focusMode: FocusMode.Errors },\n ): Promise<void> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n await this.childContext.validate(withoutFocusOrValidationSettings);\n }\n\n public async validate(withoutFocus?: boolean): Promise<boolean>;\n public async validate(validationSettings?: ValidationSettings): Promise<boolean>;\n\n public validate(\n withoutFocusOrValidationSettings: ValidateArgumentType = { focusMode: FocusMode.Errors },\n ): Promise<boolean> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n return this.childContext.validate(withoutFocusOrValidationSettings);\n }\n\n public render() {\n return (\n <ValidationContextWrapper\n data-tid={this.props['data-tid']}\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';\nimport warning from 'warning';\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 /**\n * Options of what instance can be:\n * 1. null or undefined\n * 2. DOM Element\n * 3. class Component instance (object)\n * 4. literally anything, returned from useImperativeHandle\n */\n\n if (!canUseDOM || !instance) {\n // instance can be `null` if component was unmounted\n // also checking undefined for convenient usage\n return null;\n }\n\n if (isElement(instance)) {\n // instance can be an Element already if its coming\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 // the getter exists and has returned something, it should be what we are looking for\n // probably its an Element or null (which is also OK, e.g. Popup/Tooltip/Hint before opening)\n return rootNode;\n }\n\n try {\n // rootNode is undefined, which means that the getter doesn't exists or returns the undefined\n // anyway, it tell us that the convention is not respected,\n // so, we have to fall back to the deprecated findDOMNode, which breaks StrictMode\n // instance can still be a class component or an imperative handle (i.e., anything, except null/undefined/Element)\n rootNode = findDOMNode(instance);\n } catch (e) {\n // but findDOMNode doesn`t accept everything that instance can be at this point,\n // so we have to handle exceptions\n // see https://github.com/facebook/react/blob/cae63505/packages/react-dom/src/__tests__/findDOMNode-test.js#L66-L86\n warning(\n false,\n '[getRootNode]: can`t fallback to findDOMNode.' +\n '\\n' +\n 'See https://github.com/skbkontur/retail-ui/blob/master/packages/react-ui/README.md#strictmode' +\n '\\n\\n' +\n e.message,\n );\n return null;\n }\n\n // the findDOMNode can also return Text, but we are only interested in Elements, 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 { 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, { ReactInstance } from 'react';\nimport warning from 'warning';\n\nimport { Nullable } from '../typings/Types';\n\nimport {\n ValidationsFeatureFlags,\n ValidationsFeatureFlagsContext,\n getFullValidationsFlagsContext,\n} from './utils/featureFlagsContext';\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 type TextPosition = 'bottom' | 'right';\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 'data-tid'?: string;\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 private featureFlags!: ValidationsFeatureFlags;\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, 'data-tid': dataTid } = 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 return children.props.onInputValueChange(...args);\n }\n },\n });\n }\n\n return (\n <ValidationsFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullValidationsFlagsContext(flags);\n return React.cloneElement(\n this.props.errorMessage(\n this.featureFlags.validationsRemoveExtraSpans ? clonedChild : <span>{clonedChild}</span>,\n !!validation,\n validation,\n ),\n {\n 'data-tid': dataTid,\n },\n );\n }}\n </ValidationsFeatureFlagsContext.Consumer>\n );\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 }, () => {\n if (Boolean(current) !== Boolean(validation)) {\n this.context.onValidationUpdated(this, !validation);\n }\n resolve();\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 ValidationWrapperInternalProps,\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 extends Pick<ValidationWrapperInternalProps, 'data-tid'> {\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 public static displayName = 'ValidationWrapper';\n\n public render() {\n const { children, validationInfo, renderMessage, 'data-tid': datTid } = 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\n return (\n <ValidationWrapperInternal\n data-tid={datTid}\n errorMessage={renderMessage || tooltip('right top')}\n validation={validation}\n >\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","useContext","FocusMode","findDOMNode","warning"],"mappings":";;;;;;;;;;;;;IAMa,8BAA8B,GAA4B;IACrE,2BAA2B,EAAE,KAAK;IAClC,yBAAyB,EAAE,KAAK;EAChC;IAEW,8BAA8B,GACzCA,yBAAK,CAAC,aAAa,CAA0B,8BAA8B,EAAE;AAE/E,8BAA8B,CAAC,WAAW,GAAG,gCAAgC,CAAC;AAC9E,8BAA8B,CAAC,mBAAmB,GAAG,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICbxE,8BAA8B,GAAG,UAAC,KAA8B;IAC3E,6BAAY,8BAA8B,GAAK,KAAK,EAAG;AACzD;;ACCO,IAAM,kBAAkB,GAAG,SAAS,CAAC;SAE5B,sBAAsB,CACpC,KAA8B,EAC9B,KAAuB,EACvB,KAAgC;IAAhC,sBAAA,EAAA,eAAgC;IAEhC,IAAI,KAAK,CAAC,yBAAyB,EAAE;QACnC,IAAI,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE;YAC1E,QAAQ,KAAK;gBACX,KAAK,SAAS;oBACZ,OAAO,KAAK,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;gBACjD,KAAK,OAAO;oBACV,OAAO,KAAK,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;aAClD;SACF;QACD,QACE,CAAC,KAAK,KAAK,SAAS,GAAG,KAAK,CAAC,2BAA2B,GAAG,KAAK,CAAC,yBAAyB,KAAK,kBAAkB,EACjH;KACH;IACD,OAAO,kBAAkB,CAAC;AAC5B;;AC1BA;;;;;;AAMO,IAAM,aAAa,GAAG,UAAI,KAAQ;IACvC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/C,CAAC;;ACFD,IAAM,cAAc,GAAG,UAAC,MAAW,EAAE,SAAiB;IACpD,OAAA,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AAAlF,CAAkF,CAAC;AAErF,IAAM,aAAa,GAAG,UAAC,MAAW,EAAE,SAAiB,IAAK,OAAA,MAAM,CAAC,SAAS,CAAC,IAAIA,yBAAK,CAAC,aAAa,CAAC,EAAE,CAAC,GAAA,CAAC;AAEvG,IAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,wCAAyC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC9F,IAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,8CAA+C,CAAC,EAAE,cAAc,CAAC,CAAC;AAI7G;IAAA;KAmBC;IAlBe,6BAAY,GAA1B,UAA2B,aAAkB;;QAC3C,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CAAA,MAAA,aAAa,CAAC,IAAI,0CAAE,mBAAmB,MAAK,YAAY,CAAC;KACjG;IAEa,6BAAY,GAA1B,UAA2B,aAAkB;;QAC3C,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CAAA,MAAA,aAAa,CAAC,IAAI,0CAAE,mBAAmB,MAAK,YAAY,CAAC;KACjG;IAEa,6BAAY,GAA1B,UAA2B,aAAkB;;QAC3C,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CAAA,MAAA,aAAa,CAAC,IAAI,0CAAE,mBAAmB,MAAK,YAAY,CAAC;KACjG;IAEa,2BAAU,GAAxB,UAAyB,aAAkB;;QACzC,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CAAA,MAAA,aAAa,CAAC,IAAI,0CAAE,mBAAmB,MAAK,UAAU,CAAC;KAC/F;IACa,2BAAU,GAAxB,UAAyB,aAAkB;;QACzC,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CAAA,MAAA,aAAa,CAAC,IAAI,0CAAE,mBAAmB,MAAK,UAAU,CAAC;KAC/F;IACH,uBAAC;AAAD,CAAC;;AClBM,IAAM,cAAc,GAAG,UAAC,EAAuE;QAArE,GAAG,SAAA,EAAE,QAAQ,cAAA,EAAE,UAAU,gBAAA,EAAc,OAAO,iBAAA;IAC7E,IAAM,KAAK,GAAGC,gBAAU,CAAmB,YAAY,CAAC,CAAC;IACzD,IAAM,YAAY,GAAG,8BAA8B,CAACA,gBAAU,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAChG,IAAM,KAAK,GAAG,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,CAAC,CAAC;IAE7E,IAAI,GAAG,KAAK,OAAO,EAAE;QACnB,IAAM,yBAAyB,IAC7BD;YACG,QAAQ;YACTA,8DAAgB,OAAO,6BAA0B,MAAM,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,OAAA,EAAE,IACzF,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,KAAK,EAAE,CACpC,CACN,CACJ,CAAC;QAEF,OAAO,YAAY,CAAC,2BAA2B,IAC7C,yBAAyB,KAEzBA,kDAAM,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAG,yBAAyB,CAAQ,CAC7E,CAAC;KACH;IAED,IAAM,cAAc,IAClBA,8DACY,OAAO,6BACO,MAAM,EAC9B,KAAK,EAAE;YACL,KAAK,OAAA;YACL,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,CAAC;SACR,IAEA,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,KAAK,EAAE,CACpC,CACR,CAAC;IAEF,OAAO,YAAY,CAAC,2BAA2B,IAC7CA;QACG,QAAQ;QACTA,kDAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,IAAG,cAAc,CAAQ,CAC/E,KAEHA,kDAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE;QAC3D,QAAQ;QACTA,kDAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAG,cAAc,CAAQ,CACxF,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,cAAc,CAAC,mBAAmB,GAAG,gBAAgB,CAAC;AACtD,cAAc,CAAC,WAAW,GAAG,gBAAgB;;;ICvCN,qCAAuC;IAA9E;;KA+BC;IA1BQ,kCAAM,GAAb;QAAA,iBAyBC;QAxBC,IAAM,KAA4C,IAAI,CAAC,KAAK,EAApD,QAAQ,cAAA,EAAE,GAAG,SAAA,EAAE,KAAK,WAAA,EAAE,MAAM,YAAA,EAAK,IAAI,cAAvC,sCAAyC,CAAa,CAAC;QAE7D,IAAM,SAAS,GAAGA,yBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAM,KAAK,GAAG,SAAS,IAAI,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QAE7E,QACEA,wCAAC,8BAA8B,CAAC,QAAQ,QACrC,UAAC,KAAK;YACL,KAAI,CAAC,YAAY,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAC1D,OAAO,CAAC,KAAI,CAAC,YAAY,CAAC,2BAA2B;iBAClD,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC;oBACnC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC;oBACpC,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IACrCA,wCAAC,OAAO,aAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,OAAO,EAAE,aAAa,IAAM,IAAI,GAC5F,KAAK,CACE,KAEVA,wCAAC,OAAO,aAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,OAAO,EAAE,aAAa,IAAM,IAAI,GACzE,QAAQ,CACD,CACX,CAAC;SACH,CACuC,EAC1C;KACH;IA7Ba,qCAAmB,GAAG,mBAAmB,CAAC;IAC1C,6BAAW,GAAG,mBAAmB,CAAC;IA6BlD,wBAAC;CA/BD,CAAuCA,yBAAK,CAAC,SAAS;;AC/BtD;SAOgB,OAAO,CAAC,GAAoB;IAC1C,OAAO,UAAC,OAAO,EAAE,QAAQ,EAAE,UAAU;QACnC,QACEA,wCAAC,iBAAiB,IAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE;gBACN,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACtC,OAAO,IAAI,CAAC;iBACb;gBACD,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,KAAK,EAAE,CAAC;aACjD,IAEA,OAAO,CACU,EACpB;KACH,CAAC;AACJ,CAAC;SAEe,IAAI,CAAC,GAA2B;IAA3B,oBAAA,EAAA,aAA2B;IAC9C,OAAO,UAAC,OAAO,EAAE,SAAS,EAAE,UAAU;QACpC,QACEA,wCAAC,cAAc,IAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,IAC7C,OAAO,CACO,EACjB;KACH,CAAC;AACJ;;AC9BA;SACgB,iBAAiB,CAAqB,YAAgB;IACpE,OAAO;QACL,OAAO,IAAI,CAAC,KAAyC,CAAC;KACvD,CAAC;AACJ;;ACTA,IAAM,GAAG,GAAsB,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC;AACrF,IAAA,kBAAkB,GAAgF,GAAG,mBAAnF,EAAE,QAAQ,GAAsE,GAAG,SAAzE,EAAE,aAAa,GAAuD,GAAG,cAA1D,EAAE,uBAAuB,GAA8B,GAAG,wBAAjC,EAAE,uBAAuB,GAAK,GAAG,wBAAR,CAAS;AAE9G,IAAM,gBAAgB,GACpB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,uBAAuB,CAAC;IAChC,OAAO,CAAC,uBAAuB,CAAC;IAChC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEvB,IAAM,SAAS,GAAG,QAAQ,KAAK,MAAM,IAAI,gBAAgB,CAAC;AAE1D,IAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAEhD,IAAM,SAAS,GAAG,SAAS,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;SAEvE,SAAS,CAAC,EAAW;IACnC,IAAI,SAAS,EAAE;QACb,OAAO,EAAE,YAAY,OAAO,CAAC;KAC9B;IAED,OAAO,KAAK,CAAC;AACf,CAAC;SAEe,MAAM,CAAC,IAAa;IAClC,IAAI,SAAS,EAAE;QACb,OAAO,IAAI,YAAY,IAAI,CAAC;KAC7B;IAED,OAAO,KAAK,CAAC;AACf;;AC7BA;;;;;;AAMA;AACO,IAAM,UAAU,GAAG,UAAI,KAAQ;IACpC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/C,CAAC;;ACTWE;AAAZ,WAAY,SAAS;IACnB,6CAAQ,CAAA;IACR,mEAAmB,CAAA;IACnB,yCAAM,CAAA;AACR,CAAC,EAJWA,iBAAS,KAATA,iBAAS;;ICkCR,iBAAiB,GAAGF,yBAAK,CAAC,aAAa,CAAwB;IAC1E,QAAQ,EAAE,cAAM,OAAA,SAAS,GAAA;IACzB,UAAU,EAAE,cAAM,OAAA,SAAS,GAAA;IAC3B,mBAAmB,EAAE,cAAM,OAAA,SAAS,GAAA;IACpC,mBAAmB,EAAE,cAAM,OAAA,SAAS,GAAA;IACpC,WAAW,EAAE,cAAM,QAAC;QAClB,YAAY,EAAE,EAAE;QAChB,mBAAmB,EAAE,KAAK;KAC3B,IAAC;IACF,0BAA0B,EAAE,cAAM,OAAA,KAAK,GAAA;CACxC,EAAE;AAEH,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,CAAC;;IAEN,4CAA8C;IAA5F;QAAA,qEAsJC;QArJQ,mBAAa,GAAgC,EAAE,CAAC;QAqH/C,cAAQ,GAAG,UAAC,KAA8B;YAChD,IAAI,KAAK,CAAC,2BAA2B,EAAE;gBACrC,OAAO,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;aAC5B;YAED,OAAOA,sDAAO,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAQ,CAAC;SAC3C,CAAC;QAEM,oBAAc,GAAG,UAAC,QAAmD;YAC3E,IAAIA,yBAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBAClC,OAAOA,yBAAK,CAAC,YAAY,CAAC,QAAQ,EAAE;oBAClC,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC;iBACnC,CAAC,CAAC;aACJ;YAED,OAAO,QAAQ,CAAC;SACjB,CAAC;;KAgBH;IAnJQ,8CAAW,GAAlB;QACE,IAAI,YAAY,GAAiB,EAAE,CAAC;QAEpC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,QAAQ,EAAE;YAC/C,YAAY,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;SACjD;aAAM;YACL,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;SACnF;QAEO,IAAA,KAAyB,YAAY,IAA7B,EAAR,GAAG,mBAAG,EAAE,KAAA,EAAE,KAAe,YAAY,OAAjB,EAAV,MAAM,mBAAG,CAAC,KAAA,CAAkB;QAC9C,OAAO;YACL,YAAY,EAAE;gBACZ,GAAG,KAAA;gBACH,MAAM,QAAA;aACP;YACD,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB;SACpD,CAAC;KACH;IAEM,2CAAQ,GAAf,UAAgB,OAAkC;QAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAClC;IAEM,6CAAU,GAAjB,UAAkB,OAAkC;QAClD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAEM,sDAAmB,GAA1B,UAA2B,QAAmC;QAC5D,KAAsB,UAAsE,EAAtE,KAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,GAAA,CAAC,EAAtE,cAAsE,EAAtE,IAAsE,EAAE;YAAzF,IAAM,OAAO,SAAA;YAChB,OAAO,CAAC,WAAW,EAAE,CAAC;SACvB;KACF;IAEM,sDAAmB,GAA1B,UAA2B,OAAkC,EAAE,OAAiB;QACtE,IAAA,mBAAmB,GAAK,IAAI,CAAC,KAAK,oBAAf,CAAgB;QAC3C,IAAI,mBAAmB,EAAE;YACvB,IAAM,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAC,CAAC;gBAC/C,IAAI,CAAC,KAAK,OAAO,EAAE;oBACjB,OAAO,CAAC,OAAO,CAAC;iBACjB;gBACD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;aACrB,CAAC,CAAC;YACH,mBAAmB,CAAC,aAAa,CAAC,CAAC;SACpC;KACF;IAEM,6DAA0B,GAAjC;QACE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,UAAU,GAAA,CAAC,CAAC;KACrD;IAEM,sDAAmB,GAA1B;QACU,IAAA,mBAAmB,GAAK,IAAI,CAAC,KAAK,oBAAf,CAAgB;QAC3C,IAAI,mBAAmB,EAAE;YACvB,IAAM,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,EAAE,GAAA,CAAC,CAAC;YACpE,mBAAmB,CAAC,aAAa,CAAC,CAAC;SACpC;KACF;IAEM,mEAAgC,GAAvC;QACE,IAAM,oBAAoB,GAAG,kBAAI,IAAI,CAAC,aAAa,QAAE,GAAG,CAAC,UAAC,CAAC,IAAK,QAAC;YAC/D,MAAM,EAAE,CAAC;YACT,QAAQ,EAAE,CAAC,CAAC,kBAAkB,EAAE;SACjC,IAAC,CAAC,CAAC;QACJ,oBAAoB,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;YAC7B,IAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC7B,IAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC7B,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;gBAClD,OAAO,CAAC,CAAC;aACV;YAED,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;gBACzB,OAAO,CAAC,CAAC;aACV;YACD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;gBACzB,OAAO,CAAC,CAAC,CAAC;aACX;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aAC7C;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;SAC7C,CAAC,CAAC;QACH,OAAO,oBAAoB,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,GAAA,CAAC,CAAC;KAClD;IAEY,2CAAQ,GAArB,UAAsB,gCAAsD;;;;;;;wBACpE,SAAS,GAAG,wBAAwB,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;wBAE1F,qBAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,aAAa,EAAE,GAAA,CAAC,CAAC,EAAA;;wBAAnE,SAAmE,CAAC;wBAE9D,gCAAgC,GAAG,IAAI,CAAC,gCAAgC,EAAE,CAAC;wBAC3E,UAAU,GAAG,gCAAgC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,EAAE,GAAA,CAAC,CAAC;wBAC9E,IAAI,SAAS,KAAKE,iBAAS,CAAC,iBAAiB,EAAE;4BAC7C,MAAA,gCAAgC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,GAAA,CAAC,0CAAE,KAAK,EAAE,CAAC;yBACvF;wBACD,IAAI,SAAS,KAAKA,iBAAS,CAAC,MAAM,EAAE;4BAClC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,EAAE,CAAC;yBACrB;wBACD,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;4BAClC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,UAAU,CAAC,CAAC;yBAC7C;wBACD,sBAAO,CAAC,UAAU,EAAC;;;;KACpB;IAEc,qCAAY,GAA3B,UAA4B,gCAAsD;QAChF,IAAI,OAAO,gCAAgC,KAAK,QAAQ,IAAI,WAAW,IAAI,gCAAgC,EAAE;YAC3G,OAAO,gCAAgC,CAAC,SAAS,CAAC;SACnD;aAAM,IAAI,CAAC,gCAAgC,EAAE;YAC5C,OAAOA,iBAAS,CAAC,MAAM,CAAC;SACzB;QACD,OAAOA,iBAAS,CAAC,IAAI,CAAC;KACvB;IAsBM,yCAAM,GAAb;QAAA,iBAaC;QAZC,QACEF,wCAAC,8BAA8B,CAAC,QAAQ,QACrC,UAAC,KAAK;YACL,KAAI,CAAC,YAAY,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAC1D,QACEA,wCAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAI,IACpC,KAAI,CAAC,cAAc,CAAC,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,CAC3B,EAC7B;SACH,CACuC,EAC1C;KACH;IACH,+BAAC;AAAD,CAAC,CAtJ6CA,yBAAK,CAAC,SAAS;;;IClBpB,uCAAyC;IAAlF;QAAA,qEA8DC;QAtDS,cAAQ,GAAG,iBAAiB,CAAiC,CAAC,CAAC;QAa/D,kBAAY,GAAoC,IAAI,CAAC;QAwCrD,qBAAe,GAAG,UAAC,EAAmC,IAAK,QAAC,KAAI,CAAC,YAAY,GAAG,EAAE,IAAC,CAAC;;KAC7F;IApCc,oCAAM,GAAnB,UACE,gCAAwF;QAAxF,iDAAA,EAAA,qCAA2D,SAAS,EAAEE,iBAAS,CAAC,MAAM,EAAE;;;;;wBAExF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;4BACtB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;yBAChD;wBACD,qBAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,gCAAgC,CAAC,EAAA;;wBAAlE,SAAkE,CAAC;;;;;KACpE;IAKM,sCAAQ,GAAf,UACE,gCAAwF;QAAxF,iDAAA,EAAA,qCAA2D,SAAS,EAAEA,iBAAS,CAAC,MAAM,EAAE;QAExF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAChD;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;KACrE;IAEM,oCAAM,GAAb;QACE,QACEF,wCAAC,wBAAwB,gBACb,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAChC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACrC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,mBAAmB,EACxD,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAElD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACK,EAC3B;KACH;IA1Da,uCAAmB,GAAG,qBAAqB,CAAC;IAC5C,+BAAW,GAAG,qBAAqB,CAAC;IAEpC,gCAAY,GAAiB;QACzC,mBAAmB,EAAE,SAAS;KAC/B,CAAC;IAIY,6BAAS,GAAG;QACxB,YAAY,EAAZ,UAAa,KAA+B,EAAE,QAAwC,EAAE,aAAqB;YACnG,IAAA,YAAY,GAAK,KAAK,aAAV,CAAW;YAC/B,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;gBACpC,OAAO,IAAI,KAAK,CACd,WAAI,aAAa,4GAAyG,CAC3H,CAAC;aACH;SACF;KACF,CAAC;IA2CJ,0BAAC;CA9DD,CAAyCA,yBAAK,CAAC,SAAS;;AC9BxD;AAYA,IAAM,sBAAsB,GAAG,UAAC,QAAiB;IAC/C,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC5F,CAAC,CAAC;AAEF;;;AAIO,IAAM,WAAW,GAAG,UAAC,QAAuC;;;;;;;;IASjE,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE;;;QAG3B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;;;QAGvB,OAAO,QAAQ,CAAC;KACjB;IAED,IAAI,QAAQ,CAAC;IAEb,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE;;;;;QAKpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;YACrB,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;SACnC;KACF;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE;;;QAG1B,OAAO,QAAQ,CAAC;KACjB;IAED,IAAI;;;;;QAKF,QAAQ,GAAGG,oBAAW,CAAC,QAAQ,CAAC,CAAC;KAClC;IAAC,OAAO,CAAC,EAAE;;;;QAIVC,2BAAO,CACL,KAAK,EACL,+CAA+C;YAC7C,IAAI;YACJ,+FAA+F;YAC/F,MAAM;YACN,CAAC,CAAC,OAAO,CACZ,CAAC;QACF,OAAO,IAAI,CAAC;KACb;;IAGD,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC;AAC/C,CAAC;;SC5EqB,oBAAoB,CAAC,OAAoB,EAAE,YAA0B;;;;;;oBACnF,gBAAgB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;oBACjD,WAAW,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;oBACvD,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;oBAE9C,SAAS,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;oBAClC,YAAY,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;0BAE1C,gBAAgB,KAAK,QAAQ,CAAC,IAAI,CAAA,EAAlC,wBAAkC;oBAC9B,IAAI,GAAG,QAAQ,CAAC,eAAe,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;oBACvE,cAAc,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC;oBACzD,aAAa,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC;oBAEtD,mBAAmB,GACvB,WAAW,CAAC,GAAG,IAAI,SAAS;wBAC5B,WAAW,CAAC,IAAI,IAAI,CAAC;wBACrB,WAAW,CAAC,MAAM,IAAI,cAAc,GAAG,YAAY;wBACnD,WAAW,CAAC,KAAK,IAAI,aAAa,CAAC;oBAErC,IAAI,mBAAmB,EAAE;wBACvB,sBAAO;qBACR;oBAED,qBAAM,QAAQ,CAAC;4BACb,IAAI,EAAE,WAAW,CAAC,IAAI;4BACtB,GAAG,EAAE,WAAW,CAAC,GAAG,GAAG,SAAS;yBACjC,CAAC,EAAA;;oBAHF,SAGE,CAAC;;;oBAEH,IAAI,WAAW,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE;wBACjG,sBAAO;qBACR;oBAED,qBAAM,YAAY,CAChB,gBAAgB,EAChB,gBAAgB,CAAC,UAAU,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,EACjE,gBAAgB,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,SAAS,CAC3E,EAAA;;oBAJD,SAIC,CAAC;oBACF,qBAAM,QAAQ,CAAC;4BACb,IAAI,EAAE,WAAW,CAAC,IAAI;4BACtB,GAAG,EAAE,WAAW,CAAC,GAAG;yBACrB,CAAC,EAAA;;oBAHF,SAGE,CAAC;;;;;;CAEN;AAED,SAAS,YAAY,CAAC,OAAoB,EAAE,CAAS,EAAE,CAAS;IAC9D,IAAI,OAAqC,CAAC;IAC1C,IAAI,OAAO,KAAK,qBAAqB,EAAE,EAAE;QACvC,OAAO,GAAG;YACR,UAAU,EAAE,MAA4B;YACxC,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW;YAC5C,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW;YAC5C,MAAM,EAAE,YAAY;YACpB,SAAS,EAAE,GAAG,EAAE;YAChB,CAAC,GAAA;YACD,CAAC,GAAA;SACF,CAAC;KACH;SAAM;QACL,OAAO,GAAG;YACR,UAAU,EAAE,OAAO;YACnB,MAAM,EAAE,OAAO,CAAC,UAAU;YAC1B,MAAM,EAAE,OAAO,CAAC,SAAS;YACzB,MAAM,EAAE,aAAa;YACrB,SAAS,EAAE,GAAG,EAAE;YAChB,CAAC,GAAA;YACD,CAAC,GAAA;SACF,CAAC;KACH;IAED,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,IAAI,uBAAM,OAAO,KAAE,OAAO,SAAA,IAAG,GAAA,CAAC,CAAC;AACjE,CAAC;AAaD,SAAS,IAAI,CAAC,OAAoB;IAChC,IAAM,IAAI,GAAG,GAAG,EAAE,CAAC;IACnB,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC;IACrE,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAE5B,IAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvE,IAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IAEvE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEvD,IAAI,QAAQ,KAAK,OAAO,CAAC,CAAC,IAAI,QAAQ,KAAK,OAAO,CAAC,CAAC,EAAE;QACpD,MAAM,CAAC,qBAAqB,CAAC,cAAM,OAAA,IAAI,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;KACnD;SAAM;QACL,OAAO,CAAC,OAAO,EAAE,CAAC;KACnB;AACH,CAAC;AAED,IAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,IAAM,eAAe,GAAG,UAAC,SAAkB;IACzC,IAAI,SAAS,EAAE;QACb,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;YACvC,OAAO,UAAC,CAAM,EAAE,CAAM,EAAE,CAAM,IAAK,OAAA,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAA,CAAC;SACxD;QAED,OAAO,UAAC,CAAM,EAAE,CAAM,EAAE,CAAM,IAAK,OAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAA,CAAC;KAC1D;IAED,OAAO,cAAM,OAAA,SAAS,GAAA,CAAC;AACzB,CAAC,CAAC;AAEF,IAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AAEhD,IAAM,GAAG,GACP,SAAS,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG;MACrD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;MAC/C,IAAI,CAAC,GAAG,CAAC;AAEf,SAAS,aAAa,CAAC,OAAgB,EAAE,CAAS,EAAE,CAAS;IAC3D,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;IACvB,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;KAC1D;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,SAAS,oBAAoB,CAAC,EAAe;IAC3C,IAAI,MAAyB,CAAC;IAC9B,IAAI,kBAAqC,CAAC;IAC1C,IAAI,kBAAqC,CAAC;IAC1C,IAAI,cAAc,GAAgB,EAAE,CAAC;IACrC,GAAG;QACD,IAAI,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,aAAa,YAAY,WAAW,CAAC,EAAE;YACtG,OAAO,qBAAqB,EAAE,CAAC;SAChC;QACD,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC;QAC9C,MAAM,GAAG,cAAc,KAAK,QAAQ,CAAC,IAAI,CAAC;QAC1C,kBAAkB;YAChB,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY;gBACzD,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;QAC1D,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC;KAC3F,QAAQ,CAAC,MAAM,IAAI,EAAE,kBAAkB,IAAI,CAAC,kBAAkB,CAAC,EAAE;IAElE,MAAM,GAAG,IAAI,CAAC;IACd,kBAAkB,GAAG,IAAI,CAAC;IAC1B,kBAAkB,GAAG,IAAI,CAAC;IAE1B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,EAA4C;QAA1C,IAAI,UAAA,EAAE,GAAG,SAAA;IAC3B,OAAO,YAAY,CACjB,qBAAqB,EAAE,EACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,EACzD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,CACzD,CAAC;AACJ;;SCzKgB,oBAAoB,CAClC,OAA6B,EAC7B,MAA4B,EAC5B,QAAiB;IAEjB,IAAM,IAAI,GAAG,UAAC,IAAoC,IAAc,OAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,GAAA,CAAC;IAC1F,IAAM,EAAE,GAAG,UAAC,IAAoC,IAAc,OAAA,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,GAAA,CAAC;IAEvF,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE;QACnB,OAAO,MAAM,CAAC;KACf;IAED,IAAI,QAAQ,EAAE;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC;KAC3C;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE;QACjC,OAAO,IAAI,CAAC;KACb;IAED,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE;QACnB,OAAO,MAAM,CAAC;KACf;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;QAClC,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,IAAI,CAAC;AACd,CAAC;SAEe,OAAO,CAAC,UAAgC;IACtD,OAAO,UAAU,GAAG,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;AAClD,CAAC;SAEe,QAAQ,CAAC,UAAgC;IACvD,OAAO,UAAU,GAAG,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;AAC9C,CAAC;SAEe,cAAc,CAAC,UAAgC;IAC7D,OAAO,UAAU,GAAG,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;AACpD,CAAC;SAEe,OAAO,CAAC,CAAuB,EAAE,CAAuB;IACtE,IAAI,CAAC,KAAK,CAAC,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IACD,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC;AACjH;;ACnCA,IAAI,SAAS,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;IACnD,IAAM,CAAC,GAAG,MAAa,CAAC;IACxB,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC;CAC3B;AAqCD;IAA+C,6CAG9C;IAHD;QAAA,qEA2NC;QAvNQ,WAAK,GAAmC;YAC7C,UAAU,EAAE,IAAI;SACjB,CAAC;QAEK,gBAAU,GAAG,KAAK,CAAC;QAKnB,aAAO,GAA0B,KAAI,CAAC,OAAO,CAAC;QAoG7C,eAAS,GAAG,UAAC,QAAiC;YAC5C,IAAA,QAAQ,GAAK,KAAI,CAAC,KAAK,SAAf,CAAgB;YAEhC,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAM,KAAK,GAAG,QAAe,CAAC;YAC9B,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;gBACtB,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE;oBACnC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACrB;gBACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE;oBAC9D,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC;iBAC9B;aACF;YACD,KAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;SACvB,CAAC;QAEM,iBAAW,GAAG,UAAC,OAAgC;YACrD,KAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;SACtC,CAAC;QAEK,iBAAW,GAAG;YACnB,OAAO,KAAI,CAAC,QAAQ,CAAC;SACtB,CAAC;;KAoFH;IA1MQ,qDAAiB,GAAxB;QACEA,2BAAO,CACL,IAAI,CAAC,OAAO,EACZ,qEAAqE;YACnE,kEAAkE,CACrE,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC7B;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KAC7C;IAEM,wDAAoB,GAA3B;QACE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC/B;IAEM,sDAAkB,GAAzB;QACE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KAC7C;IAEY,yCAAK,GAAlB;;;;;;wBACQ,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;8BACnC,WAAW,YAAY,WAAW,CAAA,EAAlC,wBAAkC;wBAC9B,KAAwC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAhE,mBAAmB,yBAAA,EAAE,YAAY,kBAAA,CAAgC;6BACrE,CAAC,mBAAmB,EAApB,wBAAoB;wBACtB,qBAAM,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC,EAAA;;wBAArD,SAAqD,CAAC;;;wBAExD,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE;4BACxD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;yBACpB;;;wBAEH,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;;;;;KACzB;IAEM,0CAAM,GAAb;QAAA,iBA4DC;QA3DO,IAAA,KAAoC,IAAI,CAAC,KAAK,EAA5C,QAAQ,cAAA,EAAc,OAAO,iBAAe,CAAC;QAC7C,IAAA,UAAU,GAAK,IAAI,CAAC,KAAK,WAAf,CAAgB;QAElC,IAAI,WAAW,GAA4B,QAAQ,IACjDJ,yBAAK,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC3B,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,OAAO;YAC3D,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,SAAS;YAC/D,MAAM,EAAE;;gBAAC,cAAc;qBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;oBAAd,yBAAc;;gBACrB,KAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;oBAC3C,CAAA,KAAA,QAAQ,CAAC,KAAK,EAAC,MAAM,WAAI,IAAI,EAAE;iBAChC;aACF;YACD,QAAQ,EAAE;;gBAAC,cAAc;qBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;oBAAd,yBAAc;;gBACvB,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAC7C,CAAA,KAAA,QAAQ,CAAC,KAAK,EAAC,QAAQ,WAAI,IAAI,EAAE;iBAClC;aACF;YACD,aAAa,EAAE;;gBAAC,cAAc;qBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;oBAAd,yBAAc;;gBAC5B,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE;oBAClD,CAAA,KAAA,QAAQ,CAAC,KAAK,EAAC,aAAa,WAAI,IAAI,EAAE;iBACvC;aACF;SACF,CAAC,KAEFA,kDAAM,GAAG,EAAE,IAAI,CAAC,WAAW,GAAI,CAChC,CAAC;QACF,IAAI,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YAC5C,WAAW,GAAGA,yBAAK,CAAC,YAAY,CAAC,WAAW,EAAE;gBAC5C,kBAAkB,EAAE;;oBAAC,cAAc;yBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;wBAAd,yBAAc;;oBACjC,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBACvB,KAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,kBAAkB,EAAE;wBACnE,OAAO,CAAA,KAAA,QAAQ,CAAC,KAAK,EAAC,kBAAkB,WAAI,IAAI,EAAE;qBACnD;iBACF;aACF,CAAC,CAAC;SACJ;QAED,QACEA,wCAAC,8BAA8B,CAAC,QAAQ,QACrC,UAAC,KAAK;YACL,KAAI,CAAC,YAAY,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAC1D,OAAOA,yBAAK,CAAC,YAAY,CACvB,KAAI,CAAC,KAAK,CAAC,YAAY,CACrB,KAAI,CAAC,YAAY,CAAC,2BAA2B,GAAG,WAAW,GAAGA,sDAAO,WAAW,CAAQ,EACxF,CAAC,CAAC,UAAU,EACZ,UAAU,CACX,EACD;gBACE,UAAU,EAAE,OAAO;aACpB,CACF,CAAC;SACH,CACuC,EAC1C;KACH;IA0BM,sDAAkB,GAAzB;QACE,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,WAAW,YAAY,WAAW,EAAE;YACtC,IAAM,IAAI,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;YACjD,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SACtC;QACD,OAAO,IAAI,CAAC;KACb;IAEM,+CAAW,GAAlB;QACE,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;KACvC;IAEY,iDAAa,GAA1B;;;gBACE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,sBAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAC;;;KAClD;IAEM,4CAAQ,GAAf;QACE,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC;KACpD;IAEM,8CAAU,GAAjB;QACE,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC;KACtD;IAEM,iDAAa,GAApB;QACE,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;KAChF;IAEO,8CAAU,GAAlB;QAAA,iBAQC;QAPC,UAAU,CAAC;YACT,KAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,KAAI,CAAC,aAAa,EAAE,EAAE;gBACzB,KAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAI,CAAC,CAAC;aACxC;YACD,KAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACnB,CAAC,CAAC;KACJ;IAEO,mDAAe,GAAvB,UAAwB,MAA4B;QAClD,IAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC7B;IAEO,iDAAa,GAArB,UAAsB,UAAgC;QAAtD,iBAeC;QAdC,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAEtC,IAAI,OAAO,KAAK,UAAU,EAAE;YAC1B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;QAED,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO;YACzB,KAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,YAAA,EAAE,EAAE;gBAC5B,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE;oBAC5C,KAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAI,EAAE,CAAC,UAAU,CAAC,CAAC;iBACrD;gBACD,OAAO,EAAE,CAAC;aACX,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ;IAEO,uDAAmB,GAA3B,UAA4B,OAAgB;QAC1C,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACrC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;YAChC,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACtC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;SACnE;QACD,OAAO,MAAM,CAAC;KACf;IAEO,wDAAoB,GAA5B,UAA6B,MAA4B;QACvD,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACtC,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YAC5B,OAAO,OAAO,CAAC;SAChB;QACD,IAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC;QAC3D,OAAO,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;KACxD;IA9Ma,qCAAW,GAAG,iBAAiB,CAAC;IA+MhD,gCAAC;CA3ND,CAA+CA,yBAAK,CAAC,SAAS;;;IC9BvB,qCAAuC;IAA9E;;KAyBC;IArBQ,kCAAM,GAAb;QACQ,IAAA,KAAkE,IAAI,CAAC,KAAK,EAA1E,QAAQ,cAAA,EAAE,cAAc,oBAAA,EAAE,aAAa,mBAAA,EAAc,MAAM,iBAAe,CAAC;QACnF,IAAM,UAAU,GAAyB,cAAc;cACnD;gBACE,KAAK,EAAE,cAAc,CAAC,KAAK,IAAI,OAAO;gBACtC,SAAS,EAAE,cAAc,CAAC,IAAI,IAAI,WAAW;gBAC7C,OAAO,EAAE,cAAc,CAAC,OAAO;gBAC/B,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,KAAK;aACjD;cACD,IAAI,CAAC;QAET,QACEA,wCAAC,yBAAyB,gBACd,MAAM,EAChB,YAAY,EAAE,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,EACnD,UAAU,EAAE,UAAU,IAErB,QAAQ,CACiB,EAC5B;KACH;IAvBa,qCAAmB,GAAG,mBAAmB,CAAC;IAC1C,6BAAW,GAAG,mBAAmB,CAAC;IAuBlD,wBAAC;CAzBD,CAAuCA,yBAAK,CAAC,SAAS;;;;ICTpD,2BACmB,MAA+B,EAC/B,MAAuB,EACvB,IAAc,EACd,IAAO;QAHP,WAAM,GAAN,MAAM,CAAyB;QAC/B,WAAM,GAAN,MAAM,CAAiB;QACvB,SAAI,GAAJ,IAAI,CAAU;QACd,SAAI,GAAJ,IAAI,CAAG;KACtB;IAEG,gCAAI,GAAX,UAAoB,UAAiC,EAAE,IAAmC;QACxF,IAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;YACpB,OAAO;SACR;QAED,IAAM,OAAO,GAAG,IAAI,iBAAiB,CAAgB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7B;IAEM,iCAAK,GAAZ,UAAqB,UAAmC,EAAE,IAAuC;QAC/F,IAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjD,OAAO;SACR;QAED,IAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACrC,IAAM,IAAI,mCAAO,IAAI,CAAC,IAAI,UAAE,CAAC,CAAC,QAAQ,EAAE,SAAC,CAAC;YAC1C,IAAM,OAAO,GAAG,IAAI,iBAAiB,CAAgB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/F,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SACvC;KACF;IAWM,mCAAO,GAAd,UACE,SAAgC,EAChC,uBAAyD,EACzD,IAA0B,EAC1B,KAAuB,EACvB,WAAqB;QAErB,IAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,gBAAgB,CAAC,WAAW,EAAE,EAAE;YAClC,OAAO;SACR;QAED,IAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;QAED,IAAI,gBAAgB,CAAC,uBAAuB,CAAC,EAAE;YAC7C,gBAAgB,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;SAC/C;aAAM;YACL,gBAAgB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,MAAA,EAAE,KAAK,OAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;SACtF;KACF;IAEO,uCAAW,GAAnB,UAA4B,UAAiC;QAC3D,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAE9C,IAAI,IAAI,GAAQ,IAAI,CAAC,IAAI,CAAC;QAC1B,KAAmB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE;YAApB,IAAM,IAAI,aAAA;YACb,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;gBACpB,OAAO,IAAI,CAAC;aACb;YACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB;QAED,OAAO,EAAE,IAAI,MAAA,EAAE,IAAI,kCAAM,IAAI,CAAC,IAAI,SAAK,IAAI,OAAC,EAAE,CAAC;KAChD;IACH,wBAAC;AAAD,CAAC,IAAA;AAED,IAAM,gBAAgB,GAAG,UAAC,QAAiB;IACzC,OAAA,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AAAzF,CAAyF;;;IC1FzF,0BAA6B,IAAiC,EAAmB,MAAuB;QAA3E,SAAI,GAAJ,IAAI,CAA6B;QAAmB,WAAM,GAAN,MAAM,CAAiB;KAAI;IAErG,kCAAO,GAAd,UAAuB,UAAiC;QACtD,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,iBAAiB,CAAS,IAAI,CAAC,CAAC;KAC7C;IAEM,yCAAc,GAArB,UAAsB,KAAa;QACjC,OAAO,IAAI,CAAC,iBAAiB,CAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;KACnE;IAEM,uCAAY,GAAnB,UAA0C,GAAS;QACjD,OAAO,IAAI,CAAC,iBAAiB,CAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;KAC1D;IAEM,8BAAG,GAAV;QACE,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAChD;IAEO,4CAAiB,GAAzB,UAAkC,IAAc;QAC9C,IAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAS,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,gBAAgB,CAAS,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACxD;IAEO,0CAAe,GAAvB,UAAgC,IAAc;QAC5C,IAAI,OAAO,GAAkC,IAAI,CAAC,IAAI,CAAC;QACvD,KAAmB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE;YAApB,IAAM,IAAI,aAAA;YACb,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACjC,OAAO,IAAI,CAAC;aACb;YACD,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAClC;QACD,OAAO,OAAO,CAAC;KAChB;IACH,uBAAC;AAAD,CAAC;;ACpCD;IAGE,0BAAY,IAAwB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC1D;IAEM,oCAAS,GAAhB,UAAiB,MAAuB;QACtC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAChD;IAEM,8BAAG,GAAV,UAAW,UAA0B;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KACnC;IAEM,sCAAW,GAAlB;QACE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;KAC/B;IAEM,kCAAO,GAAd,UAAuB,IAAc;QACnC,IAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAS,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,gBAAgB,CAAS,IAAI,CAAC,CAAC;KAC3C;IAEO,0CAAe,GAAvB,UAAgC,IAAc;QAC5C,IAAI,IAAI,GAAwB,IAAI,CAAC,IAAI,CAAC;QAC1C,KAAmB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE;YAApB,IAAM,IAAI,aAAA;YACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;aACpB;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;oBACpB,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,IAAI;iBACf,CAAC;aACH;YACD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC5B;QACD,OAAO,IAAI,CAAC;KACb;IACH,uBAAC;AAAD,CAAC;;AC9CD,IAAM,oBAAoB,GACxB,gIAAgI,CAAC;AACnI,IAAM,kBAAkB,GAAG,6DAA6D,CAAC;SAQzE,WAAW,CAAC,MAAc;IACxC,IAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnF,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;KAClD;IACD,MAAM,IAAI,KAAK,CAAC,0CAAmC,MAAM,MAAG,CAAC,CAAC;AAChE,CAAC;SAEe,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,GAAA,CAAC,CAAC;AACnD,CAAC;AAED;IAAA;QACmB,UAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;KAsBtD;IApBQ,kCAAQ,GAAf,UAA2B,UAAiC;QAC1D,IAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QAE3C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACjC,IAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;YACvC,IAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;SACtC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAa,CAAC;KACjD;IAEM,6BAAG,GAAV,UAAsB,UAAiC;QACrD,IAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KACrC;IAED,sBAAW,iCAAI;aAAf;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SACxB;;;OAAA;IACH,sBAAC;AAAD,CAAC;;ACvCD,SAAS,QAAQ,CAAI,IAAO,EAAE,cAAqC,EAAE,MAAuB;IAC1F,IAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAK,CAAC;IACnD,IAAM,OAAO,GAAG,IAAI,iBAAiB,CAAO,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAChF,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9B,OAAO,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC;SAIe,eAAe,CAAI,IAA2B;IAC5D,IAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,OAAO,UAAC,KAAQ;QACd,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;KACtC,CAAC;AACJ;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/utils/getValidationTextColor.ts","../../src/utils/isNonNullable/isNonNullable.ts","../../src/ReactUiDetection.ts","../../src/ValidationText.tsx","../../src/ValidationTooltip.tsx","../../src/ErrorRenderer.tsx","../../src/utils/createPropsGetter.ts","../../src/utils/utils.ts","../../src/utils/isNullable/isNullable.ts","../../src/FocusMode.tsx","../../src/ValidationContextWrapper.tsx","../../src/ValidationContainer.tsx","../../src/utils/getRootNode/getRootNode.ts","../../src/smoothScrollIntoView.ts","../../src/ValidationHelper.ts","../../src/ValidationWrapperInternal.tsx","../../src/ValidationWrapper.tsx","../../src/utils/featureFlagsContext/ValidationsFeatureFlagsContext.tsx","../../src/utils/featureFlagsContext/FeatureFlagsHelpers.tsx","../../src/Validations/ValidationBuilder.ts","../../src/Validations/ValidationReader.ts","../../src/Validations/ValidationWriter.ts","../../src/Validations/PathHelper.ts","../../src/Validations/index.ts"],"sourcesContent":["import type { ValidationLevel } from '../ValidationWrapperInternal';\nimport type { ThemeValidations } from '../../typings/theme-context';\n\nexport const DEFAULT_TEXT_COLOR = '#d43517';\n\nexport function getValidationTextColor(theme: ThemeValidations, level: ValidationLevel = 'error') {\n return (\n (level === 'warning' ? theme.validationsTextColorWarning : theme.validationsTextColorError) || DEFAULT_TEXT_COLOR\n );\n}\n","/**\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 React from 'react';\n\nimport { 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 importContext = (module: any, component: string) => module[component] || React.createContext({});\n\nconst Tooltip = defaultOrNamed(require('__REACT_UI_PACKAGE__/components/Tooltip'), 'Tooltip');\nconst ThemeContext = importContext(require('__REACT_UI_PACKAGE__/lib/theming/ThemeContext'), 'ThemeContext');\n\nexport { Tooltip, ThemeContext };\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, { useContext } from 'react';\n\nimport { Nullable } from '../typings/Types';\nimport { ThemeValidations } from '../typings/theme-context';\n\nimport { TextPosition, Validation } from './ValidationWrapperInternal';\nimport { getValidationTextColor } from './utils/getValidationTextColor';\nimport { ThemeContext } from './ReactUiDetection';\n\nexport interface ValidationTextProps {\n pos: TextPosition;\n children: React.ReactNode;\n validation: Nullable<Validation>;\n 'data-tid'?: string;\n}\n\nexport const ValidationText = ({ pos, children, validation, 'data-tid': dataTid }: ValidationTextProps) => {\n const theme = useContext<ThemeValidations>(ThemeContext);\n const color = getValidationTextColor(theme, validation?.level);\n\n if (pos === 'right') {\n const childrenAndValidationText = (\n <>\n {children}\n <span data-tid={dataTid} data-validation-message=\"text\" style={{ marginLeft: '10px', color }}>\n {(validation && validation.message) || ''}\n </span>\n </>\n );\n return <div style={{ display: 'inline-block' }}>{childrenAndValidationText}</div>;\n }\n\n const validationText = (\n <span\n data-tid={dataTid}\n data-validation-message=\"text\"\n style={{\n color,\n overflow: 'visible',\n whiteSpace: 'nowrap',\n position: 'absolute',\n top: '2px',\n left: 0,\n }}\n >\n {(validation && validation.message) || ''}\n </span>\n );\n\n const childrenAndValidationText = (\n <>\n {children}\n <span style={{ position: 'absolute', bottom: 0, left: 0, height: 0 }}>{validationText}</span>\n </>\n );\n\n return <div style={{ position: 'relative', display: 'inline-block' }}>{childrenAndValidationText}</div>;\n};\n\nValidationText.__KONTUR_REACT_UI__ = 'ValidationText';\nValidationText.displayName = 'ValidationText';\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 'data-tid'?: string;\n}\n\nexport class ValidationTooltip extends React.Component<ValidationTooltipProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationTooltip';\n public static displayName = 'ValidationTooltip';\n\n public render() {\n const { children, pos, error, render, ...rest } = this.props;\n\n const onlyChild = React.Children.only(children);\n const child = onlyChild && onlyChild.props ? onlyChild.props.children : null;\n\n return ReactUiDetection.isRadioGroup(child) ||\n ReactUiDetection.isTokenInput(child) ||\n ReactUiDetection.isSwitcher(child) ? (\n <Tooltip useWrapper={false} pos={pos} render={error && render} trigger={'hover&focus'} {...rest}>\n {child}\n </Tooltip>\n ) : (\n <Tooltip pos={pos} render={error && render} trigger={'hover&focus'} {...rest}>\n {children}\n </Tooltip>\n );\n }\n}\n","import React from 'react';\n\nimport { ValidationText } from './ValidationText';\nimport { TooltipPosition, ValidationTooltip } from './ValidationTooltip';\nimport { RenderErrorMessage, TextPosition } 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: TextPosition = 'right'): RenderErrorMessage {\n return (control, _hasError, validation) => {\n return (\n <ValidationText pos={pos} validation={validation}>\n {control}\n </ValidationText>\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, @typescript-eslint/no-unnecessary-type-constraint\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","export enum FocusMode {\n 'Errors',\n 'ErrorsAndWarnings',\n 'None',\n}\n","import React from 'react';\n\nimport { ValidationWrapperInternal } from './ValidationWrapperInternal';\nimport type { ScrollOffset, ValidateArgumentType } from './ValidationContainer';\nimport { isNullable } from './utils/isNullable';\nimport { FocusMode } from './FocusMode';\n\nexport interface ValidationContextSettings {\n scrollOffset: ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextWrapperProps {\n 'data-tid'?: string;\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(withoutFocusOrValidationSettings: ValidateArgumentType): Promise<boolean> {\n const focusMode = ValidationContextWrapper.getFocusMode(withoutFocusOrValidationSettings);\n\n await Promise.all(this.childWrappers.map((x) => x.processSubmit()));\n\n const childrenWrappersSortedByPosition = this.getChildWrappersSortedByPosition();\n const firstError = childrenWrappersSortedByPosition.find((x) => x.hasError());\n if (focusMode === FocusMode.ErrorsAndWarnings) {\n childrenWrappersSortedByPosition.find((x) => x.hasError() || x.hasWarning())?.focus();\n }\n if (focusMode === FocusMode.Errors) {\n firstError?.focus();\n }\n if (this.props.onValidationUpdated) {\n this.props.onValidationUpdated(!firstError);\n }\n return !firstError;\n }\n\n private static getFocusMode(withoutFocusOrValidationSettings: ValidateArgumentType) {\n if (typeof withoutFocusOrValidationSettings === 'object' && 'focusMode' in withoutFocusOrValidationSettings) {\n return withoutFocusOrValidationSettings.focusMode;\n } else if (!withoutFocusOrValidationSettings) {\n return FocusMode.Errors;\n }\n return FocusMode.None;\n }\n\n private renderChildren = (children: ValidationContextWrapperProps['children']) => {\n if (React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement, {\n 'data-tid': this.props['data-tid'],\n });\n }\n\n return children;\n };\n\n public render() {\n return (\n <ValidationContext.Provider value={this}>\n {this.renderChildren(<div style={{ display: 'inline' }}>{this.props.children}</div>)}\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';\nimport { FocusMode } from './FocusMode';\n\nexport interface ScrollOffset {\n top?: number;\n bottom?: number;\n}\n\nexport interface ValidationSettings {\n focusMode: FocusMode;\n}\n\nexport type ValidateArgumentType = boolean | ValidationSettings;\n\nexport interface ValidationContainerProps {\n 'data-tid'?: string;\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 public static displayName = '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?: boolean): Promise<void>;\n public async submit(validationSettings?: ValidationSettings): Promise<void>;\n\n public async submit(\n withoutFocusOrValidationSettings: ValidateArgumentType = { focusMode: FocusMode.Errors },\n ): Promise<void> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n await this.childContext.validate(withoutFocusOrValidationSettings);\n }\n\n public async validate(withoutFocus?: boolean): Promise<boolean>;\n public async validate(validationSettings?: ValidationSettings): Promise<boolean>;\n\n public validate(\n withoutFocusOrValidationSettings: ValidateArgumentType = { focusMode: FocusMode.Errors },\n ): Promise<boolean> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n return this.childContext.validate(withoutFocusOrValidationSettings);\n }\n\n public render() {\n return (\n <ValidationContextWrapper\n data-tid={this.props['data-tid']}\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 { findDOMNode } from 'react-dom';\nimport React from 'react';\nimport warning from 'warning';\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 /**\n * Options of what instance can be:\n * 1. null or undefined\n * 2. DOM Element\n * 3. class Component instance (object)\n * 4. literally anything, returned from useImperativeHandle\n */\n\n if (!canUseDOM || !instance) {\n // instance can be `null` if component was unmounted\n // also checking undefined for convenient usage\n return null;\n }\n\n if (isElement(instance)) {\n // instance can be an Element already if its coming\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 // the getter exists and has returned something, it should be what we are looking for\n // probably its an Element or null (which is also OK, e.g. Popup/Tooltip/Hint before opening)\n return rootNode;\n }\n\n try {\n // rootNode is undefined, which means that the getter doesn't exists or returns the undefined\n // anyway, it tell us that the convention is not respected,\n // so, we have to fall back to the deprecated findDOMNode, which breaks StrictMode\n // instance can still be a class component or an imperative handle (i.e., anything, except null/undefined/Element)\n rootNode = findDOMNode(instance);\n } catch (e) {\n // but findDOMNode doesn`t accept everything that instance can be at this point,\n // so we have to handle exceptions\n // see https://github.com/facebook/react/blob/cae63505/packages/react-dom/src/__tests__/findDOMNode-test.js#L66-L86\n warning(\n false,\n '[getRootNode]: can`t fallback to findDOMNode.' +\n '\\n' +\n 'See https://github.com/skbkontur/retail-ui/blob/master/packages/react-ui/README.md#strictmode' +\n '\\n\\n' +\n e.message,\n );\n return null;\n }\n\n // the findDOMNode can also return Text, but we are only interested in Elements, 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 { 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, { 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 type TextPosition = 'bottom' | 'right';\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 'data-tid'?: string;\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, 'data-tid': dataTid } = 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 return children.props.onInputValueChange(...args);\n }\n },\n });\n }\n\n return React.cloneElement(\n this.props.errorMessage(<div style={{ display: 'inline' }}>{clonedChild}</div>, !!validation, validation),\n {\n 'data-tid': dataTid,\n },\n );\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 }, () => {\n if (Boolean(current) !== Boolean(validation)) {\n this.context.onValidationUpdated(this, !validation);\n }\n resolve();\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 ValidationWrapperInternalProps,\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 extends Pick<ValidationWrapperInternalProps, 'data-tid'> {\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 public static displayName = 'ValidationWrapper';\n\n public render() {\n const { children, validationInfo, renderMessage, 'data-tid': datTid } = 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\n return (\n <ValidationWrapperInternal\n data-tid={datTid}\n errorMessage={renderMessage || tooltip('right top')}\n validation={validation}\n >\n {children}\n </ValidationWrapperInternal>\n );\n }\n}\n","import React from 'react';\n\nexport type FeatureFlags = '';\n\nexport type ValidationsFeatureFlags = Partial<Record<FeatureFlags, boolean>>;\n\nexport const validationsFeatureFlagsDefault: ValidationsFeatureFlags = {};\n\nexport const ValidationsFeatureFlagsContext =\n React.createContext<ValidationsFeatureFlags>(validationsFeatureFlagsDefault);\n\nValidationsFeatureFlagsContext.displayName = 'ValidationsFeatureFlagsContext';\nValidationsFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ValidationsFeatureFlagsContext';\n","import { validationsFeatureFlagsDefault, ValidationsFeatureFlags } from './ValidationsFeatureFlagsContext';\n\nexport const getFullValidationsFlagsContext = (flags: ValidationsFeatureFlags) => {\n return { ...validationsFeatureFlagsDefault, ...flags };\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(\n private readonly node: Nullable<ValidationNode<T>>,\n private readonly tokens: PathTokensCache,\n ) {}\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":["useContext","FocusMode","findDOMNode"],"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.16.3",
3
+ "version": "2.0.0",
4
4
  "description": "Validations for @skbkontur/react-ui",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -18,7 +18,7 @@
18
18
  "peerDependencies": {
19
19
  "react": ">=16.9",
20
20
  "react-dom": ">=16.9",
21
- "@skbkontur/react-ui": ">=0.53.7"
21
+ "@skbkontur/react-ui": ">=5 <6"
22
22
  },
23
23
  "dependencies": {
24
24
  "prop-types": "^15.8.0",