From efabd91737e4ab0a2cd6a4bcc9239bc2811b850e Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 8 Apr 2025 08:41:21 -0300 Subject: 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. --- src/content/dependencies/generatePageLayout.js | 58 ++++++++++++++++---------- 1 file changed, 37 insertions(+), 21 deletions(-) (limited to 'src/content/dependencies') 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'}, -- cgit 1.3.0-6-gf8a5