@aplus-frontend/ui
Version:
2 lines (1 loc) • 3.68 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("../config-provider/index.js");const v=require("@ant-design/icons-vue"),S=require("../config-provider/hooks/use-namespace.js"),x=["aria-valuenow","aria-valuemin","aria-valuemax"],L=e.defineComponent({name:"SplitBar",__name:"SplitBar",props:{index:{},active:{type:Boolean},resizable:{type:Boolean},startCollapsible:{type:Boolean},endCollapsible:{type:Boolean},onOffsetStart:{type:Function},onOffsetUpdate:{type:Function},onOffsetEnd:{},onCollapse:{type:Function},vertical:{type:Boolean},ariaNow:{},ariaMin:{},ariaMax:{},lazy:{type:Boolean},containerSize:{}},setup(z){function w(o){return typeof o=="number"&&!Number.isNaN(o)?Math.round(o):0}const n=z,{b:t,cssVar:C}=S.useNamespace("splitter-bar"),d=e.ref(null),s=e.ref(0),b=e.computed(()=>n.vertical?0:e.unref(s)),E=e.computed(()=>n.vertical?e.unref(s):0),M=o=>{n.resizable&&o.currentTarget&&(d.value=[o.pageX,o.pageY],n.onOffsetStart(n.index))},O=o=>{if(n.resizable&&o.touches.length===1){const a=o.touches[0];d.value=[a.pageX,a.pageY],n.onOffsetStart(n.index)}},B=o=>{const{containerSize:a,ariaMax:l,ariaMin:p,ariaNow:m}=n,f=a*m/100,r=f+o,i=Math.max(0,a*p/100),c=Math.max(a,a*l/100);return Math.max(i,Math.min(c,r))-f},h=(o,a)=>{const l=B(n.vertical?a:o);s.value=l},y=()=>{n.onOffsetUpdate(n.index,e.unref(b),e.unref(E)),s.value=0};e.watchEffect(o=>{const a=e.unref(d);if(a){const l=r=>{const{pageX:i,pageY:c}=r,u=i-a[0],g=c-a[1];n.lazy?h(u,g):n.onOffsetUpdate(n.index,u,g)},p=()=>{n.lazy&&y(),d.value=null,n.onOffsetEnd()},m=r=>{if(r.touches.length===1){const i=r.touches[0],c=i.pageX-a[0],u=i.pageY-a[1];n.lazy?h(c,u):n.onOffsetUpdate(n.index,c,u)}},f=()=>{n.lazy&&y(),d.value=null,n.onOffsetEnd()};window.addEventListener("touchmove",m),window.addEventListener("touchend",f),window.addEventListener("mousemove",l),window.addEventListener("mouseup",p),o(()=>{window.removeEventListener("touchmove",m),window.removeEventListener("touchend",f),window.removeEventListener("mousemove",l),window.removeEventListener("mouseup",p)})}},{flush:"post"});const N=e.computed(()=>n.vertical?v.UpOutlined:v.LeftOutlined),k=e.computed(()=>n.vertical?v.DownOutlined:v.RightOutlined);return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(t)()),role:"separator","aria-valuenow":w(n.ariaNow),"aria-valuemin":w(n.ariaMin),"aria-valuemax":w(n.ariaMax)},[n.lazy?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t)("preview"),{[e.unref(t)("preview-active")]:!!s.value}]),style:e.normalizeStyle(e.unref(C)({"preview-offset":`${s.value}px`}))},null,6)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t)("dragger"),{[e.unref(t)("dragger-disabled")]:!o.resizable,[e.unref(t)("dragger-active")]:o.active}]),onMousedown:M,onTouchstart:O},null,34),o.startCollapsible?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t)("collapse-bar"),e.unref(t)("collapse-bar-start")]),onClick:a[0]||(a[0]=()=>o.onCollapse(o.index,"start"))},[e.createVNode(e.unref(N),{class:e.normalizeClass([e.unref(t)("collapse-icon"),e.unref(t)("collapse-start")])},null,8,["class"])],2)):e.createCommentVNode("",!0),o.endCollapsible?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass([e.unref(t)("collapse-bar"),e.unref(t)("collapse-bar-end")]),onClick:a[1]||(a[1]=()=>o.onCollapse(o.index,"end"))},[e.createVNode(e.unref(k),{class:e.normalizeClass([e.unref(t)("collapse-icon"),e.unref(t)("collapse-end")])},null,8,["class"])],2)):e.createCommentVNode("",!0)],10,x))}});exports.default=L;