postext 1.5.1 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/exports.test.js +4 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/pipeline/footnotes.test.d.ts +2 -0
- package/dist/__tests__/pipeline/footnotes.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/footnotes.test.js +203 -0
- package/dist/__tests__/pipeline/footnotes.test.js.map +1 -0
- package/dist/canvas-backend/decorations.d.ts +3 -1
- package/dist/canvas-backend/decorations.d.ts.map +1 -1
- package/dist/canvas-backend/decorations.js +19 -3
- package/dist/canvas-backend/decorations.js.map +1 -1
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js +3 -2
- package/dist/canvas-backend/index.js.map +1 -1
- package/dist/columnRule.d.ts +16 -2
- package/dist/columnRule.d.ts.map +1 -1
- package/dist/columnRule.js +21 -2
- package/dist/columnRule.js.map +1 -1
- package/dist/defaults/footnotes.d.ts +5 -0
- package/dist/defaults/footnotes.d.ts.map +1 -0
- package/dist/defaults/footnotes.js +87 -0
- package/dist/defaults/footnotes.js.map +1 -0
- package/dist/defaults/index.d.ts +1 -0
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +9 -0
- package/dist/defaults/index.js.map +1 -1
- package/dist/defaults/shared.d.ts.map +1 -1
- package/dist/defaults/shared.js +17 -0
- package/dist/defaults/shared.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +5 -2
- package/dist/html-backend.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/knuthPlass/richAdapter.d.ts +1 -0
- package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/richAdapter.js +2 -1
- package/dist/knuthPlass/richAdapter.js.map +1 -1
- package/dist/measure/cache.js +1 -1
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/rich.d.ts +3 -0
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +7 -5
- package/dist/measure/rich.js.map +1 -1
- package/dist/parse/blockParser.d.ts.map +1 -1
- package/dist/parse/blockParser.js +25 -9
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/inlineFormatting.d.ts +22 -0
- package/dist/parse/inlineFormatting.d.ts.map +1 -1
- package/dist/parse/inlineFormatting.js +42 -2
- package/dist/parse/inlineFormatting.js.map +1 -1
- package/dist/parse/sourceMapping.d.ts.map +1 -1
- package/dist/parse/sourceMapping.js +19 -1
- package/dist/parse/sourceMapping.js.map +1 -1
- package/dist/parse/types.d.ts +14 -0
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +320 -5
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +2 -1
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +27 -1
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/continuation.d.ts.map +1 -1
- package/dist/pipeline/continuation.js +15 -1
- package/dist/pipeline/continuation.js.map +1 -1
- package/dist/pipeline/footnotes.d.ts +56 -0
- package/dist/pipeline/footnotes.d.ts.map +1 -0
- package/dist/pipeline/footnotes.js +202 -0
- package/dist/pipeline/footnotes.js.map +1 -0
- package/dist/pipeline/measureContentBlock.d.ts +2 -0
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +10 -0
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/types.d.ts +86 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +44 -4
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- package/package.json +1 -1
|
@@ -61,6 +61,7 @@ describe("package exports", () => {
|
|
|
61
61
|
"dimensionToPx",
|
|
62
62
|
"computePageTextExtent",
|
|
63
63
|
"columnRuleSegments",
|
|
64
|
+
"footnoteRuleSegments",
|
|
64
65
|
"pageColumnRule",
|
|
65
66
|
"cropMarkSegments",
|
|
66
67
|
"columnClipRect",
|
|
@@ -194,6 +195,9 @@ describe("package exports", () => {
|
|
|
194
195
|
"DEFAULT_TOC_CONFIG",
|
|
195
196
|
"resolveTocConfig",
|
|
196
197
|
"stripTocDefaults",
|
|
198
|
+
"DEFAULT_FOOTNOTES_CONFIG",
|
|
199
|
+
"resolveFootnotesConfig",
|
|
200
|
+
"stripFootnotesDefaults",
|
|
197
201
|
"resolvePlaceholders",
|
|
198
202
|
"computeChapterTitles",
|
|
199
203
|
"computeChapterTitlesAtTop",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.test.js","sourceRoot":"","sources":["../../src/__tests__/exports.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AASpC,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,qDAAqD;AACrD,MAAM,mBAAmB,GAAG,GAAG,EAAE;IAC/B,MAAM,IAAI,GAAiB,OAAO,CAAC;IACnC,MAAM,IAAI,GAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACzC,MAAM,KAAK,GAAe,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAiB;QACzB,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,MAAM;QAClB,iBAAiB,EAAE,KAAK;QACxB,OAAO,EAAE,OAAO;QAChB,aAAa,EAAE,SAAS;QACxB,aAAa,EAAE,QAAQ;KACxB,CAAC;IACF,MAAM,QAAQ,GAAa;QACzB,EAAE,EAAE,GAAG;QACP,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,IAAI;QACJ,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,EAAE,KAAK,EAAE;KACjB,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AACF,KAAK,mBAAmB,CAAC;AAEzB,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,CAAC,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;YAC3B,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,mBAAmB;YACnB,gBAAgB;YAChB,YAAY;YACZ,aAAa;YACb,iBAAiB;YACjB,gBAAgB;YAChB,YAAY;YACZ,oBAAoB;YACpB,uBAAuB;YACvB,yBAAyB;YACzB,qBAAqB;YACrB,kBAAkB;YAClB,cAAc;YACd,qBAAqB;YACrB,qBAAqB;YACrB,iBAAiB;YACjB,eAAe;YACf,uBAAuB;YACvB,oBAAoB;YACpB,gBAAgB;YAChB,kBAAkB;YAClB,gBAAgB;YAChB,uBAAuB;YACvB,4BAA4B;YAC5B,gBAAgB;YAChB,gBAAgB;YAChB,mBAAmB;YACnB,iBAAiB;YACjB,cAAc;YACd,kBAAkB;YAClB,mBAAmB;YACnB,gBAAgB;YAChB,uBAAuB;YACvB,wBAAwB;YACxB,oBAAoB;YACpB,wBAAwB;YACxB,eAAe;YACf,sBAAsB;YACtB,qBAAqB;YACrB,wBAAwB;YACxB,eAAe;YACf,QAAQ;YACR,WAAW;YACX,WAAW;YACX,cAAc;YACd,YAAY;YACZ,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,mBAAmB;YACnB,cAAc;YACd,UAAU;YACV,iBAAiB;YACjB,wBAAwB;YACxB,eAAe;YACf,0BAA0B;YAC1B,oBAAoB;YACpB,cAAc;YACd,qBAAqB;YACrB,mBAAmB;YACnB,wBAAwB;YACxB,mBAAmB;YACnB,mBAAmB;YACnB,uBAAuB;YACvB,qBAAqB;YACrB,0BAA0B;YAC1B,qBAAqB;YACrB,qBAAqB;YACrB,0BAA0B;YAC1B,4BAA4B;YAC5B,2BAA2B;YAC3B,uBAAuB;YACvB,uBAAuB;YACvB,kBAAkB;YAClB,yBAAyB;YACzB,uBAAuB;YACvB,uBAAuB;YACvB,yBAAyB;YACzB,yBAAyB;YACzB,0BAA0B;YAC1B,0BAA0B;YAC1B,gBAAgB;YAChB,iCAAiC;YACjC,2BAA2B;YAC3B,2BAA2B;YAC3B,mBAAmB;YACnB,8BAA8B;YAC9B,2BAA2B;YAC3B,2BAA2B;YAC3B,0BAA0B;YAC1B,8BAA8B;YAC9B,8BAA8B;YAC9B,wBAAwB;YACxB,8BAA8B;YAC9B,4BAA4B;YAC5B,4BAA4B;YAC5B,qBAAqB;YACrB,2BAA2B;YAC3B,yBAAyB;YACzB,yBAAyB;YACzB,eAAe;YACf,gCAAgC;YAChC,6BAA6B;YAC7B,6BAA6B;YAC7B,8BAA8B;YAC9B,2BAA2B;YAC3B,2BAA2B;YAC3B,qBAAqB;YACrB,mBAAmB;YACnB,mBAAmB;YACnB,iBAAiB;YACjB,aAAa;YACb,mBAAmB;YACnB,sBAAsB;YACtB,8BAA8B;YAC9B,uBAAuB;YACvB,oBAAoB;YACpB,uBAAuB;YACvB,yBAAyB;YACzB,wBAAwB;YACxB,0BAA0B;YAC1B,uBAAuB;YACvB,mBAAmB;YACnB,qBAAqB;YACrB,sBAAsB;YACtB,oBAAoB;YACpB,oBAAoB;YACpB,4BAA4B;YAC5B,yBAAyB;YACzB,yBAAyB;YACzB,sBAAsB;YACtB,0BAA0B;YAC1B,+BAA+B;YAC/B,4BAA4B;YAC5B,4BAA4B;YAC5B,4BAA4B;YAC5B,qBAAqB;YACrB,qBAAqB;YACrB,sBAAsB;YACtB,sBAAsB;YACtB,2BAA2B;YAC3B,2BAA2B;YAC3B,sBAAsB;YACtB,sBAAsB;YACtB,oBAAoB;YACpB,oBAAoB;YACpB,wBAAwB;YACxB,4BAA4B;YAC5B,4BAA4B;YAC5B,oBAAoB;YACpB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,sBAAsB;YACtB,2BAA2B;YAC3B,uBAAuB;YACvB,4BAA4B;YAC5B,yBAAyB;YACzB,oBAAoB;YACpB,uBAAuB;YACvB,qBAAqB;YACrB,mBAAmB;YACnB,2BAA2B;YAC3B,wBAAwB;YACxB,sBAAsB;YACtB,uBAAuB;YACvB,kBAAkB;YAClB,eAAe;YACf,iCAAiC;YACjC,0BAA0B;YAC1B,mBAAmB;YACnB,yBAAyB;YACzB,qBAAqB;YACrB,qBAAqB;YACrB,sBAAsB;YACtB,yBAAyB;YACzB,mBAAmB;YACnB,eAAe;YACf,oBAAoB;YACpB,oBAAoB;YACpB,yBAAyB;YACzB,kBAAkB;YAClB,oBAAoB;YACpB,kBAAkB;YAClB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,iBAAiB;YACjB,kBAAkB;YAClB,yBAAyB;YACzB,kBAAkB;YAClB,iBAAiB;YACjB,sBAAsB;YACtB,eAAe;YACf,mBAAmB;YACnB,uBAAuB;YACvB,gBAAgB;YAChB,aAAa;YACb,aAAa;YACb,YAAY;YACZ,mBAAmB;YACnB,gBAAgB;YAChB,qBAAqB;YACrB,YAAY;YACZ,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,sBAAsB;YACtB,gBAAgB;YAChB,qBAAqB;YACrB,oBAAoB;YACpB,YAAY;YACZ,YAAY;YACZ,oBAAoB;YACpB,eAAe;YACf,WAAW;YACX,kBAAkB;YAClB,mBAAmB;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"exports.test.js","sourceRoot":"","sources":["../../src/__tests__/exports.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footnotes.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/pipeline/footnotes.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildDocument } from '../../pipeline';
|
|
3
|
+
import { createMeasurementCache } from '../../measure';
|
|
4
|
+
import { parseMarkdown } from '../../parse';
|
|
5
|
+
// Deterministic text measurement stub (no DOM in the node test env).
|
|
6
|
+
class StubCtx {
|
|
7
|
+
font = '';
|
|
8
|
+
measureText(s) {
|
|
9
|
+
return { width: s.length * 7 };
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
globalThis.OffscreenCanvas = class {
|
|
13
|
+
getContext() {
|
|
14
|
+
return new StubCtx();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const SENTENCE = 'La linterna del faro debe permanecer encendida toda la noche para guiar a los barcos que cruzan la bahía. ';
|
|
18
|
+
const filler = (n) => SENTENCE.repeat(n).trim();
|
|
19
|
+
const mm = (value) => ({ value, unit: 'mm' });
|
|
20
|
+
const TWO_COL = {
|
|
21
|
+
headings: { balancing: { enabled: false } },
|
|
22
|
+
page: { width: mm(160), height: mm(120), margins: { top: mm(10), bottom: mm(10), left: mm(10), right: mm(10) } },
|
|
23
|
+
layout: { layoutType: 'double' },
|
|
24
|
+
};
|
|
25
|
+
function build(md, config = TWO_COL) {
|
|
26
|
+
return buildDocument({ markdown: md }, config, createMeasurementCache());
|
|
27
|
+
}
|
|
28
|
+
const notes = (doc) => doc.blocks.filter((b) => b.footnoteNote !== undefined);
|
|
29
|
+
const markerLine = (doc, id) => {
|
|
30
|
+
for (const b of doc.blocks) {
|
|
31
|
+
if (b.footnoteNote !== undefined)
|
|
32
|
+
continue;
|
|
33
|
+
for (const l of b.lines)
|
|
34
|
+
if (l.segments?.some((s) => s.footnoteId === id))
|
|
35
|
+
return { block: b, line: l };
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
};
|
|
39
|
+
describe('footnote parsing', () => {
|
|
40
|
+
it('turns [^id] into a marker span and [^id]: into a definition paragraph', () => {
|
|
41
|
+
const blocks = parseMarkdown('Texto con nota.[^a] Y sigue.\n\n[^a]: La nota *en cursiva*.');
|
|
42
|
+
expect(blocks).toHaveLength(2);
|
|
43
|
+
const marker = blocks[0].spans.find((s) => s.footnote);
|
|
44
|
+
expect(marker?.footnote?.id).toBe('a');
|
|
45
|
+
expect(blocks[1].footnoteDef).toBe('a');
|
|
46
|
+
expect(blocks[1].text).toBe('La nota en cursiva.');
|
|
47
|
+
expect(blocks[1].sourceMap[0]).toBe('Texto con nota.[^a] Y sigue.\n\n[^a]: '.length);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe('footnotes at the column foot', () => {
|
|
51
|
+
it('sets the note at the foot of the column that cites it, numbered in order', () => {
|
|
52
|
+
const md = [
|
|
53
|
+
`${filler(2)} Primera cita.[^uno] ${filler(1)}`,
|
|
54
|
+
`${filler(1)} Segunda cita.[^dos] ${filler(1)}`,
|
|
55
|
+
'[^dos]: La segunda nota.',
|
|
56
|
+
'[^uno]: La primera nota, algo más larga que la segunda para ocupar dos líneas en la columna.',
|
|
57
|
+
].join('\n\n');
|
|
58
|
+
const doc = build(md);
|
|
59
|
+
const ns = notes(doc);
|
|
60
|
+
expect(ns.map((n) => n.footnoteNote)).toEqual(['uno', 'dos']);
|
|
61
|
+
for (const n of ns) {
|
|
62
|
+
const cite = markerLine(doc, n.footnoteNote);
|
|
63
|
+
expect(n.pageIndex).toBe(cite.block.pageIndex);
|
|
64
|
+
expect(n.columnIndex).toBe(cite.block.columnIndex);
|
|
65
|
+
// Under the text of its column.
|
|
66
|
+
const col = doc.pages[n.pageIndex].columns[n.columnIndex];
|
|
67
|
+
const textBottom = Math.max(...col.blocks.map((b) => b.bbox.y + b.bbox.height));
|
|
68
|
+
expect(n.bbox.y).toBeGreaterThan(textBottom - 0.5);
|
|
69
|
+
expect(n.bbox.y + n.bbox.height).toBeLessThanOrEqual(doc.pages[0].contentArea.y + doc.pages[0].contentArea.height + 0.5);
|
|
70
|
+
}
|
|
71
|
+
const seg = markerLine(doc, 'uno').line.segments.find((s) => s.footnoteId === 'uno');
|
|
72
|
+
expect(seg.text).toBe('1');
|
|
73
|
+
expect(seg.script).toBe('sup');
|
|
74
|
+
expect(ns[0].lines[0].text.startsWith('1')).toBe(true);
|
|
75
|
+
const area = doc.pages[0].footnoteAreas?.[0];
|
|
76
|
+
expect(area?.rule).toBeDefined();
|
|
77
|
+
});
|
|
78
|
+
it('moves the citing line on when its note does not fit under it', () => {
|
|
79
|
+
const longNote = filler(4);
|
|
80
|
+
const md = [filler(9) + ' Aquí.[^n] ' + filler(3), `[^n]: ${longNote}`].join('\n\n');
|
|
81
|
+
const doc = build(md);
|
|
82
|
+
const n = notes(doc)[0];
|
|
83
|
+
const cite = markerLine(doc, 'n');
|
|
84
|
+
expect(n.pageIndex).toBe(cite.block.pageIndex);
|
|
85
|
+
expect(n.columnIndex).toBe(cite.block.columnIndex);
|
|
86
|
+
const col = doc.pages[n.pageIndex].columns[n.columnIndex];
|
|
87
|
+
for (const b of col.blocks)
|
|
88
|
+
expect(b.bbox.y + b.bbox.height).toBeLessThanOrEqual(n.bbox.y + 0.5);
|
|
89
|
+
});
|
|
90
|
+
it('sets the notes after the chapter with placement chapterEnd', () => {
|
|
91
|
+
const md = [`${filler(1)} Cita.[^a]`, '[^a]: Nota al final.', filler(1)].join('\n\n');
|
|
92
|
+
const doc = build(md, { ...TWO_COL, footnotes: { placement: 'chapterEnd' } });
|
|
93
|
+
const ns = notes(doc);
|
|
94
|
+
expect(ns).toHaveLength(1);
|
|
95
|
+
const last = doc.blocks.filter((b) => b.type === 'paragraph').at(-1);
|
|
96
|
+
expect(last.footnoteNote).toBe('a');
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
/** Every note sits in the column of its citing line, under that column's
|
|
100
|
+
* text, inside the content area, and clear of the other notes and floats. */
|
|
101
|
+
function checkNotes(doc) {
|
|
102
|
+
const ns = notes(doc);
|
|
103
|
+
for (const n of ns) {
|
|
104
|
+
const cite = markerLine(doc, n.footnoteNote);
|
|
105
|
+
expect(cite, `citation of ${n.footnoteNote}`).toBeDefined();
|
|
106
|
+
expect(n.pageIndex, `page of ${n.footnoteNote}`).toBe(cite.block.pageIndex);
|
|
107
|
+
expect(n.columnIndex, `column of ${n.footnoteNote}`).toBe(cite.block.columnIndex);
|
|
108
|
+
const page = doc.pages[n.pageIndex];
|
|
109
|
+
const col = page.columns[n.columnIndex];
|
|
110
|
+
for (const b of col.blocks) {
|
|
111
|
+
const overlaps = b.bbox.y < n.bbox.y + n.bbox.height - 0.5 && n.bbox.y < b.bbox.y + b.bbox.height - 0.5;
|
|
112
|
+
expect(overlaps, `${n.footnoteNote} overlaps ${b.id} on p${n.pageIndex}`).toBe(false);
|
|
113
|
+
}
|
|
114
|
+
for (const f of page.floats ?? []) {
|
|
115
|
+
if (f === n || f.bbox.x >= n.bbox.x + n.bbox.width - 0.5 || n.bbox.x >= f.bbox.x + f.bbox.width - 0.5)
|
|
116
|
+
continue;
|
|
117
|
+
const overlaps = f.bbox.y < n.bbox.y + n.bbox.height - 0.5 && n.bbox.y < f.bbox.y + f.bbox.height - 0.5;
|
|
118
|
+
expect(overlaps, `${n.footnoteNote} overlaps float ${f.id}`).toBe(false);
|
|
119
|
+
}
|
|
120
|
+
const area = page.contentArea;
|
|
121
|
+
expect(n.bbox.y + n.bbox.height).toBeLessThanOrEqual(area.y + area.height + 0.5);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
describe('footnotes with balancing and closing bands', () => {
|
|
125
|
+
const BALANCED = { ...TWO_COL, headings: {} };
|
|
126
|
+
const words = ['uno', 'dos', 'tres', 'cuatro', 'cinco', 'seis', 'siete', 'ocho', 'nueve', 'diez', 'once', 'doce'];
|
|
127
|
+
const doc = (noteLen, every, config = BALANCED) => {
|
|
128
|
+
const parts = [];
|
|
129
|
+
let k = 0;
|
|
130
|
+
for (let i = 0; i < 30; i++) {
|
|
131
|
+
if (i % 7 === 3)
|
|
132
|
+
parts.push(`## Sección ${i}`);
|
|
133
|
+
parts.push(i % every === 0 && k < words.length ? `${filler(1 + (i % 3))} Nota aquí.[^${words[k++]}] ${filler(1)}` : filler(1 + (i % 4)));
|
|
134
|
+
}
|
|
135
|
+
words.slice(0, k).forEach((w, i) => parts.push(`[^${w}]: ${filler(noteLen(i)).slice(0, 40 + 60 * noteLen(i))}`));
|
|
136
|
+
return build(parts.join('\n\n'), config);
|
|
137
|
+
};
|
|
138
|
+
it('keeps each note with its citation (short notes)', () => { checkNotes(doc(() => 1, 3)); });
|
|
139
|
+
it('keeps each note with its citation (long notes)', () => { checkNotes(doc((i) => 1 + (i % 4), 4)); });
|
|
140
|
+
it('keeps each note with its citation in one column', () => {
|
|
141
|
+
checkNotes(doc((i) => 1 + (i % 3), 3, { ...BALANCED, layout: { layoutType: 'single' } }));
|
|
142
|
+
});
|
|
143
|
+
it('numbers every cited note once', () => {
|
|
144
|
+
const d = doc(() => 1, 3);
|
|
145
|
+
const ids = notes(d).map((n) => n.footnoteNote);
|
|
146
|
+
expect(new Set(ids).size).toBe(ids.length);
|
|
147
|
+
expect(ids.length).toBeGreaterThan(5);
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
describe('footnote warnings', () => {
|
|
151
|
+
it('reports a marker with no definition and a definition never cited', async () => {
|
|
152
|
+
const { collectContentWarnings } = await import('../../pipeline/contentWarnings');
|
|
153
|
+
const md = 'Texto.[^falta] Más texto.[^ok]\n\n[^ok]: Bien.\n\n[^sobra]: Nadie la cita.';
|
|
154
|
+
const found = collectContentWarnings(md, undefined, []);
|
|
155
|
+
const undef = found.find((w) => w.kind === 'undefinedFootnote');
|
|
156
|
+
const unused = found.find((w) => w.kind === 'unusedFootnote');
|
|
157
|
+
expect(undef && 'id' in undef ? undef.id : undefined).toBe('falta');
|
|
158
|
+
expect(md.slice(undef.sourceStart, undef.sourceEnd)).toBe('[^falta]');
|
|
159
|
+
expect(unused && 'id' in unused ? unused.id : undefined).toBe('sobra');
|
|
160
|
+
expect(md.slice(unused.sourceStart, unused.sourceStart + 10)).toBe('[^sobra]: ');
|
|
161
|
+
expect(found.filter((w) => w.kind === 'undefinedFootnote' || w.kind === 'unusedFootnote')).toHaveLength(2);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe('notes cited in a box', () => {
|
|
165
|
+
it('sets them at the foot of the column the text goes on in', () => {
|
|
166
|
+
const md = [
|
|
167
|
+
filler(1),
|
|
168
|
+
':::callout{title="Recuerda"}',
|
|
169
|
+
'Dentro del recuadro.[^caja]',
|
|
170
|
+
':::',
|
|
171
|
+
`${filler(1)} Fuera.[^fuera]`,
|
|
172
|
+
'[^caja]: Nota citada en el recuadro.',
|
|
173
|
+
'[^fuera]: Nota citada en el texto.',
|
|
174
|
+
].join('\n\n');
|
|
175
|
+
const doc = build(md);
|
|
176
|
+
const ns = notes(doc);
|
|
177
|
+
expect(ns.map((n) => n.footnoteNote)).toEqual(['caja', 'fuera']);
|
|
178
|
+
const col = doc.pages[ns[0].pageIndex].columns[ns[0].columnIndex];
|
|
179
|
+
for (const b of col.blocks)
|
|
180
|
+
expect(b.bbox.y + b.bbox.height).toBeLessThanOrEqual(ns[0].bbox.y + 0.5);
|
|
181
|
+
});
|
|
182
|
+
it('sets a box note when a box closes the document', () => {
|
|
183
|
+
const md = [filler(1), ':::callout', 'Última.[^fin]', ':::', '[^fin]: Nota final.'].join('\n\n');
|
|
184
|
+
expect(notes(build(md)).map((n) => n.footnoteNote)).toEqual(['fin']);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
describe('chapterEnd alignment', () => {
|
|
188
|
+
const md = [`${filler(2)} Cita.[^a]`, '[^a]: Nota al final.', filler(1)].join('\n\n');
|
|
189
|
+
const foot = (doc) => doc.pages[0].contentArea.y + doc.pages[0].contentArea.height;
|
|
190
|
+
it('sets the chapter\'s notes at the foot of the column by default, under a rule', () => {
|
|
191
|
+
const doc = build(md, { ...TWO_COL, footnotes: { placement: 'chapterEnd' } });
|
|
192
|
+
const n = notes(doc)[0];
|
|
193
|
+
const line = n.lines.at(-1);
|
|
194
|
+
expect(Math.abs(line.bbox.y + line.bbox.height - foot(doc))).toBeLessThan(1);
|
|
195
|
+
expect(doc.pages[n.pageIndex].footnoteAreas?.[0]?.rule).toBeDefined();
|
|
196
|
+
});
|
|
197
|
+
it('keeps them under the text with chapterEndAlign: text', () => {
|
|
198
|
+
const doc = build(md, { ...TWO_COL, footnotes: { placement: 'chapterEnd', chapterEndAlign: 'text' } });
|
|
199
|
+
const line = notes(doc)[0].lines.at(-1);
|
|
200
|
+
expect(line.bbox.y + line.bbox.height).toBeLessThan(foot(doc) - 20);
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
//# sourceMappingURL=footnotes.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footnotes.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/footnotes.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,12 @@ export declare function renderBaselineGrid(ctx: CanvasRenderingContext2D, conten
|
|
|
3
3
|
top: number;
|
|
4
4
|
bottom: number;
|
|
5
5
|
}): void;
|
|
6
|
-
export declare function renderColumnRule(ctx: CanvasRenderingContext2D, columns: VDTColumn[], color: string, lineWidth: number): void;
|
|
6
|
+
export declare function renderColumnRule(ctx: CanvasRenderingContext2D, columns: VDTColumn[], color: string, lineWidth: number, footnoteAreas?: VDTPage['footnoteAreas']): void;
|
|
7
7
|
export declare function renderCutLines(ctx: CanvasRenderingContext2D, page: VDTPage, doc: VDTDocument): void;
|
|
8
8
|
/** The page's content area. Pages built by the pipeline carry it directly
|
|
9
9
|
* (`page.contentArea` — per page, so mirrored margins are honoured); the
|
|
10
10
|
* column-bbox inference below only serves hand-built pages. */
|
|
11
11
|
export declare function computeContentArea(page: VDTPage, doc: VDTDocument): BoundingBox;
|
|
12
|
+
/** The separator rules above the footnotes of a page's columns. */
|
|
13
|
+
export declare function renderFootnoteRules(ctx: CanvasRenderingContext2D, page: VDTPage): void;
|
|
12
14
|
//# sourceMappingURL=decorations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorations.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/decorations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAK3E,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,wBAAwB,EAC7B,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,MAAM,EACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C,IAAI,CA4BN;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,SAAS,EAAE,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"decorations.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/decorations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAK3E,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,wBAAwB,EAC7B,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,MAAM,EACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C,IAAI,CA4BN;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,SAAS,EAAE,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACvC,IAAI,CAoBN;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,WAAW,GACf,IAAI,CAiBN;AAED;;gEAEgE;AAChE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAuB/E;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAatF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { dimensionToPx } from '../units';
|
|
2
|
-
import { columnRuleSegments } from '../columnRule';
|
|
2
|
+
import { columnRuleSegments, footnoteRuleSegments } from '../columnRule';
|
|
3
3
|
import { cropMarkSegments } from '../cropMarks';
|
|
4
4
|
export function renderBaselineGrid(ctx, contentArea, baselineIncrement, color, lineWidth, textExtent) {
|
|
5
5
|
ctx.save();
|
|
@@ -27,12 +27,12 @@ export function renderBaselineGrid(ctx, contentArea, baselineIncrement, color, l
|
|
|
27
27
|
}
|
|
28
28
|
ctx.restore();
|
|
29
29
|
}
|
|
30
|
-
export function renderColumnRule(ctx, columns, color, lineWidth) {
|
|
30
|
+
export function renderColumnRule(ctx, columns, color, lineWidth, footnoteAreas) {
|
|
31
31
|
if (columns.length < 2)
|
|
32
32
|
return;
|
|
33
33
|
// One segment per gutter of each column band; span columns interrupt the
|
|
34
34
|
// rule (see `columnRuleSegments`).
|
|
35
|
-
const segments = columnRuleSegments(columns);
|
|
35
|
+
const segments = columnRuleSegments(columns, footnoteAreas);
|
|
36
36
|
if (segments.length === 0)
|
|
37
37
|
return;
|
|
38
38
|
ctx.save();
|
|
@@ -87,4 +87,20 @@ export function computeContentArea(page, doc) {
|
|
|
87
87
|
}
|
|
88
88
|
return { x: marginLeft, y: marginTop, width: 0, height: 0 };
|
|
89
89
|
}
|
|
90
|
+
/** The separator rules above the footnotes of a page's columns. */
|
|
91
|
+
export function renderFootnoteRules(ctx, page) {
|
|
92
|
+
const rules = footnoteRuleSegments(page);
|
|
93
|
+
if (rules.length === 0)
|
|
94
|
+
return;
|
|
95
|
+
ctx.save();
|
|
96
|
+
for (const r of rules) {
|
|
97
|
+
ctx.strokeStyle = r.color;
|
|
98
|
+
ctx.lineWidth = r.lineWidthPx;
|
|
99
|
+
ctx.beginPath();
|
|
100
|
+
ctx.moveTo(r.x, r.y);
|
|
101
|
+
ctx.lineTo(r.x + r.width, r.y);
|
|
102
|
+
ctx.stroke();
|
|
103
|
+
}
|
|
104
|
+
ctx.restore();
|
|
105
|
+
}
|
|
90
106
|
//# sourceMappingURL=decorations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorations.js","sourceRoot":"","sources":["../../src/canvas-backend/decorations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"decorations.js","sourceRoot":"","sources":["../../src/canvas-backend/decorations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAUlE,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAE/F,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;gEAG4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;6CAGyC;IACzC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C;;;;;;;+DAO2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAsBN;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canvas-backend/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAUlE,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAE/F,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;gEAG4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;6CAGyC;IACzC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C;;;;;;;+DAO2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAsBN;AAmID,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAI1G;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAejG"}
|
|
@@ -2,7 +2,7 @@ import { computePageTextExtent } from '../vdt';
|
|
|
2
2
|
import { dimensionToPx } from '../units';
|
|
3
3
|
import { columnClipRect } from '../columnClip';
|
|
4
4
|
import { pageColumnRule } from '../columnRule';
|
|
5
|
-
import { renderBaselineGrid, renderColumnRule, renderCutLines, computeContentArea } from './decorations';
|
|
5
|
+
import { renderBaselineGrid, renderColumnRule, renderCutLines, renderFootnoteRules, computeContentArea } from './decorations';
|
|
6
6
|
import { renderBlock } from './blockRender';
|
|
7
7
|
import { renderHeaderFooterSlot } from './headerFooter';
|
|
8
8
|
import { documentInkHex } from '../svg/singleInk';
|
|
@@ -91,7 +91,7 @@ function paintPage(page, doc, canvas, options) {
|
|
|
91
91
|
// The page's own rule on a styled section's pages, else the document's.
|
|
92
92
|
const columnRule = pageColumnRule(page, doc);
|
|
93
93
|
if (columnRule.enabled && page.columns.length > 1) {
|
|
94
|
-
renderColumnRule(ctx, page.columns, columnRule.color, columnRule.lineWidthPx);
|
|
94
|
+
renderColumnRule(ctx, page.columns, columnRule.color, columnRule.lineWidthPx, page.footnoteAreas);
|
|
95
95
|
}
|
|
96
96
|
// Opener / part bands are painted before the columns so their backgrounds
|
|
97
97
|
// sit under the body text rather than over it.
|
|
@@ -127,6 +127,7 @@ function paintPage(page, doc, canvas, options) {
|
|
|
127
127
|
for (const fb of page.floats)
|
|
128
128
|
renderBlock(ctx, fb, fb.bbox.width, fb.bbox.x, inkHex);
|
|
129
129
|
}
|
|
130
|
+
renderFootnoteRules(ctx, page);
|
|
130
131
|
if (page.header)
|
|
131
132
|
renderHeaderFooterSlot(ctx, page.header, inkHex);
|
|
132
133
|
if (page.footer)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/canvas-backend/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/canvas-backend/index.ts"],"names":[],"mappings":"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"}
|
package/dist/columnRule.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { VDTColumn, VDTColumnRule, VDTDocument, VDTPage } from './vdt';
|
|
1
|
+
import type { VDTColumn, VDTColumnRule, VDTDocument, VDTFootnoteArea, VDTPage } from './vdt';
|
|
2
2
|
/** The column rule `page` draws: its own (a styled section's, see
|
|
3
3
|
* `VDTPage.columnRule`), else the document's `layout.columnRule`. Shared
|
|
4
4
|
* by the canvas and PDF backends. */
|
|
@@ -20,5 +20,19 @@ export interface ColumnRuleSegment {
|
|
|
20
20
|
* band it starts where the text does. Bands are visited in column order,
|
|
21
21
|
* which is band order because bands are always appended.
|
|
22
22
|
*/
|
|
23
|
-
export declare function columnRuleSegments(columns: readonly VDTColumn[]
|
|
23
|
+
export declare function columnRuleSegments(columns: readonly VDTColumn[],
|
|
24
|
+
/** The page's footnote areas: the rule runs on beside the notes set at a
|
|
25
|
+
* column's foot (which the column's box no longer covers). */
|
|
26
|
+
footnoteAreas?: readonly VDTFootnoteArea[]): ColumnRuleSegment[];
|
|
27
|
+
/** A horizontal footnote separator rule: its left end, the y of its centre
|
|
28
|
+
* line, length, thickness (px) and colour. */
|
|
29
|
+
export interface FootnoteRuleSegment {
|
|
30
|
+
x: number;
|
|
31
|
+
y: number;
|
|
32
|
+
width: number;
|
|
33
|
+
lineWidthPx: number;
|
|
34
|
+
color: string;
|
|
35
|
+
}
|
|
36
|
+
/** The footnote separator rules of a page (one per column holding notes). */
|
|
37
|
+
export declare function footnoteRuleSegments(page: Pick<VDTPage, 'footnoteAreas'>): FootnoteRuleSegment[];
|
|
24
38
|
//# sourceMappingURL=columnRule.d.ts.map
|
package/dist/columnRule.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnRule.d.ts","sourceRoot":"","sources":["../src/columnRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"columnRule.d.ts","sourceRoot":"","sources":["../src/columnRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG7F;;sCAEsC;AACtC,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,aAAa,CAIjH;AAED,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAgBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,SAAS,EAAE;AAC7B;+DAC+D;AAC/D,aAAa,CAAC,EAAE,SAAS,eAAe,EAAE,GACzC,iBAAiB,EAAE,CAgCrB;AAED;+CAC+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,mBAAmB,EAAE,CAIhG"}
|
package/dist/columnRule.js
CHANGED
|
@@ -32,7 +32,18 @@ function ruleTop(col) {
|
|
|
32
32
|
* band it starts where the text does. Bands are visited in column order,
|
|
33
33
|
* which is band order because bands are always appended.
|
|
34
34
|
*/
|
|
35
|
-
export function columnRuleSegments(columns
|
|
35
|
+
export function columnRuleSegments(columns,
|
|
36
|
+
/** The page's footnote areas: the rule runs on beside the notes set at a
|
|
37
|
+
* column's foot (which the column's box no longer covers). */
|
|
38
|
+
footnoteAreas) {
|
|
39
|
+
const footOf = (col) => {
|
|
40
|
+
let bottom = col.bbox.y + col.bbox.height;
|
|
41
|
+
for (const a of footnoteAreas ?? []) {
|
|
42
|
+
if (a.columnIndex === col.index)
|
|
43
|
+
bottom = Math.max(bottom, a.bbox.y + a.bbox.height);
|
|
44
|
+
}
|
|
45
|
+
return bottom;
|
|
46
|
+
};
|
|
36
47
|
const byBand = new Map();
|
|
37
48
|
for (const col of columns) {
|
|
38
49
|
if (col.kind === 'span' || col.bbox.height <= 0.5)
|
|
@@ -55,10 +66,18 @@ export function columnRuleSegments(columns) {
|
|
|
55
66
|
segments.push({
|
|
56
67
|
x: (left.x + left.width + right.x) / 2,
|
|
57
68
|
top: Math.min(ruleTop(cols[i]), ruleTop(cols[i + 1])),
|
|
58
|
-
bottom: Math.max(
|
|
69
|
+
bottom: Math.max(footOf(cols[i]), footOf(cols[i + 1])),
|
|
59
70
|
});
|
|
60
71
|
}
|
|
61
72
|
}
|
|
62
73
|
return segments;
|
|
63
74
|
}
|
|
75
|
+
/** The footnote separator rules of a page (one per column holding notes). */
|
|
76
|
+
export function footnoteRuleSegments(page) {
|
|
77
|
+
const out = [];
|
|
78
|
+
for (const area of page.footnoteAreas ?? [])
|
|
79
|
+
if (area.rule)
|
|
80
|
+
out.push(area.rule);
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
64
83
|
//# sourceMappingURL=columnRule.js.map
|
package/dist/columnRule.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnRule.js","sourceRoot":"","sources":["../src/columnRule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;sCAEsC;AACtC,MAAM,UAAU,cAAc,CAAC,IAAiC,EAAE,GAAgC;IAChG,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;IAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3H,CAAC;AAUD;;;;2DAI2D;AAC3D,SAAS,OAAO,CAAC,GAAc;IAC7B,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACrB,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,MAAM;QACrD,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,
|
|
1
|
+
{"version":3,"file":"columnRule.js","sourceRoot":"","sources":["../src/columnRule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FootnotesConfig, ResolvedFootnotesConfig } from '../types';
|
|
2
|
+
export declare const DEFAULT_FOOTNOTES_CONFIG: ResolvedFootnotesConfig;
|
|
3
|
+
export declare function resolveFootnotesConfig(partial?: FootnotesConfig): ResolvedFootnotesConfig;
|
|
4
|
+
export declare function stripFootnotesDefaults(footnotes?: FootnotesConfig): FootnotesConfig | undefined;
|
|
5
|
+
//# sourceMappingURL=footnotes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footnotes.d.ts","sourceRoot":"","sources":["../../src/defaults/footnotes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGzE,eAAO,MAAM,wBAAwB,EAAE,uBAetC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,uBAAuB,CAwBzF;AAED,wBAAgB,sBAAsB,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,eAAe,GAAG,SAAS,CAyB/F"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { dimensionsEqual, colorsEqual } from './shared';
|
|
2
|
+
export const DEFAULT_FOOTNOTES_CONFIG = {
|
|
3
|
+
placement: 'column',
|
|
4
|
+
numbering: 'chapter',
|
|
5
|
+
chapterEndAlign: 'foot',
|
|
6
|
+
fontSize: { value: 0.8, unit: 'em' },
|
|
7
|
+
lineHeight: { value: 1.25, unit: 'em' },
|
|
8
|
+
hangingIndent: { value: 0, unit: 'em' },
|
|
9
|
+
spaceBetween: { value: 0, unit: 'em' },
|
|
10
|
+
spaceAbove: { value: 0.5, unit: 'em' },
|
|
11
|
+
spaceBelowRule: { value: 0.4, unit: 'em' },
|
|
12
|
+
separator: {
|
|
13
|
+
enabled: true,
|
|
14
|
+
width: 0.3,
|
|
15
|
+
lineWidth: { value: 0.5, unit: 'pt' },
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
export function resolveFootnotesConfig(partial) {
|
|
19
|
+
const d = DEFAULT_FOOTNOTES_CONFIG;
|
|
20
|
+
if (!partial)
|
|
21
|
+
return { ...d, separator: { ...d.separator } };
|
|
22
|
+
const sep = partial.separator;
|
|
23
|
+
const width = sep?.width;
|
|
24
|
+
return {
|
|
25
|
+
placement: partial.placement === 'chapterEnd' ? 'chapterEnd' : 'column',
|
|
26
|
+
numbering: partial.numbering === 'document' ? 'document' : 'chapter',
|
|
27
|
+
chapterEndAlign: partial.chapterEndAlign === 'text' ? 'text' : 'foot',
|
|
28
|
+
fontSize: partial.fontSize ?? d.fontSize,
|
|
29
|
+
lineHeight: partial.lineHeight ?? d.lineHeight,
|
|
30
|
+
...(partial.color ? { color: partial.color } : {}),
|
|
31
|
+
...(partial.textAlign ? { textAlign: partial.textAlign } : {}),
|
|
32
|
+
hangingIndent: partial.hangingIndent ?? d.hangingIndent,
|
|
33
|
+
spaceBetween: partial.spaceBetween ?? d.spaceBetween,
|
|
34
|
+
spaceAbove: partial.spaceAbove ?? d.spaceAbove,
|
|
35
|
+
spaceBelowRule: partial.spaceBelowRule ?? d.spaceBelowRule,
|
|
36
|
+
separator: {
|
|
37
|
+
enabled: sep?.enabled ?? d.separator.enabled,
|
|
38
|
+
width: typeof width === 'number' && Number.isFinite(width) ? Math.min(1, Math.max(0, width)) : d.separator.width,
|
|
39
|
+
lineWidth: sep?.lineWidth ?? d.separator.lineWidth,
|
|
40
|
+
...(sep?.color ? { color: sep.color } : {}),
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function stripFootnotesDefaults(footnotes) {
|
|
45
|
+
if (!footnotes)
|
|
46
|
+
return undefined;
|
|
47
|
+
const d = DEFAULT_FOOTNOTES_CONFIG;
|
|
48
|
+
const result = {};
|
|
49
|
+
if (footnotes.placement !== undefined && footnotes.placement !== d.placement)
|
|
50
|
+
result.placement = footnotes.placement;
|
|
51
|
+
if (footnotes.numbering !== undefined && footnotes.numbering !== d.numbering)
|
|
52
|
+
result.numbering = footnotes.numbering;
|
|
53
|
+
if (footnotes.chapterEndAlign !== undefined && footnotes.chapterEndAlign !== d.chapterEndAlign)
|
|
54
|
+
result.chapterEndAlign = footnotes.chapterEndAlign;
|
|
55
|
+
if (footnotes.fontSize && !dimensionsEqual(footnotes.fontSize, d.fontSize))
|
|
56
|
+
result.fontSize = footnotes.fontSize;
|
|
57
|
+
if (footnotes.lineHeight && !dimensionsEqual(footnotes.lineHeight, d.lineHeight))
|
|
58
|
+
result.lineHeight = footnotes.lineHeight;
|
|
59
|
+
if (footnotes.color)
|
|
60
|
+
result.color = footnotes.color;
|
|
61
|
+
if (footnotes.textAlign)
|
|
62
|
+
result.textAlign = footnotes.textAlign;
|
|
63
|
+
if (footnotes.hangingIndent && !dimensionsEqual(footnotes.hangingIndent, d.hangingIndent))
|
|
64
|
+
result.hangingIndent = footnotes.hangingIndent;
|
|
65
|
+
if (footnotes.spaceBetween && !dimensionsEqual(footnotes.spaceBetween, d.spaceBetween))
|
|
66
|
+
result.spaceBetween = footnotes.spaceBetween;
|
|
67
|
+
if (footnotes.spaceAbove && !dimensionsEqual(footnotes.spaceAbove, d.spaceAbove))
|
|
68
|
+
result.spaceAbove = footnotes.spaceAbove;
|
|
69
|
+
if (footnotes.spaceBelowRule && !dimensionsEqual(footnotes.spaceBelowRule, d.spaceBelowRule))
|
|
70
|
+
result.spaceBelowRule = footnotes.spaceBelowRule;
|
|
71
|
+
const sep = footnotes.separator;
|
|
72
|
+
if (sep) {
|
|
73
|
+
const s = {};
|
|
74
|
+
if (sep.enabled !== undefined && sep.enabled !== d.separator.enabled)
|
|
75
|
+
s.enabled = sep.enabled;
|
|
76
|
+
if (sep.width !== undefined && sep.width !== d.separator.width)
|
|
77
|
+
s.width = sep.width;
|
|
78
|
+
if (sep.lineWidth && !dimensionsEqual(sep.lineWidth, d.separator.lineWidth))
|
|
79
|
+
s.lineWidth = sep.lineWidth;
|
|
80
|
+
if (sep.color && !(d.separator.color && colorsEqual(sep.color, d.separator.color)))
|
|
81
|
+
s.color = sep.color;
|
|
82
|
+
if (Object.keys(s).length > 0)
|
|
83
|
+
result.separator = s;
|
|
84
|
+
}
|
|
85
|
+
return Object.keys(result).length > 0 ? result : undefined;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=footnotes.js.map
|