-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjoint.ui.navigator.min.js
More file actions
14 lines (8 loc) · 4.26 KB
/
joint.ui.navigator.min.js
File metadata and controls
14 lines (8 loc) · 4.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*! Rappid v3.1.1 - HTML5 Diagramming Framework - TRIAL VERSION
Copyright (c) 2015 client IO
2020-06-11
This Source Code Form is subject to the terms of the Rappid Trial License
, v. 2.0. If a copy of the Rappid License was not distributed with this
file, You can obtain one at http://jointjs.com/license/rappid_v2.txt
or from the Rappid archive as was distributed by client IO. See the LICENSE file.*/
this.joint=this.joint||{},function(t,l,V){"use strict";l=l&&l.hasOwnProperty("default")?l.default:l;var e=V.mvc.View.extend({className:"navigator",events:{mousedown:"startAction",touchstart:"startAction","mousedown .joint-paper":"scrollTo","touchstart .joint-paper":"scrollTo"},documentEvents:{mousemove:"doAction",touchmove:"doAction",mouseup:"stopAction",touchend:"stopAction"},options:{paperConstructor:V.dia.Paper,paperOptions:{},zoomOptions:null,zoom:{min:.5,max:2},width:300,height:200,padding:10},init:function(){this.options.zoomOptions?this.options.zoom=V.util.assign({},this.options.zoom,this.options.zoomOptions):this.options.zoom&&(this.options.zoom=V.util.defaults({},this.options.zoom,this.constructor.prototype.options.zoom)),V.util.bindAll(this,"updateCurrentView","doAction","stopAction","scrollTo"),this.updateCurrentView=V.util.debounce(this.updateCurrentView,0);var t=this.options.paperScroller;t.$el.on("scroll"+this.getEventNamespace(),this.updateCurrentView);var e=this.sourcePaper=t.options.paper;this.listenTo(e,"resize",this.updatePaper),this.targetPaper=new this.options.paperConstructor(V.util.merge({model:e.model,interactive:!1,frozen:!0},this.options.paperOptions))},render:function(){if(this.targetPaper.$el.appendTo(this.el),this.targetPaper.unfreeze(),this.$currentView=l("<div>").addClass("current-view"),this.options.zoom){var t=l("<div>").addClass("current-view-control");this.$currentView.append(t)}return this.$el.append(this.$currentView).css({width:this.options.width,height:this.options.height,padding:this.options.padding}),this.updatePaper(this.sourcePaper.options.width,this.sourcePaper.options.height),this},updatePaper:function(t,e){var o=this.sourcePaper.options.origin,i=this.sourcePaper.scale(),s=this.options.width-2*this.options.padding,r=this.options.height-2*this.options.padding;t/=i.sx,e/=i.sy;var n=this.ratio=Math.min(s/t,r/e),a=o.x*n/i.sx,p=o.y*n/i.sy;t*=n,e*=n,this.targetPaper.setDimensions(t,e),this.targetPaper.setOrigin(a,p),this.targetPaper.scale(n,n),this.updateCurrentView()},updateCurrentView:function(){var t=this.ratio,e=this.sourcePaper.scale(),o=this.options.paperScroller,i=o.clientToLocalPoint(0,0),s=this.targetPaper.$el.position(),r=this.targetPaper.translate();r.ty=r.ty||0,this.currentViewGeometry={top:s.top+i.y*t+r.ty,left:s.left+i.x*t+r.tx,width:o.$el.innerWidth()*t/e.sx,height:o.$el.innerHeight()*t/e.sy},this.$currentView.css(this.currentViewGeometry)},startAction:function(t){var e=(t=V.util.normalizeEvent(t)).clientX,o=t.clientY,i=l(t.target).hasClass("current-view-control")?"zooming":"panning",s=this,r=s.options,n=s.currentViewGeometry,a=s.sourcePaper,p=r.paperScroller;this.delegateDocumentEvents(null,{action:i,startClientX:e,startClientY:o,startScrollLeft:p.el.scrollLeft,startScrollTop:p.el.scrollTop,startZoom:p.zoom(),startGeometry:n,startScale:a.scale()})},doAction:function(t){var e=(t=V.util.normalizeEvent(t)).clientX,o=t.clientY,i=t.data,s=this,r=s.sourcePaper,n=s.options,a=s.ratio,p=i.action,l=i.startClientX,c=i.startClientY,h=i.startScrollLeft,u=i.startScrollTop,d=i.startZoom,m=i.startGeometry,g=i.startScale,f=i.frameId,v=n.paperScroller,w=n.zoom;switch(p){case"panning":var P=r.scale(),z=(e-l)*P.sx,y=(o-c)*P.sy;v.el.scrollLeft=h+z/a,v.el.scrollTop=u+y/a;break;case"zooming":var C=1+(l-e)/m.width/g.sx;V.util.cancelFrame(f),i.frameId=V.util.nextFrame(function(){v.zoom(C*d,V.util.defaults({absolute:!0},w))})}},stopAction:function(){this.undelegateDocumentEvents()},scrollTo:function(t){t=V.util.normalizeEvent(t);var e,o,i=this.targetPaper.translate();if(i.ty=i.ty||0,void 0===t.offsetX){var s=this.targetPaper.$el.offset();e=t.pageX-s.left,o=t.pageY-s.top}else e=t.offsetX,o=t.offsetY;var r=(e-i.tx)/this.ratio,n=(o-i.ty)/this.ratio;this.options.paperScroller.center(r,n)},onRemove:function(){this.targetPaper.remove(),this.options.paperScroller.$el.off(this.getEventNamespace())}});t.Navigator=e}(this.joint.ui=this.joint.ui||{},$,joint);