From fa738ed6057cc24085ac4e51e9247fd52804670a Mon Sep 17 00:00:00 2001 From: Julie Blanc Date: Thu, 16 Apr 2026 09:42:55 +0200 Subject: [PATCH] grid column --- css/modules/_layout.scss | 31 ++- css/modules/_num-paragraph.scss | 8 +- css/modules/_text.scss | 7 +- css/style.css | 72 ++---- css/style.css.map | 2 +- css/style.scss | 2 +- csspageweaver/manifest.json | 14 +- .../plugins/followingNotes/config.json | 8 - .../plugins/followingNotes/followingNotes.js | 244 ------------------ csspageweaver/plugins/grid/.gitignore | 1 - csspageweaver/plugins/grid/config.json | 14 - csspageweaver/plugins/grid/grid-hook.js | 17 -- csspageweaver/plugins/grid/grid-ui.js | 115 --------- csspageweaver/plugins/grid/grid.css | 124 --------- csspageweaver/plugins/grid/template.html | 16 -- .../{followingNotes => gridColumn}/.gitignore | 0 .../plugins/{grid => gridColumn}/README.md | 0 csspageweaver/plugins/gridColumn/config.json | 13 + csspageweaver/plugins/gridColumn/grid-ui.js | 73 ++++++ csspageweaver/plugins/gridColumn/grid.css | 36 +++ .../plugins/gridColumn/template.html | 4 + js/snapToBaseline.js | 12 +- 22 files changed, 183 insertions(+), 630 deletions(-) delete mode 100644 csspageweaver/plugins/followingNotes/config.json delete mode 100644 csspageweaver/plugins/followingNotes/followingNotes.js delete mode 100644 csspageweaver/plugins/grid/.gitignore delete mode 100644 csspageweaver/plugins/grid/config.json delete mode 100644 csspageweaver/plugins/grid/grid-hook.js delete mode 100644 csspageweaver/plugins/grid/grid-ui.js delete mode 100644 csspageweaver/plugins/grid/grid.css delete mode 100644 csspageweaver/plugins/grid/template.html rename csspageweaver/plugins/{followingNotes => gridColumn}/.gitignore (100%) rename csspageweaver/plugins/{grid => gridColumn}/README.md (100%) create mode 100644 csspageweaver/plugins/gridColumn/config.json create mode 100644 csspageweaver/plugins/gridColumn/grid-ui.js create mode 100644 csspageweaver/plugins/gridColumn/grid.css create mode 100644 csspageweaver/plugins/gridColumn/template.html diff --git a/css/modules/_layout.scss b/css/modules/_layout.scss index 6299012..697ac17 100644 --- a/css/modules/_layout.scss +++ b/css/modules/_layout.scss @@ -1,13 +1,18 @@ $width: 176mm; $height: 240mm; -$top: 6mm; -$bottom: 20mm; -$inside: 12mm; -$outside: 6mm; +$top: 10mm; +$bottom: 14mm; +$inside: 20mm; +$outside: 14mm; $content-h: calc($height - $top - $bottom - 1mm); $content-w: calc($width - $inside - $outside); $gap: 4mm; $indent: 10mm; +$unit: calc($content-w/7); + +:root{ + --unit: #{$unit}; +} @media print { @@ -23,9 +28,7 @@ $indent: 10mm; margin-left: $outside; margin-right: $inside; - // background-image: url("/images/layout-2_3.png"); - // background-size: 100% 100%; - + @bottom-left { content: counter(page); @@ -46,6 +49,10 @@ $indent: 10mm; margin-left: $inside; margin-right: $outside; + background-image: url("/images/layout-1_20.png"); + background-size: 100% 100%; + + @bottom-left { content: string(chapterCount); font-family: var(--font-sans); @@ -141,11 +148,11 @@ $indent: 10mm; } -#section__content{ - columns: 2; - column-gap: $gap; - column-fill: auto; -} +// #section__content{ +// columns: 2; +// column-gap: $gap; +// column-fill: auto; +// } // Title chapter diff --git a/css/modules/_num-paragraph.scss b/css/modules/_num-paragraph.scss index 366a9ad..9ddcafb 100644 --- a/css/modules/_num-paragraph.scss +++ b/css/modules/_num-paragraph.scss @@ -4,18 +4,12 @@ ol[type="1"]{ list-style-type: none; - position: relative; break-after: avoid; - width: $indent; position: absolute; - display: flex; - align-items: center; - justify-content: center; - + left: calc(var(--unit)*2); &::after{ content: attr(start); display: block; - position: absolute; font-size: var(--fs-small); opacity: 0.5; } diff --git a/css/modules/_text.scss b/css/modules/_text.scss index 881e549..9ccb138 100644 --- a/css/modules/_text.scss +++ b/css/modules/_text.scss @@ -22,8 +22,13 @@ p{ text-align: justify; orphans: 2; widows: 2; - margin-left: $indent; + + position: relative; + top: -2px; + // margin-left: $indent; // padding-left: $indent*0.2; + + padding-left: calc(var(--unit)*3); } p, li{ diff --git a/css/style.css b/css/style.css index 60c38b9..17782ee 100644 --- a/css/style.css +++ b/css/style.css @@ -31,15 +31,19 @@ body { line-height: var(--baseline); } +:root { + --unit: 20.2857142857mm; +} + @media print { @page { size: 176mm 240mm; - margin-top: 6mm; - margin-bottom: 20mm; + margin-top: 10mm; + margin-bottom: 14mm; } @page :left { - margin-left: 6mm; - margin-right: 12mm; + margin-left: 14mm; + margin-right: 20mm; @bottom-left { content: counter(page); font-family: var(--font-sans); @@ -55,8 +59,10 @@ body { } } @page :right { - margin-left: 12mm; - margin-right: 6mm; + margin-left: 20mm; + margin-right: 14mm; + background-image: url("/images/layout-1_20.png"); + background-size: 100% 100%; @bottom-left { content: string(chapterCount); font-family: var(--font-sans); @@ -178,8 +184,8 @@ body { } } @page chapter { - margin-left: 6mm; - margin-right: 6mm; + margin-left: 14mm; + margin-right: 14mm; @top-left-corner { content: none; } @@ -240,15 +246,6 @@ body { break-before: page; } -#section__content { - -moz-columns: 2; - columns: 2; - -moz-column-gap: 4mm; - column-gap: 4mm; - -moz-column-fill: auto; - column-fill: auto; -} - #section__content h1 { -moz-column-break-before: left; break-before: left; @@ -287,7 +284,9 @@ p { text-align: justify; orphans: 2; widows: 2; - margin-left: 10mm; + position: relative; + top: -2px; + padding-left: calc(var(--unit) * 3); } p, li { @@ -335,19 +334,14 @@ ul { ol[type="1"] { list-style-type: none; - position: relative; -moz-column-break-after: avoid; break-after: avoid; - width: 10mm; position: absolute; - display: flex; - align-items: center; - justify-content: center; + left: calc(var(--unit) * 2); } ol[type="1"]::after { content: attr(start); display: block; - position: absolute; font-size: var(--fs-small); opacity: 0.5; } @@ -358,13 +352,13 @@ ol[type="1"].ol-clone { -moz-column-break-after: avoid; break-after: avoid; top: 0; - left: 81mm; + left: 73mm; } #section__content h1 { -moz-column-span: all; column-span: all; - height: 213mm; + height: 215mm; } #section__content h2::before, #section__content h3::before, #section__content h4::before, #section__content h5::before, #section__content h6::before { content: attr(data-counter); @@ -499,32 +493,6 @@ ol[type="1"].ol-clone { color: red; } -.container-following-note { - font-family: var(--font-sans); - font-size: var(--fs-small); - line-height: calc(var(--baseline) * 0.75); - position: relative; - margin-top: 2px; - hyphens: auto; - hyphenate-limit-chars: 7 3 4; - hyphenate-limit-lines: 2; - hyphenate-limit-zone: 8%; - word-spacing: -0.004em; - text-align: justify; -} - -.following-note_marker::after { - content: ". "; -} - -.following-note_call { - font-family: var(--font-sans); - font-size: var(--fs-small); - line-height: 1; - position: relative; - top: -4px; -} - #toc_container { -moz-column-break-before: page; break-before: page; diff --git a/css/style.css.map b/css/style.css.map index 58b7aa2..67820a2 100644 --- a/css/style.css.map +++ b/css/style.css.map @@ -1 +1 @@ -{"version":3,"sources":["style.css","modules/_var.scss","modules/_init.scss","modules/_layout.scss","modules/_text.scss","modules/_num-paragraph.scss","modules/_titles.scss","modules/_list-of-abbr.scss","modules/_followingNotes.scss","modules/_toc.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file +{"version":3,"sources":["style.css","modules/_var.scss","modules/_init.scss","modules/_layout.scss","modules/_text.scss","modules/_num-paragraph.scss","modules/_titles.scss","modules/_list-of-abbr.scss","modules/_toc.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file diff --git a/css/style.scss b/css/style.scss index b58c8fc..f9799c0 100644 --- a/css/style.scss +++ b/css/style.scss @@ -6,5 +6,5 @@ @import 'modules/num-paragraph'; @import 'modules/titles'; @import 'modules/list-of-abbr'; -@import 'modules/followingNotes'; +// @import 'modules/followingNotes'; @import 'modules/toc'; \ No newline at end of file diff --git a/csspageweaver/manifest.json b/csspageweaver/manifest.json index 0a6d450..63be0f6 100644 --- a/csspageweaver/manifest.json +++ b/csspageweaver/manifest.json @@ -1,12 +1,10 @@ { "plugins": [ "baseline", - "grid", + "gridColumn", "marginBox", "imposition","spread","previewPage","reloadInPlace", - "inlineNotes", - "followingNotes", - "tableOfContent" + "inlineNotes" ], "pluginsParameters":{}, "css": [ @@ -18,10 +16,6 @@ "containerNotes": "#footnotes", "newClass": "inline-note" }, - "followingNotes": { - "selector": ".inline-note", - "reset": ".chapter" - }, "tableOfContent": { "tocContainer": "#toc_container", "tocTitles": ["#section__content h1", "#section__content h2", "h3", "h4", "h5", "h6"] @@ -29,9 +23,7 @@ }, "hook": [ "/js/counters.js", - "/js/these.js", - "/js/snapToBaseline.js", - "/js/numParagraph.js" + "/js/these.js" ] } diff --git a/csspageweaver/plugins/followingNotes/config.json b/csspageweaver/plugins/followingNotes/config.json deleted file mode 100644 index bc66d35..0000000 --- a/csspageweaver/plugins/followingNotes/config.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "FollowingNotes", - "description": "Create followingNotes with call & markers", - "author": ["Julie Blanc"], - "licence": "MIT", - "version": "1.0", - "hook": "followingNotes.js" -} diff --git a/csspageweaver/plugins/followingNotes/followingNotes.js b/csspageweaver/plugins/followingNotes/followingNotes.js deleted file mode 100644 index 0a9f45b..0000000 --- a/csspageweaver/plugins/followingNotes/followingNotes.js +++ /dev/null @@ -1,244 +0,0 @@ -/** - * @name FollowingNotes - * @author Julie Blanc - * @see { @link https://gitlab.com/csspageweaver/plugins/followingNotes/ } - */ - -import { Handler } from '/csspageweaver/lib/paged.esm.js'; - -export default class followingNotes extends Handler { - - constructor(chunker, polisher, caller) { - super(chunker, polisher, caller); - this.parameters = cssPageWeaver.features.followingNotes.parameters; - this.notesClass = this.parameters?.selector || ".inline-note"; - this.newNotesClass = this.parameters?.newNotesClass || "following-note"; - this.reset = this.parameters?.reset; - this.align = this.parameters?.align; - this.followingNoteOverflow = new Set(); - } - - beforeParsed(content) { - - let newNotesClass = this.newNotesClass; - resetCounter(content, this.reset, this.notesClass); - createCallandMarker(content, this.notesClass, newNotesClass); - - - const containerMap = new Map(); - - let notes = content.querySelectorAll(this.notesClass); - notes.forEach(function (note) { - let paragraph = note.closest("p"); - if (!paragraph) return; - - // Remonter au niveau direct de #section__content (ignorer blockquote et autres conteneurs) - const sectionContent = note.closest('#section__content') || content; - let topLevel = paragraph; - while (topLevel.parentElement && topLevel.parentElement !== sectionContent) { - topLevel = topLevel.parentElement; - } - - // Find next boundary: heading or ol[type="1"], au niveau de #section__content - let boundary = null; - let sibling = topLevel.nextElementSibling; - while (sibling) { - if (sibling.matches('h1, h2, h3, h4, h5, h6, ol[type="1"]')) { - boundary = sibling; - break; - } - sibling = sibling.nextElementSibling; - } - - const mapKey = boundary || sectionContent; - - if (!containerMap.has(mapKey)) { - let container = document.createElement("div"); - container.classList.add("container-following-note"); - if (boundary) { - boundary.before(container); - } else { - sectionContent.appendChild(container); - } - containerMap.set(mapKey, container); - } - - containerMap.get(mapKey).appendChild(note); - }); - - - } - - - -} - - - - -/// FUNCTIONS ----------------------------------------------------- - - -// RESET COUNTER - -function resetCounter(content, reset, notesClass){ - - if(reset && reset != ""){ - const elements = content.querySelectorAll(reset + ", " + notesClass); - let resetEligible = false; - elements.forEach(element => { - if (element.matches(reset)) { - resetEligible = true; - } else if (resetEligible && element.matches(notesClass)) { - element.dataset.resetCounterFollowingNote = true; - resetEligible = false; - } - }); - } - -} - - -// CALL & MARKER -function createCallandMarker(content, notesClass, newNotesClass){ - - let notes = content.querySelectorAll(notesClass); - let resetNum = 0; - - notes.forEach(function (note, index) { - - if (note.dataset.resetCounterFollowingNote === "true") { - resetNum = index; - } - let num = index + 1 - resetNum; - - note.classList.add(newNotesClass); - note.dataset.counterNote = num; - - // call - let ref_note = document.createElement('span'); - ref_note.className = newNotesClass + "_call"; - ref_note.dataset.counterNote = num; - ref_note.innerHTML = num; - - // wrap preceding word + call in .wrapper__note-call - let wrapper = document.createElement('span'); - wrapper.className = 'wrapper__note-call'; - - let prevSibling = note.previousSibling; - if (prevSibling && prevSibling.nodeType === Node.TEXT_NODE) { - let text = prevSibling.textContent; - let m = text.match(/^([\s\S]*\s)(\S+\s*)$/); - if (m) { - let before = m[1]; - let extracted = m[2]; - - // Si le dernier mot extrait est uniquement », prendre aussi le mot d'avant - if (/^»\s*$/.test(extracted)) { - let m2 = before.trimEnd().match(/^([\s\S]*\s|)(\S+)$/); - if (m2) { - let spaceBetween = before.slice(m2[1].length + m2[2].length); - before = m2[1]; - extracted = m2[2] + spaceBetween + extracted; - } - } - - prevSibling.textContent = before; - wrapper.appendChild(document.createTextNode(extracted)); - } else { - prevSibling.textContent = ''; - wrapper.appendChild(document.createTextNode(text)); - } - } - - wrapper.appendChild(ref_note); - note.after(wrapper); - - // marker + content note wrapped in body_note - let marker_note = document.createElement('span'); - marker_note.className = newNotesClass + "_marker"; - //marker_note.innerHTML = num + ". "; - marker_note.innerHTML = num; - - let body_note = document.createElement('div'); - body_note.className = 'body_note'; - while (note.firstChild) { - body_note.appendChild(note.firstChild); - } - body_note.prepend(marker_note); - note.appendChild(body_note); - - }); - - } - - - - -// MARGINS - -function marginNoteTop(elem) { - let marginTop = parseInt(window.getComputedStyle(elem).marginTop, 10) - return marginTop; -} - -function marginNoteBottom(elem) { - let marginBottom = parseInt(window.getComputedStyle(elem).marginBottom, 10) - return marginBottom; -} - -function biggestMargin(a, b) { - let margin; - let marginBottom = marginNoteBottom(a); - let marginTop = marginNoteTop(b); - if (marginBottom > marginTop) { - margin = marginBottom; - } else { - margin = marginTop; - } - return margin; -} - - - -function checkOverflownote(notesClass, pageElement, maxHeight, arrayOverflow, container) { - let notes = pageElement.querySelectorAll(notesClass); - - let notesHeightAll = []; - - for (let n = 0; n < notes.length; ++n) { - - // Add height of the notes to array notesHeightAll - let noteHeight = notes[n].offsetHeight; - notesHeightAll.push(noteHeight); - // Add margins of the notes to array notesHeightAll - if (n >= 1) { - let margins = biggestMargin(notes[n - 1], notes[n]); - notesHeightAll.push(margins); - } - } - - // If notes on page - if (notesHeightAll.length > 0) { - - // Calculate if all notes fit on the page; - let reducer = (accumulator, currentValue) => accumulator + currentValue; - let allHeight = notesHeightAll.reduce(reducer); - let paddingTop = getComputedStyle(container).paddingTop; - let paddingContainer = parseInt(paddingTop); - - let totalHeight = allHeight + paddingContainer; - - if (totalHeight > maxHeight) { - - let lastNote = notes[notes.length - 1]; - arrayOverflow.add(lastNote); - lastNote.remove(); - - checkOverflownote(notesClass, pageElement, maxHeight, arrayOverflow, container); - - } - - - } -} diff --git a/csspageweaver/plugins/grid/.gitignore b/csspageweaver/plugins/grid/.gitignore deleted file mode 100644 index 496ee2c..0000000 --- a/csspageweaver/plugins/grid/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.DS_Store \ No newline at end of file diff --git a/csspageweaver/plugins/grid/config.json b/csspageweaver/plugins/grid/config.json deleted file mode 100644 index 07871e3..0000000 --- a/csspageweaver/plugins/grid/config.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "Grid", - "description": "", - "version": "1.0", - "ui": { - "title": "Squared grid", - "description": "This Toogle a squared grid", - "template": "template.html", - "toggle": true - }, - "stylesheet": "grid.css", - "script": "grid-ui.js", - "hook": "grid-hook.js" -} \ No newline at end of file diff --git a/csspageweaver/plugins/grid/grid-hook.js b/csspageweaver/plugins/grid/grid-hook.js deleted file mode 100644 index 5618bd5..0000000 --- a/csspageweaver/plugins/grid/grid-hook.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @name Grid - * @author Julie Blanc - * @see { @link https://gitlab.com/csspageweaver/plugins/grid/ } - */ - -import { Handler } from '/csspageweaver/lib/paged.esm.js'; - -export default class GridPage extends Handler { - constructor(chunker, polisher, caller) { - super(chunker, polisher, caller); - } - - - - -} diff --git a/csspageweaver/plugins/grid/grid-ui.js b/csspageweaver/plugins/grid/grid-ui.js deleted file mode 100644 index a9687ed..0000000 --- a/csspageweaver/plugins/grid/grid-ui.js +++ /dev/null @@ -1,115 +0,0 @@ -/** - * @name Grid - * @author Julie Blanc - * @see { @link https://gitlab.com/csspageweaver/plugins/grid/ } - */ - - -export default function gridEvents(){ - let body = cssPageWeaver.ui.body; - let fileTitle = cssPageWeaver.docTitle; - let parameters = cssPageWeaver.features.grid.parameters || {}; - let isParametersSet = Object.keys(parameters).length > 0; - - let grid = {}; - - // valeur par défaut - grid.default = { - toggle: 'no-grid', - spacing: 56, - steps: 5, - positionX: 28, - positionY: 0 - }; - - grid.toggle = {}; - grid.toggle.input = cssPageWeaver.ui.grid.toggleInput; - grid.toggle.label = cssPageWeaver.ui.grid.toggleLabel; - - grid.spacing = {}; - grid.spacing.value = parameters.spacing || grid.default.spacing; - grid.spacing.input = document.querySelector('#spacing-grid'); - - grid.steps = {}; - grid.steps.value = parameters.steps || grid.default.steps; - grid.steps.input = document.querySelector('#steps-grid'); - - grid.positionX = {}; - grid.positionX.value = parameters.positionX || grid.default.positionX; - grid.positionX.input = document.querySelector('#position-x-grid'); - - grid.positionY = {}; - grid.positionY.value = parameters.positionY || grid.default.positionY; - grid.positionY.input = document.querySelector('#position-y-grid'); - - /* Récupération de la session précédente */ - grid.toggle.value = localStorage.getItem('gridToggle_' + fileTitle) || grid.default.toggle; - grid.spacing.value = localStorage.getItem('gridSpacing_' + fileTitle) || grid.spacing.value; - grid.steps.value = localStorage.getItem('gridSteps_' + fileTitle) || grid.steps.value; - grid.positionX.value = localStorage.getItem('gridPositionX_' + fileTitle) || grid.positionX.value; - grid.positionY.value = localStorage.getItem('gridPositionY_' + fileTitle) || grid.positionY.value; - - /* DOM edit */ - if(grid.toggle.value === "grid"){ - body.classList.add('grid'); // on indique qu'il y a la grille - grid.toggle.input.checked = true; - } else { - body.classList.remove('grid'); // grille désactivée - grid.toggle.input.checked = false; - } - - /* Set grid values on load */ - grid.spacing.input.value = grid.spacing.value; - document.documentElement.style.setProperty('--grid-spacing', grid.spacing.value + 'px'); - - grid.steps.input.value = grid.steps.value; - document.documentElement.style.setProperty('--steps', grid.steps.value); - - grid.positionX.input.value = grid.positionX.value; - document.documentElement.style.setProperty('--grid-position-x', grid.positionX.value + 'px'); - - grid.positionY.input.value = grid.positionY.value; - document.documentElement.style.setProperty('--grid-position-y', grid.positionY.value + 'px'); - - /* Event listeners */ - - /* Toggle event */ - grid.toggle.input.addEventListener("input", (e) => { - if(e.target.checked){ - body.classList.add('grid'); // grille activée - localStorage.setItem('gridToggle_' + fileTitle, 'grid'); - } else { - body.classList.remove('grid'); // grille désactivée - localStorage.setItem('gridToggle_' + fileTitle, 'no-grid'); - } - }); - - /* Change grid spacing on input */ - document.querySelector("#spacing-grid").addEventListener("input", (e) => { - grid.spacing.value = e.target.value; - document.documentElement.style.setProperty('--grid-spacing', grid.spacing.value + 'px'); - localStorage.setItem('gridSpacing_' + fileTitle, grid.spacing.value); - }); - - /* Change grid steps on input */ - document.querySelector("#steps-grid").addEventListener("input", (e) => { - grid.steps.value = e.target.value; - document.documentElement.style.setProperty('--steps', grid.steps.value); - localStorage.setItem('gridSteps_' + fileTitle, grid.steps.value); - }); - - /* Change grid position X on input */ - document.querySelector("#position-x-grid").addEventListener("input", (e) => { - grid.positionX.value = e.target.value; - document.documentElement.style.setProperty('--grid-position-x', grid.positionX.value + 'px'); - localStorage.setItem('gridPositionX_' + fileTitle, grid.positionX.value); - }); - - /* Change grid position Y on input */ - document.querySelector("#position-y-grid").addEventListener("input", (e) => { - grid.positionY.value = e.target.value; - document.documentElement.style.setProperty('--grid-position-y', grid.positionY.value + 'px'); - localStorage.setItem('gridPositionY_' + fileTitle, grid.positionY.value); - }); -} - diff --git a/csspageweaver/plugins/grid/grid.css b/csspageweaver/plugins/grid/grid.css deleted file mode 100644 index 8cd4dee..0000000 --- a/csspageweaver/plugins/grid/grid.css +++ /dev/null @@ -1,124 +0,0 @@ -:root { - --grid-bold: #bfbfbf; - --grid-light: #efefef; - - --grid-spacing: 56px; - --steps: 5; - --grid-position-x: 28px; - --grid-position-y: 0px; - - --grid-subdivisions: calc(var(--grid-spacing)/var(--steps)); - -} - - -@media screen{ - - - - body.grid .pagedjs_sheet { - - - - z-index: -1; - - - background-image: - /* Traits bold */ - repeating-linear-gradient( - 90deg, - var(--grid-bold) 0 1px, - transparent 1px var(--grid-spacing) - ), - repeating-linear-gradient( - 0deg, - var(--grid-bold) 0 1px, - transparent 1px var(--grid-spacing) - ), - - /* Traits fins (3 traits → 4 carrés) */ - repeating-linear-gradient( - 90deg, - var(--grid-light) 0 1px, - transparent 1px var(--grid-subdivisions) - ), - repeating-linear-gradient( - 0deg, - var(--grid-light) 0 1px, - transparent 1px var(--grid-subdivisions) - ); - - background-position: - var(--grid-position-x) var(--grid-position-y), - var(--grid-position-x) var(--grid-position-y), - var(--grid-position-x) var(--grid-position-y), - var(--grid-position-x) var(--grid-position-y); - } - - - - - - - - .grid-page{ - --nbr-columns: 8; - width: var(--pagedjs-pagebox-width); - height: var(--pagedjs-pagebox-height); - position: absolute; - top: 0; - left: 0; - display: grid; - grid-template-columns: repeat(var(--nbr-columns), calc(100%/var(--nbr-columns))); - - box-shadow: 1px 0px 0px 0px var(--grid-color); - - --grid-color: magenta; - z-index: -1; - } - - .pagedjs_right_page .grid-page{ - padding-left: var(--pagedjs-margin-left); - padding-right: var(--pagedjs-margin-right); - } - - .pagedjs_left_page .grid-page{ - padding-left: var(--pagedjs-margin-left); - padding-right: var(--pagedjs-margin-right); - } - - - .grid-page .grid-column{ - box-shadow: 1px 0px 0px 0px var(--grid-color); - grid-row: 1/end; - width: 100%; - justify-self: right; - - - } - - .grid-column-0{ - grid-column: 1; - box-shadow: -1px 0px 0px 0px var(--grid-color)!important; - justify-self: left; - } - - .grid-column-1{ grid-column: 1; } - .grid-column-2{ grid-column: 2; } - .grid-column-3{ grid-column: 3; } - .grid-column-4{ grid-column: 4; } - .grid-column-5{ grid-column: 5; } - .grid-column-6{ grid-column: 6; } - .grid-column-7{ grid-column: 7; } - .grid-column-8{ grid-column: 8; } - .grid-column-9{ grid-column: 9; } - .grid-column-10{ grid-column: 10; } - .grid-column-11{ grid-column: 11; } - .grid-column-12{ grid-column: 12; } -} - -.no-grid .grid-page{ - display: none; -} - - diff --git a/csspageweaver/plugins/grid/template.html b/csspageweaver/plugins/grid/template.html deleted file mode 100644 index 8b7adcc..0000000 --- a/csspageweaver/plugins/grid/template.html +++ /dev/null @@ -1,16 +0,0 @@ -
- - -
-
- - -
-
- - -
-
- - -
\ No newline at end of file diff --git a/csspageweaver/plugins/followingNotes/.gitignore b/csspageweaver/plugins/gridColumn/.gitignore similarity index 100% rename from csspageweaver/plugins/followingNotes/.gitignore rename to csspageweaver/plugins/gridColumn/.gitignore diff --git a/csspageweaver/plugins/grid/README.md b/csspageweaver/plugins/gridColumn/README.md similarity index 100% rename from csspageweaver/plugins/grid/README.md rename to csspageweaver/plugins/gridColumn/README.md diff --git a/csspageweaver/plugins/gridColumn/config.json b/csspageweaver/plugins/gridColumn/config.json new file mode 100644 index 0000000..e67b7b0 --- /dev/null +++ b/csspageweaver/plugins/gridColumn/config.json @@ -0,0 +1,13 @@ +{ + "name": "Column grid", + "description": "", + "version": "1.0", + "ui": { + "title": "Column grid", + "description": "This Toogle a column grid", + "template": "template.html", + "toggle": true + }, + "stylesheet": "grid.css", + "script": "grid-ui.js" +} \ No newline at end of file diff --git a/csspageweaver/plugins/gridColumn/grid-ui.js b/csspageweaver/plugins/gridColumn/grid-ui.js new file mode 100644 index 0000000..df9983e --- /dev/null +++ b/csspageweaver/plugins/gridColumn/grid-ui.js @@ -0,0 +1,73 @@ +/** + * @name Grid + * @author Julie Blanc + * @see { @link https://gitlab.com/csspageweaver/plugins/grid/ } + */ + + +export default function gridEvents(id){ + let body = cssPageWeaver.ui.body; + let fileTitle = cssPageWeaver.docTitle; + let parameters = cssPageWeaver.features[id].parameters || {}; + let isParametersSet = Object.keys(parameters).length > 0; + + let grid = {}; + + // valeur par défaut + grid.default = { + steps: 7, + }; + + grid.toggle = {}; + grid.toggle.value = localStorage.getItem('gridColToggle_' + fileTitle) || 'no-grid-col'; + grid.toggle.input = document.querySelector(`#${id}-toggle`); + + grid.steps = {}; + grid.steps.value = parameters.steps || grid.default.steps; + grid.steps.input = document.querySelector('#steps-grid-col'); + + + /* Récupération de la session précédente si elle existe */ + + grid.steps.value = localStorage.getItem('gridColSteps_' + fileTitle) || grid.steps.value; + + grid.steps.input.value = grid.steps.value; + + + document.documentElement.style.setProperty('--grid-col-steps', grid.steps.value); + + + /* DOM edit */ + if(grid.toggle.value === "grid-col"){ + body.classList.add('grid-col'); // on indique qu'il y a la grille + grid.toggle.input.checked = true; + } else { + body.classList.remove('grid-col'); // grille désactivée + grid.toggle.input.checked = false; + } + + + + + /* Toggle event */ + grid.toggle.input.addEventListener("input", (e) => { + if(e.target.checked){ + body.classList.add('grid-col'); // grille activée + localStorage.setItem('gridColToggle_' + fileTitle, 'grid-col'); + } else { + body.classList.remove('grid-col'); // grille désactivée + localStorage.setItem('gridColToggle_' + fileTitle, 'no-grid-col'); + } + }); + + + /* Change grid steps on input */ + document.querySelector("#steps-grid-col").addEventListener("input", (e) => { + grid.steps.value = e.target.value; + document.documentElement.style.setProperty('--grid-col-steps', grid.steps.value); + localStorage.setItem('gridColSteps_' + fileTitle, grid.steps.value); + }); + + +} + diff --git a/csspageweaver/plugins/gridColumn/grid.css b/csspageweaver/plugins/gridColumn/grid.css new file mode 100644 index 0000000..bcaf92d --- /dev/null +++ b/csspageweaver/plugins/gridColumn/grid.css @@ -0,0 +1,36 @@ +:root { + --grid-col-color: #ee33d2; + --grid-light: #efefef; + + --grid-spacing: 56px; + --steps: 5; + --grid-position-x: 28px; + --grid-position-y: 0px; + + --grid-subdivisions: calc(var(--grid-spacing)/var(--steps)); + +} + + +@media screen{ + + + + body.grid-col .pagedjs_area { + + + + z-index: -1; + + box-shadow: 0px 0px 1px 0px var(--grid-col-color); + + background-image: repeating-linear-gradient(to right, var(--grid-col-color), var(--grid-col-color) 0.5px, transparent 0.5px, transparent); + background-size: calc(100%/var(--grid-col-steps)); + + } + + + +} + + diff --git a/csspageweaver/plugins/gridColumn/template.html b/csspageweaver/plugins/gridColumn/template.html new file mode 100644 index 0000000..a19bd76 --- /dev/null +++ b/csspageweaver/plugins/gridColumn/template.html @@ -0,0 +1,4 @@ +
+ + +
diff --git a/js/snapToBaseline.js b/js/snapToBaseline.js index 2e70a1d..9ae7ad9 100644 --- a/js/snapToBaseline.js +++ b/js/snapToBaseline.js @@ -9,12 +9,12 @@ export default class snapToBaseline extends Handler { beforeParsed(content){ this.baseline = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--baseline').trim()); - content.querySelectorAll('blockquote').forEach((bq) => { - const prev = bq.previousElementSibling; - if (!prev || prev.nodeName !== 'P') { - // bq.style.color = 'red'; - } - }); + // content.querySelectorAll('blockquote').forEach((bq) => { + // const prev = bq.previousElementSibling; + // if (!prev || prev.nodeName !== 'P') { + // // bq.style.color = 'red'; + // } + // }); } renderNode(node, sourceNode){