@primereact/headless 11.0.0-alpha.5 → 11.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/carousel/index.d.ts +2 -0
- package/carousel/index.mjs +2 -0
- package/carousel/index.mjs.map +1 -0
- package/carousel/useCarousel.d.ts +23 -0
- package/carousel/useCarousel.props.d.ts +2 -0
- package/carousel/useCarousel.test.d.ts +0 -0
- package/dataview/index.d.ts +2 -0
- package/dataview/index.mjs +2 -0
- package/dataview/index.mjs.map +1 -0
- package/dataview/useDataView.d.ts +3 -0
- package/dataview/useDataView.props.d.ts +2 -0
- package/dataview/useDataView.test.d.ts +0 -0
- package/fileupload/index.d.ts +2 -0
- package/fileupload/index.mjs +2 -0
- package/fileupload/index.mjs.map +1 -0
- package/fileupload/useFileUpload.d.ts +26 -0
- package/fileupload/useFileUpload.props.d.ts +2 -0
- package/fileupload/useFileUpload.test.d.ts +0 -0
- package/gallery/index.d.ts +2 -0
- package/gallery/index.mjs +2 -0
- package/gallery/index.mjs.map +1 -0
- package/gallery/item/index.d.ts +2 -0
- package/gallery/item/index.mjs +2 -0
- package/gallery/item/index.mjs.map +1 -0
- package/gallery/item/useGalleryItem.d.ts +45 -0
- package/gallery/item/useGalleryItem.props.d.ts +2 -0
- package/gallery/useGallery.d.ts +37 -0
- package/gallery/useGallery.props.d.ts +2 -0
- package/gallery/useGallery.test.d.ts +0 -0
- package/inputnumber/index.d.ts +2 -0
- package/inputnumber/index.mjs +2 -0
- package/inputnumber/index.mjs.map +1 -0
- package/inputnumber/useInputNumber.d.ts +24 -0
- package/inputnumber/useInputNumber.props.d.ts +2 -0
- package/inputnumber/useInputNumber.test.d.ts +0 -0
- package/package.json +4 -4
- package/speeddial/index.mjs +1 -1
- package/speeddial/index.mjs.map +1 -1
- package/speeddial/useSpeedDial.d.ts +2 -1
- package/toast/index.css +2 -0
- package/toast/index.css.map +1 -0
- package/toast/index.d.ts +2 -0
- package/toast/index.mjs +2 -0
- package/toast/index.mjs.map +1 -0
- package/toast/item/index.css +2 -0
- package/toast/item/index.css.map +1 -0
- package/toast/item/index.d.ts +2 -0
- package/toast/item/index.mjs +2 -0
- package/toast/item/index.mjs.map +1 -0
- package/toast/item/useToastItem.d.ts +21 -0
- package/toast/item/useToastItem.props.d.ts +2 -0
- package/toast/item/useToastItem.test.d.ts +0 -0
- package/toast/useToast.d.ts +18 -0
- package/toast/useToast.props.d.ts +2 -0
- package/toast/useToast.test.d.ts +0 -0
- package/tooltip/index.mjs +1 -1
- package/tooltip/index.mjs.map +1 -1
|
@@ -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
|
+
}>;
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as i}from"@primereact/core/headless";import{localeComparator as l,resolveFieldData as p}from"@primeuix/utils/object";var n={};var P=i({name:"useDataView",defaultProps:n,setup:()=>({sort:(e,o,m)=>{if(e){let s=[...e],a=l();return s.sort((u,c)=>{let r=p(u,o),t=p(c,o);return(a?a(r,t):r>t?1:r<t?-1:0)*m}),s}return null}})});export{n as defaultProps,P as useDataView};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/dataview/useDataView.ts","../../src/dataview/useDataView.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { localeComparator, resolveFieldData } from '@primeuix/utils/object';\nimport { defaultProps } from './useDataView.props';\n\nexport const useDataView = withHeadless({\n name: 'useDataView',\n defaultProps,\n setup: () => {\n const sort = (value: unknown[] | null, sortField: string, sortOrder: number) => {\n if (value) {\n const _value = [...value];\n const comparer = localeComparator();\n\n _value.sort((data1, data2) => {\n const value1 = resolveFieldData(data1, sortField);\n const value2 = resolveFieldData(data2, sortField);\n const cmp = comparer ? comparer(value1, value2) : value1 > value2 ? 1 : value1 < value2 ? -1 : 0;\n\n return cmp * sortOrder;\n });\n\n return _value;\n }\n\n return null;\n };\n\n return {\n // methods\n sort\n };\n }\n});\n","import type { useDataViewProps } from '@primereact/types/shared/dataview';\n\nexport const defaultProps: useDataViewProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,oBAAAC,EAAkB,oBAAAC,MAAwB,yBCC5C,IAAMC,EAAiC,CAAC,EDExC,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,EACA,MAAO,KAoBI,CAEH,KArBS,CAACC,EAAyBC,EAAmBC,IAAsB,CAC5E,GAAIF,EAAO,CACP,IAAMG,EAAS,CAAC,GAAGH,CAAK,EAClBI,EAAWC,EAAiB,EAElC,OAAAF,EAAO,KAAK,CAACG,EAAOC,IAAU,CAC1B,IAAMC,EAASC,EAAiBH,EAAOL,CAAS,EAC1CS,EAASD,EAAiBF,EAAON,CAAS,EAGhD,OAFYG,EAAWA,EAASI,EAAQE,CAAM,EAAIF,EAASE,EAAS,EAAIF,EAASE,EAAS,GAAK,GAElFR,CACjB,CAAC,EAEMC,CACX,CAEA,OAAO,IACX,CAKA,EAER,CAAC","names":["withHeadless","localeComparator","resolveFieldData","defaultProps","useDataView","withHeadless","defaultProps","value","sortField","sortOrder","_value","comparer","localeComparator","data1","data2","value1","resolveFieldData","value2"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const useDataView: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/dataview").useDataViewProps, unknown, {
|
|
2
|
+
sort: (value: unknown[] | null, sortField: string, sortOrder: number) => unknown[] | null;
|
|
3
|
+
}>;
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as J}from"@primereact/core/headless";import{addClass as Q,isNotEmpty as D,removeClass as B}from"@primeuix/utils";import*as r from"react";var H={name:void 0,url:void 0,multiple:!1,accept:void 0,disabled:!1,auto:!1,maxFileSize:void 0,fileLimit:void 0,withCredentials:!1,customUpload:!1,invalidFileLimitMessage:"Maximum number of files exceeded, limit is {0} at most.",invalidFileSizeMessage:"{0}: Invalid file size, file size should be smaller than {1}.",invalidFileTypeMessage:"{0}: Invalid file type, allowed file types: {1}.",uploadHandler:void 0,onSelect:void 0,onBeforeUpload:void 0,onUpload:void 0,onError:void 0,onProgress:void 0,onBeforeSend:void 0,onClear:void 0,onRemove:void 0};var ie=J({name:"useFileUpload",defaultProps:H,setup({props:t,$primereact:S}){let d=r.useRef(null),c=r.useRef(null),m=r.useRef(0),[l,g]=r.useState([]),[h,T]=r.useState([]),[C,F]=r.useState([]),[U,b]=r.useState(0),u=r.useMemo(()=>D(l),[l]),w=r.useMemo(()=>D(h),[h]),x={files:l,messages:C,progress:U,uploadedFiles:h},P=()=>{u&&E(l)},p=e=>{var f,o;let i=s=>"dataTransfer"in s&&!!s.dataTransfer;u&&g([]);let n=[];t.multiple&&(n=l?[...l]:[]);let a=i(e)?(f=e.dataTransfer)==null?void 0:f.files:(o=e.target)==null?void 0:o.files;if(a){for(let s of Array.from(a))if(!k(s)&&!R()&&O(s)){if(q(s)){let v=s;v.objectURL=window.URL.createObjectURL(s)}n.push(s)}g(n),t.fileLimit&&Z(),t.auto&&D(n)&&!R()&&E(n),t.onSelect&&t.onSelect({originalEvent:e,files:n}),M()}},I=()=>{d.current&&d.current.click()},E=(e=l)=>{var n;let i=(n=e!=null?e:l)!=null?n:[];if(t.customUpload)t.fileLimit&&(m.current+=i.length),t.uploadHandler&&t.uploadHandler({files:i,options:{clear:L,props:t}});else{let a=new XMLHttpRequest,f=new FormData;t.onBeforeUpload&&t.onBeforeUpload({xhr:a,files:i});for(let o of i)f.append(t.name,o,o.name);a.upload.addEventListener("progress",o=>{if(o.lengthComputable){let s=Math.round(o.loaded*100/o.total);b(s)}t.onProgress&&t.onProgress({originalEvent:o,progress:U})}),a.onreadystatechange=()=>{a.readyState===4&&(b(0),a.status>=200&&a.status<300?(t.fileLimit&&(m.current+=i.length),t.onUpload&&t.onUpload({xhr:a,files:i}),T(o=>[...o,...i])):t.onError&&t.onError({xhr:a,files:i}),L())},t.url&&(a.open("POST",t.url,!0),t.onBeforeSend&&t.onBeforeSend({xhr:a,formData:f}),a.withCredentials=!!t.withCredentials,a.send(f))}},L=()=>{g([]),F([]),t.onClear&&t.onClear(),M()},k=e=>{if(l&&l.length){for(let i of l)if(i.name+i.type+i.size===e.name+e.type+e.size)return!0}return!1},O=e=>t.accept&&!A(e)?(F(i=>[...i,t.invalidFileTypeMessage.replace("{0}",e.name).replace("{1}",t.accept)]),!1):t.maxFileSize&&e.size>t.maxFileSize?(F(i=>[...i,t.invalidFileSizeMessage.replace("{0}",e.name).replace("{1}",z(t.maxFileSize))]),!1):!0,A=e=>{let i=t.accept.split(",").map(n=>n.trim());for(let n of i)if(j(n)?y(e.type)===y(n):e.type==n||W(e).toLowerCase()===n.toLowerCase())return!0;return!1},y=e=>e.substring(0,e.indexOf("/")),j=e=>e.indexOf("*")!==-1,W=e=>"."+e.name.split(".").pop(),q=e=>/^image\//.test(e.type),G=e=>{!t.disabled&&(!u||t.multiple)&&(e.stopPropagation(),e.preventDefault())},K=e=>{!t.disabled&&(!u||t.multiple)&&(Q(c.current,"p-fileupload-highlight"),c.current.setAttribute("data-p-highlight","true"),e.stopPropagation(),e.preventDefault())},N=()=>{t.disabled||(B(c.current,"p-fileupload-highlight"),c.current.setAttribute("data-p-highlight","false"))},V=e=>{var i;if(!t.disabled){B(c.current,"p-fileupload-highlight"),c.current.setAttribute("data-p-highlight","false"),e.stopPropagation(),e.preventDefault();let n=(i=e.dataTransfer)==null?void 0:i.files;(t.multiple||n&&n.length===1)&&p(e)}},X=e=>{M();let i=[...l],n=l[e];i.splice(e,1),g(i),t.onRemove&&t.onRemove({file:n})},Y=e=>{let i=[...h];i.splice(e,1),T(i),t.onRemove&&t.onRemove({file:l[e]})},M=()=>{d.current&&(d.current.value="")},z=e=>{var s,v;let a=((v=(s=S==null?void 0:S.config)==null?void 0:s.locale)==null?void 0:v.fileSizeTypes)||["B","KB","MB","GB","TB","PB","EB","ZB","YB"];if(e===0)return`0 ${a[0]}`;let f=Math.floor(Math.log(e)/Math.log(1024));return`${parseFloat((e/Math.pow(1024,f)).toFixed(3))} ${a[f]}`},R=()=>t.fileLimit&&t.fileLimit<l.length+m.current,Z=()=>{R()&&F(e=>[...e,t.invalidFileLimitMessage.replace("{0}",t.fileLimit.toString())])};return{state:x,uploadedFileCount:m,hasFiles:u,hasUploadedFiles:w,inputRef:d,contentRef:c,upload:P,onFileSelect:p,choose:I,uploader:E,clear:L,remove:X,removeUploadedFile:Y,formatSize:z,onDragEnter:G,onDragOver:K,onDragLeave:N,onDrop:V}}});export{H as defaultProps,ie as useFileUpload};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/fileupload/useFileUpload.ts","../../src/fileupload/useFileUpload.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { addClass, isNotEmpty, removeClass } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useFileUpload.props';\n\nexport const useFileUpload = withHeadless({\n name: 'useFileUpload',\n defaultProps,\n setup({ props, $primereact }) {\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const uploadedFileCount = React.useRef(0);\n\n const [filesState, setFilesState] = React.useState<File[]>([]);\n const [uploadedFilesState, setUploadedFilesState] = React.useState<File[]>([]);\n const [messagesState, setMessagesState] = React.useState<string[]>([]);\n const [progressState, setProgressState] = React.useState(0);\n\n const hasFiles = React.useMemo(() => isNotEmpty(filesState), [filesState]);\n const hasUploadedFiles = React.useMemo(() => isNotEmpty(uploadedFilesState), [uploadedFilesState]);\n\n const state = {\n files: filesState,\n messages: messagesState,\n progress: progressState,\n uploadedFiles: uploadedFilesState\n };\n\n const upload = () => {\n if (hasFiles) {\n uploader(filesState);\n }\n };\n\n const onFileSelect = (event: React.ChangeEvent<HTMLInputElement> | DragEvent) => {\n const isDragEvent = (e: React.ChangeEvent<HTMLInputElement> | DragEvent): e is DragEvent => 'dataTransfer' in e && !!(e as DragEvent).dataTransfer;\n\n if (hasFiles) {\n setFilesState([]);\n }\n\n let currentFiles: File[] = [];\n\n if (props.multiple) {\n currentFiles = filesState ? [...filesState] : [];\n }\n\n const filesList = isDragEvent(event) ? event.dataTransfer?.files : (event.target as HTMLInputElement | null)?.files;\n\n if (!filesList) {\n return;\n }\n\n for (const file of Array.from(filesList)) {\n if (!isFileSelected(file) && !isFileLimitExceeded()) {\n if (validate(file)) {\n if (isImage(file)) {\n const fileWithUrl = file as File & { objectURL?: string };\n\n fileWithUrl.objectURL = window.URL.createObjectURL(file);\n }\n\n currentFiles.push(file);\n }\n }\n }\n\n setFilesState(currentFiles);\n\n if (props.fileLimit) {\n checkFileLimit();\n }\n\n if (props.auto && isNotEmpty(currentFiles) && !isFileLimitExceeded()) {\n uploader(currentFiles);\n }\n\n if (props.onSelect) {\n props.onSelect({ originalEvent: event, files: currentFiles });\n }\n\n clearInput();\n };\n\n const choose = () => {\n if (inputRef.current) {\n inputRef.current.click();\n }\n };\n\n const uploader = (uploadFiles = filesState) => {\n const filesToUpload = uploadFiles ?? filesState ?? [];\n\n if (props.customUpload) {\n if (props.fileLimit) {\n uploadedFileCount.current += filesToUpload.length;\n }\n\n if (props.uploadHandler) {\n props.uploadHandler({\n files: filesToUpload,\n options: {\n clear,\n props\n }\n });\n }\n } else {\n const xhr = new XMLHttpRequest();\n const formData = new FormData();\n\n if (props.onBeforeUpload) {\n props.onBeforeUpload({\n xhr,\n files: filesToUpload\n });\n }\n\n for (const file of filesToUpload) {\n formData.append(props.name as string, file, file.name);\n }\n\n xhr.upload.addEventListener('progress', (event) => {\n if (event.lengthComputable) {\n const progress = Math.round((event.loaded * 100) / event.total);\n\n setProgressState(progress);\n }\n\n if (props.onProgress) {\n props.onProgress({\n originalEvent: event,\n progress: progressState\n });\n }\n });\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n setProgressState(0);\n\n if (xhr.status >= 200 && xhr.status < 300) {\n if (props.fileLimit) {\n uploadedFileCount.current += filesToUpload.length;\n }\n\n if (props.onUpload) {\n props.onUpload({\n xhr,\n files: filesToUpload\n });\n }\n\n setUploadedFilesState((prevUploadedFiles) => [...prevUploadedFiles, ...filesToUpload]);\n } else {\n if (props.onError) {\n props.onError({\n xhr,\n files: filesToUpload\n });\n }\n }\n\n clear();\n }\n };\n\n if (props.url) {\n xhr.open('POST', props.url, true);\n\n if (props.onBeforeSend) {\n props.onBeforeSend({\n xhr,\n formData\n });\n }\n\n xhr.withCredentials = !!props.withCredentials;\n\n xhr.send(formData);\n }\n }\n };\n\n const clear = () => {\n setFilesState([]);\n setMessagesState([]);\n\n if (props.onClear) {\n props.onClear();\n }\n\n clearInput();\n };\n\n const isFileSelected = (file: File) => {\n if (filesState && filesState.length) {\n for (const sFile of filesState) {\n if (sFile.name + sFile.type + sFile.size === file.name + file.type + file.size) return true;\n }\n }\n\n return false;\n };\n\n const validate = (file: File) => {\n if (props.accept && !isFileTypeValid(file)) {\n setMessagesState((prevMessages) => [...prevMessages, (props.invalidFileTypeMessage as string).replace('{0}', file.name).replace('{1}', props.accept as string)]);\n\n return false;\n }\n\n if (props.maxFileSize && file.size > props.maxFileSize) {\n setMessagesState((prevMessages) => [...prevMessages, (props.invalidFileSizeMessage as string).replace('{0}', file.name).replace('{1}', formatSize(props.maxFileSize as number))]);\n\n return false;\n }\n\n return true;\n };\n\n const isFileTypeValid = (file: File) => {\n const acceptableTypes = (props.accept as string).split(',').map((type) => type.trim());\n\n for (const type of acceptableTypes) {\n const acceptable = isWildcard(type) ? getTypeClass(file.type) === getTypeClass(type) : file.type == type || getFileExtension(file).toLowerCase() === type.toLowerCase();\n\n if (acceptable) {\n return true;\n }\n }\n\n return false;\n };\n\n const getTypeClass = (fileType: string) => {\n return fileType.substring(0, fileType.indexOf('/'));\n };\n\n const isWildcard = (fileType: string) => {\n return fileType.indexOf('*') !== -1;\n };\n\n const getFileExtension = (file: File) => {\n return '.' + file.name.split('.').pop();\n };\n\n const isImage = (file: File) => {\n return /^image\\//.test(file.type);\n };\n\n const onDragEnter = (event: DragEvent) => {\n if (!props.disabled && (!hasFiles || props.multiple)) {\n event.stopPropagation();\n event.preventDefault();\n }\n };\n\n const onDragOver = (event: DragEvent) => {\n if (!props.disabled && (!hasFiles || props.multiple)) {\n // !isUnstyled &&\n addClass(contentRef.current as HTMLDivElement, 'p-fileupload-highlight');\n (contentRef.current as HTMLDivElement).setAttribute('data-p-highlight', 'true');\n event.stopPropagation();\n event.preventDefault();\n }\n };\n\n const onDragLeave = () => {\n if (!props.disabled) {\n // !isUnstyled &&\n removeClass(contentRef.current as HTMLDivElement, 'p-fileupload-highlight');\n (contentRef.current as HTMLDivElement).setAttribute('data-p-highlight', 'false');\n }\n };\n\n const onDrop = (event: DragEvent) => {\n if (!props.disabled) {\n // !isUnstyled &&\n removeClass(contentRef.current as HTMLDivElement, 'p-fileupload-highlight');\n (contentRef.current as HTMLDivElement).setAttribute('data-p-highlight', 'false');\n event.stopPropagation();\n event.preventDefault();\n\n const files = event.dataTransfer?.files;\n const allowDrop = props.multiple || (files && files.length === 1);\n\n if (allowDrop) {\n onFileSelect(event);\n }\n }\n };\n\n const remove = (index: number) => {\n clearInput();\n const currentFiles = [...filesState];\n const removedFile = filesState[index];\n\n currentFiles.splice(index, 1);\n setFilesState(currentFiles);\n\n if (props.onRemove) {\n props.onRemove({\n file: removedFile\n });\n }\n };\n\n const removeUploadedFile = (index: number) => {\n const currentUploadedFiles = [...uploadedFilesState];\n\n currentUploadedFiles.splice(index, 1);\n setUploadedFilesState(currentUploadedFiles);\n\n if (props.onRemove) {\n props.onRemove({\n file: filesState[index]\n });\n }\n };\n\n const clearInput = () => {\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n };\n\n const formatSize = (bytes: number) => {\n const k = 1024;\n const dm = 3;\n // @ts-expect-error TODO:\n const sizes = $primereact?.config?.locale?.fileSizeTypes || ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n if (bytes === 0) {\n return `0 ${sizes[0]}`;\n }\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const formattedSize = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n\n return `${formattedSize} ${sizes[i]}`;\n };\n\n const isFileLimitExceeded = () => {\n return props.fileLimit && props.fileLimit < filesState.length + uploadedFileCount.current;\n };\n\n const checkFileLimit = () => {\n if (isFileLimitExceeded()) {\n setMessagesState((prevMessages) => [...prevMessages, (props.invalidFileLimitMessage as string).replace('{0}', (props.fileLimit as number).toString())]);\n }\n };\n\n return {\n state,\n uploadedFileCount,\n hasFiles,\n hasUploadedFiles,\n // refs\n inputRef,\n contentRef,\n // methods\n upload,\n onFileSelect,\n choose,\n uploader,\n clear,\n remove,\n removeUploadedFile,\n formatSize,\n onDragEnter,\n onDragOver,\n onDragLeave,\n onDrop\n };\n }\n});\n","import type { useFileUploadProps } from '@primereact/types/shared/fileupload';\n\nexport const defaultProps: useFileUploadProps = {\n name: undefined,\n url: undefined,\n multiple: false,\n accept: undefined,\n disabled: false,\n auto: false,\n maxFileSize: undefined,\n fileLimit: undefined,\n withCredentials: false,\n customUpload: false,\n invalidFileLimitMessage: 'Maximum number of files exceeded, limit is {0} at most.',\n invalidFileSizeMessage: '{0}: Invalid file size, file size should be smaller than {1}.',\n invalidFileTypeMessage: '{0}: Invalid file type, allowed file types: {1}.',\n uploadHandler: undefined,\n onSelect: undefined,\n onBeforeUpload: undefined,\n onUpload: undefined,\n onError: undefined,\n onProgress: undefined,\n onBeforeSend: undefined,\n onClear: undefined,\n onRemove: undefined\n};\n"],"mappings":"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","names":["withHeadless","addClass","isNotEmpty","removeClass","React","defaultProps","useFileUpload","withHeadless","defaultProps","props","$primereact","inputRef","contentRef","uploadedFileCount","filesState","setFilesState","uploadedFilesState","setUploadedFilesState","messagesState","setMessagesState","progressState","setProgressState","hasFiles","isNotEmpty","hasUploadedFiles","state","upload","uploader","onFileSelect","event","_a","_b","isDragEvent","e","currentFiles","filesList","file","isFileSelected","isFileLimitExceeded","validate","isImage","fileWithUrl","checkFileLimit","clearInput","choose","uploadFiles","filesToUpload","clear","xhr","formData","progress","prevUploadedFiles","sFile","isFileTypeValid","prevMessages","formatSize","acceptableTypes","type","isWildcard","getTypeClass","getFileExtension","fileType","onDragEnter","onDragOver","addClass","onDragLeave","removeClass","onDrop","files","remove","index","removedFile","removeUploadedFile","currentUploadedFiles","bytes","sizes","i"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const useFileUpload: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/fileupload").useFileUploadProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
files: File[];
|
|
5
|
+
messages: string[];
|
|
6
|
+
progress: number;
|
|
7
|
+
uploadedFiles: File[];
|
|
8
|
+
};
|
|
9
|
+
uploadedFileCount: React.RefObject<number>;
|
|
10
|
+
hasFiles: boolean;
|
|
11
|
+
hasUploadedFiles: boolean;
|
|
12
|
+
inputRef: React.RefObject<HTMLInputElement | null>;
|
|
13
|
+
contentRef: React.RefObject<HTMLDivElement | null>;
|
|
14
|
+
upload: () => void;
|
|
15
|
+
onFileSelect: (event: React.ChangeEvent<HTMLInputElement> | DragEvent) => void;
|
|
16
|
+
choose: () => void;
|
|
17
|
+
uploader: (uploadFiles?: File[]) => void;
|
|
18
|
+
clear: () => void;
|
|
19
|
+
remove: (index: number) => void;
|
|
20
|
+
removeUploadedFile: (index: number) => void;
|
|
21
|
+
formatSize: (bytes: number) => string;
|
|
22
|
+
onDragEnter: (event: DragEvent) => void;
|
|
23
|
+
onDragOver: (event: DragEvent) => void;
|
|
24
|
+
onDragLeave: () => void;
|
|
25
|
+
onDrop: (event: DragEvent) => void;
|
|
26
|
+
}>;
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as S}from"@primereact/core/headless";import*as t from"react";var h={activeIndex:0,onActiveIndexChange:void 0};var O=S({name:"useGallery",defaultProps:h,setup:({props:y,elementRef:u})=>{let{activeIndex:i=0,onActiveIndexChange:s=void 0}=y,g=t.useRef(null),o=t.useRef([]),x=t.useRef(null),w=t.useRef(null),E=t.useRef(null),I=t.useRef(null),[,b]=t.useState(0),[l,f]=t.useState(i),[d,p]=t.useState(!1);t.useEffect(()=>{f(i)},[i]);let z=e=>{if(!e)return-1;let c=o.current.findIndex(r=>r.current===e);return c===-1?(o.current.push({current:e}),b(r=>r+1),o.current.length-1):c},m=()=>{let e=(l+1)%o.current.length;f(e),s==null||s({originalEvent:void 0,value:e})},R=()=>{let e=(l-1+o.current.length)%o.current.length;f(e),s==null||s({originalEvent:void 0,value:e})},n=e=>()=>{var r;let c=(r=o.current[l])==null?void 0:r.current;if(c){let L=new CustomEvent("gallery-"+e,{detail:{action:e}});c.dispatchEvent(L)}},v=()=>{u.current&&(d?(Object.assign(u.current.style,{position:"relative",top:"",left:"",width:"",height:"",zIndex:""}),document.body.style.overflow="auto",p(!1)):(Object.assign(u.current.style,{position:"fixed",top:"0",left:"0",width:"100dvw",height:"100dvh",zIndex:"9999"}),document.body.style.overflow="hidden",p(!0)),setTimeout(()=>{window.dispatchEvent(new Event("resize"))},100))},a={zoomIn:n("zoom-in"),zoomOut:n("zoom-out"),rotateLeft:n("rotate-left"),rotateRight:n("rotate-right"),flipX:n("flip-x"),flipY:n("flip-y"),download:n("download"),next:m,prev:R,toggleFullScreen:v},H=t.useCallback(e=>{e&&a[e]&&a[e]()},[a]);return{state:{isFullscreen:d,activeIndex:l},registerItem:z,handleNext:m,handlePrev:R,createCustomEvent:n,toggleFullScreen:v,handleClickAction:H,actions:a,contentRef:g,toolbarRef:x,thumbnailRef:w,prevRef:E,nextRef:I}}});export{h as defaultProps,O as useGallery};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/gallery/useGallery.tsx","../../src/gallery/useGallery.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { Carousel } from 'primereact/carousel';\nimport * as React from 'react';\nimport { defaultProps } from './useGallery.props';\n\nexport const useGallery = withHeadless({\n name: 'useGallery',\n defaultProps,\n setup: ({ props, elementRef }) => {\n const { activeIndex: activeIndexProp = 0, onActiveIndexChange = undefined } = props;\n const contentRef = React.useRef<HTMLDivElement>(null);\n const itemsRef = React.useRef<React.RefObject<HTMLDivElement>[]>([]);\n const toolbarRef = React.useRef<HTMLDivElement>(null);\n const thumbnailRef = React.useRef<React.RefObject<typeof Carousel>>(null);\n const prevRef = React.useRef<HTMLButtonElement>(null);\n const nextRef = React.useRef<HTMLButtonElement>(null);\n const [, forceUpdate] = React.useState(0);\n const [activeIndex, setActiveIndex] = React.useState(activeIndexProp);\n\n const [isFullscreen, setIsFullscreen] = React.useState(false);\n\n React.useEffect(() => {\n setActiveIndex(activeIndexProp);\n }, [activeIndexProp]);\n\n const registerItem = (ref: HTMLDivElement | null): number => {\n if (!ref) return -1;\n\n const existingIndex = itemsRef.current.findIndex((item) => item.current === ref);\n\n if (existingIndex === -1) {\n itemsRef.current.push({ current: ref });\n forceUpdate((x) => x + 1);\n\n return itemsRef.current.length - 1;\n }\n\n return existingIndex;\n };\n\n const handleNext = () => {\n const newIndex = (activeIndex + 1) % itemsRef.current.length;\n\n setActiveIndex(newIndex);\n onActiveIndexChange?.({ originalEvent: undefined as unknown as React.SyntheticEvent, value: newIndex });\n };\n\n const handlePrev = () => {\n const newIndex = (activeIndex - 1 + itemsRef.current.length) % itemsRef.current.length;\n\n setActiveIndex(newIndex);\n onActiveIndexChange?.({ originalEvent: undefined as unknown as React.SyntheticEvent, value: newIndex });\n };\n\n const createCustomEvent = (action: string) => () => {\n const activeItem = itemsRef.current[activeIndex]?.current;\n\n if (activeItem) {\n const event = new CustomEvent('gallery-' + action, {\n detail: { action: action }\n });\n\n activeItem.dispatchEvent(event);\n }\n };\n\n const toggleFullScreen = () => {\n if (!elementRef.current) return;\n\n if (!isFullscreen) {\n Object.assign(elementRef.current.style, {\n position: 'fixed',\n top: '0',\n left: '0',\n width: '100dvw',\n height: '100dvh',\n zIndex: '9999'\n });\n\n document.body.style.overflow = 'hidden';\n\n setIsFullscreen(true);\n } else {\n Object.assign(elementRef.current.style, {\n position: 'relative',\n top: '',\n left: '',\n width: '',\n height: '',\n zIndex: ''\n });\n\n document.body.style.overflow = 'auto';\n\n setIsFullscreen(false);\n }\n\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n }, 100);\n };\n\n const actions = {\n zoomIn: createCustomEvent('zoom-in'),\n zoomOut: createCustomEvent('zoom-out'),\n rotateLeft: createCustomEvent('rotate-left'),\n rotateRight: createCustomEvent('rotate-right'),\n flipX: createCustomEvent('flip-x'),\n flipY: createCustomEvent('flip-y'),\n download: createCustomEvent('download'),\n next: handleNext,\n prev: handlePrev,\n toggleFullScreen: toggleFullScreen\n };\n\n const handleClickAction = React.useCallback(\n (action?: string) => {\n if (action && actions[action as keyof typeof actions]) {\n actions[action as keyof typeof actions]();\n }\n },\n [actions]\n );\n\n const state = {\n isFullscreen,\n activeIndex\n };\n\n return {\n state,\n registerItem,\n handleNext,\n handlePrev,\n createCustomEvent,\n toggleFullScreen,\n handleClickAction,\n actions,\n contentRef,\n toolbarRef,\n thumbnailRef,\n prevRef,\n nextRef\n };\n }\n});\n","import type { useGalleryProps } from '@primereact/types/shared/gallery';\n\nexport const defaultProps: useGalleryProps = {\n activeIndex: 0,\n onActiveIndexChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","React","defaultProps","useGallery","withHeadless","defaultProps","props","elementRef","activeIndexProp","onActiveIndexChange","contentRef","itemsRef","toolbarRef","thumbnailRef","prevRef","nextRef","forceUpdate","activeIndex","setActiveIndex","isFullscreen","setIsFullscreen","registerItem","ref","existingIndex","item","x","handleNext","newIndex","handlePrev","createCustomEvent","action","_a","activeItem","event","toggleFullScreen","actions","handleClickAction"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var ye=Object.defineProperty,ve=Object.defineProperties;var be=Object.getOwnPropertyDescriptors;var it=Object.getOwnPropertySymbols;var Ie=Object.prototype.hasOwnProperty,Ge=Object.prototype.propertyIsEnumerable;var at=(o,r,s)=>r in o?ye(o,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):o[r]=s,P=(o,r)=>{for(var s in r||(r={}))Ie.call(r,s)&&at(o,s,r[s]);if(it)for(var s of it(r))Ge.call(r,s)&&at(o,s,r[s]);return o},b=(o,r)=>ve(o,be(r));import{withHeadless as xr}from"@primereact/core/headless";import{Component as lr}from"@primereact/core/component";import{useGallery as ur}from"@primereact/headless/gallery";import{styles as fr}from"@primereact/styles/gallery";import{mergeProps as dr}from"@primeuix/utils";import{withComponent as Re}from"@primereact/core/component";import{styles as Ee}from"@primereact/styles/base";var m=({name:o="UnknownComponent",defaultProps:r,styles:s=b(P({},Ee),{name:"global"}),components:t,setup:e,render:a})=>Re({name:o,defaultProps:r,styles:s,components:t,setup:e,render:a});import*as _ from"react";import{createOptionalContext as we}from"@primereact/core/utils";var[mt,f]=we();import*as pt from"@primereact/headless/gallery";var ct=b(P({},pt.defaultProps),{as:"div"});import{Component as Te}from"@primereact/core/component";import{mergeProps as Se}from"@primeuix/utils";import*as ut from"react";var lt={as:"div"};var ft=m({name:"GalleryBackdrop",defaultProps:lt,setup(){return{gallery:f()}},render(o){let{props:r,ptmi:s,gallery:t}=o,e=Se({className:t==null?void 0:t.cx("backdrop")},s("root"));return ut.createElement(Te,{instance:o,attrs:e,children:r.children})}});import{Component as ke}from"@primereact/core/component";import{mergeProps as Le}from"@primeuix/utils";import*as xt from"react";var dt={as:"div"};var ht=m({name:"GalleryContent",defaultProps:dt,setup(){return{gallery:f()}},render(o){let{props:r,ptmi:s,gallery:t}=o,e=Le({className:t==null?void 0:t.cx("content")},s("root"));return xt.createElement(ke,{instance:o,attrs:e,children:r.children,ref:t==null?void 0:t.contentRef})}});import{Component as Me}from"@primereact/core/component";import{useGalleryItem as ge}from"@primereact/headless/gallery/item";import{mergeProps as ze}from"@primeuix/utils";import*as K from"react";import{createOptionalContext as Ne}from"@primereact/core/utils";var[Ct,jr]=Ne();import*as Pt from"@primereact/headless/gallery";var yt=b(P({},Pt.defaultProps),{as:"div"});var vt=m({name:"GalleryItem",defaultProps:yt,setup(o){let r=f(),s=ge(o.inProps);return b(P({},s),{gallery:r})},render(o){let{id:r,props:s,ptmi:t,gallery:e,handleClick:a,handlePointerDown:N,handlePointerMove:S,handlePointerUp:k,handleDragStart:y,CSSVariables:L,attributes:x}=o,H=ze(P({id:r,className:e==null?void 0:e.cx("item"),onClick:a,onPointerDown:N,onPointerMove:S,onPointerUp:k,onDragStart:y,style:L},x),t("root"),e==null?void 0:e.ptm("item"));return K.createElement(Ct,{value:o},K.createElement(Me,{instance:o,attrs:H,children:s.children}))}});import{Component as De}from"@primereact/core/component";import{mergeProps as Xe}from"@primeuix/utils";import*as It from"react";var bt={as:"button"};var Gt=m({name:"GalleryNext",defaultProps:bt,setup(){return{gallery:f()}},render(o){var a;let{props:r,ptmi:s,gallery:t}=o,e=Xe({className:t==null?void 0:t.cx("next"),onClick:(a=t==null?void 0:t.actions)==null?void 0:a.next},s("root"));return It.createElement(De,{instance:o,attrs:e,children:r.children,ref:t==null?void 0:t.nextRef})}});import{Component as Ye}from"@primereact/core/component";import{mergeProps as He}from"@primeuix/utils";import*as Et from"react";var Rt={as:"button"};var wt=m({name:"GalleryPrev",defaultProps:Rt,setup(){return{gallery:f()}},render(o){var a;let{props:r,ptmi:s,gallery:t}=o,e=He({className:t==null?void 0:t.cx("prev"),onClick:(a=t==null?void 0:t.actions)==null?void 0:a.prev},s("root"));return Et.createElement(Ye,{instance:o,attrs:e,children:r.children,ref:t==null?void 0:t.prevRef})}});import{Component as er}from"@primereact/core/component";import{mergeProps as rr}from"@primeuix/utils";import{Component as Je}from"@primereact/core/component";import{useCarousel as Qe}from"@primereact/headless/carousel";import{styles as Ze}from"@primereact/styles/carousel";import{mergeProps as tr}from"@primeuix/utils";import*as q from"react";import{createOptionalContext as Oe}from"@primereact/core/utils";var[Tt,I]=Oe();import*as St from"@primereact/headless/carousel";var kt=b(P({},St.defaultProps),{as:"div"});import{Component as $e}from"@primereact/core/component";import{mergeProps as Nt}from"@primeuix/utils";import*as V from"react";var Lt={as:"div"};var Mt=m({name:"CarouselContent",defaultProps:Lt,setup(){return{carousel:I()}},render(o){let{props:r,ptmi:s,carousel:t}=o,e=Nt({className:t==null?void 0:t.cx("content",{orientation:t==null?void 0:t.props.orientation}),style:{"--p-swipe-amount-x":"0px","--p-swipe-amount-y":"0px","--p-spacing":`${t==null?void 0:t.props.spacing}px`},onPointerDown:t==null?void 0:t.handlePointerDown,onPointerMove:t==null?void 0:t.handlePointerMove,onPointerUp:t==null?void 0:t.handlePointerUp,onClick:t==null?void 0:t.handleClick,onClickCapture:t==null?void 0:t.handleClick},t==null?void 0:t.ptm("content"),s("root")),a=Nt({className:t==null?void 0:t.cx("viewport")},t==null?void 0:t.ptm("viewport"));return V.createElement("div",P({},a),V.createElement($e,{instance:o,attrs:e,children:r.children,ref:t==null?void 0:t.carouselRef}))}});import{Component as je}from"@primereact/core/component";import{mergeProps as Be}from"@primeuix/utils";import*as zt from"react";var gt={as:"button",snap:void 0,index:void 0};var W=m({name:"CarouselIndicator",defaultProps:gt,setup(){return{carousel:I()}},render(o){var a;let{props:r,ptmi:s,carousel:t}=o,e=Be({className:t==null?void 0:t.cx("indicator",{active:r.index===((a=t==null?void 0:t.state)==null?void 0:a.activeIndex)}),onClick:()=>t==null?void 0:t.slideTo(void 0,r.snap)},t==null?void 0:t.ptm("indicator"),s("root"));return zt.createElement(je,{instance:o,attrs:e,children:r.children})}});import{Component as Ae}from"@primereact/core/component";import{mergeProps as We}from"@primeuix/utils";import*as X from"react";var Dt={as:"div"};var Xt=m({name:"CarouselIndicators",defaultProps:Dt,setup(){return{carousel:I()}},render(o){var a,N;let{props:r,ptmi:s,carousel:t}=o,e=We({className:t==null?void 0:t.cx("indicators")},t==null?void 0:t.ptm("indicators"),s("root"));return X.createElement(Ae,{instance:o,attrs:e,children:(N=r.children)!=null?N:X.createElement(X.Fragment,null,(a=t==null?void 0:t.state)==null?void 0:a.snapPoints.map((S,k)=>X.createElement(W,{key:k,snap:S,index:k})))})}});import{Component as Ue}from"@primereact/core/component";import{mergeProps as Fe}from"@primeuix/utils";import*as Ht from"react";var Yt={as:"div",size:100};var Ot=m({name:"CarouselItem",defaultProps:Yt,setup(){return{carousel:I()}},render(o){let{props:r,ptmi:s,carousel:t}=o,e=Fe({className:t==null?void 0:t.cx("item"),style:{"--p-slide-size":`${r.size}%`}},t==null?void 0:t.ptm("item"),s("root"));return Ht.createElement(Ue,{instance:o,attrs:e,children:r.children,ref:t==null?void 0:t.addSlideRef})}});import{Component as Ke}from"@primereact/core/component";import{mergeProps as Ve}from"@primeuix/utils";import*as jt from"react";var $t={as:"button"};var Bt=m({name:"CarouselNext",defaultProps:$t,setup(){return{carousel:I()}},render(o){let{props:r,ptmi:s,carousel:t}=o,e=t==null?void 0:t.state.nextDisabled,a=Ve({className:t==null?void 0:t.cx("prev",{disabled:e}),onClick:t==null?void 0:t.handleNext,disabled:e},t==null?void 0:t.ptm("prev"),s("root"));return jt.createElement(Ke,{instance:o,attrs:a,children:r.children})}});import{Component as qe}from"@primereact/core/component";import{mergeProps as _e}from"@primeuix/utils";import*as Wt from"react";var At={as:"button"};var Ut=m({name:"CarouselPrev",defaultProps:At,setup(){return{carousel:I()}},render(o){let{props:r,ptmi:s,carousel:t}=o,e=t==null?void 0:t.state.prevDisabled,a=_e({className:t==null?void 0:t.cx("prev",{disabled:e}),onClick:t==null?void 0:t.handlePrev,disabled:e},t==null?void 0:t.ptm("prev"),s("root"));return Wt.createElement(qe,{instance:o,attrs:a,children:r.children})}});var Y=m({name:"Carousel",defaultProps:kt,styles:Ze,setup(o){return Qe(o.inProps)},render(o){let{id:r,props:s,ptmi:t,cx:e}=o,a=tr({id:r,className:e("root")},t("root"));return q.createElement(Tt,{value:o},q.createElement(Je,{instance:o,attrs:a,children:s.children}))},components:{Content:Mt,Item:Ot,Next:Bt,Prev:Ut,Indicators:Xt,Indicator:W}});import*as Kt from"react";var Ft={as:"div"};var Vt=m({name:"GalleryThumbnail",defaultProps:Ft,setup(){return{gallery:f()}},render(o){let{props:r,ptmi:s,gallery:t}=o,e=rr({className:t==null?void 0:t.cx("thumbnail")},s("root"));return Kt.createElement(er,{as:Y,instance:o,attrs:e,children:r.children,ref:t==null?void 0:t.thumbnailRef})}});import{Component as or}from"@primereact/core/component";import{mergeProps as nr}from"@primeuix/utils";import*as _t from"react";var qt={};var Jt=m({name:"GalleryThumbnailContent",defaultProps:qt,setup(){return{gallery:f()}},render(o){let{props:r,ptmi:s,gallery:t}=o,e=nr({className:t==null?void 0:t.cx("thumbnailContent")},s("root"));return _t.createElement(or,{as:Y.Content,instance:o,attrs:e,children:r.children})}});import{Component as sr}from"@primereact/core/component";import{mergeProps as ir}from"@primeuix/utils";import*as Zt from"react";var Qt={};var te=m({name:"GalleryThumbnailItem",defaultProps:Qt,setup(){return{gallery:f()}},render(o){let{props:r,ptmi:s,gallery:t}=o,e=ir({className:t==null?void 0:t.cx("thumbnailItem")},s("root"));return Zt.createElement(sr,{as:Y.Item,instance:o,attrs:e,children:r.children})}});import{Component as ar}from"@primereact/core/component";import{mergeProps as mr}from"@primeuix/utils";import*as re from"react";var ee={as:"div"};var oe=m({name:"GalleryToolbar",defaultProps:ee,setup(){return{gallery:f()}},render(o){let{props:r,ptmi:s,gallery:t}=o,e=mr({className:t==null?void 0:t.cx("toolbar")},s("root"));return re.createElement(ar,{instance:o,attrs:e,children:r.children,ref:t==null?void 0:t.toolbarRef})}});import{Component as pr}from"@primereact/core/component";import{mergeProps as cr}from"@primeuix/utils";import*as se from"react";var ne={as:"div",action:void 0,onClick:void 0};var ie=m({name:"GalleryToolbarItem",defaultProps:ne,setup(){return{gallery:f()}},render(o){let{props:r,ptmi:s,gallery:t}=o,e=cr({className:t==null?void 0:t.cx("toolbarItem"),onClick:()=>{var a;t==null||t.handleClickAction(r==null?void 0:r.action),(a=r==null?void 0:r.onClick)==null||a.call(r)}},s("root"));return se.createElement(pr,{instance:o,attrs:e,children:r.children})}});var Ks=m({name:"Gallery",defaultProps:ct,styles:fr,setup(o){return ur(o.inProps)},render(o){let{id:r,props:s,ptmi:t,cx:e}=o,a=dr({id:r,className:e("root")},t("root"));return _.createElement(mt,{value:o},_.createElement(lr,{instance:o,attrs:a,children:s.children}))},components:{Backdrop:ft,Content:ht,Item:vt,Next:Gt,Prev:wt,Toolbar:oe,ToolbarItem:ie,Thumbnail:Vt,ThumbnailContent:Jt,ThumbnailItem:te}});import*as p from"react";var ae={normalScale:1,zoomedScale:3};var oi=xr({name:"useGalleryItem",defaultProps:ae,setup:({props:o,elementRef:r})=>{let{normalScale:s=1,zoomedScale:t=3}=o,e=f(),[a,N]=p.useState(-1),[S,k]=p.useState(!1),[y,L]=p.useState({x:0,y:0}),[x,H]=p.useState(1),[T,J]=p.useState(0),[O,Q]=p.useState({x:1,y:1}),[Z,U]=p.useState(!1),[$,tt]=p.useState({x:0,y:0}),[F,j]=p.useState(!1),E=p.useRef(new Map),M=p.useRef(0),w=p.useCallback(()=>{if(!(e!=null&&e.contentRef.current)||!r.current)return;let n=e==null?void 0:e.contentRef.current.getBoundingClientRect(),i=r.current.firstElementChild;if(!i)return;let c=i.naturalWidth||i.offsetWidth,l=i.naturalHeight||i.offsetHeight;if(c===0||l===0)return;let C=Math.abs(T)%180===90;C&&([c,l]=[l,c]);let h=c/l,v=n.width/n.height,d,u;h>v?(d=Math.min(n.width*.99,c),u=d/h):(u=Math.min(n.height*.99,l),d=u*h),C?(i.style.width=`${u}px`,i.style.height=`${d}px`,r.current.style.width=`${u>0?u:"auto"}px`,r.current.style.height=`${d>0?d:"auto"}px`):(i.style.width=`${d}px`,i.style.height=`${u}px`,r.current.style.width=`${d>0?d:"auto"}px`,r.current.style.height=`${u>0?u:"auto"}px`),r.current.style.aspectRatio=`${c/l}`},[e==null?void 0:e.contentRef,T]),g=p.useCallback(n=>{if(!(e!=null&&e.contentRef.current)||!r.current)return{minX:0,maxX:0,minY:0,maxY:0};let i=e==null?void 0:e.contentRef.current.getBoundingClientRect(),c=n!==void 0?n:x,l=r.current.firstElementChild;if(!l)return{minX:0,maxX:0,minY:0,maxY:0};let C=l.offsetWidth,h=l.offsetHeight;Math.abs(T)%180===90&&([C,h]=[h,C]);let d=C*c,u=h*c,G=i.width/2,R=i.height/2,z=d/2,D=u/2,xe=z>G?z-G:0,he=z>G?-(z-G):0,Ce=D>R?D-R:0,Pe=D>R?-(D-R):0;return{minX:he,maxX:xe,minY:Pe,maxY:Ce}},[e==null?void 0:e.contentRef,x,T]),B=p.useCallback(()=>{H(t);let n={visibility:"hidden",opacity:0,pointerEvents:"none",userSelect:"none",touchAction:"none"};e!=null&&e.toolbarRef.current&&Object.assign(e==null?void 0:e.toolbarRef.current.style,n),e!=null&&e.thumbnailRef.current&&Object.assign(e==null?void 0:e.thumbnailRef.current.elementRef.current.style,n),e!=null&&e.prevRef.current&&Object.assign(e.prevRef.current.style,n),e!=null&&e.nextRef.current&&Object.assign(e.nextRef.current.style,n),r.current&&(r.current.style.cursor="zoom-out",r.current.style.pointerEvents="auto")},[t,e==null?void 0:e.toolbarRef,e==null?void 0:e.thumbnailRef,e==null?void 0:e.prevRef,e==null?void 0:e.nextRef]),A=p.useCallback(()=>{H(s),L({x:0,y:0});let n={visibility:"",opacity:"",pointerEvents:"",userSelect:"",touchAction:""};e!=null&&e.toolbarRef.current&&Object.assign(e.toolbarRef.current.style,n),e!=null&&e.thumbnailRef.current&&Object.assign(e.thumbnailRef.current.elementRef.current.style,n),e!=null&&e.prevRef.current&&Object.assign(e.prevRef.current.style,n),e!=null&&e.nextRef.current&&Object.assign(e.nextRef.current.style,n),r.current&&(r.current.style.cursor="zoom-in",r.current.style.pointerEvents="auto")},[s,e==null?void 0:e.toolbarRef,e==null?void 0:e.thumbnailRef,e==null?void 0:e.prevRef,e==null?void 0:e.nextRef]),et=()=>{r.current&&(r.current.style.transition="none",J(n=>n-90),setTimeout(()=>{r.current&&(r.current.style.transition="")},0))},rt=()=>{r.current&&(r.current.style.transition="none",J(n=>n+90),setTimeout(()=>{r.current&&(r.current.style.transition="")},0))},ot=()=>{Q(n=>b(P({},n),{x:Math.sign(n.x)*-1}))},nt=()=>{Q(n=>b(P({},n),{y:Math.sign(n.y)*-1}))},st=()=>{if(!r.current)return;let n=r.current.querySelector("img");if(!n||!n.src)return;let i=document.createElement("a");i.href=n.src;let c=n.src.split("/"),l=c[c.length-1]||"image.jpg";i.download=l,i.target="_blank",document.body.appendChild(i),i.click(),document.body.removeChild(i)},me=p.useCallback(n=>{if(F){j(!1);return}if(x===s){if(r.current){let i=r.current.getBoundingClientRect(),c=i.width/2,l=i.height/2,C=n.clientX-i.left,h=n.clientY-i.top,v=c-C,d=l-h,u=v*(t-1),G=d*(t-1),R=g(t),z=Math.max(R.minX,Math.min(R.maxX,u)),D=Math.max(R.minY,Math.min(R.maxY,G));L({x:z,y:D})}B()}else A()},[F,s,t,g,x,B,A]),pe=p.useCallback(n=>{n.preventDefault()},[]),ce=p.useCallback(n=>{n.currentTarget.setPointerCapture(n.pointerId),E.current.set(n.pointerId,{x:n.clientX,y:n.clientY}),x>1&&(n.pointerType==="mouse"?(U(!0),tt({x:n.clientX-y.x,y:n.clientY-y.y}),j(!1)):n.pointerType==="touch"&&E.current.size===1&&(U(!0),tt({x:n.clientX-y.x,y:n.clientY-y.y}),j(!1),M.current=0)),n.pointerType==="touch"&&E.current.size===1&&(M.current=0)},[x,y]),le=p.useCallback(n=>{if(!E.current.has(n.pointerId)||!r.current)return;r.current.style.transition="none",r.current.style.cursor||(r.current.style.cursor=x>s?"zoom-out":"zoom-in"),E.current.set(n.pointerId,{x:n.clientX,y:n.clientY});let c=Array.from(E.current.values());if(c.length===2){let[l,C]=c,h=Math.hypot(C.x-l.x,C.y-l.y);if(M.current>0){let v=(h-M.current)*.01;if(Math.abs(v)>.01){let d=x===s?t:s,u=g(d),G=Math.max(u.minX,Math.min(u.maxX,y.x)),R=Math.max(u.minY,Math.min(u.maxY,y.y));L({x:G,y:R}),H(d)}}M.current=h}else if(c.length===1&&Z){let l=c[0],C=l.x-$.x,h=l.y-$.y,v=g(),d=Math.max(v.minX,Math.min(v.maxX,C)),u=Math.max(v.minY,Math.min(v.maxY,h));L({x:d,y:u}),j(!0)}},[Z,$,x,s,t,y,g]),ue=p.useCallback(n=>{r.current&&(r.current.style.transition="",r.current.style.cursor=x>s?"zoom-out":"zoom-in",n.currentTarget.releasePointerCapture(n.pointerId),E.current.delete(n.pointerId),E.current.size<2&&(M.current=0),E.current.size===0&&U(!1))},[]);p.useEffect(()=>{x<=1&&L({x:0,y:0})},[x]),p.useEffect(()=>{(e==null?void 0:e.state.activeIndex)===a&&document.readyState==="complete"&&w()},[e==null?void 0:e.state.activeIndex,a,w]),p.useEffect(()=>{(e==null?void 0:e.state.activeIndex)===a&&w()},[T,w,e==null?void 0:e.state.activeIndex,a]),p.useEffect(()=>{(e==null?void 0:e.state.activeIndex)===a&&(e==null?void 0:e.state.isFullscreen)!==void 0&&w()},[e==null?void 0:e.state.isFullscreen,w,e==null?void 0:e.state.activeIndex,a]),p.useEffect(()=>{let n=()=>{(e==null?void 0:e.state.activeIndex)===a&&w()};return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[e==null?void 0:e.state.activeIndex,a,w]),p.useEffect(()=>{if(e&&r.current){let n=e.registerItem(r.current);N(n)}},[e]),p.useEffect(()=>{let n=c=>{var l,C,h,v,d,u,G;((l=c.detail)==null?void 0:l.action)==="zoom-in"?B():((C=c.detail)==null?void 0:C.action)==="zoom-out"?A():((h=c.detail)==null?void 0:h.action)==="rotate-left"?et():((v=c.detail)==null?void 0:v.action)==="rotate-right"?rt():((d=c.detail)==null?void 0:d.action)==="flip-x"?ot():((u=c.detail)==null?void 0:u.action)==="flip-y"?nt():((G=c.detail)==null?void 0:G.action)==="download"&&st()},i=r.current;return i&&(i.addEventListener("gallery-zoom-in",n),i.addEventListener("gallery-zoom-out",n),i.addEventListener("gallery-rotate-left",n),i.addEventListener("gallery-rotate-right",n),i.addEventListener("gallery-flip-x",n),i.addEventListener("gallery-flip-y",n),i.addEventListener("gallery-download",n)),()=>{i&&(i.removeEventListener("gallery-zoom-in",n),i.removeEventListener("gallery-zoom-out",n),i.removeEventListener("gallery-rotate-left",n),i.removeEventListener("gallery-rotate-right",n),i.removeEventListener("gallery-flip-x",n),i.removeEventListener("gallery-flip-y",n),i.removeEventListener("gallery-download",n))}},[s,t]),p.useEffect(()=>{(e==null?void 0:e.state.activeIndex)===a?k(!0):k(!1)},[e==null?void 0:e.state.activeIndex,a]);let fe=p.useMemo(()=>({"data-active":S}),[S]),de=p.useMemo(()=>({"--position-x":`${y.x}px`,"--position-y":`${y.y}px`,"--scale":`${x}`,"--rotation":`${T}deg`,"--flip-x":O.x,"--flip-y":O.y}),[y,x,T,O]);return{state:{index:a,position:y,scale:x,rotation:T,flip:O,isActive:S,dragStart:$,hasDragged:F},attributes:fe,CSSVariables:de,handlePointerUp:ue,handlePointerMove:le,handlePointerDown:ce,handleClick:me,handleDragStart:pe,zoomIn:B,zoomOut:A,rotateLeft:et,rotateRight:rt,flipX:ot,flipY:nt,download:st,calculateConstraints:g,calculateItemSize:w}}});export{ae as defaultItemProps,oi as useGalleryItem};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|