doc/dev/plugins/highlight/js/highlightjs-line-numbers.min.js

1 line
3.6 KiB
JavaScript
Raw Normal View History

!function (r, o) { "use strict"; var e, i = "hljs-ln", l = "hljs-ln-line", h = "hljs-ln-code", s = "hljs-ln-numbers", c = "hljs-ln-n", m = "data-line-number", a = /\r\n|\r|\n/g; function u(e) { for (var n = e.toString(), t = e.anchorNode; "TD" !== t.nodeName;)t = t.parentNode; for (var r = e.focusNode; "TD" !== r.nodeName;)r = r.parentNode; var o = parseInt(t.dataset.lineNumber), a = parseInt(r.dataset.lineNumber); if (o == a) return n; var i, l = t.textContent, s = r.textContent; for (a < o && (i = o, o = a, a = i, i = l, l = s, s = i); 0 !== n.indexOf(l);)l = l.slice(1); for (; -1 === n.lastIndexOf(s);)s = s.slice(0, -1); for (var c = l, u = function (e) { for (var n = e; "TABLE" !== n.nodeName;)n = n.parentNode; return n }(t), d = o + 1; d < a; ++d) { var f = p('.{0}[{1}="{2}"]', [h, m, d]); c += "\n" + u.querySelector(f).textContent } return c += "\n" + s } function n(e) { try { var n = o.querySelectorAll("code.hljs,code.nohighlight"); for (var t in n) n.hasOwnProperty(t) && (n[t].classList.contains("nohljsln") || d(n[t], e)) } catch (e) { r.console.error("LineNumbers error: ", e) } } function d(e, n) { "object" == typeof e && r.setTimeout(function () { e.innerHTML = f(e, n) }, 0) } function f(e, n) { var t, r, o = (t = e, { singleLine: function (e) { return !!e.singleLine && e.singleLine }(r = (r = n) || {}), startFrom: function (e, n) { var t = 1; isFinite(n.startFrom) && (t = n.startFrom); var r = function (e, n) { return e.hasAttribute(n) ? e.getAttribute(n) : null }(e, "data-ln-start-from"); return null !== r && (t = function (e, n) { if (!e) return n; var t = Number(e); return isFinite(t) ? t : n }(r, 1)), t }(t, r) }); return function e(n) { var t = n.childNodes; for (var r in t) { var o; t.hasOwnProperty(r) && (o = t[r], 0 < (o.textContent.trim().match(a) || []).length && (0 < o.childNodes.length ? e(o) : v(o.parentNode))) } }(e), function (e, n) { var t = g(e); "" === t[t.length - 1].trim() && t.pop(); if (1 < t.length || n.singleLine) { for (var r = "", o = 0, a = t.length; o < a; o++)r += p('<tr><td class="{0} {1}" {3}="{5}"><div class="{2}" {3}="{5}"></div></td><td class="{0} {4}" {3}="{5}">{6}</td></tr>', [l, s, c, m, h, o + n.startFrom, 0 < t[o].length ? t[o] : " "]); return p('<table class="{0}">{1}</table>', [i, r]) } return e }(e.innerHTML, o) } function v(e) { var n = e.className; if (/hljs-/.test(n)) { for (var t = g(e.innerHTML), r = 0, o = ""; r < t.length; r++) { o += p('<span class="{0}">{1}</span>\n', [n, 0 < t[r].length ? t[r] : " "]) } e.innerHTML = o.trim() } } function g(e) { return 0 === e.length ? [] : e.split(a) } function p(e, t) { return e.replace(/\{(\d+)\}/g, function (e, n) { return void 0 !== t[n] ? t[n] : e }) } r.hljs ? (r.hljs.initLineNumbersOnLoad = function (e) { "interactive" === o.readyState || "complete" === o.readyState ? n(e) : r.addEventListener("DOMContentLoaded", function () { n(e) }) }, r.hljs.lineNumbersBlock = d, r.hljs.lineNumbersValue = function (e, n) { if ("string" != typeof e) return; var t = document.createElement("code"); return t.innerHTML = e, f(t, n) }, (e = o.createElement("style")).type = "text/css", e.innerHTML = p(".{0}{border-collapse:collapse}.{0} td{padding:0}.{1}:before{content:attr({2})}", [i, c, m]), o.getElementsByTagName("head")[0].appendChild(e)) : r.console.error("highlight.js not detected!"), document.addEventListener("copy", function (e) { var n, t = window.getSelection(); !function (e) { for (var n = e; n;) { if (n.className && -1 !== n.className.indexOf("hljs-ln-code")) return 1; n = n.parentNode } }(t.anchorNode) || (n = -1 !== window.navigator.userAgent.indexOf("Edge") ? u(t) : t.toString(), e.clipboardData.setData("text/plain", n), e.preventDefault()) }) }(window, document);