numora-react 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,73 +1,315 @@
1
- # numora
1
+ # numora-react
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/numora.svg)](https://www.npmjs.com/package/numora)
3
+ [![npm version](https://img.shields.io/npm/v/numora-react.svg)](https://www.npmjs.com/package/numora-react)
4
+ [![npm downloads](https://img.shields.io/npm/dm/numora-react.svg)](https://www.npmjs.com/package/numora-react)
4
5
 
5
- A lightweight, framework-agnostic numeric input library for handling currency and decimal inputs in **financial/DeFi** applications. Built with TypeScript and designed for modern web applications with:
6
+ React component wrapper for [Numora](https://github.com/Sharqiewicz/numora) - a precision-first numeric input library for DeFi and financial applications.
6
7
 
7
- - **Zero dependencies** - minimal footprint for your bundle
8
- - **Type safety** - fully typed API for better developer experience
9
- - **Framework agnostic** - use with any framework or vanilla JavaScript
10
- - **Customizable** - extensive options to fit your specific needs
8
+ ## Features
11
9
 
12
- ## Demo
10
+ | Feature | Description |
11
+ |---------|-------------|
12
+ | **React Component** | Drop-in replacement for `<input>` with numeric formatting |
13
+ | **Decimal Precision Control** | Configure maximum decimal places with `maxDecimals` prop |
14
+ | **Thousand Separators** | Customizable thousand separators with `thousandsSeparator` prop |
15
+ | **Grouping Styles** | Support for different grouping styles (`thousand`, `lakh`, `wan`) |
16
+ | **Format on Blur/Change** | Choose when to apply formatting: on blur or on change |
17
+ | **Compact Notation Expansion** | When enabled via `shorthandParsing`, expands compact notation during paste (e.g., `"1k"` → `"1000"`, `"1.5m"` → `"1500000"`) |
18
+ | **Scientific Notation Expansion** | Always automatically expands scientific notation (e.g., `"1.5e-7"` → `"0.00000015"`, `"2e+5"` → `"200000"`) |
19
+ | **Paste Event Handling** | Intelligent paste handling with automatic sanitization, formatting, and cursor positioning |
20
+ | **Cursor Position Preservation** | Smart cursor positioning that works with thousand separators, even during formatting |
21
+ | **Thousand Separator Skipping** | On delete/backspace, cursor automatically skips over thousand separators for better UX |
22
+ | **Mobile Keyboard Optimization** | Automatic `inputmode="decimal"` for mobile numeric keyboards |
23
+ | **Mobile Keyboard Filtering** | Automatically filters non-breaking spaces and Unicode whitespace artifacts from mobile keyboards |
24
+ | **Non-numeric Character Filtering** | Automatic removal of invalid characters |
25
+ | **Comma/Dot Conversion** | When `thousandsGroupStyle` is not set (or `None`), typing comma or dot automatically converts to the configured decimal separator |
26
+ | **TypeScript Support** | Full TypeScript definitions included |
27
+ | **Ref Forwarding** | Supports React ref forwarding for direct input access |
28
+ | **Standard Input Props** | Accepts all standard HTMLInputElement props |
13
29
 
14
- Check out the [live demo](https://numora.netlify.app/) to see Numora in action.
30
+ **Note:** Some advanced features from the core package (like `decimalMinLength`, `enableNegative`, `enableLeadingZeros`, `rawValueMode`) are not yet exposed through the React component props. For full control, consider using the core `numora` package directly.
15
31
 
16
- ## Features
32
+ ## Comparison
17
33
 
18
- - Validates and sanitizes numeric input
19
- - Limits decimal places
20
- - Handles paste events
21
- - Converts commas to dots
22
- - Prevents multiple decimal points
23
- - Customizable with various options
24
- - Framework-agnostic core with adapters for popular frameworks
34
+ | Feature | numora-react | react-number-format | Native Number Input |
35
+ |---------|--------------|---------------------|---------------------|
36
+ | **React Component** | ✅ Yes | ✅ Yes | ⚠️ Basic |
37
+ | **Decimal Precision Control** | ✅ Max | ✅ Max | ❌ Limited |
38
+ | **Thousand Separators** | ✅ Customizable | ✅ Yes | ❌ No |
39
+ | **Custom Decimal Separator** | ✅ Yes | ✅ Yes | ❌ No (always `.`) |
40
+ | **Formatting Options** | Blur/Change modes | ✅ Multiple modes | ❌ No |
41
+ | **Cursor Preservation** | ✅ Advanced | ✅ Basic | ❌ N/A |
42
+ | **Mobile Support** | ✅ Yes | ✅ Yes | ⚠️ Limited |
43
+ | **TypeScript Support** | ✅ Yes | ✅ Yes | ⚠️ Partial |
44
+ | **Dependencies** | ⚠️ React + numora | ⚠️ React required | ✅ None |
45
+ | **Framework Support** | ✅ React | ❌ React only | ✅ All |
46
+ | **Scientific Notation** | ✅ Auto-expand | ⚠️ Limited | ❌ No |
47
+ | **Compact Notation** | ✅ Yes (on paste when enabled) | ❌ No | ❌ No |
48
+ | **Paste Handling** | ✅ Intelligent | ✅ Yes | ⚠️ Basic |
49
+ | **Ref Forwarding** | ✅ Yes | ✅ Yes | ✅ Yes |
50
+ | **Grouping Styles** | ✅ Thousand/Lakh/Wan | ⚠️ Thousand only | ❌ No |
51
+ | **Comma/Dot Conversion** | ✅ Yes | ⚠️ Limited | ❌ No |
25
52
 
26
53
  ## Installation
27
54
 
28
55
  ```bash
29
- npm install numora
56
+ npm install numora-react
30
57
  # or
31
- yarn add numora
58
+ yarn add numora-react
32
59
  # or
33
- pnpm add numora
60
+ pnpm add numora-react
34
61
  ```
35
62
 
63
+ **Note:** `numora-react` depends on `numora` core package, which will be installed automatically.
64
+
36
65
  ## Usage
37
66
 
38
- ```typescript
39
- import { NumericInput } from 'numora';
40
-
41
- // Get the container element where you want to mount the input
42
- const container = document.querySelector('#my-input-container');
43
-
44
- // Create a new NumericInput instance
45
- const numericInput = new NumericInput(container, {
46
- maxDecimals: 2,
47
- onChange: (value) => {
48
- console.log('Value changed:', value);
49
- // Do something with the value
50
- },
51
- // ... all other input properties you want
52
- });
67
+ ### Basic Example
68
+
69
+ ```tsx
70
+ import { NumericInput } from 'numora-react';
71
+
72
+ function App() {
73
+ return (
74
+ <NumericInput
75
+ maxDecimals={2}
76
+ onChange={(e) => {
77
+ console.log('Value:', e.target.value);
78
+ }}
79
+ />
80
+ );
81
+ }
82
+ ```
83
+
84
+ ### Advanced Example
85
+
86
+ ```tsx
87
+ import { NumericInput } from 'numora-react';
88
+ import { useRef } from 'react';
89
+
90
+ function PaymentForm() {
91
+ const inputRef = useRef<HTMLInputElement>(null);
92
+
93
+ return (
94
+ <NumericInput
95
+ ref={inputRef}
96
+ maxDecimals={18}
97
+ formatOn="change"
98
+ thousandsSeparator=","
99
+ thousandsGroupStyle="thousand"
100
+ shorthandParsing={true} // Enable compact notation expansion on paste
101
+ placeholder="Enter amount"
102
+ className="payment-input"
103
+ onChange={(e) => {
104
+ const value = e.target.value;
105
+ console.log('Formatted value:', value);
106
+ }}
107
+ onFocus={(e) => {
108
+ console.log('Input focused');
109
+ }}
110
+ onBlur={(e) => {
111
+ console.log('Input blurred');
112
+ }}
113
+ />
114
+ );
115
+ }
53
116
  ```
54
117
 
55
- ## Options
118
+ ### Compact Notation Example
119
+
120
+ ```tsx
121
+ import { NumericInput } from 'numora-react';
122
+
123
+ function App() {
124
+ return (
125
+ <NumericInput
126
+ maxDecimals={18}
127
+ shorthandParsing={true} // Enable compact notation expansion
128
+ onChange={(e) => {
129
+ console.log('Value:', e.target.value);
130
+ }}
131
+ />
132
+ );
133
+ }
134
+
135
+ // When user pastes "1.5k", it automatically expands to "1500"
136
+ // Scientific notation like "1.5e-7" is always automatically expanded
137
+ ```
138
+
139
+ ### Scientific Notation Example
140
+
141
+ ```tsx
142
+ import { NumericInput } from 'numora-react';
143
+
144
+ function App() {
145
+ return (
146
+ <NumericInput
147
+ maxDecimals={18}
148
+ onChange={(e) => {
149
+ console.log('Value:', e.target.value);
150
+ }}
151
+ />
152
+ );
153
+ }
154
+
155
+ // Scientific notation is ALWAYS automatically expanded
156
+ // User can paste "1.5e-7" and it becomes "0.00000015"
157
+ // User can paste "2e+5" and it becomes "200000"
158
+ ```
159
+
160
+ ### With Form Libraries
161
+
162
+ #### React Hook Form
163
+
164
+ ```tsx
165
+ import { useForm } from 'react-hook-form';
166
+ import { NumericInput } from 'numora-react';
167
+
168
+ function Form() {
169
+ const { register, handleSubmit } = useForm();
170
+
171
+ return (
172
+ <form onSubmit={handleSubmit((data) => console.log(data))}>
173
+ <NumericInput
174
+ {...register('amount')}
175
+ maxDecimals={2}
176
+ thousandsSeparator=","
177
+ />
178
+ <button type="submit">Submit</button>
179
+ </form>
180
+ );
181
+ }
182
+ ```
183
+
184
+ #### Formik
185
+
186
+ ```tsx
187
+ import { useFormik } from 'formik';
188
+ import { NumericInput } from 'numora-react';
56
189
 
57
- The NumericInput constructor accepts the following options:
58
- | Option | Type | Default | Description |
59
- | --------------- | -------- | --------- | -------------------------------------------------------- |
60
- | maxDecimals | number | 2 | Maximum number of decimal places allowed |
61
- | onChange | function | undefined | Callback function that runs when the input value changes |
62
- | supports all input properties | - | - | - |
190
+ function Form() {
191
+ const formik = useFormik({
192
+ initialValues: { amount: '' },
193
+ onSubmit: (values) => {
194
+ console.log(values);
195
+ },
196
+ });
63
197
 
64
- ## Framework Adapters
198
+ return (
199
+ <form onSubmit={formik.handleSubmit}>
200
+ <NumericInput
201
+ name="amount"
202
+ value={formik.values.amount}
203
+ onChange={formik.handleChange}
204
+ onBlur={formik.handleBlur}
205
+ maxDecimals={2}
206
+ thousandsSeparator=","
207
+ />
208
+ <button type="submit">Submit</button>
209
+ </form>
210
+ );
211
+ }
212
+ ```
213
+
214
+ ### Controlled Component
215
+
216
+ ```tsx
217
+ import { NumericInput } from 'numora-react';
218
+ import { useState } from 'react';
219
+
220
+ function ControlledInput() {
221
+ const [value, setValue] = useState('');
222
+
223
+ return (
224
+ <NumericInput
225
+ value={value}
226
+ onChange={(e) => setValue(e.target.value)}
227
+ maxDecimals={2}
228
+ thousandsSeparator=","
229
+ />
230
+ );
231
+ }
232
+ ```
233
+
234
+ ### Uncontrolled Component
235
+
236
+ ```tsx
237
+ import { NumericInput } from 'numora-react';
238
+ import { useRef } from 'react';
239
+
240
+ function UncontrolledInput() {
241
+ const inputRef = useRef<HTMLInputElement>(null);
242
+
243
+ const handleSubmit = () => {
244
+ const value = inputRef.current?.value;
245
+ console.log('Value:', value);
246
+ };
247
+
248
+ return (
249
+ <>
250
+ <NumericInput
251
+ ref={inputRef}
252
+ maxDecimals={2}
253
+ thousandsSeparator=","
254
+ />
255
+ <button onClick={handleSubmit}>Get Value</button>
256
+ </>
257
+ );
258
+ }
259
+ ```
260
+
261
+ ## Props
262
+
263
+ | Prop | Type | Default | Description |
264
+ |------|------|---------|-------------|
265
+ | `maxDecimals` | `number` | `2` | Maximum number of decimal places allowed |
266
+ | `formatOn` | `'blur' \| 'change'` | `'blur'` | When to apply formatting: `'blur'` or `'change'` |
267
+ | `thousandsSeparator` | `string` | `','` | Character used as thousand separator |
268
+ | `thousandsGroupStyle` | `'thousand' \| 'lakh' \| 'wan'` | `'thousand'` | Grouping style for thousand separators |
269
+ | `shorthandParsing` | `boolean` | `false` | Enable compact notation expansion (e.g., `"1k"` → `"1000"`) on paste |
270
+ | `onChange` | `(e: ChangeEvent<HTMLInputElement> \| ClipboardEvent<HTMLInputElement>) => void` | `undefined` | Callback when value changes |
271
+ | `additionalStyle` | `string` | `undefined` | Additional CSS styles (deprecated, use `style` prop) |
272
+
273
+ All standard HTMLInputElement props are also supported (e.g., `placeholder`, `className`, `disabled`, `id`, `onFocus`, `onBlur`, etc.), except:
274
+ - `type` - Always set to `'text'` (required for formatting)
275
+ - `inputMode` - Always set to `'decimal'` (for mobile keyboards)
276
+
277
+ **Note:** Scientific notation expansion (e.g., `"1.5e-7"` → `"0.00000015"`) always happens automatically and is not configurable.
278
+
279
+ ## API Reference
280
+
281
+ ### NumericInput
282
+
283
+ A React component that wraps the core Numora functionality in a React-friendly API.
284
+
285
+ **Props:** See [Props](#props) section above.
286
+
287
+ **Ref:** The component forwards refs to the underlying `<input>` element.
288
+
289
+ ## TypeScript
290
+
291
+ Full TypeScript support is included. The component is typed with proper interfaces:
292
+
293
+ ```tsx
294
+ import { NumericInput } from 'numora-react';
295
+
296
+ // All props are fully typed
297
+ const input = (
298
+ <NumericInput
299
+ maxDecimals={18} // ✅ TypeScript knows this is a number
300
+ formatOn="change" // ✅ TypeScript knows valid values
301
+ shorthandParsing={true} // ✅ TypeScript knows this is boolean
302
+ onChange={(e) => {
303
+ // ✅ e is properly typed as ChangeEvent<HTMLInputElement>
304
+ console.log(e.target.value);
305
+ }}
306
+ />
307
+ );
308
+ ```
65
309
 
66
- Numora is also available for popular frameworks:
310
+ ## Related Packages
67
311
 
68
- - React: `numora-react` (in progress)
69
- - Vue: `numora-vue` (in progress)
70
- - Svelte: `numora`
312
+ - [`numora`](../core/README.md) - Core framework-agnostic library with full feature set and display formatting utilities
71
313
 
72
314
  ## License
73
315
 
package/dist/index.cjs.js CHANGED
@@ -440,25 +440,80 @@ const DEFAULT_PROPS = {
440
440
  spellCheck: false,
441
441
  step: 'any'
442
442
  };
443
- const NumericInput = /*#__PURE__*/require$$0.forwardRef(_ref => {
443
+ const NumericInput = /*#__PURE__*/require$$0.forwardRef((_ref, ref) => {
444
444
  let {
445
445
  maxDecimals = 2,
446
446
  onChange,
447
+ formatOn = numora.FormatOn.Blur,
448
+ thousandSeparator = ',',
449
+ thousandStyle = numora.ThousandStyle.Thousand,
450
+ decimalSeparator = '.',
451
+ decimalMinLength,
452
+ enableCompactNotation = false,
453
+ enableNegative = false,
454
+ enableLeadingZeros = false,
455
+ rawValueMode = false,
447
456
  ...props
448
457
  } = _ref;
458
+ const [caretPositionBeforeChange, setCaretPositionBeforeChange] = require$$0.useState();
459
+ const formattingOptions = {
460
+ formatOn,
461
+ thousandSeparator,
462
+ ThousandStyle: thousandStyle,
463
+ decimalSeparator,
464
+ decimalMinLength,
465
+ enableCompactNotation,
466
+ enableNegative,
467
+ enableLeadingZeros,
468
+ rawValueMode
469
+ };
470
+ function handleOnKeyDown(e) {
471
+ const caretInfo = numora.handleOnKeyDownNumoraInput(e.nativeEvent, formattingOptions);
472
+ if (caretInfo) {
473
+ setCaretPositionBeforeChange(caretInfo);
474
+ } else {
475
+ const input = e.currentTarget;
476
+ setCaretPositionBeforeChange({
477
+ selectionStart: input.selectionStart ?? 0,
478
+ selectionEnd: input.selectionEnd ?? 0
479
+ });
480
+ }
481
+ if (props.onKeyDown) {
482
+ props.onKeyDown(e);
483
+ }
484
+ }
449
485
  function handleOnChange(e) {
450
- numora.handleOnChangeNumericInput(e.nativeEvent, maxDecimals);
486
+ numora.handleOnChangeNumoraInput(e.nativeEvent, maxDecimals, caretPositionBeforeChange, formattingOptions);
487
+ setCaretPositionBeforeChange(undefined);
451
488
  if (onChange) onChange(e);
452
489
  }
453
490
  function handleOnPaste(e) {
454
- numora.handleOnPasteNumericInput(e.nativeEvent, maxDecimals);
491
+ numora.handleOnPasteNumoraInput(e.nativeEvent, maxDecimals, formattingOptions);
455
492
  if (onChange) onChange(e);
456
493
  }
494
+ function handleOnFocus(e) {
495
+ if (formatOn === numora.FormatOn.Blur && thousandSeparator) {
496
+ const target = e.currentTarget;
497
+ target.value = target.value.replace(new RegExp(thousandSeparator.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), '');
498
+ }
499
+ if (props.onFocus) {
500
+ props.onFocus(e);
501
+ }
502
+ }
503
+ function handleOnBlur(e) {
504
+ if (props.onBlur) {
505
+ props.onBlur(e);
506
+ }
507
+ }
457
508
  return jsxRuntimeExports.jsx("input", {
458
509
  ...DEFAULT_PROPS,
459
510
  ...props,
511
+ ref: ref,
460
512
  onChange: handleOnChange,
513
+ onKeyDown: handleOnKeyDown,
461
514
  onPaste: handleOnPaste,
515
+ onFocus: handleOnFocus,
516
+ onBlur: handleOnBlur,
462
517
  type: "text",
463
518
  inputMode: "decimal"
464
519
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/.pnpm/react@19.1.0/node_modules/react/jsx-runtime.js","../src/index.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(\n type,\n key,\n self,\n source,\n owner,\n props,\n debugStack,\n debugTask\n ) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n source,\n self,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n self,\n source,\n getOwner(),\n maybeKey,\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_ELEMENT_TYPE &&\n node._store &&\n (node._store.validated = 1);\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n \"react-stack-bottom-frame\": function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React[\"react-stack-bottom-frame\"].bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { ChangeEvent, ClipboardEvent, forwardRef } from 'react';\nimport { handleOnChangeNumericInput, handleOnPasteNumericInput } from 'numora';\n\ninterface NumericInputProps {\n additionalStyle?: string;\n maxDecimals?: number;\n defaultValue?: string;\n autoFocus?: boolean;\n onChange?: (e: ChangeEvent<HTMLInputElement> | ClipboardEvent<HTMLInputElement>) => void;\n}\n\nconst DEFAULT_PROPS = {\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'none',\n minLength: 1,\n placeholder: '0.0',\n pattern: '^[0-9]*[.,]?[0-9]*$',\n spellCheck: false,\n step: 'any',\n};\n\nconst NumericInput = forwardRef<HTMLInputElement, NumericInputProps>(\n ({ maxDecimals = 2, onChange, ...props }: NumericInputProps) => {\n function handleOnChange(e: ChangeEvent<HTMLInputElement>): void {\n handleOnChangeNumericInput(e.nativeEvent, maxDecimals);\n if (onChange) onChange(e);\n }\n\n function handleOnPaste(e: ClipboardEvent<HTMLInputElement>): void {\n handleOnPasteNumericInput(e.nativeEvent, maxDecimals);\n if (onChange) onChange(e);\n }\n\n return (\n <input\n {...DEFAULT_PROPS}\n {...props}\n onChange={handleOnChange}\n onPaste={handleOnPaste}\n type=\"text\"\n inputMode=\"decimal\"\n />\n );\n }\n);\n\nNumericInput.displayName = 'NumericInput';\n\nexport { NumericInput };\n"],"names":["jsxRuntimeModule","require$$0","require$$1","DEFAULT_PROPS","autoComplete","autoCorrect","autoCapitalize","minLength","placeholder","pattern","spellCheck","step","NumericInput","forwardRef","_ref","maxDecimals","onChange","props","handleOnChange","e","handleOnChangeNumericInput","nativeEvent","handleOnPaste","handleOnPasteNumericInput","_jsx","onPaste","type","inputMode","displayName"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"index.cjs.js","sources":["../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/.pnpm/react@19.1.0/node_modules/react/jsx-runtime.js","../src/index.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(\n type,\n key,\n self,\n source,\n owner,\n props,\n debugStack,\n debugTask\n ) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n source,\n self,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n self,\n source,\n getOwner(),\n maybeKey,\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_ELEMENT_TYPE &&\n node._store &&\n (node._store.validated = 1);\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n \"react-stack-bottom-frame\": function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React[\"react-stack-bottom-frame\"].bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import React, { ChangeEvent, ClipboardEvent, forwardRef } from 'react';\nimport {\n handleOnChangeNumoraInput,\n handleOnPasteNumoraInput,\n handleOnKeyDownNumoraInput,\n FormatOn,\n ThousandStyle,\n type FormattingOptions,\n type CaretPositionInfo,\n} from 'numora';\n\ninterface NumericInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'type' | 'inputMode'> {\n maxDecimals?: number;\n onChange?: (e: ChangeEvent<HTMLInputElement> | ClipboardEvent<HTMLInputElement>) => void;\n\n // Formatting options\n formatOn?: FormatOn;\n thousandSeparator?: string;\n thousandStyle?: ThousandStyle;\n decimalSeparator?: string;\n decimalMinLength?: number;\n\n // Feature flags\n enableCompactNotation?: boolean;\n enableNegative?: boolean;\n enableLeadingZeros?: boolean;\n rawValueMode?: boolean;\n}\n\nconst DEFAULT_PROPS = {\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'none',\n minLength: 1,\n placeholder: '0.0',\n pattern: '^[0-9]*[.,]?[0-9]*$',\n spellCheck: false,\n step: 'any',\n};\n\nconst NumericInput = forwardRef<HTMLInputElement, NumericInputProps>(\n ({\n maxDecimals = 2,\n onChange,\n formatOn = FormatOn.Blur,\n thousandSeparator = ',',\n thousandStyle = ThousandStyle.Thousand,\n decimalSeparator = '.',\n decimalMinLength,\n enableCompactNotation = false,\n enableNegative = false,\n enableLeadingZeros = false,\n rawValueMode = false,\n ...props\n }: NumericInputProps, ref) => {\n const [caretPositionBeforeChange, setCaretPositionBeforeChange] =\n React.useState<CaretPositionInfo>();\n\n const formattingOptions: FormattingOptions = {\n formatOn,\n thousandSeparator,\n ThousandStyle: thousandStyle as any,\n decimalSeparator,\n decimalMinLength,\n enableCompactNotation,\n enableNegative,\n enableLeadingZeros,\n rawValueMode,\n };\n\n function handleOnKeyDown(e: React.KeyboardEvent<HTMLInputElement>): void {\n const caretInfo = handleOnKeyDownNumoraInput(e.nativeEvent, formattingOptions);\n\n if (caretInfo) {\n setCaretPositionBeforeChange(caretInfo);\n } else {\n const input = e.currentTarget;\n setCaretPositionBeforeChange({\n selectionStart: input.selectionStart ?? 0,\n selectionEnd: input.selectionEnd ?? 0,\n });\n }\n\n if (props.onKeyDown) {\n props.onKeyDown(e);\n }\n }\n\n function handleOnChange(e: ChangeEvent<HTMLInputElement>): void {\n handleOnChangeNumoraInput(\n e.nativeEvent,\n maxDecimals,\n caretPositionBeforeChange,\n formattingOptions\n );\n setCaretPositionBeforeChange(undefined);\n if (onChange) onChange(e);\n }\n\n function handleOnPaste(e: ClipboardEvent<HTMLInputElement>): void {\n handleOnPasteNumoraInput(e.nativeEvent, maxDecimals, formattingOptions);\n if (onChange) onChange(e);\n }\n\n function handleOnFocus(e: React.FocusEvent<HTMLInputElement>): void {\n if (formatOn === FormatOn.Blur && thousandSeparator) {\n const target = e.currentTarget;\n target.value = target.value.replace(\n new RegExp(thousandSeparator.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g'),\n ''\n );\n }\n\n if (props.onFocus) {\n props.onFocus(e);\n }\n }\n\n function handleOnBlur(e: React.FocusEvent<HTMLInputElement>): void {\n if (props.onBlur) {\n props.onBlur(e);\n }\n }\n\n return (\n <input\n {...DEFAULT_PROPS}\n {...props}\n ref={ref}\n onChange={handleOnChange}\n onKeyDown={handleOnKeyDown}\n onPaste={handleOnPaste}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n type=\"text\"\n inputMode=\"decimal\"\n />\n );\n }\n);\n\nNumericInput.displayName = 'NumericInput';\n\nexport { NumericInput };\n"],"names":["jsxRuntimeModule","require$$0","require$$1","DEFAULT_PROPS","autoComplete","autoCorrect","autoCapitalize","minLength","placeholder","pattern","spellCheck","step","NumericInput","forwardRef","_ref","ref","maxDecimals","onChange","formatOn","FormatOn","Blur","thousandSeparator","thousandStyle","ThousandStyle","Thousand","decimalSeparator","decimalMinLength","enableCompactNotation","enableNegative","enableLeadingZeros","rawValueMode","props","caretPositionBeforeChange","setCaretPositionBeforeChange","React","useState","formattingOptions","handleOnKeyDown","e","caretInfo","handleOnKeyDownNumoraInput","nativeEvent","input","currentTarget","selectionStart","selectionEnd","onKeyDown","handleOnChange","handleOnChangeNumoraInput","undefined","handleOnPaste","handleOnPasteNumoraInput","handleOnFocus","target","value","replace","RegExp","onFocus","handleOnBlur","onBlur","_jsx","onPaste","type","inputMode","displayName"],"mappings":"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","x_google_ignoreList":[0,1,2]}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,17 @@
1
- import { ChangeEvent, ClipboardEvent } from 'react';
2
- interface NumericInputProps {
3
- additionalStyle?: string;
1
+ import React, { ChangeEvent, ClipboardEvent } from 'react';
2
+ import { FormatOn, ThousandStyle } from 'numora';
3
+ interface NumericInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'type' | 'inputMode'> {
4
4
  maxDecimals?: number;
5
- defaultValue?: string;
6
- autoFocus?: boolean;
7
5
  onChange?: (e: ChangeEvent<HTMLInputElement> | ClipboardEvent<HTMLInputElement>) => void;
6
+ formatOn?: FormatOn;
7
+ thousandSeparator?: string;
8
+ thousandStyle?: ThousandStyle;
9
+ decimalSeparator?: string;
10
+ decimalMinLength?: number;
11
+ enableCompactNotation?: boolean;
12
+ enableNegative?: boolean;
13
+ enableLeadingZeros?: boolean;
14
+ rawValueMode?: boolean;
8
15
  }
9
- declare const NumericInput: import("react").ForwardRefExoticComponent<NumericInputProps & import("react").RefAttributes<HTMLInputElement>>;
16
+ declare const NumericInput: React.ForwardRefExoticComponent<NumericInputProps & React.RefAttributes<HTMLInputElement>>;
10
17
  export { NumericInput };
package/dist/index.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import require$$0, { forwardRef } from 'react';
2
- import { handleOnPasteNumericInput, handleOnChangeNumericInput } from 'numora';
2
+ import { FormatOn, ThousandStyle, handleOnPasteNumoraInput, handleOnKeyDownNumoraInput, handleOnChangeNumoraInput } from 'numora';
3
3
 
4
4
  var jsxRuntime = {exports: {}};
5
5
 
@@ -438,25 +438,80 @@ const DEFAULT_PROPS = {
438
438
  spellCheck: false,
439
439
  step: 'any'
440
440
  };
441
- const NumericInput = /*#__PURE__*/forwardRef(_ref => {
441
+ const NumericInput = /*#__PURE__*/forwardRef((_ref, ref) => {
442
442
  let {
443
443
  maxDecimals = 2,
444
444
  onChange,
445
+ formatOn = FormatOn.Blur,
446
+ thousandSeparator = ',',
447
+ thousandStyle = ThousandStyle.Thousand,
448
+ decimalSeparator = '.',
449
+ decimalMinLength,
450
+ enableCompactNotation = false,
451
+ enableNegative = false,
452
+ enableLeadingZeros = false,
453
+ rawValueMode = false,
445
454
  ...props
446
455
  } = _ref;
456
+ const [caretPositionBeforeChange, setCaretPositionBeforeChange] = require$$0.useState();
457
+ const formattingOptions = {
458
+ formatOn,
459
+ thousandSeparator,
460
+ ThousandStyle: thousandStyle,
461
+ decimalSeparator,
462
+ decimalMinLength,
463
+ enableCompactNotation,
464
+ enableNegative,
465
+ enableLeadingZeros,
466
+ rawValueMode
467
+ };
468
+ function handleOnKeyDown(e) {
469
+ const caretInfo = handleOnKeyDownNumoraInput(e.nativeEvent, formattingOptions);
470
+ if (caretInfo) {
471
+ setCaretPositionBeforeChange(caretInfo);
472
+ } else {
473
+ const input = e.currentTarget;
474
+ setCaretPositionBeforeChange({
475
+ selectionStart: input.selectionStart ?? 0,
476
+ selectionEnd: input.selectionEnd ?? 0
477
+ });
478
+ }
479
+ if (props.onKeyDown) {
480
+ props.onKeyDown(e);
481
+ }
482
+ }
447
483
  function handleOnChange(e) {
448
- handleOnChangeNumericInput(e.nativeEvent, maxDecimals);
484
+ handleOnChangeNumoraInput(e.nativeEvent, maxDecimals, caretPositionBeforeChange, formattingOptions);
485
+ setCaretPositionBeforeChange(undefined);
449
486
  if (onChange) onChange(e);
450
487
  }
451
488
  function handleOnPaste(e) {
452
- handleOnPasteNumericInput(e.nativeEvent, maxDecimals);
489
+ handleOnPasteNumoraInput(e.nativeEvent, maxDecimals, formattingOptions);
453
490
  if (onChange) onChange(e);
454
491
  }
492
+ function handleOnFocus(e) {
493
+ if (formatOn === FormatOn.Blur && thousandSeparator) {
494
+ const target = e.currentTarget;
495
+ target.value = target.value.replace(new RegExp(thousandSeparator.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), '');
496
+ }
497
+ if (props.onFocus) {
498
+ props.onFocus(e);
499
+ }
500
+ }
501
+ function handleOnBlur(e) {
502
+ if (props.onBlur) {
503
+ props.onBlur(e);
504
+ }
505
+ }
455
506
  return jsxRuntimeExports.jsx("input", {
456
507
  ...DEFAULT_PROPS,
457
508
  ...props,
509
+ ref: ref,
458
510
  onChange: handleOnChange,
511
+ onKeyDown: handleOnKeyDown,
459
512
  onPaste: handleOnPaste,
513
+ onFocus: handleOnFocus,
514
+ onBlur: handleOnBlur,
460
515
  type: "text",
461
516
  inputMode: "decimal"
462
517
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/.pnpm/react@19.1.0/node_modules/react/jsx-runtime.js","../src/index.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(\n type,\n key,\n self,\n source,\n owner,\n props,\n debugStack,\n debugTask\n ) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n source,\n self,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n self,\n source,\n getOwner(),\n maybeKey,\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_ELEMENT_TYPE &&\n node._store &&\n (node._store.validated = 1);\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n \"react-stack-bottom-frame\": function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React[\"react-stack-bottom-frame\"].bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { ChangeEvent, ClipboardEvent, forwardRef } from 'react';\nimport { handleOnChangeNumericInput, handleOnPasteNumericInput } from 'numora';\n\ninterface NumericInputProps {\n additionalStyle?: string;\n maxDecimals?: number;\n defaultValue?: string;\n autoFocus?: boolean;\n onChange?: (e: ChangeEvent<HTMLInputElement> | ClipboardEvent<HTMLInputElement>) => void;\n}\n\nconst DEFAULT_PROPS = {\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'none',\n minLength: 1,\n placeholder: '0.0',\n pattern: '^[0-9]*[.,]?[0-9]*$',\n spellCheck: false,\n step: 'any',\n};\n\nconst NumericInput = forwardRef<HTMLInputElement, NumericInputProps>(\n ({ maxDecimals = 2, onChange, ...props }: NumericInputProps) => {\n function handleOnChange(e: ChangeEvent<HTMLInputElement>): void {\n handleOnChangeNumericInput(e.nativeEvent, maxDecimals);\n if (onChange) onChange(e);\n }\n\n function handleOnPaste(e: ClipboardEvent<HTMLInputElement>): void {\n handleOnPasteNumericInput(e.nativeEvent, maxDecimals);\n if (onChange) onChange(e);\n }\n\n return (\n <input\n {...DEFAULT_PROPS}\n {...props}\n onChange={handleOnChange}\n onPaste={handleOnPaste}\n type=\"text\"\n inputMode=\"decimal\"\n />\n );\n }\n);\n\nNumericInput.displayName = 'NumericInput';\n\nexport { NumericInput };\n"],"names":["jsxRuntimeModule","require$$0","require$$1","DEFAULT_PROPS","autoComplete","autoCorrect","autoCapitalize","minLength","placeholder","pattern","spellCheck","step","NumericInput","forwardRef","_ref","maxDecimals","onChange","props","handleOnChange","e","handleOnChangeNumericInput","nativeEvent","handleOnPaste","handleOnPasteNumericInput","_jsx","onPaste","type","inputMode","displayName"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"index.esm.js","sources":["../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/.pnpm/react@19.1.0/node_modules/react/jsx-runtime.js","../src/index.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(\n type,\n key,\n self,\n source,\n owner,\n props,\n debugStack,\n debugTask\n ) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n source,\n self,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n self,\n source,\n getOwner(),\n maybeKey,\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_ELEMENT_TYPE &&\n node._store &&\n (node._store.validated = 1);\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n \"react-stack-bottom-frame\": function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React[\"react-stack-bottom-frame\"].bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import React, { ChangeEvent, ClipboardEvent, forwardRef } from 'react';\nimport {\n handleOnChangeNumoraInput,\n handleOnPasteNumoraInput,\n handleOnKeyDownNumoraInput,\n FormatOn,\n ThousandStyle,\n type FormattingOptions,\n type CaretPositionInfo,\n} from 'numora';\n\ninterface NumericInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'type' | 'inputMode'> {\n maxDecimals?: number;\n onChange?: (e: ChangeEvent<HTMLInputElement> | ClipboardEvent<HTMLInputElement>) => void;\n\n // Formatting options\n formatOn?: FormatOn;\n thousandSeparator?: string;\n thousandStyle?: ThousandStyle;\n decimalSeparator?: string;\n decimalMinLength?: number;\n\n // Feature flags\n enableCompactNotation?: boolean;\n enableNegative?: boolean;\n enableLeadingZeros?: boolean;\n rawValueMode?: boolean;\n}\n\nconst DEFAULT_PROPS = {\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'none',\n minLength: 1,\n placeholder: '0.0',\n pattern: '^[0-9]*[.,]?[0-9]*$',\n spellCheck: false,\n step: 'any',\n};\n\nconst NumericInput = forwardRef<HTMLInputElement, NumericInputProps>(\n ({\n maxDecimals = 2,\n onChange,\n formatOn = FormatOn.Blur,\n thousandSeparator = ',',\n thousandStyle = ThousandStyle.Thousand,\n decimalSeparator = '.',\n decimalMinLength,\n enableCompactNotation = false,\n enableNegative = false,\n enableLeadingZeros = false,\n rawValueMode = false,\n ...props\n }: NumericInputProps, ref) => {\n const [caretPositionBeforeChange, setCaretPositionBeforeChange] =\n React.useState<CaretPositionInfo>();\n\n const formattingOptions: FormattingOptions = {\n formatOn,\n thousandSeparator,\n ThousandStyle: thousandStyle as any,\n decimalSeparator,\n decimalMinLength,\n enableCompactNotation,\n enableNegative,\n enableLeadingZeros,\n rawValueMode,\n };\n\n function handleOnKeyDown(e: React.KeyboardEvent<HTMLInputElement>): void {\n const caretInfo = handleOnKeyDownNumoraInput(e.nativeEvent, formattingOptions);\n\n if (caretInfo) {\n setCaretPositionBeforeChange(caretInfo);\n } else {\n const input = e.currentTarget;\n setCaretPositionBeforeChange({\n selectionStart: input.selectionStart ?? 0,\n selectionEnd: input.selectionEnd ?? 0,\n });\n }\n\n if (props.onKeyDown) {\n props.onKeyDown(e);\n }\n }\n\n function handleOnChange(e: ChangeEvent<HTMLInputElement>): void {\n handleOnChangeNumoraInput(\n e.nativeEvent,\n maxDecimals,\n caretPositionBeforeChange,\n formattingOptions\n );\n setCaretPositionBeforeChange(undefined);\n if (onChange) onChange(e);\n }\n\n function handleOnPaste(e: ClipboardEvent<HTMLInputElement>): void {\n handleOnPasteNumoraInput(e.nativeEvent, maxDecimals, formattingOptions);\n if (onChange) onChange(e);\n }\n\n function handleOnFocus(e: React.FocusEvent<HTMLInputElement>): void {\n if (formatOn === FormatOn.Blur && thousandSeparator) {\n const target = e.currentTarget;\n target.value = target.value.replace(\n new RegExp(thousandSeparator.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g'),\n ''\n );\n }\n\n if (props.onFocus) {\n props.onFocus(e);\n }\n }\n\n function handleOnBlur(e: React.FocusEvent<HTMLInputElement>): void {\n if (props.onBlur) {\n props.onBlur(e);\n }\n }\n\n return (\n <input\n {...DEFAULT_PROPS}\n {...props}\n ref={ref}\n onChange={handleOnChange}\n onKeyDown={handleOnKeyDown}\n onPaste={handleOnPaste}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n type=\"text\"\n inputMode=\"decimal\"\n />\n );\n }\n);\n\nNumericInput.displayName = 'NumericInput';\n\nexport { NumericInput };\n"],"names":["jsxRuntimeModule","require$$0","require$$1","DEFAULT_PROPS","autoComplete","autoCorrect","autoCapitalize","minLength","placeholder","pattern","spellCheck","step","NumericInput","forwardRef","_ref","ref","maxDecimals","onChange","formatOn","FormatOn","Blur","thousandSeparator","thousandStyle","ThousandStyle","Thousand","decimalSeparator","decimalMinLength","enableCompactNotation","enableNegative","enableLeadingZeros","rawValueMode","props","caretPositionBeforeChange","setCaretPositionBeforeChange","React","useState","formattingOptions","handleOnKeyDown","e","caretInfo","handleOnKeyDownNumoraInput","nativeEvent","input","currentTarget","selectionStart","selectionEnd","onKeyDown","handleOnChange","handleOnChangeNumoraInput","undefined","handleOnPaste","handleOnPasteNumoraInput","handleOnFocus","target","value","replace","RegExp","onFocus","handleOnBlur","onBlur","_jsx","onPaste","type","inputMode","displayName"],"mappings":"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","x_google_ignoreList":[0,1,2]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "numora-react",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Numora for React - Headless finance input library",
5
5
  "homepage": "https://numora.netlify.app/",
6
6
  "type": "module",
@@ -56,10 +56,8 @@
56
56
  "rollup": "^4.38.0",
57
57
  "rollup-plugin-peer-deps-external": "^2.2.4",
58
58
  "tslib": "^2.8.1",
59
- "typescript": "^5.8.2"
60
- },
61
- "dependencies": {
62
- "numora": "^1.0.4",
59
+ "typescript": "^5.8.2",
60
+ "numora": "^2.0.0",
63
61
  "react": "^19.1.0",
64
62
  "react-dom": "^19.1.0"
65
63
  },
package/src/index.tsx CHANGED
@@ -1,12 +1,30 @@
1
- import { ChangeEvent, ClipboardEvent, forwardRef } from 'react';
2
- import { handleOnChangeNumericInput, handleOnPasteNumericInput } from 'numora';
1
+ import React, { ChangeEvent, ClipboardEvent, forwardRef } from 'react';
2
+ import {
3
+ handleOnChangeNumoraInput,
4
+ handleOnPasteNumoraInput,
5
+ handleOnKeyDownNumoraInput,
6
+ FormatOn,
7
+ ThousandStyle,
8
+ type FormattingOptions,
9
+ type CaretPositionInfo,
10
+ } from 'numora';
3
11
 
4
- interface NumericInputProps {
5
- additionalStyle?: string;
12
+ interface NumericInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'type' | 'inputMode'> {
6
13
  maxDecimals?: number;
7
- defaultValue?: string;
8
- autoFocus?: boolean;
9
14
  onChange?: (e: ChangeEvent<HTMLInputElement> | ClipboardEvent<HTMLInputElement>) => void;
15
+
16
+ // Formatting options
17
+ formatOn?: FormatOn;
18
+ thousandSeparator?: string;
19
+ thousandStyle?: ThousandStyle;
20
+ decimalSeparator?: string;
21
+ decimalMinLength?: number;
22
+
23
+ // Feature flags
24
+ enableCompactNotation?: boolean;
25
+ enableNegative?: boolean;
26
+ enableLeadingZeros?: boolean;
27
+ rawValueMode?: boolean;
10
28
  }
11
29
 
12
30
  const DEFAULT_PROPS = {
@@ -21,23 +39,99 @@ const DEFAULT_PROPS = {
21
39
  };
22
40
 
23
41
  const NumericInput = forwardRef<HTMLInputElement, NumericInputProps>(
24
- ({ maxDecimals = 2, onChange, ...props }: NumericInputProps) => {
42
+ ({
43
+ maxDecimals = 2,
44
+ onChange,
45
+ formatOn = FormatOn.Blur,
46
+ thousandSeparator = ',',
47
+ thousandStyle = ThousandStyle.Thousand,
48
+ decimalSeparator = '.',
49
+ decimalMinLength,
50
+ enableCompactNotation = false,
51
+ enableNegative = false,
52
+ enableLeadingZeros = false,
53
+ rawValueMode = false,
54
+ ...props
55
+ }: NumericInputProps, ref) => {
56
+ const [caretPositionBeforeChange, setCaretPositionBeforeChange] =
57
+ React.useState<CaretPositionInfo>();
58
+
59
+ const formattingOptions: FormattingOptions = {
60
+ formatOn,
61
+ thousandSeparator,
62
+ ThousandStyle: thousandStyle as any,
63
+ decimalSeparator,
64
+ decimalMinLength,
65
+ enableCompactNotation,
66
+ enableNegative,
67
+ enableLeadingZeros,
68
+ rawValueMode,
69
+ };
70
+
71
+ function handleOnKeyDown(e: React.KeyboardEvent<HTMLInputElement>): void {
72
+ const caretInfo = handleOnKeyDownNumoraInput(e.nativeEvent, formattingOptions);
73
+
74
+ if (caretInfo) {
75
+ setCaretPositionBeforeChange(caretInfo);
76
+ } else {
77
+ const input = e.currentTarget;
78
+ setCaretPositionBeforeChange({
79
+ selectionStart: input.selectionStart ?? 0,
80
+ selectionEnd: input.selectionEnd ?? 0,
81
+ });
82
+ }
83
+
84
+ if (props.onKeyDown) {
85
+ props.onKeyDown(e);
86
+ }
87
+ }
88
+
25
89
  function handleOnChange(e: ChangeEvent<HTMLInputElement>): void {
26
- handleOnChangeNumericInput(e.nativeEvent, maxDecimals);
90
+ handleOnChangeNumoraInput(
91
+ e.nativeEvent,
92
+ maxDecimals,
93
+ caretPositionBeforeChange,
94
+ formattingOptions
95
+ );
96
+ setCaretPositionBeforeChange(undefined);
27
97
  if (onChange) onChange(e);
28
98
  }
29
99
 
30
100
  function handleOnPaste(e: ClipboardEvent<HTMLInputElement>): void {
31
- handleOnPasteNumericInput(e.nativeEvent, maxDecimals);
101
+ handleOnPasteNumoraInput(e.nativeEvent, maxDecimals, formattingOptions);
32
102
  if (onChange) onChange(e);
33
103
  }
34
104
 
105
+ function handleOnFocus(e: React.FocusEvent<HTMLInputElement>): void {
106
+ if (formatOn === FormatOn.Blur && thousandSeparator) {
107
+ const target = e.currentTarget;
108
+ target.value = target.value.replace(
109
+ new RegExp(thousandSeparator.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'),
110
+ ''
111
+ );
112
+ }
113
+
114
+ if (props.onFocus) {
115
+ props.onFocus(e);
116
+ }
117
+ }
118
+
119
+ function handleOnBlur(e: React.FocusEvent<HTMLInputElement>): void {
120
+ if (props.onBlur) {
121
+ props.onBlur(e);
122
+ }
123
+ }
124
+
35
125
  return (
36
126
  <input
37
127
  {...DEFAULT_PROPS}
38
128
  {...props}
129
+ ref={ref}
39
130
  onChange={handleOnChange}
131
+ onKeyDown={handleOnKeyDown}
40
132
  onPaste={handleOnPaste}
133
+ onFocus={handleOnFocus}
134
+ onBlur={handleOnBlur}
41
135
  type="text"
42
136
  inputMode="decimal"
43
137
  />
@@ -1,2 +0,0 @@
1
- declare const NumericInput: any;
2
- export { NumericInput };