UNPKG

@rr0/cms

Version:

RR0 Content Management System (CMS)

51 lines (50 loc) 1.86 kB
/** * Convert meta <link> to HTML <nav> links. */ export class MetaLinkReplaceCommand { constructor(defaultHandler) { this.defaultHandler = defaultHandler; } async execute(context) { var _a, _b, _c, _d; const file = context.file; const dom = file.dom; const doc = file.document; const ul = doc.querySelector("nav ul"); if (!ul) { context.error("Could not find nav list in " + context.file.name); return; } const relStart = file.links.start || ((_a = this.defaultHandler) === null || _a === void 0 ? void 0 : _a.start(context)); if (relStart) { ul.appendChild(this.linkItem(context, relStart)); } const relContents = file.links.contents || ((_b = this.defaultHandler) === null || _b === void 0 ? void 0 : _b.contents(context)); if (relContents) { ul.appendChild(this.linkItem(context, relContents)); } const relPrev = file.links.prev || ((_c = this.defaultHandler) === null || _c === void 0 ? void 0 : _c.prev(context)); if (relPrev) { ul.appendChild(this.linkItem(context, relPrev)); } const relNext = file.links.next || ((_d = this.defaultHandler) === null || _d === void 0 ? void 0 : _d.next(context)); if (relNext) { ul.appendChild(this.linkItem(context, relNext)); } file.dom = dom; } async contentStepEnd() { // NOP } linkItem(context, link) { const doc = context.file.document; const a = doc.createElement("a"); a.className = link.type; a.textContent = link.text; a.href = link.url; const li = doc.createElement("li"); li.appendChild(a); li.title = context.messages.nav[link.type]; return li; } }