hugo-theme-zzo/assets/js/jquery.mark.min.js

16 lines
20 KiB
JavaScript
Raw Normal View History

2019-11-04 13:09:44 +00:00
/*!***************************************************
* mark.js v9.0.0
* https://markjs.io/
* Copyright (c) 20142018, Julian Kühnel
* Released under the MIT license https://git.io/vwTVl
*****************************************************/
!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? module.exports = t(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], t) : e.Mark = t(e.jQuery) }(this, function (e) {
"use strict"; function t(e) { return (t = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e })(e) } function n(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } function o(e, t, n) { return t && r(e.prototype, t), n && r(e, n), e } function i() { return (i = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }).apply(this, arguments) } e = e && e.hasOwnProperty("default") ? e.default : e; var a =
/* */
function () { function e(t) { var r = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [], i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 5e3; n(this, e), this.ctx = t, this.iframes = r, this.exclude = o, this.iframesTimeout = i } return o(e, [{ key: "getContexts", value: function () { var e = []; 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 n = e.filter(function (e) { return e.contains(t) }).length > 0; -1 !== e.indexOf(t) || n || e.push(t) }), e } }, { key: "getIframeContents", value: function (e, t) { var n, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : function () { }; try { var o = e.contentWindow; if (n = o.document, !o || !n) throw new Error("iframe inaccessible") } catch (e) { r() } n && t(n) } }, { key: "isIframeBlank", value: function (e) { var t = "about:blank", n = e.getAttribute("src").trim(); return e.contentWindow.location.href === t && n !== t && n } }, { key: "observeIframeLoad", value: function (e, t, n) { var r = this, o = !1, i = null, a = function a() { if (!o) { o = !0, clearTimeout(i); try { r.isIframeBlank(e) || (e.removeEventListener("load", a), r.getIframeContents(e, t, n)) } catch (e) { n() } } }; e.addEventListener("load", a), i = setTimeout(a, this.iframesTimeout) } }, { key: "onIframeReady", value: function (e, t, n) { try { "complete" === e.contentWindow.document.readyState ? this.isIframeBlank(e) ? this.observeIframeLoad(e, t, n) : this.getIframeContents(e, t, n) : this.observeIframeLoad(e, t, n) } catch (e) { n() } } }, { key: "waitForIframes", value: function (e, t) { var n = this, r = 0; this.forEachIframe(e, function () { return !0 }, function (e) { r++ , n.waitForIframes(e.querySelector("html"), function () { --r || t() }) }, function (e) { e || t() }) } }, { key: "forEachIframe", value: function (t, n, r) { var o = this, i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : function () { }, a = t.querySelectorAll("iframe"), s = a.length, c = 0; a = Array.prototype.slice.call(a); var u = function () { --s <= 0 && i(c) }; s || u(), a.forEach(function (t) { e.matches(t, o.exclude) ? u() : o.onIframeReady(t, function (e) { n(t) && (c++ , r(e)), u() }, u) }) } }, { key: "createIterator", value: function (e, t, n) { return document.createNodeIterator(e, t, n, !1) } }, { key: "createInstanceOnIframe", value: function (t) { return new e(t.querySelector("html"), this.iframes) } }, { key: "compareNodeIframe", value: function (e, t, n) { if (e.compareDocumentPosition(n) & Node.DOCUMENT_POSITION_PRECEDING) { if (null === t) return !0; if (t.compareDocumentPosition(n) & Node.DOCUMENT_POSITION_FOLLOWING) return !0 } return !1 } }, { key: "getIteratorNode", value: function (e) { var t = e.previousNode(); return { prevNode: t, node: null === t ? e.nextNode() : e.nextNode() && e.nextNode() } } }, { key: "checkIframeFilter", value: function (e, t, n, r) { var o = !1, i = !1; return r.forEach(function (e, t) { e.val === n && (o = t, i = e.handled) }), this.compareNodeIframe(e, t, n) ? (!1 !== o || i ? !1 === o || i || (r[o].handled = !0) : r.push({ val: n, handled: !0 }), !0) : (!1 === o && r.push({ val: n, handled: !1 }), !1) } }, { key: "handleOpenIframes", value: function (e, t, n, r) { var o = this; e.forEach(function (e) { e.handled || o.getIframeContents(e.val, function (e) { o.createInstanceOnIframe(e).forEachNode(t, n, r) }) }) } }, { key: "iterateThroughNodes", value: function (e, t, n, r, o) { for (var i, a, s, c = this, u = this.createIterator(t, e, r), l = [], h = []; s = void 0, s = c.getIteratorNode(u), a = s.prevNode, i = s.node;)this.iframes && this.forEachIframe(t, function (e) { return c.checkIframeFilter(i, a, e, l) }, function (t) { c.createInstanceOnIframe(t).forEachNode(e, func
/* */
function () { function e(t) { n(this, e), this.opt = i({}, { diacritics: !0, synonyms: {}, accuracy: "partially", caseSensitive: !1, ignoreJoiners: !1, ignorePunctuation: [], wildcards: "disabled" }, t) } return o(e, [{ key: "create", value: function (e) { return "disabled" !== this.opt.wildcards && (e = this.setupWildcardsRegExp(e)), e = this.escapeStr(e), Object.keys(this.opt.synonyms).length && (e = this.createSynonymsRegExp(e)), (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) && (e = this.setupIgnoreJoinersRegExp(e)), this.opt.diacritics && (e = this.createDiacriticsRegExp(e)), e = this.createMergedBlanksRegExp(e), (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) && (e = this.createJoinersRegExp(e)), "disabled" !== this.opt.wildcards && (e = this.createWildcardsRegExp(e)), e = this.createAccuracyRegExp(e), new RegExp(e, "gm".concat(this.opt.caseSensitive ? "" : "i")) } }, { key: "sortByLength", value: function (e) { return e.sort(function (e, t) { return e.length === t.length ? e > t ? 1 : -1 : t.length - e.length }) } }, { key: "escapeStr", value: function (e) { return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") } }, { key: "createSynonymsRegExp", value: function (e) { var t = this, n = this.opt.synonyms, r = this.opt.caseSensitive ? "" : "i", o = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? "\0" : ""; for (var i in n) if (n.hasOwnProperty(i)) { var a = Array.isArray(n[i]) ? n[i] : [n[i]]; a.unshift(i), (a = this.sortByLength(a).map(function (e) { return "disabled" !== t.opt.wildcards && (e = t.setupWildcardsRegExp(e)), e = t.escapeStr(e) }).filter(function (e) { return "" !== e })).length > 1 && (e = e.replace(new RegExp("(".concat(a.map(function (e) { return t.escapeStr(e) }).join("|"), ")"), "gm".concat(r)), o + "(".concat(a.map(function (e) { return t.processSynonyms(e) }).join("|"), ")") + o)) } return e } }, { key: "processSynonyms", value: function (e) { return (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) && (e = this.setupIgnoreJoinersRegExp(e)), e } }, { key: "setupWildcardsRegExp", value: function (e) { return (e = e.replace(/(?:\\)*\?/g, function (e) { return "\\" === e.charAt(0) ? "?" : "" })).replace(/(?:\\)*\*/g, function (e) { return "\\" === e.charAt(0) ? "*" : "" }) } }, { key: "createWildcardsRegExp", value: function (e) { var t = "withSpaces" === this.opt.wildcards; return e.replace(/\u0001/g, t ? "[\\S\\s]?" : "\\S?").replace(/\u0002/g, t ? "[\\S\\s]*?" : "\\S*") } }, { key: "setupIgnoreJoinersRegExp", value: function (e) { return e.replace(/[^(|)\\]/g, function (e, t, n) { var r = n.charAt(t + 1); return /[(|)\\]/.test(r) || "" === r ? e : e + "\0" }) } }, { key: "createJoinersRegExp", value: function (e) { var t = [], n = this.opt.ignorePunctuation; return Array.isArray(n) && n.length && t.push(this.escapeStr(n.join(""))), this.opt.ignoreJoiners && t.push("\\u00ad\\u200b\\u200c\\u200d"), t.length ? e.split(/\u0000+/).join("[".concat(t.join(""), "]*")) : e } }, { key: "createDiacriticsRegExp", value: function (e) { var t = this.opt.caseSensitive ? "" : "i", n = 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Ñ<EFBFBD>
/* */
function () { function e(t) { n(this, e), this.ctx = t, this.ie = !1; var r = window.navigator.userAgent; (r.indexOf("MSIE") > -1 || r.indexOf("Trident") > -1) && (this.ie = !0) } return o(e, [{ key: "log", value: function (e) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "debug", r = this.opt.log; this.opt.debug && "object" === t(r) && "function" == typeof r[n] && r[n]("mark.js: ".concat(e)) } }, { key: "getSeparatedKeywords", value: function (e) { var t = this, n = []; return e.forEach(function (e) { t.opt.separateWordSearch ? e.split(" ").forEach(function (e) { e.trim() && -1 === n.indexOf(e) && n.push(e) }) : e.trim() && -1 === n.indexOf(e) && n.push(e) }), { keywords: n.sort(function (e, t) { return t.length - e.length }), length: n.length } } }, { key: "isNumeric", value: function (e) { return Number(parseFloat(e)) == e } }, { key: "checkRanges", value: function (e) { var t = this; if (!Array.isArray(e) || "[object Object]" !== Object.prototype.toString.call(e[0])) return this.log("markRanges() will only accept an array of objects"), this.opt.noMatch(e), []; var n = [], r = 0; return e.sort(function (e, t) { return e.start - t.start }).forEach(function (e) { var o = t.callNoMatchOnInvalidRanges(e, r), i = o.start, a = o.end; o.valid && (e.start = i, e.length = a - i, n.push(e), r = a) }), n } }, { key: "callNoMatchOnInvalidRanges", value: function (e, t) { var n, r, o = !1; return e && void 0 !== e.start ? (r = (n = parseInt(e.start, 10)) + parseInt(e.length, 10), this.isNumeric(e.start) && this.isNumeric(e.length) && r - t > 0 && r - n > 0 ? o = !0 : (this.log("Ignoring invalid or overlapping range: " + "".concat(JSON.stringify(e))), this.opt.noMatch(e))) : (this.log("Ignoring invalid range: ".concat(JSON.stringify(e))), this.opt.noMatch(e)), { start: n, end: r, valid: o } } }, { key: "checkWhitespaceRanges", value: function (e, t, n) { var r, o = !0, i = n.length, a = t - i, s = parseInt(e.start, 10) - a; return (r = (s = s > i ? i : s) + parseInt(e.length, 10)) > i && (r = i, this.log("End range automatically set to the max value of ".concat(i))), s < 0 || r - s < 0 || s > i || r > i ? (o = !1, this.log("Invalid range: ".concat(JSON.stringify(e))), this.opt.noMatch(e)) : "" === n.substring(s, r).replace(/\s+/g, "") && (o = !1, this.log("Skipping whitespace only range: " + JSON.stringify(e)), this.opt.noMatch(e)), { start: s, end: r, valid: o } } }, { key: "getTextNodes", value: function (e) { var t = this, n = "", r = []; this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function (e) { r.push({ start: n.length, end: (n += e.textContent).length, node: e }) }, function (e) { return t.matchesExclude(e.parentNode) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT }, function () { e({ value: n, nodes: r }) }) } }, { key: "matchesExclude", value: function (e) { return a.matches(e, this.opt.exclude.concat(["script", "style", "title", "head", "html"])) } }, { key: "wrapRangeInTextNode", value: function (e, t, n) { var r = this.opt.element ? this.opt.element : "mark", o = e.splitText(t), i = o.splitText(n - t), a = document.createElement(r); return a.setAttribute("data-markjs", "true"), this.opt.className && a.setAttribute("class", this.opt.className), a.textContent = o.textContent, o.parentNode.replaceChild(a, o), i } }, { key: "wrapRangeInMappedTextNode", value: function (e, t, n, r, o) { var i = this; e.nodes.every(function (a, s) { var c = e.nodes[s + 1]; if (void 0 === c || c.start > t) { if (!r(a.node)) return !1; var u = t - a.start, l = (n > a.end ? a.end : n) - a.start, h = e.value.substr(0, a.start), f = e.value.substr(l + a.start); if (a.node = i.wrapRangeInTextNode(a.node, u, l), e.value = h + f, e.nodes.forEach(function (t, n) { n >= s && (e.nodes[n].start > 0 && n !== s && (e.nodes[n].start -= l), e.nodes[n].end -= l) }), n -= l, o(a.node.previousSibling, a.start), !(n > a.end)) return !1; t = a.end } return !0 }) } }, { key: "wrapGroups", value: function (e, t, n, r) { return r((e = this.wrapRangeInTextNode(e, t, t + n)).previousSibling), e } }, { key: "separateGroups"
});