raqam 0.2.6 → 0.3.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 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,6 +191,16 @@ 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
206
  labelProps: React.LabelHTMLAttributes<HTMLLabelElement>;
@@ -216,10 +226,6 @@ interface NumberFieldRootProps extends UseNumberFieldProps {
216
226
  formattedValue: string;
217
227
  event?: React.SyntheticEvent;
218
228
  }) => void;
219
- /** Fires only on commit (blur, Enter) */
220
- onValueCommitted?: (value: number | null, details: {
221
- reason: "blur" | "keyboard";
222
- }) => void;
223
229
  }
224
230
 
225
231
  /**
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,6 +191,16 @@ 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
206
  labelProps: React.LabelHTMLAttributes<HTMLLabelElement>;
@@ -216,10 +226,6 @@ interface NumberFieldRootProps extends UseNumberFieldProps {
216
226
  formattedValue: string;
217
227
  event?: React.SyntheticEvent;
218
228
  }) => void;
219
- /** Fires only on commit (blur, Enter) */
220
- onValueCommitted?: (value: number | null, details: {
221
- reason: "blur" | "keyboard";
222
- }) => void;
223
229
  }
224
230
 
225
231
  /**
@@ -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,6 +195,16 @@ 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
210
  labelProps: React.LabelHTMLAttributes<HTMLLabelElement>;
@@ -239,10 +249,6 @@ interface NumberFieldRootProps extends UseNumberFieldProps {
239
249
  formattedValue: string;
240
250
  event?: React.SyntheticEvent;
241
251
  }) => void;
242
- /** Fires only on commit (blur, Enter) */
243
- onValueCommitted?: (value: number | null, details: {
244
- reason: "blur" | "keyboard";
245
- }) => void;
246
252
  }
247
253
 
248
254
  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,6 +195,16 @@ 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
210
  labelProps: React.LabelHTMLAttributes<HTMLLabelElement>;
@@ -239,10 +249,6 @@ interface NumberFieldRootProps extends UseNumberFieldProps {
239
249
  formattedValue: string;
240
250
  event?: React.SyntheticEvent;
241
251
  }) => void;
242
- /** Fires only on commit (blur, Enter) */
243
- onValueCommitted?: (value: number | null, details: {
244
- reason: "blur" | "keyboard";
245
- }) => void;
246
252
  }
247
253
 
