postext 0.3.5 → 0.3.7

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 (147) hide show
  1. package/dist/__tests__/exports.test.js +1 -0
  2. package/dist/__tests__/exports.test.js.map +1 -1
  3. package/dist/canvas-backend/blockRender.d.ts +3 -0
  4. package/dist/canvas-backend/blockRender.d.ts.map +1 -0
  5. package/dist/canvas-backend/blockRender.js +176 -0
  6. package/dist/canvas-backend/blockRender.js.map +1 -0
  7. package/dist/canvas-backend/decorations.d.ts +6 -0
  8. package/dist/canvas-backend/decorations.d.ts.map +1 -0
  9. package/dist/canvas-backend/decorations.js +106 -0
  10. package/dist/canvas-backend/decorations.js.map +1 -0
  11. package/dist/{canvas-backend.d.ts → canvas-backend/index.d.ts} +2 -2
  12. package/dist/canvas-backend/index.d.ts.map +1 -0
  13. package/dist/canvas-backend/index.js +66 -0
  14. package/dist/canvas-backend/index.js.map +1 -0
  15. package/dist/index.d.ts +2 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/knuthPlass/breakpoints.d.ts +6 -0
  20. package/dist/knuthPlass/breakpoints.d.ts.map +1 -0
  21. package/dist/knuthPlass/breakpoints.js +284 -0
  22. package/dist/knuthPlass/breakpoints.js.map +1 -0
  23. package/dist/knuthPlass/constants.d.ts +8 -0
  24. package/dist/knuthPlass/constants.d.ts.map +1 -0
  25. package/dist/knuthPlass/constants.js +8 -0
  26. package/dist/knuthPlass/constants.js.map +1 -0
  27. package/dist/knuthPlass/index.d.ts +12 -0
  28. package/dist/knuthPlass/index.d.ts.map +1 -0
  29. package/dist/knuthPlass/index.js +11 -0
  30. package/dist/knuthPlass/index.js.map +1 -0
  31. package/dist/knuthPlass/pretextAdapter.d.ts +12 -0
  32. package/dist/knuthPlass/pretextAdapter.d.ts.map +1 -0
  33. package/dist/knuthPlass/pretextAdapter.js +178 -0
  34. package/dist/knuthPlass/pretextAdapter.js.map +1 -0
  35. package/dist/knuthPlass/richAdapter.d.ts +26 -0
  36. package/dist/knuthPlass/richAdapter.d.ts.map +1 -0
  37. package/dist/knuthPlass/richAdapter.js +189 -0
  38. package/dist/knuthPlass/richAdapter.js.map +1 -0
  39. package/dist/{knuthPlass.d.ts → knuthPlass/types.d.ts} +1 -31
  40. package/dist/knuthPlass/types.d.ts.map +1 -0
  41. package/dist/knuthPlass/types.js +5 -0
  42. package/dist/knuthPlass/types.js.map +1 -0
  43. package/dist/knuthPlass/utils.d.ts +2 -0
  44. package/dist/knuthPlass/utils.d.ts.map +1 -0
  45. package/dist/knuthPlass/utils.js +4 -0
  46. package/dist/knuthPlass/utils.js.map +1 -0
  47. package/dist/math/rasterCache.d.ts.map +1 -1
  48. package/dist/math/rasterCache.js +29 -6
  49. package/dist/math/rasterCache.js.map +1 -1
  50. package/dist/measure/cache.d.ts +5 -0
  51. package/dist/measure/cache.d.ts.map +1 -0
  52. package/dist/measure/cache.js +38 -0
  53. package/dist/measure/cache.js.map +1 -0
  54. package/dist/measure/canvas.d.ts +8 -0
  55. package/dist/measure/canvas.d.ts.map +1 -0
  56. package/dist/measure/canvas.js +30 -0
  57. package/dist/measure/canvas.js.map +1 -0
  58. package/dist/measure/font.d.ts +19 -0
  59. package/dist/measure/font.d.ts.map +1 -0
  60. package/dist/measure/font.js +34 -0
  61. package/dist/measure/font.js.map +1 -0
  62. package/dist/measure/index.d.ts +7 -0
  63. package/dist/measure/index.d.ts.map +1 -0
  64. package/dist/measure/index.js +6 -0
  65. package/dist/measure/index.js.map +1 -0
  66. package/dist/measure/plain.d.ts +13 -0
  67. package/dist/measure/plain.d.ts.map +1 -0
  68. package/dist/measure/plain.js +167 -0
  69. package/dist/measure/plain.js.map +1 -0
  70. package/dist/measure/rich.d.ts +25 -0
  71. package/dist/measure/rich.d.ts.map +1 -0
  72. package/dist/measure/rich.js +246 -0
  73. package/dist/measure/rich.js.map +1 -0
  74. package/dist/measure/types.d.ts +28 -0
  75. package/dist/measure/types.d.ts.map +1 -0
  76. package/dist/measure/types.js +2 -0
  77. package/dist/measure/types.js.map +1 -0
  78. package/dist/parse/blockParser.d.ts +28 -0
  79. package/dist/parse/blockParser.d.ts.map +1 -0
  80. package/dist/parse/blockParser.js +302 -0
  81. package/dist/parse/blockParser.js.map +1 -0
  82. package/dist/parse/index.d.ts +4 -0
  83. package/dist/parse/index.d.ts.map +1 -0
  84. package/dist/parse/index.js +3 -0
  85. package/dist/parse/index.js.map +1 -0
  86. package/dist/parse/inlineFormatting.d.ts +12 -0
  87. package/dist/parse/inlineFormatting.d.ts.map +1 -0
  88. package/dist/parse/inlineFormatting.js +90 -0
  89. package/dist/parse/inlineFormatting.js.map +1 -0
  90. package/dist/parse/inlineMath.d.ts +29 -0
  91. package/dist/parse/inlineMath.d.ts.map +1 -0
  92. package/dist/parse/inlineMath.js +141 -0
  93. package/dist/parse/inlineMath.js.map +1 -0
  94. package/dist/parse/sourceMapping.d.ts +12 -0
  95. package/dist/parse/sourceMapping.d.ts.map +1 -0
  96. package/dist/parse/sourceMapping.js +130 -0
  97. package/dist/parse/sourceMapping.js.map +1 -0
  98. package/dist/{parse.d.ts → parse/types.d.ts} +2 -25
  99. package/dist/parse/types.d.ts.map +1 -0
  100. package/dist/parse/types.js +2 -0
  101. package/dist/parse/types.js.map +1 -0
  102. package/dist/pipeline/build.d.ts +13 -1
  103. package/dist/pipeline/build.d.ts.map +1 -1
  104. package/dist/pipeline/build.js +43 -277
  105. package/dist/pipeline/build.js.map +1 -1
  106. package/dist/pipeline/buildBlockKind.d.ts +33 -0
  107. package/dist/pipeline/buildBlockKind.d.ts.map +1 -0
  108. package/dist/pipeline/buildBlockKind.js +82 -0
  109. package/dist/pipeline/buildBlockKind.js.map +1 -0
  110. package/dist/pipeline/buildHelpers.d.ts +47 -0
  111. package/dist/pipeline/buildHelpers.d.ts.map +1 -0
  112. package/dist/pipeline/buildHelpers.js +169 -0
  113. package/dist/pipeline/buildHelpers.js.map +1 -0
  114. package/dist/pipeline/buildMeasurement.d.ts +27 -0
  115. package/dist/pipeline/buildMeasurement.d.ts.map +1 -0
  116. package/dist/pipeline/buildMeasurement.js +49 -0
  117. package/dist/pipeline/buildMeasurement.js.map +1 -0
  118. package/dist/pipeline/index.d.ts +2 -1
  119. package/dist/pipeline/index.d.ts.map +1 -1
  120. package/dist/pipeline/index.js +1 -1
  121. package/dist/pipeline/index.js.map +1 -1
  122. package/dist/worker/client.d.ts +21 -0
  123. package/dist/worker/client.d.ts.map +1 -0
  124. package/dist/worker/client.js +98 -0
  125. package/dist/worker/client.js.map +1 -0
  126. package/dist/worker/layout.worker.d.ts +2 -0
  127. package/dist/worker/layout.worker.d.ts.map +1 -0
  128. package/dist/worker/layout.worker.js +121 -0
  129. package/dist/worker/layout.worker.js.map +1 -0
  130. package/dist/worker/protocol.d.ts +43 -0
  131. package/dist/worker/protocol.d.ts.map +1 -0
  132. package/dist/worker/protocol.js +2 -0
  133. package/dist/worker/protocol.js.map +1 -0
  134. package/package.json +9 -1
  135. package/dist/canvas-backend.d.ts.map +0 -1
  136. package/dist/canvas-backend.js +0 -370
  137. package/dist/canvas-backend.js.map +0 -1
  138. package/dist/knuthPlass.d.ts.map +0 -1
  139. package/dist/knuthPlass.js +0 -665
  140. package/dist/knuthPlass.js.map +0 -1
  141. package/dist/measure.d.ts +0 -61
  142. package/dist/measure.d.ts.map +0 -1
  143. package/dist/measure.js +0 -512
  144. package/dist/measure.js.map +0 -1
  145. package/dist/parse.d.ts.map +0 -1
  146. package/dist/parse.js +0 -653
  147. package/dist/parse.js.map +0 -1
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Block-level markdown tokenizer. Splits the source into `ContentBlock`s
3
+ * (headings, paragraphs, blockquotes, list items, math display blocks) and
4
+ * attaches per-character `sourceMap` arrays so higher layers can map cursor
5
+ * positions back into the original markdown.
6
+ */
7
+ import { extractInlineMath, fixMathSourceMap, injectMathSpans } from './inlineMath';
8
+ import { parseInlineFormatting, stripInlineFormatting } from './inlineFormatting';
9
+ import { buildBlockMapping } from './sourceMapping';
10
+ const HEADING_RE = /^(#{1,6})\s+(.+)$/;
11
+ const TASK_ITEM_RE = /^(\s*)([-*+])\s+\[([ xX])\]\s+(.*)$/;
12
+ const ORDERED_LIST_ITEM_RE = /^(\s*)(\d+)([.)])\s+(.*)$/;
13
+ const LIST_ITEM_RE = /^(\s*)([-*+])\s+(.*)$/;
14
+ /** One-line `$$ ... $$` display math (the whole line is the formula). */
15
+ const BLOCK_MATH_SINGLE_RE = /^\s*\$\$([\s\S]+?)\$\$\s*$/;
16
+ /** Standalone `$$` marker (opening or closing a multi-line display block). */
17
+ const BLOCK_MATH_FENCE_RE = /^\s*\$\$\s*$/;
18
+ // Single-slot memo used by parseMarkdownMemo. The returned array and its
19
+ // ContentBlocks are treated as read-only by the rest of the pipeline.
20
+ let _parseMemoInput = null;
21
+ let _parseMemoResult = null;
22
+ /**
23
+ * Memoized wrapper around parseMarkdown: returns the cached result when the
24
+ * input string is byte-for-byte identical to the previous call. This avoids
25
+ * reparsing the whole document on each keystroke when upstream recomputes
26
+ * only because a sibling state changed.
27
+ */
28
+ export function parseMarkdownMemo(markdown) {
29
+ if (_parseMemoResult !== null && _parseMemoInput === markdown) {
30
+ return _parseMemoResult.blocks;
31
+ }
32
+ const result = parseMarkdownWithIssues(markdown);
33
+ _parseMemoInput = markdown;
34
+ _parseMemoResult = result;
35
+ return result.blocks;
36
+ }
37
+ export function parseMarkdownWithIssuesMemo(markdown) {
38
+ if (_parseMemoResult !== null && _parseMemoInput === markdown) {
39
+ return _parseMemoResult;
40
+ }
41
+ const result = parseMarkdownWithIssues(markdown);
42
+ _parseMemoInput = markdown;
43
+ _parseMemoResult = result;
44
+ return result;
45
+ }
46
+ export function parseMarkdown(markdown) {
47
+ return parseMarkdownWithIssues(markdown).blocks;
48
+ }
49
+ /**
50
+ * Merge consecutive blockquote lines into a single block, and consecutive
51
+ * non-blank, non-special lines into paragraphs.
52
+ */
53
+ export function parseMarkdownWithIssues(markdown) {
54
+ const blocks = [];
55
+ const issues = [];
56
+ const rawLines = markdown.split('\n');
57
+ // Precompute starting offset of each raw line in the original markdown.
58
+ // lineOffsets[i] = offset of first char of rawLines[i]. Line terminator '\n'
59
+ // contributes exactly 1 character between consecutive lines.
60
+ const lineOffsets = new Array(rawLines.length);
61
+ {
62
+ let cur = 0;
63
+ for (let k = 0; k < rawLines.length; k++) {
64
+ lineOffsets[k] = cur;
65
+ cur += rawLines[k].length + 1; // +1 for the '\n' that was split away
66
+ }
67
+ }
68
+ const lineEndOffset = (k) => lineOffsets[k] + rawLines[k].length;
69
+ let i = 0;
70
+ while (i < rawLines.length) {
71
+ const line = rawLines[i];
72
+ const trimmed = line.trim();
73
+ // Skip blank lines
74
+ if (trimmed === '') {
75
+ i++;
76
+ continue;
77
+ }
78
+ // Display math — single-line `$$ ... $$`
79
+ const singleMath = line.match(BLOCK_MATH_SINGLE_RE);
80
+ if (singleMath) {
81
+ const srcStart = lineOffsets[i];
82
+ const srcEnd = lineEndOffset(i);
83
+ blocks.push({
84
+ type: 'mathDisplay',
85
+ text: '',
86
+ spans: [],
87
+ tex: singleMath[1],
88
+ sourceStart: srcStart,
89
+ sourceEnd: srcEnd,
90
+ sourceMap: [],
91
+ });
92
+ i++;
93
+ continue;
94
+ }
95
+ // Display math — multi-line `$$` ... `$$` (opening fence on its own line).
96
+ if (BLOCK_MATH_FENCE_RE.test(line)) {
97
+ const startIdx = i;
98
+ i++;
99
+ const texLines = [];
100
+ let closed = false;
101
+ while (i < rawLines.length) {
102
+ if (BLOCK_MATH_FENCE_RE.test(rawLines[i])) {
103
+ closed = true;
104
+ break;
105
+ }
106
+ texLines.push(rawLines[i]);
107
+ i++;
108
+ }
109
+ const srcStart = lineOffsets[startIdx];
110
+ const srcEnd = closed ? lineEndOffset(i) : lineEndOffset(i - 1);
111
+ if (!closed) {
112
+ issues.push({
113
+ kind: 'unclosedMathBlock',
114
+ delimiter: '$$',
115
+ sourceStart: srcStart,
116
+ sourceEnd: srcEnd,
117
+ tex: texLines.join('\n'),
118
+ });
119
+ }
120
+ blocks.push({
121
+ type: 'mathDisplay',
122
+ text: '',
123
+ spans: [],
124
+ tex: texLines.join('\n'),
125
+ sourceStart: srcStart,
126
+ sourceEnd: srcEnd,
127
+ sourceMap: [],
128
+ });
129
+ if (closed)
130
+ i++; // consume the closing fence
131
+ continue;
132
+ }
133
+ // Heading
134
+ const headingMatch = trimmed.match(HEADING_RE);
135
+ if (headingMatch) {
136
+ const headingRawContent = headingMatch[2];
137
+ const srcStart = lineOffsets[i];
138
+ const srcEnd = lineEndOffset(i);
139
+ // Absolute offset of the first content char (after the `# `).
140
+ const prefixLen = line.indexOf(headingRawContent);
141
+ const contentAbsStart = srcStart + (prefixLen >= 0 ? prefixLen : 0);
142
+ const { cleaned, maths, issues: mathIssues } = extractInlineMath(headingRawContent, null, contentAbsStart, srcEnd);
143
+ issues.push(...mathIssues);
144
+ const rawText = stripInlineFormatting(cleaned);
145
+ const rawSpans = injectMathSpans([{ text: rawText, bold: false, italic: false }], maths);
146
+ const mapping = buildBlockMapping(markdown, srcStart, srcEnd, rawSpans);
147
+ fixMathSourceMap(mapping.text, mapping.spans, mapping.sourceMap);
148
+ blocks.push({
149
+ type: 'heading',
150
+ text: mapping.text,
151
+ spans: mapping.spans.length > 0 ? mapping.spans : [{ text: '', bold: false, italic: false }],
152
+ level: headingMatch[1].length,
153
+ sourceStart: srcStart,
154
+ sourceEnd: srcEnd,
155
+ sourceMap: mapping.sourceMap,
156
+ });
157
+ i++;
158
+ continue;
159
+ }
160
+ // List items — unordered (`-`, `*`, `+`), ordered (`1.`, `1)`) and
161
+ // GFM task (`- [ ]`, `- [x]`). Consume consecutive list lines of any kind
162
+ // (nesting and mixed kinds are allowed); the pipeline segments ordered
163
+ // runs by kind and depth for numbering.
164
+ const isListStart = TASK_ITEM_RE.test(line) || ORDERED_LIST_ITEM_RE.test(line) || LIST_ITEM_RE.test(line);
165
+ if (isListStart) {
166
+ while (i < rawLines.length) {
167
+ const curRaw = rawLines[i];
168
+ const taskMatch = curRaw.match(TASK_ITEM_RE);
169
+ const orderedMatch = !taskMatch ? curRaw.match(ORDERED_LIST_ITEM_RE) : null;
170
+ const unorderedMatch = !taskMatch && !orderedMatch ? curRaw.match(LIST_ITEM_RE) : null;
171
+ const anyMatch = taskMatch ?? orderedMatch ?? unorderedMatch;
172
+ if (anyMatch) {
173
+ const leading = anyMatch[1].length;
174
+ const depth = Math.max(1, Math.min(5, Math.floor(leading / 2) + 1));
175
+ const srcStart = lineOffsets[i];
176
+ const srcEnd = lineEndOffset(i);
177
+ let listKind;
178
+ let itemText;
179
+ let markerLength;
180
+ let startNumber;
181
+ let checked;
182
+ if (taskMatch) {
183
+ listKind = 'task';
184
+ checked = taskMatch[3] !== ' ';
185
+ itemText = taskMatch[4];
186
+ // leading spaces + bullet (1) + space (1) + `[x]` (3) + space (1)
187
+ markerLength = taskMatch[2].length + 1 + 3 + 1;
188
+ }
189
+ else if (orderedMatch) {
190
+ listKind = 'ordered';
191
+ startNumber = parseInt(orderedMatch[2], 10);
192
+ itemText = orderedMatch[4];
193
+ // number digits + separator (1) + space (1)
194
+ markerLength = orderedMatch[2].length + 1 + 1;
195
+ }
196
+ else {
197
+ listKind = 'unordered';
198
+ itemText = unorderedMatch[3];
199
+ markerLength = unorderedMatch[2].length + 1;
200
+ }
201
+ const contentOffset = leading + markerLength;
202
+ const itemSrcStart = srcStart + contentOffset;
203
+ const mathExtract = extractInlineMath(itemText, null, itemSrcStart, srcEnd);
204
+ issues.push(...mathExtract.issues);
205
+ const rawSpans = injectMathSpans(parseInlineFormatting(mathExtract.cleaned), mathExtract.maths);
206
+ const mapping = buildBlockMapping(markdown, itemSrcStart, srcEnd, rawSpans);
207
+ fixMathSourceMap(mapping.text, mapping.spans, mapping.sourceMap);
208
+ const block = {
209
+ type: 'listItem',
210
+ text: mapping.text,
211
+ spans: mapping.spans.length > 0 ? mapping.spans : [{ text: '', bold: false, italic: false }],
212
+ depth,
213
+ listKind,
214
+ sourceStart: srcStart,
215
+ sourceEnd: srcEnd,
216
+ sourceMap: mapping.sourceMap,
217
+ };
218
+ if (startNumber !== undefined)
219
+ block.startNumber = startNumber;
220
+ if (checked !== undefined)
221
+ block.checked = checked;
222
+ blocks.push(block);
223
+ i++;
224
+ continue;
225
+ }
226
+ // Blank line: allow a single blank followed by another list item.
227
+ if (curRaw.trim() === '' &&
228
+ i + 1 < rawLines.length &&
229
+ (TASK_ITEM_RE.test(rawLines[i + 1]) ||
230
+ ORDERED_LIST_ITEM_RE.test(rawLines[i + 1]) ||
231
+ LIST_ITEM_RE.test(rawLines[i + 1]))) {
232
+ i++;
233
+ continue;
234
+ }
235
+ break;
236
+ }
237
+ continue;
238
+ }
239
+ // Blockquote — collect consecutive > lines
240
+ if (trimmed.startsWith('>')) {
241
+ const quoteLines = [];
242
+ const startIdx = i;
243
+ let lastIdx = i;
244
+ while (i < rawLines.length) {
245
+ const ql = rawLines[i].trim();
246
+ if (!ql.startsWith('>'))
247
+ break;
248
+ quoteLines.push(ql.replace(/^>\s?/, ''));
249
+ lastIdx = i;
250
+ i++;
251
+ }
252
+ const srcStart = lineOffsets[startIdx];
253
+ const srcEnd = lineEndOffset(lastIdx);
254
+ const mathExtract = extractInlineMath(quoteLines.join(' '), null, srcStart, srcEnd);
255
+ issues.push(...mathExtract.issues);
256
+ const rawSpans = injectMathSpans(parseInlineFormatting(mathExtract.cleaned), mathExtract.maths);
257
+ const mapping = buildBlockMapping(markdown, srcStart, srcEnd, rawSpans);
258
+ fixMathSourceMap(mapping.text, mapping.spans, mapping.sourceMap);
259
+ blocks.push({
260
+ type: 'blockquote',
261
+ text: mapping.text,
262
+ spans: mapping.spans,
263
+ sourceStart: srcStart,
264
+ sourceEnd: srcEnd,
265
+ sourceMap: mapping.sourceMap,
266
+ });
267
+ continue;
268
+ }
269
+ // Paragraph — collect consecutive non-blank, non-special lines
270
+ const paraLines = [];
271
+ const startIdx = i;
272
+ let lastIdx = i;
273
+ while (i < rawLines.length) {
274
+ const rawLine = rawLines[i];
275
+ const pl = rawLine.trim();
276
+ if (pl === '' || pl.match(HEADING_RE) || pl.startsWith('>') || rawLine.match(LIST_ITEM_RE))
277
+ break;
278
+ paraLines.push(pl);
279
+ lastIdx = i;
280
+ i++;
281
+ }
282
+ if (paraLines.length > 0) {
283
+ const srcStart = lineOffsets[startIdx];
284
+ const srcEnd = lineEndOffset(lastIdx);
285
+ const mathExtract = extractInlineMath(paraLines.join(' '), null, srcStart, srcEnd);
286
+ issues.push(...mathExtract.issues);
287
+ const rawSpans = injectMathSpans(parseInlineFormatting(mathExtract.cleaned), mathExtract.maths);
288
+ const mapping = buildBlockMapping(markdown, srcStart, srcEnd, rawSpans);
289
+ fixMathSourceMap(mapping.text, mapping.spans, mapping.sourceMap);
290
+ blocks.push({
291
+ type: 'paragraph',
292
+ text: mapping.text,
293
+ spans: mapping.spans,
294
+ sourceStart: srcStart,
295
+ sourceEnd: srcEnd,
296
+ sourceMap: mapping.sourceMap,
297
+ });
298
+ }
299
+ }
300
+ return { blocks, issues };
301
+ }
302
+ //# sourceMappingURL=blockParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockParser.js","sourceRoot":"","sources":["../../src/parse/blockParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export type { ContentBlockType, MathMeta, InlineSpan, TextSpan, MathSpan, ListKind, ParseIssueKind, ParseIssue, ContentBlock, } from './types';
2
+ export { MATH_PLACEHOLDER } from './inlineMath';
3
+ export { parseMarkdownMemo, parseMarkdownWithIssuesMemo, parseMarkdown, parseMarkdownWithIssues, } from './blockParser';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parse/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,UAAU,EACV,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,aAAa,EACb,uBAAuB,GACxB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { MATH_PLACEHOLDER } from './inlineMath';
2
+ export { parseMarkdownMemo, parseMarkdownWithIssuesMemo, parseMarkdown, parseMarkdownWithIssues, } from './blockParser';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parse/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,aAAa,EACb,uBAAuB,GACxB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { InlineSpan } from './types';
2
+ /**
3
+ * Strip inline markdown formatting for plain-text extraction.
4
+ * Handles bold, italic, code, links, and images.
5
+ */
6
+ export declare function stripInlineFormatting(text: string): string;
7
+ /**
8
+ * Parse inline formatting to produce spans with bold and italic flags.
9
+ * Recognizes ***bold italic***, **bold**, *italic* (and underscore equivalents).
10
+ */
11
+ export declare function parseInlineFormatting(text: string): InlineSpan[];
12
+ //# sourceMappingURL=inlineFormatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inlineFormatting.d.ts","sourceRoot":"","sources":["../../src/parse/inlineFormatting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU1D;AAsCD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAmChE"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Strip inline markdown formatting for plain-text extraction.
3
+ * Handles bold, italic, code, links, and images.
4
+ */
5
+ export function stripInlineFormatting(text) {
6
+ return text
7
+ .replace(/!\[.*?\]\(.*?\)/g, '') // images
8
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') // links
9
+ .replace(/\*\*(.+?)\*\*/g, '$1') // bold
10
+ .replace(/__(.+?)__/g, '$1') // bold alt
11
+ .replace(/\*(.+?)\*/g, '$1') // italic
12
+ .replace(/_(.+?)_/g, '$1') // italic alt
13
+ .replace(/`(.+?)`/g, '$1') // inline code
14
+ .trim();
15
+ }
16
+ /**
17
+ * Strip non-emphasis inline formatting (images, links, code) but keep bold/italic markers.
18
+ */
19
+ function stripNonEmphasisFormatting(text) {
20
+ return text
21
+ .replace(/!\[.*?\]\(.*?\)/g, '') // images
22
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') // links
23
+ .replace(/`(.+?)`/g, '$1'); // inline code
24
+ }
25
+ /**
26
+ * Split a text region into italic/non-italic spans, carrying an ambient bold flag.
27
+ */
28
+ function splitItalicSpans(text, bold, forcedItalic, out) {
29
+ if (forcedItalic) {
30
+ if (text.length > 0)
31
+ out.push({ text, bold, italic: true });
32
+ return;
33
+ }
34
+ const italicRe = /\*(.+?)\*|_(.+?)_/g;
35
+ let last = 0;
36
+ let m;
37
+ while ((m = italicRe.exec(text)) !== null) {
38
+ if (m.index > last) {
39
+ const before = text.slice(last, m.index);
40
+ if (before.length > 0)
41
+ out.push({ text: before, bold, italic: false });
42
+ }
43
+ const inner = m[1] ?? m[2];
44
+ if (inner.length > 0)
45
+ out.push({ text: inner, bold, italic: true });
46
+ last = m.index + m[0].length;
47
+ }
48
+ if (last < text.length) {
49
+ const rest = text.slice(last);
50
+ if (rest.length > 0)
51
+ out.push({ text: rest, bold, italic: false });
52
+ }
53
+ }
54
+ /**
55
+ * Parse inline formatting to produce spans with bold and italic flags.
56
+ * Recognizes ***bold italic***, **bold**, *italic* (and underscore equivalents).
57
+ */
58
+ export function parseInlineFormatting(text) {
59
+ const cleaned = stripNonEmphasisFormatting(text);
60
+ const spans = [];
61
+ // Triple markers (bold+italic) first, then double (bold) — longest first.
62
+ const boldRe = /\*\*\*(.+?)\*\*\*|___(.+?)___|\*\*(.+?)\*\*|__(.+?)__/g;
63
+ let lastIndex = 0;
64
+ let match;
65
+ while ((match = boldRe.exec(cleaned)) !== null) {
66
+ if (match.index > lastIndex) {
67
+ splitItalicSpans(cleaned.slice(lastIndex, match.index), false, false, spans);
68
+ }
69
+ const triple = match[1] ?? match[2];
70
+ if (triple !== undefined) {
71
+ splitItalicSpans(triple, true, true, spans);
72
+ }
73
+ else {
74
+ const inner = match[3] ?? match[4];
75
+ splitItalicSpans(inner, true, false, spans);
76
+ }
77
+ lastIndex = match.index + match[0].length;
78
+ }
79
+ if (lastIndex < cleaned.length) {
80
+ splitItalicSpans(cleaned.slice(lastIndex), false, false, spans);
81
+ }
82
+ if (spans.length === 0) {
83
+ const trimmed = cleaned.trim();
84
+ if (trimmed.length > 0) {
85
+ splitItalicSpans(trimmed, false, false, spans);
86
+ }
87
+ }
88
+ return spans;
89
+ }
90
+ //# sourceMappingURL=inlineFormatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inlineFormatting.js","sourceRoot":"","sources":["../../src/parse/inlineFormatting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { InlineSpan, MathMeta, ParseIssue } from './types';
2
+ /** Object Replacement Character — atomic plain-text placeholder for a math
3
+ * span. One code unit per formula so `sourceMap` stays 1-to-1. */
4
+ export declare const MATH_PLACEHOLDER = "\uFFFC";
5
+ /** Extract inline `$...$` math spans from a line's text.
6
+ * - Returns a cleaned text where each match is replaced by `MATH_PLACEHOLDER`.
7
+ * - Returns the list of math metadata aligned with the order of placeholders.
8
+ * - Detects unclosed `$` (odd number of unescaped `$` in the text).
9
+ *
10
+ * `absOffsets[i]` is the absolute source offset of `text[i]` in the original
11
+ * markdown; used to emit accurate `sourceStart`/`sourceEnd` on each math
12
+ * span. When the caller cannot provide an exact map (e.g. text has been
13
+ * reassembled from multiple source lines) it can pass `null` and math
14
+ * offsets will default to the block's source range.
15
+ */
16
+ export declare function extractInlineMath(text: string, absOffsets: number[] | null, fallbackStart: number, fallbackEnd: number): {
17
+ cleaned: string;
18
+ maths: MathMeta[];
19
+ issues: ParseIssue[];
20
+ };
21
+ /** Walk an InlineSpan list and attach MathMeta to each `\uFFFC` occurrence
22
+ * in order. Splits plain-text spans around the placeholder so the math
23
+ * span is its own entry (carrying the ambient bold/italic). */
24
+ export declare function injectMathSpans(spans: InlineSpan[], maths: MathMeta[]): InlineSpan[];
25
+ /** Overwrite `sourceMap[i]` entries corresponding to math placeholders with
26
+ * the math span's absolute sourceStart. Keeps click-to-focus accurate for
27
+ * formulas even though the placeholder char has no direct source match. */
28
+ export declare function fixMathSourceMap(text: string, spans: InlineSpan[], sourceMap: number[]): void;
29
+ //# sourceMappingURL=inlineMath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inlineMath.d.ts","sourceRoot":"","sources":["../../src/parse/inlineMath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEhE;mEACmE;AACnE,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAEzC;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,EAC3B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,EAAE,CAAA;CAAE,CA+D9D;AAED;;gEAEgE;AAChE,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAkCpF;AAED;;4EAE4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAa7F"}
@@ -0,0 +1,141 @@
1
+ /** Object Replacement Character — atomic plain-text placeholder for a math
2
+ * span. One code unit per formula so `sourceMap` stays 1-to-1. */
3
+ export const MATH_PLACEHOLDER = '\uFFFC';
4
+ /** Extract inline `$...$` math spans from a line's text.
5
+ * - Returns a cleaned text where each match is replaced by `MATH_PLACEHOLDER`.
6
+ * - Returns the list of math metadata aligned with the order of placeholders.
7
+ * - Detects unclosed `$` (odd number of unescaped `$` in the text).
8
+ *
9
+ * `absOffsets[i]` is the absolute source offset of `text[i]` in the original
10
+ * markdown; used to emit accurate `sourceStart`/`sourceEnd` on each math
11
+ * span. When the caller cannot provide an exact map (e.g. text has been
12
+ * reassembled from multiple source lines) it can pass `null` and math
13
+ * offsets will default to the block's source range.
14
+ */
15
+ export function extractInlineMath(text, absOffsets, fallbackStart, fallbackEnd) {
16
+ const maths = [];
17
+ const issues = [];
18
+ let out = '';
19
+ let i = 0;
20
+ const absAt = (idx) => {
21
+ if (absOffsets && idx < absOffsets.length)
22
+ return absOffsets[idx];
23
+ if (absOffsets && absOffsets.length > 0)
24
+ return absOffsets[absOffsets.length - 1] + (idx - (absOffsets.length - 1));
25
+ return fallbackStart + idx;
26
+ };
27
+ while (i < text.length) {
28
+ const ch = text[i];
29
+ if (ch === '\\' && text[i + 1] === '$') {
30
+ // Escaped dollar sign — keep as literal `$` in output.
31
+ out += '$';
32
+ i += 2;
33
+ continue;
34
+ }
35
+ if (ch !== '$') {
36
+ out += ch;
37
+ i++;
38
+ continue;
39
+ }
40
+ // Found a '$'. Skip display-math `$$` sequences — those are handled at
41
+ // block level, so inside a paragraph we treat `$$` as literal.
42
+ if (text[i + 1] === '$') {
43
+ out += '$$';
44
+ i += 2;
45
+ continue;
46
+ }
47
+ // Scan for the matching closing `$`, honouring `\$` escapes.
48
+ let j = i + 1;
49
+ let foundClose = -1;
50
+ while (j < text.length) {
51
+ if (text[j] === '\\' && text[j + 1] === '$') {
52
+ j += 2;
53
+ continue;
54
+ }
55
+ if (text[j] === '$') {
56
+ foundClose = j;
57
+ break;
58
+ }
59
+ // Bail on newline — inline math must be on a single line.
60
+ if (text[j] === '\n')
61
+ break;
62
+ j++;
63
+ }
64
+ if (foundClose < 0) {
65
+ issues.push({
66
+ kind: 'unclosedMath',
67
+ delimiter: '$',
68
+ sourceStart: absAt(i),
69
+ sourceEnd: fallbackEnd,
70
+ tex: text.slice(i + 1),
71
+ });
72
+ out += text.slice(i);
73
+ break;
74
+ }
75
+ const tex = text.slice(i + 1, foundClose).replace(/\\\$/g, '$');
76
+ maths.push({ tex, sourceStart: absAt(i), sourceEnd: absAt(foundClose) + 1 });
77
+ out += MATH_PLACEHOLDER;
78
+ i = foundClose + 1;
79
+ }
80
+ return { cleaned: out, maths, issues };
81
+ }
82
+ /** Walk an InlineSpan list and attach MathMeta to each `\uFFFC` occurrence
83
+ * in order. Splits plain-text spans around the placeholder so the math
84
+ * span is its own entry (carrying the ambient bold/italic). */
85
+ export function injectMathSpans(spans, maths) {
86
+ if (maths.length === 0)
87
+ return spans;
88
+ const out = [];
89
+ let idx = 0;
90
+ for (const span of spans) {
91
+ if (span.text.indexOf(MATH_PLACEHOLDER) < 0) {
92
+ out.push(span);
93
+ continue;
94
+ }
95
+ let buf = '';
96
+ for (const ch of span.text) {
97
+ if (ch === MATH_PLACEHOLDER) {
98
+ if (buf.length > 0) {
99
+ out.push({ text: buf, bold: span.bold, italic: span.italic });
100
+ buf = '';
101
+ }
102
+ const meta = maths[idx++];
103
+ if (meta) {
104
+ out.push({
105
+ text: MATH_PLACEHOLDER,
106
+ bold: span.bold,
107
+ italic: span.italic,
108
+ math: meta,
109
+ });
110
+ }
111
+ }
112
+ else {
113
+ buf += ch;
114
+ }
115
+ }
116
+ if (buf.length > 0) {
117
+ out.push({ text: buf, bold: span.bold, italic: span.italic });
118
+ }
119
+ }
120
+ return out;
121
+ }
122
+ /** Overwrite `sourceMap[i]` entries corresponding to math placeholders with
123
+ * the math span's absolute sourceStart. Keeps click-to-focus accurate for
124
+ * formulas even though the placeholder char has no direct source match. */
125
+ export function fixMathSourceMap(text, spans, sourceMap) {
126
+ if (sourceMap.length === 0)
127
+ return;
128
+ // Walk spans in order, tracking plain-text position. Each math span
129
+ // contributes exactly one placeholder char whose sourceMap entry we
130
+ // overwrite with its span's sourceStart.
131
+ let p = 0;
132
+ for (const span of spans) {
133
+ if (span.math && p < sourceMap.length) {
134
+ sourceMap[p] = span.math.sourceStart;
135
+ }
136
+ p += span.text.length;
137
+ if (p > text.length)
138
+ break;
139
+ }
140
+ }
141
+ //# sourceMappingURL=inlineMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inlineMath.js","sourceRoot":"","sources":["../../src/parse/inlineMath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { InlineSpan } from './types';
2
+ /**
3
+ * Build normalized text, spans, and sourceMap for a block. The plain text is
4
+ * whitespace-normalized to match pretext's internal normalization so that the
5
+ * per-character `sourceMap` aligns with rendered line segments.
6
+ */
7
+ export declare function buildBlockMapping(markdown: string, blockSrcStart: number, blockSrcEnd: number, rawSpans: InlineSpan[]): {
8
+ text: string;
9
+ spans: InlineSpan[];
10
+ sourceMap: number[];
11
+ };
12
+ //# sourceMappingURL=sourceMapping.d.ts.map