raqam 0.2.6 → 0.3.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
@@ -35,19 +35,23 @@ pnpm add raqam
35
35
  ### Hook API
36
36
 
37
37
  ```tsx
38
- import { useNumberFieldState, useNumberField } from 'raqam'
38
+ import { useNumberFieldState, useNumberField, type UseNumberFieldStateOptions } from 'raqam'
39
39
  import { useRef } from 'react'
40
40
 
41
41
  function PriceInput() {
42
- const state = useNumberFieldState({
42
+ // Share one options object — useNumberField builds its own formatter/parser,
43
+ // so it needs the same formatting options as useNumberFieldState. `satisfies`
44
+ // keeps the literal types (e.g. style: 'currency') in a strict TS project.
45
+ const options = {
43
46
  locale: 'en-US',
44
47
  formatOptions: { style: 'currency', currency: 'USD' },
45
48
  minValue: 0,
46
49
  defaultValue: 1234.56,
47
- })
50
+ } satisfies UseNumberFieldStateOptions
51
+ const state = useNumberFieldState(options)
48
52
  const inputRef = useRef(null)
49
53
  const { inputProps, labelProps, incrementButtonProps, decrementButtonProps } =
50
- useNumberField({ label: 'Price' }, state, inputRef)
54
+ useNumberField({ ...options, label: 'Price' }, state, inputRef)
51
55
 
52
56
  return (
53
57
  <div>
package/dist/core.d.cts CHANGED
@@ -151,8 +151,8 @@ interface NumberFieldState {
151
151
  setInputValue: (val: string, knownValue?: number | null) => void;
152
152
  /** Directly set the numeric value (triggers format + onChange) */
153
153
  setNumberValue: (val: number | null) => void;
154
- /** Format + clamp on blur — call from onBlur */
155
- commit: () => void;
154
+ /** Format + clamp on blur — call from onBlur. Returns the committed numeric value. */
155
+ commit: () => number | null;
156
156
  /** Increment by step */
157
157
  increment: (amount?: number) => void;
158
158
  /** Decrement by step */
@@ -191,9 +191,27 @@ interface UseNumberFieldProps extends UseNumberFieldStateOptions {
191
191
  stepHoldInterval?: number;
192
192
  onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
193
193
  onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
194
+ /**
195
+ * Fires only when the value is committed — i.e. on blur, or when the user
196
+ * presses Enter — after formatting and clamping have been applied.
197
+ * `reason` is `"blur"` for focus loss and `"keyboard"` for Enter.
198
+ * Reach for this (instead of `onChange`) when you only care about the final,
199
+ * settled value: persisting it, validating server-side, firing a request, etc.
200
+ */
201
+ onValueCommitted?: (value: number | null, details: {
202
+ reason: "blur" | "keyboard";
203
+ }) => void;
194
204
  }
195
205
  interface NumberFieldAria {
196
- labelProps: React.LabelHTMLAttributes<HTMLLabelElement>;
206
+ /**
207
+ * Props for the label element. Includes a `ref` callback that registers the
208
+ * label's presence with the hook — spread it onto whatever element you render
209
+ * as the label (built-in `<NumberField.Label>` or a custom primitive) so the
210
+ * input/group keep their `aria-labelledby` wiring and avoid dangling refs.
211
+ */
212
+ labelProps: React.LabelHTMLAttributes<HTMLLabelElement> & {
213
+ ref?: React.RefCallback<HTMLElement>;
214
+ };
197
215
  groupProps: React.HTMLAttributes<HTMLDivElement>;
198
216
  inputProps: React.InputHTMLAttributes<HTMLInputElement>;
199
217
  hiddenInputProps: React.InputHTMLAttributes<HTMLInputElement> | null;
@@ -216,10 +234,6 @@ interface NumberFieldRootProps extends UseNumberFieldProps {
216
234
  formattedValue: string;
217
235
  event?: React.SyntheticEvent;
218
236
  }) => void;
219
- /** Fires only on commit (blur, Enter) */
220
- onValueCommitted?: (value: number | null, details: {
221
- reason: "blur" | "keyboard";
222
- }) => void;
223
237
  }
224
238
 
225
239
  /**
package/dist/core.d.ts CHANGED
@@ -151,8 +151,8 @@ interface NumberFieldState {
151
151
  setInputValue: (val: string, knownValue?: number | null) => void;
152
152
  /** Directly set the numeric value (triggers format + onChange) */
153
153
  setNumberValue: (val: number | null) => void;
154
- /** Format + clamp on blur — call from onBlur */
155
- commit: () => void;
154
+ /** Format + clamp on blur — call from onBlur. Returns the committed numeric value. */
155
+ commit: () => number | null;
156
156
  /** Increment by step */
157
157
  increment: (amount?: number) => void;
158
158
  /** Decrement by step */
@@ -191,9 +191,27 @@ interface UseNumberFieldProps extends UseNumberFieldStateOptions {
191
191
  stepHoldInterval?: number;
192
192
  onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
193
193
  onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
194
+ /**
195
+ * Fires only when the value is committed — i.e. on blur, or when the user
196
+ * presses Enter — after formatting and clamping have been applied.
197
+ * `reason` is `"blur"` for focus loss and `"keyboard"` for Enter.
198
+ * Reach for this (instead of `onChange`) when you only care about the final,
199
+ * settled value: persisting it, validating server-side, firing a request, etc.
200
+ */
201
+ onValueCommitted?: (value: number | null, details: {
202
+ reason: "blur" | "keyboard";
203
+ }) => void;
194
204
  }
195
205
  interface NumberFieldAria {
196
- labelProps: React.LabelHTMLAttributes<HTMLLabelElement>;
206
+ /**
207
+ * Props for the label element. Includes a `ref` callback that registers the
208
+ * label's presence with the hook — spread it onto whatever element you render
209
+ * as the label (built-in `<NumberField.Label>` or a custom primitive) so the
210
+ * input/group keep their `aria-labelledby` wiring and avoid dangling refs.
211
+ */
212
+ labelProps: React.LabelHTMLAttributes<HTMLLabelElement> & {
213
+ ref?: React.RefCallback<HTMLElement>;
214
+ };
197
215
  groupProps: React.HTMLAttributes<HTMLDivElement>;
198
216
  inputProps: React.InputHTMLAttributes<HTMLInputElement>;
199
217
  hiddenInputProps: React.InputHTMLAttributes<HTMLInputElement> | null;
@@ -216,10 +234,6 @@ interface NumberFieldRootProps extends UseNumberFieldProps {
216
234
  formattedValue: string;
217
235
  event?: React.SyntheticEvent;
218
236
  }) => void;
219
- /** Fires only on commit (blur, Enter) */
220
- onValueCommitted?: (value: number | null, details: {
221
- reason: "blur" | "keyboard";
222
- }) => void;
223
237
  }
224
238
 
225
239
  /**
@@ -155,8 +155,8 @@ interface NumberFieldState {
155
155
  setInputValue: (val: string, knownValue?: number | null) => void;
156
156
  /** Directly set the numeric value (triggers format + onChange) */
157
157
  setNumberValue: (val: number | null) => void;
158
- /** Format + clamp on blur — call from onBlur */
159
- commit: () => void;
158
+ /** Format + clamp on blur — call from onBlur. Returns the committed numeric value. */
159
+ commit: () => number | null;
160
160
  /** Increment by step */
161
161
  increment: (amount?: number) => void;
162
162
  /** Decrement by step */
@@ -195,9 +195,27 @@ interface UseNumberFieldProps extends UseNumberFieldStateOptions {
195
195
  stepHoldInterval?: number;
196
196
  onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
197
197
  onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
198
+ /**
199
+ * Fires only when the value is committed — i.e. on blur, or when the user
200
+ * presses Enter — after formatting and clamping have been applied.
201
+ * `reason` is `"blur"` for focus loss and `"keyboard"` for Enter.
202
+ * Reach for this (instead of `onChange`) when you only care about the final,
203
+ * settled value: persisting it, validating server-side, firing a request, etc.
204
+ */
205
+ onValueCommitted?: (value: number | null, details: {
206
+ reason: "blur" | "keyboard";
207
+ }) => void;
198
208
  }
199
209
  interface NumberFieldAria {
200
- labelProps: React.LabelHTMLAttributes<HTMLLabelElement>;
210
+ /**
211
+ * Props for the label element. Includes a `ref` callback that registers the
212
+ * label's presence with the hook — spread it onto whatever element you render
213
+ * as the label (built-in `<NumberField.Label>` or a custom primitive) so the
214
+ * input/group keep their `aria-labelledby` wiring and avoid dangling refs.
215
+ */
216
+ labelProps: React.LabelHTMLAttributes<HTMLLabelElement> & {
217
+ ref?: React.RefCallback<HTMLElement>;
218
+ };
201
219
  groupProps: React.HTMLAttributes<HTMLDivElement>;
202
220
  inputProps: React.InputHTMLAttributes<HTMLInputElement>;
203
221
  hiddenInputProps: React.InputHTMLAttributes<HTMLInputElement> | null;
@@ -239,10 +257,6 @@ interface NumberFieldRootProps extends UseNumberFieldProps {
239
257
  formattedValue: string;
240
258
  event?: React.SyntheticEvent;
241
259
  }) => void;
242
- /** Fires only on commit (blur, Enter) */
243
- onValueCommitted?: (value: number | null, details: {
244
- reason: "blur" | "keyboard";
245
- }) => void;
246
260
  }
247
261
 
248
262
  declare function useNumberFieldState(options: UseNumberFieldStateOptions): NumberFieldState;
@@ -155,8 +155,8 @@ interface NumberFieldState {
155
155
  setInputValue: (val: string, knownValue?: number | null) => void;
156
156
  /** Directly set the numeric value (triggers format + onChange) */
157
157
  setNumberValue: (val: number | null) => void;
158
- /** Format + clamp on blur — call from onBlur */
159
- commit: () => void;
158
+ /** Format + clamp on blur — call from onBlur. Returns the committed numeric value. */
159
+ commit: () => number | null;
160
160
  /** Increment by step */
161
161
  increment: (amount?: number) => void;
162
162
  /** Decrement by step */
@@ -195,9 +195,27 @@ interface UseNumberFieldProps extends UseNumberFieldStateOptions {
195
195
  stepHoldInterval?: number;
196
196
  onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
197
197
  onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
198
+ /**
199
+ * Fires only when the value is committed — i.e. on blur, or when the user
200
+ * presses Enter — after formatting and clamping have been applied.
201
+ * `reason` is `"blur"` for focus loss and `"keyboard"` for Enter.
202
+ * Reach for this (instead of `onChange`) when you only care about the final,
203
+ * settled value: persisting it, validating server-side, firing a request, etc.
204
+ */
205
+ onValueCommitted?: (value: number | null, details: {
206
+ reason: "blur" | "keyboard";
207
+ }) => void;
198
208
  }
199
209
  interface NumberFieldAria {
200
- labelProps: React.LabelHTMLAttributes<HTMLLabelElement>;
210
+ /**
211
+ * Props for the label element. Includes a `ref` callback that registers the
212
+ * label's presence with the hook — spread it onto whatever element you render
213
+ * as the label (built-in `<NumberField.Label>` or a custom primitive) so the
214
+ * input/group keep their `aria-labelledby` wiring and avoid dangling refs.
215
+ */
216
+ labelProps: React.LabelHTMLAttributes<HTMLLabelElement> & {
217
+ ref?: React.RefCallback<HTMLElement>;
218
+ };
201
219
  groupProps: React.HTMLAttributes<HTMLDivElement>;
202
220
  inputProps: React.InputHTMLAttributes<HTMLInputElement>;
203
221
  hiddenInputProps: React.InputHTMLAttributes<HTMLInputElement> | null;
@@ -239,10 +257,6 @@ interface NumberFieldRootProps extends UseNumberFieldProps {
239
257
  formattedValue: string;
240
258
  event?: React.SyntheticEvent;
241
259
  }) => void;
242
- /** Fires only on commit (blur, Enter) */
243
- onValueCommitted?: (value: number | null, details: {
244
- reason: "blur" | "keyboard";
245
- }) => void;
246
260
  }
247
261
 
248
262
  declare function useNumberFieldState(options: UseNumberFieldStateOptions): NumberFieldState;
package/dist/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- 'use strict';var Ct=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var Ct__default=/*#__PURE__*/_interopDefault(Ct);var it=new Map;function We(t,e){let r=`${t??""}::${JSON.stringify(e??{})}`,n=it.get(r);return n||(n=new Intl.NumberFormat(t,e),it.set(r,n)),n}function pt(t,e){let r=We(t,e),n=We(t,{minimumFractionDigits:1,maximumFractionDigits:1,numberingSystem:e?.numberingSystem}),i=n.formatToParts(-12345.6),a=".",u=",",p="-",c="0";for(let o of i)o.type==="decimal"&&(a=o.value),o.type==="group"&&(u=o.value),o.type==="minusSign"&&(p=o.value);for(let o of n.formatToParts(0))if(o.type==="integer"){c=o.value;break}let m=/^(ar|he|fa|ur|syc|nqo|ug|yi)/i,b=r.resolvedOptions().locale,l=m.test(b);return {decimalSeparator:a,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=pt(t.locale,e)),n}function a(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=a(c);return {formatted:m.map(l=>l.value).join(""),parts:m}}return {format:u,formatToParts:a,getLocaleInfo:i,formatResult:p}}var bt=[[1632,1641],[1776,1785],[2406,2415],[2534,2543],[3664,3673]],Je=[...bt];function gt(t){if(t.digitBlocks)for(let e of t.digitBlocks)Je.some(([n])=>n===e[0])||Je.push(e);}function B(t){return /[^\u0020-\u007e]/.test(t)?t.replace(/\p{Nd}/gu,e=>{let r=e.codePointAt(0);for(let[i,a]of Je)if(r>=i&&r<=a)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 vt(t,e){return e?!!(/^-0+$/.test(t)||/\.$/.test(t)||/\.\d*0$/.test(t)||/^-?\.\d+$/.test(t)):false}function Ne(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}),a="";if(t.formatOptions?.style==="currency")try{a=i.formatToParts(1).filter(b=>b.type==="currency").map(b=>b.value).join("");}catch{a="";}function u(){return i.getLocaleInfo()}function p(b){let l=u(),o=B(b);a&&(o=o.split(a).join(""));let I=o.match(/^\((.+)\)$/);if(I&&(o=`-${I[1]}`),t.prefix&&o.startsWith(t.prefix)&&(o=o.slice(t.prefix.length)),t.suffix&&o.endsWith(t.suffix)&&(o=o.slice(0,-t.suffix.length)),l.groupingSeparator&&(o=o.split(l.groupingSeparator).join("")),l.decimalSeparator!=="."&&(o=o.split(l.decimalSeparator).join(".")),l.minusSign!=="-"&&(o=o.split(l.minusSign).join("-")),o.includes("\u2212")&&(o=o.split("\u2212").join("-")),o=o.replace(/[^\d.\-]/g,"").trim(),o.includes("-")){let y=o.startsWith("-");o=o.replace(/-/g,""),y&&(o=`-${o}`);}return o}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 o=Number.parseFloat(l);return Number.isFinite(o)?(Object.is(o,-0)&&(o=0),n&&o!==0&&(o=Number((o/100).toPrecision(15))),{value:o,isValid:true,isIntermediate:vt(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=Ct.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[a,u]=Ct.useState(e),p=Ct.useCallback(c=>{let m=typeof c=="function"?c(n?t:a):c;n||u(m),r?.(m);},[n,t,a,r]);return [n?t:a,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 ot(t,e){let n=10**Math.max(at(t),at(e));return Math.round(t*n+e*n)/n}function at(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)),a=e.indexOf("."),u=a===-1?0:r-a-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:a=1,largeStep:u,smallStep:p,allowNegative:c=true,allowDecimal:m=true,maximumFractionDigits:b,minimumFractionDigits:l,fixedDecimalScale:o,clampBehavior:I="blur",prefix:y,suffix:C,allowOutOfRange:L=false,validate:J,onRawChange:G,formatValue:Z}=t,ce=m?l:0,R=m?b:0,H=m?o:false,ie=Ct.useMemo(()=>q({locale:e,formatOptions:r,prefix:y,suffix:C,minimumFractionDigits:ce,maximumFractionDigits:R,fixedDecimalScale:H}),[e,JSON.stringify(r),y,C,ce,R,H]),X=Ct.useMemo(()=>Ne({locale:e,formatOptions:r,allowNegative:c,allowDecimal:m,prefix:y,suffix:C}),[e,JSON.stringify(r),c,m,y,C]),[v,M]=Xe({value:t.value,defaultValue:t.defaultValue??null,onChange:t.onChange}),ee=Ct.useRef(t.value??t.defaultValue??null),w=Ct.useCallback(d=>Z?Z(Object.is(d,-0)?0:d):ie.format(Object.is(d,-0)?0:d),[ie,Z]),Fe=Ct.useMemo(()=>t.defaultValue!=null?w(t.defaultValue):t.value!=null?w(t.value):"",[]),[oe,K]=Ct.useState(Fe),ae=Ct.useRef(Fe),[me,de]=Ct.useState(t.defaultValue!=null?String(t.defaultValue):null),ye=Ct.useCallback(d=>{if(!J)return {validationState:"valid",validationError:null};let T=J(d);return T===false?{validationState:"invalid",validationError:null}:typeof T=="string"?{validationState:"invalid",validationError:T}:{validationState:"valid",validationError:null}},[J]),Se=Ct.useMemo(()=>{let d=t.defaultValue??t.value??null;return ye(d??null)},[]),[Ee,fe]=Ct.useState(Se.validationState),[Te,E]=Ct.useState(Se.validationError),[_e,Ce]=Ct.useState(false),[z,k]=Ct.useState(false),ue=Ct.useRef("input"),V=Ct.useCallback(d=>{ue.current=d;},[]),Re=Ct.useCallback(()=>ue.current,[]),te=t.value,Me=Ct.useRef(te);if(!Object.is(Me.current,te)&&(Me.current=te,!Object.is(te,ee.current))){ee.current=te;let d=Object.is(te,-0)?0:te,T=d!=null&&Number.isFinite(d),h=T?w(d):"";ae.current=h,K(h),de(T?String(d):null);}let Ie=`${e??""}|${JSON.stringify(r??{})}|${y??""}|${C??""}|${ce??""}|${R??""}|${H??""}`,Ve=Ct.useRef(Ie);if(Ve.current!==Ie&&(Ve.current=Ie,v!=null&&Number.isFinite(v)&&!z)){let d=w(v);d!==oe&&(K(d),ae.current=d);}let le=Ct.useCallback(d=>{let{validationState:T,validationError:h}=ye(d);fe(T),E(h);},[ye]),$e=Ct.useCallback((d,T)=>{let h=T!==void 0?T:X.parse(d).value;I==="strict"&&!L&&h!==null&&(n!==void 0&&h<n||i!==void 0&&h>i)||(K(d),ee.current=h,M(h),de(h!==null?d:null),G?.(h!==null?d:null),le(h));},[X,I,L,n,i,M,G,le]),Y=Ct.useCallback(d=>{if(ee.current=d,M(d),d!=null){let T=w(d);K(T),ae.current=T;let h=String(d);de(h),G?.(h);}else K(""),ae.current="",de(null),G?.(null);le(d);},[w,M,G,le]),Ue=Ct.useCallback(()=>{if(v==null){K(""),ae.current="";return}let d=v;I==="blur"&&!L&&(d=Qe(v,n,i)),Object.is(d,-0)&&(d=0);let T=w(d);K(T),ae.current=T;let h=d;if(!Z){let $=X.parse(T).value;$!==null&&Number.isFinite($)&&w($)===T&&(h=$);}h!==v&&(ee.current=h,M(h)),le(h);},[v,I,L,n,i,X,w,Z,M,le]),ne=v!=null&&Number.isFinite(v)?v:null,Ke=u??a*10,ze=p??a*.1,Ye=!t.disabled&&!t.readOnly&&(L||i===void 0||(ne??Number.NEGATIVE_INFINITY)<i),Oe=!t.disabled&&!t.readOnly&&(L||n===void 0||(ne??Number.POSITIVE_INFINITY)>n),rt=Ct.useCallback(d=>{let $=ot(ne??0,d??a),Pe=L?$:Qe($,n,i);Y(Pe);},[ne,a,n,i,L,Y]),Le=Ct.useCallback(d=>{let $=ot(ne??0,-(d??a)),Pe=L?$:Qe($,n,i);Y(Pe);},[ne,a,n,i,L,Y]),He=Ct.useCallback(()=>{i!==void 0&&Y(i);},[i,Y]),qe=Ct.useCallback(()=>{n!==void 0&&Y(n);},[n,Y]);return {inputValue:oe,numberValue:ne,rawValue:me,canIncrement:Ye,canDecrement:Oe,isScrubbing:_e,setIsScrubbing:Ce,isFocused:z,setIsFocused:k,validationState:Ee,validationError:Te,_setLastChangeReason:V,_getLastChangeReason:Re,setInputValue:$e,setNumberValue:Y,commit:Ue,increment:rt,decrement:Le,incrementToMax:He,decrementToMin:qe,options:{...t,step:a,largeStep:Ke,smallStep:ze}}}function ut(t,e){return t>="0"&&t<="9"||t===e.decimalSeparator||t===e.minusSign||t==="-"||t==="."&&e.decimalSeparator!=="."&&e.groupingSeparator!=="."}function St(t,e,r){let n=B(t),i=0;for(let a=0;a<e&&a<n.length;a++)ut(n[a],r)&&i++;return i}function lt(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 ve(t,e,r,n,i){let a=B(t),u=St(a,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=lt(r,n),l=B(r),o=0,I=0;for(let y=0;y<l.length;y++){if(o===u){I=y;break}ut(l[y],n)&&o++,I=y+1;}return u>0&&o<u&&(I=r.length),I=Rt(I,b),I}function Rt(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 ke(t,e={}){let{delay:r=400,interval:n=200,disabled:i=false}=e,a=Ct.useRef(t);Ct.useEffect(()=>{a.current=t;});let u=Ct.useRef(r);Ct.useEffect(()=>{u.current=r;});let p=Ct.useRef(n);Ct.useEffect(()=>{p.current=n;});let c=Ct.useRef(null),m=Ct.useRef(null),b=Ct.useRef(false),l=Ct.useCallback(()=>{b.current=false,c.current!==null&&(clearTimeout(c.current),c.current=null),m.current!==null&&(clearTimeout(m.current),m.current=null);},[]),o=Ct.useCallback(L=>{if(!b.current)return;a.current();let J=Math.max(50,Math.floor(L/2));m.current=setTimeout(()=>{o(J);},L);},[]),I=Ct.useCallback(L=>{i||L.button!==0&&L.pointerType==="mouse"||(a.current(),b.current=true,c.current=setTimeout(()=>{o(p.current);},u.current));},[i,o]),y=Ct.useCallback(L=>{L.preventDefault(),l();},[l]),C=Ct.useCallback(L=>{l();},[l]);return Ct.useEffect(()=>l,[l]),{onPointerDown:I,onPointerUp:y,onPointerLeave:C}}function ct(t){return t.replace(/[.*+?^${}()|[\]\\\-]/g,"\\$&")}function Nt(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 et(t,e,r){let{locale:n,formatOptions:i,minValue:a,maxValue:u,allowNegative:p=true,allowDecimal:c=true,allowMouseWheel:m=false,liveFormat:b=true,prefix:l,suffix:o,name:I,disabled:y,readOnly:C,required:L,onFocus:J,onBlur:G,maximumFractionDigits:Z,minimumFractionDigits:ce,fixedDecimalScale:R,copyBehavior:H="formatted",stepHoldDelay:ie=400,stepHoldInterval:X=200,formatValue:v,parseValue:M}=t,ee=i?.notation,w=b&&ee!=="compact"&&ee!=="scientific"&&ee!=="engineering",{step:Fe=1,largeStep:oe=Fe*10,smallStep:K=Fe*.1}=e.options,ae=Ct.useId(),me=t.id??`raqam-${ae}`,de=`${me}-label`,ye=`${me}-description`,Se=`${me}-error`,Ee=c?ce:0,fe=c?Z:0,Te=c?R:false,E=Ct.useMemo(()=>q({locale:n,formatOptions:i,prefix:l,suffix:o,minimumFractionDigits:Ee,maximumFractionDigits:fe,fixedDecimalScale:Te}),[n,JSON.stringify(i),l,o,Ee,fe,Te]),_e=i?.style==="percent",Ce=c?_e?20:fe:0,z=Ct.useMemo(()=>q({locale:n,formatOptions:i,prefix:l,suffix:o,minimumFractionDigits:0,maximumFractionDigits:Ce,fixedDecimalScale:false}),[n,JSON.stringify(i),l,o,Ce]),k=Ct.useMemo(()=>Ne({locale:n,formatOptions:i,allowNegative:p,allowDecimal:c,prefix:l,suffix:o}),[n,JSON.stringify(i),p,c,l,o]),ue=Ct.useCallback((f,F)=>{let P=E.getLocaleInfo(),g=F.lastIndexOf(P.decimalSeparator);if(g===-1&&P.decimalSeparator!=="."&&P.groupingSeparator!=="."&&(g=F.lastIndexOf(".")),g===-1||!/\d/.test(B(F.slice(0,g))))return null;let S=B(F.slice(g+1)).match(/^\d+/);if(!S)return null;let s=Math.min(S[0].length,fe??20,20);return s===0?null:q({locale:n,formatOptions:i,prefix:l,suffix:o,minimumFractionDigits:s,maximumFractionDigits:s}).format(f)},[E,n,JSON.stringify(i),l,o,fe]),V=Ct.useRef(null);Ct.useLayoutEffect(()=>{V.current!==null&&r.current&&document.activeElement===r.current&&(r.current.setSelectionRange(V.current,V.current),V.current=null);},[e.inputValue,r]),Ct.useEffect(()=>{let f=r.current;if(!f||!m)return;let F=P=>{y||C||document.activeElement===f&&(P.preventDefault(),e._setLastChangeReason("wheel"),P.deltaY<0?e.increment():e.decrement());};return f.addEventListener("wheel",F,{passive:false}),()=>f.removeEventListener("wheel",F)},[m,y,C,e,r]);let Re=Ct.useRef(false),te=Ct.useCallback(()=>{Re.current=true;},[]),Me=Ct.useCallback(f=>{Re.current=false;let F=f.currentTarget.value,P=E.getLocaleInfo(),g=B(F),S;if(M){let s=M(g);s.isIntermediate?S=g:s.value!==null&&v?S=v(s.value):s.value!==null?S=E.format(s.value):S=g,V.current=S.length;}else if(w){let s=k.parse(g);s.isIntermediate?S=Ge(g,P.zero):s.value!==null?S=v?v(s.value):z.format(s.value):S=g===""?"":g,V.current=ve(F,F.length,S,P,"insertCompositionText");}else S=g,V.current=g.length;e._setLastChangeReason("input"),e.setInputValue(S);},[E,z,k,w,e,v,M]),Ie=Ct.useCallback(f=>{let F=f.target.value,P=f.target.selectionStart??F.length,g=f.nativeEvent.inputType,S=E.getLocaleInfo();if(Re.current){e.setInputValue(F);return}let s=B(F);p||(s=s.split("-").join("").split(S.minusSign).join("")),c?S.decimalSeparator!=="."&&S.groupingSeparator!=="."&&(s=s.replace(/\./g,(O,x,N)=>/\d/.test(N[x-1]??"")||/\d/.test(N[x+1]??"")?S.decimalSeparator:".")):s=s.split(".").join("").split(S.decimalSeparator).join("");let D,pe;if(M){let O=M(s);O.isIntermediate?D=s:O.value!==null?D=v?v(O.value):E.format(O.value):s===""?D="":D=s,V.current=D.length;}else if(w){let O=k.parse(s);if(O.isIntermediate)D=(!v&&O.value!==null?ue(O.value,s):null)??Ge(s,S.zero);else if(O.value!==null)if(v)D=v(O.value);else {D=z.format(O.value);let x=k.parse(D).value;pe=x!==null&&Number.isFinite(x)&&z.format(x)===D?x:O.value;}else s===""||!/\d/.test(s)?D="":D=s;v?V.current=D.length:V.current=ve(F,P,D,S,g);}else D=s,V.current=P;e._setLastChangeReason("input"),e.setInputValue(D,pe);},[E,z,k,w,e,v,M,ue]),Ve=Ct.useCallback(f=>{f.preventDefault();let F=f.clipboardData.getData("text/plain");if(!F)return;let P=F.replace(/[€$£¥₹₺₽﷼฿₩¢₦₨₪₫₱]/g,"").trim(),g=B(P);if(!p){let N=E.getLocaleInfo();g=g.split("-").join("").split(N.minusSign).join("");}if(!c){let N=E.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):E.format(N.value);e.setInputValue(A,N.value),V.current=A.length;}return}let S=Nt(g);if(S!==null){let A=i?.style==="percent"?S/100:S,be=v?v(A):E.format(A);e.setInputValue(be,A),V.current=be.length;return}let s=k.parse(g);if(s.value!==null){let N=E.format(s.value);e.setInputValue(N,s.value),V.current=N.length;return}let D=E.getLocaleInfo(),pe=new RegExp(`[^0-9${ct(D.decimalSeparator)}${ct(D.minusSign)}-]`,"g"),O=g.replace(pe,""),x=k.parse(O);if(x.value!==null){let N=E.format(x.value);e.setInputValue(N,x.value),V.current=N.length;}},[k,E,e,v,M]),le=Ct.useCallback(f=>{if(H==="formatted")return;f.preventDefault();let F=String(e.numberValue??"");f.clipboardData.setData("text/plain",F);},[H,e.numberValue]),$e=Ct.useCallback(f=>{if(H==="formatted")return;f.preventDefault();let F=String(e.numberValue??"");f.clipboardData.setData("text/plain",F),e.setInputValue("");},[H,e]),Y=Ct.useCallback(f=>{if(y||C)return;let F=f.key;if(!f.metaKey&&!f.ctrlKey&&!f.altKey&&c){let P=E.getLocaleInfo();if(F===P.decimalSeparator||F==="."&&P.decimalSeparator!=="."&&P.groupingSeparator!=="."){let S=r.current;if(S){let s=S.value.indexOf(P.decimalSeparator);if(s!==-1){f.preventDefault(),S.setSelectionRange(s+1,s+1);return}}}}if(F==="Backspace"&&!f.shiftKey&&!f.altKey&&!f.metaKey&&!f.ctrlKey){let P=r.current;if(P){let g=P.selectionStart??0,S=P.selectionEnd??g,s=P.value,D=E.getLocaleInfo();if(g===S&&g>=2&&s[g-1]===D.groupingSeparator){f.preventDefault();let x=s.slice(0,g-2)+s.slice(g),N=k.parse(x);e._setLastChangeReason("input");let A;N.value!==null?(A=ue(N.value,x)??z.format(N.value),e.setInputValue(A,N.value)):(A=x,e.setInputValue(x)),V.current=ve(x,g-2,A,D,"deleteContentBackward");return}let pe=x=>x!==void 0&&/\p{Nd}/u.test(x),O=x=>x!==void 0&&!pe(x)&&x!==D.decimalSeparator&&x!==D.minusSign&&x!=="-";if(g===S&&g===s.length&&g>=1&&O(s[g-1])){let x=g;for(;x>0&&O(s[x-1]);)x--;if(x>0&&pe(s[x-1])){f.preventDefault();let N=s.slice(0,x-1)+s.slice(x),A=k.parse(N);e._setLastChangeReason("input");let be;A.value!==null&&/\p{Nd}/u.test(N)?(be=ue(A.value,N)??z.format(A.value),e.setInputValue(be,A.value)):(be="",e.setInputValue("")),V.current=ve(N,x-1,be,D,"deleteContentBackward");return}}}}if(F==="ArrowUp"||F==="ArrowDown"){f.preventDefault();let P=F==="ArrowUp"?1:-1;e._setLastChangeReason("keyboard"),f.shiftKey?P>0?e.increment(oe):e.decrement(oe):f.metaKey||f.ctrlKey?P>0?e.increment(K):e.decrement(K):P>0?e.increment():e.decrement();return}if(F==="PageUp"){f.preventDefault(),e._setLastChangeReason("keyboard"),e.increment(oe);return}if(F==="PageDown"){f.preventDefault(),e._setLastChangeReason("keyboard"),e.decrement(oe);return}if(F==="Home"){a!==void 0&&(f.preventDefault(),e._setLastChangeReason("keyboard"),e.decrementToMin());return}if(F==="End"){u!==void 0&&(f.preventDefault(),e._setLastChangeReason("keyboard"),e.incrementToMax());return}if(F==="Enter"){e._setLastChangeReason("blur"),e.commit();return}},[y,C,e,oe,K,a,u,E,z,k,r,c,ue]),Ue=Ct.useCallback(f=>{e.setIsFocused(false),e._setLastChangeReason("blur"),e.commit(),G?.(f);},[e,G]),ne=Ct.useCallback(f=>{e.setIsFocused(true),J?.(f);},[e,J]),Ke=ke(()=>{e._setLastChangeReason("increment"),e.increment();},{delay:ie,interval:X,disabled:y||!e.canIncrement}),ze=ke(()=>{e._setLastChangeReason("decrement"),e.decrement();},{delay:ie,interval:X,disabled:y||!e.canDecrement}),Ye=Ct.useMemo(()=>{if(e.numberValue!=null)return v?v(e.numberValue):E.format(e.numberValue)},[e.numberValue,E,v]),Oe=E.getLocaleInfo(),Le=e.numberValue!==null&&(a!==void 0&&e.numberValue<a||u!==void 0&&e.numberValue>u)||e.validationState==="invalid",He=t["aria-labelledby"]??(t["aria-label"]?void 0:de),qe={id:de,htmlFor:me},d={role:"group","aria-labelledby":He},T={id:me,type:"text",inputMode:"decimal",role:"spinbutton",autoComplete:"off",autoCorrect:"off",spellCheck:false,"aria-label":t["aria-label"],"aria-labelledby":He,"aria-describedby":t["aria-describedby"],"aria-valuenow":e.numberValue??void 0,"aria-valuemin":a,"aria-valuemax":u,"aria-valuetext":Ye,"aria-disabled":y||void 0,"aria-readonly":C||void 0,"aria-required":L||void 0,"aria-invalid":Le?true:void 0,"aria-errormessage":Le&&e.validationError?Se:void 0,disabled:y,readOnly:C,required:L,value:e.inputValue,onChange:Ie,onKeyDown:Y,onBlur:Ue,onFocus:ne,onPaste:Ve,onCopy:H!=="formatted"?le:void 0,onCut:H!=="formatted"?$e:void 0,onCompositionStart:te,onCompositionEnd:Me,style:Oe.isRTL?{direction:"ltr",textAlign:"right",unicodeBidi:"embed"}:void 0,"data-disabled":y?"":void 0,"data-readonly":C?"":void 0,"data-required":L?"":void 0,"data-invalid":Le?"":void 0,"data-rtl":Oe.isRTL?"":void 0},h=I?{type:"hidden",name:I,value:e.numberValue??"","aria-hidden":true}:null,$={type:"button",tabIndex:-1,"aria-label":"Increase",disabled:y||!e.canIncrement,...Ke,"data-disabled":y||!e.canIncrement?"":void 0},Pe={type:"button",tabIndex:-1,"aria-label":"Decrease",disabled:y||!e.canDecrement,...ze,"data-disabled":y||!e.canDecrement?"":void 0};return {labelProps:qe,groupProps:d,inputProps:T,hiddenInputProps:h,incrementButtonProps:$,decrementButtonProps:Pe,descriptionProps:{id:ye},errorMessageProps:{id:Se,role:"alert","aria-live":"polite"}}}function ht(t,e={}){let{locale:r,formatOptions:n,prefix:i,suffix:a,minimumFractionDigits:u,maximumFractionDigits:p,fixedDecimalScale:c}=e,m=Ct.useMemo(()=>q({locale:r,formatOptions:n,prefix:i,suffix:a,minimumFractionDigits:u,maximumFractionDigits:p,fixedDecimalScale:c}),[r,JSON.stringify(n),i,a,u,p,c]);return Ct.useMemo(()=>t==null?"":m.format(t),[t,m])}function tt(t,e={}){let{direction:r="horizontal",pixelSensitivity:n=4}=e,[i,a]=Ct.useState(false),u=Ct.useRef(t);u.current=t;let p=Ct.useRef(r);p.current=r;let c=Ct.useRef(n);c.current=n;let m=Ct.useRef(false),b=Ct.useRef(0),l=Ct.useRef(null),o=Ct.useRef({x:0,y:0}),[I,y]=Ct.useState({x:0,y:0}),C=Ct.useRef(R=>{if(!m.current)return;let H=o.current.x+R.movementX,ie=o.current.y+R.movementY;o.current={x:H,y:ie},y({x:H,y:ie});let X=p.current,v=0;X==="horizontal"?v=R.movementX:X==="vertical"?v=-R.movementY:v=Math.abs(R.movementX)>=Math.abs(R.movementY)?R.movementX:-R.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;}),L=Ct.useRef(()=>{document.pointerLockElement===l.current?(m.current=true,b.current=0,a(true),u.current.setIsScrubbing(true),document.addEventListener("mousemove",C.current)):(m.current=false,b.current=0,document.removeEventListener("mousemove",C.current),a(false),u.current.setIsScrubbing(false));});Ct.useEffect(()=>{let R=L.current;return document.addEventListener("pointerlockchange",R),()=>{document.removeEventListener("pointerlockchange",R),document.removeEventListener("mousemove",C.current);}},[]);let J=Ct.useCallback(R=>{if(u.current.options.disabled||u.current.options.readOnly||R.button!==0)return;let H=R.currentTarget;l.current=H,o.current={x:R.clientX,y:R.clientY},y({x:R.clientX,y:R.clientY}),H.requestPointerLock();},[]),G=Ct.useCallback(R=>{u.current.options.disabled||u.current.options.readOnly||(R.key==="ArrowRight"||R.key==="ArrowUp"?(R.preventDefault(),u.current.increment()):(R.key==="ArrowLeft"||R.key==="ArrowDown")&&(R.preventDefault(),u.current.decrement()));},[]),Z=r==="horizontal"?"ew-resize":r==="vertical"?"ns-resize":"move",ce={role:"slider",tabIndex:t.options.disabled?-1:0,style:{cursor:t.options.disabled?void 0:Z,userSelect:"none",WebkitUserSelect:"none"},"aria-label":"Scrub to change value","data-scrubbing":i?"":void 0,onPointerDown:J,onKeyDown:G};return {isScrubbing:i,scrubAreaProps:ce,virtualCursor:I}}var je=Ct.createContext(null);function j(){let t=Ct.useContext(je);if(!t)throw new Error("[raqam] NumberField sub-components must be used inside <NumberField.Root>.");return t}function se(t,e,r){return e?typeof e=="function"?e(t.props,r):Ct__default.default.cloneElement(e,Object.assign({},t.props,e.props)):t}function Mt(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 Vt=new Set(["className","style","id","tabIndex","title","role","aria-label","data-testid","onClick","onMouseEnter","onMouseLeave"]);function Ot(t){let e={},r={};for(let[n,i]of Object.entries(t))Vt.has(n)||n.startsWith("data-")||n.startsWith("aria-")?r[n]=i:e[n]=i;return {fieldProps:e,divProps:r}}var Ht=Ct.forwardRef(function({children:e,onValueChange:r,onValueCommitted:n,...i},a){let u=Ct.useRef(null),{fieldProps:p,divProps:c}=Ot(i),m=p,b=Ct.useRef(r);b.current=r;let l=Ct.useRef(null),o={...m,onChange:L=>{m.onChange?.(L),b.current&&l.current&&b.current(L,{reason:l.current._getLastChangeReason(),formattedValue:l.current.inputValue});}},I=Ze(o);l.current=I;let y=et(o,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 jsxRuntime.jsx(je.Provider,{value:{state:I,aria:y,inputRef:u,props:o},children:jsxRuntime.jsx("div",{ref:a,...c,...Mt(I,C),children:e})})}),At=Ct.forwardRef(function({render:e,children:r,...n},i){let{aria:a,state:u}=j(),p=jsxRuntime.jsx("label",{ref:i,...a.labelProps,...n,children:r});return se(p,e,u)}),wt=Ct.forwardRef(function({render:e,children:r,...n},i){let{aria:a,state:u}=j(),p=jsxRuntime.jsx("div",{ref:i,...a.groupProps,...n,children:r});return se(p,e,u)}),kt=Ct.forwardRef(function({render:e,...r},n){let{aria:i,state:a,inputRef:u}=j(),p=jsxRuntime.jsx("input",{ref:u,...i.inputProps,...r});return se(p,e,a)}),Bt=Ct.forwardRef(function({render:e,children:r,...n},i){let{aria:a,state:u}=j(),p=jsxRuntime.jsx("button",{ref:i,...a.incrementButtonProps,...n,children:r??"+"});return se(p,e,u)}),jt=Ct.forwardRef(function({render:e,children:r,...n},i){let{aria:a,state:u}=j(),p=jsxRuntime.jsx("button",{ref:i,...a.decrementButtonProps,...n,children:r??"\u2212"});return se(p,e,u)}),_t=function(){let{aria:e}=j();return e.hiddenInputProps?jsxRuntime.jsx("input",{...e.hiddenInputProps}):null},$t=Ct.forwardRef(function({render:e,children:r,direction:n="horizontal",pixelSensitivity:i=4,...a},u){let{state:p}=j(),{scrubAreaProps:c}=tt(p,{direction:n,pixelSensitivity:i}),m=jsxRuntime.jsx("span",{ref:u,...c,...a,children:r});return se(m,e,p)}),Ut=Ct.forwardRef(function({render:e,children:r,style:n,...i},a){let{state:u}=j();if(!u.isScrubbing)return null;let p=jsxRuntime.jsx("span",{ref:a,style:{position:"fixed",pointerEvents:"none",zIndex:9999,...n},...i,children:r});return se(p,e,u)}),Kt=Ct.forwardRef(function({children:e,...r},n){let{aria:i}=j();return jsxRuntime.jsx("p",{ref:n,...i.descriptionProps,...r,children:e})}),zt=Ct.forwardRef(function({children:e,...r},n){let{aria:i,state:a}=j(),u=e??a.validationError??null;return u?jsxRuntime.jsx("p",{ref:n,...i.errorMessageProps,...r,children:u}):null}),Yt=Ct.forwardRef(function({render:e,...r},n){let{state:i}=j(),a=jsxRuntime.jsx("span",{ref:n,"aria-hidden":"true",...r,children:i.inputValue});return se(a,e,i)}),qt={Root:Ht,Label:At,Group:wt,Input:kt,Increment:Bt,Decrement:jt,HiddenInput:_t,ScrubArea:$t,ScrubAreaCursor:Ut,Description:Kt,ErrorMessage:zt,Formatted:Yt};var Wt={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})};exports.NumberField=qt;exports.NumberFieldContext=je;exports.computeNewCursorPosition=ve;exports.createFormatter=q;exports.createParser=Ne;exports.getCaretBoundary=lt;exports.normalizeDigits=B;exports.presets=Wt;exports.registerLocale=gt;exports.useControllableState=Xe;exports.useNumberField=et;exports.useNumberFieldContext=j;exports.useNumberFieldFormat=ht;exports.useNumberFieldState=Ze;exports.usePressAndHold=ke;exports.useScrubArea=tt;//# sourceMappingURL=index.cjs.map
2
+ 'use strict';var it=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var it__default=/*#__PURE__*/_interopDefault(it);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=it.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]=it.useState(e),p=it.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=it.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=it.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=it.useRef(t.value??t.defaultValue??null),k=it.useCallback(d=>re?re(Object.is(d,-0)?0:d):ae.format(Object.is(d,-0)?0:d),[ae,re]),ce=it.useMemo(()=>t.defaultValue!=null?k(t.defaultValue):t.value!=null?k(t.value):"",[]),[Fe,B]=it.useState(ce),ee=it.useRef(ce),[je,te]=it.useState(t.defaultValue!=null?String(t.defaultValue):null),be=it.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=it.useMemo(()=>{let d=t.defaultValue??t.value??null;return be(d??null)},[]),[Te,De]=it.useState(Ee.validationState),[me,Ce]=it.useState(Ee.validationError),[T,_e]=it.useState(false),[ye,ne]=it.useState(false),w=it.useRef("input"),fe=it.useCallback(d=>{w.current=d;},[]),V=it.useCallback(()=>w.current,[]),z=t.value,Me=it.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=it.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=it.useCallback(d=>{let{validationState:D,validationError:h}=be(d);De(D),Ce(h);},[be]),$e=it.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=it.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=it.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=it.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=it.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=it.useCallback(()=>{i!==void 0&&Y(i);},[i,Y]),ge=it.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=it.useRef(t);it.useEffect(()=>{o.current=t;});let u=it.useRef(r);it.useEffect(()=>{u.current=r;});let p=it.useRef(n);it.useEffect(()=>{p.current=n;});let c=it.useRef(null),m=it.useRef(null),b=it.useRef(false),l=it.useCallback(()=>{b.current=false,c.current!==null&&(clearTimeout(c.current),c.current=null),m.current!==null&&(clearTimeout(m.current),m.current=null);},[]),a=it.useCallback(P=>{if(!b.current)return;o.current();let G=Math.max(50,Math.floor(P/2));m.current=setTimeout(()=>{a(G);},P);},[]),I=it.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=it.useCallback(P=>{P.preventDefault(),l();},[l]),C=it.useCallback(P=>{l();},[l]);return it.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=it.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=it.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=it.useMemo(()=>q({locale:n,formatOptions:i,prefix:l,suffix:a,minimumFractionDigits:0,maximumFractionDigits:ye,fixedDecimalScale:false}),[n,JSON.stringify(i),l,a,ye]),w=it.useMemo(()=>Pe({locale:n,formatOptions:i,allowNegative:p,allowDecimal:c,prefix:l,suffix:a}),[n,JSON.stringify(i),p,c,l,a]),fe=it.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=it.useRef(null);it.useLayoutEffect(()=>{V.current!==null&&r.current&&document.activeElement===r.current&&(r.current.setSelectionRange(V.current,V.current),V.current=null);},[e.inputValue,r]),it.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=it.useRef(false),Me=it.useCallback(()=>{z.current=true;},[]),Se=it.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=it.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=it.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=it.useCallback(f=>{if(H==="formatted")return;f.preventDefault();let x=String(e.numberValue??"");f.clipboardData.setData("text/plain",x);},[H,e.numberValue]),Y=it.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=it.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=it.useCallback(f=>{e.setIsFocused(false),e._setLastChangeReason("blur");let x=e.commit();Z?.(x,{reason:"blur"}),X?.(f);},[e,X,Z]),Ke=it.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=it.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=it.useRef(0),[d,D]=it.useState(false),h=it.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=it.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 it.useMemo(()=>t==null?"":m.format(t),[t,m])}function nt(t,e={}){let{direction:r="horizontal",pixelSensitivity:n=4}=e,[i,o]=it.useState(false),u=it.useRef(t);u.current=t;let p=it.useRef(r);p.current=r;let c=it.useRef(n);c.current=n;let m=it.useRef(false),b=it.useRef(0),l=it.useRef(null),a=it.useRef({x:0,y:0}),[I,F]=it.useState({x:0,y:0}),C=it.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=it.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));});it.useEffect(()=>{let S=P.current;return document.addEventListener("pointerlockchange",S),()=>{document.removeEventListener("pointerlockchange",S),document.removeEventListener("mousemove",C.current);}},[]);let G=it.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=it.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=it.createContext(null);function $(){let t=it.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__default.default.cloneElement(e,o)}var Bt=Number.parseInt(it__default.default.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=it.forwardRef(function({children:e,onValueChange:r,onValueCommitted:n,...i},o){let u=it.useRef(null),{fieldProps:p,divProps:c}=Kt(i),m=p,b=it.useRef(r);b.current=r;let l=it.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 jsxRuntime.jsx(Be.Provider,{value:{state:I,aria:F,inputRef:u,props:a},children:jsxRuntime.jsx("div",{ref:o,...c,...$t(I,C),children:e})})}),Yt=it.forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:u}=$(),{ref:p,...c}=o.labelProps,m=it__default.default.isValidElement(e)?jt(e):void 0,b=it.useMemo(()=>_t(i,p,m),[i,p,m]),l=jsxRuntime.jsx("label",{ref:b,...c,...n,children:r});return le(l,e,u,b)}),qt=it.forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:u}=$(),p=jsxRuntime.jsx("div",{ref:i,...o.groupProps,...n,children:r});return le(p,e,u)}),Wt=it.forwardRef(function({render:e,...r},n){let{aria:i,state:o,inputRef:u}=$(),p=jsxRuntime.jsx("input",{ref:u,...i.inputProps,...r});return le(p,e,o)}),Jt=it.forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:u}=$(),p=jsxRuntime.jsx("button",{ref:i,...o.incrementButtonProps,...n,children:r??"+"});return le(p,e,u)}),Gt=it.forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:u}=$(),p=jsxRuntime.jsx("button",{ref:i,...o.decrementButtonProps,...n,children:r??"\u2212"});return le(p,e,u)}),Xt=function(){let{aria:e}=$();return e.hiddenInputProps?jsxRuntime.jsx("input",{...e.hiddenInputProps}):null},Qt=it.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=jsxRuntime.jsx("span",{ref:u,...c,...o,children:r});return le(m,e,p)}),Zt=it.forwardRef(function({render:e,children:r,style:n,...i},o){let{state:u}=$();if(!u.isScrubbing)return null;let p=jsxRuntime.jsx("span",{ref:o,style:{position:"fixed",pointerEvents:"none",zIndex:9999,...n},...i,children:r});return le(p,e,u)}),en=it.forwardRef(function({children:e,...r},n){let{aria:i}=$();return jsxRuntime.jsx("p",{ref:n,...i.descriptionProps,...r,children:e})}),tn=it.forwardRef(function({children:e,...r},n){let{aria:i,state:o}=$(),u=e??o.validationError??null;return u?jsxRuntime.jsx("p",{ref:n,...i.errorMessageProps,...r,children:u}):null}),nn=it.forwardRef(function({render:e,...r},n){let{state:i}=$(),o=jsxRuntime.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})};exports.NumberField=rn;exports.NumberFieldContext=Be;exports.computeNewCursorPosition=xe;exports.createFormatter=q;exports.createParser=Pe;exports.getCaretBoundary=ct;exports.normalizeDigits=_;exports.presets=on;exports.registerLocale=St;exports.useControllableState=Xe;exports.useNumberField=tt;exports.useNumberFieldContext=$;exports.useNumberFieldFormat=Ot;exports.useNumberFieldState=Ze;exports.usePressAndHold=we;exports.useScrubArea=nt;//# sourceMappingURL=index.cjs.map
3
3
  //# sourceMappingURL=index.cjs.map