UNPKG

@wikimedia/codex

Version:

Codex Design System for Wikimedia

2 lines (1 loc) 1.88 kB
"use strict";const r=require("vue"),B=require("./floating-ui.vue.js"),L=require("./unwrapElement.js"),d=require("./floating-ui.dom.js"),m=16,T=128;function U(a,n,e){var g;const p=()=>{var t;return(t=n.value)==null?void 0:t.isExpanded()},s=r.computed(()=>{var t;return(t=n.value)==null?void 0:t.getRootElement()}),R=[d.offset(e==null?void 0:e.offset),d.size({padding:m,apply({rects:t,elements:o,availableHeight:i,availableWidth:l}){Object.assign(o.floating.style,{width:"".concat(e!=null&&e.useAvailableWidth?l:t.reference.width,"px"),maxHeight:"".concat(Math.max(T,i),"px")})}}),d.flip({padding:m-1}),d.hide({strategy:"escaped"}),d.hide()],{floatingStyles:x,placement:$,middlewareData:v,update:H}=B.useFloating(a,s,{middleware:R,placement:(g=e==null?void 0:e.placement)!=null?g:"bottom"}),q=r.computed(()=>{var o,i;return!p()||!!((o=v.value.hide)!=null&&o.escaped)||((i=v.value.hide)==null?void 0:i.referenceHidden)?"hidden":"visible"});r.watch([x,q,$],([t,o,i])=>{var l,b,c,f,h;Object.assign((b=(l=s.value)==null?void 0:l.style)!=null?b:{},{visibility:o,position:t.position,top:"".concat(t.top,"px"),right:"unset",left:"".concat(t.left,"px"),transform:(c=t.transform)!=null?c:"none",borderTopLeftRadius:i==="bottom"&&o==="visible"?"0":"",borderTopRightRadius:i==="bottom"&&o==="visible"?"0":"",borderBottomLeftRadius:i==="top"&&o==="visible"?"0":"",borderBottomRightRadius:i==="top"&&o==="visible"?"0":""}),Object.assign((h=(f=L.unwrapElement(a.value))==null?void 0:f.style)!=null?h:{},{borderTopLeftRadius:i==="top"&&o==="visible"?"0":"",borderTopRightRadius:i==="top"&&o==="visible"?"0":"",borderBottomLeftRadius:i==="bottom"&&o==="visible"?"0":"",borderBottomRightRadius:i==="bottom"&&o==="visible"?"0":""})});let u=null;r.watch(p,t=>{if(t){if(!a.value||!s.value)return;u=d.autoUpdate("$el"in a.value?a.value.$el:a.value,s.value,H)}else u&&(u(),u=null)})}module.exports=U;