@tedi-design-system/react 19.2.0-rc.5 → 19.2.0-rc.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tedi-design-system/react",
3
- "version": "19.2.0-rc.5",
3
+ "version": "19.2.0-rc.6",
4
4
  "description": "TEDI Design System React component library — accessible, reusable UI components. Docs & live examples: https://storybook.tedi.ee/react/rc/",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("../../../../../../../external/classnames/index.cjs.js"),m=require("react"),i=require("../../../../base/typography/text/text.cjs.js"),u=require("../../../../buttons/button/button.cjs.js"),l=require("../../carousel.module.scss.cjs.js"),v=require("../../carousel-context.cjs.js"),C=require("../../../../../providers/label-provider/use-labels.cjs.js"),d=m.forwardRef(({withArrows:c=!1,variant:b="dots",className:f},x)=>{const{getLabel:o}=C.useLabels(),r=v.useCarouselContext(),{slidesCount:s,slideIndex:a}=r;return e.jsxs("div",{ref:x,className:n.default(l.default["tedi-carousel__indicators"],f),children:[c&&e.jsx(u.Button,{visualType:"neutral",icon:"arrow_back",disabled:!r.canPrev,onClick:r.prev,children:o("carousel.move-back")}),b==="dots"?Array.from({length:s},(_,t)=>e.jsx("button",{type:"button","aria-label":o("carousel.show-slide",t+1),"aria-current":t===a?"true":void 0,className:n.default(l.default["tedi-carousel__indicator"],{[l.default["tedi-carousel__indicator--active"]]:t===a}),onClick:()=>r.goToIndex(t,{focusSlide:!0})},t)):s>0&&e.jsxs("div",{children:[e.jsx(i.Text,{element:"span",modifiers:"bold",color:"brand",children:a+1}),e.jsx(i.Text,{element:"span",color:"tertiary",children:` / ${s}`})]}),c&&e.jsx(u.Button,{visualType:"neutral",icon:"arrow_forward",disabled:!r.canNext,onClick:r.next,children:o("carousel.move-forward")})]})});d.displayName="CarouselIndicators";exports.CarouselIndicators=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("../../../../../../../external/classnames/index.cjs.js"),v=require("react"),i=require("../../../../base/typography/text/text.cjs.js"),u=require("../../../../buttons/button/button.cjs.js"),l=require("../../carousel.module.scss.cjs.js"),p=require("../../carousel-context.cjs.js"),j=require("../../../../../providers/label-provider/use-labels.cjs.js"),d=v.forwardRef(({withArrows:n=!1,variant:b="dots",className:x},f)=>{const{getLabel:r}=j.useLabels(),t=p.useCarouselContext(),{positions:s,activePositionIndex:a}=t;return e.jsxs("div",{ref:f,className:c.default(l.default["tedi-carousel__indicators"],x),children:[n&&e.jsx(u.Button,{visualType:"neutral",icon:"arrow_back",disabled:!t.canPrev,onClick:t.prev,children:r("carousel.move-back")}),b==="dots"?s.map((m,o)=>e.jsx("button",{type:"button","aria-label":r("carousel.show-slide",o+1),"aria-current":o===a?"true":void 0,className:c.default(l.default["tedi-carousel__indicator"],{[l.default["tedi-carousel__indicator--active"]]:o===a}),onClick:()=>t.goToIndex(m,{focusSlide:!0})},o)):s.length>0&&e.jsxs("div",{children:[e.jsx(i.Text,{element:"span",modifiers:"bold",color:"brand",children:a+1}),e.jsx(i.Text,{element:"span",color:"tertiary",children:` / ${s.length}`})]}),n&&e.jsx(u.Button,{visualType:"neutral",icon:"arrow_forward",disabled:!t.canNext,onClick:t.next,children:r("carousel.move-forward")})]})});d.displayName="CarouselIndicators";exports.CarouselIndicators=d;
@@ -1,33 +1,33 @@
1
1
  import { jsxs as c, jsx as e } from "react/jsx-runtime";
2
2
  import n from "../../../../../../../external/classnames/index.es.js";
3
- import { forwardRef as b } from "react";
3
+ import { forwardRef as v } from "react";
4
4
  import { Text as d } from "../../../../base/typography/text/text.es.js";
5
5
  import { Button as m } from "../../../../buttons/button/button.es.js";
6
- import l from "../../carousel.module.scss.es.js";
7
- import { useCarouselContext as v } from "../../carousel-context.es.js";
6
+ import i from "../../carousel.module.scss.es.js";
7
+ import { useCarouselContext as h } from "../../carousel-context.es.js";
8
8
  import { useLabels as _ } from "../../../../../providers/label-provider/use-labels.es.js";
