This commit is contained in:
Julie Blanc 2026-04-12 23:47:04 +02:00
parent 6a45e2bf36
commit 2cf88dffde
11 changed files with 177 additions and 154 deletions

View file

@ -16,22 +16,22 @@ class subtitlesDecor extends Paged.Handler {
return div;
}
createLine(symbol, nodes) {
createLine(symbol, nodes, prefix = "subtitle") {
const line = document.createElement("span");
line.className = "subtitle-line";
line.className = `${prefix}-line`;
const spanBefore = document.createElement("span");
spanBefore.className = "subtitle-before";
spanBefore.className = `${prefix}-before`;
spanBefore.textContent = symbol.repeat(3);
line.appendChild(spanBefore);
const spanText = document.createElement("span");
spanText.className = "subtitle-text";
spanText.className = `${prefix}-text`;
nodes.forEach(node => spanText.appendChild(node));
line.appendChild(spanText);
const spanAfter = document.createElement("span");
spanAfter.className = "subtitle-after";
spanAfter.className = `${prefix}-after`;
spanAfter.textContent = "";
line.appendChild(spanAfter);
@ -39,8 +39,8 @@ class subtitlesDecor extends Paged.Handler {
}
processTitle(subtitle, symbol, withDecor, isLeft) {
if (subtitle.querySelector(".subtitle-line")) return;
processTitle(subtitle, symbol, withDecor, isLeft, prefix = "subtitle") {
if (subtitle.querySelector(`.${prefix}-line`)) return;
const children = Array.from(subtitle.childNodes);
@ -57,16 +57,15 @@ class subtitlesDecor extends Paged.Handler {
});
segments.push(current);
// Reconstruire le titre avec des .subtitle-line
// Reconstruire le titre avec des .{prefix}-line
subtitle.innerHTML = "";
segments.filter(seg => seg.length > 0).forEach(nodes => {
const line = this.createLine(symbol, nodes);
const line = this.createLine(symbol, nodes, prefix);
subtitle.appendChild(line);
const spanAfter = line.querySelector(".subtitle-after");
const spanAfter = line.querySelector(`.${prefix}-after`);
const baseHeight = line.offsetHeight;
let count = 0;
// subtitle-after → Ajouter des symboles à la ligne en vérifiant la hauteur de la ligne, si la ligne devient plus haute, supprimer le dernier symbole ajouté
while (count < 300) {
count++;
spanAfter.textContent = symbol.repeat(count);

View file

@ -97,8 +97,19 @@ function createToc(config) {
}
}
tocNewLi.innerHTML =
'<a class="toc-link" href="#' + tocElement.id + '">' + tocElement.innerHTML + '</a>';
const chapter = tocElement.closest('.chapter');
const author = chapter?.querySelector('.nav-author')?.textContent || '';
const chapterType = chapter?.dataset.chapter || '';
tocNewLi.dataset.author = author;
if (chapterType) tocNewLi.classList.add('toc-' + chapterType);
const typeSymbols = { entretien: '@', portfolio: '+', essai: '*' };
const symbol = typeSymbols[chapterType] || '';
tocNewLi.innerHTML =
'<a class="toc-link" href="#' + tocElement.id + '">' +
(chapterType ? '<span class="toc-type" data-toc-chapter="' + chapterType + '">' + (symbol ? '<span class="toc-type-symbole_before">' + symbol + '</span>' : '') + '<span class="text">' + chapterType + ' </span>' + (symbol ? '<span class="toc-type-symbole_after">' + symbol + '</span>' : '') + '</span>' : '') +
'<span class="toc-title">' + tocElement.innerHTML + '</span>' +
(author ? '<span class="toc-author">' + author + '</span>' : '') +
'</a>';
tocUl.appendChild(tocNewLi)
}