@semcore/input-number 17.2.1 → 17.2.2-prerelease.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_InputNumber","_interopRequireWildcard","require","_buttons"],"sources":["../../src/index.js"],"sourcesContent":["export { default, parseValueWithMinMax } from './InputNumber';\nexport { IncrementIcon, DecrementIcon } from './buttons';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_InputNumber","_interopRequireWildcard","require","_buttons","_InputNumber2","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"],"sources":["../../src/index.ts"],"sourcesContent":["export { default, parseValueWithMinMax } from './InputNumber';\nexport { IncrementIcon, DecrementIcon } from './buttons';\n\nexport * from './InputNumber.type';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,aAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,aAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,aAAA,CAAAI,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"__intergalactic-dynamic-locales.js","names":["_de","_interopRequireDefault","require","_en","_es","_fr","_it","_ja","_ko","_nl","_pl","_pt","_sv","_tr","_vi","_zh","localizedMessages","exports","de","en","es","fr","it","ja","ko","nl","pt","tr","vi","zh","pl","sv"],"sources":["../../../src/translations/__intergalactic-dynamic-locales.ts"],"sourcesContent":["import de from './de.json';\nimport en from './en.json';\nimport es from './es.json';\nimport fr from './fr.json';\nimport it from './it.json';\nimport ja from './ja.json';\nimport ko from './ko.json';\nimport nl from './nl.json';\nimport pl from './pl.json';\nimport pt from './pt.json';\nimport sv from './sv.json';\nimport tr from './tr.json';\nimport vi from './vi.json';\nimport zh from './zh.json';\n\nexport const localizedMessages = {\n de,\n en,\n es,\n fr,\n it,\n ja,\n ko,\n nl,\n pt,\n tr,\n vi,\n zh,\n pl,\n sv,\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,GAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,GAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,GAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,GAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,GAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,GAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,GAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,GAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,GAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,GAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,GAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,GAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,GAAA,GAAAd,sBAAA,CAAAC,OAAA;AAEO,MAAMc,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG;EAC/BE,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"__intergalactic-dynamic-locales.js","names":["_de","_interopRequireDefault","require","_en","_es","_fr","_it","_ja","_ko","_nl","_pl","_pt","_sv","_tr","_vi","_zh","localizedMessages","exports","de","en","es","fr","it","ja","ko","nl","pt","tr","vi","zh","pl","sv"],"sources":["../../../src/translations/__intergalactic-dynamic-locales.ts"],"sourcesContent":["import de from './de.json';\nimport en from './en.json';\nimport es from './es.json';\nimport fr from './fr.json';\nimport it from './it.json';\nimport ja from './ja.json';\nimport ko from './ko.json';\nimport nl from './nl.json';\nimport pl from './pl.json';\nimport pt from './pt.json';\nimport sv from './sv.json';\nimport tr from './tr.json';\nimport vi from './vi.json';\nimport zh from './zh.json';\n\nexport const localizedMessages = {\n de,\n en,\n es,\n fr,\n it,\n ja,\n ko,\n nl,\n pt,\n tr,\n vi,\n zh,\n pl,\n sv,\n};\n\nexport type LocalizedMessages = typeof localizedMessages;\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,GAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,GAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,GAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,GAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,GAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,GAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,GAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,GAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,GAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,GAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,GAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,GAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,GAAA,GAAAd,sBAAA,CAAAC,OAAA;AAEO,MAAMc,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG;EAC/BE,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA,WAAE;EACFC,EAAE,EAAFA;AACF,CAAC","ignoreList":[]}
@@ -11,19 +11,27 @@ import Input from '@semcore/input';
11
11
  import React from 'react';
12
12
  import { DecrementIcon, IncrementIcon } from './buttons';
13
13
  /*!__reshadow-styles__:"./style/input-number.shadow.css"*/
14
- const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".___SValue_9qcwr_gg_:focus~.___SControls_9qcwr_gg_{display:flex}.___SControls_9qcwr_gg_{display:none;flex-flow:column;justify-content:center;height:100%;box-sizing:border-box}.___SControls_9qcwr_gg_.__showControls_9qcwr_gg_{display:flex}.___SDown_9qcwr_gg_,.___SUp_9qcwr_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_9qcwr_gg_,.___SUp_9qcwr_gg_{color:var(--intergalactic-icon-secondary-neutral,oklch(.104 .023 162.3/.385))}}.___SDown_9qcwr_gg_:focus,.___SUp_9qcwr_gg_:focus{outline:none}@media (hover:hover){.___SDown_9qcwr_gg_:hover,.___SUp_9qcwr_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,#0005026e)}@media (color-gamut:p3){.___SDown_9qcwr_gg_:hover,.___SUp_9qcwr_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,oklch(.1 .023 159.1/.433))}}}.___SUp_9qcwr_gg_{padding-bottom:1px}.___SDown_9qcwr_gg_{padding-top:1px}.___SValue_9qcwr_gg_::-webkit-inner-spin-button,.___SValue_9qcwr_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_9qcwr_gg_._type_number_9qcwr_gg_{-moz-appearance:textfield}.___SValue_9qcwr_gg_.__disabled_9qcwr_gg_~.___SControls_9qcwr_gg_{opacity:var(--intergalactic-disabled-opacity,.4);cursor:default;pointer-events:none}.___SValueHidden_9qcwr_gg_{position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden}", /*__inner_css_end__*/"9qcwr_gg_"),
14
+ const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".___SValue_1i69c_gg_:focus~.___SControls_1i69c_gg_{display:flex}.___SControls_1i69c_gg_{display:none;flex-flow:column;justify-content:center;height:100%;box-sizing:border-box}.___SControls_1i69c_gg_.__showControls_1i69c_gg_{display:flex}.___SDown_1i69c_gg_,.___SUp_1i69c_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_1i69c_gg_,.___SUp_1i69c_gg_{color:var(--intergalactic-icon-secondary-neutral,oklch(.104 .023 162.3/.385))}}.___SDown_1i69c_gg_:focus,.___SUp_1i69c_gg_:focus{outline:none}@media (hover:hover){.___SDown_1i69c_gg_:hover,.___SUp_1i69c_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,#0005026e)}@media (color-gamut:p3){.___SDown_1i69c_gg_:hover,.___SUp_1i69c_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,oklch(.1 .023 159.1/.433))}}}.___SUp_1i69c_gg_{padding-bottom:1px}.___SDown_1i69c_gg_{padding-top:1px}.___SValue_1i69c_gg_::-webkit-inner-spin-button,.___SValue_1i69c_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_1i69c_gg_._type_number_1i69c_gg_{-moz-appearance:textfield}.___SValue_1i69c_gg_.__disabled_1i69c_gg_~.___SControls_1i69c_gg_{opacity:var(--intergalactic-disabled-opacity,.4);cursor:default;pointer-events:none}.___SValueHidden_1i69c_gg_{position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden}", /*__inner_css_end__*/"1i69c_gg_"),
15
15
  /*__reshadow_css_end__*/
