Skip to content

Commit

Permalink
npf.js: build lists before returning content
Browse files Browse the repository at this point in the history
also fixes an issue where lists under readmores would not be built
  • Loading branch information
AprilSylph committed Nov 5, 2021
1 parent 63be7f8 commit 9b1c655
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 7 deletions.
12 changes: 8 additions & 4 deletions src/lib/npf.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ export const renderContent = ({ content: blocks, layout }) => {
}
});

buildLists(content);
if (askContent instanceof DocumentFragment) buildLists(askContent);
if (details instanceof Element) buildLists(details);

return {
content,
ask: askContent ? { content: askContent, ...ask } : undefined
Expand Down Expand Up @@ -308,13 +312,13 @@ const splitArray = (array, index) => [
array.slice(index)
];

export const buildLists = parentNode => {
const getFirstListItem = () => parentNode.querySelector(':scope > li[data-ordered]');
while (getFirstListItem() !== null) {
const buildLists = parentNode => {
const getFirstListItem = () => [...parentNode.children].find(element => element.matches('li[data-ordered]'));
while (getFirstListItem() !== undefined) {
const firstListItem = getFirstListItem();
const { ordered } = firstListItem.dataset;

const listElement = document.createElement(ordered === "true" ? 'ol' : 'ul');
const listElement = document.createElement(ordered === 'true' ? 'ol' : 'ul');
parentNode.insertBefore(listElement, firstListItem);
while (listElement.nextElementSibling?.dataset.ordered === ordered) {
listElement.append(listElement.nextElementSibling);
Expand Down
4 changes: 1 addition & 3 deletions src/manage.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { renderContent, buildLists } from './lib/npf.js';
import { renderContent } from './lib/npf.js';

const anonymousAvatarSrc = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAACjlBMVEXq6uoAAADo6Oju7u6srKzz8/Py8vLp6emzs7Orq6uurq6tra0eHh4ZGRnw8PC0tLTn5+clJSW1tbWlpaWxsbHx8fGwsLCmpqYhISHt7e2vr6+ysrInJyeRkZGioqKenp6Wlpa3t7cfHx8dHR0gICAYGBiVlZUICAgmJiYbGxttbW1cXFwaGhqAgIAiIiLs7OyPj48XFxeZmZm+vr7a2trr6+twcHCqqqr09PTh4eEwMDAkJCSSkpIyMjIQEBBZWVkVFRUcHByXl5cREREuLi4qKirc3Nz////v7++BgYGgoKAxMTGTk5Ojo6OcnJxOTk4jIyNISEhxcXGGhobT09OCgoKLi4vm5ubo6OehoaEJCQnAwMDZ2tldXV2NjY06OjosLCzf4N9iYmLg4ODS0tJhYWFRUVFSUlKQkJBDQ0MSEhKJiYn4+PhHR0cWFhZlZWWKioq/v79ERETa2tk0NDSoqKhra2tCQkJMTExfX18ODg62trYzMzN5eXnm5uVNTU39/f3i4uKOjo4ICQji4eFJSUkDAwPY19hgYGBPT0/Y2Nh3d3fIyMg3Nzerqqt4eHjb29spKSnMzMw9PT2pqalXV1eKiYoICActLS3X19bv7+67uruUlJTn6OfT0tJmZmZ7e3s7OztkZGQvLi9LS0tqamqfn598fHzz8vKEhITBwcHc29v39/dzc3MzMjMrKys4ODhUVFQTExOtrK0gHyC6urrq6ul6enoMDAyampp0dHRaWloMDQwEBAQ8PDzw7/D29vYLCwuHh4fu7u0+PT52dna5ublsbGze3t5bW1ylpKQ/Pz+ura5BQUGkpKQUFBQvLy81NTVGRkYGBgbc3NtFRUXy8vHl5eXT1NPU1NOoXG+JAAADEklEQVR4Xs2U03slWxTET7V9aBuxbdsa27Zt27y0bdvGf3P7SzJzcpLM5HXqqR9+X+3Va9cuzaMkllDFTknp2ExSUchM9eOhZmSReTBv4e2Zg+Yi8sG2Q/a/G6iev+bq9a+sLyhsoO26B9gxC2rO4bvmto6OtubUtAz3QWYyU5alc5dB/55fy5lMnMFA9cbKc2mWncgpRqA+R8vzlCqeEgyWFHxvnkASjBU2pBtOi6OieNF/GUaaSOZuMbkqt9ghqkqg/rVYx+iSDrYv+Al6ZHG8OFa8P+XlfXY26eAI6rGMF4bnGx7zDXF4UpubGbN6ljxbHtUjRTW0mJxOzuk0OURKsDgtN2a75tH590kdLUIvoZcTf/R4fe6spZEOo2Aq9OS4l+4/0FFcTL59z1E5g9I4yrSbNi+WK/Ah8FH51sofXFXYDuCxx/0KMcJl/rMHNnm7b0dWdwGqXSg5fnIOgNqqeizSvXXh0trRJRHkzLorgThucu7NtmwXsvsa38fGJXI8ho8/+XQJvvo2kx0Bm/qCy4MSVmiNNd3L8Wp+Yz/S+n2rVmPN3pWVwPMv6jRjQBte4gTvocPBI41HUXHM2XICW1aSpzAXM8zEKEhueCIqBfCkKHhScb4xHXUY0F4sa53FzsdVBK5dJzSJnwnF5YoI195csvU1vI47Dkrw3i0F3g0jp4nVjF2P/CZmOfma5g86t1W+QwmUwEfSF6XOlwoUTfLCw2lBDBgK2z3tLUaLQImiwHumeVqyxSJd0hVOl2Tps7ppHCWoolROlYPa8XlGwxdscihishzAly2cGon76REdpWU0MT5mXWE5hNY2rUlNzUiKhK+/2anGbHxwqwMqGa196mknZ7I4HCaO458ZF1xVxLNWVHfJYUlGaNtzOe3Wn72ze+bAShMTH5cViEnhtNAvgPzrb62ubGCTebJnyKzbgqi+NBTqygjK6q7w+wwmwSUXgG8ngD9qa6cD2OgrThTA+Eph/hR2dZZIUknnLuEFxj70kJKild15//6Xt1uhSYKdqvaamhK1N3WRPkL6H3qfoJ+KtxZaAAAAAElFTkSuQmCC';

Expand Down Expand Up @@ -74,11 +74,9 @@ const constructItem = ([timestamp, { recipient, recipientUrl, content, layout }]
}

askElement.append(ask.content);
buildLists(askElement);
}

bodyElement.append(renderedContent);
buildLists(bodyElement);

const footerElement = document.createElement('footer');
articleElement.appendChild(footerElement);
Expand Down

0 comments on commit 9b1c655

Please sign in to comment.