postext 0.3.16 → 0.3.17

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 (175) hide show
  1. package/dist/__tests__/createLayout.test.js +12 -13
  2. package/dist/__tests__/createLayout.test.js.map +1 -1
  3. package/dist/__tests__/defaults/resourceTypes.test.d.ts +2 -0
  4. package/dist/__tests__/defaults/resourceTypes.test.d.ts.map +1 -0
  5. package/dist/__tests__/defaults/resourceTypes.test.js +69 -0
  6. package/dist/__tests__/defaults/resourceTypes.test.js.map +1 -0
  7. package/dist/__tests__/exports.test.js +54 -0
  8. package/dist/__tests__/exports.test.js.map +1 -1
  9. package/dist/__tests__/parse/inlineRef.test.d.ts +2 -0
  10. package/dist/__tests__/parse/inlineRef.test.d.ts.map +1 -0
  11. package/dist/__tests__/parse/inlineRef.test.js +83 -0
  12. package/dist/__tests__/parse/inlineRef.test.js.map +1 -0
  13. package/dist/__tests__/parse/resourceDirective.test.d.ts +2 -0
  14. package/dist/__tests__/parse/resourceDirective.test.d.ts.map +1 -0
  15. package/dist/__tests__/parse/resourceDirective.test.js +55 -0
  16. package/dist/__tests__/parse/resourceDirective.test.js.map +1 -0
  17. package/dist/__tests__/pipeline/floatPlacement.test.d.ts +2 -0
  18. package/dist/__tests__/pipeline/floatPlacement.test.d.ts.map +1 -0
  19. package/dist/__tests__/pipeline/floatPlacement.test.js +141 -0
  20. package/dist/__tests__/pipeline/floatPlacement.test.js.map +1 -0
  21. package/dist/__tests__/pipeline/inlineRefRender.test.d.ts +2 -0
  22. package/dist/__tests__/pipeline/inlineRefRender.test.d.ts.map +1 -0
  23. package/dist/__tests__/pipeline/inlineRefRender.test.js +107 -0
  24. package/dist/__tests__/pipeline/inlineRefRender.test.js.map +1 -0
  25. package/dist/__tests__/pipeline/resourceNumbering.test.d.ts +2 -0
  26. package/dist/__tests__/pipeline/resourceNumbering.test.d.ts.map +1 -0
  27. package/dist/__tests__/pipeline/resourceNumbering.test.js +186 -0
  28. package/dist/__tests__/pipeline/resourceNumbering.test.js.map +1 -0
  29. package/dist/__tests__/table/model.test.d.ts +2 -0
  30. package/dist/__tests__/table/model.test.d.ts.map +1 -0
  31. package/dist/__tests__/table/model.test.js +187 -0
  32. package/dist/__tests__/table/model.test.js.map +1 -0
  33. package/dist/canvas-backend/blockRender.d.ts.map +1 -1
  34. package/dist/canvas-backend/blockRender.js +25 -6
  35. package/dist/canvas-backend/blockRender.js.map +1 -1
  36. package/dist/canvas-backend/headerFooter.d.ts +3 -2
  37. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  38. package/dist/canvas-backend/headerFooter.js +63 -2
  39. package/dist/canvas-backend/headerFooter.js.map +1 -1
  40. package/dist/canvas-backend/index.d.ts +2 -0
  41. package/dist/canvas-backend/index.d.ts.map +1 -1
  42. package/dist/canvas-backend/index.js +11 -0
  43. package/dist/canvas-backend/index.js.map +1 -1
  44. package/dist/canvas-backend/renderResourceBlock.d.ts +28 -0
  45. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -0
  46. package/dist/canvas-backend/renderResourceBlock.js +146 -0
  47. package/dist/canvas-backend/renderResourceBlock.js.map +1 -0
  48. package/dist/defaults/bodyText.d.ts.map +1 -1
  49. package/dist/defaults/bodyText.js +30 -0
  50. package/dist/defaults/bodyText.js.map +1 -1
  51. package/dist/defaults/captionStyle.d.ts +9 -0
  52. package/dist/defaults/captionStyle.d.ts.map +1 -0
  53. package/dist/defaults/captionStyle.js +74 -0
  54. package/dist/defaults/captionStyle.js.map +1 -0
  55. package/dist/defaults/debug.d.ts.map +1 -1
  56. package/dist/defaults/debug.js +6 -0
  57. package/dist/defaults/debug.js.map +1 -1
  58. package/dist/defaults/headerFooter.d.ts +20 -18
  59. package/dist/defaults/headerFooter.d.ts.map +1 -1
  60. package/dist/defaults/headerFooter.js +269 -165
  61. package/dist/defaults/headerFooter.js.map +1 -1
  62. package/dist/defaults/headings.d.ts.map +1 -1
  63. package/dist/defaults/headings.js +29 -6
  64. package/dist/defaults/headings.js.map +1 -1
  65. package/dist/defaults/index.d.ts +3 -0
  66. package/dist/defaults/index.d.ts.map +1 -1
  67. package/dist/defaults/index.js +19 -0
  68. package/dist/defaults/index.js.map +1 -1
  69. package/dist/defaults/resourceTypes.d.ts +8 -0
  70. package/dist/defaults/resourceTypes.d.ts.map +1 -0
  71. package/dist/defaults/resourceTypes.js +43 -0
  72. package/dist/defaults/resourceTypes.js.map +1 -0
  73. package/dist/defaults/shared.d.ts.map +1 -1
  74. package/dist/defaults/shared.js +30 -0
  75. package/dist/defaults/shared.js.map +1 -1
  76. package/dist/defaults/tableStyle.d.ts +11 -0
  77. package/dist/defaults/tableStyle.d.ts.map +1 -0
  78. package/dist/defaults/tableStyle.js +114 -0
  79. package/dist/defaults/tableStyle.js.map +1 -0
  80. package/dist/design/layout.d.ts +94 -0
  81. package/dist/design/layout.d.ts.map +1 -0
  82. package/dist/design/layout.js +642 -0
  83. package/dist/design/layout.js.map +1 -0
  84. package/dist/design/placeholders.d.ts +29 -0
  85. package/dist/design/placeholders.d.ts.map +1 -0
  86. package/dist/design/placeholders.js +126 -0
  87. package/dist/design/placeholders.js.map +1 -0
  88. package/dist/html-backend.d.ts.map +1 -1
  89. package/dist/html-backend.js +91 -1
  90. package/dist/html-backend.js.map +1 -1
  91. package/dist/index.d.ts +12 -5
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +6 -2
  94. package/dist/index.js.map +1 -1
  95. package/dist/knuthPlass/richAdapter.d.ts +1 -0
  96. package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
  97. package/dist/knuthPlass/richAdapter.js +2 -1
  98. package/dist/knuthPlass/richAdapter.js.map +1 -1
  99. package/dist/measure/cache.js +1 -1
  100. package/dist/measure/cache.js.map +1 -1
  101. package/dist/measure/rich.d.ts +7 -0
  102. package/dist/measure/rich.d.ts.map +1 -1
  103. package/dist/measure/rich.js +30 -0
  104. package/dist/measure/rich.js.map +1 -1
  105. package/dist/numbering.d.ts +16 -0
  106. package/dist/numbering.d.ts.map +1 -1
  107. package/dist/numbering.js +28 -18
  108. package/dist/numbering.js.map +1 -1
  109. package/dist/parse/blockParser.d.ts.map +1 -1
  110. package/dist/parse/blockParser.js +37 -9
  111. package/dist/parse/blockParser.js.map +1 -1
  112. package/dist/parse/inlineFormatting.d.ts +38 -0
  113. package/dist/parse/inlineFormatting.d.ts.map +1 -1
  114. package/dist/parse/inlineFormatting.js +84 -0
  115. package/dist/parse/inlineFormatting.js.map +1 -1
  116. package/dist/parse/sourceMapping.d.ts.map +1 -1
  117. package/dist/parse/sourceMapping.js +20 -0
  118. package/dist/parse/sourceMapping.js.map +1 -1
  119. package/dist/parse/types.d.ts +20 -1
  120. package/dist/parse/types.d.ts.map +1 -1
  121. package/dist/pipeline/build.d.ts.map +1 -1
  122. package/dist/pipeline/build.js +389 -17
  123. package/dist/pipeline/build.js.map +1 -1
  124. package/dist/pipeline/buildBlockKind.d.ts +14 -0
  125. package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
  126. package/dist/pipeline/buildBlockKind.js +16 -1
  127. package/dist/pipeline/buildBlockKind.js.map +1 -1
  128. package/dist/pipeline/buildHelpers.d.ts.map +1 -1
  129. package/dist/pipeline/buildHelpers.js +7 -1
  130. package/dist/pipeline/buildHelpers.js.map +1 -1
  131. package/dist/pipeline/buildMeasurement.d.ts +17 -1
  132. package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
  133. package/dist/pipeline/buildMeasurement.js +32 -0
  134. package/dist/pipeline/buildMeasurement.js.map +1 -1
  135. package/dist/pipeline/config.d.ts.map +1 -1
  136. package/dist/pipeline/config.js +3 -1
  137. package/dist/pipeline/config.js.map +1 -1
  138. package/dist/pipeline/floatPlacement.d.ts +45 -0
  139. package/dist/pipeline/floatPlacement.d.ts.map +1 -0
  140. package/dist/pipeline/floatPlacement.js +68 -0
  141. package/dist/pipeline/floatPlacement.js.map +1 -0
  142. package/dist/pipeline/headerFooter.d.ts +23 -7
  143. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  144. package/dist/pipeline/headerFooter.js +258 -100
  145. package/dist/pipeline/headerFooter.js.map +1 -1
  146. package/dist/pipeline/placeholders.d.ts +6 -0
  147. package/dist/pipeline/placeholders.d.ts.map +1 -1
  148. package/dist/pipeline/placeholders.js +46 -0
  149. package/dist/pipeline/placeholders.js.map +1 -1
  150. package/dist/pipeline/placement.d.ts +15 -2
  151. package/dist/pipeline/placement.d.ts.map +1 -1
  152. package/dist/pipeline/placement.js +38 -3
  153. package/dist/pipeline/placement.js.map +1 -1
  154. package/dist/pipeline/resourceLayout.d.ts +58 -0
  155. package/dist/pipeline/resourceLayout.d.ts.map +1 -0
  156. package/dist/pipeline/resourceLayout.js +338 -0
  157. package/dist/pipeline/resourceLayout.js.map +1 -0
  158. package/dist/pipeline/resourceNumbering.d.ts +54 -0
  159. package/dist/pipeline/resourceNumbering.d.ts.map +1 -0
  160. package/dist/pipeline/resourceNumbering.js +218 -0
  161. package/dist/pipeline/resourceNumbering.js.map +1 -0
  162. package/dist/pipeline/styles.d.ts +6 -0
  163. package/dist/pipeline/styles.d.ts.map +1 -1
  164. package/dist/pipeline/styles.js +1 -1
  165. package/dist/pipeline/styles.js.map +1 -1
  166. package/dist/table/model.d.ts +53 -0
  167. package/dist/table/model.d.ts.map +1 -0
  168. package/dist/table/model.js +253 -0
  169. package/dist/table/model.js.map +1 -0
  170. package/dist/types.d.ts +397 -41
  171. package/dist/types.d.ts.map +1 -1
  172. package/dist/vdt.d.ts +165 -18
  173. package/dist/vdt.d.ts.map +1 -1
  174. package/dist/vdt.js.map +1 -1
  175. package/package.json +1 -1
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Resource numbering pipeline (issue #49 §3).
3
+ *
4
+ * Assigns a rendered number string (e.g. `"1.7"`) to every resource referenced
5
+ * in the document. Numbering follows **order of first reference** in reading
6
+ * order — a resource is numbered the first time it is encountered, whether via
7
+ * a `::resource{…}` block embed or an inline `:ref{…}`. Inserting a new
8
+ * reference earlier in the document therefore auto-renumbers the rest.
9
+ *
10
+ * The renderer is shared with heading numbering through
11
+ * {@link renderCounterTemplate}; only the template syntax differs. Resource
12
+ * templates use `{n}` for the per-type counter and `{h1}`..`{h6}` for the
13
+ * heading numbers in effect at the point of first reference.
14
+ */
15
+ import { formatNumeral, renderCounterTemplate, } from '../numbering';
16
+ const EMPTY_HEADING = { h1: 0, h2: 0, h3: 0, h4: 0, h5: 0, h6: 0 };
17
+ /** Translate a resource `counterFormat` to the shared `NumeralStyle` used by
18
+ * {@link formatNumeral}. The resource model uses `'roman-lower'` style names
19
+ * whereas the numeral formatter uses `'lower-roman'`. */
20
+ function counterFormatToStyle(format) {
21
+ switch (format) {
22
+ case 'decimal':
23
+ return 'decimal';
24
+ case 'roman-lower':
25
+ return 'lower-roman';
26
+ case 'roman-upper':
27
+ return 'upper-roman';
28
+ case 'alpha-lower':
29
+ return 'lower-alpha';
30
+ case 'alpha-upper':
31
+ return 'upper-alpha';
32
+ }
33
+ }
34
+ /** Walk `blocks` and produce, for each block index, the heading counters in
35
+ * effect at that block. A heading at index `i` is reflected in
36
+ * `result[i]` (i.e. the heading counts itself). Mirrors the counter logic in
37
+ * `computeHeadingNumbers` but exposes the raw per-level values rather than the
38
+ * rendered prefix. */
39
+ export function computeHeadingContext(blocks) {
40
+ const counters = [0, 0, 0, 0, 0, 0, 0]; // index 1..6 used
41
+ const out = new Array(blocks.length);
42
+ for (let i = 0; i < blocks.length; i++) {
43
+ const b = blocks[i];
44
+ if (b.type === 'heading' && b.level && b.level >= 1 && b.level <= 6) {
45
+ const lvl = b.level;
46
+ counters[lvl] = (counters[lvl] ?? 0) + 1;
47
+ for (let k = lvl + 1; k <= 6; k++)
48
+ counters[k] = 0;
49
+ }
50
+ out[i] = {
51
+ h1: counters[1] ?? 0,
52
+ h2: counters[2] ?? 0,
53
+ h3: counters[3] ?? 0,
54
+ h4: counters[4] ?? 0,
55
+ h5: counters[5] ?? 0,
56
+ h6: counters[6] ?? 0,
57
+ };
58
+ }
59
+ return out;
60
+ }
61
+ /** Parse a resource numbering template into tokens. Recognizes `{n}` (the
62
+ * per-type counter) and `{h1}`..`{h6}` (heading numbers). Backslash escapes a
63
+ * literal `{`, `}`, or `\`. Unknown `{…}` groups are kept as literal text. */
64
+ function parseResourceTemplate(tpl) {
65
+ const tokens = [];
66
+ let buf = '';
67
+ let i = 0;
68
+ const flush = () => {
69
+ if (buf.length > 0) {
70
+ tokens.push({ kind: 'literal', text: buf });
71
+ buf = '';
72
+ }
73
+ };
74
+ while (i < tpl.length) {
75
+ const ch = tpl[i];
76
+ if (ch === '\\' && i + 1 < tpl.length) {
77
+ const next = tpl[i + 1];
78
+ if (next === '{' || next === '}' || next === '\\') {
79
+ buf += next;
80
+ i += 2;
81
+ continue;
82
+ }
83
+ }
84
+ if (ch === '{') {
85
+ const end = tpl.indexOf('}', i + 1);
86
+ if (end !== -1) {
87
+ const body = tpl.slice(i + 1, end).trim();
88
+ if (body === 'n') {
89
+ flush();
90
+ tokens.push({ kind: 'counter' });
91
+ i = end + 1;
92
+ continue;
93
+ }
94
+ const hMatch = /^h([1-6])$/.exec(body);
95
+ if (hMatch) {
96
+ flush();
97
+ tokens.push({ kind: 'heading', level: Number(hMatch[1]) });
98
+ i = end + 1;
99
+ continue;
100
+ }
101
+ }
102
+ }
103
+ buf += ch;
104
+ i++;
105
+ }
106
+ flush();
107
+ return tokens;
108
+ }
109
+ /** Render a resource template against a per-type counter value and the heading
110
+ * context in effect. Empty heading counters collapse their adjacent separators
111
+ * via {@link renderCounterTemplate} (so `{h1}.{n}` with no h1 renders as the
112
+ * bare counter). */
113
+ function renderResourceNumber(tokens, counterValue, style, heading) {
114
+ const pieces = tokens.map((t) => {
115
+ if (t.kind === 'literal')
116
+ return { kind: 'literal', text: t.text };
117
+ if (t.kind === 'counter') {
118
+ return { kind: 'counter', text: formatNumeral(counterValue, style) };
119
+ }
120
+ const value = heading[`h${t.level}`];
121
+ return { kind: 'counter', text: value > 0 ? formatNumeral(value, 'decimal') : '' };
122
+ });
123
+ return renderCounterTemplate(pieces);
124
+ }
125
+ /** Returns true when the heading context crossed a `resetOn` boundary relative
126
+ * to the previous reference — i.e. the heading number at `resetOn`'s level (or
127
+ * any ancestor level) changed. */
128
+ function shouldResetCounter(prev, cur, resetLevel) {
129
+ if (!prev)
130
+ return false;
131
+ // A reset at level L fires whenever the L-level heading number changed, which
132
+ // also covers ancestor changes (ancestors reset descendants' counters to 0,
133
+ // changing them too).
134
+ for (let lvl = 1; lvl <= resetLevel; lvl = (lvl + 1)) {
135
+ const key = `h${lvl}`;
136
+ if (prev[key] !== cur[key])
137
+ return true;
138
+ }
139
+ return false;
140
+ }
141
+ /**
142
+ * Compute the numbering map for every resource referenced in `blocks`.
143
+ *
144
+ * @param blocks parsed content blocks in reading order
145
+ * @param resourceTypes user-defined resource types (drives template + reset)
146
+ * @param resources known resources (maps `resourceId → typeId`)
147
+ * @param headingContext per-block heading counters (see
148
+ * {@link computeHeadingContext}); must align with
149
+ * `blocks` by index
150
+ */
151
+ export function computeResourceNumbering(blocks, resourceTypes, resources, headingContext) {
152
+ const typeById = new Map();
153
+ for (const t of resourceTypes)
154
+ typeById.set(t.id, t);
155
+ const resourceById = new Map();
156
+ for (const r of resources)
157
+ resourceById.set(r.id, r);
158
+ const firstOccurrences = [];
159
+ const seen = new Set();
160
+ const record = (resourceId, blockIdx) => {
161
+ if (seen.has(resourceId))
162
+ return;
163
+ seen.add(resourceId);
164
+ firstOccurrences.push({
165
+ resourceId,
166
+ heading: headingContext[blockIdx] ?? EMPTY_HEADING,
167
+ });
168
+ };
169
+ for (let i = 0; i < blocks.length; i++) {
170
+ const b = blocks[i];
171
+ if (b.type === 'resourceBlock' && b.resourceId) {
172
+ record(b.resourceId, i);
173
+ }
174
+ for (const span of b.spans) {
175
+ if (span.ref?.resourceId)
176
+ record(span.ref.resourceId, i);
177
+ }
178
+ }
179
+ // Partition by typeId (resolved via the resource), preserving first-reference
180
+ // order. Resources with an unknown id or unknown type are skipped.
181
+ const byType = new Map();
182
+ for (const occ of firstOccurrences) {
183
+ const resource = resourceById.get(occ.resourceId);
184
+ if (!resource)
185
+ continue;
186
+ const type = typeById.get(resource.typeId);
187
+ if (!type)
188
+ continue;
189
+ const list = byType.get(type.id);
190
+ if (list)
191
+ list.push(occ);
192
+ else
193
+ byType.set(type.id, [occ]);
194
+ }
195
+ const map = {};
196
+ for (const [typeId, occurrences] of byType) {
197
+ const type = typeById.get(typeId);
198
+ const tokens = parseResourceTemplate(type.numberingTemplate);
199
+ const style = counterFormatToStyle(type.counterFormat);
200
+ const resetLevel = type.resetOn === 'never' ? null : Number(type.resetOn.slice(1));
201
+ let counter = 0;
202
+ let prevHeading = null;
203
+ for (const occ of occurrences) {
204
+ if (resetLevel !== null && shouldResetCounter(prevHeading, occ.heading, resetLevel)) {
205
+ counter = 0;
206
+ }
207
+ counter += 1;
208
+ prevHeading = occ.heading;
209
+ map[occ.resourceId] = {
210
+ number: renderResourceNumber(tokens, counter, style, occ.heading),
211
+ typeId,
212
+ heading: occ.heading,
213
+ };
214
+ }
215
+ }
216
+ return map;
217
+ }
218
+ //# sourceMappingURL=resourceNumbering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceNumbering.js","sourceRoot":"","sources":["../../src/pipeline/resourceNumbering.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,12 @@ export interface BlockStyle {
10
10
  color: string;
11
11
  boldColor?: string;
12
12
  italicColor?: string;
13
+ /** Colour for inline `:ref` reference labels. */
14
+ referenceColor?: string;
15
+ /** Whether reference labels render in the bold font. */
16
+ referenceBold?: boolean;
17
+ /** Whether reference labels render italic. */
18
+ referenceItalic?: boolean;
13
19
  textAlign: TextAlign;
14
20
  hyphenate: boolean;
15
21
  marginTopPx: number;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/pipeline/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8B,SAAS,EAAE,MAAM,UAAU,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAI7C,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,CAgBrE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,GACvB,UAAU,CAyBZ;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,CAqB5E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,CAgB3E"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/pipeline/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8B,SAAS,EAAE,MAAM,UAAU,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAI7C,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,CAgBrE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,GACvB,UAAU,CAyBZ;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,CAqB5E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,CAgB3E"}
