1
0
Fork 0
forked from Simnation/Main
Main/resources/[tools]/unlimited-spectre/html/assets/QLayout.baf5346d.js
2025-06-07 08:51:21 +02:00

1 line
4.3 KiB
JavaScript

import{b as $,d as Q,e as O,f as W,n as j,g as A,h as E,l as B,i as N,j as U,k as m,m as V,p as C,q as s,s as z,t as k,u as D,v as I,x as v,y as K}from"./app-014d9ed9.js";import{Q as R}from"./QResizeObserver.2503502b.js";const{passive:H}=B,G=["both","horizontal","vertical"],J=$({name:"QScrollObserver",props:{axis:{type:String,validator:t=>G.includes(t),default:"vertical"},debounce:[String,Number],scrollTarget:{default:void 0}},emits:["scroll"],setup(t,{emit:T}){const o={position:{top:0,left:0},direction:"down",directionChanged:!1,delta:{top:0,left:0},inflectionPoint:{top:0,left:0}};let n=null,r,c;Q(()=>t.scrollTarget,()=>{d(),b()});function u(){n!==null&&n();const h=Math.max(0,N(r)),g=U(r),a={top:h-o.position.top,left:g-o.position.left};if(t.axis==="vertical"&&a.top===0||t.axis==="horizontal"&&a.left===0)return;const w=Math.abs(a.top)>=Math.abs(a.left)?a.top<0?"up":"down":a.left<0?"left":"right";o.position={top:h,left:g},o.directionChanged=o.direction!==w,o.delta=a,o.directionChanged===!0&&(o.direction=w,o.inflectionPoint=o.position),T("scroll",{...o})}function b(){r=A(c,t.scrollTarget),r.addEventListener("scroll",l,H),l(!0)}function d(){r!==void 0&&(r.removeEventListener("scroll",l,H),r=void 0)}function l(h){if(h===!0||t.debounce===0||t.debounce==="0")u();else if(n===null){const[g,a]=t.debounce?[setTimeout(u,t.debounce),clearTimeout]:[requestAnimationFrame(u),cancelAnimationFrame];n=()=>{a(g),n=null}}}const{proxy:S}=E();return O(()=>{c=S.$el.parentNode,b()}),W(()=>{n!==null&&n(),d()}),Object.assign(S,{trigger:l,getPosition:()=>o}),j}}),Z=$({name:"QLayout",props:{container:Boolean,view:{type:String,default:"hhh lpr fff",validator:t=>/^(h|l)h(h|r) lpr (f|l)f(f|r)$/.test(t.toLowerCase())},onScroll:Function,onScrollHeight:Function,onResize:Function},setup(t,{slots:T,emit:o}){const{proxy:{$q:n}}=E(),r=m(null),c=m(n.screen.height),u=m(t.container===!0?0:n.screen.width),b=m({position:0,direction:"down",inflectionPoint:0}),d=m(0),l=m(V.value===!0?0:C()),S=s(()=>"q-layout q-layout--"+(t.container===!0?"containerized":"standard")),h=s(()=>t.container===!1?{minHeight:n.screen.height+"px"}:null),g=s(()=>l.value!==0?{[n.lang.rtl===!0?"left":"right"]:`${l.value}px`}:null),a=s(()=>l.value!==0?{[n.lang.rtl===!0?"right":"left"]:0,[n.lang.rtl===!0?"left":"right"]:`-${l.value}px`,width:`calc(100% + ${l.value}px)`}:null);function w(e){if(t.container===!0||document.qScrollPrevented!==!0){const i={position:e.position.top,direction:e.direction,directionChanged:e.directionChanged,inflectionPoint:e.inflectionPoint.top,delta:e.delta.top};b.value=i,t.onScroll!==void 0&&o("scroll",i)}}function F(e){const{height:i,width:f}=e;let y=!1;c.value!==i&&(y=!0,c.value=i,t.onScrollHeight!==void 0&&o("scroll-height",i),P()),u.value!==f&&(y=!0,u.value=f),y===!0&&t.onResize!==void 0&&o("resize",e)}function M({height:e}){d.value!==e&&(d.value=e,P())}function P(){if(t.container===!0){const e=c.value>d.value?C():0;l.value!==e&&(l.value=e)}}let p;const L={instances:{},view:s(()=>t.view),isContainer:s(()=>t.container),rootRef:r,height:c,containerHeight:d,scrollbarWidth:l,totalWidth:s(()=>u.value+l.value),rows:s(()=>{const e=t.view.toLowerCase().split(" ");return{top:e[0].split(""),middle:e[1].split(""),bottom:e[2].split("")}}),header:z({size:0,offset:0,space:!1}),right:z({size:300,offset:0,space:!1}),footer:z({size:0,offset:0,space:!1}),left:z({size:300,offset:0,space:!1}),scroll:b,animate(){p!==void 0?clearTimeout(p):document.body.classList.add("q-body--layout-animate"),p=setTimeout(()=>{document.body.classList.remove("q-body--layout-animate"),p=void 0},155)},update(e,i,f){L[e][i]=f}};if(k(K,L),C()>0){let f=function(){e=null,i.classList.remove("hide-scrollbar")},y=function(){if(e===null){if(i.scrollHeight>n.screen.height)return;i.classList.add("hide-scrollbar")}else clearTimeout(e);e=setTimeout(f,300)},x=function(q){e!==null&&q==="remove"&&(clearTimeout(e),f()),window[`${q}EventListener`]("resize",y)},e=null;const i=document.body;Q(()=>t.container!==!0?"add":"remove",x),t.container!==!0&&x("add"),D(()=>{x("remove")})}return()=>{const e=I(T.default,[v(J,{onScroll:w}),v(R,{onResize:F})]),i=v("div",{class:S.value,style:h.value,ref:t.container===!0?void 0:r,tabindex:-1},e);return t.container===!0?v("div",{class:"q-layout-container overflow-hidden",ref:r},[v(R,{onResize:M}),v("div",{class:"absolute-full",style:g.value},[v("div",{class:"scroll",style:a.value},[i])])]):i}}});export{Z as Q};