Compare commits
7 Commits
fix/glossa
...
dbd1e14e4e
| Author | SHA1 | Date | |
|---|---|---|---|
| dbd1e14e4e | |||
| 7033354011 | |||
| 7345730e3c | |||
| cea94c56db | |||
| c1e24736e3 | |||
| 24bbfbc17f | |||
| a11e2f1d18 |
@@ -7,12 +7,15 @@ interface Props {
|
||||
}
|
||||
|
||||
const { relationBlocks = [] } = Astro.props;
|
||||
const relationsHeadingId = "relations-conceptuelles";
|
||||
---
|
||||
|
||||
{relationBlocks.length > 0 && (
|
||||
<section class="glossary-relations" aria-label="Relations conceptuelles">
|
||||
<h2>Relations conceptuelles</h2>
|
||||
|
||||
<section
|
||||
class="glossary-relations"
|
||||
aria-labelledby={relationsHeadingId}
|
||||
>
|
||||
<h2 id={relationsHeadingId}>Relations conceptuelles</h2>
|
||||
<div class="glossary-relations-grid">
|
||||
{relationBlocks.map((block) => (
|
||||
<section class={`glossary-relations-card ${block.className}`}>
|
||||
|
||||
@@ -1500,6 +1500,7 @@ const WHOAMI_FORCE_LOCALHOST = (import.meta.env.PUBLIC_WHOAMI_FORCE_LOCALHOST ??
|
||||
.filter(Boolean);
|
||||
|
||||
const h2Plain = Array.from(reading.querySelectorAll("h2[id]"))
|
||||
.filter((h2) => !h2.closest("details.details-section"))
|
||||
.map((h2) => ({
|
||||
id: h2.id,
|
||||
anchor: h2,
|
||||
@@ -1508,7 +1509,7 @@ const WHOAMI_FORCE_LOCALHOST = (import.meta.env.PUBLIC_WHOAMI_FORCE_LOCALHOST ??
|
||||
h2,
|
||||
}));
|
||||
|
||||
const H2 = (h2Anchors.length ? h2Anchors : h2Plain)
|
||||
const H2 = [...h2Anchors, ...h2Plain]
|
||||
.slice()
|
||||
.sort((a, b) => absTop(a.marker) - absTop(b.marker));
|
||||
|
||||
|
||||
@@ -201,6 +201,36 @@ export function uniqueGlossaryEntries(
|
||||
return out;
|
||||
}
|
||||
|
||||
export function slugsOfGlossaryEntries(
|
||||
entries: GlossaryEntry[] = [],
|
||||
): Set<string> {
|
||||
const slugs = new Set<string>();
|
||||
|
||||
for (const entry of entries) {
|
||||
const slug = slugOfGlossaryEntry(entry);
|
||||
if (!slug) continue;
|
||||
slugs.add(slug);
|
||||
}
|
||||
|
||||
return slugs;
|
||||
}
|
||||
|
||||
export function excludeGlossaryEntries(
|
||||
entries: GlossaryEntry[] = [],
|
||||
excluded: Iterable<string> = [],
|
||||
): GlossaryEntry[] {
|
||||
const excludedSlugs = new Set(
|
||||
Array.from(excluded)
|
||||
.map((value) => normalizeGlossarySlug(value))
|
||||
.filter(Boolean),
|
||||
);
|
||||
|
||||
return entries.filter((entry) => {
|
||||
const slug = slugOfGlossaryEntry(entry);
|
||||
return Boolean(slug) && !excludedSlugs.has(slug);
|
||||
});
|
||||
}
|
||||
|
||||
export function resolveGlossaryEntriesInSourceOrder(
|
||||
slugs: string[] = [],
|
||||
allEntries: GlossaryEntry[] = [],
|
||||
@@ -504,11 +534,27 @@ export function getGlossaryEntryAsideData(
|
||||
allEntries: GlossaryEntry[] = [],
|
||||
): GlossaryEntryAsideData {
|
||||
const currentFamily = familyOf(currentEntry);
|
||||
const currentSlug = slugOfGlossaryEntry(currentEntry);
|
||||
|
||||
const fondamentaux = getFondamentaux(allEntries);
|
||||
const sameFamilyEntries = getEntriesOfSameFamily(currentEntry, allEntries);
|
||||
const sameFamilyTitle = getSameFamilyTitle(currentEntry);
|
||||
const relationSections = getRelationSections(currentEntry, allEntries);
|
||||
const contextualTheory = getContextualTheory(currentEntry, allEntries);
|
||||
|
||||
const relationEntries = uniqueGlossaryEntries(
|
||||
relationSections.flatMap((section) => section.items),
|
||||
);
|
||||
const relationSlugs = slugsOfGlossaryEntries(relationEntries);
|
||||
|
||||
const contextualTheory = excludeGlossaryEntries(
|
||||
getContextualTheory(currentEntry, allEntries),
|
||||
new Set([currentSlug, ...relationSlugs]),
|
||||
).slice(0, 6);
|
||||
const contextualTheorySlugs = slugsOfGlossaryEntries(contextualTheory);
|
||||
|
||||
const sameFamilyEntries = excludeGlossaryEntries(
|
||||
getEntriesOfSameFamily(currentEntry, allEntries),
|
||||
new Set([currentSlug, ...relationSlugs, ...contextualTheorySlugs]),
|
||||
).slice(0, 8);
|
||||
|
||||
const showNoyau =
|
||||
currentFamily !== "concept-fondamental" &&
|
||||
|
||||
Reference in New Issue
Block a user