@primereact/headless 11.0.0-alpha.4 → 11.0.0-alpha.6

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.
Files changed (73) hide show
  1. package/carousel/index.d.ts +2 -0
  2. package/carousel/index.mjs +2 -0
  3. package/carousel/index.mjs.map +1 -0
  4. package/carousel/useCarousel.d.ts +23 -0
  5. package/carousel/useCarousel.props.d.ts +2 -0
  6. package/carousel/useCarousel.test.d.ts +0 -0
  7. package/fluid/index.d.ts +2 -0
  8. package/fluid/index.mjs +2 -0
  9. package/fluid/index.mjs.map +1 -0
  10. package/fluid/useFluid.d.ts +1 -0
  11. package/fluid/useFluid.props.d.ts +2 -0
  12. package/fluid/useFluid.test.d.ts +0 -0
  13. package/iconfield/index.d.ts +2 -0
  14. package/iconfield/index.mjs +2 -0
  15. package/iconfield/index.mjs.map +1 -0
  16. package/iconfield/useIconField.d.ts +1 -0
  17. package/iconfield/useIconField.props.d.ts +2 -0
  18. package/iconfield/useIconField.test.d.ts +0 -0
  19. package/inputgroup/index.d.ts +2 -0
  20. package/inputgroup/index.mjs +2 -0
  21. package/inputgroup/index.mjs.map +1 -0
  22. package/inputgroup/useInputGroup.d.ts +1 -0
  23. package/inputgroup/useInputGroup.props.d.ts +2 -0
  24. package/inputgroup/useInputGroup.test.d.ts +0 -0
  25. package/inputnumber/index.d.ts +2 -0
  26. package/inputnumber/index.mjs +2 -0
  27. package/inputnumber/index.mjs.map +1 -0
  28. package/inputnumber/useInputNumber.d.ts +24 -0
  29. package/inputnumber/useInputNumber.props.d.ts +2 -0
  30. package/inputnumber/useInputNumber.test.d.ts +0 -0
  31. package/knob/index.d.ts +2 -0
  32. package/knob/index.mjs +2 -0
  33. package/knob/index.mjs.map +1 -0
  34. package/knob/useKnob.d.ts +17 -0
  35. package/knob/useKnob.props.d.ts +2 -0
  36. package/knob/useKnob.test.d.ts +0 -0
  37. package/package.json +4 -4
  38. package/paginator/index.d.ts +2 -0
  39. package/paginator/index.mjs +2 -0
  40. package/paginator/index.mjs.map +1 -0
  41. package/paginator/usePaginator.d.ts +19 -0
  42. package/paginator/usePaginator.props.d.ts +2 -0
  43. package/paginator/usePaginator.test.d.ts +0 -0
  44. package/speeddial/index.d.ts +2 -0
  45. package/speeddial/index.mjs +2 -0
  46. package/speeddial/index.mjs.map +1 -0
  47. package/speeddial/useSpeedDial.d.ts +45 -0
  48. package/speeddial/useSpeedDial.props.d.ts +2 -0
  49. package/speeddial/useSpeedDial.test.d.ts +0 -0
  50. package/timeline/index.d.ts +2 -0
  51. package/timeline/index.mjs +2 -0
  52. package/timeline/index.mjs.map +1 -0
  53. package/timeline/useTimeline.d.ts +1 -0
  54. package/timeline/useTimeline.props.d.ts +2 -0
  55. package/timeline/useTimeline.test.d.ts +0 -0
  56. package/toast/index.css +2 -0
  57. package/toast/index.css.map +1 -0
  58. package/toast/index.d.ts +2 -0
  59. package/toast/index.mjs +2 -0
  60. package/toast/index.mjs.map +1 -0
  61. package/toast/item/index.css +2 -0
  62. package/toast/item/index.css.map +1 -0
  63. package/toast/item/index.d.ts +2 -0
  64. package/toast/item/index.mjs +2 -0
  65. package/toast/item/index.mjs.map +1 -0
  66. package/toast/item/useToastItem.d.ts +21 -0
  67. package/toast/item/useToastItem.props.d.ts +2 -0
  68. package/toast/item/useToastItem.test.d.ts +0 -0
  69. package/toast/useToast.d.ts +18 -0
  70. package/toast/useToast.props.d.ts +2 -0
  71. package/toast/useToast.test.d.ts +0 -0
  72. package/tooltip/index.mjs +1 -1
  73. package/tooltip/index.mjs.map +1 -1
