mirror of
https://github.com/msberends/AMR.git
synced 2024-12-29 12:46:13 +01:00
34 lines
1004 B
JavaScript
34 lines
1004 B
JavaScript
|
// Anchor sections v1.0 written by Atsushi Yasumoto on Oct 3rd, 2020.
|
||
|
document.addEventListener('DOMContentLoaded', function() {
|
||
|
// Do nothing if AnchorJS is used
|
||
|
if (typeof window.anchors === 'object' && anchors.hasOwnProperty('hasAnchorJSLink')) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const h = document.querySelectorAll('h1, h2, h3, h4, h5, h6');
|
||
|
|
||
|
// Do nothing if sections are already anchored
|
||
|
if (Array.from(h).some(x => x.classList.contains('hasAnchor'))) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
// Use section id when pandoc runs with --section-divs
|
||
|
const section_id = function(x) {
|
||
|
return ((x.classList.contains('section') || (x.tagName === 'SECTION'))
|
||
|
? x.id : '');
|
||
|
};
|
||
|
|
||
|
// Add anchors
|
||
|
h.forEach(function(x) {
|
||
|
const id = x.id || section_id(x.parentElement);
|
||
|
if (id === '') {
|
||
|
return null;
|
||
|
}
|
||
|
let anchor = document.createElement('a');
|
||
|
anchor.href = '#' + id;
|
||
|
anchor.classList = ['anchor-section'];
|
||
|
x.classList.add('hasAnchor');
|
||
|
x.appendChild(anchor);
|
||
|
});
|
||
|
});
|