mirror of
https://github.com/wassname/template.git
synced 2026-06-28 07:51:27 +08:00
74 lines
2.2 KiB
JavaScript
74 lines
2.2 KiB
JavaScript
// no appendix -> add appendix
|
|
// title in front, no h1 -> add it
|
|
// no title in front, h1 -> read and put into frontMatter
|
|
// footnote -> footnote list
|
|
// break up bib
|
|
// if citation, no bib-list -> add citation-list
|
|
|
|
// if authors, no byline -> add byline
|
|
|
|
export default function(dom, data) {
|
|
const body = dom.body;
|
|
const article = body.querySelector('d-article');
|
|
|
|
// If we don't have an article tag, something weird is going on—giving up.
|
|
if (!article) {
|
|
console.warn('No d-article tag found; skipping adding optional components!');
|
|
return;
|
|
}
|
|
|
|
let byline = dom.querySelector('d-byline');
|
|
if (!byline) {
|
|
if (data.authors) {
|
|
byline = dom.createElement('d-byline');
|
|
body.insertBefore(byline, article);
|
|
} else {
|
|
console.warn('No authors found in front matter; please add them before submission!');
|
|
}
|
|
}
|
|
|
|
let title = dom.querySelector('d-title');
|
|
if (!title) {
|
|
let title = dom.createElement('d-title');
|
|
body.insertBefore(title, byline);
|
|
}
|
|
|
|
let h1 = title.querySelector('h1');
|
|
if (!h1) {
|
|
h1 = dom.createElement('h1');
|
|
h1.textContent = data.title;
|
|
title.insertBefore(h1, title.firstChild);
|
|
}
|
|
|
|
const hasPassword = typeof data.password !== 'undefined';
|
|
let interstitial = body.querySelector('d-interstitial');
|
|
if (hasPassword && !interstitial) {
|
|
const inBrowser = typeof window !== 'undefined';
|
|
const onLocalhost = inBrowser && window.location.hostname.includes('localhost');
|
|
if (!inBrowser || !onLocalhost) {
|
|
interstitial = dom.createElement('d-interstitial');
|
|
interstitial.password = data.password;
|
|
body.insertBefore(interstitial, body.firstChild);
|
|
}
|
|
}
|
|
|
|
let appendix = dom.querySelector('d-appendix');
|
|
if (!appendix) {
|
|
appendix = dom.createElement('d-appendix');
|
|
dom.body.appendChild(appendix);
|
|
}
|
|
|
|
let footnoteList = dom.querySelector('d-footnote-list');
|
|
if (!footnoteList) {
|
|
footnoteList = dom.createElement('d-footnote-list');
|
|
appendix.appendChild(footnoteList);
|
|
}
|
|
|
|
let citationList = dom.querySelector('d-citation-list');
|
|
if (!citationList) {
|
|
citationList = dom.createElement('d-citation-list');
|
|
appendix.appendChild(citationList);
|
|
}
|
|
|
|
}
|