-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjoint.ui.selection.min.js
More file actions
14 lines (8 loc) · 12.4 KB
/
joint.ui.selection.min.js
File metadata and controls
14 lines (8 loc) · 12.4 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,e,x){"use strict";l=l&&l.hasOwnProperty("default")?l.default:l,e=e&&e.hasOwnProperty("default")?e.default:e;var i=x.mvc.View.extend({options:{paper:void 0,graph:void 0,boxContent:function(t){return x.util.template("<%= length %> elements selected.")({length:this.model.length})},handles:[{name:"remove",position:"nw",events:{pointerdown:"removeElements"}},{name:"rotate",position:"sw",events:{pointerdown:"startRotating",pointermove:"doRotate",pointerup:"stopBatch"}},{name:"resize",position:"se",events:{pointerdown:"startResizing",pointermove:"doResize",pointerup:"stopBatch"}}],useModelGeometry:!1,strictSelection:!1,rotateAngleGrid:15,allowTranslate:!0},className:"selection",events:{"mousedown .selection-box":"onSelectionBoxPointerDown","touchstart .selection-box":"onSelectionBoxPointerDown","mousedown .handle":"onHandlePointerDown","touchstart .handle":"onHandlePointerDown"},documentEvents:{mousemove:"adjustSelection",touchmove:"adjustSelection",mouseup:"pointerup",touchend:"pointerup",touchcancel:"pointerup"},_action:null,init:function(){this.options.model&&(this.options.collection=this.options.model);var t=this.collection=this.options.collection||this.collection||new e.Collection;if(t.comparator||(t.comparator=this.constructor.depthComparator,t.sort()),this.model=t,!this.options.paper)throw new Error("Selection: paper required");x.util.defaults(this.options,{graph:this.options.paper.model}),x.util.bindAll(this,"startSelecting","stopSelecting","adjustSelection","pointerup"),this.options.paper.$el.append(this.$el),this._boxCount=0,this.$selectionWrapper=this.createSelectionWrapper(),this.handles=[],x.util.toArray(this.options.handles).forEach(this.addHandle,this),this.startListening()},startListening:function(){var t=this.options.paper;this.listenTo(t,"scale translate",this.onPaperTransformation);var e=this.options.graph;this.listenTo(e,"reset",this.cancelSelection),this.listenTo(e,"change remove",this.onGraphChange);var i=this.collection;this.listenTo(i,"remove",this.onRemoveElement),this.listenTo(i,"reset",this.onResetElements),this.listenTo(i,"add",this.onAddElement)},onPaperTransformation:function(){this.updateSelectionBoxes({async:!1})},onGraphChange:function(t,e){e.selection!==this.cid&&this.updateSelectionBoxes()},cancelSelection:function(){this.model.reset([],{ui:!0})},addHandle:function(i){this.handles.push(i);var t=l("<div/>",{class:"handle "+(i.position||"")+" "+(i.name||""),"data-action":i.name});return i.icon&&t.css("background-image","url("+i.icon+")"),t.html(i.content||""),x.util.setAttributesBySelector(t,i.attrs),this.$selectionWrapper.append(t),x.util.forIn(i.events,function(t,e){x.util.isString(t)?this.on("action:"+i.name+":"+e,this[t],this):this.on("action:"+i.name+":"+e,t)}.bind(this)),this},stopSelecting:function(t){var e,i=this.options.paper,n=this.eventData(t).action;switch(n){case"selecting":var o=this.$el.offset(),s=this.$el.width(),a=this.$el.height();e=i.pageToLocalPoint(o.left,o.top);var l=i.scale();s/=l.sx,a/=l.sy;var r=x.g.rect(e.x,e.y,s,a),h=this.getElementsInSelectedArea(r),c=this.options.filter;Array.isArray(c)?h=h.filter(function(t){return!c.includes(t.model)&&!c.includes(t.model.get("type"))}):x.util.isFunction(c)&&(h=h.filter(function(t){return!c(t.model)}));var p=h.map(function(t){return t.model});this.model.reset(p,{ui:!0});break;case"translating":this.options.graph.stopBatch("selection-translate"),e=i.snapToGrid(t.clientX,t.clientY),this.notify("selection-box:pointerup",t,e.x,e.y);break;default:n||this.cancelSelection()}this._action=null},removeHandle:function(i){var t=x.util.toArray(this.handles).findIndex(function(t){return t.name===i}),e=this.handles[t];return e&&(x.util.forIn(e.events,function(t,e){this.off("action:"+i+":"+e)}.bind(this)),this.$(".handle."+i).remove(),this.handles.splice(t,1)),this},startSelecting:function(t){t=x.util.normalizeEvent(t),this.cancelSelection();var e,i,n=this.options.paper.el;if(null!=t.offsetX&&null!=t.offsetY&&l.contains(n,t.target))e=t.offsetX,i=t.offsetY;else{var o=l(n).offset(),s=n.scrollLeft,a=n.scrollTop;e=t.clientX-o.left+window.pageXOffset+s,i=t.clientY-o.top+window.pageYOffset+a}this.$el.css({width:1,height:1,left:e,top:i}),this.showLasso(),this.eventData(t,{action:"selecting",clientX:t.clientX,clientY:t.clientY,offsetX:e,offsetY:i}),this.delegateDocumentEvents(null,t.data),this._action="selecting"},changeHandle:function(e,t){var i=x.util.toArray(this.handles).find(function(t){return t&&t.name===e});return i&&(this.removeHandle(e),this.addHandle(x.util.merge({name:e},i,t))),this},onSelectionBoxPointerDown:function(t){t.stopPropagation(),t=x.util.normalizeEvent(t),this.options.allowTranslate&&this.startTranslatingSelection(t),this.eventData(t,{activeElementView:this.getCellView(t.target)});var e=this.options.paper.snapToGrid(t.clientX,t.clientY);this.notify("selection-box:pointerdown",t,e.x,e.y),this.delegateDocumentEvents(null,t.data)},startTranslatingSelection:function(t){this.options.graph.startBatch("selection-translate");var e=this.options.paper.snapToGrid(t.clientX,t.clientY);this.eventData(t,{action:"translating",snappedClientX:e.x,snappedClientY:e.y}),this._action="translating"},adjustSelection:function(t){var e,i;t=x.util.normalizeEvent(t);var n=this.eventData(t),o=n.action;switch(o){case"selecting":e=t.clientX-n.clientX,i=t.clientY-n.clientY;var s=parseInt(this.$el.css("left"),10),a=parseInt(this.$el.css("top"),10);this.$el.css({left:e<0?n.offsetX+e:s,top:i<0?n.offsetY+i:a,width:Math.abs(e),height:Math.abs(i)});break;case"translating":var l=this.options.paper.snapToGrid(t.clientX,t.clientY),r=l.x,h=l.y;e=r-n.snappedClientX,i=h-n.snappedClientY;var c=this.options.paper.getRestrictedArea();if(c){var p=this.model.toArray(),d=this.options.graph.getCellsBBox(p),u=c.x-d.x,f=c.y-d.y,g=c.x+c.width-(d.x+d.width),m=c.y+c.height-(d.y+d.height);e<u&&(e=u),i<f&&(i=f),g<e&&(e=g),m<i&&(i=m)}if(e||i){if(this.translateSelectedElements(e,i),this.boxesUpdated)1<this.model.length&&this.updateSelectionBoxes();else{var v=this.options.paper.scale();this.$el.children(".selection-box").add(this.$selectionWrapper).css({left:"+="+e*v.sx,top:"+="+i*v.sy})}n.snappedClientX=r,n.snappedClientY=h}this.notify("selection-box:pointermove",t,r,h);break;default:o&&this.pointermove(t)}this.boxesUpdated=!1},translateSelectedElements:function(i,n){var o={};this.model.each(function(t){if(!o[t.id]){var e={selection:this.cid};t.translate(i,n,e),t.getEmbeddedCells({deep:!0}).forEach(function(t){o[t.id]=!0}),this.options.graph.getConnectedLinks(t).forEach(function(t){o[t.id]||(t.translate(i,n,e),o[t.id]=!0)})}}.bind(this))},notify:function(t,e){var i=this.eventData(e),n=Array.prototype.slice.call(arguments,1);this.trigger.apply(this,[t,i.activeElementView].concat(n))},getElementsInSelectedArea:function(t){var e=this.options.paper,i={strict:this.options.strictSelection};return this.options.useModelGeometry?e.model.findModelsInArea(t,i).map(e.findViewByModel,e).filter(function(t){return!!t}):e.findViewsInArea(t,i)},pointerup:function(t){var e=this.eventData(t).action;e&&(this.triggerAction(e,"pointerup",t),this.stopSelecting(t),this.undelegateDocumentEvents(),this._action=null)},destroySelectionBox:function(t){this.$('[data-model="'+t.get("id")+'"]').remove(),0===this.$el.children(".selection-box").length&&this.hide(),this._boxCount=Math.max(0,this._boxCount-1)},hide:function(){this.$el.removeClass("lasso selected")},showSelected:function(){this.$el.addClass("selected")},showLasso:function(){this.$el.addClass("lasso")},destroyAllSelectionBoxes:function(){this.hide(),this.$el.children(".selection-box").remove(),this._boxCount=0},createSelectionBox:function(t){var e=t.findView(this.options.paper);if(e){var i=e.getBBox({useModelGeometry:this.options.useModelGeometry});l("<div/>").addClass("selection-box").attr("data-model",t.get("id")).css({left:i.x,top:i.y,width:i.width,height:i.height}).appendTo(this.el),this.showSelected(),this._boxCount++}},createSelectionWrapper:function(){var t=l("<div/>",{class:"selection-wrapper"}),e=l("<div/>",{class:"box"});return t.append(e),t.attr("data-selection-length",this.model.length),this.$el.prepend(t),t},updateSelectionWrapper:function(){var n={x:1/0,y:1/0},o={x:0,y:0};if(this.model.each(function(t){var e=this.options.paper.findViewByModel(t);if(e){var i=e.getBBox({useModelGeometry:this.options.useModelGeometry});n.x=Math.min(n.x,i.x),n.y=Math.min(n.y,i.y),o.x=Math.max(o.x,i.x+i.width),o.y=Math.max(o.y,i.y+i.height)}}.bind(this)),this.$selectionWrapper.css({left:n.x,top:n.y,width:o.x-n.x,height:o.y-n.y}).attr("data-selection-length",this.model.length),x.util.isFunction(this.options.boxContent)){var t=this.$(".box"),e=this.options.boxContent.call(this,t[0]);e&&t.html(e)}},updateSelectionBoxes:function(t){0!==this.collection.length&&(this.boxesUpdated=!0,this.options.paper.requestViewUpdate(this,1,this.UPDATE_PRIORITY,t))},confirmUpdate:function(){this._updateSelectionBoxes()},_updateSelectionBoxes:function(){if(this._boxCount){this.hide();for(var t=this.$el.children(".selection-box"),e=0,i=t.length;e<i;e++){var n=t[e],o=l(n).remove().attr("data-model"),s=this.model.get(o);s&&this.createSelectionBox(s)}this.updateSelectionWrapper()}},onHandlePointerDown:function(t){var e=l(t.currentTarget).attr("data-action");e&&(t.preventDefault(),t.stopPropagation(),t=x.util.normalizeEvent(t),this.triggerAction(e,"pointerdown",t),this.eventData(t,{action:e,clientX:t.clientX,clientY:t.clientY,startClientX:t.clientX,startClientY:t.clientY}),this.delegateDocumentEvents(null,t.data),this._action=e)},getCellView:function(t){var e=this.model.get(t.getAttribute("data-model"));return e&&e.findView(this.options.paper)},pointermove:function(t){var e=this.eventData(t),i=e.action;if(i){var n=this.options.paper.snapToGrid(t.clientX,t.clientY),o=this.options.paper.snapToGrid(e.clientX,e.clientY),s=n.x-o.x,a=n.y-o.y;this.triggerAction(i,"pointermove",t,s,a,t.clientX-e.startClientX,t.clientY-e.startClientY),e.clientX=t.clientX,e.clientY=t.clientY}},triggerAction:function(t,e,i){var n=Array.prototype.slice.call(arguments,2);n.unshift("action:"+t+":"+e),this.trigger.apply(this,n)},onRemoveElement:function(t){this.destroySelectionBox(t),this.updateSelectionWrapper()},onResetElements:function(t){this.destroyAllSelectionBoxes(),t.each(this.createSelectionBox.bind(this)),this.updateSelectionWrapper()},onAddElement:function(t){this.createSelectionBox(t),this.updateSelectionWrapper()},removeElements:function(t){var e=this.collection.toArray();this.cancelSelection(),this.options.graph.removeCells(e,{selection:this.cid})},startRotating:function(t){this.options.graph.trigger("batch:start");var e=this.options.graph.getCellsBBox(this.model.models).center(),i=this.options.paper.snapToGrid(t.clientX,t.clientY),n=this.model.toArray().reduce(function(t,e){return t[e.id]=x.g.normalizeAngle(e.get("angle")||0),t},{});this.eventData(t,{center:e,clientAngle:x.g.point(i).theta(e),initialAngles:n})},startResizing:function(t){var e=this.options.paper,i=this.options.graph,n=e.options.gridSize,o=this.model.toArray(),s=i.getCellsBBox(o),a=x.util.invoke(o,"getBBox"),l=a.reduce(function(t,e){return e.width<t?e.width:t},1/0),r=a.reduce(function(t,e){return e.height<t?e.height:t},1/0);this.eventData(t,{cells:i.getSubgraph(o),bbox:s,minWidth:n*s.width/l,minHeight:n*s.height/r}),i.trigger("batch:start")},doResize:function(t,e,i){var n=this.eventData(t),o=n.bbox,s=o.width,a=o.height,l=Math.max(s+e,n.minWidth),r=Math.max(a+i,n.minHeight);(.001<Math.abs(s-l)||.001<Math.abs(a-r))&&(this.options.graph.resizeCells(l,r,n.cells,{selection:this.cid}),o.width=l,o.height=r,this.updateSelectionBoxes())},doRotate:function(t){var i=this.eventData(t),n=this.options.rotateAngleGrid,e=this.options.paper.snapToGrid(t.clientX,t.clientY),o=i.clientAngle-x.g.point(e).theta(i.center);.001<Math.abs(o)&&(this.collection.each(function(t){var e=x.g.snapToGrid(i.initialAngles[t.id]+o,n);t.rotate(e,!0,i.center,{selection:this.cid})}.bind(this)),this.updateSelectionBoxes())},stopBatch:function(){this.options.graph.trigger("batch:stop")},getAction:function(){return this._action}},{depthComparator:function(t){return t.getAncestors().length}}),n=i;t.Selection=i,t.SelectionView=n}(this.joint.ui=this.joint.ui||{},$,Backbone,joint);