annotate .cms/lib/codemirror/doc/activebookmark.js @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 // Kludge in HTML5 tag recognition in IE8
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2 document.createElement("section");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3 document.createElement("article");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 (function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 if (!window.addEventListener) return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 var pending = false, prevVal = null;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 function updateSoon() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 if (!pending) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 pending = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 setTimeout(update, 250);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 function update() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 pending = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 var marks = document.getElementById("nav").getElementsByTagName("a"), found;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 for (var i = 0; i < marks.length; ++i) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 var mark = marks[i], m;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 if (mark.getAttribute("data-default")) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 if (found == null) found = i;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 } else if (m = mark.href.match(/#(.*)/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 var ref = document.getElementById(m[1]);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 if (ref && ref.getBoundingClientRect().top < 50)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 found = i;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 if (found != null && found != prevVal) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 prevVal = found;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 var lis = document.getElementById("nav").getElementsByTagName("li");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32 for (var i = 0; i < lis.length; ++i) lis[i].className = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 for (var i = 0; i < marks.length; ++i) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 if (found == i) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35 marks[i].className = "active";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36 for (var n = marks[i]; n; n = n.parentNode)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 if (n.nodeName == "LI") n.className = "active";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 marks[i].className = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 window.addEventListener("scroll", updateSoon);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 window.addEventListener("load", updateSoon);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 window.addEventListener("hashchange", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 setTimeout(function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49 var hash = document.location.hash, found = null, m;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50 var marks = document.getElementById("nav").getElementsByTagName("a");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51 for (var i = 0; i < marks.length; i++)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 if ((m = marks[i].href.match(/(#.*)/)) && m[1] == hash) { found = i; break; }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 if (found != null) for (var i = 0; i < marks.length; i++)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 marks[i].className = i == found ? "active" : "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 }, 300);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 })();