ol satrt in html
This commit is contained in:
parent
0d56ca3d0d
commit
626ba00ba8
5 changed files with 19 additions and 122 deletions
|
|
@ -7,12 +7,15 @@ ol[type="1"]{
|
|||
break-after: avoid;
|
||||
position: absolute;
|
||||
left: calc(var(--unit)*1);
|
||||
&::after{
|
||||
content: attr(start)!important;
|
||||
display: block;
|
||||
font-size: var(--fs-small);
|
||||
opacity: 0.5;
|
||||
}
|
||||
display: block;
|
||||
font-size: var(--fs-small);
|
||||
opacity: 0.5;
|
||||
// &::after{
|
||||
// content: attr(start)!important;
|
||||
// display: block;
|
||||
// font-size: var(--fs-small);
|
||||
// opacity: 0.5;
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -352,9 +352,6 @@ ol[type="1"] {
|
|||
break-after: avoid;
|
||||
position: absolute;
|
||||
left: calc(var(--unit) * 1);
|
||||
}
|
||||
ol[type="1"]::after {
|
||||
content: attr(start) !important;
|
||||
display: block;
|
||||
font-size: var(--fs-small);
|
||||
opacity: 0.5;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -7,10 +7,9 @@ export default class beforeAll extends Handler {
|
|||
|
||||
beforeParsed(content){
|
||||
|
||||
|
||||
numParagraph(content);
|
||||
thesis(content);
|
||||
wrapChapterAndIntro(content);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -18,6 +17,14 @@ export default class beforeAll extends Handler {
|
|||
}
|
||||
|
||||
|
||||
function numParagraph(content){
|
||||
let numParagraphs = content.querySelectorAll('ol[type="1"]');
|
||||
numParagraphs.forEach(function (num, index) {
|
||||
let start = num.getAttribute('start');
|
||||
num.querySelector('li').innerHTML = start;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function wrapChapterAndIntro(content){
|
||||
// Wrap h1 and following content in .chapter sections
|
||||
|
|
|
|||
|
|
@ -1,110 +0,0 @@
|
|||
import { Handler } from '/csspageweaver/lib/paged.esm.js';
|
||||
|
||||
export default class thesis extends Handler {
|
||||
constructor(chunker, polisher, caller) {
|
||||
super(chunker, polisher, caller);
|
||||
}
|
||||
|
||||
|
||||
// Créer un wrapper pour récupérer tous les éléments qui suivent le ol (hors titres et .container-following-note)
|
||||
// --------------------------------------------------------------------------------------------------------------
|
||||
beforeParsed(content){
|
||||
const nums = content.querySelectorAll('ol[type="1"]');
|
||||
|
||||
nums.forEach((num) => {
|
||||
const wrapper = document.createElement('div');
|
||||
wrapper.classList.add('wrapper-ol');
|
||||
wrapper.id = 'wrapper-' + (num.getAttribute('start') || '1');
|
||||
|
||||
// Collecter les frères/sœurs suivants jusqu'à la prochaine limite
|
||||
const siblings = [];
|
||||
let sibling = num.nextElementSibling;
|
||||
while (sibling) {
|
||||
if (sibling.matches('ol[type="1"], h1, h2, h3, h4, h5, h6, .container-following-note')) break;
|
||||
siblings.push(sibling);
|
||||
sibling = sibling.nextElementSibling;
|
||||
}
|
||||
|
||||
// Insérer le wrapper à la place du ol
|
||||
num.before(wrapper);
|
||||
wrapper.appendChild(num);
|
||||
siblings.forEach(s => wrapper.appendChild(s));
|
||||
});
|
||||
|
||||
// Si le dernier enfant d'un wrapper est un p et que le suivant est aussi un wrapper → .wrapper-indent
|
||||
const wrappers = content.querySelectorAll('.wrapper-ol');
|
||||
wrappers.forEach((wrapper) => {
|
||||
const last = wrapper.lastElementChild;
|
||||
const next = wrapper.nextElementSibling;
|
||||
if (last && last.nodeName === 'P' && next && next.classList.contains('wrapper-ol')) {
|
||||
const firstP = next.querySelector('p');
|
||||
if (!firstP || !firstP.classList.contains('p-these')) {
|
||||
next.classList.add('wrapper-indent');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
afterPageLayout(pageElement, page, breakToken){
|
||||
|
||||
const wrappers = pageElement.querySelectorAll('.wrapper-ol');
|
||||
const minSize = 37; // taille minimal du wrapper pour qu’il y ait clone (2 lignes)
|
||||
|
||||
// Fais un clone du ol pour de la page précédente
|
||||
// -----------------------------------------------
|
||||
|
||||
if (wrappers.length > 0) {
|
||||
const first = wrappers[0];
|
||||
if (first.hasAttribute('data-split-from')) {
|
||||
let idWrapper = first.getAttribute('data-id');
|
||||
let numPage = pageElement.getAttribute('data-page-number');
|
||||
let numPrev = parseInt(numPage) - 1;
|
||||
let prevPage = document.querySelector('#page-' + numPrev);
|
||||
let olPara = prevPage.querySelector('#' + idWrapper + ' ol[type="1"]');
|
||||
|
||||
if (olPara && first.offsetHeight >= minSize) {
|
||||
const start = olPara.getAttribute('start') || '1';
|
||||
const olClonePage = document.createElement('ol');
|
||||
olClonePage.setAttribute('start', start);
|
||||
olClonePage.setAttribute('type', '1');
|
||||
olClonePage.classList.add('ol-clone-page');
|
||||
olClonePage.style.height = first.offsetHeight + 'px';
|
||||
const li = document.createElement('li');
|
||||
li.setAttribute('data-item-num', start);
|
||||
olClonePage.appendChild(li);
|
||||
first.prepend(olClonePage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Fais un clone du ol pour la colonne suivante (dans la même page)
|
||||
// ----------------------------------------------------------------
|
||||
wrappers.forEach((wrapper) => {
|
||||
const ol = wrapper.querySelector('ol[type="1"]');
|
||||
if (!ol) return;
|
||||
|
||||
const rects = wrapper.getClientRects();
|
||||
if (rects.length === 1) {
|
||||
ol.style.height = rects[0].height + 'px';
|
||||
} else if (rects.length === 2) {
|
||||
ol.style.height = rects[0].height + 'px';
|
||||
if (rects[1].height >= minSize) {
|
||||
const olClone = ol.cloneNode(true);
|
||||
olClone.classList.add('ol-clone');
|
||||
olClone.style.height = rects[1].height + 'px';
|
||||
olClone.removeAttribute('id');
|
||||
ol.after(olClone);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue