UNPKG

@anoki/fse-ui

Version:

FSE UI components library

3 lines (2 loc) • 9.04 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index.cjs667.js");function B(n,t,g){let{reference:l,floating:f}=n;const i=e.getSideAxis(t),a=e.getAlignmentAxis(t),d=e.getAxisLength(a),h=e.getSide(t),w=i==="y",c=l.x+l.width/2-f.width/2,o=l.y+l.height/2-f.height/2,m=l[d]/2-f[d]/2;let s;switch(h){case"top":s={x:c,y:l.y-f.height};break;case"bottom":s={x:c,y:l.y+l.height};break;case"right":s={x:l.x+l.width,y:o};break;case"left":s={x:l.x-f.width,y:o};break;default:s={x:l.x,y:l.y}}switch(e.getAlignment(t)){case"start":s[a]-=m*(g&&w?-1:1);break;case"end":s[a]+=m*(g&&w?-1:1);break}return s}const _=async(n,t,g)=>{const{placement:l="bottom",strategy:f="absolute",middleware:i=[],platform:a}=g,d=i.filter(Boolean),h=await(a.isRTL==null?void 0:a.isRTL(t));let w=await a.getElementRects({reference:n,floating:t,strategy:f}),{x:c,y:o}=B(w,l,h),m=l,s={},r=0;for(let u=0;u<d.length;u++){const{name:x,fn:v}=d[u],{x:y,y:A,data:b,reset:p}=await v({x:c,y:o,initialPlacement:l,placement:m,strategy:f,middlewareData:s,rects:w,platform:a,elements:{reference:n,floating:t}});c=y??c,o=A??o,s={...s,[x]:{...s[x],...b}},p&&r<=50&&(r++,typeof p=="object"&&(p.placement&&(m=p.placement),p.rects&&(w=p.rects===!0?await a.getElementRects({reference:n,floating:t,strategy:f}):p.rects),{x:c,y:o}=B(w,m,h)),u=-1)}return{x:c,y:o,placement:m,strategy:f,middlewareData:s}};async function V(n,t){var g;t===void 0&&(t={});const{x:l,y:f,platform:i,rects:a,elements:d,strategy:h}=n,{boundary:w="clippingAncestors",rootBoundary:c="viewport",elementContext:o="floating",altBoundary:m=!1,padding:s=0}=e.evaluate(t,n),r=e.getPaddingObject(s),x=d[m?o==="floating"?"reference":"floating":o],v=e.rectToClientRect(await i.getClippingRect({element:(g=await(i.isElement==null?void 0:i.isElement(x)))==null||g?x:x.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(d.floating)),boundary:w,rootBoundary:c,strategy:h})),y=o==="floating"?{x:l,y:f,width:a.floating.width,height:a.floating.height}:a.reference,A=await(i.getOffsetParent==null?void 0:i.getOffsetParent(d.floating)),b=await(i.isElement==null?void 0:i.isElement(A))?await(i.getScale==null?void 0:i.getScale(A))||{x:1,y:1}:{x:1,y:1},p=e.rectToClientRect(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:d,rect:y,offsetParent:A,strategy:h}):y);return{top:(v.top-p.top+r.top)/b.y,bottom:(p.bottom-v.bottom+r.bottom)/b.y,left:(v.left-p.left+r.left)/b.x,right:(p.right-v.right+r.right)/b.x}}const X=n=>({name:"arrow",options:n,async fn(t){const{x:g,y:l,placement:f,rects:i,platform:a,elements:d,middlewareData:h}=t,{element:w,padding:c=0}=e.evaluate(n,t)||{};if(w==null)return{};const o=e.getPaddingObject(c),m={x:g,y:l},s=e.getAlignmentAxis(f),r=e.getAxisLength(s),u=await a.getDimensions(w),x=s==="y",v=x?"top":"left",y=x?"bottom":"right",A=x?"clientHeight":"clientWidth",b=i.reference[r]+i.reference[s]-m[s]-i.floating[r],p=m[s]-i.reference[s],P=await(a.getOffsetParent==null?void 0:a.getOffsetParent(w));let C=P?P[A]:0;(!C||!await(a.isElement==null?void 0:a.isElement(P)))&&(C=d.floating[A]||i.floating[r]);const M=b/2-p/2,D=C/2-u[r]/2-1,O=e.min(o[v],D),L=e.min(o[y],D),T=O,H=C-u[r]-L,S=C/2-u[r]/2+M,F=e.clamp(T,S,H),E=!h.arrow&&e.getAlignment(f)!=null&&S!==F&&i.reference[r]/2-(S<T?O:L)-u[r]/2<0,R=E?S<T?S-T:S-H:0;return{[s]:m[s]+R,data:{[s]:F,centerOffset:S-F-R,...E&&{alignmentOffset:R}},reset:E}}}),q=function(n){return n===void 0&&(n={}),{name:"flip",options:n,async fn(t){var g,l;const{placement:f,middlewareData:i,rects:a,initialPlacement:d,platform:h,elements:w}=t,{mainAxis:c=!0,crossAxis:o=!0,fallbackPlacements:m,fallbackStrategy:s="bestFit",fallbackAxisSideDirection:r="none",flipAlignment:u=!0,...x}=e.evaluate(n,t);if((g=i.arrow)!=null&&g.alignmentOffset)return{};const v=e.getSide(f),y=e.getSideAxis(d),A=e.getSide(d)===d,b=await(h.isRTL==null?void 0:h.isRTL(w.floating)),p=m||(A||!u?[e.getOppositePlacement(d)]:e.getExpandedPlacements(d)),P=r!=="none";!m&&P&&p.push(...e.getOppositeAxisPlacements(d,u,r,b));const C=[d,...p],M=await V(t,x),D=[];let O=((l=i.flip)==null?void 0:l.overflows)||[];if(c&&D.push(M[v]),o){const S=e.getAlignmentSides(f,a,b);D.push(M[S[0]],M[S[1]])}if(O=[...O,{placement:f,overflows:D}],!D.every(S=>S<=0)){var L,T;const S=(((L=i.flip)==null?void 0:L.index)||0)+1,F=C[S];if(F&&(!(o==="alignment"?y!==e.getSideAxis(F):!1)||O.every(k=>e.getSideAxis(k.placement)===y?k.overflows[0]>0:!0)))return{data:{index:S,overflows:O},reset:{placement:F}};let E=(T=O.filter(R=>R.overflows[0]<=0).sort((R,k)=>R.overflows[1]-k.overflows[1])[0])==null?void 0:T.placement;if(!E)switch(s){case"bestFit":{var H;const R=(H=O.filter(k=>{if(P){const j=e.getSideAxis(k.placement);return j===y||j==="y"}return!0}).map(k=>[k.placement,k.overflows.filter(j=>j>0).reduce((j,$)=>j+$,0)]).sort((k,j)=>k[1]-j[1])[0])==null?void 0:H[0];R&&(E=R);break}case"initialPlacement":E=d;break}if(f!==E)return{reset:{placement:E}}}return{}}}};function z(n,t){return{top:n.top-t.height,right:n.right-t.width,bottom:n.bottom-t.height,left:n.left-t.width}}function W(n){return e.sides.some(t=>n[t]>=0)}const I=function(n){return n===void 0&&(n={}),{name:"hide",options:n,async fn(t){const{rects:g}=t,{strategy:l="referenceHidden",...f}=e.evaluate(n,t);switch(l){case"referenceHidden":{const i=await V(t,{...f,elementContext:"reference"}),a=z(i,g.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:W(a)}}}case"escaped":{const i=await V(t,{...f,altBoundary:!0}),a=z(i,g.floating);return{data:{escapedOffsets:a,escaped:W(a)}}}default:return{}}}}},Y=new Set(["left","top"]);async function U(n,t){const{placement:g,platform:l,elements:f}=n,i=await(l.isRTL==null?void 0:l.isRTL(f.floating)),a=e.getSide(g),d=e.getAlignment(g),h=e.getSideAxis(g)==="y",w=Y.has(a)?-1:1,c=i&&h?-1:1,o=e.evaluate(t,n);let{mainAxis:m,crossAxis:s,alignmentAxis:r}=typeof o=="number"?{mainAxis:o,crossAxis:0,alignmentAxis:null}:{mainAxis:o.mainAxis||0,crossAxis:o.crossAxis||0,alignmentAxis:o.alignmentAxis};return d&&typeof r=="number"&&(s=d==="end"?r*-1:r),h?{x:s*c,y:m*w}:{x:m*w,y:s*c}}const G=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(t){var g,l;const{x:f,y:i,placement:a,middlewareData:d}=t,h=await U(t,n);return a===((g=d.offset)==null?void 0:g.placement)&&(l=d.arrow)!=null&&l.alignmentOffset?{}:{x:f+h.x,y:i+h.y,data:{...h,placement:a}}}}},J=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(t){const{x:g,y:l,placement:f}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:d={fn:x=>{let{x:v,y}=x;return{x:v,y}}},...h}=e.evaluate(n,t),w={x:g,y:l},c=await V(t,h),o=e.getSideAxis(e.getSide(f)),m=e.getOppositeAxis(o);let s=w[m],r=w[o];if(i){const x=m==="y"?"top":"left",v=m==="y"?"bottom":"right",y=s+c[x],A=s-c[v];s=e.clamp(y,s,A)}if(a){const x=o==="y"?"top":"left",v=o==="y"?"bottom":"right",y=r+c[x],A=r-c[v];r=e.clamp(y,r,A)}const u=d.fn({...t,[m]:s,[o]:r});return{...u,data:{x:u.x-g,y:u.y-l,enabled:{[m]:i,[o]:a}}}}}},K=function(n){return n===void 0&&(n={}),{options:n,fn(t){const{x:g,y:l,placement:f,rects:i,middlewareData:a}=t,{offset:d=0,mainAxis:h=!0,crossAxis:w=!0}=e.evaluate(n,t),c={x:g,y:l},o=e.getSideAxis(f),m=e.getOppositeAxis(o);let s=c[m],r=c[o];const u=e.evaluate(d,t),x=typeof u=="number"?{mainAxis:u,crossAxis:0}:{mainAxis:0,crossAxis:0,...u};if(h){const A=m==="y"?"height":"width",b=i.reference[m]-i.floating[A]+x.mainAxis,p=i.reference[m]+i.reference[A]-x.mainAxis;s<b?s=b:s>p&&(s=p)}if(w){var v,y;const A=m==="y"?"width":"height",b=Y.has(e.getSide(f)),p=i.reference[o]-i.floating[A]+(b&&((v=a.offset)==null?void 0:v[o])||0)+(b?0:x.crossAxis),P=i.reference[o]+i.reference[A]+(b?0:((y=a.offset)==null?void 0:y[o])||0)-(b?x.crossAxis:0);r<p?r=p:r>P&&(r=P)}return{[m]:s,[o]:r}}}},N=function(n){return n===void 0&&(n={}),{name:"size",options:n,async fn(t){var g,l;const{placement:f,rects:i,platform:a,elements:d}=t,{apply:h=()=>{},...w}=e.evaluate(n,t),c=await V(t,w),o=e.getSide(f),m=e.getAlignment(f),s=e.getSideAxis(f)==="y",{width:r,height:u}=i.floating;let x,v;o==="top"||o==="bottom"?(x=o,v=m===(await(a.isRTL==null?void 0:a.isRTL(d.floating))?"start":"end")?"left":"right"):(v=o,x=m==="end"?"top":"bottom");const y=u-c.top-c.bottom,A=r-c.left-c.right,b=e.min(u-c[x],y),p=e.min(r-c[v],A),P=!t.middlewareData.shift;let C=b,M=p;if((g=t.middlewareData.shift)!=null&&g.enabled.x&&(M=A),(l=t.middlewareData.shift)!=null&&l.enabled.y&&(C=y),P&&!m){const O=e.max(c.left,0),L=e.max(c.right,0),T=e.max(c.top,0),H=e.max(c.bottom,0);s?M=r-2*(O!==0||L!==0?O+L:e.max(c.left,c.right)):C=u-2*(T!==0||H!==0?T+H:e.max(c.top,c.bottom))}await h({...t,availableWidth:M,availableHeight:C});const D=await a.getDimensions(d.floating);return r!==D.width||u!==D.height?{reset:{rects:!0}}:{}}}};exports.rectToClientRect=e.rectToClientRect;exports.arrow=X;exports.computePosition=_;exports.detectOverflow=V;exports.flip=q;exports.hide=I;exports.limitShift=K;exports.offset=G;exports.shift=J;exports.size=N; //# sourceMappingURL=index.cjs666.js.map