postext 1.6.1 → 1.7.1

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.
Files changed (71) hide show
  1. package/dist/__tests__/exports.test.js +6 -0
  2. package/dist/__tests__/exports.test.js.map +1 -1
  3. package/dist/__tests__/indexDirective.test.d.ts +2 -0
  4. package/dist/__tests__/indexDirective.test.d.ts.map +1 -0
  5. package/dist/__tests__/indexDirective.test.js +302 -0
  6. package/dist/__tests__/indexDirective.test.js.map +1 -0
  7. package/dist/__tests__/parse/containers.test.js +1 -1
  8. package/dist/__tests__/parse/containers.test.js.map +1 -1
  9. package/dist/bundle/book.d.ts.map +1 -1
  10. package/dist/bundle/book.js +6 -1
  11. package/dist/bundle/book.js.map +1 -1
  12. package/dist/defaults/index.d.ts +1 -0
  13. package/dist/defaults/index.d.ts.map +1 -1
  14. package/dist/defaults/index.js +9 -0
  15. package/dist/defaults/index.js.map +1 -1
  16. package/dist/defaults/indexConfig.d.ts +29 -0
  17. package/dist/defaults/indexConfig.d.ts.map +1 -0
  18. package/dist/defaults/indexConfig.js +120 -0
  19. package/dist/defaults/indexConfig.js.map +1 -0
  20. package/dist/index.d.ts +4 -4
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +2 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/parse/blockParser.d.ts +4 -1
  25. package/dist/parse/blockParser.d.ts.map +1 -1
  26. package/dist/parse/blockParser.js +15 -2
  27. package/dist/parse/blockParser.js.map +1 -1
  28. package/dist/parse/index.d.ts +2 -1
  29. package/dist/parse/index.d.ts.map +1 -1
  30. package/dist/parse/index.js +1 -0
  31. package/dist/parse/index.js.map +1 -1
  32. package/dist/parse/indexMarks.d.ts +44 -0
  33. package/dist/parse/indexMarks.d.ts.map +1 -0
  34. package/dist/parse/indexMarks.js +231 -0
  35. package/dist/parse/indexMarks.js.map +1 -0
  36. package/dist/parse/types.d.ts +54 -1
  37. package/dist/parse/types.d.ts.map +1 -1
  38. package/dist/pipeline/build.d.ts.map +1 -1
  39. package/dist/pipeline/build.js +30 -11
  40. package/dist/pipeline/build.js.map +1 -1
  41. package/dist/pipeline/config.d.ts.map +1 -1
  42. package/dist/pipeline/config.js +2 -1
  43. package/dist/pipeline/config.js.map +1 -1
  44. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  45. package/dist/pipeline/contentWarnings.js +14 -0
  46. package/dist/pipeline/contentWarnings.js.map +1 -1
  47. package/dist/pipeline/continuation.d.ts +1 -0
  48. package/dist/pipeline/continuation.d.ts.map +1 -1
  49. package/dist/pipeline/continuation.js +9 -2
  50. package/dist/pipeline/continuation.js.map +1 -1
  51. package/dist/pipeline/index.d.ts +1 -1
  52. package/dist/pipeline/index.d.ts.map +1 -1
  53. package/dist/pipeline/index.js +1 -1
  54. package/dist/pipeline/index.js.map +1 -1
  55. package/dist/pipeline/indexDirective.d.ts +43 -0
  56. package/dist/pipeline/indexDirective.d.ts.map +1 -0
  57. package/dist/pipeline/indexDirective.js +500 -0
  58. package/dist/pipeline/indexDirective.js.map +1 -0
  59. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  60. package/dist/pipeline/measureContentBlock.js +4 -0
  61. package/dist/pipeline/measureContentBlock.js.map +1 -1
  62. package/dist/pipeline/outline.d.ts +6 -0
  63. package/dist/pipeline/outline.d.ts.map +1 -1
  64. package/dist/pipeline/outline.js +55 -0
  65. package/dist/pipeline/outline.js.map +1 -1
  66. package/dist/types.d.ts +138 -8
  67. package/dist/types.d.ts.map +1 -1
  68. package/dist/vdt.d.ts +36 -1
  69. package/dist/vdt.d.ts.map +1 -1
  70. package/dist/vdt.js.map +1 -1
  71. package/package.json +1 -1
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Index marks (`:index[…]` and `:index{…}`, #165): the terms a back-of-book
3
+ * index lists. The marks are taken out of the markdown before the block
4
+ * parser runs — an invisible mark leaves nothing, a visible one leaves its
5
+ * text — so they never change the spans, the line breaks or the layout;
6
+ * the parse result's source offsets are mapped back to the original
7
+ * markdown. Each mark keeps the source offset of the character it is
8
+ * attached to (`anchor`): the build finds the page of the laid-out line
9
+ * holding that character.
10
+ */
11
+ import { parseDirectiveAttrs } from './attrs';
12
+ import { stripInlineFormatting } from './inlineFormatting';
13
+ /** `:index[text]{attrs}`, `:index[text]` or `:index{attrs}`: not after a
14
+ * colon (the `:::index` directive) or a backslash (an escaped mark). The
15
+ * text is one line and takes `\]` for a literal bracket. */
16
+ const INDEX_MARK_RE = /(?<![:\\]):index(?:\[((?:\\.|[^\]\\\n])*)\])?(?:\{([^}\n]*)\})?/g;
17
+ /** Inline code on one line: its marks stay literal. */
18
+ const CODE_SPAN_RE = /`[^`\n]+`/g;
19
+ const isBlank = (c) => c === ' ' || c === '\t' || c === '\r';
20
+ /** The levels of a term: `Heart!valves` → `['Heart', 'valves']`. */
21
+ function termLevels(value) {
22
+ if (value === undefined)
23
+ return [];
24
+ return value.split('!').map((s) => s.replace(/\s+/g, ' ').trim()).filter((s) => s.length > 0);
25
+ }
26
+ /** The printed term of a visible mark: its text without inline marks. */
27
+ function plainText(text) {
28
+ return stripInlineFormatting(text.replace(/\\([[\]])/g, '$1')).replace(/\s+/g, ' ').trim();
29
+ }
30
+ function markFrom(attrsRaw, visible, sourceStart, sourceEnd) {
31
+ const attrs = attrsRaw !== undefined ? parseDirectiveAttrs(attrsRaw) : {};
32
+ let path = termLevels(attrs.term);
33
+ if (path.length === 0 && visible !== undefined) {
34
+ const plain = plainText(visible);
35
+ if (plain.length > 0)
36
+ path = [plain];
37
+ }
38
+ path = [...path, ...termLevels(attrs.sub)];
39
+ const main = attrs.main !== undefined && attrs.main !== 'false';
40
+ const range = attrs.range === 'start' || attrs.range === 'end' ? attrs.range : undefined;
41
+ const sort = attrs.sort?.trim();
42
+ const see = attrs.see?.trim();
43
+ const seeAlso = attrs.seealso?.trim();
44
+ return {
45
+ index: attrs.index?.trim() ?? '',
46
+ path,
47
+ ...(sort ? { sort } : {}),
48
+ ...(see ? { see } : {}),
49
+ ...(seeAlso ? { seeAlso } : {}),
50
+ ...(main ? { main: true } : {}),
51
+ ...(range ? { range } : {}),
52
+ sourceStart,
53
+ sourceEnd,
54
+ anchor: -1,
55
+ attach: 'after',
56
+ };
57
+ }
58
+ /**
59
+ * The markdown with its index marks taken out, or null when it holds none.
60
+ * A line left blank by its marks alone is removed with its line end, so a
61
+ * mark on a line of its own never splits a paragraph.
62
+ */
63
+ export function extractIndexMarks(markdown) {
64
+ if (!markdown.includes(':index'))
65
+ return null;
66
+ const pending = [];
67
+ const removals = [];
68
+ let out = '';
69
+ let lineStart = 0;
70
+ while (lineStart <= markdown.length) {
71
+ const nl = markdown.indexOf('\n', lineStart);
72
+ const lineEnd = nl === -1 ? markdown.length : nl;
73
+ const line = markdown.slice(lineStart, lineEnd);
74
+ if (!line.includes(':index')) {
75
+ out += line;
76
+ if (nl !== -1)
77
+ out += '\n';
78
+ lineStart = lineEnd + 1;
79
+ if (nl === -1)
80
+ break;
81
+ continue;
82
+ }
83
+ const code = [];
84
+ CODE_SPAN_RE.lastIndex = 0;
85
+ for (let m = CODE_SPAN_RE.exec(line); m; m = CODE_SPAN_RE.exec(line))
86
+ code.push([m.index, m.index + m[0].length]);
87
+ const lineOut = out.length;
88
+ const lineRemovals = [];
89
+ const linePending = [];
90
+ let kept = '';
91
+ let last = 0;
92
+ INDEX_MARK_RE.lastIndex = 0;
93
+ for (let m = INDEX_MARK_RE.exec(line); m; m = INDEX_MARK_RE.exec(line)) {
94
+ const [whole, visible, attrs] = m;
95
+ if (visible === undefined && attrs === undefined)
96
+ continue;
97
+ if (code.some(([s, e]) => m.index >= s && m.index < e))
98
+ continue;
99
+ kept += line.slice(last, m.index);
100
+ const start = lineStart + m.index;
101
+ const mark = markFrom(attrs, visible, start, start + whole.length);
102
+ if (visible !== undefined && visible.length > 0) {
103
+ // `:index[` goes, the text stays, `]{…}` goes.
104
+ const open = ':index['.length;
105
+ lineRemovals.push({ at: lineOut + kept.length, length: open });
106
+ const textStart = lineOut + kept.length;
107
+ kept += visible;
108
+ lineRemovals.push({ at: lineOut + kept.length, length: whole.length - open - visible.length });
109
+ linePending.push({ mark, at: textStart, textStart });
110
+ }
111
+ else {
112
+ lineRemovals.push({ at: lineOut + kept.length, length: whole.length });
113
+ linePending.push({ mark, at: lineOut + kept.length });
114
+ }
115
+ last = m.index + whole.length;
116
+ }
117
+ kept += line.slice(last);
118
+ if (linePending.length > 0 && kept.trim().length === 0 && line.trim().length > 0) {
119
+ // The line held marks alone: it goes, with its line end.
120
+ removals.push({ at: lineOut, length: line.length + (nl !== -1 ? 1 : 0) });
121
+ for (const p of linePending)
122
+ pending.push({ mark: p.mark, at: lineOut });
123
+ }
124
+ else {
125
+ out += kept;
126
+ if (nl !== -1)
127
+ out += '\n';
128
+ removals.push(...lineRemovals);
129
+ pending.push(...linePending);
130
+ }
131
+ if (nl === -1)
132
+ break;
133
+ lineStart = lineEnd + 1;
134
+ }
135
+ if (pending.length === 0)
136
+ return null;
137
+ // Cumulative removed length at each removal, for the offset map.
138
+ const at = [];
139
+ const cumulative = [];
140
+ let total = 0;
141
+ for (const r of removals) {
142
+ total += r.length;
143
+ at.push(r.at);
144
+ cumulative.push(total);
145
+ }
146
+ const toOriginal = (offset) => {
147
+ // Removals at or before `offset` (the removed text sat before it).
148
+ let lo = 0;
149
+ let hi = at.length;
150
+ while (lo < hi) {
151
+ const mid = (lo + hi) >> 1;
152
+ if (at[mid] <= offset)
153
+ lo = mid + 1;
154
+ else
155
+ hi = mid;
156
+ }
157
+ return offset + (lo > 0 ? cumulative[lo - 1] : 0);
158
+ };
159
+ /** Offset in the original of the stripped character at `i` (it sits
160
+ * after the text removed right before it). */
161
+ const charOriginal = toOriginal;
162
+ const text = out;
163
+ for (const p of pending) {
164
+ const { mark } = p;
165
+ if (p.textStart !== undefined) {
166
+ mark.anchor = charOriginal(p.textStart);
167
+ mark.attach = 'after';
168
+ continue;
169
+ }
170
+ // An invisible mark belongs to the text before it on its line, else to
171
+ // the text after it.
172
+ let j = p.at - 1;
173
+ while (j >= 0 && isBlank(text[j]))
174
+ j--;
175
+ if (j >= 0 && text[j] !== '\n') {
176
+ mark.anchor = charOriginal(j);
177
+ mark.attach = 'before';
178
+ continue;
179
+ }
180
+ let k = p.at;
181
+ while (k < text.length && (isBlank(text[k]) || text[k] === '\n'))
182
+ k++;
183
+ if (k < text.length) {
184
+ mark.anchor = charOriginal(k);
185
+ mark.attach = 'after';
186
+ }
187
+ }
188
+ return { text, marks: pending.map((p) => ({ mark: p.mark, at: p.at })), toOriginal };
189
+ }
190
+ /** Blocks a mark can belong to: the ones that set text. */
191
+ const TEXT_BLOCKS = new Set(['heading', 'paragraph', 'blockquote', 'listItem']);
192
+ /**
193
+ * Attach the extracted marks to the blocks parsed from the stripped text
194
+ * (offsets still in stripped coordinates): the text block holding the
195
+ * mark's position, else the next one, else the last one.
196
+ */
197
+ export function attachIndexMarks(blocks, marks) {
198
+ const text = blocks.filter((b) => TEXT_BLOCKS.has(b.type));
199
+ if (text.length === 0)
200
+ return;
201
+ for (const { mark, at } of marks) {
202
+ let owner = text.find((b) => at >= b.sourceStart && at <= b.sourceEnd);
203
+ owner ??= text.find((b) => b.sourceStart > at) ?? text[text.length - 1];
204
+ (owner.indexMarks ??= []).push(mark);
205
+ }
206
+ }
207
+ /** Map every source offset of a parse result from the stripped text back
208
+ * to the original markdown. */
209
+ export function remapParseOffsets(result, toOriginal) {
210
+ for (const b of result.blocks) {
211
+ b.sourceStart = toOriginal(b.sourceStart);
212
+ b.sourceEnd = toOriginal(b.sourceEnd);
213
+ for (let i = 0; i < b.sourceMap.length; i++)
214
+ b.sourceMap[i] = toOriginal(b.sourceMap[i]);
215
+ if (b.attrSources) {
216
+ for (const r of Object.values(b.attrSources)) {
217
+ r.start = toOriginal(r.start);
218
+ r.end = toOriginal(r.end);
219
+ }
220
+ }
221
+ for (const s of b.spans) {
222
+ if (s.math)
223
+ s.math = { ...s.math, sourceStart: toOriginal(s.math.sourceStart), sourceEnd: toOriginal(s.math.sourceEnd) };
224
+ }
225
+ }
226
+ for (const issue of result.issues) {
227
+ issue.sourceStart = toOriginal(issue.sourceStart);
228
+ issue.sourceEnd = toOriginal(issue.sourceEnd);
229
+ }
230
+ }
231
+ //# sourceMappingURL=indexMarks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexMarks.js","sourceRoot":"","sources":["../../src/parse/indexMarks.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export type ContentBlockType = 'heading' | 'paragraph' | 'blockquote' | 'listIte
5
5
  export type DirectiveAttrs = Record<string, string>;
6
6
  /** Recognized directive names. Unknown names are not parsed as directives —
7
7
  * they fall through to the paragraph branch and surface via warnings. */
8
- export type DirectiveName = 'pagebreak' | 'numbering' | 'columnbreak' | 'space' | 'toc';
8
+ export type DirectiveName = 'pagebreak' | 'numbering' | 'columnbreak' | 'space' | 'toc' | 'index';
9
9
  /** Recognized fenced-container names. A container opens with a
10
10
  * `:::name{attrs}` line and closes with a bare `:::` line; the blocks in
11
11
  * between are parsed as usual and bracketed by a `containerStart` /
@@ -187,6 +187,54 @@ export interface TocBlockInfo {
187
187
  title?: string;
188
188
  palette?: Record<string, string>;
189
189
  }
190
+ /** An index mark (`:index[text]{…}` / `:index{…}`, #165): one term the
191
+ * back-of-book index lists, at the place it was marked. */
192
+ export interface IndexMark {
193
+ /** Name of the index (`index="names"`); `''` for the main index. */
194
+ index: string;
195
+ /** The entry's levels, main term first (`term="Heart!valves"`). Empty
196
+ * for a mark without a term (it indexes nothing). */
197
+ path: string[];
198
+ /** Sort key of the last level (`sort="…"`), when it differs from it. */
199
+ sort?: string;
200
+ /** Cross-references: the entry prints *See* / *See also* the target
201
+ * instead of a page number for this mark. */
202
+ see?: string;
203
+ seeAlso?: string;
204
+ /** The principal reference (`main`): its page number is set bold. */
205
+ main?: boolean;
206
+ /** Opens or closes a page range (`range="start"` / `range="end"`). */
207
+ range?: 'start' | 'end';
208
+ /** Source range of the whole mark in the original markdown. */
209
+ sourceStart: number;
210
+ sourceEnd: number;
211
+ /** Source offset of the character the mark is attached to — the last
212
+ * one before it on its line (`attach: 'before'`), else the first one
213
+ * after it; `-1` when there is none. The mark lands on that character's
214
+ * page. */
215
+ anchor: number;
216
+ attach: 'before' | 'after';
217
+ }
218
+ /** What one block of an expanded `:::index` prints: an entry (a term with
219
+ * its page numbers), under the letter head of its group when it opens
220
+ * one. */
221
+ export interface IndexBlockInfo {
222
+ /** Entry depth (0 = main entry). */
223
+ level: number;
224
+ /** The entry opens a group of the index (a new first letter) other than
225
+ * the first: the space above groups applies. */
226
+ groupStart?: boolean;
227
+ /** The letter head printed above the entry, in the same block so it
228
+ * never ends a column alone. */
229
+ group?: string;
230
+ /** Entries with no page of their own that head this one (a main entry
231
+ * and its sub-entry above a sub-sub-entry), printed above it in the
232
+ * same block for the same reason, outermost first. */
233
+ leads?: {
234
+ level: number;
235
+ spans: InlineSpan[];
236
+ }[];
237
+ }
190
238
  export interface ContentBlock {
191
239
  type: ContentBlockType;
192
240
  text: string;
@@ -237,6 +285,11 @@ export interface ContentBlock {
237
285
  * `'paragraph'` and its text the entry title, so it flows and maps back
238
286
  * to the directive line like ordinary content. */
239
287
  toc?: TocBlockInfo;
288
+ /** Present on the blocks a `:::index` directive expands into (see
289
+ * `pipeline/indexDirective.ts`). */
290
+ index?: IndexBlockInfo;
291
+ /** The index marks set in this block's text, in source order. */
292
+ indexMarks?: IndexMark[];
240
293
  /** For `resourceBlock` blocks: the referenced `Resource.id`. */
241
294
  resourceId?: string;
242
295
  /** For `containerStart` / `containerEnd` marker blocks: the container
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parse/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parse/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/pipeline/build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAqI,MAAM,UAAU,CAAC;AAIjM,OAAO,EAIL,KAAK,WAAW,EASjB,MAAM,QAAQ,CAAC;AAahB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA+GnD,OAAO,EAAmH,KAAK,WAAW,EAAuG,MAAM,mBAAmB,CAAC;AAC3Q,OAAO,EASL,KAAK,OAAO,EACZ,KAAK,cAAc,EAGpB,MAAM,YAAY,CAAC;AAiBpB,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;IAC7B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CACxC;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;qCACiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,mBAAoB,SAAQ,KAAK;;CAK7C;AAED;yEACyE;AACzE,MAAM,WAAW,SAAS;IACxB,8EAA8E;IAC9E,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C;4EACwE;IACxE,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtD,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC;;;sDAGkD;IAClD,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,GAAG,EAAE,WAAW,CAAC;IACjB;;+DAE2D;IAC3D,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B;;;4EAGwE;IACxE,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC;;qDAEiD;IACjD,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACpC;AAiGD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,oBAAoB,EAC9B,KAAK,GAAE,SAAc,GACpB,UAAU,CAk8JZ;AAMD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,WAAW,CAEb;AAED;8EAC8E;AAC9E,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAchD;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,oBAAoB,GAAG;IAAE,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAC5E,OAAO,CAAC,WAAW,CAAC,CAStB;AAED,wEAAwE;AACxE,wBAAiB,gBAAgB,CAC/B,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAapC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/pipeline/build.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,9 @@ import { collectConfigWarnings } from '../configWarnings';
9
9
  import { initHyphenator } from '../measure';
10
10
  import { resolveAllConfig, computeBaselineGrid, resolvedLocale } from './config';
11
11
  import { createHeadingLevelResolver, deriveSectionGeometryConfig, deriveSectionMeasureContext, headingIsHidden, headingIsNumbered, headingMarksFor, headingStyleOf, planHeadingSections, } from './headingStyles';
12
- import { computeOutline, hasTocDirective, headingNumberingOptions, headingTemplatesOf, outlineFromDoc, sameOutline } from './outline';
12
+ import { computeOutline, hasIndexDirective, hasTocDirective, headingNumberingOptions, headingTemplatesOf, outlineFromDoc, sameOutline } from './outline';
13
13
  import { expandTocDirectives } from './toc';
14
+ import { expandIndexDirectives, locateIndexMarks } from './indexDirective';
14
15
  import { resolveBodyStyle, resolveBlockquoteStyle, resolveParagraphStyle } from './styles';
15
16
  import { computeLevelIndentsPx, computeOrderedLevelIndentsPx, computeOrderedListRunMetrics, listBulletPosition, listItemGapPx, listItemSpacingPx, } from './lists';
16
17
  import { resetLinePositions, createPageWithColumns, currentColumn, advanceToNextColumn, advanceToNextPageBoundary, enforcePageParity, placeBlockInColumn, placeAtomicBlock, createPartPage, pageHasContent, sideColumnOf, sideColumns, sideUsedBottom, pageIsOccupied, bandColumns, currentBand, isBandLevel, bandUsedBottom, closeBandAndInsertSpan, pageLayoutOf, } from './placement';
@@ -229,9 +230,14 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
229
230
  // `:::toc` expands into the entries of the book's outline — the one the
230
231
  // host supplied, else this document's own (page labels unknown on the
231
232
  // first pass; `buildDocument` lays the document out again with them).
233
+ // `:::index` expands into the entries of the book's index marks, from
234
+ // the same outline.
232
235
  const outline = content.outline
233
- ?? (hasTocDirective(parsedBlocks) ? computeOutline(parsedBlocks, resolved, headingStart) : undefined);
234
- const contentBlocks = expandTocDirectives(parsedBlocks, outline, resolved);
236
+ ?? (hasTocDirective(parsedBlocks) || hasIndexDirective(parsedBlocks) ? computeOutline(parsedBlocks, resolved, headingStart) : undefined);
237
+ const indexExpanded = expandIndexDirectives(expandTocDirectives(parsedBlocks, outline, resolved), outline, resolved);
238
+ const contentBlocks = indexExpanded.blocks;
239
+ if (indexExpanded.warnings.length > 0)
240
+ indexWarnings.set(doc, indexExpanded.warnings);
235
241
  const isNumbered = (b) => headingIsNumbered(b, resolved);
236
242
  const { prefixes: headingPrefixes, values: headingNumbers } = computeHeadingNumbering(contentBlocks, headingTemplatesOf(resolved), headingStart ? [headingStart.h1, headingStart.h2, headingStart.h3, headingStart.h4, headingStart.h5, headingStart.h6] : undefined, isNumbered, headingNumberingOptions(resolved));
237
243
  // `{chapterNumber}` at each content block — the current chapter's, as the
@@ -4062,7 +4068,7 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
4062
4068
  // The contents (`:::toc`) keep their own rhythm: an entry set as a list
4063
4069
  // item is not a list tail to realign the text after it. A heading snaps
4064
4070
  // per its level (or style), which inherits `headings.snapToGrid`.
4065
- const shouldSnapToGrid = rawBlock.toc === undefined && ((vdtType === 'heading' && !nextIsHeading
4071
+ const shouldSnapToGrid = rawBlock.toc === undefined && rawBlock.index === undefined && ((vdtType === 'heading' && !nextIsHeading
4066
4072
  && (headingLevels.forBlock(rawBlock)?.snapToGrid ?? resolved.headings.snapToGrid)) ||
4067
4073
  (vdtType === 'listItem' && !nextIsListItem) ||
4068
4074
  (vdtType === 'paragraph' && isContainerTail && paragraphContainer?.snapToGrid !== false) ||
@@ -4102,7 +4108,7 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
4102
4108
  * default opener paints across the page. */
4103
4109
  let brokenForWidth = measureWidth;
4104
4110
  let laterWidths = [];
4105
- const rebreaksForColumn = !tryLoose && rawBlock.toc === undefined
4111
+ const rebreaksForColumn = !tryLoose && rawBlock.toc === undefined && rawBlock.index === undefined
4106
4112
  && (canSplit || (vdtType === 'heading' && !opensDefaultOpener(rawBlock)));
4107
4113
  /** Measure the block again for the columns it is set in (see
4108
4114
  * `laterWidths`), with `extra` options. */
@@ -4219,7 +4225,7 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
4219
4225
  }
4220
4226
  }
4221
4227
  }
4222
- else if (rawBlock.toc) {
4228
+ else if (rawBlock.toc || rawBlock.index) {
4223
4229
  // A part row or an unnumbered entry of the contents: its top
4224
4230
  // margin (`toc.parts.marginTop`, the level's `marginTop`) applies
4225
4231
  // like a heading's.
@@ -5156,7 +5162,7 @@ export function* buildDocumentGen(content, config, cache, options) {
5156
5162
  // References and markup the source names wrongly: read from the source
5157
5163
  // once, located on the pages of the finished layout. Kept apart from
5158
5164
  // `doc.warnings`, whose entries keep their postext 1.4 shape.
5159
- const found = collectContentWarnings(content.markdown, config, content.resources ?? []);
5165
+ const found = [...collectContentWarnings(content.markdown, config, content.resources ?? []), ...(indexWarnings.get(doc) ?? [])];
5160
5166
  if (found.length > 0)
5161
5167
  doc.contentWarnings = locateContentWarnings(doc, found);
5162
5168
  // Config values the build replaced (an unknown number format, a font
@@ -5167,6 +5173,19 @@ export function* buildDocumentGen(content, config, cache, options) {
5167
5173
  doc.configWarnings = configWarnings;
5168
5174
  return doc;
5169
5175
  }
5176
+ /** Warnings the last pass's `:::index` raised, per document (read with
5177
+ * the content warnings once the build is done). */
5178
+ const indexWarnings = new WeakMap();
5179
+ /** `doc` with the page of each of its index marks (`doc.indexMarks`). */
5180
+ function withIndexMarks(doc, content) {
5181
+ if (!content.markdown.includes(':index'))
5182
+ return doc;
5183
+ const { content: body, contentOffset } = extractFrontmatter(content.markdown);
5184
+ const marks = locateIndexMarks(doc, parseMarkdownMemo(body), contentOffset);
5185
+ if (marks)
5186
+ doc.indexMarks = marks;
5187
+ return doc;
5188
+ }
5170
5189
  /** {@link buildDocumentGen} before the document-wide warnings: the
5171
5190
  * contents rounds around the balanced build. */
5172
5191
  function* buildDocumentRounds(content, config, cache, options) {
@@ -5177,20 +5196,20 @@ function* buildDocumentRounds(content, config, cache, options) {
5177
5196
  // it in one extra round.
5178
5197
  if (content.outline === undefined) {
5179
5198
  const parsed = parseMarkdownMemo(extractFrontmatter(content.markdown).content);
5180
- if (hasTocDirective(parsed)) {
5199
+ if (hasTocDirective(parsed) || hasIndexDirective(parsed)) {
5181
5200
  let outline = computeOutline(parsed, resolveAllConfig(config), content.continuation?.headings);
5182
- let doc = yield* buildDocumentBalanced({ ...content, outline }, config, cache, options, 0);
5201
+ let doc = withIndexMarks(yield* buildDocumentBalanced({ ...content, outline }, config, cache, options, 0), content);
5183
5202
  for (let round = 0; round < MAX_TOC_ROUNDS; round++) {
5184
5203
  const after = outlineFromDoc(doc, outline);
5185
5204
  if (sameOutline(after, outline))
5186
5205
  break;
5187
5206
  outline = after;
5188
- doc = yield* buildDocumentBalanced({ ...content, outline }, config, cache, options, round + 1);
5207
+ doc = withIndexMarks(yield* buildDocumentBalanced({ ...content, outline }, config, cache, options, round + 1), content);
5189
5208
  }
5190
5209
  return doc;
5191
5210
  }
5192
5211
  }
5193
- return yield* buildDocumentBalanced(content, config, cache, options);
5212
+ return withIndexMarks(yield* buildDocumentBalanced(content, config, cache, options), content);
5194
5213
  }
5195
5214
  const now = () => (typeof performance !== 'undefined' ? performance.now() : Date.now());
5196
5215
  function* buildDocumentBalanced(content, config, cache, options, tocRound = 0) {