return note.innerHTML;
});
}
+ let selectedAnnoteEl;
+ const selectorForAnnotation = ( cell, annotation) => {
+ let cellAttr = 'data-code-cell="' + cell + '"';
+ let lineAttr = 'data-code-annotation="' + annotation + '"';
+ const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
+ return selector;
+ }
+ const selectCodeLines = (annoteEl) => {
+ const doc = window.document;
+ const targetCell = annoteEl.getAttribute("data-target-cell");
+ const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
+ const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
+ const lines = annoteSpan.getAttribute("data-code-lines").split(",");
+ const lineIds = lines.map((line) => {
+ return targetCell + "-" + line;
+ })
+ let top = null;
+ let height = null;
+ let parent = null;
+ if (lineIds.length > 0) {
+ //compute the position of the single el (top and bottom and make a div)
+ const el = window.document.getElementById(lineIds[0]);
+ top = el.offsetTop;
+ height = el.offsetHeight;
+ parent = el.parentElement.parentElement;
+ if (lineIds.length > 1) {
+ const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
+ const bottom = lastEl.offsetTop + lastEl.offsetHeight;
+ height = bottom - top;
+ }
+ if (top !== null && height !== null && parent !== null) {
+ // cook up a div (if necessary) and position it
+ let div = window.document.getElementById("code-annotation-line-highlight");
+ if (div === null) {
+ div = window.document.createElement("div");
+ div.setAttribute("id", "code-annotation-line-highlight");
+ div.style.position = 'absolute';
+ parent.appendChild(div);
+ }
+ div.style.top = top - 2 + "px";
+ div.style.height = height + 4 + "px";
+ let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
+ if (gutterDiv === null) {
+ gutterDiv = window.document.createElement("div");
+ gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
+ gutterDiv.style.position = 'absolute';
+ const codeCell = window.document.getElementById(targetCell);
+ const gutter = codeCell.querySelector('.code-annotation-gutter');
+ gutter.appendChild(gutterDiv);
+ }
+ gutterDiv.style.top = top - 2 + "px";
+ gutterDiv.style.height = height + 4 + "px";
+ }
+ selectedAnnoteEl = annoteEl;
+ }
+ };
+ const unselectCodeLines = () => {
+ const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
+ elementsIds.forEach((elId) => {
+ const div = window.document.getElementById(elId);
+ if (div) {
+ div.remove();
+ }
+ });
+ selectedAnnoteEl = undefined;
+ };
+ // Attach click handler to the DT
+ const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
+ for (const annoteDlNode of annoteDls) {
+ annoteDlNode.addEventListener('click', (event) => {
+ const clickedEl = event.target;
+ if (clickedEl !== selectedAnnoteEl) {
+ unselectCodeLines();
+ const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
+ if (activeEl) {
+ activeEl.classList.remove('code-annotation-active');
+ }
+ selectCodeLines(clickedEl);
+ clickedEl.classList.add('code-annotation-active');
+ } else {
+ // Unselect the line
+ unselectCodeLines();
+ clickedEl.classList.remove('code-annotation-active');
+ }
+ });
+ }
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
@@ -260,12 +371,12 @@
About
}
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
- var filterRegex = new RegExp(/^(?:http:|https:)\/\/3mmarand\.github\.io\/BIO00088H-data/);
+ var filterRegex = new RegExp("^(?:http:|https:)\/\/3mmarand\.github\.io\/BIO00088H-data");
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
- var links = window.document.querySelectorAll('a:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item)');
+ var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item)');
for (var i=0; iAbout