UNPKG

@leafer-in/scroll

Version:
3 lines (2 loc) 2.52 kB
"use strict";var t=require("@leafer-ui/core");class i extends t.Group{get isOutside(){return!0}constructor(i,s){super(),this.config={theme:"light",padding:0,minSize:10},i.isApp&&(i.sky.add(this),i=i.tree),this.target=i,s&&t.DataHelper.assign(this.config,s),this.changeTheme(this.config.theme),this.waitLeafer(this.__listenEvents,this)}changeTheme(i){let s;"string"==typeof i?(s={fill:"black",stroke:"rgba(255,255,255,0.8)"},"dark"===i&&(s.fill="white",s.stroke="rgba(0,0,0,0.2)")):s=i,this.scrollXBar||this.addMany(this.scrollXBar=new t.Box,this.scrollYBar=new t.Box),s=Object.assign({strokeAlign:"center",opacity:.5,width:6,cornerRadius:3,hoverStyle:{opacity:.6},pressStyle:{opacity:.7}},s),s.height||(s.height=s.width),this.scrollXBar.set(Object.assign(Object.assign({},s),{visible:!1})),this.scrollYBar.set(Object.assign(Object.assign({},s),{visible:!1})),this.leafer&&this.update()}update(i){if(this.dragScrolling)return;const{minSize:s,padding:e}=this.config,{zoomLayer:r,canvas:h}=this.target.leafer,{worldRenderBounds:a}=r;if(i&&this.scrollBounds&&this.scrollBounds.isSame(a))return;this.scrollBounds=new t.Bounds(a);const o=h.bounds.clone().shrink(e),n=o.clone().add(a),l=this.ratioX=o.width/n.width,g=this.ratioY=o.height/n.height,d=(o.x-n.x)/n.width,c=(o.y-n.y)/n.height,u=l<1,v=g<1,{scrollXBar:p,scrollYBar:_}=this,{x:f,y:y,width:m,height:B}=o.shrink([2,v?_.width+6:2,u?p.height+6:2,2]);p.set({x:f+m*d,y:y+B+2,width:Math.max(m*l,s),visible:u}),_.set({x:f+m+2,y:y+B*c,height:Math.max(B*g,s),visible:v})}onDrag(t){this.dragScrolling=!0,this.__dragOut=this.app.config.move.dragOut,this.app.config.move.dragOut=!1;const i=t.current===this.scrollXBar,s=this.target.leafer.getValidMove(i?-t.moveX/this.ratioX:0,i?0:-t.moveY/this.ratioY);this.target.moveWorld(s.x,s.y),t.current.moveWorld(s.x&&-s.x*this.ratioX,s.y&&-s.y*this.ratioY)}onDragEnd(){this.dragScrolling=!1,this.app.config.move.dragOut=this.__dragOut}__listenEvents(){const{scrollXBar:i,scrollYBar:s}=this;this.__eventIds=[i.on_(t.DragEvent.DRAG,this.onDrag,this),s.on_(t.DragEvent.DRAG,this.onDrag,this),i.on_(t.DragEvent.END,this.onDragEnd,this),s.on_(t.DragEvent.END,this.onDragEnd,this),this.target.on_(t.RenderEvent.BEFORE,(()=>this.update(!0))),this.target.leafer.on_(t.ResizeEvent.RESIZE,(()=>this.update()))]}__removeListenEvents(){this.off_(this.__eventIds)}destroy(){this.destroyed||(this.__removeListenEvents(),this.target=this.config=null,super.destroy())}}t.Plugin.add("scroll"),exports.ScrollBar=i; //# sourceMappingURL=scroll.min.cjs.map