aboutsummaryrefslogtreecommitdiff
[{"sSParse layout generator":{"url":"","hash":"","text":"/*\n\tGenerate simple yet clean single-page site(oids)\n\t\n\tCopyright © 2021 jahoti (jahoti@tilde.team)\n\t\n\tLicensed under the Apache License, Version 2.0 (the \"License\");\n\tyou may not use this file except in compliance with the License.\n\tYou may obtain a copy of the License at\n\t\n\t   http://www.apache.org/licenses/LICENSE-2.0\n\t\n\tUnless required by applicable law or agreed to in writing, software\n\tdistributed under the License is distributed on an \"AS IS\" BASIS,\n\tWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\tSee the License for the specific language governing permissions and\n\tlimitations under the License.\n*/\n\nfunction Sparse(navItems, opts) {\n\topts = opts || {};\n\tvar width = opts.width || 20,\n\t    text = opts.text || 'black',\n\t    bg = opts.bgcolor || opts.background || 'yellow',\n\t    pagebg = opts.tabcolor || 'white';\n\t    gap = opts.gap || '10px';\n\t\n\tvar body = document.createElement('body'),\n\t    nav = document.createElement('nav'),\n\t    style = document.createElement('style');\n\t\n\tvar link, activeLink, title;\n\t\n\tstyle.innerText = `\n\tbody {\n\t\tdisplay: grid;\n\t\tgrid-column-gap: ${gap};\n\t\tcolumn-gap: ${gap};\n\t\tgrid-template-columns: ${width}%;\n\t}\n\t\n\tnav {\n\t\tgrid-column: 1;\n\t\tposition: sticky;\n\t\ttop: 0;\n\t}\n\t\n\tnav > a:not([href]) {\n\t\tcolor: ${text};\n\t\tfont-weight: bold;\n\t}\n\t\n\tbody, nav { background-color: ${bg}; }\n\tbody > * { grid-row: 1; }\n\tbody > *:not(nav) { background-color: ${pagebg} }\n\t`\n\t\n\tbody.append(style);\n\tbody.append(nav);\n\t\n\tfunction onLinkClick(e) {\n\t\tvar link, section, title;\n\t\tif (activeLink) {\n\t\t\tlink = activeLink.inactive\n\t\t\tnav.replaceChild(link, activeLink);\n\t\t\tfor (pane of link.panes) body.removeChild(pane.parentNode);\n\t\t\t\n\t\t\tdelete activeLink.inactive;\n\t\t}\n\t\t\n\t\tlink = e.target;\n\t\tactiveLink = document.createElement('span');\n\t\tactiveLink.innerText = link.textContent;\n\t\tactiveLink.inactive = link;\n\t\tnav.replaceChild(activeLink, link);\n\t\t\n\t\tlink.panes.forEach((pane, i) => {\n\t\t\tsection = document.createElement('article');\n\t\t\ttitle = document.createElement('h1');\n\t\t\t\n\t\t\ttitle.innerText = pane.docTitle;\n\t\t\tsection.style.gridColumn = (i + 2).toString();\n\t\t\t\n\t\t\tif (pane.docTitleLink) {\n\t\t\t\tlet titleLink = document.createElement('a');\n\t\t\t\t\n\t\t\t\ttitleLink.href = pane.docTitleLink;\n\t\t\t\ttitleLink.append(title);\n\t\t\t\ttitle = titleLink;\n\t\t\t}\n\t\t\t\n\t\t\tsection.append(title);\n\t\t\tsection.append(pane);\n\t\t\tbody.append(section);\n\t\t});\n\t}\n\t\n\tdocument.title = navItems[0];\n\t\n\tfor (var item of navItems) {\n\t\tlink = document.createElement('a');\n\t\tif (typeof item === 'string') link.innerText = item;\n\t\telse {\n\t\t\tlink.innerText = item.shift();\n\t\t\tif (link.textContent.startsWith('* ')) {\n\t\t\t\tlink.innerText = link.textContent.substr(2);\n\t\t\t\tlink.style.fontSize = '80%';\n\t\t\t}\n\t\t\t\n\t\t\tif (typeof item[0] === 'string' && item.length === 1) link.href = item[0];\n\t\t\telse {\n\t\t\t\tlink.onclick = onLinkClick;\n\t\t\t\tlink.href = '#';\n\t\t\t\tif (item.length === 2 && typeof item[1] === 'string') {\n\t\t\t\t\t// Add a title link (if applicable)\n\t\t\t\t\titem[0].docTitleLink = item.pop();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlink.panes = item;\n\t\t\t\t\n\t\t\t\t// Add the title info\n\t\t\t\tif (item.length === 1) item[0].docTitle = link.textContent;\n\t\t\t}\n\t\t}\n\t\t\n\t\tnav.append(link);\n\t\tnav.append(document.createElement('br'));\n\t}\n\t\n\tactiveLink = null;\n\tdocument.body.parentNode.replaceChild(body, document.body);\n\tnav.querySelector('a[href]').click();\n}"}},{"sABC Aus":{"url":"","hash":"","text":"/*\n\tCopyright © 2021 jahoti (jahoti@tilde.team)\n\t\n\tLicensed under the Apache License, Version 2.0 (the \"License\");\n\tyou may not use this file except in compliance with the License.\n\tYou may obtain a copy of the License at\n\t\n\t   http://www.apache.org/licenses/LICENSE-2.0\n\t\n\tUnless required by applicable law or agreed to in writing, software\n\tdistributed under the License is distributed on an \"AS IS\" BASIS,\n\tWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\tSee the License for the specific language governing permissions and\n\tlimitations under the License.\n*/\n\nvar pages = ['ABC News'], comp, wrapper, heading, section, cards, card, text,\n    home = ['Home'], comps = document.getElementById('content').children;\n\npages.push(home);\nfor (i = 0; i < comps.length; i++) {\n\tcomp = comps[i];\n\tcard = undefined;\n\tif (!comp.dataset.component) continue;\n\t\n\theading = comp.querySelector('[data-component=\"Heading\"], [data-component=\"CollectionHeading\"]');\n\theading = heading ? heading.innerText : 'Featured';\n\tif (heading === 'Top Stories from ABC News') heading = 'Top Stories';\n\t\n\twrapper = document.createElement('div');\n\tpages.push(['* ' + heading, wrapper])\n\t\n\tfor (card of comp.querySelectorAll('[data-component$=Card]')) {\n\t\ttext = card.innerText; //HTML.replace(/<[^<]*>/g, '\\n').replace(/\\n\\n+/g, '\\n').replace(/^\\n/, '');\n\t\tsection = document.createElement('section');\n\t\twrapper.append(section);\n\t\t\n\t\theading = document.createElement('a');\n\t\theading.href = card.querySelector('a').href;\n\t\theading.style.display = 'block';\n\t\theading.style.fontWeight = 'bold';\n\t\tsection.append(heading);\n\t\t\n\t\tvar index = text.indexOf('\\n');\n\t\tif (index === -1) wrapper.innerText = text;\n\t\telse {\n\t\t\theading.innerText = text.substr(0, index);\n\t\t\tlink = document.createElement('p'); // Reuse or abuse?\n\t\t\tlink.innerText = text.substr(index + 1);\n\t\t\tsection.append(link);\n\t\t}\n\t}\n\t\n\tif (!card) pages.pop();\n\telse if (i < 3) home.push(wrapper);\n}\n\npages.push(['Just in', '/news/justin']);\npages.push(['Ed. Standards', 'https://about.abc.net.au/how-the-abc-is-run/what-guides-us/abc-editorial-standards/'])\npages.push(['Footer', document.querySelector('[data-component=\"Footer\"]')]);\nSparse(pages, {bgcolor: 'pink'});"}},{"bABC Aus":[["s","SParse layout generator"],["s","ABC Aus"]]},{"phttps://abc.net.au/":{"components":["b","ABC Aus"],"allow":false}},{"phttps://www.abc.net.au/":{"components":["b","ABC Aus"],"allow":false}}]