9
- const C = b(
10
- ({ withArrows: i = !1, variant: u = "dots", className: f }, p) => {
11
- const { getLabel: a } = _(), r = v(), { slidesCount: t, slideIndex: s } = r;
12
- return /* @__PURE__ */ c("div", { ref: p, className: n(l["tedi-carousel__indicators"], f), children: [
13
- i && /* @__PURE__ */ e(m, { visualType: "neutral", icon: "arrow_back", disabled: !r.canPrev, onClick: r.prev, children: a("carousel.move-back") }),
14
- u === "dots" ? Array.from({ length: t }, (h, o) => /* @__PURE__ */ e(
9
+ const C = v(
10
+ ({ withArrows: l = !1, variant: u = "dots", className: p }, f) => {
11
+ const { getLabel: a } = _(), o = h(), { positions: t, activePositionIndex: s } = o;
12
+ return /* @__PURE__ */ c("div", { ref: f, className: n(i["tedi-carousel__indicators"], p), children: [
13
+ l && /* @__PURE__ */ e(m, { visualType: "neutral", icon: "arrow_back", disabled: !o.canPrev, onClick: o.prev, children: a("carousel.move-back") }),
14
+ u === "dots" ? t.map((b, r) => /* @__PURE__ */ e(
15
15
  "button",
16
16
  {
17
17
  type: "button",
18
- "aria-label": a("carousel.show-slide", o + 1),
19
- "aria-current": o === s ? "true" : void 0,
20
- className: n(l["tedi-carousel__indicator"], {
21
- [l["tedi-carousel__indicator--active"]]: o === s
18
+ "aria-label": a("carousel.show-slide", r + 1),
19
+ "aria-current": r === s ? "true" : void 0,
20
+ className: n(i["tedi-carousel__indicator"], {
21
+ [i["tedi-carousel__indicator--active"]]: r === s
22
22
  }),
23
- onClick: () => r.goToIndex(o, { focusSlide: !0 })
23
+ onClick: () => o.goToIndex(b, { focusSlide: !0 })
24
24
  },
25
- o
26
- )) : t > 0 && /* @__PURE__ */ c("div", { children: [
25
+ r
26
+ )) : t.length > 0 && /* @__PURE__ */ c("div", { children: [
27
27
  /* @__PURE__ */ e(d, { element: "span", modifiers: "bold", color: "brand", children: s + 1 }),
28
- /* @__PURE__ */ e(d, { element: "span", color: "tertiary", children: ` / ${t}` })
28
+ /* @__PURE__ */ e(d, { element: "span", color: "tertiary", children: ` / ${t.length}` })
29
29
  ] }),
30
- i && /* @__PURE__ */ e(m, { visualType: "neutral", icon: "arrow_forward", disabled: !r.canNext, onClick: r.next, children: a("carousel.move-forward") })
30
+ l && /* @__PURE__ */ e(m, { visualType: "neutral", icon: "arrow_forward", disabled: !o.canNext, onClick: o.next, children: a("carousel.move-forward") })
31
31
  ] });
32
32
  }
33
33
  );
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),De=require("../../../helpers/hooks/use-breakpoint.cjs.js"),ne=require("./carousel-utils.cjs.js"),Fe=require("../../../providers/label-provider/use-labels.cjs.js"),Ve={slidesPerView:{xs:1},gap:{xs:1},fade:!1,transitionMs:400,loop:!0,centered:!1},V=(T,p)=>(T%p+p)%p,Ee=T=>{const{getLabel:p}=Fe.useLabels(),E=De.default(),[l,se]=t.useState(Ve),[r,ce]=t.useState(0),[f,b]=t.useState(0),[h,Y]=t.useState(0),[j,R]=t.useState(!1),[x,oe]=t.useState(0),[H,ae]=t.useState(16),[ue,le]=t.useState(""),A=t.useRef(null),J=t.useRef(null),Q=t.useRef([]),P=t.useRef(!1),y=t.useRef(!1),$=t.useRef(!1),O=t.useRef(0),D=t.useRef(0),Z=t.useRef(0),_=t.useRef(0),q=t.useRef(0),G=t.useRef(),L=t.useRef(0),ee=t.useRef(!0),d=t.useRef(f),te=t.useRef(h);t.useEffect(()=>{d.current=f},[f]),t.useEffect(()=>{te.current=h},[h]);const a=t.useMemo(()=>ne.resolveBreakpointValue(l.slidesPerView,E),[l.slidesPerView,E]),C=t.useMemo(()=>ne.resolveBreakpointValue(l.gap,E),[l.gap,E]),S=t.useMemo(()=>C*H,[C,H]),s=l.loop,M=t.useMemo(()=>Math.max(0,r-Math.ceil(a)),[r,a]),k=t.useCallback(e=>s?e:Math.min(Math.max(e,0),M),[s,M]),m=s?r:0,ie=t.useMemo(()=>r===0?0:s?V(Math.floor(f),r):Math.min(Math.max(Math.round(f),0),r-1),[f,r,s]),X=s?f-h+m:f,fe=s||f>.001,de=s||f<M-.001,me=t.useMemo(()=>{if(!r)return[];if(!s)return Array.from({length:r},(c,o)=>o);const e=2*m+Math.ceil(a),n=h-m;return Array.from({length:e},(c,o)=>V(n+o,r))},[r,m,a,h,s]),he=t.useMemo(()=>`0 0 calc((100% - ${(a-1)*C}rem) / ${a})`,[a,C]),Me=t.useMemo(()=>{if(!x)return{gap:`${C}rem`,transform:"translate3d(0,0,0)",transition:"none"};const e=S*(a-1),n=(x-e)/a,c=s?f-h+m:f,o=l.centered?(x-n)/2:0,u=-c*(n+S)+o;return{gap:`${C}rem`,transform:`translate3d(${u}px, 0, 0)`,transition:j?`transform ${l.transitionMs}ms ease`:"none"}},[x,C,S,a,f,h,m,j,l.transitionMs,l.centered,s]),pe=t.useCallback(e=>{const n=Math.ceil(a);return e>=X&&e<X+n},[a,X]),be=t.useCallback((e,n,c)=>{const o=[e];if(l.fade){const u=l.fade==="both"||l.fade!=="right"&&a<=1;o.push(u?c:n)}return o.join(" ")},[l.fade,a]),Re=t.useCallback((e,n)=>{Q.current[e]=n},[]),w=t.useCallback(()=>{setTimeout(()=>{if(!ee.current||!r)return;const e=s?V(Math.floor(d.current),r):Math.min(Math.max(Math.round(d.current),0),r-1);le(p("carousel.slide",e+1,r))},100)},[p,r,s]),N=t.useCallback(()=>{P.current=!0,setTimeout(()=>{P.current=!1},l.transitionMs)},[l.transitionMs]),re=t.useCallback(()=>{setTimeout(()=>{var n;const e=d.current-te.current+m;(n=Q.current[e])==null||n.focus({preventScroll:!0})})},[m]),K=t.useCallback(()=>{!r||P.current||!s&&d.current>=M-.001||(R(!0),b(e=>k(e+1)),N(),w())},[r,s,M,k,N,w]),U=t.useCallback(()=>{!r||P.current||!s&&d.current<=.001||(R(!0),b(e=>k(e-1)),N(),w())},[r,s,k,N,w]),W=t.useCallback((e,n)=>{if(!(!r||P.current)){if(R(!0),s){const c=V(Math.floor(d.current),r),u=V(e,r)-c;b(i=>i+u)}else b(k(e));n!=null&&n.focusSlide?$.current=!0:w()}},[r,s,k,w]),ke=t.useCallback(e=>{e.target!==J.current||e.propertyName!=="transform"||y.current||(R(!1),Y(Math.floor(d.current)),$.current&&($.current=!1,re()))},[re]),Ce=t.useCallback(()=>{const e=A.current;e&&(e.scrollLeft=0,e.scrollTop=0)},[]),I=t.useCallback(()=>(x-S*(a-1))/a+S,[x,S,a]),ge=t.useCallback(e=>{if(!r)return;const n=Math.abs(e.deltaX)>Math.abs(e.deltaY)?e.deltaX:e.shiftKey?e.deltaY:0;if(!n)return;const c=I();if(!c)return;const o=n/c;L.current+=o;const u=m*.9,i=s?h-u:0,g=s?h+u:M,v=d.current+o,z=Math.min(Math.max(v,i),g),Te=z!==v;R(!1),b(z),clearTimeout(G.current),G.current=setTimeout(()=>{R(!0);const Pe=Math.sign(L.current),F=d.current;let B=Math.round(F);Math.abs(L.current)>.3&&(B=Pe>0?Math.ceil(F):Math.floor(F)),Te&&(F<=i&&(B=Math.ceil(i)),F>=g&&(B=Math.floor(g)));const ye=Math.min(Math.max(B,i),g);b(ye),L.current=0},120)},[r,I,m,h,s,M]),xe=t.useCallback(e=>{switch(e.key){case"ArrowRight":case"PageDown":e.preventDefault(),K();break;case"ArrowLeft":case"PageUp":e.preventDefault(),U();break;case"Home":e.preventDefault(),W(0);break;case"End":e.preventDefault(),W(r-1);break}},[K,U,W,r]),Se=t.useCallback(e=>{var n;r&&((n=A.current)==null||n.setPointerCapture(e.pointerId),y.current=!0,R(!1),O.current=e.clientX,D.current=d.current,Z.current=e.timeStamp,_.current=e.clientX,q.current=e.timeStamp,s&&Y(Math.floor(d.current)))},[r,s]),we=t.useCallback(e=>{if(!y.current)return;const n=I();if(!n)return;const c=e.clientX-O.current;if(Number.isNaN(c))return;_.current=e.clientX,q.current=e.timeStamp;const o=c/n,u=D.current-o,i=m*.9,g=Math.floor(D.current),v=s?g-i:0,z=s?g+i:M;b(Math.min(Math.max(u,v),z))},[I,m,s,M]),Ie=t.useCallback(()=>{if(!y.current)return;y.current=!1,R(!0);const e=I(),n=Math.round(d.current);let c=n;const o=q.current-Z.current,u=o>0&&e?-(_.current-O.current)/e/o:0;Math.abs(u)>.0015&&n===Math.round(D.current)&&(c=Math.round(D.current)+(u>0?1:-1)),b(k(c))},[I,k]);return t.useEffect(()=>{const e=A.current;if(!e)return;const n=i=>{oe(i),ae(parseFloat(getComputedStyle(document.documentElement).fontSize)||16)},c=getComputedStyle(e),o=(parseFloat(c.paddingLeft)||0)+(parseFloat(c.paddingRight)||0);n(e.clientWidth-o);const u=new ResizeObserver(([i])=>{i&&n(i.contentRect.width)});return u.observe(e),()=>u.disconnect()},[]),t.useEffect(()=>()=>{ee.current=!1,clearTimeout(G.current)},[]),{viewportRef:A,trackRef:J,setSlideRef:Re,setConfig:se,setSlidesCount:ce,slidesCount:r,slideIndex:ie,canPrev:fe,canNext:de,renderedIndices:me,renderedActiveIndex:X,slideFlex:he,trackStyle:Me,contentClassName:be,isSlideVisible:pe,announcement:ue,regionLabel:(T==null?void 0:T.trim())||p("carousel"),slideLabel:e=>p("carousel.slide",e,r),next:K,prev:U,goToIndex:W,onTransitionEnd:ke,onScroll:Ce,onWheel:ge,onKeyDown:xe,onPointerDown:Se,onPointerMove:we,onPointerUp:Ie}};exports.useCarousel=Ee;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),Ne=require("../../../helpers/hooks/use-breakpoint.cjs.js"),le=require("./carousel-utils.cjs.js"),_e=require("../../../providers/label-provider/use-labels.cjs.js"),ve={slidesPerView:{xs:1},gap:{xs:1},fade:!1,transitionMs:400,loop:!0,centered:!1},Fe=.3,Ve=1e-6,F=(S,b)=>(S%b+b)%b,Q=(S,b)=>S.reduce((I,d,$)=>Math.abs(d-b)<Math.abs(S[I]-b)?$:I,0),Xe=S=>{const{getLabel:b}=_e.useLabels(),I=Ne.default(),[d,$]=t.useState(ve),[s,fe]=t.useState(0),[m,C]=t.useState(0),[R,Z]=t.useState(0),[ee,x]=t.useState(!1),[E,de]=t.useState(0),[te,me]=t.useState(16),[he,Me]=t.useState(""),V=t.useRef(null),re=t.useRef(null),ne=t.useRef([]),L=t.useRef(!1),N=t.useRef(!1),G=t.useRef(!1),U=t.useRef(0),X=t.useRef(0),se=t.useRef(0),q=t.useRef(0),H=t.useRef(0),W=t.useRef(),_=t.useRef(0),ce=t.useRef(!0),h=t.useRef(m),oe=t.useRef(R);t.useEffect(()=>{h.current=m},[m]),t.useEffect(()=>{oe.current=R},[R]);const l=t.useMemo(()=>le.resolveBreakpointValue(d.slidesPerView,I),[d.slidesPerView,I]),T=t.useMemo(()=>le.resolveBreakpointValue(d.gap,I),[d.gap,I]),D=t.useMemo(()=>T*te,[T,te]),r=d.loop,u=t.useMemo(()=>{const e=Math.max(0,s-l),n=Math.round(e);return Math.abs(e-n)<Ve?n:e},[s,l]),f=t.useMemo(()=>{if(!s)return[];if(r)return Array.from({length:s},(c,o)=>o);const e=Math.floor(u),n=Array.from({length:e+1},(c,o)=>o);return u>e&&n.push(u),n},[s,r,u]),P=t.useCallback(e=>r?e:Math.min(Math.max(e,0),u),[r,u]),p=r?s:0,pe=t.useMemo(()=>f.length?r?F(Math.floor(m),s):Q(f,m):0,[f,m,s,r]),O=r?m-R+p:Math.ceil(m),be=s>0&&(r||m>0),Re=s>0&&(r||m<u);t.useLayoutEffect(()=>{r||(clearTimeout(W.current),_.current=0,h.current=P(h.current),C(e=>P(e)))},[r,u,P]);const ge=t.useMemo(()=>{if(!s)return[];if(!r)return Array.from({length:s},(c,o)=>o);const e=2*p+Math.ceil(l),n=R-p;return Array.from({length:e},(c,o)=>F(n+o,s))},[s,p,l,R,r]),Ce=t.useMemo(()=>`0 0 calc((100% - ${(l-1)*T}rem) / ${l})`,[l,T]),ke=t.useMemo(()=>{if(!E)return{gap:`${T}rem`,transform:"translate3d(0,0,0)",transition:"none"};const e=D*(l-1),n=(E-e)/l,c=r?m-R+p:m,o=d.centered?(E-n)/2:0,i=-c*(n+D)+o;return{gap:`${T}rem`,transform:`translate3d(${i}px, 0, 0)`,transition:ee?`transform ${d.transitionMs}ms ease`:"none"}},[E,T,D,l,m,R,p,ee,d.transitionMs,d.centered,r]),Se=t.useCallback(e=>{if(!r)return e+1>m&&e<m+l;const n=Math.ceil(l);return e>=O&&e<O+n},[l,O,r,m]),xe=t.useCallback((e,n,c)=>{const o=[e];if(d.fade){const i=d.fade==="both"||d.fade!=="right"&&l<=1;o.push(i?c:n)}return o.join(" ")},[d.fade,l]),we=t.useCallback((e,n)=>{ne.current[e]=n},[]),y=t.useCallback(()=>{setTimeout(()=>{if(!ce.current||!s)return;const e=r?F(Math.floor(h.current),s):Math.min(Math.max(Math.ceil(h.current),0),s-1);Me(b("carousel.slide",e+1,s))},100)},[b,s,r]),z=t.useCallback(()=>{L.current=!0,setTimeout(()=>{L.current=!1},d.transitionMs)},[d.transitionMs]),ae=t.useCallback(()=>{setTimeout(()=>{var n;const e=r?h.current-oe.current+p:Math.ceil(h.current);(n=ne.current[e])==null||n.focus({preventScroll:!0})})},[p,r]),K=t.useCallback(()=>{!s||L.current||!r&&h.current>=u||(x(!0),C(e=>r?e+1:f.find(n=>n>e)??u),z(),y())},[s,r,u,f,z,y]),Y=t.useCallback(()=>{!s||L.current||!r&&h.current<=0||(x(!0),C(e=>r?e-1:[...f].reverse().find(n=>n<e)??0),z(),y())},[s,r,f,z,y]),B=t.useCallback((e,n)=>{if(!(!s||L.current)){if(x(!0),r){const c=F(Math.floor(h.current),s),i=F(e,s)-c;C(a=>a+i)}else C(P(e));n!=null&&n.focusSlide?G.current=!0:y()}},[s,r,P,y]),Ie=t.useCallback(e=>{e.target!==re.current||e.propertyName!=="transform"||N.current||(x(!1),Z(Math.floor(h.current)),G.current&&(G.current=!1,ae()))},[ae]),Te=t.useCallback(()=>{const e=V.current;e&&(e.scrollLeft=0,e.scrollTop=0)},[]),A=t.useCallback(()=>(E-D*(l-1))/l+D,[E,D,l]),Pe=t.useCallback(e=>{if(!s)return;const n=Math.abs(e.deltaX)>Math.abs(e.deltaY)?e.deltaX:e.shiftKey?e.deltaY:0;if(!n)return;const c=A();if(!c)return;const o=n/c;_.current+=o;const i=p*.9,a=r?R-i:0,M=r?R+i:u,v=h.current+o,w=Math.min(Math.max(v,a),M),j=w!==v;x(!1),C(w),clearTimeout(W.current),W.current=setTimeout(()=>{x(!0);const ue=Math.sign(_.current),ie=Math.abs(_.current)>Fe,g=h.current;let k;r?(k=Math.round(g),ie&&(k=ue>0?Math.ceil(g):Math.floor(g)),j&&(g<=a&&(k=Math.ceil(a)),g>=M&&(k=Math.floor(M)))):j&&g>=M?k=M:j&&g<=a?k=a:ie?k=ue>0?f.find(J=>J>=g)??M:[...f].reverse().find(J=>J<=g)??a:k=f[Q(f,g)];const Le=Math.min(Math.max(k,a),M);C(Le),_.current=0},120)},[s,A,p,R,r,u,f]),Ee=t.useCallback(e=>{switch(e.key){case"ArrowRight":case"PageDown":e.preventDefault(),K();break;case"ArrowLeft":case"PageUp":e.preventDefault(),Y();break;case"Home":e.preventDefault(),B(0);break;case"End":e.preventDefault(),B(r?s-1:u);break}},[K,Y,B,s,r,u]),De=t.useCallback(e=>{var n;s&&((n=V.current)==null||n.setPointerCapture(e.pointerId),N.current=!0,x(!1),U.current=e.clientX,X.current=h.current,se.current=e.timeStamp,q.current=e.clientX,H.current=e.timeStamp,r&&Z(Math.floor(h.current)))},[s,r]),ye=t.useCallback(e=>{if(!N.current)return;const n=A();if(!n)return;const c=e.clientX-U.current;if(Number.isNaN(c))return;q.current=e.clientX,H.current=e.timeStamp;const o=c/n,i=X.current-o,a=p*.9,M=Math.floor(X.current),v=r?M-a:0,w=r?M+a:u;C(Math.min(Math.max(i,v),w))},[A,p,r,u]),Ae=t.useCallback(()=>{if(!N.current)return;N.current=!1,x(!0);const e=A(),n=h.current,c=X.current,o=r?Math.round(c):c;let i=r?Math.round(n):f[Q(f,n)];const a=H.current-se.current,M=a>0&&e?-(q.current-U.current)/e/a:0;Math.abs(M)>.0015&&i===o&&(r?i=o+Math.sign(M):M>0?i=f.find(w=>w>c)??u:i=[...f].reverse().find(w=>w<c)??0),C(P(i))},[A,P,r,f,u]);return t.useEffect(()=>{const e=V.current;if(!e)return;const n=a=>{de(a),me(parseFloat(getComputedStyle(document.documentElement).fontSize)||16)},c=getComputedStyle(e),o=(parseFloat(c.paddingLeft)||0)+(parseFloat(c.paddingRight)||0);n(e.clientWidth-o);const i=new ResizeObserver(([a])=>{a&&n(a.contentRect.width)});return i.observe(e),()=>i.disconnect()},[]),t.useEffect(()=>()=>{ce.current=!1,clearTimeout(W.current)},[]),{viewportRef:V,trackRef:re,setSlideRef:we,setConfig:$,setSlidesCount:fe,slidesCount:s,positions:f,activePositionIndex:pe,canPrev:be,canNext:Re,renderedIndices:ge,renderedActiveIndex:O,slideFlex:Ce,trackStyle:ke,contentClassName:xe,isSlideVisible:Se,announcement:he,regionLabel:(S==null?void 0:S.trim())||b("carousel"),slideLabel:e=>b("carousel.slide",e,s),next:K,prev:Y,goToIndex:B,onTransitionEnd:Ie,onScroll:Te,onWheel:Pe,onKeyDown:Ee,onPointerDown:De,onPointerMove:ye,onPointerUp:Ae}};exports.useCarousel=Xe;
@@ -23,7 +23,8 @@ export interface CarouselApi {
23
23
  setConfig: (config: CarouselConfig) => void;
24
24
  setSlidesCount: (count: number) => void;
25
25
  slidesCount: number;
26
- slideIndex: number;
26
+ positions: number[];
27
+ activePositionIndex: number;
27
28
  canPrev: boolean;
28
29
  canNext: boolean;
29
30
  renderedIndices: number[];
@@ -1,230 +1,244 @@
1
- import { useState as S, useRef as u, useEffect as K, useMemo as I, useCallback as c } from "react";
2
- import Xt from "../../../helpers/hooks/use-breakpoint.es.js";
3
- import { resolveBreakpointValue as at } from "./carousel-utils.es.js";
4
- import { useLabels as Lt } from "../../../providers/label-provider/use-labels.es.js";
5
- const Nt = {
1
+ import { useState as k, useRef as p, useEffect as K, useMemo as b, useCallback as f, useLayoutEffect as Vt } from "react";
2
+ import Wt from "../../../helpers/hooks/use-breakpoint.es.js";
3
+ import { resolveBreakpointValue as ht } from "./carousel-utils.es.js";
4
+ import { useLabels as vt } from "../../../providers/label-provider/use-labels.es.js";
5
+ const Ot = {
6
6
  slidesPerView: { xs: 1 },
7
7
  gap: { xs: 1 },
8
8
  fade: !1,
9
9
  transitionMs: 400,
10
10
  loop: !0,
11
11
  centered: !1
12
- }, L = (F, x) => (F % x + x) % x, vt = (F) => {
13
- const { getLabel: x } = Lt(), N = Xt(), [l, it] = S(Nt), [e, ut] = S(0), [d, g] = S(0), [p, Q] = S(0), [Z, w] = S(!1), [C, lt] = S(0), [tt, ft] = S(16), [dt, mt] = S(""), W = u(null), et = u(null), rt = u([]), y = u(!1), V = u(!1), O = u(!1), Y = u(0), A = u(0), nt = u(0), U = u(0), j = u(0), H = u(), z = u(0), ot = u(!0), m = u(d), st = u(p);
12
+ }, zt = 0.3, $t = 1e-6, v = (T, x) => (T % x + x) % x, rt = (T, x) => T.reduce(
13
+ (D, d, U) => Math.abs(d - x) < Math.abs(T[D] - x) ? U : D,
14
+ 0
15
+ ), Ut = (T) => {
16
+ const { getLabel: x } = vt(), D = Wt(), [d, U] = k(Ot), [n, pt] = k(0), [m, R] = k(0), [w, nt] = k(0), [st, C] = k(!1), [N, Mt] = k(0), [ot, gt] = k(16), [xt, wt] = k(""), O = p(null), ct = p(null), at = p([]), F = p(!1), X = p(!1), Y = p(!1), j = p(0), z = p(0), it = p(0), q = p(0), J = p(0), $ = p(), V = p(0), ut = p(!0), h = p(m), lt = p(w);
14
17
  K(() => {
15
- m.current = d;
16
- }, [d]), K(() => {
17
- st.current = p;
18
- }, [p]);
19
- const a = I(
20
- () => at(l.slidesPerView, N),
21
- [l.slidesPerView, N]
22
- ), b = I(() => at(l.gap, N), [l.gap, N]), T = I(() => b * tt, [b, tt]), n = l.loop, M = I(
23
- () => Math.max(0, e - Math.ceil(a)),
18
+ h.current = m;
19
+ }, [m]), K(() => {
20
+ lt.current = w;
21
+ }, [w]);
22
+ const u = b(
23
+ () => ht(d.slidesPerView, D),
24
+ [d.slidesPerView, D]
25
+ ), A = b(() => ht(d.gap, D), [d.gap, D]), y = b(() => A * ot, [A, ot]), e = d.loop, a = b(() => {
26
+ const t = Math.max(0, n - u), r = Math.round(t);
27
+ return Math.abs(t - r) < $t ? r : t;
28
+ }, [n, u]), l = b(() => {
29
+ if (!n) return [];
30
+ if (e) return Array.from({ length: n }, (s, o) => o);
31
+ const t = Math.floor(a), r = Array.from({ length: t + 1 }, (s, o) => o);
32
+ return a > t && r.push(a), r;
33
+ }, [n, e, a]), E = f(
34
+ (t) => e ? t : Math.min(Math.max(t, 0), a),
24
35
  [e, a]
25
- ), R = c(
26
- (t) => n ? t : Math.min(Math.max(t, 0), M),
27
- [n, M]
28
- ), h = n ? e : 0, ht = I(() => e === 0 ? 0 : n ? L(Math.floor(d), e) : Math.min(Math.max(Math.round(d), 0), e - 1), [d, e, n]), E = n ? d - p + h : d, pt = n || d > 1e-3, Mt = n || d < M - 1e-3, xt = I(() => {
29
- if (!e) return [];
30
- if (!n) return Array.from({ length: e }, (o, s) => s);
31
- const t = 2 * h + Math.ceil(a), r = p - h;
32
- return Array.from({ length: t }, (o, s) => L(r + s, e));
33
- }, [e, h, a, p, n]), gt = I(
34
- () => `0 0 calc((100% - ${(a - 1) * b}rem) / ${a})`,
35
- [a, b]
36
- ), wt = I(() => {
37
- if (!C)
38
- return { gap: `${b}rem`, transform: "translate3d(0,0,0)", transition: "none" };
39
- const t = T * (a - 1), r = (C - t) / a, o = n ? d - p + h : d, s = l.centered ? (C - r) / 2 : 0, i = -o * (r + T) + s;
36
+ ), g = e ? n : 0, It = b(() => l.length ? e ? v(Math.floor(m), n) : rt(l, m) : 0, [l, m, n, e]), B = e ? m - w + g : Math.ceil(m), Rt = n > 0 && (e || m > 0), St = n > 0 && (e || m < a);
37
+ Vt(() => {
38
+ e || (clearTimeout($.current), V.current = 0, h.current = E(h.current), R((t) => E(t)));
39
+ }, [e, a, E]);
40
+ const bt = b(() => {
41
+ if (!n) return [];
42
+ if (!e) return Array.from({ length: n }, (s, o) => o);
43
+ const t = 2 * g + Math.ceil(u), r = w - g;
44
+ return Array.from({ length: t }, (s, o) => v(r + o, n));
45
+ }, [n, g, u, w, e]), Tt = b(
46
+ () => `0 0 calc((100% - ${(u - 1) * A}rem) / ${u})`,
47
+ [u, A]
48
+ ), Ct = b(() => {
49
+ if (!N)
50
+ return { gap: `${A}rem`, transform: "translate3d(0,0,0)", transition: "none" };
51
+ const t = y * (u - 1), r = (N - t) / u, s = e ? m - w + g : m, o = d.centered ? (N - r) / 2 : 0, i = -s * (r + y) + o;
40
52
  return {
41
- gap: `${b}rem`,
53
+ gap: `${A}rem`,
42
54
  transform: `translate3d(${i}px, 0, 0)`,
43
- transition: Z ? `transform ${l.transitionMs}ms ease` : "none"
55
+ transition: st ? `transform ${d.transitionMs}ms ease` : "none"
44
56
  };
45
57
  }, [
46
- C,
47
- b,
48
- T,
49
- a,
50
- d,
51
- p,
52
- h,
53
- Z,
54
- l.transitionMs,
55
- l.centered,
56
- n
57
- ]), Rt = c(
58
+ N,
59
+ A,
60
+ y,
61
+ u,
62
+ m,
63
+ w,
64
+ g,
65
+ st,
66
+ d.transitionMs,
67
+ d.centered,
68
+ e
69
+ ]), Pt = f(
58
70
  (t) => {
59
- const r = Math.ceil(a);
60
- return t >= E && t < E + r;
71
+ if (!e) return t + 1 > m && t < m + u;
72
+ const r = Math.ceil(u);
73
+ return t >= B && t < B + r;
61
74
  },
62
- [a, E]
63
- ), St = c(
64
- (t, r, o) => {
65
- const s = [t];
66
- if (l.fade) {
67
- const i = l.fade === "both" || l.fade !== "right" && a <= 1;
68
- s.push(i ? o : r);
75
+ [u, B, e, m]
76
+ ), kt = f(
77
+ (t, r, s) => {
78
+ const o = [t];
79
+ if (d.fade) {
80
+ const i = d.fade === "both" || d.fade !== "right" && u <= 1;
81
+ o.push(i ? s : r);
69
82
  }
70
- return s.join(" ");
83
+ return o.join(" ");
71
84
  },
72
- [l.fade, a]
73
- ), It = c((t, r) => {
74
- rt.current[t] = r;
75
- }, []), P = c(() => {
85
+ [d.fade, u]
86
+ ), Dt = f((t, r) => {
87
+ at.current[t] = r;
88
+ }, []), L = f(() => {
76
89
  setTimeout(() => {
77
- if (!ot.current || !e) return;
78
- const t = n ? L(Math.floor(m.current), e) : Math.min(Math.max(Math.round(m.current), 0), e - 1);
79
- mt(x("carousel.slide", t + 1, e));
90
+ if (!ut.current || !n) return;
91
+ const t = e ? v(Math.floor(h.current), n) : Math.min(Math.max(Math.ceil(h.current), 0), n - 1);
92
+ wt(x("carousel.slide", t + 1, n));
80
93
  }, 100);
81
- }, [x, e, n]), $ = c(() => {
82
- y.current = !0, setTimeout(() => {
83
- y.current = !1;
84
- }, l.transitionMs);
85
- }, [l.transitionMs]), ct = c(() => {
94
+ }, [x, n, e]), G = f(() => {
95
+ F.current = !0, setTimeout(() => {
96
+ F.current = !1;
97
+ }, d.transitionMs);
98
+ }, [d.transitionMs]), ft = f(() => {
86
99
  setTimeout(() => {
87
100
  var r;
88
- const t = m.current - st.current + h;
89
- (r = rt.current[t]) == null || r.focus({ preventScroll: !0 });
101
+ const t = e ? h.current - lt.current + g : Math.ceil(h.current);
102
+ (r = at.current[t]) == null || r.focus({ preventScroll: !0 });
90
103
  });
91
- }, [h]), q = c(() => {
92
- !e || y.current || !n && m.current >= M - 1e-3 || (w(!0), g((t) => R(t + 1)), $(), P());
93
- }, [e, n, M, R, $, P]), J = c(() => {
94
- !e || y.current || !n && m.current <= 1e-3 || (w(!0), g((t) => R(t - 1)), $(), P());
95
- }, [e, n, R, $, P]), v = c(
104
+ }, [g, e]), Q = f(() => {
105
+ !n || F.current || !e && h.current >= a || (C(!0), R((t) => e ? t + 1 : l.find((r) => r > t) ?? a), G(), L());
106
+ }, [n, e, a, l, G, L]), Z = f(() => {
107
+ !n || F.current || !e && h.current <= 0 || (C(!0), R((t) => e ? t - 1 : [...l].reverse().find((r) => r < t) ?? 0), G(), L());
108
+ }, [n, e, l, G, L]), H = f(
96
109
  (t, r) => {
97
- if (!(!e || y.current)) {
98
- if (w(!0), n) {
99
- const o = L(Math.floor(m.current), e), i = L(t, e) - o;
100
- g((f) => f + i);
110
+ if (!(!n || F.current)) {
111
+ if (C(!0), e) {
112
+ const s = v(Math.floor(h.current), n), i = v(t, n) - s;
113
+ R((c) => c + i);
101
114
  } else
102
- g(R(t));
103
- r != null && r.focusSlide ? O.current = !0 : P();
115
+ R(E(t));
116
+ r != null && r.focusSlide ? Y.current = !0 : L();
104
117
  }
105
118
  },
106
- [e, n, R, P]
107
- ), bt = c(
119
+ [n, e, E, L]
120
+ ), At = f(
108
121
  (t) => {
109
- t.target !== et.current || t.propertyName !== "transform" || V.current || (w(!1), Q(Math.floor(m.current)), O.current && (O.current = !1, ct()));
122
+ t.target !== ct.current || t.propertyName !== "transform" || X.current || (C(!1), nt(Math.floor(h.current)), Y.current && (Y.current = !1, ft()));
110
123
  },
111
- [ct]
112
- ), kt = c(() => {
113
- const t = W.current;
124
+ [ft]
125
+ ), Et = f(() => {
126
+ const t = O.current;
114
127
  t && (t.scrollLeft = 0, t.scrollTop = 0);
115
- }, []), D = c(() => (C - T * (a - 1)) / a + T, [C, T, a]), Ct = c(
128
+ }, []), _ = f(() => (N - y * (u - 1)) / u + y, [N, y, u]), Nt = f(
116
129
  (t) => {
117
- if (!e) return;
130
+ if (!n) return;
118
131
  const r = Math.abs(t.deltaX) > Math.abs(t.deltaY) ? t.deltaX : t.shiftKey ? t.deltaY : 0;
119
132
  if (!r) return;
120
- const o = D();
121
- if (!o) return;
122
- const s = r / o;
123
- z.current += s;
124
- const i = h * 0.9, f = n ? p - i : 0, k = n ? p + i : M, B = m.current + s, _ = Math.min(Math.max(B, f), k), yt = _ !== B;
125
- w(!1), g(_), clearTimeout(H.current), H.current = setTimeout(() => {
126
- w(!0);
127
- const Vt = Math.sign(z.current), X = m.current;
128
- let G = Math.round(X);
129
- Math.abs(z.current) > 0.3 && (G = Vt > 0 ? Math.ceil(X) : Math.floor(X)), yt && (X <= f && (G = Math.ceil(f)), X >= k && (G = Math.floor(k)));
130
- const At = Math.min(Math.max(G, f), k);
131
- g(At), z.current = 0;
133
+ const s = _();
134
+ if (!s) return;
135
+ const o = r / s;
136
+ V.current += o;
137
+ const i = g * 0.9, c = e ? w - i : 0, M = e ? w + i : a, W = h.current + o, P = Math.min(Math.max(W, c), M), tt = P !== W;
138
+ C(!1), R(P), clearTimeout($.current), $.current = setTimeout(() => {
139
+ C(!0);
140
+ const dt = Math.sign(V.current), mt = Math.abs(V.current) > zt, I = h.current;
141
+ let S;
142
+ e ? (S = Math.round(I), mt && (S = dt > 0 ? Math.ceil(I) : Math.floor(I)), tt && (I <= c && (S = Math.ceil(c)), I >= M && (S = Math.floor(M)))) : tt && I >= M ? S = M : tt && I <= c ? S = c : mt ? S = dt > 0 ? l.find((et) => et >= I) ?? M : [...l].reverse().find((et) => et <= I) ?? c : S = l[rt(l, I)];
143
+ const Xt = Math.min(Math.max(S, c), M);
144
+ R(Xt), V.current = 0;
132
145
  }, 120);
133
146
  },
134
- [e, D, h, p, n, M]
135
- ), Tt = c(
147
+ [n, _, g, w, e, a, l]
148
+ ), yt = f(
136
149
  (t) => {
137
150
  switch (t.key) {
138
151
  case "ArrowRight":
139
152
  case "PageDown":
140
- t.preventDefault(), q();
153
+ t.preventDefault(), Q();
141
154
  break;
142
155
  case "ArrowLeft":
143
156
  case "PageUp":
144
- t.preventDefault(), J();
157
+ t.preventDefault(), Z();
145
158
  break;
146
159
  case "Home":
147
- t.preventDefault(), v(0);
160
+ t.preventDefault(), H(0);
148
161
  break;
149
162
  case "End":
150
- t.preventDefault(), v(e - 1);
163
+ t.preventDefault(), H(e ? n - 1 : a);
151
164
  break;
152
165
  }
153
166
  },
154
- [q, J, v, e]
155
- ), Pt = c(
167
+ [Q, Z, H, n, e, a]
168
+ ), Lt = f(
156
169
  (t) => {
157
170
  var r;
158
- e && ((r = W.current) == null || r.setPointerCapture(t.pointerId), V.current = !0, w(!1), Y.current = t.clientX, A.current = m.current, nt.current = t.timeStamp, U.current = t.clientX, j.current = t.timeStamp, n && Q(Math.floor(m.current)));
171
+ n && ((r = O.current) == null || r.setPointerCapture(t.pointerId), X.current = !0, C(!1), j.current = t.clientX, z.current = h.current, it.current = t.timeStamp, q.current = t.clientX, J.current = t.timeStamp, e && nt(Math.floor(h.current)));
159
172
  },
160
- [e, n]
161
- ), Dt = c(
173
+ [n, e]
174
+ ), _t = f(
162
175
  (t) => {
163
- if (!V.current) return;
164
- const r = D();
176
+ if (!X.current) return;
177
+ const r = _();
165
178
  if (!r) return;
166
- const o = t.clientX - Y.current;
167
- if (Number.isNaN(o)) return;
168
- U.current = t.clientX, j.current = t.timeStamp;
169
- const s = o / r, i = A.current - s, f = h * 0.9, k = Math.floor(A.current), B = n ? k - f : 0, _ = n ? k + f : M;
170
- g(Math.min(Math.max(i, B), _));
179
+ const s = t.clientX - j.current;
180
+ if (Number.isNaN(s)) return;
181
+ q.current = t.clientX, J.current = t.timeStamp;
182
+ const o = s / r, i = z.current - o, c = g * 0.9, M = Math.floor(z.current), W = e ? M - c : 0, P = e ? M + c : a;
183
+ R(Math.min(Math.max(i, W), P));
171
184
  },
172
- [D, h, n, M]
173
- ), Ft = c(() => {
174
- if (!V.current) return;
175
- V.current = !1, w(!0);
176
- const t = D(), r = Math.round(m.current);
177
- let o = r;
178
- const s = j.current - nt.current, i = s > 0 && t ? -(U.current - Y.current) / t / s : 0;
179
- Math.abs(i) > 15e-4 && r === Math.round(A.current) && (o = Math.round(A.current) + (i > 0 ? 1 : -1)), g(R(o));
180
- }, [D, R]);
185
+ [_, g, e, a]
186
+ ), Ft = f(() => {
187
+ if (!X.current) return;
188
+ X.current = !1, C(!0);
189
+ const t = _(), r = h.current, s = z.current, o = e ? Math.round(s) : s;
190
+ let i = e ? Math.round(r) : l[rt(l, r)];
191
+ const c = J.current - it.current, M = c > 0 && t ? -(q.current - j.current) / t / c : 0;
192
+ Math.abs(M) > 15e-4 && i === o && (e ? i = o + Math.sign(M) : M > 0 ? i = l.find((P) => P > s) ?? a : i = [...l].reverse().find((P) => P < s) ?? 0), R(E(i));
193
+ }, [_, E, e, l, a]);
181
194
  return K(() => {
182
- const t = W.current;
195
+ const t = O.current;
183
196
  if (!t) return;
184
- const r = (f) => {
185
- lt(f), ft(parseFloat(getComputedStyle(document.documentElement).fontSize) || 16);
186
- }, o = getComputedStyle(t), s = (parseFloat(o.paddingLeft) || 0) + (parseFloat(o.paddingRight) || 0);
187
- r(t.clientWidth - s);
188
- const i = new ResizeObserver(([f]) => {
189
- f && r(f.contentRect.width);
197
+ const r = (c) => {
198
+ Mt(c), gt(parseFloat(getComputedStyle(document.documentElement).fontSize) || 16);
199
+ }, s = getComputedStyle(t), o = (parseFloat(s.paddingLeft) || 0) + (parseFloat(s.paddingRight) || 0);
200
+ r(t.clientWidth - o);
201
+ const i = new ResizeObserver(([c]) => {
202
+ c && r(c.contentRect.width);
190
203
  });
191
204
  return i.observe(t), () => i.disconnect();
192
205
  }, []), K(
193
206
  () => () => {
194
- ot.current = !1, clearTimeout(H.current);
207
+ ut.current = !1, clearTimeout($.current);
195
208
  },
196
209
  []
197
210
  ), {
198
- viewportRef: W,
199
- trackRef: et,
200
- setSlideRef: It,
201
- setConfig: it,
202
- setSlidesCount: ut,
203
- slidesCount: e,
204
- slideIndex: ht,
205
- canPrev: pt,
206
- canNext: Mt,
207
- renderedIndices: xt,
208
- renderedActiveIndex: E,
209
- slideFlex: gt,
210
- trackStyle: wt,
211
- contentClassName: St,
212
- isSlideVisible: Rt,
213
- announcement: dt,
214
- regionLabel: (F == null ? void 0 : F.trim()) || x("carousel"),
215
- slideLabel: (t) => x("carousel.slide", t, e),
216
- next: q,
217
- prev: J,
218
- goToIndex: v,
219
- onTransitionEnd: bt,
220
- onScroll: kt,
221
- onWheel: Ct,
222
- onKeyDown: Tt,
223
- onPointerDown: Pt,
224
- onPointerMove: Dt,
211
+ viewportRef: O,
212
+ trackRef: ct,
213
+ setSlideRef: Dt,
214
+ setConfig: U,
215
+ setSlidesCount: pt,
216
+ slidesCount: n,
217
+ positions: l,
218
+ activePositionIndex: It,
219
+ canPrev: Rt,
220
+ canNext: St,
221
+ renderedIndices: bt,
222
+ renderedActiveIndex: B,
223
+ slideFlex: Tt,
224
+ trackStyle: Ct,
225
+ contentClassName: kt,
226
+ isSlideVisible: Pt,
227
+ announcement: xt,
228
+ regionLabel: (T == null ? void 0 : T.trim()) || x("carousel"),
229
+ slideLabel: (t) => x("carousel.slide", t, n),
230
+ next: Q,
231
+ prev: Z,
232
+ goToIndex: H,
233
+ onTransitionEnd: At,
234
+ onScroll: Et,
235
+ onWheel: Nt,
236
+ onKeyDown: yt,
237
+ onPointerDown: Lt,
238
+ onPointerMove: _t,
225
239
  onPointerUp: Ft
226
240
  };
227
241
  };
228
242
  export {
229
- vt as useCarousel
243
+ Ut as useCarousel
230
244
  };