-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjoint.ui.tooltip.min.js
More file actions
14 lines (8 loc) · 7.72 KB
/
joint.ui.tooltip.min.js
File metadata and controls
14 lines (8 loc) · 7.72 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,c,g){"use strict";c=c&&c.hasOwnProperty("default")?c.default:c;var i=g.mvc.View.extend({className:"tooltip",options:{left:void 0,right:void 0,top:void 0,bottom:void 0,position:void 0,positionSelector:void 0,direction:"auto",minResizedWidth:100,padding:0,rootTarget:null,target:null,trigger:"hover",viewport:{selector:null,padding:0},dataAttributePrefix:"tooltip",template:'<div class="tooltip-arrow"/><div class="tooltip-arrow-mask"/><div class="tooltip-content"/>',animation:!1},init:function(){this.eventNamespace=("."+this.className+this.cid).replace(/ /g,"_"),this.settings={},this.container=document.body;var t=this.options,i=t.trigger,o=t.rootTarget,e=t.target,s=t.animation;void 0===s&&(s=!1);var n=i.split(" ");g.util.bindAll(this,"render","hide","show","toggle","isVisible","position"),o?(this.$rootTarget=c(o),n.forEach(function(t){switch(t){case"click":this.$rootTarget.on("click"+this.eventNamespace,this.options.target,this.toggle);break;case"hover":this.$rootTarget.on("mouseover"+this.eventNamespace,this.options.target,this.render);break;case"focus":this.$rootTarget.on("focusin"+this.eventNamespace,this.options.target,this.render)}},this)):(this.$target=c(e),n.forEach(function(t){switch(t){case"click":this.$target.on("click"+this.eventNamespace,this.toggle);break;case"hover":this.$target.on("mouseover"+this.eventNamespace,this.render);break;case"focus":this.$target.on("focusin"+this.eventNamespace,this.render)}},this)),s&&this.animate(s),this.$el.append(this.options.template)},animate:function(t){void 0===t&&(t={});var i=t.duration;void 0===i&&(i="500ms");var o=t.delay;void 0===o&&(o="400ms");var e=t.timingFunction;void 0===e&&(e="ease"),this.$el.addClass("animated").css({animationDelay:o,animationDuration:i,animationTimingFunction:e})},onRemove:function(){this.options.rootTarget?this.$rootTarget.off(this.eventNamespace):this.$target.off(this.eventNamespace)},hide:function(){var t=this.settings;t&&(this.unbindHideActions(t.currentTarget),this.$el.removeClass(t.className),this.$el.remove())},show:function(t){this.render(t||{target:this.options.target})},toggle:function(t){this.isVisible()?this.hide():this.show(t)},isVisible:function(){return document.body.contains(this.el)},render:function(t){var i,o=void 0!==t.x&&void 0!==t.y?t:null,e=c(t.target).closest(this.options.target)[0],s=this.settings=this.getTooltipSettings(e);s.currentTarget=e,this.bindHideActions(e),i=o?{x:o.x,y:o.y,width:1,height:1}:g.util.getElementBBox(e),this.$(".tooltip-content").html(s.content),this.$el.hide(),this.$el.removeClass("left right top bottom"),this.$el.addClass(s.className),c(this.container).append(this.$el);var n=this.$("img");n.length?n.on("load",function(){this.position(i),this.$el.addClass("rendered")}.bind(this)):(this.position(i),this.$el.addClass("rendered"))},getTooltipSettings:function(t){var i=this.loadDefinitionFromElementData(t);return this.evaluateOptions(t,i)},unbindHideActions:function(t){var i=this.eventNamespace+".remove";c(t).off(i),clearInterval(this.interval)},bindHideOnRemoveTarget:function(t){clearInterval(this.interval),this.interval=setInterval(function(){c.contains(document,t)||(clearInterval(this.interval),this.hide())}.bind(this),500)},bindHideActions:function(t){var o=this.settings,e=c(t),s=this.eventNamespace+".remove";this.bindHideOnRemoveTarget(t),this.options.trigger.split(" ").forEach(function(t){var i={hover:["mouseout","mousedown"],focus:["focusout"]}[t]||[];o.hideTrigger&&(i=o.hideTrigger.split(" ")||[]),i.forEach(function(t){e.on(t+s,this.hide)},this)},this)},evaluateOptions:function(e,s){s=s||{};var n=g.util.assign({},s,this.options);return g.util.forIn(n,function(t,i){var o=g.util.isFunction(t)?t(e):t;n[i]=null==o?s[i]:o}),this.normalizePosition(n),n},loadDefinitionFromElementData:function(t){if(!t)return{};var i=this.getAllAttrs(t,"data-"+this.options.dataAttributePrefix),o={};return g.util.forIn(i,function(t,i){""===i&&(i="content"),function(t){return"left"===t||"bottom"===t||"top"===t||"right"===t}(i)||(o[i]=t)}),o},getAllAttrs:function(t,i){for(var o=i||"",e=t.attributes,s={},n=0,r=e.length;n<r;n++){var a=e[n];if(a&&a.name.startsWith(o))s[g.util.camelCase(a.name.slice(o.length))]=a.value}return s},normalizePosition:function(t){var i=t.left||t.right||t.top||t.bottom;!t.position&&i&&(t.left&&(t.position="left"),t.right&&(t.position="right"),t.top&&(t.position="top"),t.bottom&&(t.position="bottom")),!t.positionSelector&&i&&(t.positionSelector=i)},position:function(t){var i=this.settings;this.$el.show(),this.$el.css("width","auto");var o=g.util.getElementBBox(this.container),e=this.getTooltipBBox(t,o);this.$el.css({left:e.x,top:e.y,width:e.width||"auto"});var s={};"left"===i.position||"right"===i.position?s.top=t.y+t.height/2-e.y:"top"===i.position||"bottom"===i.position?s.left=t.x+t.width/2-e.x:s.top=t.y+t.height/2-e.y,s.top-=o.y,s.left-=o.x,this.$(".tooltip-arrow, .tooltip-arrow-mask").removeAttr("style").css(s),i.direction&&"off"!==i.direction&&this.$el.addClass("auto"===i.direction?i.position||"left":i.direction)},getViewportViewBBox:function(){var t=this.settings,i=t.viewport.selector?c(t.currentTarget).closest(t.viewport.selector):"html",o=g.util.getElementBBox(i);if(!t.viewport.selector){var e=c(window);o.width=e.width()+e.scrollLeft(),o.height=e.height()+e.scrollTop()}var s=t.viewport.padding||0;return o.x+=s,o.y+=s,o.width-=2*s,o.height-=2*s,o},basePositions:{left:function(t,i){var o={x:i.positionedBBox.x+i.positionedBBox.width+i.padding,y:i.targetBBox.y+i.targetBBox.height/2-i.tooltipBBox.height/2};if(t){var e=i.viewport.x+i.viewport.width-o.x;if(e>i.minWidth&&e<i.tooltipBBox.width+i.padding&&(o.width=e),e<i.minWidth)return this.settings.position="right",this.basePositions.right(!1,i)}return o},right:function(t,i){var o={x:i.positionedBBox.x-i.tooltipBBox.width-i.padding,y:i.targetBBox.y+i.targetBBox.height/2-i.tooltipBBox.height/2};if(t){var e=i.positionedBBox.x-i.padding-i.viewport.x;if(e>i.minWidth&&e<i.tooltipBBox.width+i.padding&&(o.width=e,o.x=i.viewport.x),e<i.minWidth)return this.settings.position="left",this.basePositions.left(!1,i)}return o},top:function(t,i){var o={x:i.targetBBox.x+i.targetBBox.width/2-i.tooltipBBox.width/2,y:i.positionedBBox.y+i.positionedBBox.height+i.padding};if(t&&i.viewport.y+i.viewport.height-(i.positionedBBox.y+i.positionedBBox.height+i.padding)<i.tooltipBBox.height)return this.settings.position="bottom",this.basePositions.bottom(!1,i);return o},bottom:function(t,i){var o={x:i.targetBBox.x+i.targetBBox.width/2-i.tooltipBBox.width/2,y:i.positionedBBox.y-i.tooltipBBox.height-i.padding};if(t&&i.positionedBBox.y-i.padding-i.viewport.y<i.tooltipBBox.height)return this.settings.position="top",this.basePositions.top(!1,i);return o}},getTooltipBBox:function(t,i){var o=this.settings,e=c(o.positionSelector),s=e[0]?g.util.getElementBBox(e[0]):t,n=this.measureTooltipElement(),r=this.getViewportViewBBox(),a=o.position||"left",h=o.padding,l=Math.min(o.minResizedWidth,n.width+h),d={padding:h,targetBBox:t,positionedBBox:s,tooltipBBox:n,viewport:r},p=this.basePositions[a].call(this,0<l,d);return p.x-=i.x,p.y-=i.y,p.y<r.y?p.y=r.y:p.y+n.height>r.y+r.height&&(p.y=r.y+r.height-n.height),p.x<r.x?p.x=r.x:p.x+n.width>r.x+r.width&&(p.x=r.x+r.width-n.width),p},measureTooltipElement:function(){var t=this.$el.clone().appendTo(c("body")).css({left:-1e3,top:-500}),i={width:t.outerWidth(),height:t.outerHeight()};return t.remove(),i}});t.Tooltip=i}(this.joint.ui=this.joint.ui||{},$,joint);