raqam 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -9
- package/dist/chunk-4GNLVHAM.js +2 -0
- package/dist/chunk-4GNLVHAM.js.map +1 -0
- package/dist/chunk-5LYK54TH.js +2 -0
- package/dist/chunk-5LYK54TH.js.map +1 -0
- package/dist/chunk-C5MK5U3F.js +2 -0
- package/dist/chunk-C5MK5U3F.js.map +1 -0
- package/dist/chunk-CAHEQQ5J.cjs +2 -0
- package/dist/chunk-CAHEQQ5J.cjs.map +1 -0
- package/dist/chunk-G7ACJUKH.js +2 -0
- package/dist/chunk-G7ACJUKH.js.map +1 -0
- package/dist/chunk-GAKIDRGS.cjs +2 -0
- package/dist/chunk-GAKIDRGS.cjs.map +1 -0
- package/dist/chunk-I3H3UMZD.cjs +2 -0
- package/dist/chunk-I3H3UMZD.cjs.map +1 -0
- package/dist/chunk-LD6OTXXT.js +2 -0
- package/dist/chunk-LD6OTXXT.js.map +1 -0
- package/dist/chunk-MNYIBO2M.cjs +2 -0
- package/dist/chunk-MNYIBO2M.cjs.map +1 -0
- package/dist/chunk-MOES3T6R.js +2 -0
- package/dist/chunk-MOES3T6R.js.map +1 -0
- package/dist/chunk-MUO4XNLX.cjs +2 -0
- package/dist/chunk-MUO4XNLX.cjs.map +1 -0
- package/dist/chunk-P6AWGQPY.js +2 -0
- package/dist/chunk-P6AWGQPY.js.map +1 -0
- package/dist/chunk-TFY7JMI6.js +2 -0
- package/dist/chunk-TFY7JMI6.js.map +1 -0
- package/dist/chunk-UYZYSVT5.cjs +2 -0
- package/dist/chunk-UYZYSVT5.cjs.map +1 -0
- package/dist/chunk-XJZHLJ2C.cjs +2 -0
- package/dist/chunk-XJZHLJ2C.cjs.map +1 -0
- package/dist/chunk-YUKLLK4G.cjs +2 -0
- package/dist/chunk-YUKLLK4G.cjs.map +1 -0
- package/dist/chunk-ZKLZ7UKZ.cjs +2 -0
- package/dist/chunk-ZKLZ7UKZ.cjs.map +1 -0
- package/dist/chunk-ZWDI6EPF.js +2 -0
- package/dist/chunk-ZWDI6EPF.js.map +1 -0
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +68 -295
- package/dist/core.d.ts +68 -295
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -133
- package/dist/index.d.ts +12 -133
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.cjs +1 -35
- package/dist/locales/ar.cjs.map +1 -1
- package/dist/locales/ar.js +1 -3
- package/dist/locales/bn.cjs +1 -35
- package/dist/locales/bn.cjs.map +1 -1
- package/dist/locales/bn.js +1 -3
- package/dist/locales/fa.cjs +1 -37
- package/dist/locales/fa.cjs.map +1 -1
- package/dist/locales/fa.js +1 -3
- package/dist/locales/hi.cjs +1 -35
- package/dist/locales/hi.cjs.map +1 -1
- package/dist/locales/hi.js +1 -3
- package/dist/locales/index.cjs +1 -77
- package/dist/locales/index.cjs.map +1 -1
- package/dist/locales/index.js +1 -7
- package/dist/locales/th.cjs +1 -35
- package/dist/locales/th.cjs.map +1 -1
- package/dist/locales/th.js +1 -3
- package/dist/react.cjs +1 -1
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +117 -3
- package/dist/react.d.ts +117 -3
- package/dist/react.js +1 -1
- package/dist/react.js.map +1 -1
- package/dist/{index-BMFJwudG.d.cts → types-B2ZqkJI-.d.cts} +34 -107
- package/dist/{index-BMFJwudG.d.ts → types-B2ZqkJI-.d.ts} +34 -107
- package/package.json +28 -6
- package/dist/chunk-4AMLNJEK.js +0 -14
- package/dist/chunk-4AMLNJEK.js.map +0 -1
- package/dist/chunk-7IEJOMYT.js +0 -14
- package/dist/chunk-7IEJOMYT.js.map +0 -1
- package/dist/chunk-HPUEM7JB.js +0 -14
- package/dist/chunk-HPUEM7JB.js.map +0 -1
- package/dist/chunk-OLLREWX6.js +0 -16
- package/dist/chunk-OLLREWX6.js.map +0 -1
- package/dist/chunk-RP3DVBGJ.js +0 -14
- package/dist/chunk-RP3DVBGJ.js.map +0 -1
- package/dist/chunk-TISOJTKH.js +0 -25
- package/dist/chunk-TISOJTKH.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export { NumberField, NumberFieldContext, NumberFieldContextValue, useControllableState, useNumberField, useNumberFieldContext, useNumberFieldFormat, useNumberFieldState } from './react.js';
|
|
2
|
+
import { N as NumberFieldState, S as ScrubAreaOptions } from './types-B2ZqkJI-.js';
|
|
3
|
+
export { C as CaretBoundary, a as ChangeReason, D as DigitBlock, F as FormatResult, L as LocaleInfo, b as NumberFieldAria, c as NumberFieldRootProps, P as ParseResult, R as RenderProp, d as ScrubAreaCursorProps, e as ScrubAreaProps, f as StateRenderFn, U as UseNumberFieldProps, g as UseNumberFieldStateOptions } from './types-B2ZqkJI-.js';
|
|
4
|
+
export { Formatter, FormatterOptions, LocaleConfig, Parser, ParserOptions, computeNewCursorPosition, createFormatter, createParser, getCaretBoundary, normalizeDigits, presets, registerLocale } from './core.js';
|
|
3
5
|
import 'react/jsx-runtime';
|
|
4
6
|
import 'react';
|
|
5
7
|
|
|
@@ -15,6 +17,8 @@ interface PressAndHoldProps {
|
|
|
15
17
|
onPointerDown: (e: React.PointerEvent) => void;
|
|
16
18
|
onPointerUp: (e: React.PointerEvent) => void;
|
|
17
19
|
onPointerLeave: (e: React.PointerEvent) => void;
|
|
20
|
+
onPointerCancel: (e: React.PointerEvent) => void;
|
|
21
|
+
onLostPointerCapture: (e: React.PointerEvent) => void;
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
24
|
* Returns pointer event handlers that call `callback` immediately on press,
|
|
@@ -36,6 +40,11 @@ interface ScrubAreaReturn {
|
|
|
36
40
|
tabIndex: number;
|
|
37
41
|
style: React.CSSProperties;
|
|
38
42
|
"aria-label": string;
|
|
43
|
+
"aria-valuenow": number | undefined;
|
|
44
|
+
"aria-valuemin": number | undefined;
|
|
45
|
+
"aria-valuemax": number | undefined;
|
|
46
|
+
"aria-valuetext": string | undefined;
|
|
47
|
+
"aria-disabled": true | undefined;
|
|
39
48
|
"data-scrubbing": string | undefined;
|
|
40
49
|
onPointerDown: (e: React.PointerEvent) => void;
|
|
41
50
|
onKeyDown: (e: React.KeyboardEvent) => void;
|
|
@@ -60,134 +69,4 @@ interface ScrubAreaReturn {
|
|
|
60
69
|
*/
|
|
61
70
|
declare function useScrubArea(state: NumberFieldState, options?: ScrubAreaOptions): ScrubAreaReturn;
|
|
62
71
|
|
|
63
|
-
|
|
64
|
-
locale?: string;
|
|
65
|
-
formatOptions?: Intl.NumberFormatOptions;
|
|
66
|
-
prefix?: string;
|
|
67
|
-
suffix?: string;
|
|
68
|
-
minimumFractionDigits?: number;
|
|
69
|
-
maximumFractionDigits?: number;
|
|
70
|
-
fixedDecimalScale?: boolean;
|
|
71
|
-
}
|
|
72
|
-
interface Formatter {
|
|
73
|
-
format(value: number): string;
|
|
74
|
-
formatToParts(value: number): Intl.NumberFormatPart[];
|
|
75
|
-
getLocaleInfo(): LocaleInfo;
|
|
76
|
-
formatResult(value: number): FormatResult;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Create a formatter instance. Intl.NumberFormat is cached — safe to call
|
|
80
|
-
* on every render.
|
|
81
|
-
*/
|
|
82
|
-
declare function createFormatter(opts: FormatterOptions): Formatter;
|
|
83
|
-
|
|
84
|
-
interface ParserOptions {
|
|
85
|
-
locale?: string;
|
|
86
|
-
formatOptions?: Intl.NumberFormatOptions;
|
|
87
|
-
allowNegative?: boolean;
|
|
88
|
-
allowDecimal?: boolean;
|
|
89
|
-
prefix?: string;
|
|
90
|
-
suffix?: string;
|
|
91
|
-
}
|
|
92
|
-
interface Parser {
|
|
93
|
-
parse(input: string): ParseResult;
|
|
94
|
-
isIntermediate(input: string): boolean;
|
|
95
|
-
getLocaleInfo(): LocaleInfo;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Create a locale-aware parser. Separator characters are extracted from
|
|
99
|
-
* Intl.NumberFormat — never hardcoded.
|
|
100
|
-
*/
|
|
101
|
-
declare function createParser(opts?: ParserOptions): Parser;
|
|
102
|
-
|
|
103
|
-
interface LocaleConfig {
|
|
104
|
-
/** Extra digit block ranges to register */
|
|
105
|
-
digitBlocks?: DigitBlock[];
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Register additional digit blocks (called by locale plugins as a side effect).
|
|
109
|
-
* Duplicate ranges are silently ignored.
|
|
110
|
-
*/
|
|
111
|
-
declare function registerLocale(config: LocaleConfig): void;
|
|
112
|
-
/**
|
|
113
|
-
* Normalise any Unicode decimal digit in `input` to its ASCII equivalent (0–9).
|
|
114
|
-
* Non-digit characters pass through unchanged.
|
|
115
|
-
*/
|
|
116
|
-
declare function normalizeDigits(input: string): string;
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Build a boolean array of length `formattedValue.length + 1`.
|
|
120
|
-
* `true` → cursor may rest at this position.
|
|
121
|
-
* `false` → cursor must snap away (sits inside a formatting-only character
|
|
122
|
-
* such as a grouping separator or a currency prefix).
|
|
123
|
-
*
|
|
124
|
-
* Rules:
|
|
125
|
-
* - Start and end positions are always valid.
|
|
126
|
-
* - A position immediately AFTER a grouping separator is invalid (the
|
|
127
|
-
* cursor would look like it's between two digits but moving left would
|
|
128
|
-
* skip the comma).
|
|
129
|
-
* - A position immediately BEFORE a grouping separator is valid.
|
|
130
|
-
*/
|
|
131
|
-
declare function getCaretBoundary(formattedValue: string, info: LocaleInfo): CaretBoundary;
|
|
132
|
-
/**
|
|
133
|
-
* Compute the new cursor position in `newFormatted` that corresponds
|
|
134
|
-
* semantically to `oldCursor` in `oldInput`.
|
|
135
|
-
*
|
|
136
|
-
* Algorithm (3 stages from the spec):
|
|
137
|
-
*
|
|
138
|
-
* 1. Count accepted characters before `oldCursor` in `oldInput`.
|
|
139
|
-
* 2. Adjust for backspace-over-separator edge case.
|
|
140
|
-
* 3. Walk `newFormatted` to find the position where the same count of
|
|
141
|
-
* accepted chars precede it; snap to the nearest valid boundary.
|
|
142
|
-
*
|
|
143
|
-
* @param oldInput The raw string the user just typed into (pre-format)
|
|
144
|
-
* @param oldCursor selectionStart captured from the native event
|
|
145
|
-
* @param newFormatted The formatted string we're about to display
|
|
146
|
-
* @param info Locale separators
|
|
147
|
-
* @param inputType e.nativeEvent.inputType (optional — for backspace detection)
|
|
148
|
-
*/
|
|
149
|
-
declare function computeNewCursorPosition(oldInput: string, oldCursor: number, newFormatted: string, info: LocaleInfo, inputType?: string): number;
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Format presets — named Intl.NumberFormatOptions configurations for common
|
|
153
|
-
* number input patterns. Use these as the `formatOptions` prop value.
|
|
154
|
-
*
|
|
155
|
-
* @example
|
|
156
|
-
* import { presets } from 'raqam'
|
|
157
|
-
* <NumberField.Root formatOptions={presets.currency('USD')} />
|
|
158
|
-
* <NumberField.Root formatOptions={presets.percent} />
|
|
159
|
-
* <NumberField.Root formatOptions={presets.compact} />
|
|
160
|
-
*/
|
|
161
|
-
declare const presets: {
|
|
162
|
-
/** Currency with standard sign display. Shorthand for `{ style:'currency', currency:code }`. */
|
|
163
|
-
readonly currency: (code: string) => Intl.NumberFormatOptions;
|
|
164
|
-
/**
|
|
165
|
-
* Accounting currency — negatives shown as `(1,234.56)` instead of `-$1,234.56`.
|
|
166
|
-
* Requires the accounting format parser fix (built-in to raqam).
|
|
167
|
-
*/
|
|
168
|
-
readonly accounting: (code: string) => Intl.NumberFormatOptions;
|
|
169
|
-
/** Percentage — formats 0.42 as "42%" */
|
|
170
|
-
readonly percent: Intl.NumberFormatOptions;
|
|
171
|
-
/** Compact short — "1.2K", "3.4M" */
|
|
172
|
-
readonly compact: Intl.NumberFormatOptions;
|
|
173
|
-
/** Compact long — "1.2 thousand", "3.4 million" */
|
|
174
|
-
readonly compactLong: Intl.NumberFormatOptions;
|
|
175
|
-
/** Scientific notation — "1.234E3" */
|
|
176
|
-
readonly scientific: Intl.NumberFormatOptions;
|
|
177
|
-
/** Engineering notation — exponents always multiples of 3 */
|
|
178
|
-
readonly engineering: Intl.NumberFormatOptions;
|
|
179
|
-
/** Integer — no decimal places */
|
|
180
|
-
readonly integer: Intl.NumberFormatOptions;
|
|
181
|
-
/**
|
|
182
|
-
* Financial — always exactly 2 decimal places (fixed scale).
|
|
183
|
-
* Combine with `fixedDecimalScale` prop for strict display.
|
|
184
|
-
*/
|
|
185
|
-
readonly financial: Intl.NumberFormatOptions;
|
|
186
|
-
/**
|
|
187
|
-
* Unit — shorthand for `{ style:'unit', unit:unitCode }`.
|
|
188
|
-
* @example presets.unit('kilometer-per-hour') → { style:'unit', unit:'kilometer-per-hour' }
|
|
189
|
-
*/
|
|
190
|
-
readonly unit: (unit: string) => Intl.NumberFormatOptions;
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
export { CaretBoundary, DigitBlock, FormatResult, type Formatter, type FormatterOptions, type LocaleConfig, LocaleInfo, NumberFieldState, ParseResult, type Parser, type ParserOptions, type PressAndHoldProps, ScrubAreaOptions, type ScrubAreaReturn, type UsePressAndHoldOptions, computeNewCursorPosition, createFormatter, createParser, getCaretBoundary, normalizeDigits, presets, registerLocale, usePressAndHold, useScrubArea };
|
|
72
|
+
export { NumberFieldState, type PressAndHoldProps, ScrubAreaOptions, type ScrubAreaReturn, type UsePressAndHoldOptions, usePressAndHold, useScrubArea };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import it,{createContext,forwardRef,useRef,useMemo,useCallback,useState,useId,useLayoutEffect,useEffect,useContext}from'react';import {jsx}from'react/jsx-runtime';var at=new Map;function We(t,e){let r=`${t??""}::${JSON.stringify(e??{})}`,n=at.get(r);return n||(n=new Intl.NumberFormat(t,e),at.set(r,n)),n}function Ft(t,e){let r=We(t,e),n=We(t,{minimumFractionDigits:1,maximumFractionDigits:1,numberingSystem:e?.numberingSystem}),i=n.formatToParts(-12345.6),o=".",u=",",p="-",c="0";for(let a of i)a.type==="decimal"&&(o=a.value),a.type==="group"&&(u=a.value),a.type==="minusSign"&&(p=a.value);for(let a of n.formatToParts(0))if(a.type==="integer"){c=a.value;break}let m=/^(ar|he|fa|ur|syc|nqo|ug|yi)/i,b=r.resolvedOptions().locale,l=m.test(b);return {decimalSeparator:o,groupingSeparator:u,minusSign:p,zero:c,isRTL:l}}function q(t){let e={...t.formatOptions};t.minimumFractionDigits!==void 0&&(e.minimumFractionDigits=t.minimumFractionDigits),t.maximumFractionDigits!==void 0&&(e.maximumFractionDigits=t.maximumFractionDigits),t.fixedDecimalScale&&t.maximumFractionDigits!==void 0&&(e.minimumFractionDigits=t.maximumFractionDigits,e.maximumFractionDigits=t.maximumFractionDigits);let r=We(t.locale,e),n=null;function i(){return n||(n=Ft(t.locale,e)),n}function o(c){let m=r.formatToParts(c);if(!t.prefix&&!t.suffix)return m;let b=[];return t.prefix&&b.push({type:"literal",value:t.prefix}),b.push(...m),t.suffix&&b.push({type:"literal",value:t.suffix}),b}function u(c){if(!Number.isFinite(c))return "";let m=r.format(c);return (t.prefix??"")+m+(t.suffix??"")}function p(c){let m=o(c);return {formatted:m.map(l=>l.value).join(""),parts:m}}return {format:u,formatToParts:o,getLocaleInfo:i,formatResult:p}}var yt=[[1632,1641],[1776,1785],[2406,2415],[2534,2543],[3664,3673]],Je=[...yt];function St(t){if(t.digitBlocks)for(let e of t.digitBlocks)Je.some(([n])=>n===e[0])||Je.push(e);}function _(t){return /[^\u0020-\u007e]/.test(t)?t.replace(/\p{Nd}/gu,e=>{let r=e.codePointAt(0);for(let[i,o]of Je)if(r>=i&&r<=o)return String(r-i);let n=Number.parseInt(e,10);return Number.isNaN(n)?e:String(n)}):t}function Ge(t,e){if(!e||e==="0")return t;let r=e.codePointAt(0);return r===void 0?t:t.replace(/[0-9]/g,n=>String.fromCodePoint(r+(n.charCodeAt(0)-48)))}function It(t,e){return e?!!(/^-0+$/.test(t)||/\.$/.test(t)||/\.\d*0$/.test(t)||/^-?\.\d+$/.test(t)):false}function Pe(t={}){let e=t.allowNegative??true,r=t.allowDecimal??true,n=t.formatOptions?.style==="percent",i=q({locale:t.locale,formatOptions:t.formatOptions,prefix:t.prefix,suffix:t.suffix}),o="";if(t.formatOptions?.style==="currency")try{o=i.formatToParts(1).filter(b=>b.type==="currency").map(b=>b.value).join("");}catch{o="";}function u(){return i.getLocaleInfo()}function p(b){let l=u(),a=_(b);o&&(a=a.split(o).join(""));let I=a.match(/^\((.+)\)$/);if(I&&(a=`-${I[1]}`),t.prefix&&a.startsWith(t.prefix)&&(a=a.slice(t.prefix.length)),t.suffix&&a.endsWith(t.suffix)&&(a=a.slice(0,-t.suffix.length)),l.groupingSeparator&&(a=a.split(l.groupingSeparator).join("")),l.decimalSeparator!=="."&&(a=a.split(l.decimalSeparator).join(".")),l.minusSign!=="-"&&(a=a.split(l.minusSign).join("-")),a.includes("\u2212")&&(a=a.split("\u2212").join("-")),a=a.replace(/[^\d.\-]/g,"").trim(),a.includes("-")){let F=a.startsWith("-");a=a.replace(/-/g,""),F&&(a=`-${a}`);}return a}function c(b){if(!b||b.trim()==="")return {value:null,isValid:false,isIntermediate:false};let l=p(b);if(l==="")return {value:null,isValid:false,isIntermediate:false};if(l==="-")return {value:null,isValid:false,isIntermediate:e};if(l==="."||l==="-.")return {value:null,isValid:false,isIntermediate:r&&(l==="."||e)};if(!e&&l.startsWith("-"))return {value:null,isValid:false,isIntermediate:false};if(!r&&l.includes("."))return {value:null,isValid:false,isIntermediate:false};if(!/^-?(?:\d+\.?\d*|\.\d+)$/.test(l))return {value:null,isValid:false,isIntermediate:false};let a=Number.parseFloat(l);return Number.isFinite(a)?(Object.is(a,-0)&&(a=0),n&&a!==0&&(a=Number((a/100).toPrecision(15))),{value:a,isValid:true,isIntermediate:It(l,r)}):{value:null,isValid:false,isIntermediate:false}}function m(b){return c(b).isIntermediate}return {parse:c,isIntermediate:m,getLocaleInfo:u}}function Xe({value:t,defaultValue:e,onChange:r}){let n=t!==void 0,i=useRef(n);typeof window<"u"&&window.__DEV__!==false&&i.current!==n&&console.warn(`[raqam] Component is changing from ${i.current?"controlled":"uncontrolled"} to ${n?"controlled":"uncontrolled"}. Decide between using a controlled or uncontrolled component and don't switch.`);let[o,u]=useState(e),p=useCallback(c=>{let m=typeof c=="function"?c(n?t:o):c;n||u(m),r?.(m);},[n,t,o,r]);return [n?t:o,p]}function Qe(t,e,r){let n=t;return e!==void 0&&(n=Math.max(n,e)),r!==void 0&&(n=Math.min(n,r)),n}function ut(t,e){let n=10**Math.max(lt(t),lt(e));return Math.round(t*n+e*n)/n}function lt(t){if(!Number.isFinite(t))return 0;let e=String(t),r=e.indexOf("e");if(r!==-1){let i=Number(e.slice(r+1)),o=e.indexOf("."),u=o===-1?0:r-o-1;return Math.max(0,u-i)}let n=e.indexOf(".");return n===-1?0:e.length-n-1}function Ze(t){let{locale:e,formatOptions:r,minValue:n,maxValue:i,step:o=1,largeStep:u,smallStep:p,allowNegative:c=true,allowDecimal:m=true,maximumFractionDigits:b,minimumFractionDigits:l,fixedDecimalScale:a,clampBehavior:I="blur",prefix:F,suffix:C,allowOutOfRange:P=false,validate:G,onRawChange:X,formatValue:re}=t,se=m?l:0,S=m?b:0,H=m?a:false,ae=useMemo(()=>q({locale:e,formatOptions:r,prefix:F,suffix:C,minimumFractionDigits:se,maximumFractionDigits:S,fixedDecimalScale:H}),[e,JSON.stringify(r),F,C,se,S,H]),Q=useMemo(()=>Pe({locale:e,formatOptions:r,allowNegative:c,allowDecimal:m,prefix:F,suffix:C}),[e,JSON.stringify(r),c,m,F,C]),[v,M]=Xe({value:t.value,defaultValue:t.defaultValue??null,onChange:t.onChange}),Z=useRef(t.value??t.defaultValue??null),k=useCallback(d=>re?re(Object.is(d,-0)?0:d):ae.format(Object.is(d,-0)?0:d),[ae,re]),ce=useMemo(()=>t.defaultValue!=null?k(t.defaultValue):t.value!=null?k(t.value):"",[]),[Fe,B]=useState(ce),ee=useRef(ce),[je,te]=useState(t.defaultValue!=null?String(t.defaultValue):null),be=useCallback(d=>{if(!G)return {validationState:"valid",validationError:null};let D=G(d);return D===false?{validationState:"invalid",validationError:null}:typeof D=="string"?{validationState:"invalid",validationError:D}:{validationState:"valid",validationError:null}},[G]),Ee=useMemo(()=>{let d=t.defaultValue??t.value??null;return be(d??null)},[]),[Te,De]=useState(Ee.validationState),[me,Ce]=useState(Ee.validationError),[T,_e]=useState(false),[ye,ne]=useState(false),w=useRef("input"),fe=useCallback(d=>{w.current=d;},[]),V=useCallback(()=>w.current,[]),z=t.value,Me=useRef(z);if(!Object.is(Me.current,z)&&(Me.current=z,!Object.is(z,Z.current))){Z.current=z;let d=Object.is(z,-0)?0:z,D=d!=null&&Number.isFinite(d),h=D?k(d):"";ee.current=h,B(h),te(D?String(d):null);}let Se=`${e??""}|${JSON.stringify(r??{})}|${F??""}|${C??""}|${se??""}|${S??""}|${H??""}`,Ve=useRef(Se);if(Ve.current!==Se&&(Ve.current=Se,v!=null&&Number.isFinite(v)&&!ye)){let d=k(v);d!==Fe&&(B(d),ee.current=d);}let ue=useCallback(d=>{let{validationState:D,validationError:h}=be(d);De(D),Ce(h);},[be]),$e=useCallback((d,D)=>{let h=D!==void 0?D:Q.parse(d).value;I==="strict"&&!P&&h!==null&&(n!==void 0&&h<n||i!==void 0&&h>i)||(B(d),Z.current=h,M(h),te(h!==null?d:null),X?.(h!==null?d:null),ue(h));},[Q,I,P,n,i,M,X,ue]),Y=useCallback(d=>{if(Z.current=d,M(d),d!=null){let D=k(d);B(D),ee.current=D;let h=String(d);te(h),X?.(h);}else B(""),ee.current="",te(null),X?.(null);ue(d);},[k,M,X,ue]),Ue=useCallback(()=>{if(v==null)return B(""),ee.current="",null;let d=v;I==="blur"&&!P&&(d=Qe(v,n,i)),Object.is(d,-0)&&(d=0);let D=k(d);B(D),ee.current=D;let h=d;if(!re){let j=Q.parse(D).value;j!==null&&Number.isFinite(j)&&k(j)===D&&(h=j);}return h!==v&&(Z.current=h,M(h)),ue(h),h},[v,I,P,n,i,Q,k,re,M,ue]),ie=v!=null&&Number.isFinite(v)?v:null,Ke=u??o*10,ze=p??o*.1,Ye=!t.disabled&&!t.readOnly&&(P||i===void 0||(ie??Number.NEGATIVE_INFINITY)<i),qe=!t.disabled&&!t.readOnly&&(P||n===void 0||(ie??Number.POSITIVE_INFINITY)>n),Oe=useCallback(d=>{let j=ut(ie??0,d??o),Le=P?j:Qe(j,n,i);Y(Le);},[ie,o,n,i,P,Y]),ot=useCallback(d=>{let j=ut(ie??0,-(d??o)),Le=P?j:Qe(j,n,i);Y(Le);},[ie,o,n,i,P,Y]),Ie=useCallback(()=>{i!==void 0&&Y(i);},[i,Y]),ge=useCallback(()=>{n!==void 0&&Y(n);},[n,Y]);return {inputValue:Fe,numberValue:ie,rawValue:je,canIncrement:Ye,canDecrement:qe,isScrubbing:T,setIsScrubbing:_e,isFocused:ye,setIsFocused:ne,validationState:Te,validationError:me,_setLastChangeReason:fe,_getLastChangeReason:V,setInputValue:$e,setNumberValue:Y,commit:Ue,increment:Oe,decrement:ot,incrementToMax:Ie,decrementToMin:ge,options:{...t,step:o,largeStep:Ke,smallStep:ze}}}function st(t,e){return t>="0"&&t<="9"||t===e.decimalSeparator||t===e.minusSign||t==="-"||t==="."&&e.decimalSeparator!=="."&&e.groupingSeparator!=="."}function ht(t,e,r){let n=_(t),i=0;for(let o=0;o<e&&o<n.length;o++)st(n[o],r)&&i++;return i}function ct(t,e){let r=t.length,n=new Array(r+1).fill(true);for(let i=0;i<r;i++)t[i]===e.groupingSeparator&&(n[i+1]=false);return n[0]=true,n[r]=true,n}function xe(t,e,r,n,i){let o=_(t),u=ht(o,e,n),p=t.slice(0,e),c=p.includes("-")||p.includes(n.minusSign),m=r.includes("-")||r.includes(n.minusSign);c&&!m&&(u=Math.max(0,u-1)),i==="deleteContentBackward"&&e>0&&t[e-1]===n.groupingSeparator&&(u=Math.max(0,u-1));let b=ct(r,n),l=_(r),a=0,I=0;for(let F=0;F<l.length;F++){if(a===u){I=F;break}st(l[F],n)&&a++,I=F+1;}return u>0&&a<u&&(I=r.length),I=Et(I,b),I}function Et(t,e){if(e[t])return t;for(let r=t+1;r<e.length;r++)if(e[r])return r;for(let r=t-1;r>=0;r--)if(e[r])return r;return 0}function we(t,e={}){let{delay:r=400,interval:n=200,disabled:i=false}=e,o=useRef(t);useEffect(()=>{o.current=t;});let u=useRef(r);useEffect(()=>{u.current=r;});let p=useRef(n);useEffect(()=>{p.current=n;});let c=useRef(null),m=useRef(null),b=useRef(false),l=useCallback(()=>{b.current=false,c.current!==null&&(clearTimeout(c.current),c.current=null),m.current!==null&&(clearTimeout(m.current),m.current=null);},[]),a=useCallback(P=>{if(!b.current)return;o.current();let G=Math.max(50,Math.floor(P/2));m.current=setTimeout(()=>{a(G);},P);},[]),I=useCallback(P=>{i||P.button!==0&&P.pointerType==="mouse"||(o.current(),b.current=true,c.current=setTimeout(()=>{a(p.current);},u.current));},[i,a]),F=useCallback(P=>{P.preventDefault(),l();},[l]),C=useCallback(P=>{l();},[l]);return useEffect(()=>l,[l]),{onPointerDown:I,onPointerUp:F,onPointerLeave:C}}function mt(t){return t.replace(/[.*+?^${}()|[\]\\\-]/g,"\\$&")}function Vt(t){let e=t.replace(/\s+/g,"");if(/^[+-]?(?:\d+\.?\d*|\.\d+)[eE][+-]?\d+$/.test(e)){let n=Number(e);return Number.isFinite(n)?n:null}let r=e.match(/^([+-]?(?:\d+\.?\d*|\.\d+))(k|m|b|t|thousand|million|billion|trillion)$/i);if(r){let n={k:1e3,thousand:1e3,m:1e6,million:1e6,b:1e9,billion:1e9,t:1e12,trillion:1e12},i=Number(r[1])*n[r[2].toLowerCase()];return Number.isFinite(i)?i:null}return null}function tt(t,e,r){let{locale:n,formatOptions:i,minValue:o,maxValue:u,allowNegative:p=true,allowDecimal:c=true,allowMouseWheel:m=false,liveFormat:b=true,prefix:l,suffix:a,name:I,disabled:F,readOnly:C,required:P,onFocus:G,onBlur:X,maximumFractionDigits:re,minimumFractionDigits:se,fixedDecimalScale:S,copyBehavior:H="formatted",stepHoldDelay:ae=400,stepHoldInterval:Q=200,formatValue:v,parseValue:M,onValueCommitted:Z}=t,k=i?.notation,ce=b&&k!=="compact"&&k!=="scientific"&&k!=="engineering",{step:Fe=1,largeStep:B=Fe*10,smallStep:ee=Fe*.1}=e.options,je=useId(),te=t.id??`raqam-${je}`,be=`${te}-label`,Ee=`${te}-description`,Te=`${te}-error`,De=c?se:0,me=c?re:0,Ce=c?S:false,T=useMemo(()=>q({locale:n,formatOptions:i,prefix:l,suffix:a,minimumFractionDigits:De,maximumFractionDigits:me,fixedDecimalScale:Ce}),[n,JSON.stringify(i),l,a,De,me,Ce]),_e=i?.style==="percent",ye=c?_e?20:me:0,ne=useMemo(()=>q({locale:n,formatOptions:i,prefix:l,suffix:a,minimumFractionDigits:0,maximumFractionDigits:ye,fixedDecimalScale:false}),[n,JSON.stringify(i),l,a,ye]),w=useMemo(()=>Pe({locale:n,formatOptions:i,allowNegative:p,allowDecimal:c,prefix:l,suffix:a}),[n,JSON.stringify(i),p,c,l,a]),fe=useCallback((f,x)=>{let L=T.getLocaleInfo(),g=x.lastIndexOf(L.decimalSeparator);if(g===-1&&L.decimalSeparator!=="."&&L.groupingSeparator!=="."&&(g=x.lastIndexOf(".")),g===-1||!/\d/.test(_(x.slice(0,g))))return null;let y=_(x.slice(g+1)).match(/^\d+/);if(!y)return null;let s=Math.min(y[0].length,me??20,20);return s===0?null:q({locale:n,formatOptions:i,prefix:l,suffix:a,minimumFractionDigits:s,maximumFractionDigits:s}).format(f)},[T,n,JSON.stringify(i),l,a,me]),V=useRef(null);useLayoutEffect(()=>{V.current!==null&&r.current&&document.activeElement===r.current&&(r.current.setSelectionRange(V.current,V.current),V.current=null);},[e.inputValue,r]),useEffect(()=>{let f=r.current;if(!f||!m)return;let x=L=>{F||C||document.activeElement===f&&(L.preventDefault(),e._setLastChangeReason("wheel"),L.deltaY<0?e.increment():e.decrement());};return f.addEventListener("wheel",x,{passive:false}),()=>f.removeEventListener("wheel",x)},[m,F,C,e,r]);let z=useRef(false),Me=useCallback(()=>{z.current=true;},[]),Se=useCallback(f=>{z.current=false;let x=f.currentTarget.value,L=T.getLocaleInfo(),g=_(x),y;if(M){let s=M(g);s.isIntermediate?y=g:s.value!==null&&v?y=v(s.value):s.value!==null?y=T.format(s.value):y=g,V.current=y.length;}else if(ce){let s=w.parse(g);s.isIntermediate?y=Ge(g,L.zero):s.value!==null?y=v?v(s.value):ne.format(s.value):y=g===""?"":g,V.current=xe(x,x.length,y,L,"insertCompositionText");}else y=g,V.current=g.length;e._setLastChangeReason("input"),e.setInputValue(y);},[T,ne,w,ce,e,v,M]),Ve=useCallback(f=>{let x=f.target.value,L=f.target.selectionStart??x.length,g=f.nativeEvent.inputType,y=T.getLocaleInfo();if(z.current){e.setInputValue(x);return}let s=_(x);p||(s=s.split("-").join("").split(y.minusSign).join("")),c?y.decimalSeparator!=="."&&y.groupingSeparator!=="."&&(s=s.replace(/\./g,(O,R,N)=>/\d/.test(N[R-1]??"")||/\d/.test(N[R+1]??"")?y.decimalSeparator:".")):s=s.split(".").join("").split(y.decimalSeparator).join("");let E,de;if(M){let O=M(s);O.isIntermediate?E=s:O.value!==null?E=v?v(O.value):T.format(O.value):s===""?E="":E=s,V.current=E.length;}else if(ce){let O=w.parse(s);if(O.isIntermediate)E=(!v&&O.value!==null?fe(O.value,s):null)??Ge(s,y.zero);else if(O.value!==null)if(v)E=v(O.value);else {E=ne.format(O.value);let R=w.parse(E).value;de=R!==null&&Number.isFinite(R)&&ne.format(R)===E?R:O.value;}else s===""||!/\d/.test(s)?E="":E=s;v?V.current=E.length:V.current=xe(x,L,E,y,g);}else E=s,V.current=L;e._setLastChangeReason(E===""?"clear":"input"),e.setInputValue(E,de);},[T,ne,w,ce,e,v,M,fe]),ue=useCallback(f=>{f.preventDefault();let x=f.clipboardData.getData("text/plain");if(!x)return;let L=x.replace(/[€$£¥₹₺₽﷼฿₩¢₦₨₪₫₱]/g,"").trim(),g=_(L);if(!p){let N=T.getLocaleInfo();g=g.split("-").join("").split(N.minusSign).join("");}if(!c){let N=T.getLocaleInfo();g=g.split(".").join("").split(N.decimalSeparator).join("");}if(e._setLastChangeReason("paste"),M){let N=M(g);if(N.value!==null){let A=v?v(N.value):T.format(N.value);e.setInputValue(A,N.value),V.current=A.length;}return}let y=Vt(g);if(y!==null){let A=i?.style==="percent"?y/100:y,pe=v?v(A):T.format(A);e.setInputValue(pe,A),V.current=pe.length;return}let s=w.parse(g);if(s.value!==null){let N=T.format(s.value);e.setInputValue(N,s.value),V.current=N.length;return}let E=T.getLocaleInfo(),de=new RegExp(`[^0-9${mt(E.decimalSeparator)}${mt(E.minusSign)}-]`,"g"),O=g.replace(de,""),R=w.parse(O);if(R.value!==null){let N=T.format(R.value);e.setInputValue(N,R.value),V.current=N.length;}},[w,T,e,v,M]),$e=useCallback(f=>{if(H==="formatted")return;f.preventDefault();let x=String(e.numberValue??"");f.clipboardData.setData("text/plain",x);},[H,e.numberValue]),Y=useCallback(f=>{if(H==="formatted")return;f.preventDefault();let x=String(e.numberValue??"");f.clipboardData.setData("text/plain",x),e._setLastChangeReason("clear"),e.setInputValue("");},[H,e]),Ue=useCallback(f=>{if(F||C)return;let x=f.key;if(!f.metaKey&&!f.ctrlKey&&!f.altKey&&c){let L=T.getLocaleInfo();if(x===L.decimalSeparator||x==="."&&L.decimalSeparator!=="."&&L.groupingSeparator!=="."){let y=r.current;if(y){let s=y.value.indexOf(L.decimalSeparator);if(s!==-1){f.preventDefault(),y.setSelectionRange(s+1,s+1);return}}}}if(x==="Backspace"&&!f.shiftKey&&!f.altKey&&!f.metaKey&&!f.ctrlKey){let L=r.current;if(L){let g=L.selectionStart??0,y=L.selectionEnd??g,s=L.value,E=T.getLocaleInfo();if(g===y&&g>=2&&s[g-1]===E.groupingSeparator){f.preventDefault();let R=s.slice(0,g-2)+s.slice(g),N=w.parse(R);e._setLastChangeReason("input");let A;N.value!==null?(A=fe(N.value,R)??ne.format(N.value),e.setInputValue(A,N.value)):(A=R,R===""&&e._setLastChangeReason("clear"),e.setInputValue(R)),V.current=xe(R,g-2,A,E,"deleteContentBackward");return}let de=R=>R!==void 0&&/\p{Nd}/u.test(R),O=R=>R!==void 0&&!de(R)&&R!==E.decimalSeparator&&R!==E.minusSign&&R!=="-";if(g===y&&g===s.length&&g>=1&&O(s[g-1])){let R=g;for(;R>0&&O(s[R-1]);)R--;if(R>0&&de(s[R-1])){f.preventDefault();let N=s.slice(0,R-1)+s.slice(R),A=w.parse(N);e._setLastChangeReason("input");let pe;A.value!==null&&/\p{Nd}/u.test(N)?(pe=fe(A.value,N)??ne.format(A.value),e.setInputValue(pe,A.value)):(pe="",e._setLastChangeReason("clear"),e.setInputValue("")),V.current=xe(N,R-1,pe,E,"deleteContentBackward");return}}}}if(x==="ArrowUp"||x==="ArrowDown"){f.preventDefault();let L=x==="ArrowUp"?1:-1;e._setLastChangeReason("keyboard"),f.shiftKey?L>0?e.increment(B):e.decrement(B):f.metaKey||f.ctrlKey?L>0?e.increment(ee):e.decrement(ee):L>0?e.increment():e.decrement();return}if(x==="PageUp"){f.preventDefault(),e._setLastChangeReason("keyboard"),e.increment(B);return}if(x==="PageDown"){f.preventDefault(),e._setLastChangeReason("keyboard"),e.decrement(B);return}if(x==="Home"){o!==void 0&&(f.preventDefault(),e._setLastChangeReason("keyboard"),e.decrementToMin());return}if(x==="End"){u!==void 0&&(f.preventDefault(),e._setLastChangeReason("keyboard"),e.incrementToMax());return}if(x==="Enter"){e._setLastChangeReason("blur");let L=e.commit();Z?.(L,{reason:"keyboard"});return}},[F,C,e,B,ee,o,u,T,ne,w,r,c,fe,Z]),ie=useCallback(f=>{e.setIsFocused(false),e._setLastChangeReason("blur");let x=e.commit();Z?.(x,{reason:"blur"}),X?.(f);},[e,X,Z]),Ke=useCallback(f=>{e.setIsFocused(true),G?.(f);},[e,G]),ze=we(()=>{e._setLastChangeReason("increment"),e.increment();},{delay:ae,interval:Q,disabled:F||!e.canIncrement}),Ye=we(()=>{e._setLastChangeReason("decrement"),e.decrement();},{delay:ae,interval:Q,disabled:F||!e.canDecrement}),qe=useMemo(()=>{if(e.numberValue!=null)return v?v(e.numberValue):T.format(e.numberValue)},[e.numberValue,T,v]),Oe=T.getLocaleInfo(),Ie=e.numberValue!==null&&(o!==void 0&&e.numberValue<o||u!==void 0&&e.numberValue>u)||e.validationState==="invalid",ge=useRef(0),[d,D]=useState(false),h=useCallback(f=>{f?(ge.current+=1,D(true)):ge.current>0&&(ge.current-=1,ge.current===0&&D(false));},[]),j=t["aria-labelledby"]??(t["aria-label"]?void 0:d?be:void 0),Le={id:be,htmlFor:te,ref:h},bt={role:"group","aria-labelledby":j},gt={id:te,type:"text",inputMode:"decimal",role:"spinbutton",autoComplete:"off",autoCorrect:"off",spellCheck:false,"aria-label":t["aria-label"],"aria-labelledby":j,"aria-describedby":t["aria-describedby"],"aria-valuenow":e.numberValue??void 0,"aria-valuemin":o,"aria-valuemax":u,"aria-valuetext":qe,"aria-disabled":F||void 0,"aria-readonly":C||void 0,"aria-required":P||void 0,"aria-invalid":Ie?true:void 0,"aria-errormessage":Ie&&e.validationError?Te:void 0,disabled:F,readOnly:C,required:P,value:e.inputValue,onChange:Ve,onKeyDown:Ue,onBlur:ie,onFocus:Ke,onPaste:ue,onCopy:H!=="formatted"?$e:void 0,onCut:H!=="formatted"?Y:void 0,onCompositionStart:Me,onCompositionEnd:Se,style:Oe.isRTL?{direction:"ltr",textAlign:"right",unicodeBidi:"embed"}:void 0,"data-disabled":F?"":void 0,"data-readonly":C?"":void 0,"data-required":P?"":void 0,"data-invalid":Ie?"":void 0,"data-rtl":Oe.isRTL?"":void 0},vt=I?{type:"hidden",name:I,value:e.numberValue??"","aria-hidden":true}:null,xt={type:"button",tabIndex:-1,"aria-label":"Increase",disabled:F||!e.canIncrement,...ze,"data-disabled":F||!e.canIncrement?"":void 0},Rt={type:"button",tabIndex:-1,"aria-label":"Decrease",disabled:F||!e.canDecrement,...Ye,"data-disabled":F||!e.canDecrement?"":void 0};return {labelProps:Le,groupProps:bt,inputProps:gt,hiddenInputProps:vt,incrementButtonProps:xt,decrementButtonProps:Rt,descriptionProps:{id:Ee},errorMessageProps:{id:Te,role:"alert","aria-live":"polite"}}}function Ot(t,e={}){let{locale:r,formatOptions:n,prefix:i,suffix:o,minimumFractionDigits:u,maximumFractionDigits:p,fixedDecimalScale:c}=e,m=useMemo(()=>q({locale:r,formatOptions:n,prefix:i,suffix:o,minimumFractionDigits:u,maximumFractionDigits:p,fixedDecimalScale:c}),[r,JSON.stringify(n),i,o,u,p,c]);return useMemo(()=>t==null?"":m.format(t),[t,m])}function nt(t,e={}){let{direction:r="horizontal",pixelSensitivity:n=4}=e,[i,o]=useState(false),u=useRef(t);u.current=t;let p=useRef(r);p.current=r;let c=useRef(n);c.current=n;let m=useRef(false),b=useRef(0),l=useRef(null),a=useRef({x:0,y:0}),[I,F]=useState({x:0,y:0}),C=useRef(S=>{if(!m.current)return;let H=a.current.x+S.movementX,ae=a.current.y+S.movementY;a.current={x:H,y:ae},F({x:H,y:ae});let Q=p.current,v=0;Q==="horizontal"?v=S.movementX:Q==="vertical"?v=-S.movementY:v=Math.abs(S.movementX)>=Math.abs(S.movementY)?S.movementX:-S.movementY,b.current+=v;let M=c.current;for(;b.current>=M;)u.current.increment(),b.current-=M;for(;b.current<=-M;)u.current.decrement(),b.current+=M;}),P=useRef(()=>{document.pointerLockElement===l.current?(m.current=true,b.current=0,o(true),u.current.setIsScrubbing(true),document.addEventListener("mousemove",C.current)):(m.current=false,b.current=0,document.removeEventListener("mousemove",C.current),o(false),u.current.setIsScrubbing(false));});useEffect(()=>{let S=P.current;return document.addEventListener("pointerlockchange",S),()=>{document.removeEventListener("pointerlockchange",S),document.removeEventListener("mousemove",C.current);}},[]);let G=useCallback(S=>{if(u.current.options.disabled||u.current.options.readOnly||S.button!==0)return;let H=S.currentTarget;l.current=H,a.current={x:S.clientX,y:S.clientY},F({x:S.clientX,y:S.clientY}),H.requestPointerLock();},[]),X=useCallback(S=>{u.current.options.disabled||u.current.options.readOnly||(S.key==="ArrowRight"||S.key==="ArrowUp"?(S.preventDefault(),u.current.increment()):(S.key==="ArrowLeft"||S.key==="ArrowDown")&&(S.preventDefault(),u.current.decrement()));},[]),re=r==="horizontal"?"ew-resize":r==="vertical"?"ns-resize":"move",se={role:"slider",tabIndex:t.options.disabled?-1:0,style:{cursor:t.options.disabled?void 0:re,userSelect:"none",WebkitUserSelect:"none"},"aria-label":"Scrub to change value","data-scrubbing":i?"":void 0,onPointerDown:G,onKeyDown:X};return {isScrubbing:i,scrubAreaProps:se,virtualCursor:I}}var Be=createContext(null);function $(){let t=useContext(Be);if(!t)throw new Error("[raqam] NumberField sub-components must be used inside <NumberField.Root>.");return t}function le(t,e,r,n){if(!e)return t;let i={...t.props};if(n!=null&&(i.ref=n),typeof e=="function")return e(i,r);let o=Object.assign({},i,e.props);return n!=null&&(o.ref=n),it.cloneElement(e,o)}var Bt=Number.parseInt(it.version,10)>=19;function jt(t){return Bt?t.props.ref:t.ref}function _t(...t){return e=>{let r=[];for(let n of t)if(n!=null)if(typeof n=="function"){let i=n(e);r.push(typeof i=="function"?i:()=>n(null));}else n.current=e,r.push(()=>{n.current=null;});return ()=>{for(let n of r)n();}}}function $t(t,e){let{options:r}=t;return {"data-disabled":r.disabled?"":void 0,"data-readonly":r.readOnly?"":void 0,"data-required":r.required?"":void 0,"data-scrubbing":t.isScrubbing?"":void 0,"data-focused":t.isFocused?"":void 0,"data-invalid":e?"":void 0}}var Ut=new Set(["className","style","id","tabIndex","title","role","aria-label","data-testid","onClick","onMouseEnter","onMouseLeave"]);function Kt(t){let e={},r={};for(let[n,i]of Object.entries(t))Ut.has(n)||n.startsWith("data-")||n.startsWith("aria-")?r[n]=i:e[n]=i;return {fieldProps:e,divProps:r}}var zt=forwardRef(function({children:e,onValueChange:r,onValueCommitted:n,...i},o){let u=useRef(null),{fieldProps:p,divProps:c}=Kt(i),m=p,b=useRef(r);b.current=r;let l=useRef(null),a={...m,onValueCommitted:n,onChange:P=>{m.onChange?.(P),b.current&&l.current&&b.current(P,{reason:l.current._getLastChangeReason(),formattedValue:l.current.inputValue});}},I=Ze(a);l.current=I;let F=tt(a,I,u),C=I.validationState==="invalid"||I.numberValue!==null&&(m.minValue!==void 0&&I.numberValue<m.minValue||m.maxValue!==void 0&&I.numberValue>m.maxValue);return jsx(Be.Provider,{value:{state:I,aria:F,inputRef:u,props:a},children:jsx("div",{ref:o,...c,...$t(I,C),children:e})})}),Yt=forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:u}=$(),{ref:p,...c}=o.labelProps,m=it.isValidElement(e)?jt(e):void 0,b=useMemo(()=>_t(i,p,m),[i,p,m]),l=jsx("label",{ref:b,...c,...n,children:r});return le(l,e,u,b)}),qt=forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:u}=$(),p=jsx("div",{ref:i,...o.groupProps,...n,children:r});return le(p,e,u)}),Wt=forwardRef(function({render:e,...r},n){let{aria:i,state:o,inputRef:u}=$(),p=jsx("input",{ref:u,...i.inputProps,...r});return le(p,e,o)}),Jt=forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:u}=$(),p=jsx("button",{ref:i,...o.incrementButtonProps,...n,children:r??"+"});return le(p,e,u)}),Gt=forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:u}=$(),p=jsx("button",{ref:i,...o.decrementButtonProps,...n,children:r??"\u2212"});return le(p,e,u)}),Xt=function(){let{aria:e}=$();return e.hiddenInputProps?jsx("input",{...e.hiddenInputProps}):null},Qt=forwardRef(function({render:e,children:r,direction:n="horizontal",pixelSensitivity:i=4,...o},u){let{state:p}=$(),{scrubAreaProps:c}=nt(p,{direction:n,pixelSensitivity:i}),m=jsx("span",{ref:u,...c,...o,children:r});return le(m,e,p)}),Zt=forwardRef(function({render:e,children:r,style:n,...i},o){let{state:u}=$();if(!u.isScrubbing)return null;let p=jsx("span",{ref:o,style:{position:"fixed",pointerEvents:"none",zIndex:9999,...n},...i,children:r});return le(p,e,u)}),en=forwardRef(function({children:e,...r},n){let{aria:i}=$();return jsx("p",{ref:n,...i.descriptionProps,...r,children:e})}),tn=forwardRef(function({children:e,...r},n){let{aria:i,state:o}=$(),u=e??o.validationError??null;return u?jsx("p",{ref:n,...i.errorMessageProps,...r,children:u}):null}),nn=forwardRef(function({render:e,...r},n){let{state:i}=$(),o=jsx("span",{ref:n,"aria-hidden":"true",...r,children:i.inputValue});return le(o,e,i)}),rn={Root:zt,Label:Yt,Group:qt,Input:Wt,Increment:Jt,Decrement:Gt,HiddenInput:Xt,ScrubArea:Qt,ScrubAreaCursor:Zt,Description:en,ErrorMessage:tn,Formatted:nn};var on={currency:t=>({style:"currency",currency:t}),accounting:t=>({style:"currency",currency:t,currencySign:"accounting"}),percent:{style:"percent"},compact:{notation:"compact"},compactLong:{notation:"compact",compactDisplay:"long"},scientific:{notation:"scientific"},engineering:{notation:"engineering"},integer:{maximumFractionDigits:0},financial:{minimumFractionDigits:2,maximumFractionDigits:2},unit:t=>({style:"unit",unit:t})};export{rn as NumberField,Be as NumberFieldContext,xe as computeNewCursorPosition,q as createFormatter,Pe as createParser,ct as getCaretBoundary,_ as normalizeDigits,on as presets,St as registerLocale,Xe as useControllableState,tt as useNumberField,$ as useNumberFieldContext,Ot as useNumberFieldFormat,Ze as useNumberFieldState,we as usePressAndHold,nt as useScrubArea};//# sourceMappingURL=index.js.map
|
|
2
|
+
export{i as NumberField,g as NumberFieldContext,a as useControllableState,d as useNumberField,h as useNumberFieldContext,e as useNumberFieldFormat,b as useNumberFieldState,c as usePressAndHold,f as useScrubArea}from'./chunk-G7ACJUKH.js';export{a as presets}from'./chunk-ZWDI6EPF.js';export{e as computeNewCursorPosition,b as createFormatter,c as createParser,d as getCaretBoundary}from'./chunk-P6AWGQPY.js';export{b as normalizeDigits,a as registerLocale}from'./chunk-4GNLVHAM.js';//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|