16
16
  {
17
- "__SValue": "___SValue_9qcwr_gg_",
18
- "__SControls": "___SControls_9qcwr_gg_",
19
- "_showControls": "__showControls_9qcwr_gg_",
20
- "__SUp": "___SUp_9qcwr_gg_",
21
- "__SDown": "___SDown_9qcwr_gg_",
22
- "_disabled": "__disabled_9qcwr_gg_",
23
- "__SValueHidden": "___SValueHidden_9qcwr_gg_",
24
- "_type_number": "_type_number_9qcwr_gg_"
17
+ "__SValue": "___SValue_1i69c_gg_",
18
+ "__SControls": "___SControls_1i69c_gg_",
19
+ "_showControls": "__showControls_1i69c_gg_",
20
+ "__SUp": "___SUp_1i69c_gg_",
21
+ "__SDown": "___SDown_1i69c_gg_",
22
+ "_disabled": "__disabled_1i69c_gg_",
23
+ "__SValueHidden": "___SValueHidden_1i69c_gg_",
24
+ "_type_number": "_type_number_1i69c_gg_"
25
25
  });
26
26
  import { localizedMessages } from './translations/__intergalactic-dynamic-locales';
27
+
28
+ /** Events that can trigger a value step (buttons, keyboard arrows, mouse wheel). */
29
+
30
+ /**
31
+ * The input DOM node whose native `stepUp`/`stepDown` methods are replaced at runtime
32
+ * (see `Value.componentDidMount`) with event-aware versions.
33
+ */
34
+
27
35
  export function parseValueWithMinMax(value, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {
28
36
  return Math.max(min, Math.min(max, value));
29
37
  }
@@ -40,7 +48,8 @@ class InputNumber extends Component {
40
48
  }
41
49
  getValueProps() {
42
50
  const numberFormatter = new Intl.NumberFormat(this.asProps.locale, {
43
- style: 'decimal'
51
+ style: 'decimal',
52
+ maximumFractionDigits: 100
44
53
  });
45
54
  return {
46
55
  inputRef: this.inputRef,
@@ -51,11 +60,9 @@ class InputNumber extends Component {
51
60
  }
52
61
  getControlsProps() {
53
62
  const {
54
- size,
55
63
  getI18nText
56
64
  } = this.asProps;
57
65
  return {
58
- size,
59
66
  increment: this.increment,
60
67
  decrement: this.decrement,
61
68
  getI18nText
@@ -81,6 +88,9 @@ _defineProperty(InputNumber, "defaultProps", {
81
88
  class Value extends Component {
82
89
  constructor(...args) {
83
90
  super(...args);
91
+ _defineProperty(this, "state", {
92
+ displayValue: ''
93
+ });
84
94
  _defineProperty(this, "valueInputRef", /*#__PURE__*/React.createRef());
85
95
  _defineProperty(this, "cursorPosition", -1);
86
96
  _defineProperty(this, "getFormattedValue", value => {
@@ -100,9 +110,9 @@ class Value extends Component {
100
110
  let displayValue = '';
101
111
  if (/\.[0-9]*0$/.test(stringNumber)) {
102
112
  const [int, decimal] = stringNumber.split(this.separatorDecimal);
103
- displayValue = numberFormatter.format(int) + this.separatorDecimal + decimal;
113
+ displayValue = numberFormatter.format(+int) + this.separatorDecimal + decimal;
104
114
  } else if (stringNumber !== '') {
105
- displayValue = numberFormatter.format(stringNumber);
115
+ displayValue = numberFormatter.format(+stringNumber);
106
116
  }
107
117
  return {
108
118
  parsedValue: stringNumber,
@@ -112,21 +122,22 @@ class Value extends Component {
112
122
  _defineProperty(this, "handleValidation", event => {
113
123
  const {
114
124
  value,
115
- displayValue,
116
125
  min,
117
126
  max,
118
127
  step
119
128
  } = this.asProps;
129
+ const {
130
+ displayValue
131
+ } = this.state;
120
132
  const {
121
133
  parsedValue
122
134
  } = this.valueParser(event.currentTarget.value, value, displayValue);
123
- const roundCoefficient = step < 1 ? step.toString().split('.')[1].length : 1;
124
135
  if (Number.isNaN(value) || Number.isNaN(Number.parseFloat(parsedValue))) {
125
136
  event.currentTarget.value = '';
126
137
  this.handlers.value('', event);
127
138
  } else {
128
139
  let numberValue = parseValueWithMinMax(Number.parseFloat(parsedValue), min, max);
129
- const rounded = this.round(numberValue % step, step);
140
+ const rounded = this.round(numberValue % step);
130
141
  if (rounded !== 0) {
131
142
  if (rounded >= step / 2) {
132
143
  numberValue += step - rounded;
@@ -134,8 +145,7 @@ class Value extends Component {
134
145
  numberValue -= rounded;
135
146
  }
136
147
  }
137
- const numberValueRounded = Number(numberValue.toFixed(roundCoefficient));
138
- this.handlers.value(String(numberValueRounded), event);
148
+ this.handlers.value(this.getDisplayValue(numberValue), event);
139
149
  }
140
150
  });
141
151
  _defineProperty(this, "onWheel", event => {
@@ -145,9 +155,9 @@ class Value extends Component {
145
155
  if (event.target !== this.valueInputRef.current) return;
146
156
  if (document.activeElement !== this.valueInputRef.current) return;
147
157
  event.preventDefault();
148
- if (event.wheelDelta > 0) {
158
+ if (event.deltaY < 0) {
149
159
  this.stepUp(event);
150
- } else if (event.wheelDelta < 0) {
160
+ } else if (event.deltaY > 0) {
151
161
  this.stepDown(event);
152
162
  }
153
163
  });
@@ -158,7 +168,9 @@ class Value extends Component {
158
168
  value: prevValue
159
169
  } = this.asProps;
160
170
  if (value === '.' || value === '-') {
161
- this.handlers.displayValue(value);
171
+ this.setState({
172
+ displayValue: value
173
+ });
162
174
  return false;
163
175
  }
164
176
  if (value.endsWith('-')) {
@@ -166,7 +178,9 @@ class Value extends Component {
166
178
  }
167
179
  if (value.endsWith('.')) {
168
180
  if (value.length > prevValue.length) {
169
- this.handlers.displayValue(numberFormatter.format(value) + this.separatorDecimal);
181
+ this.setState({
182
+ displayValue: numberFormatter.format(value) + this.separatorDecimal
183
+ });
170
184
  return false;
171
185
  } else {
172
186
  this.handlers.value(value.slice(0, -1), event);
@@ -175,7 +189,7 @@ class Value extends Component {
175
189
  }
176
190
  const digits = /^[0-9.-]+$/.test(value);
177
191
  if (digits || value === '') {
178
- this.handlers.value(value, event);
192
+ this.handlers.value(this.limitDecimals(value), event);
179
193
  }
180
194
  });
181
195
  _defineProperty(this, "handleKeyUp", event => {
@@ -189,7 +203,7 @@ class Value extends Component {
189
203
  const length = value.length;
190
204
  const {
191
205
  displayValue
192
- } = this.asProps;
206
+ } = this.state;
193
207
  if (event.key === '.' || event.key === ',') {
194
208
  // 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)
195
209
  if (value.indexOf(this.separatorDecimal) === -1 && event.key === ',') {
@@ -204,11 +218,13 @@ class Value extends Component {
204
218
  if (event.key === 'Backspace' && value.endsWith(this.separatorDecimal)) {
205
219
  event.preventDefault();
206
220
  event.stopPropagation();
207
- this.handlers.displayValue(displayValue.slice(0, -1));
221
+ this.setState({
222
+ displayValue: displayValue?.slice(0, -1)
223
+ });
208
224
  return false;
209
225
  }
210
226
  if (element.selectionStart !== length && (event.key === 'Backspace' || event.key === this.separatorDecimal || ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(event.key))) {
211
- const afterSelection = value.slice(element.selectionEnd);
227
+ const afterSelection = value.slice(element.selectionEnd ?? undefined);
212
228
  requestAnimationFrame(() => {
213
229
  const newValue = this.state.displayValue;
214
230
  const index = newValue.lastIndexOf(afterSelection);
@@ -254,6 +270,7 @@ class Value extends Component {
254
270
  }
255
271
  });
256
272
  _defineProperty(this, "moveSelectionLeft", (element, cursorIndex) => {
273
+ if (element.selectionStart === null) return;
257
274
  const value = element.value;
258
275
  const nextPosition = element.selectionStart - 1 >= 0 ? element.selectionStart - 1 : 0;
259
276
  const cursorPosition = value[element.selectionStart - cursorIndex] === this.separatorThousands ? element.selectionStart - cursorIndex : nextPosition;
@@ -261,14 +278,15 @@ class Value extends Component {
261
278
  // without shift
262
279
  element.setSelectionRange(cursorPosition, cursorPosition);
263
280
  } else {
264
- if (element.selectionStart <= this.cursorPosition && element.selectionEnd === this.cursorPosition) {
281
+ if (this.cursorPosition && element.selectionStart <= this.cursorPosition && element.selectionEnd === this.cursorPosition) {
265
282
  element.setSelectionRange(cursorPosition, element.selectionEnd);
266
- } else {
283
+ } else if (element.selectionEnd !== null) {
267
284
  element.setSelectionRange(element.selectionStart, value[element.selectionEnd - cursorIndex] === this.separatorThousands ? element.selectionEnd - cursorIndex : element.selectionEnd - 1);
268
285
  }
269
286
  }
270
287
  });
271
288
  _defineProperty(this, "moveSelectionRight", (element, cursorIndex) => {
289
+ if (element.selectionEnd === null) return;
272
290
  const value = element.value;
273
291
  const nextPosition = element.selectionEnd + 1;
274
292
  const cursorPosition = value[element.selectionEnd] === this.separatorThousands ? element.selectionEnd + cursorIndex : nextPosition;
@@ -276,24 +294,20 @@ class Value extends Component {
276
294
  // without shift
277
295
  element.setSelectionRange(cursorPosition, cursorPosition);
278
296
  } else {
279
- if (element.selectionEnd >= this.cursorPosition && element.selectionStart === this.cursorPosition) {
297
+ if (this.cursorPosition && element.selectionEnd >= this.cursorPosition && element.selectionStart === this.cursorPosition) {
280
298
  element.setSelectionRange(element.selectionStart, cursorPosition);
281
- } else {
299
+ } else if (element.selectionStart !== null) {
282
300
  element.setSelectionRange(value[element.selectionStart] === this.separatorThousands ? element.selectionStart + cursorIndex : element.selectionStart + 1, element.selectionEnd);
283
301
  }
284
302
  }
285
303
  });
286
304
  _defineProperty(this, "handleClick", event => {
287
- const element = event.target;
305
+ const element = event.currentTarget;
288
306
  const value = element.value;
289
- if (value[element.selectionStart - 1] === this.separatorThousands) {
307
+ if (element.selectionStart !== null && value[element.selectionStart - 1] === this.separatorThousands) {
290
308
  element.setSelectionRange(element.selectionStart - 1, element.selectionEnd - 1);
291
309
  }
292
310
  });
293
- _defineProperty(this, "handleBlur", event => {
294
- this.cursorPosition = -1;
295
- this.handleValidation(event);
296
- });
297
311
  _defineProperty(this, "stepUp", event => {
298
312
  const {
299
313
  max = Number.MAX_SAFE_INTEGER,
@@ -309,10 +323,9 @@ class Value extends Component {
309
323
  } else {
310
324
  numberValue = Number.parseFloat(value);
311
325
  }
312
- if (!Number.isNaN(numberValue)) {
313
- const newValue = numberValue + step <= max ? numberValue + step : max;
314
- this.handlers.value(newValue.toString(), event);
315
- }
326
+ if (Number.isNaN(numberValue)) return;
327
+ const nextValue = Math.min(numberValue + step, max);
328
+ this.handlers.value(this.getDisplayValue(nextValue), event);
316
329
  });
317
330
  _defineProperty(this, "stepDown", event => {
318
331
  const {
@@ -327,25 +340,27 @@ class Value extends Component {
327
340
  } else {
328
341
  numberValue = Number.parseFloat(value);
329
342
  }
330
- if (!Number.isNaN(numberValue)) {
331
- const newValue = numberValue - step >= min ? numberValue - step : min;
332
- this.handlers.value(newValue.toString(), event);
333
- }
343
+ if (Number.isNaN(numberValue)) return;
344
+ const nextValue = Math.max(numberValue - step, min);
345
+ this.handlers.value(this.getDisplayValue(nextValue), event);
334
346
  });
335
347
  }
336
348
  uncontrolledProps() {
337
349
  return {
338
- displayValue: null,
339
350
  value: [null, newValue => {
340
351
  const {
341
- value: prevValue,
342
352
  displayValue: prevDisplayValue
353
+ } = this.state;
354
+ const {
355
+ value: prevValue
343
356
  } = this.asProps;
344
357
  const {
345
358
  parsedValue,
346
359
  displayValue
347
- } = this.valueParser(newValue, prevValue, prevDisplayValue);
348
- this.handlers.displayValue(displayValue);
360
+ } = this.valueParser(newValue ?? '', prevValue, prevDisplayValue);
361
+ this.setState({
362
+ displayValue
363
+ });
349
364
  return parsedValue;
350
365
  }]
351
366
  };
@@ -362,9 +377,30 @@ class Value extends Component {
362
377
  } = this.props;
363
378
  return numberFormatter.format(1111).replace(/\d/g, '');
364
379
  }
365
- round(value, step) {
366
- const countDecimals = Math.floor(step) === step ? 0 : step.toString().split('.')[1].length || 0;
367
- return countDecimals === 0 ? Number.parseFloat(value) : Number.parseFloat(value).toPrecision(countDecimals);
380
+ get stepPrecision() {
381
+ const {
382
+ step
383
+ } = this.asProps;
384
+ const [_, decimals] = step?.toString().split('.') ?? [];
385
+ return decimals?.length ?? 0;
386
+ }
387
+ getDisplayValue(value) {
388
+ return value === 0 ? `${value}` : value.toFixed(this.stepPrecision);
389
+ }
390
+ limitDecimals(value) {
391
+ const {
392
+ stepPrecision
393
+ } = this;
394
+ if (stepPrecision === 0) return value;
395
+ const dotIndex = value.indexOf('.');
396
+ if (dotIndex === -1 || value.length - dotIndex - 1 <= stepPrecision) return value;
397
+ return value.slice(0, dotIndex + 1 + stepPrecision);
398
+ }
399
+ round(value) {
400
+ const {
401
+ stepPrecision
402
+ } = this;
403
+ return stepPrecision === 0 ? value : Number(value.toPrecision(stepPrecision));
368
404
  }
369
405
  // https://stackoverflow.com/questions/57358640/cancel-wheel-event-with-e-preventdefault-in-react-event-bubbling
370
406
  componentDidMount() {
@@ -387,15 +423,19 @@ class Value extends Component {
387
423
  const {
388
424
  displayValue
389
425
  } = this.valueParser(value, '', '');
390
- this.handlers.displayValue(displayValue);
426
+ this.setState({
427
+ displayValue
428
+ });
391
429
  }
392
430
  }
393
- componentDidUpdate(prevProps) {
431
+ componentDidUpdate(prevProps, prevState) {
394
432
  if (prevProps.value !== this.props.value) {
395
433
  const {
396
434
  displayValue
397
- } = this.valueParser(this.props.value, prevProps.value, prevProps.displayValue);
398
- this.handlers.displayValue(displayValue);
435
+ } = this.valueParser(this.props.value ?? '', prevProps.value, prevState.displayValue);
436
+ this.setState({
437
+ displayValue
438
+ });
399
439
  }
400
440
  }
401
441
  componentWillUnmount() {
@@ -411,9 +451,11 @@ class Value extends Component {
411
451
  max,
412
452
  step,
413
453
  forwardRef,
414
- inputRef,
415
- displayValue
454
+ inputRef
416
455
  } = this.asProps;
456
+ const {
457
+ displayValue
458
+ } = this.state;
417
459
  return _ref5 = sstyled(styles), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SValue, _ref5.cn("SValue", {
418
460
  ..._assignProps2({
419
461
  "autoComplete": 'off',
@@ -422,7 +464,7 @@ class Value extends Component {
422
464
  "onKeyDown": this.handleKeyDown,
423
465
  "onKeyUp": this.handleKeyUp,
424
466
  "onClick": this.handleClick,
425
- "use:ref": forkRef(this.valueInputRef, inputRef, forwardRef),
467
+ "use:ref": forkRef(this.valueInputRef, inputRef, forwardRef ?? null),
426
468
  "use:value": displayValue,
427
469
  "inputMode": Number.isInteger(step) ? 'numeric' : 'decimal',
428
470
  "min": min,
@@ -445,7 +487,6 @@ function Controls(props) {
445
487
  Children,
446
488
  increment,
447
489
  decrement,
448
- size,
449
490
  styles,
450
491
  getI18nText
451
492
  } = props;
@@ -460,13 +501,11 @@ function Controls(props) {
460
501
  "onClick": increment,
461
502
  "tabIndex": -1,
462
503
  "type": 'button',
463
- "size": size,
464
504
  "aria-label": getI18nText('increment')
465
505
  }), /*#__PURE__*/React.createElement(IncrementIcon, _ref6.cn("IncrementIcon", {}))), /*#__PURE__*/React.createElement(SDown, _ref6.cn("SDown", {
466
506
  "onClick": decrement,
467
507
  "tabIndex": -1,
468
508
  "type": 'button',
469
- "size": size,
470
509
  "aria-label": getI18nText('decrement')
471
510
  }), /*#__PURE__*/React.createElement(DecrementIcon, _ref6.cn("DecrementIcon", {}))), /*#__PURE__*/React.createElement(Children, _ref6.cn("Children", {})));
472
511
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InputNumber.js","names":["Component","createComponent","Root","sstyled","callAllEventHandlers","i18nEnhance","forkRef","Input","React","DecrementIcon","IncrementIcon","style","_sstyled","insert","localizedMessages","parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","InputNumber","constructor","args","_defineProperty","createRef","event","inputRef","current","stepUp","stepDown","getValueProps","numberFormatter","Intl","NumberFormat","asProps","locale","increment","decrement","getControlsProps","size","getI18nText","render","_ref","_ref4","SInputNumber","createElement","cn","_assignProps","i18n","Value","replace","RegExp","separatorThousands","separatorDecimal","prevValue","prevDisplayValue","props","stringNumber","getFormattedValue","String","isNaN","parsedValue","displayValue","test","int","decimal","split","format","step","valueParser","currentTarget","roundCoefficient","toString","length","parseFloat","handlers","numberValue","rounded","round","abs","numberValueRounded","toFixed","onWheel","handleWheel","target","valueInputRef","document","activeElement","preventDefault","wheelDelta","endsWith","slice","digits","key","cursorPosition","element","indexOf","stopPropagation","selectionStart","includes","afterSelection","selectionEnd","requestAnimationFrame","newValue","state","index","lastIndexOf","setSelectionRange","cursorIndex","shiftKey","moveSelectionLeft","moveSelectionRight","nextPosition","handleValidation","uncontrolledProps","countDecimals","floor","toPrecision","componentDidMount","addEventListener","autoFocus","setTimeout","focus","componentDidUpdate","prevProps","componentWillUnmount","removeEventListener","_ref2","_ref5","SValue","styles","forwardRef","Fragment","_assignProps2","handleChange","handleKeyDown","handleKeyUp","handleClick","isInteger","defaultValue","defaultDisplayValue","Controls","_ref3","arguments[0]","_ref6","Children","SControls","Addon","SUp","SDown","_assignProps3"],"sources":["../../src/InputNumber.jsx"],"sourcesContent":["import { Component, createComponent, Root, sstyled } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\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 style from './style/input-number.shadow.css';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\n\nexport function parseValueWithMinMax(\n value,\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 static displayName = 'InputNumber';\n static style = style;\n static enhance = [i18nEnhance(localizedMessages)];\n static defaultProps = {\n size: 'm',\n i18n: localizedMessages,\n locale: 'en',\n };\n\n inputRef = React.createRef();\n\n increment = (event) => {\n this.inputRef.current?.stepUp?.(event);\n };\n\n decrement = (event) => {\n this.inputRef.current?.stepDown?.(event);\n };\n\n getValueProps() {\n const numberFormatter = new Intl.NumberFormat(this.asProps.locale, { style: 'decimal' });\n\n return {\n inputRef: this.inputRef,\n increment: this.increment,\n decrement: this.decrement,\n numberFormatter,\n };\n }\n\n getControlsProps() {\n const { size, getI18nText } = this.asProps;\n return {\n size,\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 static style = style;\n static defaultProps = {\n defaultValue: '',\n defaultDisplayValue: '',\n step: 1,\n };\n\n valueInputRef = React.createRef();\n\n cursorPosition = -1;\n\n uncontrolledProps() {\n return {\n displayValue: null,\n value: [\n null,\n (newValue) => {\n const { value: prevValue, displayValue: prevDisplayValue } = this.asProps;\n\n const { parsedValue, displayValue } = this.valueParser(\n newValue,\n prevValue,\n prevDisplayValue,\n );\n\n this.handlers.displayValue(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) => {\n return value\n .replace(new RegExp(`[${this.separatorThousands}]`, 'g'), '')\n .replace(this.separatorDecimal, '.');\n };\n\n valueParser = (value, prevValue, prevDisplayValue) => {\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 round(value, step) {\n const countDecimals = Math.floor(step) === step ? 0 : step.toString().split('.')[1].length || 0;\n return countDecimals === 0\n ? Number.parseFloat(value)\n : Number.parseFloat(value).toPrecision(countDecimals);\n }\n\n handleValidation = (event) => {\n const { value, displayValue, min, max, step } = this.asProps;\n const { parsedValue } = this.valueParser(event.currentTarget.value, value, displayValue);\n const roundCoefficient = step < 1 ? step.toString().split('.')[1].length : 1;\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, 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 const numberValueRounded = Number(numberValue.toFixed(roundCoefficient));\n\n this.handlers.value(String(numberValueRounded), 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.handlers.displayValue(displayValue);\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.value !== this.props.value) {\n const { displayValue } = this.valueParser(\n this.props.value,\n prevProps.value,\n prevProps.displayValue,\n );\n this.handlers.displayValue(displayValue);\n }\n }\n\n componentWillUnmount() {\n this.valueInputRef.current?.removeEventListener('wheel', this.onWheel);\n }\n\n onWheel = (event) => {\n callAllEventHandlers(this.asProps.onWheel, this.handleWheel)(event);\n };\n\n handleWheel = (event) => {\n if (event.target !== this.valueInputRef.current) return;\n if (document.activeElement !== this.valueInputRef.current) return;\n event.preventDefault();\n if (event.wheelDelta > 0) {\n this.stepUp(event);\n } else if (event.wheelDelta < 0) {\n this.stepDown(event);\n }\n };\n\n handleChange = (event) => {\n const value = this.getFormattedValue(event.currentTarget.value);\n const { numberFormatter, value: prevValue } = this.asProps;\n\n if (value === '.' || value === '-') {\n this.handlers.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.handlers.displayValue(numberFormatter.format(value) + 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(value, event);\n }\n };\n\n handleKeyUp = (event) => {\n if (event.key === 'Shift') {\n this.cursorPosition = -1;\n }\n };\n\n handleKeyDown = (event) => {\n const element = event.currentTarget;\n const value = element.value;\n const length = value.length;\n const { displayValue } = this.asProps;\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.handlers.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);\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, cursorIndex) => {\n const value = element.value;\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 element.selectionStart <= this.cursorPosition &&\n element.selectionEnd === this.cursorPosition\n ) {\n element.setSelectionRange(cursorPosition, element.selectionEnd);\n } else {\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, cursorIndex) => {\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 element.selectionEnd >= this.cursorPosition &&\n element.selectionStart === this.cursorPosition\n ) {\n element.setSelectionRange(element.selectionStart, cursorPosition);\n } else {\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) => {\n const element = event.target;\n const value = element.value;\n\n if (value[element.selectionStart - 1] === this.separatorThousands) {\n element.setSelectionRange(element.selectionStart - 1, element.selectionEnd - 1);\n }\n };\n\n handleBlur = (event) => {\n this.cursorPosition = -1;\n this.handleValidation(event);\n };\n\n stepUp = (event) => {\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)) {\n const newValue = numberValue + step <= max ? numberValue + step : max;\n\n this.handlers.value(newValue.toString(), event);\n }\n };\n\n stepDown = (event) => {\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)) {\n const newValue = numberValue - step >= min ? numberValue - step : min;\n\n this.handlers.value(newValue.toString(), event);\n }\n };\n\n render() {\n const SValue = Root;\n const { styles, min, max, step, forwardRef, inputRef, displayValue } = this.asProps;\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)}\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(props) {\n const { Children, increment, decrement, size, 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 size={size}\n aria-label={getI18nText('increment')}\n >\n <IncrementIcon />\n </SUp>\n <SDown\n onClick={decrement}\n tabIndex={-1}\n type='button'\n size={size}\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(InputNumber, {\n Value,\n Controls,\n Addon: Input.Addon,\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"InputNumber.js","names":["Component","createComponent","Root","sstyled","callAllEventHandlers","i18nEnhance","forkRef","Input","React","DecrementIcon","IncrementIcon","style","_sstyled","insert","localizedMessages","parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","InputNumber","constructor","args","_defineProperty","createRef","event","inputRef","current","stepUp","stepDown","getValueProps","numberFormatter","Intl","NumberFormat","asProps","locale","maximumFractionDigits","increment","decrement","getControlsProps","getI18nText","render","_ref","_ref4","SInputNumber","createElement","cn","_assignProps","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","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","_assignProps2","handleValidation","handleChange","handleKeyDown","handleKeyUp","handleClick","isInteger","defaultValue","defaultDisplayValue","Controls","_ref3","arguments[0]","_ref6","Children","SControls","Addon","SUp","SDown","_assignProps3"],"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":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=InputNumber.type.js.map
@@ -0,0 +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?: NSInputNumber.Value;\n /** Called when the input value changes, it returns its current value in numeric format */\n onChange?: (value: NSInputNumber.Value, 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: Props['value'], event: React.SyntheticEvent | WheelEvent) => void,\n ];\n };\n\n type Component = Intergalactic.Component<'input', Props>;\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 v18. */\nexport type InputNumberValue = NSInputNumber.Value;\n/** @deprecated It will be removed in v18. */\nexport type InputNumberSize = NSInputNumber.Size;\n/** @deprecated It will be removed in v18. */\nexport type InputNumberProps = NSInputNumber.Props;\n/** @deprecated It will be removed in v18. */\nexport type InputNumberValueProps = NSInputNumber.Value.Props;\n/** @deprecated It will be removed in v18. */\nexport type InputNumberControlsProps = NSInputNumber.Controls.Props;\n/** @deprecated It will be removed in v18. */\nexport type InputNumberCtx = NSInputNumber.Ctx;\n\nexport type { NSInputNumber };\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"buttons.js","names":["React","IncrementIcon","createElement","fill","width","height","viewBox","d","DecrementIcon"],"sources":["../../src/buttons.jsx"],"sourcesContent":["import React from 'react';\n\nexport const IncrementIcon = () => (\n <svg fill='currentColor' width='10' height='5' viewBox='0 0 10 5'>\n <path d='M0,5l5,-5l5,5Z' />\n </svg>\n);\nexport const DecrementIcon = () => (\n <svg fill='currentColor' width='10' height='5' viewBox='0 0 10 5'>\n <path d='M0,0l10,0l-5,5Z' />\n </svg>\n);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAO,MAAMC,aAAa,GAAGA,CAAA,kBAC3BD,KAAA,CAAAE,aAAA;EAAKC,IAAI,EAAC,cAAc;EAACC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC,GAAG;EAACC,OAAO,EAAC;AAAU,gBAC/DN,KAAA,CAAAE,aAAA;EAAMK,CAAC,EAAC;AAAgB,CAAE,CACvB,CACN;AACD,OAAO,MAAMC,aAAa,GAAGA,CAAA,kBAC3BR,KAAA,CAAAE,aAAA;EAAKC,IAAI,EAAC,cAAc;EAACC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC,GAAG;EAACC,OAAO,EAAC;AAAU,gBAC/DN,KAAA,CAAAE,aAAA;EAAMK,CAAC,EAAC;AAAiB,CAAE,CACxB,CACN","ignoreList":[]}
1
+ {"version":3,"file":"buttons.js","names":["React","IncrementIcon","createElement","fill","width","height","viewBox","d","DecrementIcon"],"sources":["../../src/buttons.tsx"],"sourcesContent":["import React from 'react';\n\nexport const IncrementIcon = () => (\n <svg fill='currentColor' width='10' height='5' viewBox='0 0 10 5'>\n <path d='M0,5l5,-5l5,5Z' />\n </svg>\n);\n\nexport const DecrementIcon = () => (\n <svg fill='currentColor' width='10' height='5' viewBox='0 0 10 5'>\n <path d='M0,0l10,0l-5,5Z' />\n </svg>\n);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAO,MAAMC,aAAa,GAAGA,CAAA,kBAC3BD,KAAA,CAAAE,aAAA;EAAKC,IAAI,EAAC,cAAc;EAACC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC,GAAG;EAACC,OAAO,EAAC;AAAU,gBAC/DN,KAAA,CAAAE,aAAA;EAAMK,CAAC,EAAC;AAAgB,CAAE,CACvB,CACN;AAED,OAAO,MAAMC,aAAa,GAAGA,CAAA,kBAC3BR,KAAA,CAAAE,aAAA;EAAKC,IAAI,EAAC,cAAc;EAACC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC,GAAG;EAACC,OAAO,EAAC;AAAU,gBAC/DN,KAAA,CAAAE,aAAA;EAAMK,CAAC,EAAC;AAAiB,CAAE,CACxB,CACN","ignoreList":[]}
package/lib/es6/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { default, parseValueWithMinMax } from './InputNumber';
2
2
  export { IncrementIcon, DecrementIcon } from './buttons';
3
+ export * from './InputNumber.type';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","parseValueWithMinMax","IncrementIcon","DecrementIcon"],"sources":["../../src/index.js"],"sourcesContent":["export { default, parseValueWithMinMax } from './InputNumber';\nexport { IncrementIcon, DecrementIcon } from './buttons';\n"],"mappings":"AAAA,SAASA,OAAO,EAAEC,oBAAoB,QAAQ,eAAe;AAC7D,SAASC,aAAa,EAAEC,aAAa,QAAQ,WAAW","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","parseValueWithMinMax","IncrementIcon","DecrementIcon"],"sources":["../../src/index.ts"],"sourcesContent":["export { default, parseValueWithMinMax } from './InputNumber';\nexport { IncrementIcon, DecrementIcon } from './buttons';\n\nexport * from './InputNumber.type';\n"],"mappings":"AAAA,SAASA,OAAO,EAAEC,oBAAoB,QAAQ,eAAe;AAC7D,SAASC,aAAa,EAAEC,aAAa,QAAQ,WAAW;AAExD,cAAc,oBAAoB","ignoreList":[]}