@@ -16,7 +16,7 @@ export function resolveBodyStyle(resolved) {
16
16
  const firstLineIndentPx = dimensionToPx(resolved.bodyText.firstLineIndent, dpi, fontSizePx);
17
17
  const hangingIndent = resolved.bodyText.hangingIndent;
18
18
  const marginBottomPx = resolved.bodyText.paragraphSpacing ? lineHeightPx : 0;
19
- return { fontString, boldFontString, italicFontString, boldItalicFontString, fontSizePx, lineHeightPx, color: resolved.bodyText.color.hex, boldColor: resolved.bodyText.boldColor?.hex, italicColor: resolved.bodyText.italicColor?.hex, textAlign, hyphenate, marginTopPx: 0, marginBottomPx, firstLineIndentPx, hangingIndent };
19
+ return { fontString, boldFontString, italicFontString, boldItalicFontString, fontSizePx, lineHeightPx, color: resolved.bodyText.color.hex, boldColor: resolved.bodyText.boldColor?.hex, italicColor: resolved.bodyText.italicColor?.hex, referenceColor: resolved.bodyText.referenceColor.hex, referenceBold: resolved.bodyText.referenceBold, referenceItalic: resolved.bodyText.referenceItalic, textAlign, hyphenate, marginTopPx: 0, marginBottomPx, firstLineIndentPx, hangingIndent };
20
20
  }
