import { Template } from '../mixins/template'; const T = Template('d-footnote-list', `

Footnotes

    `); export class FootnoteList extends T(HTMLElement) { connectedCallback() { this.list = this.root.querySelector('ol'); // footnotes list is initially hidden this.root.host.style.display = 'none'; // look through document and register existing footnotes // Store.subscribeTo('footnotes', (footnote) => { // this.renderFootnote(footnote); // }); } // TODO: could optimize this to accept individual footnotes? set footnotes(footnotes) { this.list.innerHTML = ''; if (footnotes.length) { // ensure footnote list is visible this.root.host.style.display = 'initial'; for (const footnote of footnotes) { // construct and append list item to show footnote const listItem = document.createElement('li'); listItem.id = footnote.id + '-listing'; listItem.innerHTML = footnote.innerHTML; const backlink = document.createElement('a'); backlink.setAttribute('class', 'footnote-backlink'); backlink.textContent = '[↩]'; backlink.href = '#' + footnote.id; listItem.appendChild(backlink); this.list.appendChild(listItem); } } else { // ensure footnote list is invisible this.shadowRoot.host.style.display = 'none'; } } }