!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):n.Mark=t(n.jQuery)}(this,function(n){"use strict";function e(n){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(n)}function i(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}function o(n,t){for(var i,r=0;r<t.length;r++)i=t[r],i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,i.key,i)}function r(n,t,i){return t&&o(n.prototype,t),i&&o(n,i),n}function u(){return(u=Object.assign||function(n){for(var i,r,t=1;t<arguments.length;t++){i=arguments[t];for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(n[r]=i[r])}return n}).apply(this,arguments)}n=n&&n.hasOwnProperty("default")?n.default:n;var f=function(){function n(t){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;i(this,n);this.ctx=t;this.iframes=r;this.exclude=u;this.iframesTimeout=f}return r(n,[{key:"getContexts",value:function(){var n=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach(function(t){var i=n.filter(function(n){return n.contains(t)}).length>0;-1!==n.indexOf(t)||i||n.push(t)}),n}},{key:"getIframeContents",value:function(n,t){var i,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r;try{if(r=n.contentWindow,i=r.document,!r||!i)throw new Error("iframe inaccessible");}catch(n){u()}i&&t(i)}},{key:"isIframeBlank",value:function(n){var t="about:blank",i=n.getAttribute("src").trim();return n.contentWindow.location.href===t&&i!==t&&i}},{key:"observeIframeLoad",value:function(n,t,i){var u=this,f=!1,e=null,r=function r(){if(!f){f=!0;clearTimeout(e);try{u.isIframeBlank(n)||(n.removeEventListener("load",r),u.getIframeContents(n,t,i))}catch(n){i()}}};n.addEventListener("load",r);e=setTimeout(r,this.iframesTimeout)}},{key:"onIframeReady",value:function(n,t,i){try{"complete"===n.contentWindow.document.readyState?this.isIframeBlank(n)?this.observeIframeLoad(n,t,i):this.getIframeContents(n,t,i):this.observeIframeLoad(n,t,i)}catch(n){i()}}},{key:"waitForIframes",value:function(n,t){var r=this,i=0;this.forEachIframe(n,function(){return!0},function(n){i++;r.waitForIframes(n.querySelector("html"),function(){--i||t()})},function(n){n||t()})}},{key:"forEachIframe",value:function(t,i,r){var e=this,h=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},f=t.querySelectorAll("iframe"),o=f.length,s=0,u;f=Array.prototype.slice.call(f);u=function(){--o<=0&&h(s)};o||u();f.forEach(function(t){n.matches(t,e.exclude)?u():e.onIframeReady(t,function(n){i(t)&&(s++,r(n));u()},u)})}},{key:"createIterator",value:function(n,t,i){return document.createNodeIterator(n,t,i,!1)}},{key:"createInstanceOnIframe",value:function(t){return new n(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(n,t,i){return n.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_PRECEDING&&(null===t||t.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_FOLLOWING)?!0:!1}},{key:"getIteratorNode",value:function(n){var t=n.previousNode();return{prevNode:t,node:null===t?n.nextNode():n.nextNode()&&n.nextNode()}}},{key:"checkIframeFilter",value:function(n,t,i,r){var u=!1,f=!1;return r.forEach(function(n,t){n.val===i&&(u=t,f=n.handled)}),this.compareNodeIframe(n,t,i)?(!1!==u||f?!1===u||f||(r[u].handled=!0):r.push({val:i,handled:!0}),!0):(!1===u&&r.push({val:i,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(n,t,i,r){var u=this;n.forEach(function(n){n.handled||u.getIframeContents(n.val,function(n){u.createInstanceOnIframe(n).forEachNode(t,i,r)})})}},{key:"iterateThroughNodes",value:function(n,t,i,r,u){for(var e,h,f,o=this,l=this.createIterator(t,n,r),c=[],s=[];f=void 0,f=o.getIteratorNode(l),h=f.prevNode,e=f.node;)this.iframes&&this.forEachIframe(t,function(n){return o.checkIframeFilter(e,h,n,c)},function(t){o.createInstanceOnIframe(t).forEachNode(n,function(n){return s.push(n)},r)}),s.push(e);s.forEach(function(n){i(n)});this.iframes&&this.handleOpenIframes(c,n,i,r);u()}},{key:"forEachNode",value:function(n,t,i){var r=this,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},f=this.getContexts(),e=f.length;e||u();f.forEach(function(f){var o=function(){r.iterateThroughNodes(n,f,t,i,function(){--e<=0&&u()})};r.iframes?r.waitForIframes(f,o):o()})}}],[{key:"matches",value:function(n,t){var u="string"==typeof t?[t]:t,r=n.matches||n.matchesSelector||n.msMatchesSelector||n.mozMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector,i;return r?(i=!1,u.every(function(t){return!r.call(n,t)||(i=!0,!1)}),i):!1}}]),n}(),s=function(){function n(t){i(this,n);this.opt=u({},{diacritics:!0,synonyms:{},accuracy:"partially",caseSensitive:!1,ignoreJoiners:!1,ignorePunctuation:[],wildcards:"disabled"},t)}return r(n,[{key:"create",value:function(n){return"disabled"!==this.opt.wildcards&&(n=this.setupWildcardsRegExp(n)),n=this.escapeStr(n),Object.keys(this.opt.synonyms).length&&(n=this.createSynonymsRegExp(n)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(n=this.setupIgnoreJoinersRegExp(n)),this.opt.diacritics&&(n=this.createDiacriticsRegExp(n)),n=this.createMergedBlanksRegExp(n),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(n=this.createJoinersRegExp(n)),"disabled"!==this.opt.wildcards&&(n=this.createWildcardsRegExp(n)),n=this.createAccuracyRegExp(n),new RegExp(n,"gm".concat(this.opt.caseSensitive?"":"i"))}},{key:"sortByLength",value:function(n){return n.sort(function(n,t){return n.length===t.length?n>t?1:-1:t.length-n.length})}},{key:"escapeStr",value:function(n){return n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createSynonymsRegExp",value:function(n){var r=this,u=this.opt.synonyms,e=this.opt.caseSensitive?"":"i",f=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"",t,i;for(t in u)u.hasOwnProperty(t)&&(i=Array.isArray(u[t])?u[t]:[u[t]],i.unshift(t),(i=this.sortByLength(i).map(function(n){return"disabled"!==r.opt.wildcards&&(n=r.setupWildcardsRegExp(n)),n=r.escapeStr(n)}).filter(function(n){return""!==n})).length>1&&(n=n.replace(new RegExp("(".concat(i.map(function(n){return r.escapeStr(n)}).join("|"),")"),"gm".concat(e)),f+"(".concat(i.map(function(n){return r.processSynonyms(n)}).join("|"),")")+f)));return n}},{key:"processSynonyms",value:function(n){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(n=this.setupIgnoreJoinersRegExp(n)),n}},{key:"setupWildcardsRegExp",value:function(n){return(n=n.replace(/(?:\\)*\?/g,function(n){return"\\"===n.charAt(0)?"?":"\x01"})).replace(/(?:\\)*\*/g,function(n){return"\\"===n.charAt(0)?"*":"\x02"})}},{key:"createWildcardsRegExp",value:function(n){var t="withSpaces"===this.opt.wildcards;return n.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(n){return n.replace(/[^(|)\\]/g,function(n,t,i){var r=i.charAt(t+1);return/[(|)\\]/.test(r)||""===r?n:n+"\0"})}},{key:"createJoinersRegExp",value:function(n){var t=[],i=this.opt.ignorePunctuation;return Array.isArray(i)&&i.length&&t.push(this.escapeStr(i.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?n.split(/\u0000+/).join("[".concat(t.join(""),"]*")):n}},{key:"createDiacriticsRegExp",value:function(n){var i=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"],t=[];return n.split("").forEach(function(u){r.every(function(r){if(-1!==r.indexOf(u)){if(t.indexOf(r)>-1)return!1;n=n.replace(new RegExp("[".concat(r,"]"),"gm".concat(i)),"[".concat(r,"]"));t.push(r)}return!0})}),n}},{key:"createMergedBlanksRegExp",value:function(n){return n.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(n){var r=this,i=this.opt.accuracy,u="string"==typeof i?i:i.value,f="string"==typeof i?[]:i.limiters,t="";switch(f.forEach(function(n){t+="|".concat(r.escapeStr(n))}),u){case"partially":default:return"()(".concat(n,")");case"complementary":return t="\\s"+(t||this.escapeStr("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿")),"()([^".concat(t,"]*").concat(n,"[^").concat(t,"]*)");case"exactly":return"(^|\\s".concat(t,")(").concat(n,")(?=$|\\s").concat(t,")")}}}]),n}(),t=function(){function n(t){i(this,n);this.ctx=t;this.ie=!1;var r=window.navigator.userAgent;(r.indexOf("MSIE")>-1||r.indexOf("Trident")>-1)&&(this.ie=!0)}return r(n,[{key:"log",value:function(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",t=this.opt.log;this.opt.debug&&"object"===e(t)&&"function"==typeof t[i]&&t[i]("mark.js: ".concat(n))}},{key:"getSeparatedKeywords",value:function(n){var i=this,t=[];return n.forEach(function(n){i.opt.separateWordSearch?n.split(" ").forEach(function(n){n.trim()&&-1===t.indexOf(n)&&t.push(n)}):n.trim()&&-1===t.indexOf(n)&&t.push(n)}),{keywords:t.sort(function(n,t){return t.length-n.length}),length:t.length}}},{key:"isNumeric",value:function(n){return Number(parseFloat(n))==n}},{key:"checkRanges",value:function(n){var r=this,t,i;return!Array.isArray(n)||"[object Object]"!==Object.prototype.toString.call(n[0])?(this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(n),[]):(t=[],i=0,n.sort(function(n,t){return n.start-t.start}).forEach(function(n){var u=r.callNoMatchOnInvalidRanges(n,i),f=u.start,e=u.end;u.valid&&(n.start=f,n.length=e-f,t.push(n),i=e)}),t)}},{key:"callNoMatchOnInvalidRanges",value:function(n,t){var r,i,u=!1;return n&&void 0!==n.start?(i=(r=parseInt(n.start,10))+parseInt(n.length,10),this.isNumeric(n.start)&&this.isNumeric(n.length)&&i-t>0&&i-r>0?u=!0:(this.log("Ignoring invalid or overlapping range: "+"".concat(JSON.stringify(n))),this.opt.noMatch(n))):(this.log("Ignoring invalid range: ".concat(JSON.stringify(n))),this.opt.noMatch(n)),{start:r,end:i,valid:u}}},{key:"checkWhitespaceRanges",value:function(n,t,i){var f,e=!0,r=i.length,o=t-r,u=parseInt(n.start,10)-o;return(f=(u=u>r?r:u)+parseInt(n.length,10))>r&&(f=r,this.log("End range automatically set to the max value of ".concat(r))),u<0||f-u<0||u>r||f>r?(e=!1,this.log("Invalid range: ".concat(JSON.stringify(n))),this.opt.noMatch(n)):""===i.substring(u,f).replace(/\s+/g,"")&&(e=!1,this.log("Skipping whitespace only range: "+JSON.stringify(n)),this.opt.noMatch(n)),{start:u,end:f,valid:e}}},{key:"getTextNodes",value:function(n){var r=this,t="",i=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(n){i.push({start:t.length,end:(t+=n.textContent).length,node:n})},function(n){return r.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){n({value:t,nodes:i})})}},{key:"matchesExclude",value:function(n){return f.matches(n,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(n,t,i){var f=this.opt.element?this.opt.element:"mark",r=n.splitText(t),e=r.splitText(i-t),u=document.createElement(f);return u.setAttribute("data-markjs","true"),this.opt.className&&u.setAttribute("class",this.opt.className),u.textContent=r.textContent,r.parentNode.replaceChild(u,r),e}},{key:"wrapRangeInMappedTextNode",value:function(n,t,i,r,u){var f=this;n.nodes.every(function(e,o){var h=n.nodes[o+1];if(void 0===h||h.start>t){if(!r(e.node))return!1;var c=t-e.start,s=(i>e.end?e.end:i)-e.start,l=n.value.substr(0,e.start),a=n.value.substr(s+e.start);if(e.node=f.wrapRangeInTextNode(e.node,c,s),n.value=l+a,n.nodes.forEach(function(t,i){i>=o&&(n.nodes[i].start>0&&i!==o&&(n.nodes[i].start-=s),n.nodes[i].end-=s)}),i-=s,u(e.node.previousSibling,e.start),!(i>e.end))return!1;t=e.end}return!0})}},{key:"wrapGroups",value:function(n,t,i,r){return r((n=this.wrapRangeInTextNode(n,t,t+i)).previousSibling),n}},{key:"separateGroups",value:function(n,t,i,r,u){for(var e,o=t.length,f=1;f<o;f++)e=n.textContent.indexOf(t[f]),t[f]&&e>-1&&r(t[f],n)&&(n=this.wrapGroups(n,e,t[f].length,u));return n}},{key:"wrapMatches",value:function(n,t,i,r,u){var e=this,f=0===t?0:t+1;this.getTextNodes(function(t){t.nodes.forEach(function(t){var u,s,o;for(t=t.node;null!==(u=n.exec(t.textContent))&&""!==u[f];){if(e.opt.separateGroups)t=e.separateGroups(t,u,f,i,r);else{if(!i(u[f],t))continue;if(s=u.index,0!==f)for(o=1;o<f;o++)s+=u[o].length;t=e.wrapGroups(t,s,u[f].length,r)}n.lastIndex=0}});u()})}},{key:"wrapMatchesAcrossElements",value:function(n,t,i,r,u){var e=this,f=0===t?0:t+1;this.getTextNodes(function(t){for(var o,s,h,c;null!==(o=n.exec(t.value))&&""!==o[f];){if(s=o.index,0!==f)for(h=1;h<f;h++)s+=o[h].length;c=s+o[f].length;e.wrapRangeInMappedTextNode(t,s,c,function(n){return i(o[f],n)},function(t,i){n.lastIndex=i;r(t)})}u()})}},{key:"wrapRangeFromIndex",value:function(n,t,i,r){var u=this;this.getTextNodes(function(f){var e=f.value.length;n.forEach(function(n,r){var o=u.checkWhitespaceRanges(n,e,f.value),s=o.start,h=o.end;o.valid&&u.wrapRangeInMappedTextNode(f,s,h,function(i){return t(i,n,f.value.substring(s,h),r)},function(t){i(t,n)})});r()})}},{key:"unwrapMatches",value:function(n){for(var t=n.parentNode,i=document.createDocumentFragment();n.firstChild;)i.appendChild(n.removeChild(n.firstChild));t.replaceChild(i,n);this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(n){if(n){if(3===n.nodeType)for(;n.nextSibling&&3===n.nextSibling.nodeType;)n.nodeValue+=n.nextSibling.nodeValue,n.parentNode.removeChild(n.nextSibling);else this.normalizeTextNode(n.firstChild);this.normalizeTextNode(n.nextSibling)}}},{key:"markRegExp",value:function(n,t){var r=this,i,u;this.opt=t;this.log('Searching with expression "'.concat(n,'"'));i=0;u="wrapMatches";this.opt.acrossElements&&(u="wrapMatchesAcrossElements");this[u](n,this.opt.ignoreGroups,function(n,t){return r.opt.filter(t,n,i)},function(n){i++;r.opt.each(n)},function(){0===i&&r.opt.noMatch(n);r.opt.done(i)})}},{key:"mark",value:function(n,t){var i=this;this.opt=t;var r=0,f="wrapMatches",e=this.getSeparatedKeywords("string"==typeof n?[n]:n),u=e.keywords,o=e.length;this.opt.acrossElements&&(f="wrapMatchesAcrossElements");0===o?this.opt.done(r):function n(t){var h=new s(i.opt).create(t),e=0;i.log('Searching with expression "'.concat(h,'"'));i[f](h,1,function(n,u){return i.opt.filter(u,t,r,e)},function(n){e++;r++;i.opt.each(n)},function(){0===e&&i.opt.noMatch(t);u[o-1]===t?i.opt.done(r):n(u[u.indexOf(t)+1])})}(u[0])}},{key:"markRanges",value:function(n,t){var u=this,r,i;this.opt=t;r=0;i=this.checkRanges(n);i&&i.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(i)),this.wrapRangeFromIndex(i,function(n,t,i,r){return u.opt.filter(n,t,i,r)},function(n,t){r++;u.opt.each(n,t)},function(){u.opt.done(r)})):this.opt.done(r)}},{key:"unmark",value:function(n){var i=this,t;this.opt=n;t=this.opt.element?this.opt.element:"*";t+="[data-markjs]";this.opt.className&&(t+=".".concat(this.opt.className));this.log('Removal selector "'.concat(t,'"'));this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,function(n){i.unwrapMatches(n)},function(n){var r=f.matches(n,t),u=i.matchesExclude(n);return!r||u?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}},{key:"opt",set:function(n){this._opt=u({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,acrossElements:!1,ignoreGroups:0,each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},n)},get:function(){return this._opt}},{key:"iterator",get:function(){return new f(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),n}();return n.fn.mark=function(n,i){return new t(this.get()).mark(n,i),this},n.fn.markRegExp=function(n,i){return new t(this.get()).markRegExp(n,i),this},n.fn.markRanges=function(n,i){return new t(this.get()).markRanges(n,i),this},n.fn.unmark=function(n){return new t(this.get()).unmark(n),this},n})