diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-04-08 08:41:21 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-04-08 08:48:55 -0300 |
commit | efabd91737e4ab0a2cd6a4bcc9239bc2811b850e (patch) | |
tree | f2e7c4871cf3b27aa293ceeb8841db8eb1b60726 | |
parent | 4eba105eda91bd8579e4851f410a7ef128cf6353 (diff) |
content: generatePageLayout: conditional blockwrap
Blockwrap is a scary scary funny metatag, so in order to insist we really don't need it, we have to disable it (in practice) on both the "don't wrap what's ahead" and "don't wrap me and my friends together" elements.
-rw-r--r-- | src/content/dependencies/generatePageLayout.js | 58 |
1 files changed, 37 insertions, 21 deletions
diff --git a/src/content/dependencies/generatePageLayout.js b/src/content/dependencies/generatePageLayout.js index 8a073624..9dc7eaef 100644 --- a/src/content/dependencies/generatePageLayout.js +++ b/src/content/dependencies/generatePageLayout.js @@ -1,5 +1,5 @@ import {openAggregate} from '#aggregate'; -import {empty, repeat} from '#sugar'; +import {atOffset, empty, repeat} from '#sugar'; export default { contentDependencies: [ @@ -361,7 +361,7 @@ export default { slots.navLinks ?.filter(Boolean) - ?.map((cur, i) => { + ?.map((cur, i, entries) => { let content; if (cur.html) { @@ -395,25 +395,41 @@ export default { (slots.navLinkStyle === 'hierarchical' && i === slots.navLinks.length - 1); - return ( - html.metatag('blockwrap', - html.tag('span', {class: 'nav-link'}, - showAsCurrent && - {class: 'current'}, - - [ - html.tag('span', {class: 'nav-link-content'}, - content), - - html.tag('span', {class: 'nav-link-accent'}, - {[html.noEdgeWhitespace]: true}, - {[html.onlyIfContent]: true}, - - language.$('misc.navAccent', { - [language.onlyIfOptions]: ['links'], - links: cur.accent, - })), - ]))); + const navLink = + html.tag('span', {class: 'nav-link'}, + showAsCurrent && + {class: 'current'}, + + [ + html.tag('span', {class: 'nav-link-content'}, + content), + + html.tag('span', {class: 'nav-link-accent'}, + {[html.noEdgeWhitespace]: true}, + {[html.onlyIfContent]: true}, + + language.$('misc.navAccent', { + [language.onlyIfOptions]: ['links'], + links: cur.accent, + })), + ]); + + const considerNotBlockwrapping = entry => + entry.blockwrap !== true && + (entry.blockwrap === false || + entry.auto === 'home'); + + const prev = + atOffset(entries, i, -1); + + if ( + considerNotBlockwrapping(cur) || + prev && considerNotBlockwrapping(prev) + ) { + return navLink; + } else { + return html.metatag('blockwrap', navLink); + } })), html.tag('div', {class: 'nav-bottom-row'}, |