@@ -0,0 +1,2 @@
1
+ export * from './useCarousel';
2
+ export * from './useCarousel.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as Le}from"@primereact/core/headless";import*as n from"react";var ie={orientation:"horizontal",align:"start",loop:!1,spacing:16,slide:0,onSlideChange:void 0};function Ie(y,O){let R=n.useRef(0),S=n.useRef(null),C=n.useRef(0),T=1e3/60,X=d=>{if(!R.current)return;S.current||(S.current=d,y(),y());let _=d-S.current;for(S.current=d,C.current+=_;C.current>=T;)y(),C.current-=T;let o=C.current/T;O(o),R.current&&(R.current=requestAnimationFrame(X))},$=()=>{R.current||(R.current=requestAnimationFrame(X))},v=()=>{cancelAnimationFrame(R.current),R.current=0,S.current=null,C.current=0};function W(){S.current=null,C.current=0}return n.useEffect(()=>{let d=()=>{document.hidden&&W()};return document.addEventListener("visibilitychange",d),()=>{document.removeEventListener("visibilitychange",d)}},[]),n.useEffect(()=>()=>v(),[]),{start:$,stop:v,reset:W}}var Ae=.5,j=y=>{let O=Math.abs(y),R=20;if(O<=R)return y;let S=O-R,C=80/Ae,T=R+C*S/(S+C);return Math.sign(y)*T},Be=Le({name:"useCarousel",defaultProps:ie,setup({props:y}){let{loop:O,orientation:R,align:S,slide:C,onSlideChange:T}=y,[X,$]=n.useState(!1),[v,W]=n.useState(C||0),[d,_]=n.useState([]),[o,ue]=n.useState(O||!1),[E,ae]=n.useState([]),[u,le]=n.useState([]),[V,fe]=n.useState([]),[M,pe]=n.useState(0),[x,Q]=n.useState(0),[de,me]=n.useState(!1),[he,be]=n.useState(!1),Z=n.useRef([]),U=n.useRef(0),ee=n.useRef(0),a=n.useRef(null),g=n.useRef([]),k=n.useRef(null),Y=n.useRef(null),J=n.useRef(0),A=n.useRef(null),te=n.useRef(0),B=n.useRef(0),K=n.useRef(0),Re=.09,G=Ie(()=>{te.current=B.current;let e=K.current-B.current;if(Math.abs(e)<.5){B.current=K.current,G.stop();return}B.current+=e*Re},e=>{let t=B.current*e+te.current*(1-e);o?se(t):re(t)}),m=n.useMemo(()=>R==="vertical",[R]),b=n.useMemo(()=>-E[E.length-1]+d[M-1],[E,d,M]),{minOffset:z,maxOffset:L}=n.useMemo(()=>o?{minOffset:u[u.length-1]-d[d.length-1],maxOffset:u[0]}:{minOffset:E[E.length-1]+x-d[d.length-1],maxOffset:E[0]},[u,E,d,o,x]),ne=n.useCallback(()=>{if(!g.current||x===0||!a.current||x===0||b===0)return;let e=a.current,t=e.getBoundingClientRect(),r=e[m?"offsetHeight":"offsetWidth"]||0,l=g.current.map(p=>Math.abs((m?t.top:t.left)-((p==null?void 0:p.getBoundingClientRect()[m?"top":"left"])||0))*-1),s=[];for(let p=0;p<g.current.length;p++){let w=g.current[p];if(!w)continue;let D=w.getBoundingClientRect(),N=m?D.height:D.width,i=m?D.top-t.top:D.left-t.left,c=0;if(S==="start"?c=-i:S==="center"?c=-i+(r-N)/2:S==="end"&&(c=-i+(r-N)),o)s.push(c);else{let h=Math.min(0,x-b),I=Math.max(h,Math.min(0,c));s.push(I)}}let f,P=[];s.forEach((p,w)=>{p!==f&&P.push(p),f=s[w]}),ae(l),le(s),fe(P)},[m,S,x,o,b]),H=()=>{if(!a.current)return 0;let e=getComputedStyle(a.current).getPropertyValue(m?"--p-swipe-amount-y":"--p-swipe-amount-x")||"0";return parseFloat(e||"0")||0},re=e=>{a.current&&e!==void 0&&(m?(a.current.style.setProperty("--p-swipe-amount-y",`${e!=null?e:0}px`),a.current.style.setProperty("--p-swipe-amount-x","0px")):(a.current.style.setProperty("--p-swipe-amount-x",`${e!=null?e:0}px`),a.current.style.setProperty("--p-swipe-amount-y","0px")))},se=n.useCallback(e=>{if(b===0||M===0||!a.current)return;let t=e;if(!o)t<z?t=z+j(t-z):t>L&&(t=L+j(t-L));else{for(;t<=z;)t+=b;for(;t>L;)t-=b;t<z?t=z+j(t-z):t>L&&(t=L+j(t-L))}Object.is(t,-0)&&(t=0),re(t),ge()},[m,o,b,M,z,L]),ce=(e,t,r,l)=>{let s=0,f=1/0;return t.forEach((P,p)=>{if(l){let w=[Math.abs(e-P),Math.abs(e-(P+r)),Math.abs(e-(P-r))],D=Math.min(...w);D<f&&(f=D,s=p)}else{let w=Math.abs(e-P);w<f&&(f=w,s=p)}}),s},F=(e,t)=>{let r=e;if(x===0)return;if(!(e===void 0||e<0||e>=M))r=Math.min(e,u.length-1);else if(t!==void 0)r=ce(t,u,b,o);else return;let l=H(),s=r!==void 0?u[r]:t||0;if(o){let p=Z.current.find(w=>w.index===r);p&&(s-=p.target())}let f=0;o&&s<=L&&s>=0&&u[u.length-1]>=l?f=-b-l+s:f=s-l,B.current=l,K.current=l+f,G.start(),W(r),T&&r!==v&&T({value:r})},ge=n.useCallback(()=>{if(!O||!g.current||E.length===0||d.length===0||u.length===0||x===0||M===0)return;let e=Array.from({length:M},(i,c)=>c),t=Array.from({length:M},(i,c)=>M-1-c),r=.5;function l(i,c){return i.reduce((h,I)=>h-d[I],c)}let s=(i,c)=>i.reduce((h,I)=>l(h,c)>0?h.concat([I]):h,[]);function f(i){return E.map((c,h)=>({start:c-d[h]+r+i,end:c+x-r+i}))}function P(i,c,h){let I=f(c);return i.map(q=>{let Ce=h?0:-b,Ee=h?b:0,De=h?"end":"start",oe=I[q][De];return{index:q,loopPoint:oe,target:()=>H()>oe?Ce:Ee}})}let p=()=>{let c=s(t,x);return P(c,b,!1)},w=()=>{let i=x-u[0]-1,c=s(e,i);return P(c,-b,!0)},D=p().concat(w());Z.current=D;let N=D.every(({index:i})=>{let c=e.filter(h=>h!==i);return l(c,x)<=.1});ue(N),N&&D.forEach(i=>{let{target:c}=i,h=c(),I=g.current[i.index];if(I){let q=`translate3d(${m?"0px":`${h}px`}, ${m?`${h}px`:"0px"}, 0px)`;I.style.transform=q}})},[O,R,E,d,u,M,x,b,m]),Se=e=>{e&&!g.current.includes(e)&&g.current.push(e)},ve=()=>{if(!o&&H()>=L)return;G.stop();let e=o?(v-1+u.length)%u.length:Math.max(0,v-1);F(e)},xe=()=>{if(!o&&H()<=z)return;G.stop();let e=o?(v+1)%u.length:Math.min(u.length-1,v+1);F(e)},Pe=e=>{if(e.button===2)return;G.stop(),e.target.setPointerCapture(e.pointerId),$(!0);let t=new Date().getTime();k.current=t,Y.current={x:e.clientX,y:e.clientY},J.current=H(),A.current={time:t,startX:e.clientX,startY:e.clientY,moved:!1}},we=e=>{if(!X||!Y.current||!k.current||!a.current)return;A.current&&(A.current.moved=!0);let t=m?e.clientY-Y.current.y:e.clientX-Y.current.x,r=ee.current;t>r?U.current=1:t<r&&(U.current=-1),ee.current=t;let s=J.current+t;a.current.style.userSelect="none",se(s)},ye=e=>{if(e.target instanceof HTMLElement&&e.target.releasePointerCapture(e.pointerId),!Y.current||!k.current||!a.current){$(!1);return}let t=Date.now()-k.current,r=H()-J.current;if(Math.abs(r/t)>.3&&Math.abs(r)<25)F((v+U.current+M)%M);else{let s=H(),f=ce(s,u,b,o);F(f)}a.current.style.userSelect="",$(!1),Y.current=null,k.current=null,setTimeout(()=>{A.current=null},100)},Me=e=>{if(X){e.preventDefault(),e.stopPropagation();return}if(A.current){let t=Date.now()-A.current.time,r=Math.abs(e.clientX-A.current.startX),l=Math.abs(e.clientY-A.current.startY),s=Math.sqrt(r*r+l*l),f=A.current.moved&&t>150,P=t>500,p=s>25;if(f||P||p){e.preventDefault(),e.stopPropagation();return}}};return n.useEffect(()=>{ne()},[ne]),n.useEffect(()=>{u.length===0||V.length===0||b===0||F(y.slide!==void 0?y.slide:0)},[y.slide,u,V,o,b]),n.useEffect(()=>{o||(me(v===0&&!o),be(v===V.length-1&&!o))},[v,o,V]),n.useEffect(()=>{pe(g.current.length)},[]),n.useEffect(()=>{var t;Q(((t=a.current)==null?void 0:t[m?"offsetHeight":"offsetWidth"])||0);let e=new ResizeObserver(()=>{var r;Q(((r=a.current)==null?void 0:r[m?"offsetHeight":"offsetWidth"])||0)});return a.current&&e.observe(a.current),()=>{e.disconnect()}},[a]),n.useEffect(()=>{g.current=[]},[]),n.useEffect(()=>{if(!g.current)return;let e=new ResizeObserver(t=>{t.forEach(r=>{let l=g.current.findIndex(s=>s===r.target);l!==-1&&_(s=>{let f=[...s];return f[l]=r.contentRect[m?"height":"width"],f})})});return g.current.forEach(t=>{t&&e.observe(t)}),()=>{e.disconnect()}},[m]),n.useLayoutEffect(()=>{var e;(e=g.current)!=null&&e.length&&_(g.current.map(t=>t?m?t.getBoundingClientRect().height:t.getBoundingClientRect().width:0))},[m]),{state:{isSwiping:X,slideSizes:d,canLoop:o,snaps:E,scrollSnaps:u,activeIndex:v,prevDisabled:de,nextDisabled:he,snapPoints:V},handlePrev:ve,handleNext:xe,handlePointerDown:Pe,handlePointerMove:we,handlePointerUp:ye,addSlideRef:Se,slideTo:F,handleClick:Me,carouselRef:a}}});export{ie as defaultProps,Be as useCarousel};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/carousel/useCarousel.ts","../../src/carousel/useCarousel.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultProps } from './useCarousel.props';\n\ntype CarouselAnimation = {\n start: () => void;\n stop: () => void;\n reset: () => void;\n};\n\nfunction useCarouselAnimation(update: () => void, render: (alpha: number) => void): CarouselAnimation {\n const frameId = React.useRef(0);\n const lastTimeStamp = React.useRef<number | null>(null);\n const accTime = React.useRef(0);\n const fixedStep = 1000 / 60;\n\n const animate = (timeStamp: number) => {\n if (!frameId.current) return;\n\n if (!lastTimeStamp.current) {\n lastTimeStamp.current = timeStamp;\n update();\n update();\n }\n\n const timeElapsed = timeStamp - lastTimeStamp.current;\n\n lastTimeStamp.current = timeStamp;\n accTime.current += timeElapsed;\n\n while (accTime.current >= fixedStep) {\n update();\n accTime.current -= fixedStep;\n }\n\n const alpha = accTime.current / fixedStep;\n\n render(alpha);\n\n if (frameId.current) frameId.current = requestAnimationFrame(animate);\n };\n\n const start = () => {\n if (!frameId.current) frameId.current = requestAnimationFrame(animate);\n };\n\n const stop = () => {\n cancelAnimationFrame(frameId.current);\n frameId.current = 0;\n lastTimeStamp.current = null;\n accTime.current = 0;\n };\n\n function reset(): void {\n lastTimeStamp.current = null;\n accTime.current = 0;\n }\n\n React.useEffect(() => {\n const handleVisibilityChange = () => {\n if (document.hidden) {\n reset();\n }\n };\n\n document.addEventListener('visibilitychange', handleVisibilityChange);\n\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n };\n }, []);\n\n React.useEffect(() => {\n return () => stop();\n }, []);\n\n return { start, stop, reset };\n}\n\nconst DAMPENING_FACTOR = 0.5;\n\nconst applyDampening = (delta: number) => {\n const distance = Math.abs(delta);\n\n const threshold = 20;\n\n if (distance <= threshold) {\n return delta;\n }\n\n const overflow = distance - threshold;\n\n const maxStretch = 80 / DAMPENING_FACTOR;\n\n const dampened = threshold + (maxStretch * overflow) / (overflow + maxStretch);\n\n return Math.sign(delta) * dampened;\n};\n\ntype SwipeDirection = 1 | -1 | 0;\ntype LoopPoint = { index: number; loopPoint: number; target: () => number };\n\nexport const useCarousel = withHeadless({\n name: 'useCarousel',\n defaultProps,\n setup({ props }) {\n const { loop, orientation, align, slide, onSlideChange } = props;\n const [isSwiping, setIsSwiping] = React.useState(false);\n const [activeIndex, setActiveIndex] = React.useState(slide || 0);\n const [slideSizes, setSlideSizes] = React.useState<number[]>([]);\n const [canLoop, setCanLoop] = React.useState<boolean>(loop || false);\n const [snaps, setSnaps] = React.useState<number[]>([]);\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\n const [snapPoints, setSnapPoints] = React.useState<number[]>([]);\n const [slidesLength, setSlidesLength] = React.useState<number>(0);\n const [viewSize, setViewSize] = React.useState<number>(0);\n const [prevDisabled, setPrevDisabled] = React.useState<boolean>(false);\n const [nextDisabled, setNextDisabled] = React.useState<boolean>(false);\n\n const loopPointsRef = React.useRef<LoopPoint[]>([]);\n const swipeDirectionRef = React.useRef<SwipeDirection>(0);\n const prevDeltaRef = React.useRef<number>(0);\n const carouselRef = React.useRef<HTMLDivElement>(null);\n const slideRefs = React.useRef<(HTMLDivElement | null)[]>([]);\n const swipeStartTimeRef = React.useRef<number | null>(null);\n const swipeStartPointerRef = React.useRef<{ x: number; y: number } | null>(null);\n const prevSwipeAmountRef = React.useRef<number>(0);\n const recentSwipeRef = React.useRef<{ time: number; startX: number; startY: number; moved: boolean } | null>(null);\n\n const previousPosition = React.useRef(0);\n const position = React.useRef(0);\n const target = React.useRef(0);\n\n const velocity = 0.09;\n\n const update = () => {\n previousPosition.current = position.current;\n\n const delta = target.current - position.current;\n\n if (Math.abs(delta) < 0.5) {\n position.current = target.current;\n animate.stop();\n\n return;\n }\n\n position.current += delta * velocity;\n };\n\n const render = (alpha: number) => {\n const value = position.current * alpha + previousPosition.current * (1 - alpha);\n\n if (canLoop) {\n normalizeSwipeAmount(value);\n } else {\n setSwipeAmount(value);\n }\n };\n\n const animate = useCarouselAnimation(update, render);\n\n const isVertical = React.useMemo(() => orientation === 'vertical', [orientation]);\n const contentSize = React.useMemo(() => -snaps[snaps.length - 1] + slideSizes[slidesLength - 1], [snaps, slideSizes, slidesLength]);\n const { minOffset, maxOffset } = React.useMemo(() => {\n if (!canLoop) {\n return {\n minOffset: snaps[snaps.length - 1] + viewSize - slideSizes[slideSizes.length - 1],\n maxOffset: snaps[0]\n };\n } else {\n return { minOffset: scrollSnaps[scrollSnaps.length - 1] - slideSizes[slideSizes.length - 1], maxOffset: scrollSnaps[0] };\n }\n }, [scrollSnaps, snaps, slideSizes, canLoop, viewSize]);\n\n const calculateSnaps = React.useCallback(() => {\n if (!slideRefs.current || viewSize === 0 || !carouselRef.current || viewSize === 0 || contentSize === 0) return;\n\n const container = carouselRef.current;\n const containerRect = container.getBoundingClientRect();\n const containerSize = container[isVertical ? 'offsetHeight' : 'offsetWidth'] || 0;\n\n const snaps = slideRefs.current.map((slide) => {\n return Math.abs((isVertical ? containerRect.top : containerRect.left) - (slide?.getBoundingClientRect()[isVertical ? 'top' : 'left'] || 0)) * -1;\n });\n\n const scrollSnaps: number[] = [];\n\n for (let i = 0; i < slideRefs.current.length; i++) {\n const slide = slideRefs.current[i];\n\n if (!slide) continue;\n\n const slideRect = slide.getBoundingClientRect();\n const slideSize = isVertical ? slideRect.height : slideRect.width;\n const startOffset = isVertical ? slideRect.top - containerRect.top : slideRect.left - containerRect.left;\n\n let offset = 0;\n\n if (align === 'start') {\n offset = -startOffset;\n } else if (align === 'center') {\n offset = -startOffset + (containerSize - slideSize) / 2;\n } else if (align === 'end') {\n offset = -startOffset + (containerSize - slideSize);\n }\n\n if (canLoop) {\n scrollSnaps.push(offset);\n } else {\n const minClamp = Math.min(0, viewSize - contentSize);\n const clamped = Math.max(minClamp, Math.min(0, offset));\n\n scrollSnaps.push(clamped);\n }\n }\n\n let lastSnap: number | undefined;\n\n const snapPoints: number[] = [];\n\n scrollSnaps.forEach((snap, index) => {\n if (snap !== lastSnap) {\n snapPoints.push(snap);\n }\n\n lastSnap = scrollSnaps[index];\n });\n\n setSnaps(snaps);\n setScrollSnaps(scrollSnaps);\n setSnapPoints(snapPoints);\n }, [isVertical, align, viewSize, canLoop, contentSize]);\n\n const getSwipeAmount = (): number => {\n if (!carouselRef.current) return 0;\n\n const value = getComputedStyle(carouselRef.current).getPropertyValue(isVertical ? '--p-swipe-amount-y' : '--p-swipe-amount-x') || '0';\n\n return parseFloat(value || '0') || 0;\n };\n\n const setSwipeAmount = (amount: number) => {\n if (!carouselRef.current) return;\n\n if (amount === undefined) return;\n\n if (isVertical) {\n carouselRef.current.style.setProperty('--p-swipe-amount-y', `${amount ?? 0}px`);\n carouselRef.current.style.setProperty('--p-swipe-amount-x', `0px`);\n } else {\n carouselRef.current.style.setProperty('--p-swipe-amount-x', `${amount ?? 0}px`);\n carouselRef.current.style.setProperty('--p-swipe-amount-y', `0px`);\n }\n };\n\n const normalizeSwipeAmount = React.useCallback(\n (amount: number) => {\n if (contentSize === 0 || slidesLength === 0 || !carouselRef.current) return;\n\n let computedAmount = amount;\n\n if (!canLoop) {\n if (computedAmount < minOffset) {\n computedAmount = minOffset + applyDampening(computedAmount - minOffset);\n } else if (computedAmount > maxOffset) {\n computedAmount = maxOffset + applyDampening(computedAmount - maxOffset);\n }\n } else {\n while (computedAmount <= minOffset) computedAmount += contentSize;\n while (computedAmount > maxOffset) computedAmount -= contentSize;\n\n if (computedAmount < minOffset) {\n computedAmount = minOffset + applyDampening(computedAmount - minOffset);\n } else if (computedAmount > maxOffset) {\n computedAmount = maxOffset + applyDampening(computedAmount - maxOffset);\n }\n }\n\n if (Object.is(computedAmount, -0)) computedAmount = 0;\n\n setSwipeAmount(computedAmount);\n updateLoopPoints();\n },\n [isVertical, canLoop, contentSize, slidesLength, minOffset, maxOffset]\n );\n\n const findClosestSnapIndex = (currentOffset: number, snaps: number[], contentSize: number, isLoop: boolean) => {\n let closestIndex = 0;\n let minDistance = Infinity;\n\n snaps.forEach((snap, index) => {\n if (isLoop) {\n const distances = [Math.abs(currentOffset - snap), Math.abs(currentOffset - (snap + contentSize)), Math.abs(currentOffset - (snap - contentSize))];\n const distance = Math.min(...distances);\n\n if (distance < minDistance) {\n minDistance = distance;\n closestIndex = index;\n }\n } else {\n const distance = Math.abs(currentOffset - snap);\n\n if (distance < minDistance) {\n minDistance = distance;\n closestIndex = index;\n }\n }\n });\n\n return closestIndex;\n };\n\n const slideTo = (index?: number, offset?: number) => {\n let newIndex: number | undefined = index;\n\n if (viewSize === 0) return;\n\n if (!(index === undefined || index < 0 || index >= slidesLength)) {\n newIndex = Math.min(index, scrollSnaps.length - 1);\n } else if (offset !== undefined) {\n newIndex = findClosestSnapIndex(offset, scrollSnaps, contentSize, canLoop);\n } else {\n return;\n }\n\n const currentOffset = getSwipeAmount();\n let targetOffset = newIndex !== undefined ? scrollSnaps[newIndex] : offset || 0;\n\n if (canLoop) {\n const loopPoints = loopPointsRef.current;\n const relevantLoopPoint = loopPoints.find((point) => point.index === newIndex);\n\n if (relevantLoopPoint) {\n targetOffset -= relevantLoopPoint.target();\n }\n }\n\n let delta = 0;\n\n if (canLoop && targetOffset <= maxOffset && targetOffset >= 0 && scrollSnaps[scrollSnaps.length - 1] >= currentOffset) {\n delta = -contentSize - currentOffset + targetOffset;\n } else {\n delta = targetOffset - currentOffset;\n }\n\n position.current = currentOffset;\n target.current = currentOffset + delta;\n animate.start();\n\n setActiveIndex(newIndex);\n\n if (onSlideChange && newIndex !== activeIndex) {\n onSlideChange({ value: newIndex });\n }\n };\n\n const updateLoopPoints = React.useCallback(() => {\n if (!loop || !slideRefs.current || snaps.length === 0 || slideSizes.length === 0 || scrollSnaps.length === 0 || viewSize === 0 || slidesLength === 0) return;\n\n const ascItems = Array.from({ length: slidesLength }, (_, index) => index);\n const descItems = Array.from({ length: slidesLength }, (_, index) => slidesLength - 1 - index);\n const tolerance = 0.5;\n\n function removeSlideSizes(indexes: number[], from: number): number {\n return indexes.reduce((a: number, i) => {\n return a - slideSizes[i];\n }, from);\n }\n\n const slidesInGap = (indexes: number[], gap: number) => {\n return indexes.reduce((a: number[], i) => {\n const remainingGap = removeSlideSizes(a, gap);\n\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n };\n\n function findSlideBounds(offset: number) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + tolerance + offset,\n end: snap + viewSize - tolerance + offset\n }));\n }\n\n function findLoopPoints(indexes: number[], offset: number, isEndEdge: boolean) {\n const slideBounds = findSlideBounds(offset);\n\n return indexes.map((index) => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n\n return {\n index,\n loopPoint,\n target: () => (getSwipeAmount() > loopPoint ? initial : altered)\n };\n });\n }\n\n const startPoints = () => {\n const gap = viewSize;\n const indexes = slidesInGap(descItems, gap);\n\n return findLoopPoints(indexes, contentSize, false);\n };\n\n const endPoints = () => {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n\n return findLoopPoints(indexes, -contentSize, true);\n };\n\n const loopPoints: LoopPoint[] = startPoints().concat(endPoints());\n\n loopPointsRef.current = loopPoints;\n\n const canLoop = loopPoints.every(({ index }) => {\n const otherIndexes = ascItems.filter((i) => i !== index);\n\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n\n setCanLoop(canLoop);\n\n if (!canLoop) return;\n\n loopPoints.forEach((loopPoint) => {\n const { target } = loopPoint;\n const shiftLocation = target();\n\n // if (shiftLocation === swipeAmount[swipeAxis]) return;\n\n const slide = slideRefs.current[loopPoint.index];\n\n if (slide) {\n const transformValue = `translate3d(${isVertical ? '0px' : `${shiftLocation}px`}, ${isVertical ? `${shiftLocation}px` : '0px'}, 0px)`;\n\n slide.style.transform = transformValue;\n }\n });\n }, [loop, orientation, snaps, slideSizes, scrollSnaps, slidesLength, viewSize, contentSize, isVertical]);\n\n const addSlideRef = (el: HTMLDivElement | null) => {\n if (el && !slideRefs.current.includes(el)) {\n slideRefs.current.push(el);\n }\n };\n\n const handlePrev = () => {\n if (!canLoop && getSwipeAmount() >= maxOffset) return;\n\n animate.stop();\n const prevIndex = canLoop ? (activeIndex - 1 + scrollSnaps.length) % scrollSnaps.length : Math.max(0, activeIndex - 1);\n\n slideTo(prevIndex);\n };\n\n const handleNext = () => {\n if (!canLoop && getSwipeAmount() <= minOffset) return;\n\n animate.stop();\n const nextIndex = canLoop ? (activeIndex + 1) % scrollSnaps.length : Math.min(scrollSnaps.length - 1, activeIndex + 1);\n\n slideTo(nextIndex);\n };\n\n const handlePointerDown = (event: PointerEvent) => {\n if (event.button === 2) return;\n\n animate.stop();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n\n setIsSwiping(true);\n\n const time = new Date().getTime();\n\n swipeStartTimeRef.current = time;\n swipeStartPointerRef.current = { x: event.clientX, y: event.clientY };\n prevSwipeAmountRef.current = getSwipeAmount();\n\n recentSwipeRef.current = {\n time,\n startX: event.clientX,\n startY: event.clientY,\n moved: false\n };\n };\n\n const handlePointerMove = (event: PointerEvent) => {\n if (!isSwiping || !swipeStartPointerRef.current || !swipeStartTimeRef.current || !carouselRef.current) return;\n\n if (recentSwipeRef.current) {\n recentSwipeRef.current.moved = true;\n }\n\n const delta = isVertical ? event.clientY - swipeStartPointerRef.current.y : event.clientX - swipeStartPointerRef.current.x;\n\n const prevDelta = prevDeltaRef.current;\n\n if (delta > prevDelta) {\n swipeDirectionRef.current = 1;\n } else if (delta < prevDelta) {\n swipeDirectionRef.current = -1;\n }\n\n prevDeltaRef.current = delta;\n\n const prevSwipeAmount = prevSwipeAmountRef.current;\n\n const totalOffset = prevSwipeAmount + delta;\n\n carouselRef.current.style.userSelect = 'none';\n normalizeSwipeAmount(totalOffset);\n };\n\n const handlePointerUp = (event: PointerEvent) => {\n if (event.target instanceof HTMLElement) {\n event.target.releasePointerCapture(event.pointerId);\n }\n\n if (!swipeStartPointerRef.current || !swipeStartTimeRef.current || !carouselRef.current) {\n setIsSwiping(false);\n\n return;\n }\n\n const elapsed = Date.now() - swipeStartTimeRef.current;\n const distance = getSwipeAmount() - prevSwipeAmountRef.current;\n const velocity = Math.abs(distance / elapsed);\n\n if (velocity > 0.3 && Math.abs(distance) < 25) {\n slideTo((activeIndex + swipeDirectionRef.current + slidesLength) % slidesLength);\n } else {\n const currentOffset = getSwipeAmount();\n const closestIndex = findClosestSnapIndex(currentOffset, scrollSnaps, contentSize, canLoop);\n\n slideTo(closestIndex);\n }\n\n carouselRef.current.style.userSelect = '';\n setIsSwiping(false);\n swipeStartPointerRef.current = null;\n swipeStartTimeRef.current = null;\n\n setTimeout(() => {\n recentSwipeRef.current = null;\n }, 100);\n };\n\n const handleClick = (event: MouseEvent) => {\n if (isSwiping) {\n event.preventDefault();\n event.stopPropagation();\n\n return;\n }\n\n if (recentSwipeRef.current) {\n const elapsed = Date.now() - recentSwipeRef.current.time;\n const deltaX = Math.abs(event.clientX - recentSwipeRef.current.startX);\n const deltaY = Math.abs(event.clientY - recentSwipeRef.current.startY);\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n const significantMovement = recentSwipeRef.current.moved && elapsed > 150;\n const tooLong = elapsed > 500;\n const tooFar = distance > 25;\n\n if (significantMovement || tooLong || tooFar) {\n event.preventDefault();\n event.stopPropagation();\n\n return;\n }\n }\n };\n\n React.useEffect(() => {\n calculateSnaps();\n }, [calculateSnaps]);\n\n React.useEffect(() => {\n if (scrollSnaps.length === 0 || snapPoints.length === 0 || contentSize === 0) return;\n\n slideTo(props.slide !== undefined ? props.slide : 0);\n }, [props.slide, scrollSnaps, snapPoints, canLoop, contentSize]);\n\n React.useEffect(() => {\n if (canLoop) return;\n\n setPrevDisabled(activeIndex === 0 && !canLoop);\n setNextDisabled(activeIndex === snapPoints.length - 1 && !canLoop);\n }, [activeIndex, canLoop, snapPoints]);\n\n React.useEffect(() => {\n setSlidesLength(slideRefs.current.length);\n }, []);\n\n React.useEffect(() => {\n setViewSize(carouselRef.current?.[isVertical ? 'offsetHeight' : 'offsetWidth'] || 0);\n\n const observer = new ResizeObserver(() => {\n setViewSize(carouselRef.current?.[isVertical ? 'offsetHeight' : 'offsetWidth'] || 0);\n });\n\n if (carouselRef.current) {\n observer.observe(carouselRef.current);\n }\n\n return () => {\n observer.disconnect();\n };\n }, [carouselRef]);\n\n React.useEffect(() => {\n slideRefs.current = [];\n }, []);\n\n React.useEffect(() => {\n if (!slideRefs.current) return;\n\n const observer = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const index = slideRefs.current.findIndex((slide) => slide === entry.target);\n\n if (index === -1) return;\n\n setSlideSizes((prev) => {\n const newSizes = [...prev];\n\n newSizes[index] = entry.contentRect[isVertical ? 'height' : 'width'];\n\n return newSizes;\n });\n });\n });\n\n slideRefs.current.forEach((slideEl) => {\n if (slideEl) observer.observe(slideEl);\n });\n\n return () => {\n observer.disconnect();\n };\n }, [isVertical]);\n\n React.useLayoutEffect(() => {\n if (!slideRefs.current?.length) return;\n\n setSlideSizes(slideRefs.current.map((el) => (el ? (isVertical ? el.getBoundingClientRect().height : el.getBoundingClientRect().width) : 0)));\n }, [isVertical]);\n\n const state = {\n isSwiping,\n slideSizes,\n canLoop,\n snaps,\n scrollSnaps,\n activeIndex,\n prevDisabled,\n nextDisabled,\n snapPoints\n };\n\n return {\n state,\n handlePrev,\n handleNext,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n addSlideRef,\n slideTo,\n handleClick,\n carouselRef\n };\n }\n});\n","import type { useCarouselProps } from '@primereact/types/shared/carousel';\n\nexport const defaultProps: useCarouselProps = {\n orientation: 'horizontal',\n align: 'start',\n loop: false,\n spacing: 16,\n slide: 0,\n onSlideChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","React","defaultProps","useCarouselAnimation","update","render","frameId","lastTimeStamp","accTime","fixedStep","animate","timeStamp","timeElapsed","alpha","start","stop","reset","handleVisibilityChange","DAMPENING_FACTOR","applyDampening","delta","distance","threshold","overflow","maxStretch","dampened","useCarousel","withHeadless","defaultProps","props","loop","orientation","align","slide","onSlideChange","isSwiping","setIsSwiping","activeIndex","setActiveIndex","slideSizes","setSlideSizes","canLoop","setCanLoop","snaps","setSnaps","scrollSnaps","setScrollSnaps","snapPoints","setSnapPoints","slidesLength","setSlidesLength","viewSize","setViewSize","prevDisabled","setPrevDisabled","nextDisabled","setNextDisabled","loopPointsRef","swipeDirectionRef","prevDeltaRef","carouselRef","slideRefs","swipeStartTimeRef","swipeStartPointerRef","prevSwipeAmountRef","recentSwipeRef","previousPosition","position","target","velocity","value","normalizeSwipeAmount","setSwipeAmount","isVertical","contentSize","minOffset","maxOffset","calculateSnaps","container","containerRect","containerSize","i","slideRect","slideSize","startOffset","offset","minClamp","clamped","lastSnap","snap","index","getSwipeAmount","amount","computedAmount","updateLoopPoints","findClosestSnapIndex","currentOffset","isLoop","closestIndex","minDistance","distances","slideTo","newIndex","targetOffset","relevantLoopPoint","point","ascItems","_","descItems","tolerance","removeSlideSizes","indexes","from","a","slidesInGap","gap","findSlideBounds","findLoopPoints","isEndEdge","slideBounds","initial","altered","boundEdge","loopPoint","startPoints","endPoints","loopPoints","otherIndexes","shiftLocation","transformValue","addSlideRef","el","handlePrev","prevIndex","handleNext","nextIndex","handlePointerDown","event","time","handlePointerMove","prevDelta","totalOffset","handlePointerUp","elapsed","handleClick","deltaX","deltaY","significantMovement","tooLong","tooFar","_a","observer","entries","entry","prev","newSizes","slideEl"]}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ export declare const useCarousel: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/carousel").useCarouselProps, unknown, {
3
+ state: {
4
+ isSwiping: boolean;
5
+ slideSizes: number[];
6
+ canLoop: boolean;
7
+ snaps: number[];
8
+ scrollSnaps: number[];
9
+ activeIndex: number;
10
+ prevDisabled: boolean;
11
+ nextDisabled: boolean;
12
+ snapPoints: number[];
13
+ };
14
+ handlePrev: () => void;
15
+ handleNext: () => void;
16
+ handlePointerDown: (event: PointerEvent) => void;
17
+ handlePointerMove: (event: PointerEvent) => void;
18
+ handlePointerUp: (event: PointerEvent) => void;
19
+ addSlideRef: (el: HTMLDivElement | null) => void;
20
+ slideTo: (index?: number, offset?: number) => void;
21
+ handleClick: (event: MouseEvent) => void;
22
+ carouselRef: React.RefObject<HTMLDivElement | null>;
23
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useCarouselProps } from '@primereact/types/shared/carousel';
2
+ export declare const defaultProps: useCarouselProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useFluid';
2
+ export * from './useFluid.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as e}from"@primereact/core/headless";var r={};var s=e({name:"useFluid",defaultProps:r});export{r as defaultProps,s as useFluid};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/fluid/useFluid.ts","../../src/fluid/useFluid.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useFluid.props';\n\nexport const useFluid = withHeadless({\n name: 'useFluid',\n defaultProps\n});\n","import type { useFluidProps } from '@primereact/types/shared/fluid';\n\nexport const defaultProps: useFluidProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAA8B,CAAC,EDCrC,IAAMC,EAAWC,EAAa,CACjC,KAAM,WACN,aAAAC,CACJ,CAAC","names":["withHeadless","defaultProps","useFluid","withHeadless","defaultProps"]}
@@ -0,0 +1 @@
1
+ export declare const useFluid: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/fluid").useFluidProps, unknown, Record<PropertyKey, unknown>>;
@@ -0,0 +1,2 @@
1
+ import type { useFluidProps } from '@primereact/types/shared/fluid';
2
+ export declare const defaultProps: useFluidProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useIconField';
2
+ export * from './useIconField.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as o}from"@primereact/core/headless";var e={};var s=o({name:"useIconField",defaultProps:e});export{e as defaultProps,s as useIconField};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/iconfield/useIconField.ts","../../src/iconfield/useIconField.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useIconField.props';\n\nexport const useIconField = withHeadless({\n name: 'useIconField',\n defaultProps\n});\n","import type { useIconFieldProps } from '@primereact/types/shared/iconfield';\n\nexport const defaultProps: useIconFieldProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAAkC,CAAC,EDCzC,IAAMC,EAAeC,EAAa,CACrC,KAAM,eACN,aAAAC,CACJ,CAAC","names":["withHeadless","defaultProps","useIconField","withHeadless","defaultProps"]}
@@ -0,0 +1 @@
1
+ export declare const useIconField: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/iconfield").useIconFieldProps, unknown, Record<PropertyKey, unknown>>;
@@ -0,0 +1,2 @@
1
+ import type { useIconFieldProps } from '@primereact/types/shared/iconfield';
2
+ export declare const defaultProps: useIconFieldProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useInputGroup';
2
+ export * from './useInputGroup.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as r}from"@primereact/core/headless";var p={};var u=r({name:"useInputGroup",defaultProps:p});export{p as defaultProps,u as useInputGroup};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/inputgroup/useInputGroup.ts","../../src/inputgroup/useInputGroup.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useInputGroup.props';\n\nexport const useInputGroup = withHeadless({\n name: 'useInputGroup',\n defaultProps\n});\n","import type { useInputGroupProps } from '@primereact/types/shared/inputgroup';\n\nexport const defaultProps: useInputGroupProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAAmC,CAAC,EDC1C,IAAMC,EAAgBC,EAAa,CACtC,KAAM,gBACN,aAAAC,CACJ,CAAC","names":["withHeadless","defaultProps","useInputGroup","withHeadless","defaultProps"]}
@@ -0,0 +1 @@
1
+ export declare const useInputGroup: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/inputgroup").useInputGroupProps, unknown, Record<PropertyKey, unknown>>;
@@ -0,0 +1,2 @@
1
+ import type { useInputGroupProps } from '@primereact/types/shared/inputgroup';
2
+ export declare const defaultProps: useInputGroupProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useInputNumber';
2
+ export * from './useInputNumber.props';
@@ -0,0 +1,2 @@
1
+ var ve=Object.defineProperty,Je=Object.defineProperties;var qe=Object.getOwnPropertyDescriptors;var fe=Object.getOwnPropertySymbols;var ze=Object.prototype.hasOwnProperty,Qe=Object.prototype.propertyIsEnumerable;var me=(r,R,x)=>R in r?ve(r,R,{enumerable:!0,configurable:!0,writable:!0,value:x}):r[R]=x,ge=(r,R)=>{for(var x in R||(R={}))ze.call(R,x)&&me(r,x,R[x]);if(fe)for(var x of fe(R))Qe.call(R,x)&&me(r,x,R[x]);return r},de=(r,R)=>Je(r,qe(R));import{withHeadless as Xe}from"@primereact/core/headless";import{useMountEffect as Ye,useUnmountEffect as Ze,useUpdateEffect as X}from"@primereact/hooks";import{clearSelection as en,getSelection as Re,isEmpty as nn,isNotEmpty as Ie}from"@primeuix/utils";import*as d from"react";var Ee={value:void 0,defaultValue:void 0,format:!0,locale:void 0,mode:"decimal",prefix:void 0,suffix:void 0,currency:void 0,currencyDisplay:void 0,useGrouping:!0,minFractionDigits:void 0,maxFractionDigits:void 0,roundingMode:void 0,min:void 0,max:void 0,step:1,allowEmpty:!0,highlightOnFocus:!1,target:void 0,onValueChange:void 0,onChange:void 0};var sn=Xe({name:"useInputNumber",defaultProps:Ee,setup({props:r}){let[R,x]=d.useState(!1),Y=d.useRef(null),j=d.useRef(null),U=d.useRef(null),Z=d.useRef(null),O=d.useRef(null),W=d.useRef(null),P=d.useRef(null),v=d.useRef(null),b=d.useRef(null),E=d.useRef(null),g=d.useRef(null),C=d.useRef(null),s=d.useRef(null),T=d.useRef(null),V=d.useRef(null),K=d.useRef(null),xe={focused:R},J=()=>{var e,n;return{localeMatcher:r.localeMatcher,style:r.mode,currency:r.currency,currencyDisplay:r.currencyDisplay,useGrouping:r.useGrouping,minimumFractionDigits:(e=r.minFractionDigits)!=null?e:void 0,maximumFractionDigits:(n=r.maxFractionDigits)!=null?n:void 0,roundingMode:r.roundingMode}},ee=()=>{Z.current=new Intl.NumberFormat(r.locale,J());let e=[...new Intl.NumberFormat(r.locale,{useGrouping:!1}).format(9876543210)].reverse(),n=new Map(e.map((t,u)=>[t,u]));b.current=new RegExp(`[${e.join("")}]`,"g"),E.current=be(),g.current=ye(),C.current=Me(),s.current=he(),T.current=Te(),V.current=Se(),K.current=t=>n.get(t)},B=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),he=()=>{var n,t;let e=new Intl.NumberFormat(r.locale,de(ge({},J()),{useGrouping:!1}));return new RegExp(`[${e.format(1.1).replace((n=C.current)!=null?n:"","").trim().replace((t=b.current)!=null?t:"","")}]`,"g")},be=()=>{var n;let e=new Intl.NumberFormat(r.locale,{useGrouping:!0});return O.current=e.format(1e6).trim().replace((n=b.current)!=null?n:"","").charAt(0),new RegExp(`[${O.current}]`,"g")},ye=()=>{var n;let e=new Intl.NumberFormat(r.locale,{useGrouping:!1});return new RegExp(`[${e.format(-1).trim().replace((n=b.current)!=null?n:"","")}]`,"g")},Me=()=>{var e,n;if(r.currency){let t=new Intl.NumberFormat(r.locale,{style:"currency",currency:r.currency,currencyDisplay:r.currencyDisplay,minimumFractionDigits:0,maximumFractionDigits:0,roundingMode:r.roundingMode});return new RegExp(`[${t.format(1).replace(/\s/g,"").replace((e=b.current)!=null?e:"","").replace((n=E.current)!=null?n:"","")}]`,"g")}return new RegExp("[]","g")},Se=()=>{if(r.prefix)V.current=new RegExp(B(r.prefix),"g");else{let n=new Intl.NumberFormat(r.locale,{style:r.mode,currency:r.currency,currencyDisplay:r.currencyDisplay}).format(1).split("1")[0];V.current=new RegExp(B(n),"g")}return V.current},Te=()=>{if(r.suffix)T.current=new RegExp(B(r.suffix),"g");else{let n=new Intl.NumberFormat(r.locale,{style:r.mode,currency:r.currency,currencyDisplay:r.currencyDisplay,minimumFractionDigits:0,maximumFractionDigits:0,roundingMode:r.roundingMode}).format(1).split("1")[1];T.current=new RegExp(B(n),"g")}return T.current},p=e=>{if(e!=null){if(typeof e=="string"&&e==="-")return e;if(r.format){let n=new Intl.NumberFormat(r.locale,J()),t=typeof e=="string"?Number(e):e,u=n.format(t);return r.prefix&&(u=r.prefix+u),r.suffix&&(u=u+r.suffix),u}return e.toString()}return""},L=e=>{var t;let n=e.replace(T.current||"","").replace(V.current||"","").trim().replace(/\s/g,"").replace(C.current||"","");if(s.current&&g.current&&b.current){let u=new RegExp(`[${[...new Intl.NumberFormat(r.locale,{useGrouping:!1}).format(9876543210)].reverse().join("")}${new Intl.NumberFormat(r.locale).format(1.1).replace(/[0-9]/g,"")}${new Intl.NumberFormat(r.locale).format(-1).replace(/[0-9]/g,"")}]`,"g");n=((t=n.match(u))==null?void 0:t.join(""))||""}if(E.current&&(n=n.replace(E.current,"")),g.current&&(n=n.replace(g.current,"-")),s.current&&(n=n.replace(s.current,".")),b.current&&K.current&&(n=n.replace(b.current,u=>{let l=K.current?K.current(u):void 0;return l!==void 0?l.toString():""})),n){if(n==="-")return n;let u=+n;return isNaN(u)?null:u}return null},D=()=>{let e=u=>{var l,c,i,o;return u?"tagName"in u&&u.tagName==="INPUT"?u:"inputRef"in u&&((i=(c=(l=u.inputRef)==null?void 0:l.current)==null?void 0:c.elementRef)!=null&&i.current)?u.inputRef.current.elementRef.current:"elementRef"in u&&((o=u.elementRef)!=null&&o.current)?u.elementRef.current:null:null},n=null;r.target&&(n="current"in r.target?r.target.current:r.target);let t=n||Y.current;return e(t)},Le=(e,n)=>{let t=e.toString(),u=n.toString(),l=t.includes(".")?t.split(".")[1].length:0,c=u.includes(".")?u.split(".")[1].length:0,i=Math.max(l,c),o=Math.pow(10,i);return Math.round((e+n)*o)/o},q=(e,n,t)=>{if(r.readOnly)return;let u=n||500;G(),j.current=setTimeout(()=>{q(e,40,t)},u),z(e,t)},z=(e,n)=>{var u;let t=D();if(t){let l=((u=r.step)!=null?u:1)*n,c=L(t.value)||0,i=k(Le(c,l));ae(i,null,"spin",String(c)),N(e,i),ie(e,String(c),i)}},De=(e,n)=>{var t;if(!r.disabled){let u=D();u&&u.focus(),q(e,void 0,(t=n!=null?n:r.step)!=null?t:1),e.preventDefault()}},He=(e,n)=>{var t;if(!r.disabled){let u=D();u&&u.focus(),q(e,void 0,n!=null?n:((t=r.step)!=null?t:1)*-1),e.preventDefault()}},we=()=>{r.disabled||G()},ne=e=>{var n;r.disabled||r.readOnly||(v.current&&(e.target.value=(n=U.current)!=null?n:""),v.current=!1)},Ce=e=>{var S,F,w,a;if(r.readOnly)return;let n=e.target;if(e.altKey||e.ctrlKey||e.metaKey){v.current=!0,U.current=n.value;return}U.current=n.value;let t=(S=n.selectionStart)!=null?S:0,u=(F=n.selectionEnd)!=null?F:0,l=u-t,c=n.value,i=null;switch(e.code||e.key){case"ArrowUp":z(e,1),e.preventDefault();break;case"ArrowDown":z(e,-1),e.preventDefault();break;case"ArrowLeft":if(l>1){let f=H(c.charAt(t))?t+1:t+2;e.target.setSelectionRange(f,f)}else H(c.charAt(t-1))||e.preventDefault();break;case"ArrowRight":if(l>1){let f=u-1;e.target.setSelectionRange(f,f)}else H(c.charAt(t))||e.preventDefault();break;case"Tab":case"Enter":case"NumpadEnter":i=k(L(c)),e.target.value=p(i),e.target.setAttribute("aria-valuenow",i!=null?String(i):""),N(e,i);break;case"Backspace":{if(e.preventDefault(),t===u){t>=c.length&&P.current!==null&&(t=c.length-P.current.length,e.target.setSelectionRange(t,t));let f=c.charAt(t-1),{decimalCharIndex:I,decimalCharIndexWithoutPrefix:y}=re(c);if(H(f)){let h=oe(c);if(E.current&&E.current.test(f))E.current.lastIndex=0,i=c.slice(0,t-2)+c.slice(t-1);else if(s.current&&s.current.test(f))s.current&&(s.current.lastIndex=0),h?e.target.setSelectionRange(t-1,t-1):i=c.slice(0,t-1)+c.slice(t);else if(I>0&&t>I){let m=te()&&(r.minFractionDigits||0)<h?"":"0";i=c.slice(0,t-1)+m+c.slice(t)}else if(y===1){i=c.slice(0,t-1)+"0"+c.slice(t);let m=L(i);i=typeof m=="number"&&m>0?i:""}else i=c.slice(0,t-1)+c.slice(t)}M(e,i,null,"delete-single")}else i=le(c,t,u),M(e,i,null,"delete-range");break}case"Delete":if(e.preventDefault(),t===u){let f=c.charAt(t),{decimalCharIndex:I,decimalCharIndexWithoutPrefix:y}=re(c);if(H(f)){let h=oe(c);if(E.current&&E.current.test(f))E.current.lastIndex=0,i=c.slice(0,t)+c.slice(t+2);else if(s.current&&s.current.test(f))s.current.lastIndex=0,h?e.target.setSelectionRange(t+1,t+1):i=c.slice(0,t)+c.slice(t+1);else if(I>0&&t>I){let m=te()&&(r.minFractionDigits||0)<h?"":"0";i=c.slice(0,t)+m+c.slice(t+1)}else if(y===1){i=c.slice(0,t)+"0"+c.slice(t+1);let m=L(i);i=typeof m=="number"&&m>0?i:""}else i=c.slice(0,t)+c.slice(t+1)}M(e,i,null,"delete-back-single")}else i=le(c,t,u),M(e,i,null,"delete-range");break;case"Home":e.preventDefault(),Ie(r.min)&&N(e,(w=r.min)!=null?w:0);break;case"End":e.preventDefault(),Ie(r.max)&&N(e,(a=r.max)!=null?a:100);break;default:break}},Fe=e=>{if(r.readOnly)return;let n=e.key,t=Ve(n),u=Pe(n);e.code!=="Enter"&&e.preventDefault(),(Number(n)>=0&&Number(n)<=9||u||t)&&ue(e,n,{isDecimalSign:t,isMinusSign:u})},pe=e=>{var t;if(r.readOnly)return;e.preventDefault();let n=(t=e.clipboardData||window.clipboardData)==null?void 0:t.getData("Text");if(n){let u=L(n);u!=null&&ue(e,u.toString())}},Ne=()=>r.min===void 0||r.min===null||r.min<0,Pe=e=>g.current&&g.current.test(e)||e==="-"?(g.current&&(g.current.lastIndex=0),!0):!1,Ve=e=>{var n;return(n=r.locale)!=null&&n.includes("fr")&&[".",","].includes(e)||s.current&&s.current.test(e)?(s.current&&(s.current.lastIndex=0),!0):!1},te=()=>r.mode==="decimal",re=e=>{let n=s.current?e.search(s.current):-1;s.current&&(s.current.lastIndex=0);let t=e.replace(V.current||"","").trim().replace(/\s/g,"").replace(C.current||"",""),u=s.current?t.search(s.current):-1;return s.current&&(s.current.lastIndex=0),{decimalCharIndex:n,decimalCharIndexWithoutPrefix:u}},ke=e=>{let n=i=>{i&&(i.lastIndex=0)},t=s.current?e.search(s.current):-1;n(s.current);let u=g.current?e.search(g.current):-1;n(g.current);let l=T.current?e.search(T.current):-1;n(T.current);let c=C.current?e.search(C.current):-1;return n(C.current),{decimalCharIndex:t,minusCharIndex:u,suffixCharIndex:l,currencyCharIndex:c}},ue=(e,n,t={isDecimalSign:!1,isMinusSign:!1})=>{var f,I,y,h;let u=g.current?n.search(g.current):-1;if(g.current&&(g.current.lastIndex=0),!Ne()&&u!==-1)return;let l=(f=e.target.selectionStart)!=null?f:0,c=(I=e.target.selectionEnd)!=null?I:0,i=e.target.value.trim(),{decimalCharIndex:o,minusCharIndex:S,suffixCharIndex:F,currencyCharIndex:w}=ke(i),a;if(t.isMinusSign){let m=S===-1;(l===0||l===w+1)&&(a=i,(m||c!==0)&&(a=$(i,n,0,c)),M(e,a,n,"insert"))}else if(t.isDecimalSign)o>0&&l===o?M(e,i,n,"insert"):(o>l&&o<c||o===-1&&r.maxFractionDigits)&&(a=$(i,n,l,c),M(e,a,n,"insert"));else{let m=(h=(y=Z.current)==null?void 0:y.resolvedOptions().maximumFractionDigits)!=null?h:0,_=l!==c?"range-insert":"insert";if(o>0&&l>o){if(l+n.length-(o+1)<=m){let A=w>=l?w-1:F>=l?F:i.length;a=i.slice(0,l)+n+i.slice(l+n.length,A)+i.slice(A),M(e,a,n,_)}}else a=$(i,n,l,c),M(e,a,n,_)}},$=(e,n,t,u)=>{var c;if((n==="."?n:n.split(".")).length===2){let i=e.slice(t,u).search((c=s.current)!=null?c:"");return s.current&&(s.current.lastIndex=0),i>0?e.slice(0,t)+p(n)+e.slice(u):p(n)||e}else return u-t===e.length?p(n):t===0?n+e.slice(u):u===e.length?e.slice(0,t)+n:e.slice(0,t)+n+e.slice(u)},le=(e,n,t)=>{let u;return t-n===e.length?u="":n===0?u=e.slice(t):t===e.length?u=e.slice(0,n):u=e.slice(0,n)+e.slice(t),u},Q=()=>{var S;let e=D();if(!e)return 0;let n=e.value,t=(S=e.selectionStart)!=null?S:0,u=n.length,l=null,c=(W.current||"").length;n=n.replace(W.current||"",""),t=t-c;let i=n.charAt(t);if(H(i))return t+c;let o=t-1;for(;o>=0;)if(i=n.charAt(o),H(i)){l=o+c;break}else o--;if(l!==null)e.setSelectionRange&&e.setSelectionRange(l+1,l+1);else{for(o=t;o<u;)if(i=n.charAt(o),H(i)){l=o+c;break}else o++;l!==null&&e.setSelectionRange&&e.setSelectionRange(l,l)}return l||0},Ae=()=>{let e=D();if(!e)return;let n=e.value;!r.readOnly&&n!==Re()&&Q()},H=e=>e.length===1&&(b.current&&b.current.test(e)||s.current&&s.current.test(e)||E.current&&E.current.test(e)||g.current&&g.current.test(e))?(Oe(),!0):!1,Oe=()=>{b.current&&(b.current.lastIndex=0),s.current&&(s.current.lastIndex=0),E.current&&(E.current.lastIndex=0),g.current&&(g.current.lastIndex=0)},ce=()=>{var u,l;let e=(l=(u=r.value)!=null?u:r.defaultValue)!=null?l:null,n=Be(e);se(n);let t=k(e);e!==null&&e!==t&&N(null,t)},M=(e,n,t,u)=>{let l=e.target.value,c=null;n!=null&&(c=L(n),c=!c&&!r.allowEmpty?0:c,ae(c,t,u,n),ie(e,l,c))},Ke=(e,n)=>{if(n===null&&e!==null)return!0;if(n!=null){let t=typeof e=="string"?L(e):e;return n!==t}return!1},ie=(e,n,t)=>{r.onChange&&Ke(n,t)&&r.onChange({originalEvent:e,value:t})},k=e=>e==="-"||e==null?null:r.min!=null&&typeof r.min=="number"&&typeof e=="number"&&e<r.min?r.min:r.max!=null&&typeof r.max=="number"&&typeof e=="number"&&e>r.max?r.max:e,Be=e=>nn(e)?null:r.min!==void 0&&r.min!==null&&e!==null&&e<r.min?r.min:r.max!==void 0&&r.max!==null&&e!==null&&e>r.max?r.max:e,ae=(e,n,t,u)=>{var S,F;n=n||"";let l=D();if(!l)return;let c=l.value,i=p(e),o=c.length;if(i!==u&&(i=Ge(i,u)),o===0){l.value=i,l.setSelectionRange&&l.setSelectionRange(0,0);let a=Q()+n.length;l.setSelectionRange&&l.setSelectionRange(a,a)}else{let w=(S=l.selectionStart)!=null?S:0,a=(F=l.selectionEnd)!=null?F:0;l.value=i;let f=i.length;if(t==="range-insert"){let I=L((c||"").slice(0,w)),h=(I!==null?I.toString():"").split("").join(`(${O.current})?`),m=new RegExp(h,"g");m.test(i);let _=n.split("").join(`(${O.current})?`),A=new RegExp(_,"g");A.test(i.slice(m.lastIndex)),a=m.lastIndex+A.lastIndex,l.setSelectionRange&&l.setSelectionRange(a,a)}else if(f===o)t==="insert"||t==="delete-back-single"?l.setSelectionRange&&l.setSelectionRange(a+1,a+1):t==="delete-single"?l.setSelectionRange&&l.setSelectionRange(a-1,a-1):(t==="delete-range"||t==="spin")&&l.setSelectionRange&&l.setSelectionRange(a,a);else if(t==="delete-back-single"){let I=c.charAt(a-1),y=c.charAt(a),h=o-f,m=E.current?E.current.test(y):!1;m&&h===1?a+=1:!m&&H(I)&&(a+=-1*h+1),E.current&&(E.current.lastIndex=0),l.setSelectionRange&&l.setSelectionRange(a,a)}else if(c==="-"&&t==="insert"){l.setSelectionRange&&l.setSelectionRange(0,0);let y=Q()+n.length+1;l.setSelectionRange&&l.setSelectionRange(y,y)}else a=a+(f-o),l.setSelectionRange&&l.setSelectionRange(a,a)}l.setAttribute("aria-valuenow",String(e))},$e=e=>{var n;return!e&&!r.allowEmpty?(n=r.min)!=null?n:0:e},se=e=>{e=$e(e);let n=D();if(!n)return;let t=n.value,u=p(e);t!==u&&(n.value=u,n.setAttribute("aria-valuenow",String(e)))},Ge=(e,n)=>{if(e&&n){let t=s.current,u=t?n.search(t):-1;if(t&&(t.lastIndex=0),P.current)return u!==-1?e.replace(P.current,"").split(t!=null?t:"")[0]+n.replace(P.current,"").slice(u)+P.current:e;if(W.current)return u!==-1?e.split(t!=null?t:"")[0]+n.slice(u):e}return e},oe=e=>{var n,t,u;if(e){let l=e.split((n=s.current)!=null?n:"");if(l.length===2)return l[1].replace((t=T.current)!=null?t:"","").trim().replace(/\s/g,"").replace((u=C.current)!=null?u:"","").length}return 0},N=(e,n)=>{if(r.onValueChange){let t;e?t=e:t={target:D()},r.onValueChange({originalEvent:t,value:n})}},_e=e=>{x(!0);let n=D();!r.disabled&&!r.readOnly&&(n==null?void 0:n.value)!==Re()&&r.highlightOnFocus&&e.target.select()},je=e=>{x(!1);let n=e.target,t=k(L(n.value));n.value=p(t),n.setAttribute("aria-valuenow",String(t)),N(e,t),!r.disabled&&!r.readOnly&&r.highlightOnFocus&&en()},G=()=>{j.current&&clearInterval(j.current)},Ue=()=>{var e,n;return r.max!==void 0&&((n=(e=r.value)!=null?e:r.defaultValue)!=null?n:0)>=r.max},We=()=>{var e,n;return r.min!==void 0&&((n=(e=r.value)!=null?e:r.defaultValue)!=null?n:0)<=r.min};return Ze(()=>{G()}),Ye(()=>{var u,l;ee();let e=(l=(u=r.value)!=null?u:r.defaultValue)!=null?l:null,n=k(e);se(typeof n=="number"?n:null),e!==null&&e!==n&&N(null,n)}),X(()=>{ee(),ce()},[r.locale,r.localeMatcher,r.mode,r.currency,r.currencyDisplay,r.useGrouping,r.minFractionDigits,r.maxFractionDigits,r.suffix,r.prefix]),X(()=>{ce()},[r.value,r.defaultValue]),X(()=>{r.disabled&&G()},[r.disabled]),{state:xe,inputRef:Y,onChange:ne,onInput:ne,onInputKeyDown:Ce,onInputKeyPress:Fe,onInputClick:Ae,onPaste:pe,onInputFocus:_e,onInputBlur:je,onValueChange:r.onValueChange,maxBoundry:Ue,minBoundry:We,increment:De,decrement:He,stopSpin:we}}});export{Ee as defaultProps,sn as useInputNumber};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/inputnumber/useInputNumber.ts","../../src/inputnumber/useInputNumber.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useMountEffect, useUnmountEffect, useUpdateEffect } from '@primereact/hooks';\nimport { useInputNumberProps } from '@primereact/types/shared/inputnumber';\nimport { clearSelection, getSelection, isEmpty, isNotEmpty } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useInputNumber.props';\n\nexport const useInputNumber = withHeadless({\n name: 'useInputNumber',\n defaultProps,\n setup({ props }) {\n const [focused, setFocused] = React.useState<boolean>(false);\n const inputRef = React.useRef<{ elementRef: React.RefObject<HTMLInputElement> } | null>(null);\n const timer = React.useRef<NodeJS.Timeout | null>(null);\n const lastValue = React.useRef<string | null>(null);\n const numberFormat = React.useRef<Intl.NumberFormat | null>(null);\n const groupChar = React.useRef<string | null>(null);\n const prefixChar = React.useRef<string | null>(null);\n const suffixChar = React.useRef<string | null>(null);\n const isSpecialChar = React.useRef<boolean | null>(null);\n const _numeral = React.useRef<RegExp | null>(null);\n const _group = React.useRef<RegExp | null>(null);\n const _minusSign = React.useRef<RegExp | null>(null);\n const _currency = React.useRef<RegExp | null>(null);\n const _decimal = React.useRef<RegExp | null>(null);\n const _suffix = React.useRef<RegExp | null>(null);\n const _prefix = React.useRef<RegExp | null>(null);\n const _index = React.useRef<((d: string) => number | undefined) | null>(null);\n\n const state = {\n focused\n };\n\n const getOptions = () => {\n return {\n localeMatcher: props.localeMatcher,\n style: props.mode,\n currency: props.currency,\n currencyDisplay: props.currencyDisplay,\n useGrouping: props.useGrouping,\n minimumFractionDigits: props.minFractionDigits ?? undefined,\n maximumFractionDigits: props.maxFractionDigits ?? undefined,\n roundingMode: props.roundingMode\n };\n };\n\n const constructParser = () => {\n numberFormat.current = new Intl.NumberFormat(props.locale, getOptions());\n const numerals = [...new Intl.NumberFormat(props.locale, { useGrouping: false }).format(9876543210)].reverse();\n const index = new Map(numerals.map((d, i) => [d, i]));\n\n _numeral.current = new RegExp(`[${numerals.join('')}]`, 'g');\n _group.current = getGroupingExpression();\n _minusSign.current = getMinusSignExpression();\n _currency.current = getCurrencyExpression();\n _decimal.current = getDecimalExpression();\n _suffix.current = getSuffixExpression();\n _prefix.current = getPrefixExpression();\n _index.current = (d) => index.get(d);\n };\n\n const escapeRegExp = (text: string) => {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n };\n\n const getDecimalExpression = () => {\n const formatter = new Intl.NumberFormat(props.locale, { ...getOptions(), useGrouping: false });\n\n return new RegExp(\n `[${formatter\n .format(1.1)\n .replace(_currency.current ?? '', '')\n .trim()\n .replace(_numeral.current ?? '', '')}]`,\n 'g'\n );\n };\n\n const getGroupingExpression = () => {\n const formatter = new Intl.NumberFormat(props.locale, { useGrouping: true });\n\n groupChar.current = formatter\n .format(1000000)\n .trim()\n .replace(_numeral.current ?? '', '')\n .charAt(0);\n\n return new RegExp(`[${groupChar.current}]`, 'g');\n };\n\n const getMinusSignExpression = () => {\n const formatter = new Intl.NumberFormat(props.locale, { useGrouping: false });\n\n return new RegExp(\n `[${formatter\n .format(-1)\n .trim()\n .replace(_numeral.current ?? '', '')}]`,\n 'g'\n );\n };\n\n const getCurrencyExpression = () => {\n if (props.currency) {\n const formatter = new Intl.NumberFormat(props.locale, { style: 'currency', currency: props.currency, currencyDisplay: props.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: props.roundingMode });\n\n return new RegExp(\n `[${formatter\n .format(1)\n .replace(/\\s/g, '')\n .replace(_numeral.current ?? '', '')\n .replace(_group.current ?? '', '')}]`,\n 'g'\n );\n }\n\n return new RegExp(`[]`, 'g');\n };\n\n const getPrefixExpression = () => {\n if (props.prefix) {\n _prefix.current = new RegExp(escapeRegExp(props.prefix), 'g');\n } else {\n const formatter = new Intl.NumberFormat(props.locale, { style: props.mode, currency: props.currency, currencyDisplay: props.currencyDisplay });\n\n const prefixStr = formatter.format(1).split('1')[0];\n\n _prefix.current = new RegExp(escapeRegExp(prefixStr), 'g');\n }\n\n return _prefix.current;\n };\n\n const getSuffixExpression = () => {\n if (props.suffix) {\n _suffix.current = new RegExp(escapeRegExp(props.suffix), 'g');\n } else {\n const formatter = new Intl.NumberFormat(props.locale, { style: props.mode, currency: props.currency, currencyDisplay: props.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: props.roundingMode });\n\n const suffixStr = formatter.format(1).split('1')[1];\n\n _suffix.current = new RegExp(escapeRegExp(suffixStr), 'g');\n }\n\n return _suffix.current;\n };\n\n const formatValue = (value: number | string | null | undefined) => {\n if (value != null) {\n if (typeof value === 'string' && value === '-') {\n // Minus sign\n return value;\n }\n\n if (props.format) {\n const formatter = new Intl.NumberFormat(props.locale, getOptions());\n const numericValue = typeof value === 'string' ? Number(value) : value;\n let formattedValue = formatter.format(numericValue);\n\n if (props.prefix) {\n formattedValue = props.prefix + formattedValue;\n }\n\n if (props.suffix) {\n formattedValue = formattedValue + props.suffix;\n }\n\n return formattedValue;\n }\n\n return value.toString();\n }\n\n return '';\n };\n\n const parseValue = (text: string) => {\n let cleanText = text\n .replace(_suffix.current || '', '')\n .replace(_prefix.current || '', '')\n .trim()\n .replace(/\\s/g, '')\n .replace(_currency.current || '', '');\n\n if (_decimal.current && _minusSign.current && _numeral.current) {\n const validChars = new RegExp(\n `[${[...new Intl.NumberFormat(props.locale, { useGrouping: false }).format(9876543210)].reverse().join('')}${new Intl.NumberFormat(props.locale).format(1.1).replace(/[0-9]/g, '')}${new Intl.NumberFormat(props.locale)\n .format(-1)\n .replace(/[0-9]/g, '')}]`,\n 'g'\n );\n\n cleanText = cleanText.match(validChars)?.join('') || '';\n }\n\n if (_group.current) {\n cleanText = cleanText.replace(_group.current, '');\n }\n\n if (_minusSign.current) {\n cleanText = cleanText.replace(_minusSign.current, '-');\n }\n\n if (_decimal.current) {\n cleanText = cleanText.replace(_decimal.current, '.');\n }\n\n if (_numeral.current && _index.current) {\n cleanText = cleanText.replace(_numeral.current, (d) => {\n const res = _index.current ? _index.current(d) : undefined;\n\n return res !== undefined ? res.toString() : '';\n });\n }\n\n if (cleanText) {\n if (cleanText === '-') return cleanText;\n\n const parsedValue = +cleanText;\n\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n return null;\n };\n\n const getInputElement = (): HTMLInputElement | null => {\n const extractHTMLInput = (ref: HTMLInputElement | { elementRef?: React.RefObject<HTMLInputElement>; inputRef?: React.RefObject<{ elementRef: React.RefObject<HTMLInputElement> }> } | null): HTMLInputElement | null => {\n if (!ref) return null;\n\n if ('tagName' in ref && ref.tagName === 'INPUT') {\n return ref;\n } else {\n if ('inputRef' in ref && ref.inputRef?.current?.elementRef?.current) {\n return ref.inputRef.current.elementRef.current;\n }\n\n if ('elementRef' in ref && ref.elementRef?.current) {\n return ref.elementRef.current;\n }\n }\n\n return null;\n };\n\n let targetRef = null;\n\n if (props.target) {\n targetRef = 'current' in props.target ? props.target.current : props.target;\n }\n\n const refToUse = targetRef || inputRef.current;\n\n return extractHTMLInput(refToUse);\n };\n\n const addWithPrecision = (base: number, increment: number) => {\n const baseStr = base.toString();\n const stepStr = increment.toString();\n\n const baseDecimalPlaces = baseStr.includes('.') ? baseStr.split('.')[1].length : 0;\n const stepDecimalPlaces = stepStr.includes('.') ? stepStr.split('.')[1].length : 0;\n\n const maxDecimalPlaces = Math.max(baseDecimalPlaces, stepDecimalPlaces);\n const precision = Math.pow(10, maxDecimalPlaces);\n\n return Math.round((base + increment) * precision) / precision;\n };\n\n const repeat = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, interval: number | undefined, dir: number) => {\n if (props.readOnly) {\n return;\n }\n\n const i = interval || 500;\n\n clearTimer();\n timer.current = setTimeout(() => {\n repeat(event, 40, dir);\n }, i);\n\n spin(event, dir);\n };\n\n const spin = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, dir: number) => {\n const inputEl = getInputElement();\n\n if (inputEl) {\n const step = (props.step ?? 1) * dir;\n const currentValue = parseValue(inputEl.value) || 0;\n const newValue = validateValue(addWithPrecision(currentValue as number, step));\n\n updateInput(newValue as number, null, 'spin', String(currentValue));\n updateModel(event, newValue as useInputNumberProps['value']);\n handleOnInput(event, String(currentValue), newValue as number);\n }\n };\n\n const increment = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement>, dir: number) => {\n if (!props.disabled) {\n const inputEl = getInputElement();\n\n if (inputEl) {\n inputEl.focus();\n }\n\n repeat(event, undefined, dir ?? props.step ?? 1);\n event.preventDefault();\n }\n };\n\n const decrement = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement>, dir: number) => {\n if (!props.disabled) {\n const inputEl = getInputElement();\n\n if (inputEl) {\n inputEl.focus();\n }\n\n repeat(event, undefined, dir ?? (props.step ?? 1) * -1);\n event.preventDefault();\n }\n };\n\n const stopSpin = () => {\n if (!props.disabled) {\n clearTimer();\n }\n };\n\n const onInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (props.disabled || props.readOnly) {\n return;\n }\n\n if (isSpecialChar.current) {\n (event.target as HTMLInputElement).value = lastValue.current ?? '';\n }\n\n isSpecialChar.current = false;\n };\n\n const onInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n const inputElement = event.target as HTMLInputElement;\n\n if (event.altKey || event.ctrlKey || event.metaKey) {\n isSpecialChar.current = true;\n lastValue.current = inputElement.value;\n\n return;\n }\n\n lastValue.current = inputElement.value;\n\n let selectionStart = inputElement.selectionStart ?? 0;\n const selectionEnd = inputElement.selectionEnd ?? 0;\n const selectionRange = selectionEnd - selectionStart;\n const inputValue = inputElement.value;\n let newValueStr = null;\n const code = event.code || event.key;\n\n switch (code) {\n case 'ArrowUp':\n spin(event, 1);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n spin(event, -1);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n if (selectionRange > 1) {\n const cursorPosition = isNumeralChar(inputValue.charAt(selectionStart)) ? selectionStart + 1 : selectionStart + 2;\n\n (event.target as HTMLInputElement).setSelectionRange(cursorPosition, cursorPosition);\n } else if (!isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n\n break;\n\n case 'ArrowRight':\n if (selectionRange > 1) {\n const cursorPosition = selectionEnd - 1;\n\n (event.target as HTMLInputElement).setSelectionRange(cursorPosition, cursorPosition);\n } else if (!isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n\n break;\n\n case 'Tab':\n case 'Enter':\n case 'NumpadEnter':\n newValueStr = validateValue(parseValue(inputValue)) as useInputNumberProps['value'];\n (event.target as HTMLInputElement).value = formatValue(newValueStr);\n (event.target as HTMLInputElement).setAttribute('aria-valuenow', newValueStr != null ? String(newValueStr) : '');\n updateModel(event, newValueStr);\n break;\n\n case 'Backspace': {\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n if (selectionStart >= inputValue.length && suffixChar.current !== null) {\n selectionStart = inputValue.length - suffixChar.current.length;\n (event.target as HTMLInputElement).setSelectionRange(selectionStart, selectionStart);\n }\n\n const deleteChar = inputValue.charAt(selectionStart - 1);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = getDecimalCharIndexes(inputValue);\n\n if (isNumeralChar(deleteChar)) {\n const decimalLength = getDecimalLength(inputValue);\n\n if (_group.current && _group.current.test(deleteChar)) {\n _group.current.lastIndex = 0;\n\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n } else if (_decimal.current && _decimal.current.test(deleteChar)) {\n if (_decimal.current) {\n _decimal.current.lastIndex = 0;\n }\n\n if (decimalLength) {\n (event.target as HTMLInputElement).setSelectionRange(selectionStart - 1, selectionStart - 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = isDecimalMode() && (props.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n const parsed = parseValue(newValueStr);\n\n newValueStr = typeof parsed === 'number' && parsed > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n\n updateValue(event, newValueStr as string, null, 'delete-single');\n } else {\n newValueStr = deleteRange(inputValue, selectionStart, selectionEnd);\n updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n }\n\n case 'Delete':\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = getDecimalCharIndexes(inputValue);\n\n if (isNumeralChar(deleteChar)) {\n const decimalLength = getDecimalLength(inputValue);\n\n if (_group.current && _group.current.test(deleteChar)) {\n _group.current.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n } else if (_decimal.current && _decimal.current.test(deleteChar)) {\n _decimal.current.lastIndex = 0;\n\n if (decimalLength) {\n (event.target as HTMLInputElement).setSelectionRange(selectionStart + 1, selectionStart + 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = isDecimalMode() && (props.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n const parsed = parseValue(newValueStr);\n\n newValueStr = typeof parsed === 'number' && parsed > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n\n updateValue(event, newValueStr as string, null, 'delete-back-single');\n } else {\n newValueStr = deleteRange(inputValue, selectionStart, selectionEnd);\n updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n\n case 'Home':\n event.preventDefault();\n\n if (isNotEmpty(props.min)) {\n updateModel(event, props.min ?? 0);\n }\n\n break;\n\n case 'End':\n event.preventDefault();\n\n if (isNotEmpty(props.max)) {\n updateModel(event, props.max ?? 100);\n }\n\n break;\n\n default:\n break;\n }\n };\n\n const onInputKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n const char = event.key;\n const isDecimalSign = isDecimalSignFn(char);\n const isMinusSign = isMinusSignFn(char);\n\n if (event.code !== 'Enter') {\n event.preventDefault();\n }\n\n if ((Number(char) >= 0 && Number(char) <= 9) || isMinusSign || isDecimalSign) {\n insert(event, char, { isDecimalSign, isMinusSign });\n }\n };\n\n const onPaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n event.preventDefault();\n const data = (event.clipboardData || (window as Window & { clipboardData?: DataTransfer }).clipboardData)?.getData('Text');\n\n if (data) {\n const filteredData = parseValue(data);\n\n if (filteredData != null) {\n insert(event, filteredData.toString());\n }\n }\n };\n\n const allowMinusSign = () => {\n return props.min === undefined || props.min === null || props.min < 0;\n };\n\n const isMinusSignFn = (char: string) => {\n if ((_minusSign.current && _minusSign.current.test(char)) || char === '-') {\n if (_minusSign.current) {\n _minusSign.current.lastIndex = 0;\n }\n\n return true;\n }\n\n return false;\n };\n\n const isDecimalSignFn = (char: string) => {\n if ((props.locale?.includes('fr') && ['.', ','].includes(char)) || (_decimal.current && _decimal.current.test(char))) {\n if (_decimal.current) {\n _decimal.current.lastIndex = 0;\n }\n\n return true;\n }\n\n return false;\n };\n\n const isDecimalMode = () => {\n return props.mode === 'decimal';\n };\n\n const getDecimalCharIndexes = (val: string) => {\n const decimalCharIndex = _decimal.current ? val.search(_decimal.current) : -1;\n\n if (_decimal.current) {\n _decimal.current.lastIndex = 0;\n }\n\n const filteredVal = val\n .replace(_prefix.current || '', '')\n .trim()\n .replace(/\\s/g, '')\n .replace(_currency.current || '', '');\n const decimalCharIndexWithoutPrefix = _decimal.current ? filteredVal.search(_decimal.current) : -1;\n\n if (_decimal.current) {\n _decimal.current.lastIndex = 0;\n }\n\n return { decimalCharIndex, decimalCharIndexWithoutPrefix };\n };\n\n const getCharIndexes = (val: string) => {\n const resetRegexLastIndex = (regex: RegExp | null) => {\n if (regex) {\n regex.lastIndex = 0;\n }\n };\n\n const decimalCharIndex = _decimal.current ? val.search(_decimal.current) : -1;\n\n resetRegexLastIndex(_decimal.current);\n\n const minusCharIndex = _minusSign.current ? val.search(_minusSign.current) : -1;\n\n resetRegexLastIndex(_minusSign.current);\n\n const suffixCharIndex = _suffix.current ? val.search(_suffix.current) : -1;\n\n resetRegexLastIndex(_suffix.current);\n\n const currencyCharIndex = _currency.current ? val.search(_currency.current) : -1;\n\n resetRegexLastIndex(_currency.current);\n\n return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };\n };\n\n const insert = (event: React.KeyboardEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement>, text: string, sign = { isDecimalSign: false, isMinusSign: false }) => {\n const minusCharIndexOnText = _minusSign.current ? text.search(_minusSign.current) : -1;\n\n if (_minusSign.current) {\n _minusSign.current.lastIndex = 0;\n }\n\n if (!allowMinusSign() && minusCharIndexOnText !== -1) {\n return;\n }\n\n const selectionStart = (event.target as HTMLInputElement).selectionStart ?? 0;\n const selectionEnd = (event.target as HTMLInputElement).selectionEnd ?? 0;\n const inputValue = (event.target as HTMLInputElement).value.trim();\n const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = getCharIndexes(inputValue);\n let newValueStr;\n\n if (sign.isMinusSign) {\n const isNewMinusSign = minusCharIndex === -1;\n\n if (selectionStart === 0 || selectionStart === currencyCharIndex + 1) {\n newValueStr = inputValue;\n\n if (isNewMinusSign || selectionEnd !== 0) {\n newValueStr = insertText(inputValue, text, 0, selectionEnd);\n }\n\n updateValue(event, newValueStr, text, 'insert');\n }\n } else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n updateValue(event, inputValue, text, 'insert');\n } else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, 'insert');\n } else if (decimalCharIndex === -1 && props.maxFractionDigits) {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, 'insert');\n }\n } else {\n const maxFractionDigits = numberFormat.current?.resolvedOptions().maximumFractionDigits ?? 0;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {\n const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;\n\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n updateValue(event, newValueStr, text, operation);\n }\n } else {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, operation);\n }\n }\n };\n\n const insertText = (value: string, text: string, start: number, end: number) => {\n const textSplit = text === '.' ? text : text.split('.');\n\n if (textSplit.length === 2) {\n const decimalCharIndex = value.slice(start, end).search(_decimal.current ?? '');\n\n if (_decimal.current) {\n _decimal.current.lastIndex = 0;\n }\n\n return decimalCharIndex > 0 ? value.slice(0, start) + formatValue(text) + value.slice(end) : formatValue(text) || value;\n } else if (end - start === value.length) {\n return formatValue(text);\n } else if (start === 0) {\n return text + value.slice(end);\n } else if (end === value.length) {\n return value.slice(0, start) + text;\n } else {\n return value.slice(0, start) + text + value.slice(end);\n }\n };\n\n const deleteRange = (value: string, start: number, end: number) => {\n let newValueStr;\n\n if (end - start === value.length) newValueStr = '';\n else if (start === 0) newValueStr = value.slice(end);\n else if (end === value.length) newValueStr = value.slice(0, start);\n else newValueStr = value.slice(0, start) + value.slice(end);\n\n return newValueStr;\n };\n\n const initCursor = () => {\n const inputEl = getInputElement();\n\n if (!inputEl) return 0;\n\n let inputValue = inputEl.value;\n let selectionStart = inputEl.selectionStart ?? 0;\n const valueLength = inputValue.length;\n let index = null;\n\n // remove prefix\n const prefixLength = (prefixChar.current || '').length;\n\n inputValue = inputValue.replace(prefixChar.current || '', '');\n selectionStart = selectionStart - prefixLength;\n\n let char = inputValue.charAt(selectionStart);\n\n if (isNumeralChar(char)) {\n return selectionStart + prefixLength;\n }\n\n //left\n let i = selectionStart - 1;\n\n while (i >= 0) {\n char = inputValue.charAt(i);\n\n if (isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i--;\n }\n }\n\n if (index !== null) {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(index + 1, index + 1);\n } else {\n i = selectionStart;\n\n while (i < valueLength) {\n char = inputValue.charAt(i);\n\n if (isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i++;\n }\n }\n\n if (index !== null) {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(index, index);\n }\n }\n\n return index || 0;\n };\n\n const onInputClick = () => {\n const inputEl = getInputElement();\n\n if (!inputEl) return;\n\n const currentValue = inputEl.value;\n\n if (!props.readOnly && currentValue !== getSelection()) {\n initCursor();\n }\n };\n\n const isNumeralChar = (char: string) => {\n if (char.length === 1 && ((_numeral.current && _numeral.current.test(char)) || (_decimal.current && _decimal.current.test(char)) || (_group.current && _group.current.test(char)) || (_minusSign.current && _minusSign.current.test(char)))) {\n resetRegex();\n\n return true;\n }\n\n return false;\n };\n\n const resetRegex = () => {\n if (_numeral.current) _numeral.current.lastIndex = 0;\n\n if (_decimal.current) _decimal.current.lastIndex = 0;\n\n if (_group.current) _group.current.lastIndex = 0;\n\n if (_minusSign.current) _minusSign.current.lastIndex = 0;\n };\n\n const changeValue = () => {\n const _value = props.value ?? props.defaultValue ?? null;\n const val = validateValueByLimit(_value);\n\n updateInputValue(val);\n\n const newValue = validateValue(_value);\n\n if (_value !== null && _value !== newValue) {\n updateModel(null, newValue as useInputNumberProps['value']);\n }\n };\n\n const updateValue = (event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement>, valueStr: string, insertedValueStr: string | null, operation: string) => {\n const currentValue = (event.target as HTMLInputElement).value;\n let newValue = null;\n\n if (valueStr != null) {\n newValue = parseValue(valueStr);\n newValue = !newValue && !props.allowEmpty ? 0 : newValue;\n\n updateInput(newValue, insertedValueStr, operation, valueStr);\n handleOnInput(event, currentValue, newValue);\n }\n };\n\n const isValueChanged = (currentValue: string | number | null, newValue: number | string | null) => {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n\n if (newValue != null) {\n const parsedCurrentValue = typeof currentValue === 'string' ? parseValue(currentValue) : currentValue;\n\n return newValue !== parsedCurrentValue;\n }\n\n return false;\n };\n\n const handleOnInput = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null,\n currentValue: string,\n newValue: number | string | null\n ) => {\n if (props.onChange && isValueChanged(currentValue, newValue)) {\n props.onChange({\n originalEvent: event,\n value: newValue as number\n });\n }\n };\n\n const validateValue = (value: number | string | null) => {\n if (value === '-' || value == null) {\n return null;\n }\n\n if (props.min != null && typeof props.min === 'number' && typeof value === 'number' && value < props.min) {\n return props.min;\n }\n\n if (props.max != null && typeof props.max === 'number' && typeof value === 'number' && value > props.max) {\n return props.max;\n }\n\n return value;\n };\n\n const validateValueByLimit = (value: number | null) => {\n if (isEmpty(value)) {\n return null;\n }\n\n if (props.min !== undefined && props.min !== null && value !== null && value < props.min) {\n return props.min;\n }\n\n if (props.max !== undefined && props.max !== null && value !== null && value > props.max) {\n return props.max;\n }\n\n return value;\n };\n\n const updateInput = (value: number | string | null, insertedValueStr: string | null, operation: string, valueStr: string) => {\n insertedValueStr = insertedValueStr || '';\n const inputEl = getInputElement();\n\n if (!inputEl) return;\n\n const inputValue = inputEl.value;\n\n let newValue = formatValue(value);\n const currentLength = inputValue.length;\n\n if (newValue !== valueStr) {\n newValue = concatValues(newValue, valueStr);\n }\n\n if (currentLength === 0) {\n inputEl.value = newValue;\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(0, 0);\n\n const index = initCursor();\n const selectionEnd = index + insertedValueStr.length;\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n const selectionStart = inputEl.selectionStart ?? 0;\n let selectionEnd = inputEl.selectionEnd ?? 0;\n\n inputEl.value = newValue;\n const newLength = newValue.length;\n\n if (operation === 'range-insert') {\n const startValue = parseValue((inputValue || '').slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${groupChar.current})?`);\n const sRegex = new RegExp(startExpr, 'g');\n\n sRegex.test(newValue);\n\n const tExpr = insertedValueStr.split('').join(`(${groupChar.current})?`);\n const tRegex = new RegExp(tExpr, 'g');\n\n tRegex.test(newValue.slice(sRegex.lastIndex));\n\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n } else if (operation === 'delete-single') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n } else if (operation === 'delete-range' || operation === 'spin') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n }\n } else if (operation === 'delete-back-single') {\n const prevChar = inputValue.charAt(selectionEnd - 1);\n const nextChar = inputValue.charAt(selectionEnd);\n const diff = currentLength - newLength;\n const isGroupChar = _group.current ? _group.current.test(nextChar) : false;\n\n if (isGroupChar && diff === 1) {\n selectionEnd += 1;\n } else if (!isGroupChar && isNumeralChar(prevChar)) {\n selectionEnd += -1 * diff + 1;\n }\n\n if (_group.current) {\n _group.current.lastIndex = 0;\n }\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else if (inputValue === '-' && operation === 'insert') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(0, 0);\n\n const index = initCursor();\n const selectionEnd = index + insertedValueStr.length + 1;\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n\n inputEl.setAttribute('aria-valuenow', String(value));\n };\n\n const evaluateEmpty = (newValue: useInputNumberProps['value']) => {\n return !newValue && !props.allowEmpty ? (props.min ?? 0) : newValue;\n };\n\n const updateInputValue = (newValue: useInputNumberProps['value']) => {\n newValue = evaluateEmpty(newValue);\n\n const inputEl = getInputElement();\n\n if (!inputEl) return;\n\n const value = inputEl.value;\n const _formattedValue = formatValue(newValue);\n\n if (value !== _formattedValue) {\n inputEl.value = _formattedValue;\n inputEl.setAttribute('aria-valuenow', String(newValue));\n }\n };\n\n const concatValues = (val1: string, val2: string) => {\n if (val1 && val2) {\n const decimalRegex = _decimal.current;\n const decimalCharIndex = decimalRegex ? val2.search(decimalRegex) : -1;\n\n if (decimalRegex) {\n decimalRegex.lastIndex = 0;\n }\n\n if (suffixChar.current) {\n return decimalCharIndex !== -1 ? val1.replace(suffixChar.current, '').split(decimalRegex ?? '')[0] + val2.replace(suffixChar.current, '').slice(decimalCharIndex) + suffixChar.current : val1;\n } else if (prefixChar.current) {\n return decimalCharIndex !== -1 ? val1.split(decimalRegex ?? '')[0] + val2.slice(decimalCharIndex) : val1;\n }\n }\n\n return val1;\n };\n\n const getDecimalLength = (value: string) => {\n if (value) {\n const valueSplit = value.split(_decimal.current ?? '');\n\n if (valueSplit.length === 2) {\n return valueSplit[1]\n .replace(_suffix.current ?? '', '')\n .trim()\n .replace(/\\s/g, '')\n .replace(_currency.current ?? '', '').length;\n }\n }\n\n return 0;\n };\n\n const updateModel = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | React.PointerEvent<HTMLButtonElement> | null,\n value: useInputNumberProps['value']\n ) => {\n if (props.onValueChange) {\n let originalEvent;\n\n if (event) {\n originalEvent = event;\n } else {\n // Create a dummy synthetic event if event is null\n const inputEl = getInputElement();\n\n originalEvent = {\n ...({} as React.FormEvent<HTMLInputElement>),\n target: inputEl as EventTarget & HTMLInputElement\n };\n }\n\n props.onValueChange({\n originalEvent,\n value: value as number\n });\n }\n };\n\n const onInputFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n\n const inputEl = getInputElement();\n\n if (!props.disabled && !props.readOnly && inputEl?.value !== getSelection() && props.highlightOnFocus) {\n event.target.select();\n }\n };\n\n const onInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n\n const input = event.target as HTMLInputElement;\n const newValue = validateValue(parseValue(input.value)) as useInputNumberProps['value'];\n\n input.value = formatValue(newValue);\n input.setAttribute('aria-valuenow', String(newValue));\n updateModel(event, newValue);\n\n if (!props.disabled && !props.readOnly && props.highlightOnFocus) {\n clearSelection();\n }\n };\n\n const clearTimer = () => {\n if (timer.current) {\n clearInterval(timer.current);\n }\n };\n\n const maxBoundry = () => {\n return props.max !== undefined && (props.value ?? props.defaultValue ?? 0) >= props.max;\n };\n\n const minBoundry = () => {\n return props.min !== undefined && (props.value ?? props.defaultValue ?? 0) <= props.min;\n };\n\n useUnmountEffect(() => {\n clearTimer();\n });\n\n useMountEffect(() => {\n constructParser();\n\n const initialValue = props.value ?? props.defaultValue ?? null;\n const newValue = validateValue(initialValue as number | null);\n const valueForInput = typeof newValue === 'number' ? newValue : null;\n\n updateInputValue(valueForInput);\n\n if (initialValue !== null && initialValue !== newValue) {\n updateModel(null, newValue as number);\n }\n });\n\n useUpdateEffect(() => {\n constructParser();\n changeValue();\n }, [props.locale, props.localeMatcher, props.mode, props.currency, props.currencyDisplay, props.useGrouping, props.minFractionDigits, props.maxFractionDigits, props.suffix, props.prefix]);\n\n useUpdateEffect(() => {\n changeValue();\n }, [props.value, props.defaultValue]);\n\n useUpdateEffect(() => {\n if (props.disabled) {\n clearTimer();\n }\n }, [props.disabled]);\n\n return {\n state,\n inputRef,\n // methods\n onChange: onInput,\n onInput,\n onInputKeyDown,\n onInputKeyPress,\n onInputClick,\n onPaste,\n onInputFocus,\n onInputBlur,\n onValueChange: props.onValueChange,\n maxBoundry,\n minBoundry,\n increment,\n decrement,\n stopSpin\n };\n }\n});\n","import type { useInputNumberProps } from '@primereact/types/shared/inputnumber';\n\nexport const defaultProps: useInputNumberProps = {\n value: undefined,\n defaultValue: undefined,\n format: true,\n locale: undefined,\n mode: 'decimal',\n prefix: undefined,\n suffix: undefined,\n currency: undefined,\n currencyDisplay: undefined,\n useGrouping: true,\n minFractionDigits: undefined,\n maxFractionDigits: undefined,\n roundingMode: undefined,\n min: undefined,\n max: undefined,\n step: 1,\n allowEmpty: true,\n highlightOnFocus: false,\n target: undefined,\n onValueChange: undefined,\n onChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useMountEffect","useUnmountEffect","useUpdateEffect","clearSelection","getSelection","isEmpty","isNotEmpty","React","defaultProps","useInputNumber","withHeadless","defaultProps","props","focused","setFocused","inputRef","timer","lastValue","numberFormat","groupChar","prefixChar","suffixChar","isSpecialChar","_numeral","_group","_minusSign","_currency","_decimal","_suffix","_prefix","_index","state","getOptions","_a","_b","constructParser","numerals","index","d","i","getGroupingExpression","getMinusSignExpression","getCurrencyExpression","getDecimalExpression","getSuffixExpression","getPrefixExpression","escapeRegExp","text","formatter","__spreadProps","__spreadValues","prefixStr","suffixStr","formatValue","value","numericValue","formattedValue","parseValue","cleanText","validChars","res","parsedValue","getInputElement","extractHTMLInput","ref","_c","_d","targetRef","refToUse","addWithPrecision","base","increment","baseStr","stepStr","baseDecimalPlaces","stepDecimalPlaces","maxDecimalPlaces","precision","repeat","event","interval","dir","clearTimer","spin","inputEl","step","currentValue","newValue","validateValue","updateInput","updateModel","handleOnInput","decrement","stopSpin","onInput","onInputKeyDown","inputElement","selectionStart","selectionEnd","selectionRange","inputValue","newValueStr","cursorPosition","isNumeralChar","deleteChar","decimalCharIndex","decimalCharIndexWithoutPrefix","getDecimalCharIndexes","decimalLength","getDecimalLength","insertedText","isDecimalMode","parsed","updateValue","deleteRange","isNotEmpty","onInputKeyPress","char","isDecimalSign","isDecimalSignFn","isMinusSign","isMinusSignFn","insert","onPaste","data","filteredData","allowMinusSign","val","filteredVal","getCharIndexes","resetRegexLastIndex","regex","minusCharIndex","suffixCharIndex","currencyCharIndex","sign","minusCharIndexOnText","isNewMinusSign","insertText","maxFractionDigits","operation","charIndex","start","end","initCursor","valueLength","prefixLength","onInputClick","getSelection","resetRegex","changeValue","_value","validateValueByLimit","updateInputValue","valueStr","insertedValueStr","isValueChanged","parsedCurrentValue","isEmpty","currentLength","concatValues","newLength","startValue","startExpr","sRegex","tExpr","tRegex","prevChar","nextChar","diff","isGroupChar","evaluateEmpty","_formattedValue","val1","val2","decimalRegex","valueSplit","originalEvent","onInputFocus","onInputBlur","input","clearSelection","maxBoundry","minBoundry","useUnmountEffect","useMountEffect","initialValue","useUpdateEffect"]}
@@ -0,0 +1,24 @@
1
+ import { useInputNumberProps } from '@primereact/types/shared/inputnumber';
2
+ import * as React from 'react';
3
+ export declare const useInputNumber: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<useInputNumberProps, unknown, {
4
+ state: {
5
+ focused: boolean;
6
+ };
7
+ inputRef: React.RefObject<{
8
+ elementRef: React.RefObject<HTMLInputElement>;
9
+ } | null>;
10
+ onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
11
+ onInput: (event: React.ChangeEvent<HTMLInputElement>) => void;
12
+ onInputKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
13
+ onInputKeyPress: (event: React.KeyboardEvent<HTMLInputElement>) => void;
14
+ onInputClick: () => void;
15
+ onPaste: (event: React.ClipboardEvent<HTMLInputElement>) => void;
16
+ onInputFocus: (event: React.FocusEvent<HTMLInputElement>) => void;
17
+ onInputBlur: (event: React.FocusEvent<HTMLInputElement>) => void;
18
+ onValueChange: ((event: import("@primereact/types/shared/inputnumber").useInputNumberValueChangeEvent) => void) | undefined;
19
+ maxBoundry: () => boolean;
20
+ minBoundry: () => boolean;
21
+ increment: (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement>, dir: number) => void;
22
+ decrement: (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement>, dir: number) => void;
23
+ stopSpin: () => void;
24
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useInputNumberProps } from '@primereact/types/shared/inputnumber';
2
+ export declare const defaultProps: useInputNumberProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useKnob';
2
+ export * from './useKnob.props';
package/knob/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import{withHeadless as de}from"@primereact/core/headless";import{useEventListener as R}from"@primereact/hooks";import*as $ from"react";var C={defaultValue:void 0,value:void 0,size:100,step:1,min:0,max:100,readOnly:!1,disabled:!1,onValueChange:void 0};var i=40,y=50,P=50,r=4*Math.PI/3,l=-Math.PI/3,k=3.14159265358979,he=de({name:"useKnob",defaultProps:C,setup({props:e,elementRef:z}){var K,W;let[w,D]=$.useState((W=(K=e.value)!=null?K:e.defaultValue)!=null?W:null),f={value:w},E=(n,t,o,a,s)=>(n-t)*(s-a)/(o-t)+a,x=()=>{var o,a;let n=(o=e.min)!=null?o:0,t=(a=e.max)!=null?a:100;return E(n>0&&t>0?n:0,n,t,r,l)},g=()=>{var a,s;let n=(a=e.min)!=null?a:0,t=(s=e.max)!=null?s:100,o=w!=null?w:n;return E(o,n,t,r,l)},O=()=>y+Math.cos(r)*i,U=()=>P-Math.sin(r)*i,I=()=>y+Math.cos(l)*i,B=()=>P-Math.sin(l)*i,H=()=>y+Math.cos(x())*i,S=()=>P-Math.sin(x())*i,_=()=>y+Math.cos(g())*i,j=()=>P-Math.sin(g())*i,q=()=>Math.abs(x()-g())<k?0:1,F=()=>g()>x()?0:1,G=`M ${O()} ${U()} A ${i} ${i} 0 1 1 ${I()} ${B()}`,J=`M ${H()} ${S()} A ${i} ${i} 0 ${q()} ${F()} ${_()} ${j()}`,[N,Q]=R({target:"window",type:"mousemove",listener:n=>X(n)}),[Z,p]=R({target:"window",type:"mouseup",listener:()=>L()}),[ee,ne]=R({target:"window",type:"touchmove",listener:n=>Y(n)}),[te,ae]=R({target:"window",type:"touchend",listener:()=>T()}),V=(n,t)=>{var c,d;let o=n-((c=e.size)!=null?c:100)/2,a=((d=e.size)!=null?d:100)/2-t,s=Math.atan2(a,o),u=-k/2-k/6;oe(s,u)},oe=(n,t)=>{var s,u,c,d,h,v,b,M;let o;if(n>l)o=E(n,r,l,(s=e.min)!=null?s:0,(u=e.max)!=null?u:100);else if(n<t)o=E(n+2*Math.PI,r,l,(c=e.min)!=null?c:0,(d=e.max)!=null?d:100);else return;let a=Math.round((o-((h=e.min)!=null?h:0))/((v=e.step)!=null?v:1))*((b=e.step)!=null?b:1)+((M=e.min)!=null?M:0);D(a),e.onValueChange&&e.onValueChange({value:a})},m=n=>{var o,a,s,u;let t;n>((o=e.max)!=null?o:100)?t=(a=e.max)!=null?a:100:n<((s=e.min)!=null?s:0)?t=(u=e.min)!=null?u:0:t=n,D(t),e.onValueChange&&e.onValueChange({value:t})},se=n=>{!e.disabled&&!e.readOnly&&V(n.nativeEvent.offsetX,n.nativeEvent.offsetY)},ue=n=>{N(),Z(),n.preventDefault()},L=()=>{Q(),p()},ie=()=>{ee(),te()},T=()=>{ne(),ae()},X=n=>{!e.disabled&&!e.readOnly&&(V(n.nativeEvent.offsetX,n.nativeEvent.offsetY),n.preventDefault())},Y=n=>{var t;if(!e.disabled&&!e.readOnly&&n.touches.length==1){let o=(t=z.current)==null?void 0:t.getBoundingClientRect(),a=n.targetTouches.item(0);if(o&&a){let s=a.clientX-o.left,u=a.clientY-o.top;V(s,u)}}},ce=n=>{var t,o,a,s,u,c,d,h,v,b,M,A;if(!e.disabled&&!e.readOnly)switch(n.code){case"ArrowRight":case"ArrowUp":{n.preventDefault(),m(((o=(t=f.value)!=null?t:e.min)!=null?o:0)+((a=e.step)!=null?a:1));break}case"ArrowLeft":case"ArrowDown":{n.preventDefault(),m(((u=(s=f.value)!=null?s:e.min)!=null?u:0)-((c=e.step)!=null?c:1));break}case"Home":{n.preventDefault(),m((d=e.min)!=null?d:0);break}case"End":{n.preventDefault(),m((h=e.max)!=null?h:100);break}case"PageUp":{n.preventDefault(),m(((b=(v=f.value)!=null?v:e.min)!=null?b:0)+10);break}case"PageDown":{n.preventDefault(),m(((A=(M=f.value)!=null?M:e.min)!=null?A:0)-10);break}}};return $.useEffect(()=>{e.value!==void 0&&D(e.value)},[e.value]),{state:f,rangePath:G,valuePath:J,onClick:se,onMouseDown:ue,onMouseUp:L,onTouchStart:ie,onTouchEnd:T,onMouseMove:X,onTouchMove:Y,onKeyDown:ce}}});export{C as defaultProps,he as useKnob};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/knob/useKnob.ts","../../src/knob/useKnob.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useEventListener } from '@primereact/hooks';\nimport { useKnobProps } from '@primereact/types/shared/knob';\nimport * as React from 'react';\nimport { defaultProps } from './useKnob.props';\n\nconst radius = 40;\nconst midX = 50;\nconst midY = 50;\nconst minRadians = (4 * Math.PI) / 3;\nconst maxRadians = -Math.PI / 3;\n// Set fix value for SSR.\nconst Math_PI = 3.14159265358979;\n\nexport const useKnob = withHeadless({\n name: 'useKnob',\n defaultProps,\n setup({ props, elementRef }) {\n const [valueState, setValueState] = React.useState<useKnobProps['value']>(props.value ?? props.defaultValue ?? null);\n\n const state = {\n value: valueState\n };\n\n const mapRange = (x: number, inMin: number, inMax: number, outMin: number, outMax: number) => ((x - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\n\n const zeroRadians = () => {\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n\n return mapRange(min > 0 && max > 0 ? min : 0, min, max, minRadians, maxRadians);\n };\n\n const valueRadians = () => {\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n const value = valueState ?? min;\n\n return mapRange(value, min, max, minRadians, maxRadians);\n };\n\n const minX = () => midX + Math.cos(minRadians) * radius;\n\n const minY = () => midY - Math.sin(minRadians) * radius;\n\n const maxX = () => midX + Math.cos(maxRadians) * radius;\n\n const maxY = () => midY - Math.sin(maxRadians) * radius;\n\n const zeroX = () => midX + Math.cos(zeroRadians()) * radius;\n\n const zeroY = () => midY - Math.sin(zeroRadians()) * radius;\n\n const valueX = () => midX + Math.cos(valueRadians()) * radius;\n\n const valueY = () => midY - Math.sin(valueRadians()) * radius;\n\n const largeArc = () => (Math.abs(zeroRadians() - valueRadians()) < Math_PI ? 0 : 1);\n\n const sweep = () => (valueRadians() > zeroRadians() ? 0 : 1);\n\n const rangePath = `M ${minX()} ${minY()} A ${radius} ${radius} 0 1 1 ${maxX()} ${maxY()}`;\n\n const valuePath = `M ${zeroX()} ${zeroY()} A ${radius} ${radius} 0 ${largeArc()} ${sweep()} ${valueX()} ${valueY()}`;\n\n const [bindWindowMouseMoveListener, unbindWindowMouseMoveListener] = useEventListener({\n target: 'window',\n type: 'mousemove',\n listener: (event: Event) => onMouseMove(event as unknown as React.MouseEvent)\n });\n\n const [bindWindowMouseUpListener, unbindWindowMouseUpListener] = useEventListener({\n target: 'window',\n type: 'mouseup',\n listener: () => onMouseUp()\n });\n\n const [bindWindowTouchMoveListener, unbindWindowTouchMoveListener] = useEventListener({\n target: 'window',\n type: 'touchmove',\n listener: (event: Event) => onTouchMove(event as unknown as React.TouchEvent)\n });\n\n const [bindWindowTouchEndListener, unbindWindowTouchEndListener] = useEventListener({\n target: 'window',\n type: 'touchend',\n listener: () => onTouchEnd()\n });\n\n const updateValueByOffset = (offsetX: number, offsetY: number) => {\n const dx = offsetX - (props.size ?? 100) / 2;\n const dy = (props.size ?? 100) / 2 - offsetY;\n const angle = Math.atan2(dy, dx);\n const start = -Math_PI / 2 - Math_PI / 6;\n\n updateModel(angle, start);\n };\n\n const updateModel = (angle: number, start: number) => {\n let mappedValue;\n\n if (angle > maxRadians) mappedValue = mapRange(angle, minRadians, maxRadians, props.min ?? 0, props.max ?? 100);\n else if (angle < start) mappedValue = mapRange(angle + 2 * Math.PI, minRadians, maxRadians, props.min ?? 0, props.max ?? 100);\n else return;\n\n const newValue = Math.round((mappedValue - (props.min ?? 0)) / (props.step ?? 1)) * (props.step ?? 1) + (props.min ?? 0);\n\n setValueState(newValue);\n\n if (props.onValueChange) {\n props.onValueChange({\n value: newValue\n });\n }\n };\n\n const updateModelValue = (newValue: number) => {\n let currentValue;\n\n if (newValue > (props.max ?? 100)) {\n currentValue = props.max ?? 100;\n } else if (newValue < (props.min ?? 0)) {\n currentValue = props.min ?? 0;\n } else {\n currentValue = newValue;\n }\n\n setValueState(currentValue);\n\n if (props.onValueChange) {\n props.onValueChange({\n value: currentValue\n });\n }\n };\n\n const onClick = (event: React.MouseEvent) => {\n if (!props.disabled && !props.readOnly) {\n updateValueByOffset(event.nativeEvent.offsetX, event.nativeEvent.offsetY);\n }\n };\n\n const onMouseDown = (event: React.MouseEvent) => {\n bindWindowMouseMoveListener();\n bindWindowMouseUpListener();\n event.preventDefault();\n };\n\n const onMouseUp = () => {\n unbindWindowMouseMoveListener();\n unbindWindowMouseUpListener();\n };\n\n const onTouchStart = () => {\n bindWindowTouchMoveListener();\n bindWindowTouchEndListener();\n };\n\n const onTouchEnd = () => {\n unbindWindowTouchMoveListener();\n unbindWindowTouchEndListener();\n };\n\n const onMouseMove = (event: React.MouseEvent) => {\n if (!props.disabled && !props.readOnly) {\n updateValueByOffset(event.nativeEvent.offsetX, event.nativeEvent.offsetY);\n event.preventDefault();\n }\n };\n\n const onTouchMove = (event: React.TouchEvent) => {\n if (!props.disabled && !props.readOnly && event.touches.length == 1) {\n const rect = elementRef.current?.getBoundingClientRect();\n const touch = event.targetTouches.item(0);\n\n if (rect && touch) {\n const offsetX = touch.clientX - rect.left;\n const offsetY = touch.clientY - rect.top;\n\n updateValueByOffset(offsetX, offsetY);\n }\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (!props.disabled && !props.readOnly) {\n switch (event.code) {\n case 'ArrowRight':\n\n case 'ArrowUp': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) + (props.step ?? 1));\n break;\n }\n\n case 'ArrowLeft':\n\n case 'ArrowDown': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) - (props.step ?? 1));\n break;\n }\n\n case 'Home': {\n event.preventDefault();\n updateModelValue(props.min ?? 0);\n break;\n }\n\n case 'End': {\n event.preventDefault();\n updateModelValue(props.max ?? 100);\n break;\n }\n\n case 'PageUp': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) + 10);\n break;\n }\n\n case 'PageDown': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) - 10);\n break;\n }\n }\n }\n };\n\n React.useEffect(() => {\n if (props.value !== undefined) {\n setValueState(props.value);\n }\n }, [props.value]);\n\n return {\n state,\n rangePath,\n valuePath,\n //methods\n onClick,\n onMouseDown,\n onMouseUp,\n onTouchStart,\n onTouchEnd,\n onMouseMove,\n onTouchMove,\n onKeyDown\n };\n }\n});\n","import type { useKnobProps } from '@primereact/types/shared/knob';\n\nexport const defaultProps: useKnobProps = {\n defaultValue: undefined,\n value: undefined,\n size: 100,\n step: 1,\n min: 0,\n max: 100,\n readOnly: false,\n disabled: false,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useEventListener","React","defaultProps","radius","midX","midY","minRadians","maxRadians","Math_PI","useKnob","withHeadless","defaultProps","props","elementRef","_a","_b","valueState","setValueState","state","mapRange","x","inMin","inMax","outMin","outMax","zeroRadians","min","max","valueRadians","value","minX","minY","maxX","maxY","zeroX","zeroY","valueX","valueY","largeArc","sweep","rangePath","valuePath","bindWindowMouseMoveListener","unbindWindowMouseMoveListener","useEventListener","event","onMouseMove","bindWindowMouseUpListener","unbindWindowMouseUpListener","onMouseUp","bindWindowTouchMoveListener","unbindWindowTouchMoveListener","onTouchMove","bindWindowTouchEndListener","unbindWindowTouchEndListener","onTouchEnd","updateValueByOffset","offsetX","offsetY","dx","dy","angle","start","updateModel","_c","_d","_e","_f","_g","_h","mappedValue","newValue","updateModelValue","currentValue","onClick","onMouseDown","onTouchStart","rect","touch","onKeyDown","_i","_j","_k","_l"]}
@@ -0,0 +1,17 @@
1
+ import { useKnobProps } from '@primereact/types/shared/knob';
2
+ import * as React from 'react';
3
+ export declare const useKnob: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<useKnobProps, unknown, {
4
+ state: {
5
+ value: number | null | undefined;
6
+ };
7
+ rangePath: string;
8
+ valuePath: string;
9
+ onClick: (event: React.MouseEvent) => void;
10
+ onMouseDown: (event: React.MouseEvent) => void;
11
+ onMouseUp: () => void;
12
+ onTouchStart: () => void;
13
+ onTouchEnd: () => void;
14
+ onMouseMove: (event: React.MouseEvent) => void;
15
+ onTouchMove: (event: React.TouchEvent) => void;
16
+ onKeyDown: (event: React.KeyboardEvent) => void;
17
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useKnobProps } from '@primereact/types/shared/knob';
2
+ export declare const defaultProps: useKnobProps;
File without changes