@semcore/input-number 17.2.2 → 17.3.0-prerelease.11
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 +11 -0
- package/lib/cjs/InputNumber.js +77 -61
- package/lib/cjs/InputNumber.js.map +1 -1
- package/lib/cjs/InputNumber.type.js.map +1 -1
- package/lib/es6/InputNumber.js +77 -61
- package/lib/es6/InputNumber.js.map +1 -1
- package/lib/es6/InputNumber.type.js.map +1 -1
- package/lib/esm/InputNumber.mjs +78 -62
- package/lib/types/InputNumber.d.ts +1 -0
- package/lib/types/InputNumber.d.ts.map +1 -0
- package/lib/types/InputNumber.type.d.ts +15 -12
- package/lib/types/InputNumber.type.d.ts.map +1 -0
- package/lib/types/buttons.d.ts +1 -0
- package/lib/types/buttons.d.ts.map +1 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/translations/__intergalactic-dynamic-locales.d.ts +1 -0
- package/lib/types/translations/__intergalactic-dynamic-locales.d.ts.map +1 -0
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
|
|
4
4
|
|
|
5
|
+
## [17.3.0] - 2026-09-10
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- `Number` as possible type for value.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Display the value corresponding to the current one after backspace for
|
|
14
|
+
negative numbers.
|
|
15
|
+
|
|
5
16
|
## [17.2.2] - 2026-07-10
|
|
6
17
|
|
|
7
18
|
### Fixed
|
package/lib/cjs/InputNumber.js
CHANGED
|
@@ -6,8 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
exports.parseValueWithMinMax = parseValueWithMinMax;
|
|
9
|
+
var _applyDecs2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecs2311"));
|
|
10
|
+
var _identity2 = _interopRequireDefault(require("@babel/runtime/helpers/identity"));
|
|
9
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
12
|
var _core = require("@semcore/core");
|
|
13
|
+
var _propsObserver = _interopRequireDefault(require("@semcore/core/lib/decorators/propsObserver"));
|
|
11
14
|
var _assignProps4 = require("@semcore/core/lib/utils/assignProps");
|
|
12
15
|
var _i18nEnhance = _interopRequireDefault(require("@semcore/core/lib/utils/enhances/i18nEnhance"));
|
|
13
16
|
var _ref7 = require("@semcore/core/lib/utils/ref");
|
|
@@ -15,18 +18,20 @@ var _input = _interopRequireDefault(require("@semcore/input"));
|
|
|
15
18
|
var _react = _interopRequireDefault(require("react"));
|
|
16
19
|
var _buttons = require("./buttons");
|
|
17
20
|
var _intergalacticDynamicLocales = require("./translations/__intergalactic-dynamic-locales");
|
|
21
|
+
var _Class, _Value3;
|
|
22
|
+
let _initClass, _Value2;
|
|
18
23
|
/*!__reshadow-styles__:"./style/input-number.shadow.css"*/
|
|
19
|
-
const style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".
|
|
24
|
+
const style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___SValue_9udw0_gg_:focus~.___SControls_9udw0_gg_{display:flex}.___SControls_9udw0_gg_{display:none;flex-flow:column;justify-content:center;height:100%;box-sizing:border-box}.___SControls_9udw0_gg_.__showControls_9udw0_gg_{display:flex}.___SDown_9udw0_gg_,.___SUp_9udw0_gg_{padding:0;width:16px;color:var(--intergalactic-icon-secondary-neutral,rgba(0,5,2,.385));box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}@media (color-gamut:p3){.___SDown_9udw0_gg_,.___SUp_9udw0_gg_{color:var(--intergalactic-icon-secondary-neutral,oklch(.104 .023 162.3/.385))}}.___SDown_9udw0_gg_:focus,.___SUp_9udw0_gg_:focus{outline:none}@media (hover:hover){.___SDown_9udw0_gg_:hover,.___SUp_9udw0_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,#0005026e)}@media (color-gamut:p3){.___SDown_9udw0_gg_:hover,.___SUp_9udw0_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,oklch(.1 .023 159.1/.433))}}}.___SUp_9udw0_gg_{padding-bottom:1px}.___SDown_9udw0_gg_{padding-top:1px}.___SValue_9udw0_gg_::-webkit-inner-spin-button,.___SValue_9udw0_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_9udw0_gg_._type_number_9udw0_gg_{-moz-appearance:textfield}.___SValue_9udw0_gg_.__disabled_9udw0_gg_~.___SControls_9udw0_gg_{opacity:var(--intergalactic-disabled-opacity,.4);cursor:default;pointer-events:none}.___SValueHidden_9udw0_gg_{position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden}", /*__inner_css_end__*/"9udw0_gg_"),
|
|
20
25
|
/*__reshadow_css_end__*/
|
|
21
26
|
{
|
|
22
|
-
"__SValue": "
|
|
23
|
-
"__SControls": "
|
|
24
|
-
"_showControls": "
|
|
25
|
-
"__SUp": "
|
|
26
|
-
"__SDown": "
|
|
27
|
-
"_disabled": "
|
|
28
|
-
"__SValueHidden": "
|
|
29
|
-
"_type_number": "
|
|
27
|
+
"__SValue": "___SValue_9udw0_gg_",
|
|
28
|
+
"__SControls": "___SControls_9udw0_gg_",
|
|
29
|
+
"_showControls": "__showControls_9udw0_gg_",
|
|
30
|
+
"__SUp": "___SUp_9udw0_gg_",
|
|
31
|
+
"__SDown": "___SDown_9udw0_gg_",
|
|
32
|
+
"_disabled": "__disabled_9udw0_gg_",
|
|
33
|
+
"__SValueHidden": "___SValueHidden_9udw0_gg_",
|
|
34
|
+
"_type_number": "_type_number_9udw0_gg_"
|
|
30
35
|
});
|
|
31
36
|
/** Events that can trigger a value step (buttons, keyboard arrows, mouse wheel). */
|
|
32
37
|
|
|
@@ -88,39 +93,35 @@ class InputNumber extends _core.Component {
|
|
|
88
93
|
i18n: _intergalacticDynamicLocales.localizedMessages,
|
|
89
94
|
locale: 'en'
|
|
90
95
|
});
|
|
91
|
-
|
|
96
|
+
let _Value;
|
|
97
|
+
new (_Value2 = (_Value3 = class Value extends _core.Component {
|
|
92
98
|
constructor(...args) {
|
|
93
99
|
super(...args);
|
|
100
|
+
(0, _defineProperty2.default)(this, "valueType", typeof this.props.value === 'number' || this.props.value === null ? 'number' : 'string');
|
|
94
101
|
(0, _defineProperty2.default)(this, "state", {
|
|
95
102
|
displayValue: ''
|
|
96
103
|
});
|
|
97
104
|
(0, _defineProperty2.default)(this, "valueInputRef", /*#__PURE__*/_react.default.createRef());
|
|
98
105
|
(0, _defineProperty2.default)(this, "cursorPosition", -1);
|
|
99
106
|
(0, _defineProperty2.default)(this, "getFormattedValue", value => {
|
|
100
|
-
return value.replace(new RegExp(`[${this.separatorThousands}]`, 'g'), '').replace(this.separatorDecimal, '.');
|
|
107
|
+
return value.replace(new RegExp(`[${this.separatorThousands}]`, 'g'), '').replace(this.separatorDecimal, '.').replace(new RegExp('\\.\\.', 'g'), '.');
|
|
101
108
|
});
|
|
102
|
-
(0, _defineProperty2.default)(this, "
|
|
109
|
+
(0, _defineProperty2.default)(this, "getDisplayValue", (value, prevDisplayValue) => {
|
|
103
110
|
const {
|
|
104
111
|
numberFormatter
|
|
105
112
|
} = this.props;
|
|
106
|
-
const stringNumber =
|
|
113
|
+
const stringNumber = String(value);
|
|
107
114
|
if (Number.isNaN(Number(stringNumber))) {
|
|
108
|
-
return
|
|
109
|
-
parsedValue: prevValue,
|
|
110
|
-
displayValue: prevDisplayValue
|
|
111
|
-
};
|
|
115
|
+
return prevDisplayValue;
|
|
112
116
|
}
|
|
113
117
|
let displayValue = '';
|
|
114
118
|
if (/\.[0-9]*0$/.test(stringNumber)) {
|
|
115
|
-
const [int, decimal] = stringNumber.split(
|
|
119
|
+
const [int, decimal] = stringNumber.split('.');
|
|
116
120
|
displayValue = numberFormatter.format(+int) + this.separatorDecimal + decimal;
|
|
117
121
|
} else if (stringNumber !== '') {
|
|
118
122
|
displayValue = numberFormatter.format(+stringNumber);
|
|
119
123
|
}
|
|
120
|
-
return
|
|
121
|
-
parsedValue: stringNumber,
|
|
122
|
-
displayValue: displayValue
|
|
123
|
-
};
|
|
124
|
+
return displayValue;
|
|
124
125
|
});
|
|
125
126
|
(0, _defineProperty2.default)(this, "handleValidation", event => {
|
|
126
127
|
const {
|
|
@@ -129,15 +130,10 @@ class Value extends _core.Component {
|
|
|
129
130
|
max,
|
|
130
131
|
step
|
|
131
132
|
} = this.asProps;
|
|
132
|
-
const
|
|
133
|
-
displayValue
|
|
134
|
-
} = this.state;
|
|
135
|
-
const {
|
|
136
|
-
parsedValue
|
|
137
|
-
} = this.valueParser(event.currentTarget.value, value, displayValue);
|
|
133
|
+
const parsedValue = this.getFormattedValue(event.currentTarget.value);
|
|
138
134
|
if (Number.isNaN(value) || Number.isNaN(Number.parseFloat(parsedValue))) {
|
|
139
135
|
event.currentTarget.value = '';
|
|
140
|
-
this.handlers.value('', event);
|
|
136
|
+
this.handlers.value(this.processedValue(''), event);
|
|
141
137
|
} else {
|
|
142
138
|
let numberValue = parseValueWithMinMax(Number.parseFloat(parsedValue), min, max);
|
|
143
139
|
const rounded = this.round(numberValue % step);
|
|
@@ -148,7 +144,7 @@ class Value extends _core.Component {
|
|
|
148
144
|
numberValue -= rounded;
|
|
149
145
|
}
|
|
150
146
|
}
|
|
151
|
-
this.handlers.value(this.
|
|
147
|
+
this.handlers.value(this.processedValue(this.getStringValue(numberValue)), event);
|
|
152
148
|
}
|
|
153
149
|
});
|
|
154
150
|
(0, _defineProperty2.default)(this, "onWheel", event => {
|
|
@@ -180,19 +176,26 @@ class Value extends _core.Component {
|
|
|
180
176
|
return false;
|
|
181
177
|
}
|
|
182
178
|
if (value.endsWith('.')) {
|
|
183
|
-
if (value.length > prevValue.length) {
|
|
179
|
+
if (prevValue !== null && value.length > prevValue.toString().length) {
|
|
184
180
|
this.setState({
|
|
185
181
|
displayValue: numberFormatter.format(value) + this.separatorDecimal
|
|
186
182
|
});
|
|
187
183
|
return false;
|
|
188
184
|
} else {
|
|
189
|
-
this.handlers.value(value.slice(0, -1), event);
|
|
185
|
+
this.handlers.value(this.processedValue(value.slice(0, -1)), event);
|
|
190
186
|
return false;
|
|
191
187
|
}
|
|
192
188
|
}
|
|
193
189
|
const digits = /^[0-9.-]+$/.test(value);
|
|
194
190
|
if (digits || value === '') {
|
|
195
|
-
this.
|
|
191
|
+
const newValue = this.limitDecimals(value);
|
|
192
|
+
this.handlers.value(this.processedValue(newValue), event);
|
|
193
|
+
if (newValue === prevValue) {
|
|
194
|
+
const displayValue = this.getDisplayValue(newValue ?? '', this.state.displayValue);
|
|
195
|
+
this.setState({
|
|
196
|
+
displayValue
|
|
197
|
+
});
|
|
198
|
+
}
|
|
196
199
|
}
|
|
197
200
|
});
|
|
198
201
|
(0, _defineProperty2.default)(this, "handleKeyUp", event => {
|
|
@@ -321,14 +324,14 @@ class Value extends _core.Component {
|
|
|
321
324
|
let numberValue;
|
|
322
325
|
|
|
323
326
|
// https://stackoverflow.com/questions/68010124/safari-number-input-stepup-stepdown-not-functioning-with-empty-value
|
|
324
|
-
if (value === '') {
|
|
327
|
+
if (value === '' || value === null) {
|
|
325
328
|
numberValue = min ?? 0;
|
|
326
329
|
} else {
|
|
327
330
|
numberValue = Number.parseFloat(value);
|
|
328
331
|
}
|
|
329
332
|
if (Number.isNaN(numberValue)) return;
|
|
330
333
|
const nextValue = Math.min(numberValue + step, max);
|
|
331
|
-
this.handlers.value(this.
|
|
334
|
+
this.handlers.value(this.processedValue(this.getStringValue(nextValue)), event);
|
|
332
335
|
});
|
|
333
336
|
(0, _defineProperty2.default)(this, "stepDown", event => {
|
|
334
337
|
const {
|
|
@@ -338,14 +341,14 @@ class Value extends _core.Component {
|
|
|
338
341
|
value
|
|
339
342
|
} = this.asProps;
|
|
340
343
|
let numberValue;
|
|
341
|
-
if (value === '') {
|
|
344
|
+
if (value === '' || value === null) {
|
|
342
345
|
numberValue = max ?? 0;
|
|
343
346
|
} else {
|
|
344
347
|
numberValue = Number.parseFloat(value);
|
|
345
348
|
}
|
|
346
349
|
if (Number.isNaN(numberValue)) return;
|
|
347
350
|
const nextValue = Math.max(numberValue - step, min);
|
|
348
|
-
this.handlers.value(this.
|
|
351
|
+
this.handlers.value(this.processedValue(this.getStringValue(nextValue)), event);
|
|
349
352
|
});
|
|
350
353
|
}
|
|
351
354
|
uncontrolledProps() {
|
|
@@ -354,17 +357,11 @@ class Value extends _core.Component {
|
|
|
354
357
|
const {
|
|
355
358
|
displayValue: prevDisplayValue
|
|
356
359
|
} = this.state;
|
|
357
|
-
const
|
|
358
|
-
value: prevValue
|
|
359
|
-
} = this.asProps;
|
|
360
|
-
const {
|
|
361
|
-
parsedValue,
|
|
362
|
-
displayValue
|
|
363
|
-
} = this.valueParser(newValue ?? '', prevValue, prevDisplayValue);
|
|
360
|
+
const displayValue = this.getDisplayValue(newValue ?? '', prevDisplayValue);
|
|
364
361
|
this.setState({
|
|
365
362
|
displayValue
|
|
366
363
|
});
|
|
367
|
-
return
|
|
364
|
+
return String(newValue);
|
|
368
365
|
}]
|
|
369
366
|
};
|
|
370
367
|
}
|
|
@@ -378,7 +375,19 @@ class Value extends _core.Component {
|
|
|
378
375
|
const {
|
|
379
376
|
numberFormatter
|
|
380
377
|
} = this.props;
|
|
381
|
-
return numberFormatter.format(
|
|
378
|
+
return numberFormatter.format(11111).replace(/\d/g, '');
|
|
379
|
+
}
|
|
380
|
+
onPropsChange(changedProps) {
|
|
381
|
+
const {
|
|
382
|
+
value
|
|
383
|
+
} = changedProps;
|
|
384
|
+
if (value !== undefined) {
|
|
385
|
+
if (typeof value === 'number' || value === null) {
|
|
386
|
+
this.valueType = 'number';
|
|
387
|
+
} else {
|
|
388
|
+
this.valueType = 'string';
|
|
389
|
+
}
|
|
390
|
+
}
|
|
382
391
|
}
|
|
383
392
|
get stepPrecision() {
|
|
384
393
|
const {
|
|
@@ -387,7 +396,7 @@ class Value extends _core.Component {
|
|
|
387
396
|
const [_, decimals] = step?.toString().split('.') ?? [];
|
|
388
397
|
return decimals?.length ?? 0;
|
|
389
398
|
}
|
|
390
|
-
|
|
399
|
+
getStringValue(value) {
|
|
391
400
|
return value === 0 ? `${value}` : value.toFixed(this.stepPrecision);
|
|
392
401
|
}
|
|
393
402
|
limitDecimals(value) {
|
|
@@ -423,9 +432,7 @@ class Value extends _core.Component {
|
|
|
423
432
|
inputRef.current.stepDown = this.stepDown;
|
|
424
433
|
}
|
|
425
434
|
if (value !== '') {
|
|
426
|
-
const
|
|
427
|
-
displayValue
|
|
428
|
-
} = this.valueParser(value, '', '');
|
|
435
|
+
const displayValue = this.getDisplayValue(value, '');
|
|
429
436
|
this.setState({
|
|
430
437
|
displayValue
|
|
431
438
|
});
|
|
@@ -433,9 +440,7 @@ class Value extends _core.Component {
|
|
|
433
440
|
}
|
|
434
441
|
componentDidUpdate(prevProps, prevState) {
|
|
435
442
|
if (prevProps.value !== this.props.value) {
|
|
436
|
-
const
|
|
437
|
-
displayValue
|
|
438
|
-
} = this.valueParser(this.props.value ?? '', prevProps.value, prevState.displayValue);
|
|
443
|
+
const displayValue = this.getDisplayValue(this.props.value ?? '', prevState.displayValue);
|
|
439
444
|
this.setState({
|
|
440
445
|
displayValue
|
|
441
446
|
});
|
|
@@ -444,6 +449,15 @@ class Value extends _core.Component {
|
|
|
444
449
|
componentWillUnmount() {
|
|
445
450
|
this.valueInputRef.current?.removeEventListener('wheel', this.onWheel);
|
|
446
451
|
}
|
|
452
|
+
processedValue(value) {
|
|
453
|
+
if (this.valueType === 'string') {
|
|
454
|
+
return value;
|
|
455
|
+
}
|
|
456
|
+
if (value === '') {
|
|
457
|
+
return null;
|
|
458
|
+
}
|
|
459
|
+
return Number(value);
|
|
460
|
+
}
|
|
447
461
|
render() {
|
|
448
462
|
var _ref2 = this.asProps,
|
|
449
463
|
_ref5;
|
|
@@ -476,13 +490,15 @@ class Value extends _core.Component {
|
|
|
476
490
|
}, _ref2)
|
|
477
491
|
})));
|
|
478
492
|
}
|
|
479
|
-
}
|
|
480
|
-
(
|
|
481
|
-
(0, _defineProperty2.default)(
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
});
|
|
493
|
+
}, [_Value, _initClass] = (0, _applyDecs2.default)(_Value3, [(0, _propsObserver.default)(['value'])], [], 0, void 0, _core.Component).c, _Value3), _Class = class extends _identity2.default {
|
|
494
|
+
constructor() {
|
|
495
|
+
super(_Value), (0, _defineProperty2.default)(this, "style", style), (0, _defineProperty2.default)(this, "defaultProps", {
|
|
496
|
+
defaultValue: '',
|
|
497
|
+
defaultDisplayValue: '',
|
|
498
|
+
step: 1
|
|
499
|
+
}), _initClass();
|
|
500
|
+
}
|
|
501
|
+
}, (0, _defineProperty2.default)(_Class, _Value2, void 0), _Class)();
|
|
486
502
|
function Controls(props) {
|
|
487
503
|
var _ref3 = arguments[0],
|
|
488
504
|
_ref6;
|
|
@@ -520,7 +536,7 @@ Controls.style = style;
|
|
|
520
536
|
* {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-api/|API} | {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-code/|Examples}
|
|
521
537
|
*/
|
|
522
538
|
var _default = exports.default = (0, _core.createComponent)(InputNumber, {
|
|
523
|
-
Value,
|
|
539
|
+
Value: _Value,
|
|
524
540
|
Controls,
|
|
525
541
|
Addon: _input.default.Addon
|
|
526
542
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputNumber.js","names":["_core","require","_assignProps4","_i18nEnhance","_interopRequireDefault","_ref7","_input","_react","_buttons","_intergalacticDynamicLocales","style","sstyled","insert","parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","InputNumber","Component","constructor","args","_defineProperty2","default","React","createRef","event","inputRef","current","stepUp","stepDown","getValueProps","numberFormatter","Intl","NumberFormat","asProps","locale","maximumFractionDigits","increment","decrement","getControlsProps","getI18nText","render","_ref","_ref4","SInputNumber","Input","createElement","cn","assignProps","i18nEnhance","localizedMessages","size","i18n","Value","displayValue","replace","RegExp","separatorThousands","separatorDecimal","prevValue","prevDisplayValue","props","stringNumber","getFormattedValue","String","isNaN","parsedValue","test","int","decimal","split","format","step","state","valueParser","currentTarget","parseFloat","handlers","numberValue","rounded","round","abs","getDisplayValue","callAllEventHandlers","onWheel","handleWheel","target","valueInputRef","document","activeElement","preventDefault","deltaY","setState","endsWith","length","slice","digits","limitDecimals","key","cursorPosition","element","indexOf","stopPropagation","selectionStart","includes","afterSelection","selectionEnd","undefined","requestAnimationFrame","newValue","index","lastIndexOf","setSelectionRange","cursorIndex","shiftKey","moveSelectionLeft","moveSelectionRight","nextPosition","nextValue","uncontrolledProps","stepPrecision","_","decimals","toString","toFixed","dotIndex","toPrecision","componentDidMount","addEventListener","autoFocus","setTimeout","focus","componentDidUpdate","prevProps","prevState","componentWillUnmount","removeEventListener","_ref2","_ref5","SValue","styles","forwardRef","Fragment","handleValidation","handleChange","handleKeyDown","handleKeyUp","handleClick","forkRef","isInteger","defaultValue","defaultDisplayValue","Controls","_ref3","arguments[0]","_ref6","Children","SControls","Addon","SUp","SDown","IncrementIcon","DecrementIcon","_default","exports","createComponent"],"sources":["../../src/InputNumber.tsx"],"sourcesContent":["import type { Intergalactic } from '@semcore/core';\nimport { Component, createComponent, Root, sstyled } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport type { WithI18nEnhanceProps } from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport Input from '@semcore/input';\nimport React from 'react';\n\nimport { DecrementIcon, IncrementIcon } from './buttons';\nimport type { NSInputNumber } from './InputNumber.type';\nimport style from './style/input-number.shadow.css';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\n\n/** Events that can trigger a value step (buttons, keyboard arrows, mouse wheel). */\ntype StepEvent =\n | React.MouseEvent\n | React.KeyboardEvent\n | WheelEvent;\n\n/**\n * The input DOM node whose native `stepUp`/`stepDown` methods are replaced at runtime\n * (see `Value.componentDidMount`) with event-aware versions.\n */\ntype InputElement = Omit<HTMLInputElement, 'stepUp' | 'stepDown'> & {\n stepUp: (event: StepEvent) => void;\n stepDown: (event: StepEvent) => void;\n};\n\nexport function parseValueWithMinMax(\n value: number,\n min = Number.MIN_SAFE_INTEGER,\n max = Number.MAX_SAFE_INTEGER,\n) {\n return Math.max(min, Math.min(max, value));\n}\n\nclass InputNumber extends Component<\n Intergalactic.InternalTypings.InferComponentProps<NSInputNumber.Component>,\n typeof InputNumber.enhance,\n {},\n WithI18nEnhanceProps,\n {},\n NSInputNumber.DefaultProps\n> {\n static displayName = 'InputNumber';\n static style = style;\n static enhance = [i18nEnhance(localizedMessages)] as const;\n static defaultProps = {\n size: 'm',\n i18n: localizedMessages,\n locale: 'en',\n } as const;\n\n inputRef = React.createRef<InputElement>();\n\n increment = (event: React.MouseEvent) => {\n (this.inputRef.current)?.stepUp?.(event);\n };\n\n decrement = (event: React.MouseEvent) => {\n (this.inputRef.current)?.stepDown?.(event);\n };\n\n getValueProps() {\n const numberFormatter = new Intl.NumberFormat(this.asProps.locale, {\n style: 'decimal',\n maximumFractionDigits: 100,\n });\n\n return {\n inputRef: this.inputRef,\n increment: this.increment,\n decrement: this.decrement,\n numberFormatter,\n };\n }\n\n getControlsProps() {\n const { getI18nText } = this.asProps;\n return {\n increment: this.increment,\n decrement: this.decrement,\n getI18nText,\n };\n }\n\n render() {\n const SInputNumber = Root;\n return sstyled(this.asProps.style)(<SInputNumber render={Input} />);\n }\n}\n\nclass Value extends Component<\n Intergalactic.InternalTypings.InferChildComponentProps<NSInputNumber.Value.Component, typeof InputNumber, 'Value'>,\n [],\n NSInputNumber.Value.Handlers,\n {},\n NSInputNumber.Value.State,\n NSInputNumber.Value.DefaultProps\n> {\n static style = style;\n static defaultProps = {\n defaultValue: '',\n defaultDisplayValue: '',\n step: 1,\n } as const;\n\n state: NSInputNumber.Value.State = {\n displayValue: '',\n };\n\n valueInputRef = React.createRef<HTMLInputElement>();\n\n cursorPosition: number | null = -1;\n\n uncontrolledProps(): NSInputNumber.Value.Handlers {\n return {\n value: [\n null,\n (newValue) => {\n const { displayValue: prevDisplayValue } = this.state;\n const { value: prevValue } = this.asProps;\n\n const { parsedValue, displayValue } = this.valueParser(\n newValue ?? '',\n prevValue,\n prevDisplayValue,\n );\n\n this.setState({ displayValue });\n\n return parsedValue;\n },\n ],\n };\n }\n\n get separatorDecimal() {\n const { numberFormatter } = this.props;\n\n return numberFormatter.format(11.11).replace(/\\d/g, '');\n }\n\n get separatorThousands() {\n const { numberFormatter } = this.props;\n\n return numberFormatter.format(1111).replace(/\\d/g, '');\n }\n\n getFormattedValue = (value: string) => {\n return value\n .replace(new RegExp(`[${this.separatorThousands}]`, 'g'), '')\n .replace(this.separatorDecimal, '.');\n };\n\n valueParser = (\n value: typeof this.asProps['value'],\n prevValue: typeof this.asProps['value'],\n prevDisplayValue: NSInputNumber.Value.State['displayValue'],\n ) => {\n const { numberFormatter } = this.props;\n\n const stringNumber = this.getFormattedValue(String(value));\n\n if (Number.isNaN(Number(stringNumber))) {\n return {\n parsedValue: prevValue,\n displayValue: prevDisplayValue,\n };\n }\n\n let displayValue = '';\n\n if (/\\.[0-9]*0$/.test(stringNumber)) {\n const [int, decimal] = stringNumber.split(this.separatorDecimal);\n displayValue = numberFormatter.format(+int) + this.separatorDecimal + decimal;\n } else if (stringNumber !== '') {\n displayValue = numberFormatter.format(+stringNumber);\n }\n\n return {\n parsedValue: stringNumber,\n displayValue: displayValue,\n };\n };\n\n get stepPrecision() {\n const { step } = this.asProps;\n const [_, decimals] = step?.toString().split('.') ?? [];\n\n return decimals?.length ?? 0;\n }\n\n getDisplayValue(value: number): string {\n return value === 0 ? `${value}` : value.toFixed(this.stepPrecision);\n }\n\n limitDecimals(value: string) {\n const { stepPrecision } = this;\n if (stepPrecision === 0) return value;\n\n const dotIndex = value.indexOf('.');\n if (dotIndex === -1 || value.length - dotIndex - 1 <= stepPrecision) return value;\n\n return value.slice(0, dotIndex + 1 + stepPrecision);\n }\n\n round(value: number): number {\n const { stepPrecision } = this;\n\n return stepPrecision === 0\n ? value\n : Number(value.toPrecision(stepPrecision));\n }\n\n handleValidation = (event: React.FocusEvent<HTMLInputElement>) => {\n const { value, min, max, step } = this.asProps;\n const { displayValue } = this.state;\n const { parsedValue } = this.valueParser(event.currentTarget.value, value, displayValue);\n\n if (Number.isNaN(value) || Number.isNaN(Number.parseFloat(parsedValue))) {\n event.currentTarget.value = '';\n this.handlers.value('', event);\n } else {\n let numberValue = parseValueWithMinMax(Number.parseFloat(parsedValue), min, max);\n const rounded = this.round(numberValue % step);\n if (rounded !== 0) {\n if (rounded >= step / 2) {\n numberValue += step - rounded;\n } else if (Math.abs(rounded) < step) {\n numberValue -= rounded;\n }\n }\n\n this.handlers.value(this.getDisplayValue(numberValue), event);\n }\n };\n\n // https://stackoverflow.com/questions/57358640/cancel-wheel-event-with-e-preventdefault-in-react-event-bubbling\n componentDidMount() {\n this.valueInputRef.current?.addEventListener('wheel', this.onWheel);\n\n const { inputRef, value, autoFocus } = this.asProps;\n\n if (autoFocus) {\n setTimeout(() => {\n this.valueInputRef.current?.focus();\n });\n }\n\n if (inputRef.current) {\n inputRef.current.stepUp = this.stepUp;\n inputRef.current.stepDown = this.stepDown;\n }\n\n if (value !== '') {\n const { displayValue } = this.valueParser(value, '', '');\n this.setState({ displayValue });\n }\n }\n\n componentDidUpdate(prevProps: typeof this.asProps, prevState: typeof this.state) {\n if (prevProps.value !== this.props.value) {\n const { displayValue } = this.valueParser(\n this.props.value ?? '',\n prevProps.value,\n prevState.displayValue,\n );\n this.setState({ displayValue });\n }\n }\n\n componentWillUnmount() {\n this.valueInputRef.current?.removeEventListener('wheel', this.onWheel);\n }\n\n onWheel = (event: WheelEvent) => {\n callAllEventHandlers(this.asProps.onWheel, this.handleWheel)(event);\n };\n\n handleWheel = (event: WheelEvent) => {\n if (event.target !== this.valueInputRef.current) return;\n if (document.activeElement !== this.valueInputRef.current) return;\n event.preventDefault();\n if (event.deltaY < 0) {\n this.stepUp(event);\n } else if (event.deltaY > 0) {\n this.stepDown(event);\n }\n };\n\n handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = this.getFormattedValue(event.currentTarget.value);\n const { numberFormatter, value: prevValue } = this.asProps;\n\n if (value === '.' || value === '-') {\n this.setState({ displayValue: value });\n return false;\n }\n\n if (value.endsWith('-')) {\n return false;\n }\n\n if (value.endsWith('.')) {\n if (value.length > prevValue.length) {\n this.setState({ displayValue: numberFormatter.format(value as `${number}`) + this.separatorDecimal });\n return false;\n } else {\n this.handlers.value(value.slice(0, -1), event);\n return false;\n }\n }\n\n const digits = /^[0-9.-]+$/.test(value);\n\n if (digits || value === '') {\n this.handlers.value(this.limitDecimals(value), event);\n }\n };\n\n handleKeyUp = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Shift') {\n this.cursorPosition = -1;\n }\n };\n\n handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const element = event.currentTarget;\n const value = element.value;\n const length = value.length;\n const { displayValue } = this.state;\n\n if (event.key === '.' || event.key === ',') {\n // for the first decimal separator we should replace both ',' and '.' to '.' because of how js convert strings to numbers (with ',' it will be Number.NaN)\n if (value.indexOf(this.separatorDecimal) === -1 && event.key === ',') {\n event.currentTarget.value = value + '.';\n } else if (value.indexOf(this.separatorDecimal) !== -1) { // we could press decimal separator second time - prevent this '1.5.'\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n }\n\n if (event.key === 'Backspace' && value.endsWith(this.separatorDecimal)) {\n event.preventDefault();\n event.stopPropagation();\n this.setState({ displayValue: displayValue?.slice(0, -1) });\n return false;\n }\n\n if (\n element.selectionStart !== length &&\n (event.key === 'Backspace' ||\n event.key === this.separatorDecimal ||\n ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(event.key))\n ) {\n const afterSelection = value.slice(element.selectionEnd ?? undefined);\n\n requestAnimationFrame(() => {\n const newValue = this.state.displayValue;\n const index = newValue.lastIndexOf(afterSelection);\n const selectionStart = index;\n const selectionEnd = index;\n\n element.setSelectionRange(selectionStart, selectionEnd);\n });\n }\n\n // For correct moving cursor with skip separatorThousands.\n // Examples:\n // - Press ArrowLeft: `12,3|4 -> 12|,34`\n // - Press ArrowRight: `1|,55 -> 1,5|5`\n const cursorIndex = 2;\n\n if (event.shiftKey && this.cursorPosition === -1) {\n this.cursorPosition = element.selectionStart;\n }\n\n switch (event.key) {\n case 'ArrowLeft': {\n event.preventDefault();\n this.moveSelectionLeft(element, cursorIndex);\n break;\n }\n case 'ArrowRight': {\n event.preventDefault();\n this.moveSelectionRight(element, cursorIndex);\n break;\n }\n case 'ArrowDown': {\n event.preventDefault();\n this.stepDown(event);\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n this.stepUp(event);\n break;\n }\n }\n };\n\n moveSelectionLeft = (element: React.KeyboardEvent<HTMLInputElement>['currentTarget'], cursorIndex: number) => {\n if (element.selectionStart === null) return;\n\n const value = element.value;\n\n const nextPosition = element.selectionStart - 1 >= 0 ? element.selectionStart - 1 : 0;\n\n const cursorPosition =\n value[element.selectionStart - cursorIndex] === this.separatorThousands\n ? element.selectionStart - cursorIndex\n : nextPosition;\n\n if (this.cursorPosition === -1) {\n // without shift\n element.setSelectionRange(cursorPosition, cursorPosition);\n } else {\n if (\n this.cursorPosition &&\n element.selectionStart <= this.cursorPosition &&\n element.selectionEnd === this.cursorPosition\n ) {\n element.setSelectionRange(cursorPosition, element.selectionEnd);\n } else if (element.selectionEnd !== null) {\n element.setSelectionRange(\n element.selectionStart,\n value[element.selectionEnd - cursorIndex] === this.separatorThousands\n ? element.selectionEnd - cursorIndex\n : element.selectionEnd - 1,\n );\n }\n }\n };\n\n moveSelectionRight = (element: React.KeyboardEvent<HTMLInputElement>['currentTarget'], cursorIndex: number) => {\n if (element.selectionEnd === null) return;\n\n const value = element.value;\n const nextPosition = element.selectionEnd + 1;\n\n const cursorPosition =\n value[element.selectionEnd] === this.separatorThousands\n ? element.selectionEnd + cursorIndex\n : nextPosition;\n\n if (this.cursorPosition === -1) {\n // without shift\n element.setSelectionRange(cursorPosition, cursorPosition);\n } else {\n if (\n this.cursorPosition &&\n element.selectionEnd >= this.cursorPosition &&\n element.selectionStart === this.cursorPosition\n ) {\n element.setSelectionRange(element.selectionStart, cursorPosition);\n } else if (element.selectionStart !== null) {\n element.setSelectionRange(\n value[element.selectionStart] === this.separatorThousands\n ? element.selectionStart + cursorIndex\n : element.selectionStart + 1,\n element.selectionEnd,\n );\n }\n }\n };\n\n handleClick = (event: React.MouseEvent<HTMLInputElement>) => {\n const element = event.currentTarget;\n const value = element.value;\n\n if (element.selectionStart !== null && value[element.selectionStart - 1] === this.separatorThousands) {\n element.setSelectionRange(element.selectionStart - 1, element.selectionEnd! - 1);\n }\n };\n\n stepUp = (event: StepEvent) => {\n const { max = Number.MAX_SAFE_INTEGER, min, step, value } = this.asProps;\n\n let numberValue;\n\n // https://stackoverflow.com/questions/68010124/safari-number-input-stepup-stepdown-not-functioning-with-empty-value\n if (value === '') {\n numberValue = min ?? 0;\n } else {\n numberValue = Number.parseFloat(value);\n }\n\n if (Number.isNaN(numberValue)) return;\n\n const nextValue = Math.min(numberValue + step, max);\n\n this.handlers.value(this.getDisplayValue(nextValue), event);\n };\n\n stepDown = (event: StepEvent) => {\n const { max, min = Number.MIN_SAFE_INTEGER, step, value } = this.asProps;\n\n let numberValue;\n\n if (value === '') {\n numberValue = max ?? 0;\n } else {\n numberValue = Number.parseFloat(value);\n }\n\n if (Number.isNaN(numberValue)) return;\n\n const nextValue = Math.max(numberValue - step, min);\n\n this.handlers.value(this.getDisplayValue(nextValue), event);\n };\n\n render() {\n const SValue = Root;\n const { styles, min, max, step, forwardRef, inputRef } = this.asProps;\n const { displayValue } = this.state;\n\n return sstyled(styles)(\n <>\n <SValue\n render={Input.Value}\n autoComplete='off'\n onBlur={this.handleValidation}\n use:onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onKeyUp={this.handleKeyUp}\n onClick={this.handleClick}\n use:ref={forkRef(this.valueInputRef, inputRef, forwardRef ?? null)}\n use:value={displayValue}\n inputMode={Number.isInteger(step) ? 'numeric' : 'decimal'}\n min={min}\n max={max}\n step={step}\n />\n </>,\n );\n }\n}\n\nfunction Controls(\n props: Intergalactic.InternalTypings.InferChildComponentProps<NSInputNumber.Controls.Component, typeof InputNumber, 'Controls'>,\n) {\n const { Children, increment, decrement, styles, getI18nText } = props;\n const SControls = Root;\n const SUp = 'button';\n const SDown = 'button';\n\n return sstyled(styles)(\n <SControls render={Input.Addon} aria-hidden='true'>\n <SUp\n onClick={increment}\n tabIndex={-1}\n type='button'\n aria-label={getI18nText('increment')}\n >\n <IncrementIcon />\n </SUp>\n <SDown\n onClick={decrement}\n tabIndex={-1}\n type='button'\n aria-label={getI18nText('decrement')}\n >\n <DecrementIcon />\n </SDown>\n <Children />\n </SControls>,\n );\n}\nControls.style = style;\n\n/**\n * InputNumber\n *\n * {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-api/|API} | {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-code/|Examples}\n */\nexport default createComponent<\n NSInputNumber.Component,\n typeof InputNumber\n>(InputNumber, {\n Value,\n Controls,\n Addon: Input.Addon,\n});\n"],"mappings":";;;;;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAF,sBAAA,CAAAH,OAAA;AACA,IAAAM,MAAA,GAAAH,sBAAA,CAAAH,OAAA;AAEA,IAAAO,QAAA,GAAAP,OAAA;AAGA,IAAAQ,4BAAA,GAAAR,OAAA;AAAmF;AAAA,MAAAS,KAAA,8BAAAV,KAAA,CAAAW,OAAA,CAAAC,MAAA;AAAA;AAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AAAA;AAEnF;;AAMA;AACA;AACA;AACA;;AAMO,SAASC,oBAAoBA,CAClCC,KAAa,EACbC,GAAG,GAAGC,MAAM,CAACC,gBAAgB,EAC7BC,GAAG,GAAGF,MAAM,CAACG,gBAAgB,EAC7B;EACA,OAAOC,IAAI,CAACF,GAAG,CAACH,GAAG,EAAEK,IAAI,CAACL,GAAG,CAACG,GAAG,EAAEJ,KAAK,CAAC,CAAC;AAC5C;AAEA,MAAMO,WAAW,SAASC,eAAS,CAOjC;EAAAC,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,iCAUWC,cAAK,CAACC,SAAS,CAAe,CAAC;IAAA,IAAAH,gBAAA,CAAAC,OAAA,qBAE7BG,KAAuB,IAAK;MACtC,IAAI,CAACC,QAAQ,CAACC,OAAO,EAAGC,MAAM,GAAGH,KAAK,CAAC;IAC1C,CAAC;IAAA,IAAAJ,gBAAA,CAAAC,OAAA,qBAEYG,KAAuB,IAAK;MACtC,IAAI,CAACC,QAAQ,CAACC,OAAO,EAAGE,QAAQ,GAAGJ,KAAK,CAAC;IAC5C,CAAC;EAAA;EAEDK,aAAaA,CAAA,EAAG;IACd,MAAMC,eAAe,GAAG,IAAIC,IAAI,CAACC,YAAY,CAAC,IAAI,CAACC,OAAO,CAACC,MAAM,EAAE;MACjE7B,KAAK,EAAE,SAAS;MAChB8B,qBAAqB,EAAE;IACzB,CAAC,CAAC;IAEF,OAAO;MACLV,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBW,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBP;IACF,CAAC;EACH;EAEAQ,gBAAgBA,CAAA,EAAG;IACjB,MAAM;MAAEC;IAAY,CAAC,GAAG,IAAI,CAACN,OAAO;IACpC,OAAO;MACLG,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBE;IACF,CAAC;EACH;EAEAC,MAAMA,CAAA,EAAG;IAAA,IAAAC,IAAA,QAAAR,OAAA;MAAAS,KAAA;IACP,MAAMC,YAAY,GACuCC,cAAK;IAA9D,OAAAF,KAAA,GAAO,IAAApC,aAAO,EAAC,IAAI,CAAC2B,OAAO,CAAC5B,KAAK,CAAC,eAACH,MAAA,CAAAmB,OAAA,CAAAwB,aAAA,CAACF,YAAY,EAAAD,KAAA,CAAAI,EAAA;MAAA,OAAAnD,KAAA,CAAAoD,WAAA,MAAAN,IAAA;IAAA,EAAiB,CAAC;EACpE;AACF;AAAC,IAAArB,gBAAA,CAAAC,OAAA,EAtDKL,WAAW,iBAQM,aAAa;AAAA,IAAAI,gBAAA,CAAAC,OAAA,EAR9BL,WAAW,WASAX,KAAK;AAAA,IAAAe,gBAAA,CAAAC,OAAA,EAThBL,WAAW,aAUE,CAAC,IAAAgC,oBAAW,EAACC,8CAAiB,CAAC,CAAC;AAAA,IAAA7B,gBAAA,CAAAC,OAAA,EAV7CL,WAAW,kBAWO;EACpBkC,IAAI,EAAE,GAAG;EACTC,IAAI,EAAEF,8CAAiB;EACvBf,MAAM,EAAE;AACV,CAAC;AAyCH,MAAMkB,KAAK,SAASnC,eAAS,CAO3B;EAAAC,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,iBAQmC;MACjCgC,YAAY,EAAE;IAChB,CAAC;IAAA,IAAAjC,gBAAA,CAAAC,OAAA,sCAEeC,cAAK,CAACC,SAAS,CAAmB,CAAC;IAAA,IAAAH,gBAAA,CAAAC,OAAA,0BAEnB,CAAC,CAAC;IAAA,IAAAD,gBAAA,CAAAC,OAAA,6BAoCbZ,KAAa,IAAK;MACrC,OAAOA,KAAK,CACT6C,OAAO,CAAC,IAAIC,MAAM,CAAC,IAAI,IAAI,CAACC,kBAAkB,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAC5DF,OAAO,CAAC,IAAI,CAACG,gBAAgB,EAAE,GAAG,CAAC;IACxC,CAAC;IAAA,IAAArC,gBAAA,CAAAC,OAAA,uBAEa,CACZZ,KAAmC,EACnCiD,SAAuC,EACvCC,gBAA2D,KACxD;MACH,MAAM;QAAE7B;MAAgB,CAAC,GAAG,IAAI,CAAC8B,KAAK;MAEtC,MAAMC,YAAY,GAAG,IAAI,CAACC,iBAAiB,CAACC,MAAM,CAACtD,KAAK,CAAC,CAAC;MAE1D,IAAIE,MAAM,CAACqD,KAAK,CAACrD,MAAM,CAACkD,YAAY,CAAC,CAAC,EAAE;QACtC,OAAO;UACLI,WAAW,EAAEP,SAAS;UACtBL,YAAY,EAAEM;QAChB,CAAC;MACH;MAEA,IAAIN,YAAY,GAAG,EAAE;MAErB,IAAI,YAAY,CAACa,IAAI,CAACL,YAAY,CAAC,EAAE;QACnC,MAAM,CAACM,GAAG,EAAEC,OAAO,CAAC,GAAGP,YAAY,CAACQ,KAAK,CAAC,IAAI,CAACZ,gBAAgB,CAAC;QAChEJ,YAAY,GAAGvB,eAAe,CAACwC,MAAM,CAAC,CAACH,GAAG,CAAC,GAAG,IAAI,CAACV,gBAAgB,GAAGW,OAAO;MAC/E,CAAC,MAAM,IAAIP,YAAY,KAAK,EAAE,EAAE;QAC9BR,YAAY,GAAGvB,eAAe,CAACwC,MAAM,CAAC,CAACT,YAAY,CAAC;MACtD;MAEA,OAAO;QACLI,WAAW,EAAEJ,YAAY;QACzBR,YAAY,EAAEA;MAChB,CAAC;IACH,CAAC;IAAA,IAAAjC,gBAAA,CAAAC,OAAA,4BA+BmBG,KAAyC,IAAK;MAChE,MAAM;QAAEf,KAAK;QAAEC,GAAG;QAAEG,GAAG;QAAE0D;MAAK,CAAC,GAAG,IAAI,CAACtC,OAAO;MAC9C,MAAM;QAAEoB;MAAa,CAAC,GAAG,IAAI,CAACmB,KAAK;MACnC,MAAM;QAAEP;MAAY,CAAC,GAAG,IAAI,CAACQ,WAAW,CAACjD,KAAK,CAACkD,aAAa,CAACjE,KAAK,EAAEA,KAAK,EAAE4C,YAAY,CAAC;MAExF,IAAI1C,MAAM,CAACqD,KAAK,CAACvD,KAAK,CAAC,IAAIE,MAAM,CAACqD,KAAK,CAACrD,MAAM,CAACgE,UAAU,CAACV,WAAW,CAAC,CAAC,EAAE;QACvEzC,KAAK,CAACkD,aAAa,CAACjE,KAAK,GAAG,EAAE;QAC9B,IAAI,CAACmE,QAAQ,CAACnE,KAAK,CAAC,EAAE,EAAEe,KAAK,CAAC;MAChC,CAAC,MAAM;QACL,IAAIqD,WAAW,GAAGrE,oBAAoB,CAACG,MAAM,CAACgE,UAAU,CAACV,WAAW,CAAC,EAAEvD,GAAG,EAAEG,GAAG,CAAC;QAChF,MAAMiE,OAAO,GAAG,IAAI,CAACC,KAAK,CAACF,WAAW,GAAGN,IAAI,CAAC;QAC9C,IAAIO,OAAO,KAAK,CAAC,EAAE;UACjB,IAAIA,OAAO,IAAIP,IAAI,GAAG,CAAC,EAAE;YACvBM,WAAW,IAAIN,IAAI,GAAGO,OAAO;UAC/B,CAAC,MAAM,IAAI/D,IAAI,CAACiE,GAAG,CAACF,OAAO,CAAC,GAAGP,IAAI,EAAE;YACnCM,WAAW,IAAIC,OAAO;UACxB;QACF;QAEA,IAAI,CAACF,QAAQ,CAACnE,KAAK,CAAC,IAAI,CAACwE,eAAe,CAACJ,WAAW,CAAC,EAAErD,KAAK,CAAC;MAC/D;IACF,CAAC;IAAA,IAAAJ,gBAAA,CAAAC,OAAA,mBAwCUG,KAAiB,IAAK;MAC/B,IAAA0D,kCAAoB,EAAC,IAAI,CAACjD,OAAO,CAACkD,OAAO,EAAE,IAAI,CAACC,WAAW,CAAC,CAAC5D,KAAK,CAAC;IACrE,CAAC;IAAA,IAAAJ,gBAAA,CAAAC,OAAA,uBAEcG,KAAiB,IAAK;MACnC,IAAIA,KAAK,CAAC6D,MAAM,KAAK,IAAI,CAACC,aAAa,CAAC5D,OAAO,EAAE;MACjD,IAAI6D,QAAQ,CAACC,aAAa,KAAK,IAAI,CAACF,aAAa,CAAC5D,OAAO,EAAE;MAC3DF,KAAK,CAACiE,cAAc,CAAC,CAAC;MACtB,IAAIjE,KAAK,CAACkE,MAAM,GAAG,CAAC,EAAE;QACpB,IAAI,CAAC/D,MAAM,CAACH,KAAK,CAAC;MACpB,CAAC,MAAM,IAAIA,KAAK,CAACkE,MAAM,GAAG,CAAC,EAAE;QAC3B,IAAI,CAAC9D,QAAQ,CAACJ,KAAK,CAAC;MACtB;IACF,CAAC;IAAA,IAAAJ,gBAAA,CAAAC,OAAA,wBAEeG,KAA0C,IAAK;MAC7D,MAAMf,KAAK,GAAG,IAAI,CAACqD,iBAAiB,CAACtC,KAAK,CAACkD,aAAa,CAACjE,KAAK,CAAC;MAC/D,MAAM;QAAEqB,eAAe;QAAErB,KAAK,EAAEiD;MAAU,CAAC,GAAG,IAAI,CAACzB,OAAO;MAE1D,IAAIxB,KAAK,KAAK,GAAG,IAAIA,KAAK,KAAK,GAAG,EAAE;QAClC,IAAI,CAACkF,QAAQ,CAAC;UAAEtC,YAAY,EAAE5C;QAAM,CAAC,CAAC;QACtC,OAAO,KAAK;MACd;MAEA,IAAIA,KAAK,CAACmF,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvB,OAAO,KAAK;MACd;MAEA,IAAInF,KAAK,CAACmF,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvB,IAAInF,KAAK,CAACoF,MAAM,GAAGnC,SAAS,CAACmC,MAAM,EAAE;UACnC,IAAI,CAACF,QAAQ,CAAC;YAAEtC,YAAY,EAAEvB,eAAe,CAACwC,MAAM,CAAC7D,KAAoB,CAAC,GAAG,IAAI,CAACgD;UAAiB,CAAC,CAAC;UACrG,OAAO,KAAK;QACd,CAAC,MAAM;UACL,IAAI,CAACmB,QAAQ,CAACnE,KAAK,CAACA,KAAK,CAACqF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAEtE,KAAK,CAAC;UAC9C,OAAO,KAAK;QACd;MACF;MAEA,MAAMuE,MAAM,GAAG,YAAY,CAAC7B,IAAI,CAACzD,KAAK,CAAC;MAEvC,IAAIsF,MAAM,IAAItF,KAAK,KAAK,EAAE,EAAE;QAC1B,IAAI,CAACmE,QAAQ,CAACnE,KAAK,CAAC,IAAI,CAACuF,aAAa,CAACvF,KAAK,CAAC,EAAEe,KAAK,CAAC;MACvD;IACF,CAAC;IAAA,IAAAJ,gBAAA,CAAAC,OAAA,uBAEcG,KAA4C,IAAK;MAC9D,IAAIA,KAAK,CAACyE,GAAG,KAAK,OAAO,EAAE;QACzB,IAAI,CAACC,cAAc,GAAG,CAAC,CAAC;MAC1B;IACF,CAAC;IAAA,IAAA9E,gBAAA,CAAAC,OAAA,yBAEgBG,KAA4C,IAAK;MAChE,MAAM2E,OAAO,GAAG3E,KAAK,CAACkD,aAAa;MACnC,MAAMjE,KAAK,GAAG0F,OAAO,CAAC1F,KAAK;MAC3B,MAAMoF,MAAM,GAAGpF,KAAK,CAACoF,MAAM;MAC3B,MAAM;QAAExC;MAAa,CAAC,GAAG,IAAI,CAACmB,KAAK;MAEnC,IAAIhD,KAAK,CAACyE,GAAG,KAAK,GAAG,IAAIzE,KAAK,CAACyE,GAAG,KAAK,GAAG,EAAE;QAC1C;QACA,IAAIxF,KAAK,CAAC2F,OAAO,CAAC,IAAI,CAAC3C,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAIjC,KAAK,CAACyE,GAAG,KAAK,GAAG,EAAE;UACpEzE,KAAK,CAACkD,aAAa,CAACjE,KAAK,GAAGA,KAAK,GAAG,GAAG;QACzC,CAAC,MAAM,IAAIA,KAAK,CAAC2F,OAAO,CAAC,IAAI,CAAC3C,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE;UAAE;UACxDjC,KAAK,CAACiE,cAAc,CAAC,CAAC;UACtBjE,KAAK,CAAC6E,eAAe,CAAC,CAAC;UACvB;QACF;MACF;MAEA,IAAI7E,KAAK,CAACyE,GAAG,KAAK,WAAW,IAAIxF,KAAK,CAACmF,QAAQ,CAAC,IAAI,CAACnC,gBAAgB,CAAC,EAAE;QACtEjC,KAAK,CAACiE,cAAc,CAAC,CAAC;QACtBjE,KAAK,CAAC6E,eAAe,CAAC,CAAC;QACvB,IAAI,CAACV,QAAQ,CAAC;UAAEtC,YAAY,EAAEA,YAAY,EAAEyC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAAE,CAAC,CAAC;QAC3D,OAAO,KAAK;MACd;MAEA,IACEK,OAAO,CAACG,cAAc,KAAKT,MAAM,KAChCrE,KAAK,CAACyE,GAAG,KAAK,WAAW,IACxBzE,KAAK,CAACyE,GAAG,KAAK,IAAI,CAACxC,gBAAgB,IACnC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC8C,QAAQ,CAAC/E,KAAK,CAACyE,GAAG,CAAC,CAAC,EACzE;QACA,MAAMO,cAAc,GAAG/F,KAAK,CAACqF,KAAK,CAACK,OAAO,CAACM,YAAY,IAAIC,SAAS,CAAC;QAErEC,qBAAqB,CAAC,MAAM;UAC1B,MAAMC,QAAQ,GAAG,IAAI,CAACpC,KAAK,CAACnB,YAAY;UACxC,MAAMwD,KAAK,GAAGD,QAAQ,CAACE,WAAW,CAACN,cAAc,CAAC;UAClD,MAAMF,cAAc,GAAGO,KAAK;UAC5B,MAAMJ,YAAY,GAAGI,KAAK;UAE1BV,OAAO,CAACY,iBAAiB,CAACT,cAAc,EAAEG,YAAY,CAAC;QACzD,CAAC,CAAC;MACJ;;MAEA;MACA;MACA;MACA;MACA,MAAMO,WAAW,GAAG,CAAC;MAErB,IAAIxF,KAAK,CAACyF,QAAQ,IAAI,IAAI,CAACf,cAAc,KAAK,CAAC,CAAC,EAAE;QAChD,IAAI,CAACA,cAAc,GAAGC,OAAO,CAACG,cAAc;MAC9C;MAEA,QAAQ9E,KAAK,CAACyE,GAAG;QACf,KAAK,WAAW;UAAE;YAChBzE,KAAK,CAACiE,cAAc,CAAC,CAAC;YACtB,IAAI,CAACyB,iBAAiB,CAACf,OAAO,EAAEa,WAAW,CAAC;YAC5C;UACF;QACA,KAAK,YAAY;UAAE;YACjBxF,KAAK,CAACiE,cAAc,CAAC,CAAC;YACtB,IAAI,CAAC0B,kBAAkB,CAAChB,OAAO,EAAEa,WAAW,CAAC;YAC7C;UACF;QACA,KAAK,WAAW;UAAE;YAChBxF,KAAK,CAACiE,cAAc,CAAC,CAAC;YACtB,IAAI,CAAC7D,QAAQ,CAACJ,KAAK,CAAC;YACpB;UACF;QACA,KAAK,SAAS;UAAE;YACdA,KAAK,CAACiE,cAAc,CAAC,CAAC;YACtB,IAAI,CAAC9D,MAAM,CAACH,KAAK,CAAC;YAClB;UACF;MACF;IACF,CAAC;IAAA,IAAAJ,gBAAA,CAAAC,OAAA,6BAEmB,CAAC8E,OAA+D,EAAEa,WAAmB,KAAK;MAC5G,IAAIb,OAAO,CAACG,cAAc,KAAK,IAAI,EAAE;MAErC,MAAM7F,KAAK,GAAG0F,OAAO,CAAC1F,KAAK;MAE3B,MAAM2G,YAAY,GAAGjB,OAAO,CAACG,cAAc,GAAG,CAAC,IAAI,CAAC,GAAGH,OAAO,CAACG,cAAc,GAAG,CAAC,GAAG,CAAC;MAErF,MAAMJ,cAAc,GAClBzF,KAAK,CAAC0F,OAAO,CAACG,cAAc,GAAGU,WAAW,CAAC,KAAK,IAAI,CAACxD,kBAAkB,GACnE2C,OAAO,CAACG,cAAc,GAAGU,WAAW,GACpCI,YAAY;MAElB,IAAI,IAAI,CAAClB,cAAc,KAAK,CAAC,CAAC,EAAE;QAC9B;QACAC,OAAO,CAACY,iBAAiB,CAACb,cAAc,EAAEA,cAAc,CAAC;MAC3D,CAAC,MAAM;QACL,IACE,IAAI,CAACA,cAAc,IACnBC,OAAO,CAACG,cAAc,IAAI,IAAI,CAACJ,cAAc,IAC7CC,OAAO,CAACM,YAAY,KAAK,IAAI,CAACP,cAAc,EAC5C;UACAC,OAAO,CAACY,iBAAiB,CAACb,cAAc,EAAEC,OAAO,CAACM,YAAY,CAAC;QACjE,CAAC,MAAM,IAAIN,OAAO,CAACM,YAAY,KAAK,IAAI,EAAE;UACxCN,OAAO,CAACY,iBAAiB,CACvBZ,OAAO,CAACG,cAAc,EACtB7F,KAAK,CAAC0F,OAAO,CAACM,YAAY,GAAGO,WAAW,CAAC,KAAK,IAAI,CAACxD,kBAAkB,GACjE2C,OAAO,CAACM,YAAY,GAAGO,WAAW,GAClCb,OAAO,CAACM,YAAY,GAAG,CAC7B,CAAC;QACH;MACF;IACF,CAAC;IAAA,IAAArF,gBAAA,CAAAC,OAAA,8BAEoB,CAAC8E,OAA+D,EAAEa,WAAmB,KAAK;MAC7G,IAAIb,OAAO,CAACM,YAAY,KAAK,IAAI,EAAE;MAEnC,MAAMhG,KAAK,GAAG0F,OAAO,CAAC1F,KAAK;MAC3B,MAAM2G,YAAY,GAAGjB,OAAO,CAACM,YAAY,GAAG,CAAC;MAE7C,MAAMP,cAAc,GAClBzF,KAAK,CAAC0F,OAAO,CAACM,YAAY,CAAC,KAAK,IAAI,CAACjD,kBAAkB,GACnD2C,OAAO,CAACM,YAAY,GAAGO,WAAW,GAClCI,YAAY;MAElB,IAAI,IAAI,CAAClB,cAAc,KAAK,CAAC,CAAC,EAAE;QAC9B;QACAC,OAAO,CAACY,iBAAiB,CAACb,cAAc,EAAEA,cAAc,CAAC;MAC3D,CAAC,MAAM;QACL,IACE,IAAI,CAACA,cAAc,IACnBC,OAAO,CAACM,YAAY,IAAI,IAAI,CAACP,cAAc,IAC3CC,OAAO,CAACG,cAAc,KAAK,IAAI,CAACJ,cAAc,EAC9C;UACAC,OAAO,CAACY,iBAAiB,CAACZ,OAAO,CAACG,cAAc,EAAEJ,cAAc,CAAC;QACnE,CAAC,MAAM,IAAIC,OAAO,CAACG,cAAc,KAAK,IAAI,EAAE;UAC1CH,OAAO,CAACY,iBAAiB,CACvBtG,KAAK,CAAC0F,OAAO,CAACG,cAAc,CAAC,KAAK,IAAI,CAAC9C,kBAAkB,GACrD2C,OAAO,CAACG,cAAc,GAAGU,WAAW,GACpCb,OAAO,CAACG,cAAc,GAAG,CAAC,EAC9BH,OAAO,CAACM,YACV,CAAC;QACH;MACF;IACF,CAAC;IAAA,IAAArF,gBAAA,CAAAC,OAAA,uBAEcG,KAAyC,IAAK;MAC3D,MAAM2E,OAAO,GAAG3E,KAAK,CAACkD,aAAa;MACnC,MAAMjE,KAAK,GAAG0F,OAAO,CAAC1F,KAAK;MAE3B,IAAI0F,OAAO,CAACG,cAAc,KAAK,IAAI,IAAI7F,KAAK,CAAC0F,OAAO,CAACG,cAAc,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC9C,kBAAkB,EAAE;QACpG2C,OAAO,CAACY,iBAAiB,CAACZ,OAAO,CAACG,cAAc,GAAG,CAAC,EAAEH,OAAO,CAACM,YAAY,GAAI,CAAC,CAAC;MAClF;IACF,CAAC;IAAA,IAAArF,gBAAA,CAAAC,OAAA,kBAESG,KAAgB,IAAK;MAC7B,MAAM;QAAEX,GAAG,GAAGF,MAAM,CAACG,gBAAgB;QAAEJ,GAAG;QAAE6D,IAAI;QAAE9D;MAAM,CAAC,GAAG,IAAI,CAACwB,OAAO;MAExE,IAAI4C,WAAW;;MAEf;MACA,IAAIpE,KAAK,KAAK,EAAE,EAAE;QAChBoE,WAAW,GAAGnE,GAAG,IAAI,CAAC;MACxB,CAAC,MAAM;QACLmE,WAAW,GAAGlE,MAAM,CAACgE,UAAU,CAAClE,KAAK,CAAC;MACxC;MAEA,IAAIE,MAAM,CAACqD,KAAK,CAACa,WAAW,CAAC,EAAE;MAE/B,MAAMwC,SAAS,GAAGtG,IAAI,CAACL,GAAG,CAACmE,WAAW,GAAGN,IAAI,EAAE1D,GAAG,CAAC;MAEnD,IAAI,CAAC+D,QAAQ,CAACnE,KAAK,CAAC,IAAI,CAACwE,eAAe,CAACoC,SAAS,CAAC,EAAE7F,KAAK,CAAC;IAC7D,CAAC;IAAA,IAAAJ,gBAAA,CAAAC,OAAA,oBAEWG,KAAgB,IAAK;MAC/B,MAAM;QAAEX,GAAG;QAAEH,GAAG,GAAGC,MAAM,CAACC,gBAAgB;QAAE2D,IAAI;QAAE9D;MAAM,CAAC,GAAG,IAAI,CAACwB,OAAO;MAExE,IAAI4C,WAAW;MAEf,IAAIpE,KAAK,KAAK,EAAE,EAAE;QAChBoE,WAAW,GAAGhE,GAAG,IAAI,CAAC;MACxB,CAAC,MAAM;QACLgE,WAAW,GAAGlE,MAAM,CAACgE,UAAU,CAAClE,KAAK,CAAC;MACxC;MAEA,IAAIE,MAAM,CAACqD,KAAK,CAACa,WAAW,CAAC,EAAE;MAE/B,MAAMwC,SAAS,GAAGtG,IAAI,CAACF,GAAG,CAACgE,WAAW,GAAGN,IAAI,EAAE7D,GAAG,CAAC;MAEnD,IAAI,CAACkE,QAAQ,CAACnE,KAAK,CAAC,IAAI,CAACwE,eAAe,CAACoC,SAAS,CAAC,EAAE7F,KAAK,CAAC;IAC7D,CAAC;EAAA;EA7YD8F,iBAAiBA,CAAA,EAAiC;IAChD,OAAO;MACL7G,KAAK,EAAE,CACL,IAAI,EACHmG,QAAQ,IAAK;QACZ,MAAM;UAAEvD,YAAY,EAAEM;QAAiB,CAAC,GAAG,IAAI,CAACa,KAAK;QACrD,MAAM;UAAE/D,KAAK,EAAEiD;QAAU,CAAC,GAAG,IAAI,CAACzB,OAAO;QAEzC,MAAM;UAAEgC,WAAW;UAAEZ;QAAa,CAAC,GAAG,IAAI,CAACoB,WAAW,CACpDmC,QAAQ,IAAI,EAAE,EACdlD,SAAS,EACTC,gBACF,CAAC;QAED,IAAI,CAACgC,QAAQ,CAAC;UAAEtC;QAAa,CAAC,CAAC;QAE/B,OAAOY,WAAW;MACpB,CAAC;IAEL,CAAC;EACH;EAEA,IAAIR,gBAAgBA,CAAA,EAAG;IACrB,MAAM;MAAE3B;IAAgB,CAAC,GAAG,IAAI,CAAC8B,KAAK;IAEtC,OAAO9B,eAAe,CAACwC,MAAM,CAAC,KAAK,CAAC,CAAChB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EACzD;EAEA,IAAIE,kBAAkBA,CAAA,EAAG;IACvB,MAAM;MAAE1B;IAAgB,CAAC,GAAG,IAAI,CAAC8B,KAAK;IAEtC,OAAO9B,eAAe,CAACwC,MAAM,CAAC,IAAI,CAAC,CAAChB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EACxD;EAuCA,IAAIiE,aAAaA,CAAA,EAAG;IAClB,MAAM;MAAEhD;IAAK,CAAC,GAAG,IAAI,CAACtC,OAAO;IAC7B,MAAM,CAACuF,CAAC,EAAEC,QAAQ,CAAC,GAAGlD,IAAI,EAAEmD,QAAQ,CAAC,CAAC,CAACrD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;IAEvD,OAAOoD,QAAQ,EAAE5B,MAAM,IAAI,CAAC;EAC9B;EAEAZ,eAAeA,CAACxE,KAAa,EAAU;IACrC,OAAOA,KAAK,KAAK,CAAC,GAAG,GAAGA,KAAK,EAAE,GAAGA,KAAK,CAACkH,OAAO,CAAC,IAAI,CAACJ,aAAa,CAAC;EACrE;EAEAvB,aAAaA,CAACvF,KAAa,EAAE;IAC3B,MAAM;MAAE8G;IAAc,CAAC,GAAG,IAAI;IAC9B,IAAIA,aAAa,KAAK,CAAC,EAAE,OAAO9G,KAAK;IAErC,MAAMmH,QAAQ,GAAGnH,KAAK,CAAC2F,OAAO,CAAC,GAAG,CAAC;IACnC,IAAIwB,QAAQ,KAAK,CAAC,CAAC,IAAInH,KAAK,CAACoF,MAAM,GAAG+B,QAAQ,GAAG,CAAC,IAAIL,aAAa,EAAE,OAAO9G,KAAK;IAEjF,OAAOA,KAAK,CAACqF,KAAK,CAAC,CAAC,EAAE8B,QAAQ,GAAG,CAAC,GAAGL,aAAa,CAAC;EACrD;EAEAxC,KAAKA,CAACtE,KAAa,EAAU;IAC3B,MAAM;MAAE8G;IAAc,CAAC,GAAG,IAAI;IAE9B,OAAOA,aAAa,KAAK,CAAC,GACtB9G,KAAK,GACLE,MAAM,CAACF,KAAK,CAACoH,WAAW,CAACN,aAAa,CAAC,CAAC;EAC9C;EAyBA;EACAO,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACxC,aAAa,CAAC5D,OAAO,EAAEqG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC5C,OAAO,CAAC;IAEnE,MAAM;MAAE1D,QAAQ;MAAEhB,KAAK;MAAEuH;IAAU,CAAC,GAAG,IAAI,CAAC/F,OAAO;IAEnD,IAAI+F,SAAS,EAAE;MACbC,UAAU,CAAC,MAAM;QACf,IAAI,CAAC3C,aAAa,CAAC5D,OAAO,EAAEwG,KAAK,CAAC,CAAC;MACrC,CAAC,CAAC;IACJ;IAEA,IAAIzG,QAAQ,CAACC,OAAO,EAAE;MACpBD,QAAQ,CAACC,OAAO,CAACC,MAAM,GAAG,IAAI,CAACA,MAAM;MACrCF,QAAQ,CAACC,OAAO,CAACE,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC3C;IAEA,IAAInB,KAAK,KAAK,EAAE,EAAE;MAChB,MAAM;QAAE4C;MAAa,CAAC,GAAG,IAAI,CAACoB,WAAW,CAAChE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;MACxD,IAAI,CAACkF,QAAQ,CAAC;QAAEtC;MAAa,CAAC,CAAC;IACjC;EACF;EAEA8E,kBAAkBA,CAACC,SAA8B,EAAEC,SAA4B,EAAE;IAC/E,IAAID,SAAS,CAAC3H,KAAK,KAAK,IAAI,CAACmD,KAAK,CAACnD,KAAK,EAAE;MACxC,MAAM;QAAE4C;MAAa,CAAC,GAAG,IAAI,CAACoB,WAAW,CACvC,IAAI,CAACb,KAAK,CAACnD,KAAK,IAAI,EAAE,EACtB2H,SAAS,CAAC3H,KAAK,EACf4H,SAAS,CAAChF,YACZ,CAAC;MACD,IAAI,CAACsC,QAAQ,CAAC;QAAEtC;MAAa,CAAC,CAAC;IACjC;EACF;EAEAiF,oBAAoBA,CAAA,EAAG;IACrB,IAAI,CAAChD,aAAa,CAAC5D,OAAO,EAAE6G,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACpD,OAAO,CAAC;EACxE;EAgPA3C,MAAMA,CAAA,EAAG;IAAA,IAAAgG,KAAA,QAAAvG,OAAA;MAAAwG,KAAA;IACP,MAAMC,MAAM,GAOE9F,cAAK,CAACQ,KAAK;IANzB,MAAM;MAAEuF,MAAM;MAAEjI,GAAG;MAAEG,GAAG;MAAE0D,IAAI;MAAEqE,UAAU;MAAEnH;IAAS,CAAC,GAAG,IAAI,CAACQ,OAAO;IACrE,MAAM;MAAEoB;IAAa,CAAC,GAAG,IAAI,CAACmB,KAAK;IAEnC,OAAAiE,KAAA,GAAO,IAAAnI,aAAO,EAACqI,MAAM,CAAC,eACpBzI,MAAA,CAAAmB,OAAA,CAAAwB,aAAA,CAAA3C,MAAA,CAAAmB,OAAA,CAAAwH,QAAA,qBACE3I,MAAA,CAAAmB,OAAA,CAAAwB,aAAA,CAAC6F,MAAM,EAAAD,KAAA,CAAA3F,EAAA;MAAA,OAAAnD,KAAA,CAAAoD,WAAA;QAAA,gBAEQ,KAAK;QAAA,UACV,IAAI,CAAC+F,gBAAgB;QAAA,gBACf,IAAI,CAACC,YAAY;QAAA,aACpB,IAAI,CAACC,aAAa;QAAA,WACpB,IAAI,CAACC,WAAW;QAAA,WAChB,IAAI,CAACC,WAAW;QAAA,WAChB,IAAAC,aAAO,EAAC,IAAI,CAAC7D,aAAa,EAAE7D,QAAQ,EAAEmH,UAAU,IAAI,IAAI,CAAC;QAAA,aACvDvF,YAAY;QAAA,aACZ1C,MAAM,CAACyI,SAAS,CAAC7E,IAAI,CAAC,GAAG,SAAS,GAAG,SAAS;QAAA,OACpD7D,GAAG;QAAA,OACHG,GAAG;QAAA,QACF0D;MAAI,GAAAiE,KAAA;IAAA,EACX,CACD,CAAC;EAEP;AACF;AAAC,IAAApH,gBAAA,CAAAC,OAAA,EA/bK+B,KAAK,WAQM/C,KAAK;AAAA,IAAAe,gBAAA,CAAAC,OAAA,EARhB+B,KAAK,kBASa;EACpBiG,YAAY,EAAE,EAAE;EAChBC,mBAAmB,EAAE,EAAE;EACvB/E,IAAI,EAAE;AACR,CAAC;AAobH,SAASgF,QAAQA,CACf3F,KAA+H,EAC/H;EAAA,IAAA4F,KAAA,GAAAC,YAAA;IAAAC,KAAA;EACA,MAAM;IAAEC,QAAQ;IAAEvH,SAAS;IAAEC,SAAS;IAAEsG,MAAM;IAAEpG;EAAY,CAAC,GAAGqB,KAAK;EACrE,MAAMgG,SAAS,GAKMhH,cAAK,CAACiH,KAAK;EAJhC,MAAMC,GAAG,GAAG,QAAQ;EACpB,MAAMC,KAAK,GAAG,QAAQ;EAEtB,OAAAL,KAAA,GAAO,IAAApJ,aAAO,EAACqI,MAAM,CAAC,eACpBzI,MAAA,CAAAmB,OAAA,CAAAwB,aAAA,CAAC+G,SAAS,EAAAF,KAAA,CAAA5G,EAAA;IAAA,OAAAnD,KAAA,CAAAoD,WAAA;MAAA,eAAkC;IAAM,GAAAyG,KAAA;EAAA,iBAChDtJ,MAAA,CAAAmB,OAAA,CAAAwB,aAAA,CAACiH,GAAG,EAAAJ,KAAA,CAAA5G,EAAA;IAAA,WACOV,SAAS;IAAA,YACR,CAAC,CAAC;IAAA,QACP,QAAQ;IAAA,cACDG,WAAW,CAAC,WAAW;EAAC,iBAEpCrC,MAAA,CAAAmB,OAAA,CAAAwB,aAAA,CAAC1C,QAAA,CAAA6J,aAAa,EAAAN,KAAA,CAAA5G,EAAA,qBAAE,CACb,CAAC,eACN5C,MAAA,CAAAmB,OAAA,CAAAwB,aAAA,CAACkH,KAAK,EAAAL,KAAA,CAAA5G,EAAA;IAAA,WACKT,SAAS;IAAA,YACR,CAAC,CAAC;IAAA,QACP,QAAQ;IAAA,cACDE,WAAW,CAAC,WAAW;EAAC,iBAEpCrC,MAAA,CAAAmB,OAAA,CAAAwB,aAAA,CAAC1C,QAAA,CAAA8J,aAAa,EAAAP,KAAA,CAAA5G,EAAA,qBAAE,CACX,CAAC,eACR5C,MAAA,CAAAmB,OAAA,CAAAwB,aAAA,CAAC8G,QAAQ,EAAAD,KAAA,CAAA5G,EAAA,gBAAE,CACF,CAAC;AAEhB;AACAyG,QAAQ,CAAClJ,KAAK,GAAGA,KAAK;;AAEtB;AACA;AACA;AACA;AACA;AAJA,IAAA6J,QAAA,GAAAC,OAAA,CAAA9I,OAAA,GAKe,IAAA+I,qBAAe,EAG5BpJ,WAAW,EAAE;EACboC,KAAK;EACLmG,QAAQ;EACRM,KAAK,EAAEjH,cAAK,CAACiH;AACf,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"InputNumber.js","names":["_core","require","_propsObserver","_interopRequireDefault","_assignProps4","_i18nEnhance","_ref7","_input","_react","_buttons","_intergalacticDynamicLocales","_Class","_Value3","_initClass","_Value2","style","sstyled","insert","parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","InputNumber","Component","constructor","args","_defineProperty2","default","React","createRef","event","inputRef","current","stepUp","stepDown","getValueProps","numberFormatter","Intl","NumberFormat","asProps","locale","maximumFractionDigits","increment","decrement","getControlsProps","getI18nText","render","_ref","_ref4","SInputNumber","Input","createElement","cn","assignProps","i18nEnhance","localizedMessages","size","i18n","_Value","Value","props","displayValue","replace","RegExp","separatorThousands","separatorDecimal","prevDisplayValue","stringNumber","String","isNaN","test","int","decimal","split","format","step","parsedValue","getFormattedValue","currentTarget","parseFloat","handlers","processedValue","numberValue","rounded","round","abs","getStringValue","callAllEventHandlers","onWheel","handleWheel","target","valueInputRef","document","activeElement","preventDefault","deltaY","prevValue","setState","endsWith","length","toString","slice","digits","newValue","limitDecimals","getDisplayValue","state","key","cursorPosition","element","indexOf","stopPropagation","selectionStart","includes","afterSelection","selectionEnd","undefined","requestAnimationFrame","index","lastIndexOf","setSelectionRange","cursorIndex","shiftKey","moveSelectionLeft","moveSelectionRight","nextPosition","nextValue","uncontrolledProps","onPropsChange","changedProps","valueType","stepPrecision","_","decimals","toFixed","dotIndex","toPrecision","componentDidMount","addEventListener","autoFocus","setTimeout","focus","componentDidUpdate","prevProps","prevState","componentWillUnmount","removeEventListener","_ref2","_ref5","SValue","styles","forwardRef","Fragment","handleValidation","handleChange","handleKeyDown","handleKeyUp","handleClick","forkRef","isInteger","_applyDecs2","propsObserver","c","_identity2","defaultValue","defaultDisplayValue","Controls","_ref3","arguments[0]","_ref6","Children","SControls","Addon","SUp","SDown","IncrementIcon","DecrementIcon","_default","exports","createComponent"],"sources":["../../src/InputNumber.tsx"],"sourcesContent":["import type { Intergalactic } from '@semcore/core';\nimport { Component, createComponent, Root, sstyled } from '@semcore/core';\nimport propsObserver from '@semcore/core/lib/decorators/propsObserver';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport type { WithI18nEnhanceProps } from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport Input from '@semcore/input';\nimport React from 'react';\n\nimport { DecrementIcon, IncrementIcon } from './buttons';\nimport type { NSInputNumber } from './InputNumber.type';\nimport style from './style/input-number.shadow.css';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\n\n/** Events that can trigger a value step (buttons, keyboard arrows, mouse wheel). */\ntype StepEvent =\n | React.MouseEvent\n | React.KeyboardEvent\n | WheelEvent;\n\n/**\n * The input DOM node whose native `stepUp`/`stepDown` methods are replaced at runtime\n * (see `Value.componentDidMount`) with event-aware versions.\n */\ntype InputElement = Omit<HTMLInputElement, 'stepUp' | 'stepDown'> & {\n stepUp: (event: StepEvent) => void;\n stepDown: (event: StepEvent) => void;\n};\n\nexport function parseValueWithMinMax(\n value: number,\n min = Number.MIN_SAFE_INTEGER,\n max = Number.MAX_SAFE_INTEGER,\n) {\n return Math.max(min, Math.min(max, value));\n}\n\nclass InputNumber extends Component<\n Intergalactic.InternalTypings.InferComponentProps<NSInputNumber.Component>,\n typeof InputNumber.enhance,\n {},\n WithI18nEnhanceProps,\n {},\n NSInputNumber.DefaultProps\n> {\n static displayName = 'InputNumber';\n static style = style;\n static enhance = [i18nEnhance(localizedMessages)] as const;\n static defaultProps = {\n size: 'm',\n i18n: localizedMessages,\n locale: 'en',\n } as const;\n\n inputRef = React.createRef<InputElement>();\n\n increment = (event: React.MouseEvent) => {\n (this.inputRef.current)?.stepUp?.(event);\n };\n\n decrement = (event: React.MouseEvent) => {\n (this.inputRef.current)?.stepDown?.(event);\n };\n\n getValueProps() {\n const numberFormatter = new Intl.NumberFormat(this.asProps.locale, {\n style: 'decimal',\n maximumFractionDigits: 100,\n });\n\n return {\n inputRef: this.inputRef,\n increment: this.increment,\n decrement: this.decrement,\n numberFormatter,\n };\n }\n\n getControlsProps() {\n const { getI18nText } = this.asProps;\n return {\n increment: this.increment,\n decrement: this.decrement,\n getI18nText,\n };\n }\n\n render() {\n const SInputNumber = Root;\n return sstyled(this.asProps.style)(<SInputNumber render={Input} />);\n }\n}\n\n@propsObserver(['value'])\nclass Value extends Component<\n Intergalactic.InternalTypings.InferChildComponentProps<NSInputNumber.Value.Component, typeof InputNumber, 'Value'>,\n [],\n NSInputNumber.Value.Handlers,\n {},\n NSInputNumber.Value.State,\n NSInputNumber.Value.DefaultProps\n > {\n static style = style;\n static defaultProps = {\n defaultValue: '',\n defaultDisplayValue: '',\n step: 1,\n } as const;\n\n valueType: 'string' | 'number' = (typeof this.props.value === 'number' || this.props.value === null) ? 'number' : 'string';\n\n state: NSInputNumber.Value.State = {\n displayValue: '',\n };\n\n valueInputRef = React.createRef<HTMLInputElement>();\n\n cursorPosition: number | null = -1;\n\n uncontrolledProps(): NSInputNumber.Value.Handlers {\n return {\n value: [\n null,\n (newValue) => {\n const { displayValue: prevDisplayValue } = this.state;\n\n const displayValue = this.getDisplayValue(\n newValue ?? '',\n prevDisplayValue,\n );\n\n this.setState({ displayValue });\n\n return String(newValue);\n },\n ],\n };\n }\n\n get separatorDecimal() {\n const { numberFormatter } = this.props;\n\n return numberFormatter.format(11.11).replace(/\\d/g, '');\n }\n\n get separatorThousands() {\n const { numberFormatter } = this.props;\n\n return numberFormatter.format(11111).replace(/\\d/g, '');\n }\n\n onPropsChange(changedProps: { value?: string | number | null }) {\n const { value } = changedProps;\n\n if (value !== undefined) {\n if (typeof value === 'number' || value === null) {\n this.valueType = 'number';\n } else {\n this.valueType = 'string';\n }\n }\n }\n\n getFormattedValue = (value: string) => {\n return value\n .replace(new RegExp(`[${this.separatorThousands}]`, 'g'), '')\n .replace(this.separatorDecimal, '.')\n .replace(new RegExp('\\\\.\\\\.', 'g'), '.');\n };\n\n getDisplayValue = (\n value: string | number,\n prevDisplayValue: NSInputNumber.Value.State['displayValue'],\n ) => {\n const { numberFormatter } = this.props;\n const stringNumber = String(value);\n\n if (Number.isNaN(Number(stringNumber))) {\n return prevDisplayValue;\n }\n\n let displayValue = '';\n\n if (/\\.[0-9]*0$/.test(stringNumber)) {\n const [int, decimal] = stringNumber.split('.');\n displayValue = numberFormatter.format(+int) + this.separatorDecimal + decimal;\n } else if (stringNumber !== '') {\n displayValue = numberFormatter.format(+stringNumber);\n }\n\n return displayValue;\n };\n\n get stepPrecision() {\n const { step } = this.asProps;\n const [_, decimals] = step?.toString().split('.') ?? [];\n\n return decimals?.length ?? 0;\n }\n\n getStringValue(value: number): string {\n return value === 0 ? `${value}` : value.toFixed(this.stepPrecision);\n }\n\n limitDecimals(value: string) {\n const { stepPrecision } = this;\n if (stepPrecision === 0) return value;\n\n const dotIndex = value.indexOf('.');\n if (dotIndex === -1 || value.length - dotIndex - 1 <= stepPrecision) return value;\n\n return value.slice(0, dotIndex + 1 + stepPrecision);\n }\n\n round(value: number): number {\n const { stepPrecision } = this;\n\n return stepPrecision === 0\n ? value\n : Number(value.toPrecision(stepPrecision));\n }\n\n handleValidation = (event: React.FocusEvent<HTMLInputElement>) => {\n const { value, min, max, step } = this.asProps;\n const parsedValue = this.getFormattedValue(event.currentTarget.value);\n\n if (Number.isNaN(value) || Number.isNaN(Number.parseFloat(parsedValue))) {\n event.currentTarget.value = '';\n this.handlers.value(this.processedValue(''), event);\n } else {\n let numberValue = parseValueWithMinMax(Number.parseFloat(parsedValue), min, max);\n const rounded = this.round(numberValue % step);\n if (rounded !== 0) {\n if (rounded >= step / 2) {\n numberValue += step - rounded;\n } else if (Math.abs(rounded) < step) {\n numberValue -= rounded;\n }\n }\n\n this.handlers.value(this.processedValue(this.getStringValue(numberValue)), event);\n }\n };\n\n // https://stackoverflow.com/questions/57358640/cancel-wheel-event-with-e-preventdefault-in-react-event-bubbling\n componentDidMount() {\n this.valueInputRef.current?.addEventListener('wheel', this.onWheel);\n\n const { inputRef, value, autoFocus } = this.asProps;\n\n if (autoFocus) {\n setTimeout(() => {\n this.valueInputRef.current?.focus();\n });\n }\n\n if (inputRef.current) {\n inputRef.current.stepUp = this.stepUp;\n inputRef.current.stepDown = this.stepDown;\n }\n\n if (value !== '') {\n const displayValue = this.getDisplayValue(value, '');\n this.setState({ displayValue });\n }\n }\n\n componentDidUpdate(prevProps: typeof this.asProps, prevState: typeof this.state) {\n if (prevProps.value !== this.props.value) {\n const displayValue = this.getDisplayValue(\n this.props.value ?? '',\n prevState.displayValue,\n );\n this.setState({ displayValue });\n }\n }\n\n componentWillUnmount() {\n this.valueInputRef.current?.removeEventListener('wheel', this.onWheel);\n }\n\n onWheel = (event: WheelEvent) => {\n callAllEventHandlers(this.asProps.onWheel, this.handleWheel)(event);\n };\n\n handleWheel = (event: WheelEvent) => {\n if (event.target !== this.valueInputRef.current) return;\n if (document.activeElement !== this.valueInputRef.current) return;\n event.preventDefault();\n if (event.deltaY < 0) {\n this.stepUp(event);\n } else if (event.deltaY > 0) {\n this.stepDown(event);\n }\n };\n\n handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = this.getFormattedValue(event.currentTarget.value);\n const { numberFormatter, value: prevValue } = this.asProps;\n\n if (value === '.' || value === '-') {\n this.setState({ displayValue: value });\n return false;\n }\n\n if (value.endsWith('-')) {\n return false;\n }\n\n if (value.endsWith('.')) {\n if (prevValue !== null && value.length > prevValue.toString().length) {\n this.setState({ displayValue: numberFormatter.format(value as `${number}`) + this.separatorDecimal });\n return false;\n } else {\n this.handlers.value(this.processedValue(value.slice(0, -1)), event);\n return false;\n }\n }\n\n const digits = /^[0-9.-]+$/.test(value);\n\n if (digits || value === '') {\n const newValue = this.limitDecimals(value);\n this.handlers.value(this.processedValue(newValue), event);\n if (newValue === prevValue) {\n const displayValue = this.getDisplayValue(\n newValue ?? '',\n this.state.displayValue,\n );\n this.setState({ displayValue });\n }\n }\n };\n\n handleKeyUp = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Shift') {\n this.cursorPosition = -1;\n }\n };\n\n handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const element = event.currentTarget;\n const value = element.value;\n const length = value.length;\n const { displayValue } = this.state;\n\n if (event.key === '.' || event.key === ',') {\n // for the first decimal separator we should replace both ',' and '.' to '.' because of how js convert strings to numbers (with ',' it will be Number.NaN)\n if (value.indexOf(this.separatorDecimal) === -1 && event.key === ',') {\n event.currentTarget.value = value + '.';\n } else if (value.indexOf(this.separatorDecimal) !== -1) { // we could press decimal separator second time - prevent this '1.5.'\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n }\n\n if (event.key === 'Backspace' && value.endsWith(this.separatorDecimal)) {\n event.preventDefault();\n event.stopPropagation();\n this.setState({ displayValue: displayValue?.slice(0, -1) });\n return false;\n }\n\n if (\n element.selectionStart !== length &&\n (event.key === 'Backspace' ||\n event.key === this.separatorDecimal ||\n ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(event.key))\n ) {\n const afterSelection = value.slice(element.selectionEnd ?? undefined);\n\n requestAnimationFrame(() => {\n const newValue = this.state.displayValue;\n const index = newValue.lastIndexOf(afterSelection);\n const selectionStart = index;\n const selectionEnd = index;\n\n element.setSelectionRange(selectionStart, selectionEnd);\n });\n }\n\n // For correct moving cursor with skip separatorThousands.\n // Examples:\n // - Press ArrowLeft: `12,3|4 -> 12|,34`\n // - Press ArrowRight: `1|,55 -> 1,5|5`\n const cursorIndex = 2;\n\n if (event.shiftKey && this.cursorPosition === -1) {\n this.cursorPosition = element.selectionStart;\n }\n\n switch (event.key) {\n case 'ArrowLeft': {\n event.preventDefault();\n this.moveSelectionLeft(element, cursorIndex);\n break;\n }\n case 'ArrowRight': {\n event.preventDefault();\n this.moveSelectionRight(element, cursorIndex);\n break;\n }\n case 'ArrowDown': {\n event.preventDefault();\n this.stepDown(event);\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n this.stepUp(event);\n break;\n }\n }\n };\n\n moveSelectionLeft = (element: React.KeyboardEvent<HTMLInputElement>['currentTarget'], cursorIndex: number) => {\n if (element.selectionStart === null) return;\n\n const value = element.value;\n\n const nextPosition = element.selectionStart - 1 >= 0 ? element.selectionStart - 1 : 0;\n\n const cursorPosition =\n value[element.selectionStart - cursorIndex] === this.separatorThousands\n ? element.selectionStart - cursorIndex\n : nextPosition;\n\n if (this.cursorPosition === -1) {\n // without shift\n element.setSelectionRange(cursorPosition, cursorPosition);\n } else {\n if (\n this.cursorPosition &&\n element.selectionStart <= this.cursorPosition &&\n element.selectionEnd === this.cursorPosition\n ) {\n element.setSelectionRange(cursorPosition, element.selectionEnd);\n } else if (element.selectionEnd !== null) {\n element.setSelectionRange(\n element.selectionStart,\n value[element.selectionEnd - cursorIndex] === this.separatorThousands\n ? element.selectionEnd - cursorIndex\n : element.selectionEnd - 1,\n );\n }\n }\n };\n\n moveSelectionRight = (element: React.KeyboardEvent<HTMLInputElement>['currentTarget'], cursorIndex: number) => {\n if (element.selectionEnd === null) return;\n\n const value = element.value;\n const nextPosition = element.selectionEnd + 1;\n\n const cursorPosition =\n value[element.selectionEnd] === this.separatorThousands\n ? element.selectionEnd + cursorIndex\n : nextPosition;\n\n if (this.cursorPosition === -1) {\n // without shift\n element.setSelectionRange(cursorPosition, cursorPosition);\n } else {\n if (\n this.cursorPosition &&\n element.selectionEnd >= this.cursorPosition &&\n element.selectionStart === this.cursorPosition\n ) {\n element.setSelectionRange(element.selectionStart, cursorPosition);\n } else if (element.selectionStart !== null) {\n element.setSelectionRange(\n value[element.selectionStart] === this.separatorThousands\n ? element.selectionStart + cursorIndex\n : element.selectionStart + 1,\n element.selectionEnd,\n );\n }\n }\n };\n\n handleClick = (event: React.MouseEvent<HTMLInputElement>) => {\n const element = event.currentTarget;\n const value = element.value;\n\n if (element.selectionStart !== null && value[element.selectionStart - 1] === this.separatorThousands) {\n element.setSelectionRange(element.selectionStart - 1, element.selectionEnd! - 1);\n }\n };\n\n stepUp = (event: StepEvent) => {\n const { max = Number.MAX_SAFE_INTEGER, min, step, value } = this.asProps;\n\n let numberValue;\n\n // https://stackoverflow.com/questions/68010124/safari-number-input-stepup-stepdown-not-functioning-with-empty-value\n if (value === '' || value === null) {\n numberValue = min ?? 0;\n } else {\n numberValue = Number.parseFloat(value);\n }\n\n if (Number.isNaN(numberValue)) return;\n\n const nextValue = Math.min(numberValue + step, max);\n\n this.handlers.value(this.processedValue(this.getStringValue(nextValue)), event);\n };\n\n stepDown = (event: StepEvent) => {\n const { max, min = Number.MIN_SAFE_INTEGER, step, value } = this.asProps;\n\n let numberValue;\n\n if (value === '' || value === null) {\n numberValue = max ?? 0;\n } else {\n numberValue = Number.parseFloat(value);\n }\n\n if (Number.isNaN(numberValue)) return;\n\n const nextValue = Math.max(numberValue - step, min);\n\n this.handlers.value(this.processedValue(this.getStringValue(nextValue)), event);\n };\n\n processedValue(value: string): NSInputNumber.Value | NSInputNumber.ValueNumber {\n if (this.valueType === 'string') {\n return value;\n }\n\n if (value === '') {\n return null;\n }\n\n return Number(value);\n }\n\n render() {\n const SValue = Root;\n const { styles, min, max, step, forwardRef, inputRef } = this.asProps;\n const { displayValue } = this.state;\n\n return sstyled(styles)(\n <>\n <SValue\n render={Input.Value}\n autoComplete='off'\n onBlur={this.handleValidation}\n use:onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onKeyUp={this.handleKeyUp}\n onClick={this.handleClick}\n use:ref={forkRef(this.valueInputRef, inputRef, forwardRef ?? null)}\n use:value={displayValue}\n inputMode={Number.isInteger(step) ? 'numeric' : 'decimal'}\n min={min}\n max={max}\n step={step}\n />\n </>,\n );\n }\n}\n\nfunction Controls(\n props: Intergalactic.InternalTypings.InferChildComponentProps<NSInputNumber.Controls.Component, typeof InputNumber, 'Controls'>,\n) {\n const { Children, increment, decrement, styles, getI18nText } = props;\n const SControls = Root;\n const SUp = 'button';\n const SDown = 'button';\n\n return sstyled(styles)(\n <SControls render={Input.Addon} aria-hidden='true'>\n <SUp\n onClick={increment}\n tabIndex={-1}\n type='button'\n aria-label={getI18nText('increment')}\n >\n <IncrementIcon />\n </SUp>\n <SDown\n onClick={decrement}\n tabIndex={-1}\n type='button'\n aria-label={getI18nText('decrement')}\n >\n <DecrementIcon />\n </SDown>\n <Children />\n </SControls>,\n );\n}\nControls.style = style;\n\n/**\n * InputNumber\n *\n * {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-api/|API} | {@link https://developer.semrush.com/intergalactic/components/input-number/input-number-code/|Examples}\n */\nexport default createComponent<\n NSInputNumber.Component,\n typeof InputNumber\n>(InputNumber, {\n Value,\n Controls,\n Addon: Input.Addon,\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputNumber.type.js","names":[],"sources":["../../src/InputNumber.type.ts"],"sourcesContent":["import type { Intergalactic, PropGetterFn } from '@semcore/core';\nimport type { NSInput } from '@semcore/input';\nimport type React from 'react';\n\nimport type { LocalizedMessages } from './translations/__intergalactic-dynamic-locales';\n\ndeclare namespace NSInputNumber {\n type Value = string;\n type Size = 'm' | 'l';\n type Props = NSInput.Props & {\n /** Input size\n * @default m\n * */\n size?: NSInputNumber.Size;\n /**\n * Locale value\n */\n locale?: string;\n };\n type DefaultProps = {\n size: 'm';\n i18n: LocalizedMessages;\n locale: 'en';\n };\n type Ctx = {\n getValueProps: PropGetterFn;\n getControlsProps: PropGetterFn;\n getAddonProps: PropGetterFn;\n };\n\n namespace Value {\n type Props = NSInput.Value.Props & {\n /** Minimum value\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n /** Maximum value\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n /** Value change step\n * @default 1\n */\n step?: number;\n /** Numeric value */\n value?:
|
|
1
|
+
{"version":3,"file":"InputNumber.type.js","names":[],"sources":["../../src/InputNumber.type.ts"],"sourcesContent":["import type { Intergalactic, PropGetterFn } from '@semcore/core';\nimport type { NSInput } from '@semcore/input';\nimport type React from 'react';\n\nimport type { LocalizedMessages } from './translations/__intergalactic-dynamic-locales';\n\ndeclare namespace NSInputNumber {\n type Value = string;\n type ValueNumber = number | null;\n type CalculatedValue<V> = V extends Value ? Value : ValueNumber;\n type Size = 'm' | 'l';\n type Props = NSInput.Props & {\n /** Input size\n * @default m\n * */\n size?: NSInputNumber.Size;\n /**\n * Locale value\n */\n locale?: string;\n };\n type DefaultProps = {\n size: 'm';\n i18n: LocalizedMessages;\n locale: 'en';\n };\n type Ctx = {\n getValueProps: PropGetterFn;\n getControlsProps: PropGetterFn;\n getAddonProps: PropGetterFn;\n };\n\n namespace Value {\n type Props<V extends Value | ValueNumber> = Intergalactic.InternalTypings.EfficientOmit<NSInput.Value.Props, 'value' | 'onChange'> & {\n /** Minimum value\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n /** Maximum value\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n /** Value change step\n * @default 1\n */\n step?: number;\n /** Numeric value */\n value?: CalculatedValue<V>;\n /** Called when the input value changes, it returns its current value in numeric format */\n onChange?: (value: CalculatedValue<V>, event?: React.SyntheticEvent<HTMLInputElement>) => void;\n };\n type DefaultProps = {\n defaultValue: '';\n step: 1;\n };\n type State = {\n displayValue: NSInputNumber.Value;\n };\n type Handlers = {\n value: [\n null,\n (value: Value | ValueNumber | undefined, event: React.SyntheticEvent | WheelEvent) => void,\n ];\n };\n\n type Component = (<\n V extends Value | ValueNumber = Value,\n Tag extends Intergalactic.Tag = 'input',\n >(\n props: Intergalactic.InternalTypings.EfficientOmit<\n Intergalactic.InternalTypings.ComponentProps<Tag, 'input', Props<V>>,\n 'tag' | 'children'\n >\n ) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'input', 'input', Props<any>>;\n }\n\n namespace Controls {\n type Props = NSInput.Addon.Props & {\n /** Always displays controls (steppers)\n * @default false\n */\n showControls?: boolean;\n };\n\n type Component = Intergalactic.Component<'div', Props>;\n }\n\n namespace Addon {\n type Component = Intergalactic.Component<'div', NSInput.Addon.Props>;\n }\n\n type Component = Intergalactic.Component<'div', Props, Ctx> & {\n Value: Value.Component;\n Controls: Controls.Component;\n Addon: Addon.Component;\n };\n}\n\n/** @deprecated It will be removed in v19. */\nexport type InputNumberValue = NSInputNumber.Value;\n/** @deprecated It will be removed in v19. */\nexport type InputNumberSize = NSInputNumber.Size;\n/** @deprecated It will be removed in v19. */\nexport type InputNumberProps = NSInputNumber.Props;\n/** @deprecated It will be removed in v19. */\nexport type InputNumberValueProps = NSInputNumber.Value.Props<string>;\n/** @deprecated It will be removed in v19. */\nexport type InputNumberControlsProps = NSInputNumber.Controls.Props;\n/** @deprecated It will be removed in v19. */\nexport type InputNumberCtx = NSInputNumber.Ctx;\n\nexport type { NSInputNumber };\n"],"mappings":"","ignoreList":[]}
|