mirror of
https://github.com/wassname/template.git
synced 2026-06-27 21:39:13 +08:00
61 lines
2.0 KiB
JavaScript
61 lines
2.0 KiB
JavaScript
// Copyright 2018 The Distill Template Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
export default function(dom, data) {
|
|
|
|
var appendFootnoteHoverDiv = (function() {
|
|
function nodeFromString(str) {
|
|
var div = dom.createElement("div");
|
|
div.innerHTML = str;
|
|
return div.firstChild;
|
|
}
|
|
var hover_boxes_container = nodeFromString(`<div id="footnote-hover-boxes-container"></div>`)
|
|
dom.querySelector("body").appendChild(hover_boxes_container);
|
|
var hover_n = 0;
|
|
return function appendHoverDiv(content) {
|
|
var id = `dt-fn-hover-box-${hover_n}`;
|
|
hover_n += 1;
|
|
var str = `<div style="display:none;" class="dt-hover-box" id="${id}" >${content}</div>`;
|
|
var div = nodeFromString(str);
|
|
hover_boxes_container.appendChild(div);
|
|
return id;
|
|
}
|
|
})();
|
|
|
|
|
|
var fnTags = [].slice.apply(dom.querySelectorAll("dt-fn"));
|
|
var fnContent = [];
|
|
fnTags.forEach((el,n) => {
|
|
var content = el.innerHTML;
|
|
var ref_id = appendFootnoteHoverDiv(content)
|
|
fnContent.push(content);
|
|
n = (n+1)+"";
|
|
var key = "fn-"+n;
|
|
var escaped_content = content.replace(/"/g, "'");
|
|
el.innerHTML = `<sup><span id="${key}" data-hover-ref="${ref_id}" style="cursor:pointer">${n}</span></sup>`;
|
|
});
|
|
|
|
let fnList = dom.querySelector("dt-fn-list");
|
|
if (fnList) {
|
|
let ol = dom.createElement("ol");
|
|
fnContent.forEach(content => {
|
|
let el = dom.createElement("li");
|
|
el.innerHTML = content;
|
|
ol.appendChild(el);
|
|
})
|
|
fnList.appendChild(ol);
|
|
}
|
|
|
|
}
|