import 'dart:html' show DivElement, Element, querySelector, querySelectorAll; import './navbar.dart' show makeNavbar; const image_header = '/img/icon.png'; Future makeHeader() async { var header = Element.tag('header'); header ..append(Element.img() ..attributes['src'] = image_header ..attributes['alt'] = 'Logo' ..attributes['heigh'] = '150px' ..attributes['width'] = '150px') ..append(querySelector('h1')); final subt = header.querySelector('.subtitle'); if (subt != null) { header.append(subt); } return header; } Future wrapTables() async { for (var table in querySelectorAll('table')) { var largetable = DivElement()..className = 'largetable'; table.before(largetable); largetable.children.add(table); } } // All images that are not nested inside a link will be linkified to themselves. Future linkifyImg() async { querySelectorAll('img').forEach((img) { if (img.parent.tagName == 'P') { final link = Element.a()..attributes['href'] = img.attributes['src']; img.insertAdjacentElement('beforeBegin', link); link.append(img); } }); } Future reorganizeHtml() async { // Make navbar final navbar = await makeNavbar(); // Make header final header = await makeHeader(); // wrap tables in container for better SCSS display await wrapTables(); // Make images not linking somewhere link to themselves await linkifyImg(); // Add navbar to page querySelector('body').insertAdjacentElement('afterBegin', navbar); // Add headet to page querySelector('#content').insertAdjacentElement('beforeBegin', header); // Add correct class to TOC final toc = (querySelector('#table-of-contents') ?? (Element.div() ..attributes['id'] = 'table-of-contents' ..innerText = 'Table of Contents Unavailable')) ..classes.add('dropdown'); navbar.querySelector('#toc-drop').append(toc); // Remove all
tags from HTML querySelectorAll('br').forEach((br) => br.remove()); }