/* global jQuery TextHighlighter */
if (typeof jQuery !== "undefined") {
(function($) {
"use strict";
const PLUGIN_NAME = "textHighlighter";
function wrap(fn, wrapper) {
return function() {
wrapper.call(this, fn);
};
}
/**
* The jQuery plugin namespace.
* @external "jQuery.fn"
* @see {@link http://docs.jquery.com/Plugins/Authoring The jQuery Plugin Guide}
*/
/**
* Creates TextHighlighter instance and applies it to the given jQuery object.
* @param {object} options Same as {@link TextHighlighter} options.
* @returns {jQuery}
* @example $('#sandbox').textHighlighter({ color: 'red' });
* @function external:"jQuery.fn".textHighlighter
*/
$.fn.textHighlighter = function(options) {
return this.each(function() {
let el = this,
hl;
if (!$.data(el, PLUGIN_NAME)) {
hl = new TextHighlighter(el, options);
hl.destroy = wrap(hl.destroy, function(destroy) {
destroy.call(hl);
$(el).removeData(PLUGIN_NAME);
});
$.data(el, PLUGIN_NAME, hl);
}
});
};
$.fn.getHighlighter = function() {
return this.data(PLUGIN_NAME);
};
})(jQuery);
}