mirror of https://github.com/Ombi-app/Ombi
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
4.5 KiB
172 lines
4.5 KiB
(function (root, factory) {
|
|
if (typeof define === 'function' && define.amd) {
|
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
|
define(["tooltipster"], function (a0) {
|
|
return (factory(a0));
|
|
});
|
|
} else if (typeof exports === 'object') {
|
|
// Node. Does not work with strict CommonJS, but
|
|
// only CommonJS-like environments that support module.exports,
|
|
// like Node.
|
|
module.exports = factory(require("tooltipster"));
|
|
} else {
|
|
factory(jQuery);
|
|
}
|
|
}(this, function ($) {
|
|
|
|
(function (root, factory) {
|
|
if (typeof define === 'function' && define.amd) {
|
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
|
define(["jquery"], function (a0) {
|
|
return (factory(a0));
|
|
});
|
|
} else if (typeof exports === 'object') {
|
|
// Node. Does not work with strict CommonJS, but
|
|
// only CommonJS-like environments that support module.exports,
|
|
// like Node.
|
|
module.exports = factory(require("jquery"));
|
|
} else {
|
|
factory(jQuery);
|
|
}
|
|
}(this, function ($) {
|
|
|
|
var pluginName = 'tooltipster.SVG';
|
|
|
|
$.tooltipster._plugin({
|
|
name: pluginName,
|
|
core: {
|
|
__init: function() {
|
|
|
|
$.tooltipster._on('init', function(event) {
|
|
|
|
var win = $.tooltipster._env.window;
|
|
|
|
if ( win.SVGElement
|
|
&& event.origin instanceof win.SVGElement
|
|
) {
|
|
|
|
// auto-activation of the plugin on the instance
|
|
event.instance._plug(pluginName);
|
|
}
|
|
});
|
|
}
|
|
},
|
|
instance: {
|
|
__init: function(instance) {
|
|
|
|
var self = this;
|
|
|
|
//list of instance variables
|
|
self.__hadTitleTag = false;
|
|
self.__instance = instance;
|
|
|
|
// jQuery < v3.0's addClass and hasClass do not work on SVG elements.
|
|
// However, $('.tooltipstered') does find elements having the class.
|
|
if (!self.__instance._$origin.hasClass('tooltipstered')) {
|
|
|
|
var c = self.__instance._$origin.attr('class') || '';
|
|
|
|
if (c.indexOf('tooltipstered') == -1) {
|
|
self.__instance._$origin.attr('class', c + ' tooltipstered');
|
|
}
|
|
}
|
|
|
|
// if there is no content yet, let's look for a <title> child element
|
|
if (self.__instance.content() === null) {
|
|
|
|
// TODO: when there are several <title> tags (not supported in
|
|
// today's browsers yet though, still an RFC draft), pick the right
|
|
// one based on its "lang" attribute
|
|
var $title = self.__instance._$origin.find('>title');
|
|
|
|
if ($title[0]) {
|
|
|
|
var title = $title.text();
|
|
|
|
self.__hadTitleTag = true;
|
|
self.__instance._$origin.data('tooltipster-initialTitle', title);
|
|
self.__instance.content(title);
|
|
|
|
$title.remove();
|
|
}
|
|
}
|
|
|
|
// rectify the geometry if SVG.js and its screenBBox plugin have been included
|
|
self.__instance
|
|
._on('geometry.'+ self.namespace, function(event) {
|
|
|
|
var win = $.tooltipster._env.window;
|
|
|
|
// SVG coordinates may need fixing but we need svg.screenbox.js
|
|
// to provide it. SVGElement is IE8+
|
|
if (win.SVG.svgjs) {
|
|
|
|
if (!win.SVG.parser) {
|
|
win.SVG.prepare();
|
|
}
|
|
|
|
var svgEl = win.SVG.adopt(event.origin);
|
|
|
|
// not all figures need (and have) screenBBox
|
|
if (svgEl && svgEl.screenBBox) {
|
|
|
|
var bbox = svgEl.screenBBox();
|
|
|
|
event.edit({
|
|
height: bbox.height,
|
|
left: bbox.x,
|
|
top: bbox.y,
|
|
width: bbox.width
|
|
});
|
|
}
|
|
}
|
|
})
|
|
// if jQuery < v3.0, we have to remove the class ourselves
|
|
._on('destroy.'+ self.namespace, function() {
|
|
self.__destroy();
|
|
});
|
|
},
|
|
|
|
__destroy: function() {
|
|
|
|
var self = this;
|
|
|
|
if (!self.__instance._$origin.hasClass('tooltipstered')) {
|
|
var c = self.__instance._$origin.attr('class').replace('tooltipstered', '');
|
|
self.__instance._$origin.attr('class', c);
|
|
}
|
|
|
|
self.__instance._off('.'+ self.namespace);
|
|
|
|
// if the content was provided as a title tag, we may need to restore it
|
|
if (self.__hadTitleTag) {
|
|
|
|
// this must happen after Tooltipster restored (or not) the title attr
|
|
self.__instance.one('destroyed', function() {
|
|
|
|
// if a title attribute was restored, we just need to replace it with a tag
|
|
var title = self.__instance._$origin.attr('title');
|
|
|
|
if (title) {
|
|
|
|
// must be namespaced to work
|
|
$(document.createElementNS('http://www.w3.org/2000/svg', 'title'))
|
|
.text(title)
|
|
.appendTo(self.__instance._$origin);
|
|
|
|
self.__instance._$origin.removeAttr('title');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
/* a build task will add "return $;" here */
|
|
return $;
|
|
|
|
}));
|
|
|
|
|
|
}));
|