@styleless-ui/react
Version:
Completely unstyled, headless and accessible React UI components.
1 lines • 7.63 kB
JavaScript
var t=this&&this.__assign||function(){return t=Object.assign||function(t){for(var e,r=1,o=arguments.length;r<o;r++)for(var n in e=arguments[r])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t},t.apply(this,arguments)},e=this&&this.__spreadArray||function(t,e,r){if(r||2===arguments.length)for(var o,n=0,i=e.length;n<i;n++)!o&&n in e||(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return t.concat(o||Array.prototype.slice.call(e))};import{clamp as r,contains as o,getBoundingClientRect as n,getDocumentElement as i,getNodeName as l,getOffsetParent as c,getParentNode as a,getViewportRect as s,getWindow as f,isElement as u,isHTMLElement as p,isOverflowElement as d,isWindow as h}from"../utils";export var sides=["top","right","bottom","left"];export var alignments=["end","start"];export var strategies=["absolute","fixed"];var m=sides.reduce((function(t,r){return e(e([],t,!0),[r,"".concat(r,"-start"),"".concat(r,"-end")],!1)}),[]),v=function(t){return t.split("-")[0]},y=function(t){return["top","bottom"].includes(v(t))?"x":"y"},x=function(t){return"y"===t?"height":"width"},g=function(t){return t.split("-")[1]},w=function(t){var r=function(t){var e=a(t);return["html","body","#document"].includes(l(e))?t.ownerDocument?t.ownerDocument.body:null:p(e)&&d(e)?e:r(e)},h=function(t,e){var o,n;void 0===e&&(e=[]);var i=r(t),l=i===(null===(o=t.ownerDocument)||void 0===o?void 0:o.body),c=f(i),s=l?[c].concat(null!==(n=c.visualViewport)&&void 0!==n?n:[],d(i)?i:[]):null!=i?i:[],u=e.concat(s);return l?u:u.concat(h(a(s)))},m=function(t,e){return"viewport"===e?b(s(t)):u(e)?function(t){var e=n(t),r=e.top+t.clientTop,o=e.left+t.clientLeft;return{top:r,left:o,x:o,y:r,right:o+t.clientWidth,bottom:r+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}(e):b(function(t){var e,r=f(t),o=i(t),n=R(t),l=null===(e=t.ownerDocument)||void 0===e?void 0:e.body,c=Math.max(o.scrollWidth,o.clientWidth,l?l.scrollWidth:0,l?l.clientWidth:0),a=Math.max(o.scrollHeight,o.clientHeight,l?l.scrollHeight:0,l?l.clientHeight:0),s=-n.scrollLeft+L(t),u=-n.scrollTop;return"rtl"===r.getComputedStyle(l||o).direction&&(s+=Math.max(o.clientWidth,l?l.clientWidth:0)-c),{width:c,height:a,x:s,y:u}}(i(t)))},v=e(e([],function(t){var e=h(t),r=f(t),n=["absolute","fixed"].includes(r.getComputedStyle(t).position)&&p(t)?c(t):t;return u(n)?e.filter((function(t){return u(t)&&o(t,n)&&"body"!==l(t)})):[]}(t),!0),["viewport"],!1),y=v[0],x=v.reduce((function(e,r){var o=m(t,r);return e.top=Math.max(o.top,e.top),e.right=Math.min(o.right,e.right),e.bottom=Math.min(o.bottom,e.bottom),e.left=Math.max(o.left,e.left),e}),m(t,y));return{width:x.right-x.left,height:x.bottom-x.top,x:x.left,y:x.top}},b=function(e){return t(t({},e),{top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height})},R=function(t){return h(t)?{scrollLeft:t.scrollX||t.pageXOffset,scrollTop:t.scrollY||t.pageYOffset}:{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}},L=function(t){return n(i(t)).left+R(t).scrollLeft},M=function(t,e,r){var o=p(e),c=i(e),a=n(t,o&&function(t){var e=n(t);return Math.round(e.width)!==t.offsetWidth||Math.round(e.height)!==t.offsetHeight}(e)),s={scrollLeft:0,scrollTop:0},f={x:0,y:0};if(o||!o&&"fixed"!==r)if(("body"!==l(e)||d(c))&&(s=R(e)),p(e)){var u=n(e,!0);f.x=u.x+e.clientLeft,f.y=u.y+e.clientTop}else c&&(f.x=L(c));return{x:a.left+s.scrollLeft-f.x,y:a.top+s.scrollTop-f.y,width:a.width,height:a.height}},T=function(e){var r=e.elements.popperElement,o=w(r),a=b(o),s=b(function(e){var r=e.popperRect,o=e.offsetParent,c=e.strategy,a=i(o);if(o===a)return r;var s=p(o),f={scrollLeft:0,scrollTop:0},u={x:0,y:0};if(s||!s&&"fixed"!==c)if(("body"!==l(o)||d(a))&&(f=R(o)),p(o)){var h=n(o,!0);u.x=h.x+o.clientLeft,u.y=h.y+o.clientTop}else a&&(u.x=L(a));return t(t({},r),{x:r.x-f.scrollLeft+u.x,y:r.y-f.scrollTop+u.y})}({popperRect:t(t({},e.elementRects.popperRect),{x:e.coordinates.x,y:e.coordinates.y}),offsetParent:c(r),strategy:e.strategy}));return{top:a.top-s.top+0,bottom:s.bottom-a.bottom+0,left:a.left-s.left+0,right:s.right-a.right+0}},W=function(t){var e,o,n=t.placement,i=t.offset,l=t.elementRects,c=t.elements,a=t.strategy,s=t.isRtl,f=l.anchorRect,u=l.popperRect,p=f.x+(f.width-u.width)/2,d=f.y+(f.height-u.height)/2,h=y(n),m=x(h),w=(f[m]-u[m])/2,b=v(n),R=g(n),L="x"===h;switch(b){case"top":o={x:p,y:f.y-u.height};break;case"bottom":o={x:p,y:f.y+f.height};break;case"left":o={x:f.x-u.width,y:d};break;case"right":o={x:f.x+f.width,y:d};break;default:o={x:f.x,y:f.y}}switch(R){case"start":o[h]-=w*(s&&L?-1:1);break;case"end":o[h]+=w*(s&&L?-1:1)}var M=o.x,W=o.y;M=(e=function(){var t,e=T({coordinates:o,elementRects:l,elements:c,strategy:a}),n="x"===h?"y":"x",i=o[h],s="y"===h?"bottom":"right",f=i+e["y"===h?"top":"left"],u=i-e[s];return(t={})[n]=o[n],t[h]=r(i,f,u),t}()).x,W=e.y;var _=function(){var t=["left","top"].includes(b)?-1:1,e=1;"end"===R&&(e=-1),s&&L&&(e*=-1);var r=0,o=0;if("number"==typeof i)r=i;else if("object"==typeof i){var n=i.crossAxis,l=void 0===n?0:n,c=i.mainAxis;r=void 0===c?0:c,o=l}return L?{x:o*e,y:r*t}:{x:r*t,y:o*e}}();return{x:M+=_.x,y:W+=_.y}},_=function(t,r){var o=r.overflow,n=r.placement,i=r.elementRects,l=r.isRtl,c=g(n),a=function(t){return g(t)===c},s=m.filter((function(e){return!t.includes(v(e))})),f=c?e(e([],s.filter(a),!0),s.filter((function(t){return g(t)!==c})),!0).filter((function(t){return a(t)||function(t){return function(t){return t.replace(/start|end/g,(function(t){var e;return null!==(e={start:"end",end:"start"}[t])&&void 0!==e?e:""}))}(t)!==t}(t)})):s.filter((function(t){return v(t)===t})),u=function(t){var r,n=t.placementIndex,c=t.overflows,a=f[n],s=function(t,e,r){var o=g(t),n=y(t),i=x(n),l=function(t){return t.replace(/left|right|bottom|top/g,(function(t){var e;return null!==(e={left:"right",right:"left",top:"bottom",bottom:"top"}[t])&&void 0!==e?e:""}))},c="x"===n?o===(r?"end":"start")?"right":"left":"start"===o?"bottom":"top";return e.anchorRect[i]>e.popperRect[i]&&(c=l(c)),{mainSide:c,crossSide:l(c)}}(a,i,l),p=s.mainSide,d=s.crossSide,h=[o[v(a)],o[p],o[d]],m=e(e([],c,!0),[{placement:a,overflows:h}],!1),w=n+1;if(f[w])return u({overflows:m,placementIndex:w});var b=m.slice().sort((function(t,e){var r,o;return(null!==(r=t.overflows[0])&&void 0!==r?r:0)-(null!==(o=e.overflows[0])&&void 0!==o?o:0)})),R=null===(r=b.find((function(t){return t.overflows.every((function(t){return t<=0}))})))||void 0===r?void 0:r.placement;return{placement:null!=R?R:b[0].placement}};return u({placementIndex:0,overflows:[]})};export var computePosition=function(e,r,o){var n=o.strategy,i=o.isRtl,l=o.autoPlacement,a=o.offset,s=o.placement,f=o.computationMiddleware,u=o.computationMiddlewareOrder,p=s,d={anchorElement:e,popperElement:r},h=function(t,e){return{anchorRect:M(t.anchorElement,c(t.popperElement),e),popperRect:{x:0,y:0,width:t.popperElement.offsetWidth,height:t.popperElement.offsetHeight}}}(d,n),m=W({isRtl:i,offset:a,strategy:n,elements:d,placement:p,elementRects:h}),v=m.x,y=m.y;return("afterAutoPlacement"===u?["auto_placement","custom_middleware"]:["custom_middleware","auto_placement"]).forEach((function(e){var r,o,c,s,u={coordinates:{x:v,y:y},placement:p,elements:d,elementRects:h,strategy:n},m=T(u);switch(e){case"auto_placement":if(l){var x="object"==typeof l?l.excludeSides:[];s=_(x,{elementRects:h,placement:p,overflow:m,isRtl:i})}break;case"custom_middleware":s=null==f?void 0:f(t(t({},u),{overflow:m}))}if(s)if(s.placement){p=null!==(r=s.placement)&&void 0!==r?r:p;var g=W({isRtl:i,offset:a,strategy:n,elements:d,placement:p,elementRects:h});v=g.x,y=g.y}else v=null!==(o=s.coordinates.x)&&void 0!==o?o:v,y=null!==(c=s.coordinates.y)&&void 0!==c?c:y})),{x:v,y:y,placement:p}};