21
21
  export function resolveHeadingStyle(level, resolved) {
22
22
  const dpi = resolved.page.dpi;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/pipeline/styles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/pipeline/styles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { TableCellAlign, TableCellVerticalAlign, TableCellPos, TableModel } from '../types';
2
+ /** Position of a cell within the grid (zero-based row/column). */
3
+ export type CellPos = TableCellPos;
4
+ /** An inclusive rectangular range of cells, defined by two corners. */
5
+ export interface CellRange {
6
+ start: CellPos;
7
+ end: CellPos;
8
+ }
9
+ /** Horizontal alignment of a cell's content. */
10
+ export type Align = TableCellAlign;
11
+ /** Vertical alignment of a cell's content. */
12
+ export type VAlign = TableCellVerticalAlign;
13
+ /**
14
+ * Insert a new (empty) row. `at` is the index the new row will occupy; it is
15
+ * clamped to `[0, rowCount]`, so `at >= rowCount` appends.
16
+ */
17
+ export declare const addRow: (m: TableModel, at: number) => TableModel;
18
+ /**
19
+ * Insert a new (empty) column. `at` is the index the new column will occupy in
20
+ * every row; it is clamped to `[0, columnCount]`.
21
+ */
22
+ export declare const addColumn: (m: TableModel, at: number) => TableModel;
23
+ /** Remove the row at `at`. Out-of-range indices leave the model unchanged. */
24
+ export declare const removeRow: (m: TableModel, at: number) => TableModel;
25
+ /** Remove the column at `at`. Out-of-range indices leave the model unchanged. */
26
+ export declare const removeColumn: (m: TableModel, at: number) => TableModel;
27
+ /** Replace the textual content of the cell at `at`. */
28
+ export declare const setCellContent: (m: TableModel, at: CellPos, content: string) => TableModel;
29
+ /**
30
+ * Set (or clear) horizontal / vertical alignment for the cell at `at`. Passing
31
+ * `undefined` for either argument removes that alignment.
32
+ */
33
+ export declare const setAlignment: (m: TableModel, at: CellPos, align?: Align, vAlign?: VAlign) => TableModel;
34
+ /**
35
+ * Merge every cell in `range` into the top-left (primary) cell. The primary
36
+ * cell receives the appropriate `colSpan`/`rowSpan`; the remaining cells are
37
+ * marked `hiddenBy` the primary position so renderers can skip them. The
38
+ * primary cell's content is preserved. A 1x1 range is a no-op.
39
+ */
40
+ export declare const mergeCells: (m: TableModel, range: CellRange) => TableModel;
41
+ /**
42
+ * Undo a merge. `at` may be the primary cell of a merge or any cell hidden by
43
+ * one. The primary cell's spans are cleared and all covered cells have their
44
+ * `hiddenBy` markers removed. A non-merged cell is left unchanged.
45
+ */
46
+ export declare const unmergeCell: (m: TableModel, at: CellPos) => TableModel;
47
+ /**
48
+ * Build a {@link TableModel} from tab-separated text. Rows are split on
49
+ * newlines (CRLF / CR / LF), cells on tabs. Shorter rows are padded with empty
50
+ * cells so the grid is rectangular. Empty input yields an empty model.
51
+ */
52
+ export declare const parseTSV: (input: string) => TableModel;
53
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/table/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACX,MAAM,UAAU,CAAC;AAElB,kEAAkE;AAClE,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC;AAEnC,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;CACd;AAED,gDAAgD;AAChD,MAAM,MAAM,KAAK,GAAG,cAAc,CAAC;AAEnC,8CAA8C;AAC9C,MAAM,MAAM,MAAM,GAAG,sBAAsB,CAAC;AA+D5C;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,GAAG,UAAU,EAAE,IAAI,MAAM,KAAG,UAgBlD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,GAAG,UAAU,EAAE,IAAI,MAAM,KAAG,UAWrD,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,SAAS,GAAI,GAAG,UAAU,EAAE,IAAI,MAAM,KAAG,UAUrD,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,YAAY,GAAI,GAAG,UAAU,EAAE,IAAI,MAAM,KAAG,UAOxD,CAAC;AAMF,uDAAuD;AACvD,eAAO,MAAM,cAAc,GACzB,GAAG,UAAU,EACb,IAAI,OAAO,EACX,SAAS,MAAM,KACd,UAKF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,GAAG,UAAU,EACb,IAAI,OAAO,EACX,QAAQ,KAAK,EACb,SAAS,MAAM,KACd,UAUF,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,GAAG,UAAU,EAAE,OAAO,SAAS,KAAG,UAoC5D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,UAAU,EAAE,IAAI,OAAO,KAAG,UAkCxD,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,UAqBxC,CAAC"}
@@ -0,0 +1,253 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Internal helpers (all pure)
3
+ // ---------------------------------------------------------------------------
4
+ /** Number of columns in the model (taken from the widest row). */
5
+ const columnCount = (m) => m.rows.reduce((max, row) => Math.max(max, row.length), 0);
6
+ const makeEmptyCell = (isHeader) => isHeader ? { content: '', isHeader: true } : { content: '' };
7
+ /** Shallow-clone a single cell, returning a brand-new object. */
8
+ const cloneCell = (cell) => {
9
+ const next = { content: cell.content };
10
+ if (cell.colSpan !== undefined)
11
+ next.colSpan = cell.colSpan;
12
+ if (cell.rowSpan !== undefined)
13
+ next.rowSpan = cell.rowSpan;
14
+ if (cell.isHeader !== undefined)
15
+ next.isHeader = cell.isHeader;
16
+ if (cell.align !== undefined)
17
+ next.align = cell.align;
18
+ if (cell.verticalAlign !== undefined)
19
+ next.verticalAlign = cell.verticalAlign;
20
+ if (cell.hiddenBy !== undefined) {
21
+ next.hiddenBy = { row: cell.hiddenBy.row, col: cell.hiddenBy.col };
22
+ }
23
+ return next;
24
+ };
25
+ /** Deep-clone the grid so callers may mutate the copy before returning it. */
26
+ const cloneRows = (m) => m.rows.map((row) => row.map(cloneCell));
27
+ /** Build a new model from a (freshly produced) grid, preserving extra fields. */
28
+ const withRows = (m, rows) => {
29
+ const next = { rows };
30
+ if (m.headerRowCount !== undefined)
31
+ next.headerRowCount = m.headerRowCount;
32
+ return next;
33
+ };
34
+ const inBounds = (rows, pos) => pos.row >= 0 &&
35
+ pos.row < rows.length &&
36
+ pos.col >= 0 &&
37
+ pos.col < (rows[pos.row]?.length ?? 0);
38
+ /** Normalize a range so `start` is the top-left and `end` the bottom-right. */
39
+ const normalizeRange = (range) => ({
40
+ start: {
41
+ row: Math.min(range.start.row, range.end.row),
42
+ col: Math.min(range.start.col, range.end.col),
43
+ },
44
+ end: {
45
+ row: Math.max(range.start.row, range.end.row),
46
+ col: Math.max(range.start.col, range.end.col),
47
+ },
48
+ });
49
+ const samePos = (a, b) => a.row === b.row && a.col === b.col;
50
+ // ---------------------------------------------------------------------------
51
+ // Row / column structure
52
+ // ---------------------------------------------------------------------------
53
+ /**
54
+ * Insert a new (empty) row. `at` is the index the new row will occupy; it is
55
+ * clamped to `[0, rowCount]`, so `at >= rowCount` appends.
56
+ */
57
+ export const addRow = (m, at) => {
58
+ const rows = cloneRows(m);
59
+ const cols = columnCount(m);
60
+ const index = Math.max(0, Math.min(at, rows.length));
61
+ const isHeaderRow = m.headerRowCount !== undefined && index < m.headerRowCount;
62
+ const newRow = Array.from({ length: cols }, () => makeEmptyCell(isHeaderRow));
63
+ rows.splice(index, 0, newRow);
64
+ const next = withRows(m, rows);
65
+ if (m.headerRowCount !== undefined && index < m.headerRowCount) {
66
+ next.headerRowCount = m.headerRowCount + 1;
67
+ }
68
+ return next;
69
+ };
70
+ /**
71
+ * Insert a new (empty) column. `at` is the index the new column will occupy in
72
+ * every row; it is clamped to `[0, columnCount]`.
73
+ */
74
+ export const addColumn = (m, at) => {
75
+ const cols = columnCount(m);
76
+ const index = Math.max(0, Math.min(at, cols));
77
+ const rows = cloneRows(m).map((row, rowIndex) => {
78
+ const isHeaderRow = m.headerRowCount !== undefined && rowIndex < m.headerRowCount;
79
+ const insertAt = Math.min(index, row.length);
80
+ row.splice(insertAt, 0, makeEmptyCell(isHeaderRow));
81
+ return row;
82
+ });
83
+ return withRows(m, rows);
84
+ };
85
+ /** Remove the row at `at`. Out-of-range indices leave the model unchanged. */
86
+ export const removeRow = (m, at) => {
87
+ if (at < 0 || at >= m.rows.length)
88
+ return withRows(m, cloneRows(m));
89
+ const rows = cloneRows(m);
90
+ rows.splice(at, 1);
91
+ const next = withRows(m, rows);
92
+ if (m.headerRowCount !== undefined && at < m.headerRowCount) {
93
+ next.headerRowCount = Math.max(0, m.headerRowCount - 1);
94
+ }
95
+ return next;
96
+ };
97
+ /** Remove the column at `at`. Out-of-range indices leave the model unchanged. */
98
+ export const removeColumn = (m, at) => {
99
+ if (at < 0 || at >= columnCount(m))
100
+ return withRows(m, cloneRows(m));
101
+ const rows = cloneRows(m).map((row) => {
102
+ if (at < row.length)
103
+ row.splice(at, 1);
104
+ return row;
105
+ });
106
+ return withRows(m, rows);
107
+ };
108
+ // ---------------------------------------------------------------------------
109
+ // Cell content / alignment
110
+ // ---------------------------------------------------------------------------
111
+ /** Replace the textual content of the cell at `at`. */
112
+ export const setCellContent = (m, at, content) => {
113
+ const rows = cloneRows(m);
114
+ if (!inBounds(rows, at))
115
+ return withRows(m, rows);
116
+ rows[at.row][at.col] = { ...rows[at.row][at.col], content };
117
+ return withRows(m, rows);
118
+ };
119
+ /**
120
+ * Set (or clear) horizontal / vertical alignment for the cell at `at`. Passing
121
+ * `undefined` for either argument removes that alignment.
122
+ */
123
+ export const setAlignment = (m, at, align, vAlign) => {
124
+ const rows = cloneRows(m);
125
+ if (!inBounds(rows, at))
126
+ return withRows(m, rows);
127
+ const cell = cloneCell(rows[at.row][at.col]);
128
+ if (align === undefined)
129
+ delete cell.align;
130
+ else
131
+ cell.align = align;
132
+ if (vAlign === undefined)
133
+ delete cell.verticalAlign;
134
+ else
135
+ cell.verticalAlign = vAlign;
136
+ rows[at.row][at.col] = cell;
137
+ return withRows(m, rows);
138
+ };
139
+ // ---------------------------------------------------------------------------
140
+ // Merging
141
+ // ---------------------------------------------------------------------------
142
+ /**
143
+ * Merge every cell in `range` into the top-left (primary) cell. The primary
144
+ * cell receives the appropriate `colSpan`/`rowSpan`; the remaining cells are
145
+ * marked `hiddenBy` the primary position so renderers can skip them. The
146
+ * primary cell's content is preserved. A 1x1 range is a no-op.
147
+ */
148
+ export const mergeCells = (m, range) => {
149
+ const rows = cloneRows(m);
150
+ const { start, end } = normalizeRange(range);
151
+ if (!inBounds(rows, start) || !inBounds(rows, end)) {
152
+ return withRows(m, rows);
153
+ }
154
+ const rowSpan = end.row - start.row + 1;
155
+ const colSpan = end.col - start.col + 1;
156
+ if (rowSpan === 1 && colSpan === 1)
157
+ return withRows(m, rows);
158
+ const primaryPos = { row: start.row, col: start.col };
159
+ for (let r = start.row; r <= end.row; r++) {
160
+ for (let c = start.col; c <= end.col; c++) {
161
+ if (c >= rows[r].length)
162
+ continue;
163
+ const pos = { row: r, col: c };
164
+ if (samePos(pos, primaryPos)) {
165
+ const primary = cloneCell(rows[r][c]);
166
+ if (colSpan > 1)
167
+ primary.colSpan = colSpan;
168
+ else
169
+ delete primary.colSpan;
170
+ if (rowSpan > 1)
171
+ primary.rowSpan = rowSpan;
172
+ else
173
+ delete primary.rowSpan;
174
+ delete primary.hiddenBy;
175
+ rows[r][c] = primary;
176
+ }
177
+ else {
178
+ const hidden = cloneCell(rows[r][c]);
179
+ hidden.hiddenBy = { row: primaryPos.row, col: primaryPos.col };
180
+ delete hidden.colSpan;
181
+ delete hidden.rowSpan;
182
+ rows[r][c] = hidden;
183
+ }
184
+ }
185
+ }
186
+ return withRows(m, rows);
187
+ };
188
+ /**
189
+ * Undo a merge. `at` may be the primary cell of a merge or any cell hidden by
190
+ * one. The primary cell's spans are cleared and all covered cells have their
191
+ * `hiddenBy` markers removed. A non-merged cell is left unchanged.
192
+ */
193
+ export const unmergeCell = (m, at) => {
194
+ const rows = cloneRows(m);
195
+ if (!inBounds(rows, at))
196
+ return withRows(m, rows);
197
+ const cell = rows[at.row][at.col];
198
+ const primaryPos = cell.hiddenBy
199
+ ? { row: cell.hiddenBy.row, col: cell.hiddenBy.col }
200
+ : { row: at.row, col: at.col };
201
+ if (!inBounds(rows, primaryPos))
202
+ return withRows(m, rows);
203
+ const primary = rows[primaryPos.row][primaryPos.col];
204
+ const colSpan = primary.colSpan ?? 1;
205
+ const rowSpan = primary.rowSpan ?? 1;
206
+ if (colSpan === 1 && rowSpan === 1)
207
+ return withRows(m, rows);
208
+ const cleared = cloneCell(primary);
209
+ delete cleared.colSpan;
210
+ delete cleared.rowSpan;
211
+ rows[primaryPos.row][primaryPos.col] = cleared;
212
+ for (let r = primaryPos.row; r < primaryPos.row + rowSpan; r++) {
213
+ for (let c = primaryPos.col; c < primaryPos.col + colSpan; c++) {
214
+ if (r >= rows.length || c >= rows[r].length)
215
+ continue;
216
+ if (samePos({ row: r, col: c }, primaryPos))
217
+ continue;
218
+ const covered = rows[r][c];
219
+ if (covered.hiddenBy && samePos(covered.hiddenBy, primaryPos)) {
220
+ const restored = cloneCell(covered);
221
+ delete restored.hiddenBy;
222
+ rows[r][c] = restored;
223
+ }
224
+ }
225
+ }
226
+ return withRows(m, rows);
227
+ };
228
+ // ---------------------------------------------------------------------------
229
+ // Parsing
230
+ // ---------------------------------------------------------------------------
231
+ /**
232
+ * Build a {@link TableModel} from tab-separated text. Rows are split on
233
+ * newlines (CRLF / CR / LF), cells on tabs. Shorter rows are padded with empty
234
+ * cells so the grid is rectangular. Empty input yields an empty model.
235
+ */
236
+ export const parseTSV = (input) => {
237
+ const text = input.replace(/\r\n?/g, '\n');
238
+ const lines = text.split('\n');
239
+ // Drop a single trailing empty line (common with trailing newline) but keep
240
+ // intentional blank rows in the middle.
241
+ if (lines.length > 1 && lines[lines.length - 1] === '')
242
+ lines.pop();
243
+ if (lines.length === 0 || (lines.length === 1 && lines[0] === '')) {
244
+ return { rows: [] };
245
+ }
246
+ const grid = lines.map((line) => line.split('\t'));
247
+ const cols = grid.reduce((max, row) => Math.max(max, row.length), 0);
248
+ const rows = grid.map((row) => Array.from({ length: cols }, (_unused, c) => ({
249
+ content: row[c] ?? '',
250
+ })));
251
+ return { rows };
252
+ };
253
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/table/model.ts"],"names":[],"mappings":"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"}