248
254
  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 Mt=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var Mt__default=/*#__PURE__*/_interopDefault(Mt);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 bt(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=bt(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 gt=[[1632,1641],[1776,1785],[2406,2415],[2534,2543],[3664,3673]],Je=[...gt];function vt(t){if(t.digitBlocks)for(let e of t.digitBlocks)Je.some(([n])=>n===e[0])||Je.push(e);}function j(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 xt(t,e){return e?!!(/^-0+$/.test(t)||/\.$/.test(t)||/\.\d*0$/.test(t)||/^-?\.\d+$/.test(t)):false}function Ie(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=j(b);a&&(o=o.split(a).join(""));let L=o.match(/^\((.+)\)$/);if(L&&(o=`-${L[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:xt(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=Mt.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]=Mt.useState(e),p=Mt.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:L="blur",prefix:y,suffix:C,allowOutOfRange:P=false,validate:J,onRawChange:G,formatValue:re}=t,se=m?l:0,R=m?b:0,H=m?o:false,ae=Mt.useMemo(()=>q({locale:e,formatOptions:r,prefix:y,suffix:C,minimumFractionDigits:se,maximumFractionDigits:R,fixedDecimalScale:H}),[e,JSON.stringify(r),y,C,se,R,H]),X=Mt.useMemo(()=>Ie({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}),Q=Mt.useRef(t.value??t.defaultValue??null),k=Mt.useCallback(d=>re?re(Object.is(d,-0)?0:d):ae.format(Object.is(d,-0)?0:d),[ae,re]),ce=Mt.useMemo(()=>t.defaultValue!=null?k(t.defaultValue):t.value!=null?k(t.value):"",[]),[Fe,B]=Mt.useState(ce),Z=Mt.useRef(ce),[je,ee]=Mt.useState(t.defaultValue!=null?String(t.defaultValue):null),be=Mt.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]),he=Mt.useMemo(()=>{let d=t.defaultValue??t.value??null;return be(d??null)},[]),[De,Ee]=Mt.useState(he.validationState),[me,Te]=Mt.useState(he.validationError),[E,_e]=Mt.useState(false),[ye,te]=Mt.useState(false),w=Mt.useRef("input"),de=Mt.useCallback(d=>{w.current=d;},[]),V=Mt.useCallback(()=>w.current,[]),z=t.value,Ce=Mt.useRef(z);if(!Object.is(Ce.current,z)&&(Ce.current=z,!Object.is(z,Q.current))){Q.current=z;let d=Object.is(z,-0)?0:z,T=d!=null&&Number.isFinite(d),h=T?k(d):"";Z.current=h,B(h),ee(T?String(d):null);}let Se=`${e??""}|${JSON.stringify(r??{})}|${y??""}|${C??""}|${se??""}|${R??""}|${H??""}`,Me=Mt.useRef(Se);if(Me.current!==Se&&(Me.current=Se,v!=null&&Number.isFinite(v)&&!ye)){let d=k(v);d!==Fe&&(B(d),Z.current=d);}let ue=Mt.useCallback(d=>{let{validationState:T,validationError:h}=be(d);Ee(T),Te(h);},[be]),$e=Mt.useCallback((d,T)=>{let h=T!==void 0?T:X.parse(d).value;L==="strict"&&!P&&h!==null&&(n!==void 0&&h<n||i!==void 0&&h>i)||(B(d),Q.current=h,M(h),ee(h!==null?d:null),G?.(h!==null?d:null),ue(h));},[X,L,P,n,i,M,G,ue]),Y=Mt.useCallback(d=>{if(Q.current=d,M(d),d!=null){let T=k(d);B(T),Z.current=T;let h=String(d);ee(h),G?.(h);}else B(""),Z.current="",ee(null),G?.(null);ue(d);},[k,M,G,ue]),Ue=Mt.useCallback(()=>{if(v==null)return B(""),Z.current="",null;let d=v;L==="blur"&&!P&&(d=Qe(v,n,i)),Object.is(d,-0)&&(d=0);let T=k(d);B(T),Z.current=T;let h=d;if(!re){let U=X.parse(T).value;U!==null&&Number.isFinite(U)&&k(U)===T&&(h=U);}return h!==v&&(Q.current=h,M(h)),ue(h),h},[v,L,P,n,i,X,k,re,M,ue]),ie=v!=null&&Number.isFinite(v)?v:null,Ke=u??a*10,ze=p??a*.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),Ve=Mt.useCallback(d=>{let U=ot(ie??0,d??a),Le=P?U:Qe(U,n,i);Y(Le);},[ie,a,n,i,P,Y]),rt=Mt.useCallback(d=>{let U=ot(ie??0,-(d??a)),Le=P?U:Qe(U,n,i);Y(Le);},[ie,a,n,i,P,Y]),Re=Mt.useCallback(()=>{i!==void 0&&Y(i);},[i,Y]),Oe=Mt.useCallback(()=>{n!==void 0&&Y(n);},[n,Y]);return {inputValue:Fe,numberValue:ie,rawValue:je,canIncrement:Ye,canDecrement:qe,isScrubbing:E,setIsScrubbing:_e,isFocused:ye,setIsFocused:te,validationState:De,validationError:me,_setLastChangeReason:de,_getLastChangeReason:V,setInputValue:$e,setNumberValue:Y,commit:Ue,increment:Ve,decrement:rt,incrementToMax:Re,decrementToMin:Oe,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 Rt(t,e,r){let n=j(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=j(t),u=Rt(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=j(r),o=0,L=0;for(let y=0;y<l.length;y++){if(o===u){L=y;break}ut(l[y],n)&&o++,L=y+1;}return u>0&&o<u&&(L=r.length),L=Lt(L,b),L}function Lt(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,a=Mt.useRef(t);Mt.useEffect(()=>{a.current=t;});let u=Mt.useRef(r);Mt.useEffect(()=>{u.current=r;});let p=Mt.useRef(n);Mt.useEffect(()=>{p.current=n;});let c=Mt.useRef(null),m=Mt.useRef(null),b=Mt.useRef(false),l=Mt.useCallback(()=>{b.current=false,c.current!==null&&(clearTimeout(c.current),c.current=null),m.current!==null&&(clearTimeout(m.current),m.current=null);},[]),o=Mt.useCallback(P=>{if(!b.current)return;a.current();let J=Math.max(50,Math.floor(P/2));m.current=setTimeout(()=>{o(J);},P);},[]),L=Mt.useCallback(P=>{i||P.button!==0&&P.pointerType==="mouse"||(a.current(),b.current=true,c.current=setTimeout(()=>{o(p.current);},u.current));},[i,o]),y=Mt.useCallback(P=>{P.preventDefault(),l();},[l]),C=Mt.useCallback(P=>{l();},[l]);return Mt.useEffect(()=>l,[l]),{onPointerDown:L,onPointerUp:y,onPointerLeave:C}}function ct(t){return t.replace(/[.*+?^${}()|[\]\\\-]/g,"\\$&")}function ht(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:L,disabled:y,readOnly:C,required:P,onFocus:J,onBlur:G,maximumFractionDigits:re,minimumFractionDigits:se,fixedDecimalScale:R,copyBehavior:H="formatted",stepHoldDelay:ae=400,stepHoldInterval:X=200,formatValue:v,parseValue:M,onValueCommitted:Q}=t,k=i?.notation,ce=b&&k!=="compact"&&k!=="scientific"&&k!=="engineering",{step:Fe=1,largeStep:B=Fe*10,smallStep:Z=Fe*.1}=e.options,je=Mt.useId(),ee=t.id??`raqam-${je}`,be=`${ee}-label`,he=`${ee}-description`,De=`${ee}-error`,Ee=c?se:0,me=c?re:0,Te=c?R:false,E=Mt.useMemo(()=>q({locale:n,formatOptions:i,prefix:l,suffix:o,minimumFractionDigits:Ee,maximumFractionDigits:me,fixedDecimalScale:Te}),[n,JSON.stringify(i),l,o,Ee,me,Te]),_e=i?.style==="percent",ye=c?_e?20:me:0,te=Mt.useMemo(()=>q({locale:n,formatOptions:i,prefix:l,suffix:o,minimumFractionDigits:0,maximumFractionDigits:ye,fixedDecimalScale:false}),[n,JSON.stringify(i),l,o,ye]),w=Mt.useMemo(()=>Ie({locale:n,formatOptions:i,allowNegative:p,allowDecimal:c,prefix:l,suffix:o}),[n,JSON.stringify(i),p,c,l,o]),de=Mt.useCallback((f,x)=>{let I=E.getLocaleInfo(),g=x.lastIndexOf(I.decimalSeparator);if(g===-1&&I.decimalSeparator!=="."&&I.groupingSeparator!=="."&&(g=x.lastIndexOf(".")),g===-1||!/\d/.test(j(x.slice(0,g))))return null;let S=j(x.slice(g+1)).match(/^\d+/);if(!S)return null;let s=Math.min(S[0].length,me??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,me]),V=Mt.useRef(null);Mt.useLayoutEffect(()=>{V.current!==null&&r.current&&document.activeElement===r.current&&(r.current.setSelectionRange(V.current,V.current),V.current=null);},[e.inputValue,r]),Mt.useEffect(()=>{let f=r.current;if(!f||!m)return;let x=I=>{y||C||document.activeElement===f&&(I.preventDefault(),e._setLastChangeReason("wheel"),I.deltaY<0?e.increment():e.decrement());};return f.addEventListener("wheel",x,{passive:false}),()=>f.removeEventListener("wheel",x)},[m,y,C,e,r]);let z=Mt.useRef(false),Ce=Mt.useCallback(()=>{z.current=true;},[]),Se=Mt.useCallback(f=>{z.current=false;let x=f.currentTarget.value,I=E.getLocaleInfo(),g=j(x),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(ce){let s=w.parse(g);s.isIntermediate?S=Ge(g,I.zero):s.value!==null?S=v?v(s.value):te.format(s.value):S=g===""?"":g,V.current=ve(x,x.length,S,I,"insertCompositionText");}else S=g,V.current=g.length;e._setLastChangeReason("input"),e.setInputValue(S);},[E,te,w,ce,e,v,M]),Me=Mt.useCallback(f=>{let x=f.target.value,I=f.target.selectionStart??x.length,g=f.nativeEvent.inputType,S=E.getLocaleInfo();if(z.current){e.setInputValue(x);return}let s=j(x);p||(s=s.split("-").join("").split(S.minusSign).join("")),c?S.decimalSeparator!=="."&&S.groupingSeparator!=="."&&(s=s.replace(/\./g,(O,F,N)=>/\d/.test(N[F-1]??"")||/\d/.test(N[F+1]??"")?S.decimalSeparator:".")):s=s.split(".").join("").split(S.decimalSeparator).join("");let D,fe;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(ce){let O=w.parse(s);if(O.isIntermediate)D=(!v&&O.value!==null?de(O.value,s):null)??Ge(s,S.zero);else if(O.value!==null)if(v)D=v(O.value);else {D=te.format(O.value);let F=w.parse(D).value;fe=F!==null&&Number.isFinite(F)&&te.format(F)===D?F:O.value;}else s===""||!/\d/.test(s)?D="":D=s;v?V.current=D.length:V.current=ve(x,I,D,S,g);}else D=s,V.current=I;e._setLastChangeReason(D===""?"clear":"input"),e.setInputValue(D,fe);},[E,te,w,ce,e,v,M,de]),ue=Mt.useCallback(f=>{f.preventDefault();let x=f.clipboardData.getData("text/plain");if(!x)return;let I=x.replace(/[€$£¥₹₺₽﷼฿₩¢₦₨₪₫₱]/g,"").trim(),g=j(I);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=ht(g);if(S!==null){let A=i?.style==="percent"?S/100:S,pe=v?v(A):E.format(A);e.setInputValue(pe,A),V.current=pe.length;return}let s=w.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(),fe=new RegExp(`[^0-9${ct(D.decimalSeparator)}${ct(D.minusSign)}-]`,"g"),O=g.replace(fe,""),F=w.parse(O);if(F.value!==null){let N=E.format(F.value);e.setInputValue(N,F.value),V.current=N.length;}},[w,E,e,v,M]),$e=Mt.useCallback(f=>{if(H==="formatted")return;f.preventDefault();let x=String(e.numberValue??"");f.clipboardData.setData("text/plain",x);},[H,e.numberValue]),Y=Mt.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=Mt.useCallback(f=>{if(y||C)return;let x=f.key;if(!f.metaKey&&!f.ctrlKey&&!f.altKey&&c){let I=E.getLocaleInfo();if(x===I.decimalSeparator||x==="."&&I.decimalSeparator!=="."&&I.groupingSeparator!=="."){let S=r.current;if(S){let s=S.value.indexOf(I.decimalSeparator);if(s!==-1){f.preventDefault(),S.setSelectionRange(s+1,s+1);return}}}}if(x==="Backspace"&&!f.shiftKey&&!f.altKey&&!f.metaKey&&!f.ctrlKey){let I=r.current;if(I){let g=I.selectionStart??0,S=I.selectionEnd??g,s=I.value,D=E.getLocaleInfo();if(g===S&&g>=2&&s[g-1]===D.groupingSeparator){f.preventDefault();let F=s.slice(0,g-2)+s.slice(g),N=w.parse(F);e._setLastChangeReason("input");let A;N.value!==null?(A=de(N.value,F)??te.format(N.value),e.setInputValue(A,N.value)):(A=F,F===""&&e._setLastChangeReason("clear"),e.setInputValue(F)),V.current=ve(F,g-2,A,D,"deleteContentBackward");return}let fe=F=>F!==void 0&&/\p{Nd}/u.test(F),O=F=>F!==void 0&&!fe(F)&&F!==D.decimalSeparator&&F!==D.minusSign&&F!=="-";if(g===S&&g===s.length&&g>=1&&O(s[g-1])){let F=g;for(;F>0&&O(s[F-1]);)F--;if(F>0&&fe(s[F-1])){f.preventDefault();let N=s.slice(0,F-1)+s.slice(F),A=w.parse(N);e._setLastChangeReason("input");let pe;A.value!==null&&/\p{Nd}/u.test(N)?(pe=de(A.value,N)??te.format(A.value),e.setInputValue(pe,A.value)):(pe="",e._setLastChangeReason("clear"),e.setInputValue("")),V.current=ve(N,F-1,pe,D,"deleteContentBackward");return}}}}if(x==="ArrowUp"||x==="ArrowDown"){f.preventDefault();let I=x==="ArrowUp"?1:-1;e._setLastChangeReason("keyboard"),f.shiftKey?I>0?e.increment(B):e.decrement(B):f.metaKey||f.ctrlKey?I>0?e.increment(Z):e.decrement(Z):I>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"){a!==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 I=e.commit();Q?.(I,{reason:"keyboard"});return}},[y,C,e,B,Z,a,u,E,te,w,r,c,de,Q]),ie=Mt.useCallback(f=>{e.setIsFocused(false),e._setLastChangeReason("blur");let x=e.commit();Q?.(x,{reason:"blur"}),G?.(f);},[e,G,Q]),Ke=Mt.useCallback(f=>{e.setIsFocused(true),J?.(f);},[e,J]),ze=we(()=>{e._setLastChangeReason("increment"),e.increment();},{delay:ae,interval:X,disabled:y||!e.canIncrement}),Ye=we(()=>{e._setLastChangeReason("decrement"),e.decrement();},{delay:ae,interval:X,disabled:y||!e.canDecrement}),qe=Mt.useMemo(()=>{if(e.numberValue!=null)return v?v(e.numberValue):E.format(e.numberValue)},[e.numberValue,E,v]),Ve=E.getLocaleInfo(),Re=e.numberValue!==null&&(a!==void 0&&e.numberValue<a||u!==void 0&&e.numberValue>u)||e.validationState==="invalid",Oe=t["aria-labelledby"]??(t["aria-label"]?void 0:be),d={id:be,htmlFor:ee},T={role:"group","aria-labelledby":Oe},h={id:ee,type:"text",inputMode:"decimal",role:"spinbutton",autoComplete:"off",autoCorrect:"off",spellCheck:false,"aria-label":t["aria-label"],"aria-labelledby":Oe,"aria-describedby":t["aria-describedby"],"aria-valuenow":e.numberValue??void 0,"aria-valuemin":a,"aria-valuemax":u,"aria-valuetext":qe,"aria-disabled":y||void 0,"aria-readonly":C||void 0,"aria-required":P||void 0,"aria-invalid":Re?true:void 0,"aria-errormessage":Re&&e.validationError?De:void 0,disabled:y,readOnly:C,required:P,value:e.inputValue,onChange:Me,onKeyDown:Ue,onBlur:ie,onFocus:Ke,onPaste:ue,onCopy:H!=="formatted"?$e:void 0,onCut:H!=="formatted"?Y:void 0,onCompositionStart:Ce,onCompositionEnd:Se,style:Ve.isRTL?{direction:"ltr",textAlign:"right",unicodeBidi:"embed"}:void 0,"data-disabled":y?"":void 0,"data-readonly":C?"":void 0,"data-required":P?"":void 0,"data-invalid":Re?"":void 0,"data-rtl":Ve.isRTL?"":void 0},U=L?{type:"hidden",name:L,value:e.numberValue??"","aria-hidden":true}:null,Le={type:"button",tabIndex:-1,"aria-label":"Increase",disabled:y||!e.canIncrement,...ze,"data-disabled":y||!e.canIncrement?"":void 0},pt={type:"button",tabIndex:-1,"aria-label":"Decrease",disabled:y||!e.canDecrement,...Ye,"data-disabled":y||!e.canDecrement?"":void 0};return {labelProps:d,groupProps:T,inputProps:h,hiddenInputProps:U,incrementButtonProps:Le,decrementButtonProps:pt,descriptionProps:{id:he},errorMessageProps:{id:De,role:"alert","aria-live":"polite"}}}function Dt(t,e={}){let{locale:r,formatOptions:n,prefix:i,suffix:a,minimumFractionDigits:u,maximumFractionDigits:p,fixedDecimalScale:c}=e,m=Mt.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 Mt.useMemo(()=>t==null?"":m.format(t),[t,m])}function tt(t,e={}){let{direction:r="horizontal",pixelSensitivity:n=4}=e,[i,a]=Mt.useState(false),u=Mt.useRef(t);u.current=t;let p=Mt.useRef(r);p.current=r;let c=Mt.useRef(n);c.current=n;let m=Mt.useRef(false),b=Mt.useRef(0),l=Mt.useRef(null),o=Mt.useRef({x:0,y:0}),[L,y]=Mt.useState({x:0,y:0}),C=Mt.useRef(R=>{if(!m.current)return;let H=o.current.x+R.movementX,ae=o.current.y+R.movementY;o.current={x:H,y:ae},y({x:H,y:ae});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;}),P=Mt.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));});Mt.useEffect(()=>{let R=P.current;return document.addEventListener("pointerlockchange",R),()=>{document.removeEventListener("pointerlockchange",R),document.removeEventListener("mousemove",C.current);}},[]);let J=Mt.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=Mt.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()));},[]),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:J,onKeyDown:G};return {isScrubbing:i,scrubAreaProps:se,virtualCursor:L}}var Be=Mt.createContext(null);function _(){let t=Mt.useContext(Be);if(!t)throw new Error("[raqam] NumberField sub-components must be used inside <NumberField.Root>.");return t}function le(t,e,r){return e?typeof e=="function"?e(t.props,r):Mt__default.default.cloneElement(e,Object.assign({},t.props,e.props)):t}function Vt(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 Ot=new Set(["className","style","id","tabIndex","title","role","aria-label","data-testid","onClick","onMouseEnter","onMouseLeave"]);function Ht(t){let e={},r={};for(let[n,i]of Object.entries(t))Ot.has(n)||n.startsWith("data-")||n.startsWith("aria-")?r[n]=i:e[n]=i;return {fieldProps:e,divProps:r}}var At=Mt.forwardRef(function({children:e,onValueChange:r,onValueCommitted:n,...i},a){let u=Mt.useRef(null),{fieldProps:p,divProps:c}=Ht(i),m=p,b=Mt.useRef(r);b.current=r;let l=Mt.useRef(null),o={...m,onValueCommitted:n,onChange:P=>{m.onChange?.(P),b.current&&l.current&&b.current(P,{reason:l.current._getLastChangeReason(),formattedValue:l.current.inputValue});}},L=Ze(o);l.current=L;let y=et(o,L,u),C=L.validationState==="invalid"||L.numberValue!==null&&(m.minValue!==void 0&&L.numberValue<m.minValue||m.maxValue!==void 0&&L.numberValue>m.maxValue);return jsxRuntime.jsx(Be.Provider,{value:{state:L,aria:y,inputRef:u,props:o},children:jsxRuntime.jsx("div",{ref:a,...c,...Vt(L,C),children:e})})}),wt=Mt.forwardRef(function({render:e,children:r,...n},i){let{aria:a,state:u}=_(),p=jsxRuntime.jsx("label",{ref:i,...a.labelProps,...n,children:r});return le(p,e,u)}),kt=Mt.forwardRef(function({render:e,children:r,...n},i){let{aria:a,state:u}=_(),p=jsxRuntime.jsx("div",{ref:i,...a.groupProps,...n,children:r});return le(p,e,u)}),Bt=Mt.forwardRef(function({render:e,...r},n){let{aria:i,state:a,inputRef:u}=_(),p=jsxRuntime.jsx("input",{ref:u,...i.inputProps,...r});return le(p,e,a)}),jt=Mt.forwardRef(function({render:e,children:r,...n},i){let{aria:a,state:u}=_(),p=jsxRuntime.jsx("button",{ref:i,...a.incrementButtonProps,...n,children:r??"+"});return le(p,e,u)}),_t=Mt.forwardRef(function({render:e,children:r,...n},i){let{aria:a,state:u}=_(),p=jsxRuntime.jsx("button",{ref:i,...a.decrementButtonProps,...n,children:r??"\u2212"});return le(p,e,u)}),$t=function(){let{aria:e}=_();return e.hiddenInputProps?jsxRuntime.jsx("input",{...e.hiddenInputProps}):null},Ut=Mt.forwardRef(function({render:e,children:r,direction:n="horizontal",pixelSensitivity:i=4,...a},u){let{state:p}=_(),{scrubAreaProps:c}=tt(p,{direction:n,pixelSensitivity:i}),m=jsxRuntime.jsx("span",{ref:u,...c,...a,children:r});return le(m,e,p)}),Kt=Mt.forwardRef(function({render:e,children:r,style:n,...i},a){let{state:u}=_();if(!u.isScrubbing)return null;let p=jsxRuntime.jsx("span",{ref:a,style:{position:"fixed",pointerEvents:"none",zIndex:9999,...n},...i,children:r});return le(p,e,u)}),zt=Mt.forwardRef(function({children:e,...r},n){let{aria:i}=_();return jsxRuntime.jsx("p",{ref:n,...i.descriptionProps,...r,children:e})}),Yt=Mt.forwardRef(function({children:e,...r},n){let{aria:i,state:a}=_(),u=e??a.validationError??null;return u?jsxRuntime.jsx("p",{ref:n,...i.errorMessageProps,...r,children:u}):null}),qt=Mt.forwardRef(function({render:e,...r},n){let{state:i}=_(),a=jsxRuntime.jsx("span",{ref:n,"aria-hidden":"true",...r,children:i.inputValue});return le(a,e,i)}),Wt={Root:At,Label:wt,Group:kt,Input:Bt,Increment:jt,Decrement:_t,HiddenInput:$t,ScrubArea:Ut,ScrubAreaCursor:Kt,Description:zt,ErrorMessage:Yt,Formatted:qt};var Jt={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=Wt;exports.NumberFieldContext=Be;exports.computeNewCursorPosition=ve;exports.createFormatter=q;exports.createParser=Ie;exports.getCaretBoundary=lt;exports.normalizeDigits=j;exports.presets=Jt;exports.registerLocale=vt;exports.useControllableState=Xe;exports.useNumberField=et;exports.useNumberFieldContext=_;exports.useNumberFieldFormat=Dt;exports.useNumberFieldState=Ze;exports.usePressAndHold=we;exports.useScrubArea=tt;//# sourceMappingURL=index.cjs.map
3
3
  //# sourceMappingURL=index.cjs.map