toc
This commit is contained in:
parent
6a45e2bf36
commit
2cf88dffde
11 changed files with 177 additions and 154 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue